CRC校驗的LabVIEW實(shí)現
內容:
循環(huán)冗余校驗碼(CRC)的手算過(guò)程:
原始報文為1010
生成多項式G(X)=X3+X+1: 生成多項式G(X)=X3+X+1轉換成對應的二進(jìn)制除數為1011。
用生成多項式對應的二進(jìn)制數對左移3位后的原始報文進(jìn)行模2除(高位對齊),相當于按位異或:
1010000
1011
------------------
0001000
0001011
------------------
0000011
得到的余位011,所以最終編碼為:1010 011
編寫(xiě)程序模擬計算CRC的過(guò)程,可以得到CRC校驗的結果。
同時(shí)還有另一種模擬CRC電路工作方式的CRC實(shí)現方法:
其電路的原理圖如下:(32bit數據+8bit CRC,生成多項式為:X8+ X7+ X4+ X3+ X1+ 1)

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

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

評論