赞
踩
CRC,即循环冗余校验。能检错,能纠正。
常用于:外设接口通讯的数据校验。
主要原理就是二进制的取余过程。二进制数的取余,基础是二进制数的除法,二进制数的除法,基础是XOR,异或。
电路整体结构,依据LFSR实现。线性反馈移位寄存器。
以后,再遇到CRC问题, 按下述步骤操作即可。
举例,条件有,
需要得出结果,
过程分析:
根据多项式,n次方的n即除数的第 n bit值。
例子对应的除数是:1010111(第6/4/2/1/0 bit都是1,其它bit是0)
被除数= 数据串 后面补 n个0(其中n是指多项式的最高n次方)
例子对应的被除数是:1101011011000000
1101011011000000除以1010111,取余数是111011
注意:余数必须比除数的数据长度少1
主要是异或。具体看网上视频,本文也是基于这个视频理解的
[CRC校验]手算与直观演示 – 哔哩哔哩
CRC校验码,即上一步骤求出的余数
1101011011 111011
以简单的CRC8举例,多项式G(x)=X8 +X7 +X6 +X4 +X2 +1 的电路示意图如下:
《verilog编程艺术》里,有通用CRC模块的verilog源代码。
其中:CRC_EQUATION是多项式的二进制表示,即上文的除数。
参考文献:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。