赞
踩
CRC(Cycle Redundancy Check),是一种核对数据正确性的高效的验证手段。其特点是检错能力强,开销小,易于用编码器及检测电路实现。
CRC算法是从模二除法演化而来,目前校验算法有CRC4、CRC5、CRC6、CRC7、CRC8、CRC16、CRC32、CRC64等,其中常用的就是CRC8、CRC16、CRC32和CRC64.
剩下的啰里啰唆其实都和算法本身有关,做硬件的我们其实能用到的东西很有限。但是有没有必要了解呢,还是有必要的,这里我推荐大家去知网下载一些硕博士论文看,上面一般会有CRC算法的前世今生,十分详细。
1, crc的多项式。
crc8,crc16以及crc32指的一般是算法用到的多项式的长度(位数),比如crc8的多项式0x07,换算成二进制就是x8+x3+x2+x+1,按理说在电路中代表即九位二进制数10000_0111,但是因为crc所用多项式的最高位必然为1,所以我们开心的省略最高位,仅以剩下的位数作为多项式内容的表示,因此crc8的一个多项式本应为0x107,但是我们实际应用中表示为0x07.
当然有些小伙伴又会疑惑了,在实际电路中我们还是要把最高位的运算搞出来,那这样省略有什么意义呢,其实在电路中这样的省略当然是有意义的。
2,crc在数字电路中的设计需求。
在工作中我发现,作为设计师并不能天马行空的去精简PL或者说一些需求提出者的“模糊”需求,而是应该充分的考虑应用并对这些模糊的需求进行一般化的解决。具体在我们的crc设计中,crc 的模块一般具有多项式可配置,输入及初始值可配置,在crc运算结果中增加可选的异或运算进行校验的增加,为方便适应各种芯片的大小端口寻址增加的输入翻转、输出翻转等功能。为实现这些一般
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。