CRC校验的LabVIEW实现
时间:01-09
来源:互联网
点击:
简介:支持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计算可以模拟上述电路图的工作过程。
具体LabVIEW代码见下图:
该CRC代码的主要特性有:
1.支持FPGA端的定时循环(FPGA定时循环内,CRC16的速率约460M)
2.支持实现任意位、任意生成多项式、任意寄存器初始值。
3.直接从第一个数据开始计算CRC,并在最末数据输入后,直接得到CRC结果,使用方便。
4.支持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计算与校验
CRC校验LabVIE 相关文章:
- 频宽、取样速率及奈奎斯特定理(09-14)
- 为什么要进行信号调理?(09-30)
- IEEE802.16-2004 WiMAX物理层操作和测量(09-16)
- 为任意波形发生器增加价值(10-27)
- 基于PCI 总线的高速数据采集系统(09-30)
- 泰克全新VM6000视频测试仪助力数字电视等产品测试 (10-06)