新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > CRC校驗(yàn)的LabVIEW實(shí)現(xiàn)

CRC校驗(yàn)的LabVIEW實(shí)現(xiàn)

作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò) 收藏
簡(jiǎn)介:支持Host及FPGA的CRC實(shí)現(xiàn)
內(nèi)容:
循環(huán)冗余校驗(yàn)碼(CRC)的手算過(guò)程:
原始報(bào)文為1010
生成多項(xiàng)式G(X)=X3+X+1: 生成多項(xiàng)式G(X)=X3+X+1轉(zhuǎn)換成對(duì)應(yīng)的二進(jìn)制除數(shù)為1011。
用生成多項(xiàng)式對(duì)應(yīng)的二進(jìn)制數(shù)對(duì)左移3位后的原始報(bào)文進(jìn)行模2除(高位對(duì)齊),相當(dāng)于按位異或
1010000
1011
------------------
0001000
0001011
------------------
0000011
得到的余位011,所以最終編碼為:1010 011

編寫(xiě)程序模擬計(jì)算CRC的過(guò)程,可以得到CRC校驗(yàn)的結(jié)果。
同時(shí)還有另一種模擬CRC電路工作方式的CRC實(shí)現(xiàn)方法:
其電路的原理圖如下:(32bit數(shù)據(jù)+8bit CRC,生成多項(xiàng)式為:X8+ X7+ X4+ X3+ X1+ 1)


這種方式下,從第一個(gè)比特?cái)?shù)據(jù)直接開(kāi)始異或計(jì)算,最后一個(gè)數(shù)據(jù)輸入后,寄存器中的各個(gè)數(shù)據(jù)即為CRC校驗(yàn)位
LabVIEW下的CRC計(jì)算可以模擬上述電路圖的工作過(guò)程。
  1. 對(duì)各寄存器中的數(shù)據(jù)向高位移位,并取得最高位數(shù)據(jù),最低為在移位中補(bǔ)0。
  2. 1中取得的最高位數(shù)據(jù)與輸入數(shù)據(jù)異或,異或的結(jié)果決定后續(xù)是否進(jìn)行3操作。
  3. 如果2中異或結(jié)果為真,使用多項(xiàng)式對(duì)寄存器中數(shù)據(jù)異或。

具體LabVIEW代碼見(jiàn)下圖:

該CRC代碼的主要特性有:
1.支持FPGA端的定時(shí)循環(huán)(FPGA定時(shí)循環(huán)內(nèi),CRC16的速率約460M)
2.支持實(shí)現(xiàn)任意位、任意生成多項(xiàng)式、任意寄存器初始值。
3.直接從第一個(gè)數(shù)據(jù)開(kāi)始計(jì)算CRC,并在最末數(shù)據(jù)輸入后,直接得到CRC結(jié)果,使用方便。
4.支持CRC計(jì)算與校驗(yàn)



關(guān)鍵詞: CRC校驗(yàn)LabVIE

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉