CRC校验编程和硬件快速校验探讨
3 硬件CRC校验的探讨
器件或设备的说明书中,常给出其硬件CRC码的生成电路。以总线数字温度传感器DS18820为例,其8位CRC码生成电路如图2所示。本文引用地址:https://www.eepw.com.cn/article/156401.htm
对应该硬件电路,等效的模除多项式为:
g(x)=x2+x5+x4+1
该模除多项式反序后,再隐含最高位,其多项式的值为8CH。
8位移位寄存器的初始值清O(00H),通信数组数据的每个字节低位在前,按位依次输入,当数据全部输入完成后,移位寄存器各个位的存储(输出)值就是所需的CRC校验码。
在实际应用中发现,Autonics等品牌的控制仪表,其通信CRC校验码与DSl8820的完全相同。
对应于图2的硬件生成电路,可用1片8D触发器(如74HC373)和1片4封装异或门(如74HCl36)连接而成,如图3所示。
对于CRC赋初值OOH(74HC373清O)的操作,可先读出DO~D7的随机值,然后将读出的数据再串行输入即可。因为相同的数据相异或总是为O,再除以任何多项式仍为O。
若MCU剩余足够的I/O口,可将CRC码的DO~D7位并行读入。否则,还需加一片74HCl65,将D0~D7转换成串行数据读入。
以少量的硬件实现快速CRC,能节省单片机的运算时间和存储资源。用于发送端,能够快速获得CRC校验码,在系统其他任务很重时,能增强实时性。而用于接收端,除了上述优点之外,还能显著增强系统接收和确认信息的可靠性,适用于一些远程控制的执行装置(如变频驱动器、阀门定位控制器、重要的监测报警装置等)。这些装置对于接收到的数据或命令信息,一旦因误校验而不能正确地判断执行,其后果都是比较严重的。因此,要提高嵌入式系统的可靠性和实时性,硬件CRC校验是一种选择。
结 语
本文在分析了常用CRC码的反序生成原理的基础上,给出了其编程运算的统一步骤,并提出了由硬件快速生成CRC码或对接收数据进行CRC校验的电路和方法,可为嵌入式系统的可靠性和实时性设计提供参考.
c语言相关文章:c语言教程
分频器相关文章:分频器原理
评论