简介:支撑Host及FPGA的CRC完成
内容:
循环冗余校验码(CRC)的手算进程:
原始报文为1010
生成多项式G(X)=X3+X+1: 生成多项式G(X)=X3+X+1转换成对应的二进制除数为1011。
用生成多项式对应的二进制数对左移3位后的原始报文进行模2除(高位对齐),相当于按位异或:
1010000
1011
——————
0001000
0001011
——————
0000011
得到的余位011,所以终究编码为:1010 011
编写程序模仿核算CRC的进程,能够得到CRC校验的成果。
一起还有另一种模仿CRC电路作业方法的CRC完成办法:
其电路的原理图如下:(32bit数据+8bit CRC,生成多项式为:X8+ X7+ X4+ X3+ X1+ 1)
这种方法下,从第一个比特数据直接开端异或核算,最终一个数据输入后,寄存器中的各个数据即为CRC校验位
LabVIEW下的CRC核算能够模仿上述电路图的作业进程。
- 对各寄存器中的数据向高位移位,并获得最高位数据,最低为在移位中补0。
- 1中获得的最高位数据与输入数据异或,异或的成果决议后续是否进行3操作。
- 假如2中异或成果为真,运用多项式对寄存器中数据异或。
详细LabVIEW代码见下图:
该CRC代码的首要特性有:
1.支撑FPGA端的守时循环(FPGA守时循环内,CRC16的速率约460M)
2.支撑完成恣意位、恣意生成多项式、恣意寄存器初始值。
3.直接从第一个数据开端核算CRC,并在最末数据输入后,直接得到CRC成果,运用方便。
4.支撑CRC核算与校验