CAN总线中循环冗余校验码的原理及其电路实现【精选3篇】
CAN总线中循环冗余校验码的原理及其电路实现 篇一
循环冗余校验码(Cyclic Redundancy Check,CRC)是一种常用的错误检测方法,在CAN总线中广泛应用。CRC通过对数据进行计算和比较,可以快速检测出数据传输过程中的错误。
CRC的原理是将数据按照特定的算法进行计算,得到一个校验码。发送方在发送数据前,根据预先设定的生成多项式对数据进行计算,将计算得到的校验码附加在数据末尾一起发送。接收方在接收到数据后,同样根据预先设定的生成多项式对数据进行计算,得到一个校验码。接收方将接收到的校验码与计算得到的校验码进行比较,如果两者相等,则说明数据传输没有出现错误;如果两者不相等,则说明数据传输中出现了错误。
在CAN总线中,CRC的电路实现主要包括两个部分:CRC生成器和CRC校验器。CRC生成器主要负责在发送方对数据进行计算,得到校验码;CRC校验器主要负责在接收方对数据进行计算,得到校验码并与接收到的校验码进行比较。
CRC生成器的电路实现可以采用硬件方式,也可以采用软件方式。硬件实现方式通常使用移位寄存器和异或门组成的电路,通过多次移位和异或操作,将数据进行计算得到校验码。软件实现方式通常使用算法进行计算,通过对数据进行逐位操作和异或运算,得到校验码。
CRC校验器的电路实现也可以采用硬件方式,也可以采用软件方式。硬件实现方式通常使用移位寄存器和异或门组成的电路,通过多次移位和异或操作,将接收到的数据进行计算得到校验码,并与接收到的校验码进行比较。软件实现方式通常使用算法进行计算,通过对接收到的数据进行逐位操作和异或运算,得到校验码,并与接收到的校验码进行比较。
总的来说,CRC在CAN总线中的应用是一种高效可靠的错误检测方法。它通过对数据进行计算和比较,能够快速检测出数据传输过程中的错误。CRC的电路实现可以采用硬件方式或软件方式,具体的实现方式可以根据具体的需求和资源进行选择。无论是硬件实现还是软件实现,都需要预先设定生成多项式,并在发送方和接收方进行一致的配置,才能实现正确的CRC校验。
CAN总线中循环冗余校验码的原理及其电路实现 篇二
循环冗余校验码(Cyclic Redundancy Check,CRC)是一种常用的错误检测方法,在CAN总线中广泛应用。CRC通过对数据进行计算和比较,可以快速检测出数据传输过程中的错误。
CRC的原理是将数据按照特定的算法进行计算,得到一个校验码。发送方在发送数据前,根据预先设定的生成多项式对数据进行计算,将计算得到的校验码附加在数据末尾一起发送。接收方在接收到数据后,同样根据预先设定的生成多项式对数据进行计算,得到一个校验码。接收方将接收到的校验码与计算得到的校验码进行比较,如果两者相等,则说明数据传输没有出现错误;如果两者不相等,则说明数据传输中出现了错误。
在CAN总线中,CRC的电路实现主要包括两个部分:CRC生成器和CRC校验器。CRC生成器主要负责在发送方对数据进行计算,得到校验码;CRC校验器主要负责在接收方对数据进行计算,得到校验码并与接收到的校验码进行比较。
CRC生成器的电路实现可以采用硬件方式,也可以采用软件方式。硬件实现方式通常使用移位寄存器和异或门组成的电路,通过多次移位和异或操作,将数据进行计算得到校验码。软件实现方式通常使用算法进行计算,通过对数据进行逐位操作和异或运算,得到校验码。
CRC校验器的电路实现也可以采用硬件方式,也可以采用软件方式。硬件实现方式通常使用移位寄存器和异或门组成的电路,通过多次移位和异或操作,将接收到的数据进行计算得到校验码,并与接收到的校验码进行比较。软件实现方式通常使用算法进行计算,通过对接收到的数据进行逐位操作和异或运算,得到校验码,并与接收到的校验码进行比较。
总的来说,CRC在CAN总线中的应用是一种高效可靠的错误检测方法。它通过对数据进行计算和比较,能够快速检测出数据传输过程中的错误。CRC的电路实现可以采用硬件方式或软件方式,具体的实现方式可以根据具体的需求和资源进行选择。无论是硬件实现还是软件实现,都需要预先设定生成多项式,并在发送方和接收方进行一致的配置,才能实现正确的CRC校验。
CAN总线中循环冗余校验码的原理及其电路实现 篇三
CAN总线中循环冗余校验码的原理及其电路实现
摘要:在CAN网络中传输摄文时,噪声干扰或传输中断等因素往往使接收端收到的报文出现错码。为了及时可靠地把报文传输给对方并有效地检测错误,需要采用差错控制。详细介绍了CAN总线中循环冗余校验码的差错控制原理及其实现方法。在CAN系统中为保证报文传输的正确性,需要对通信过程进行差错控制。目前常用的方法是反馈重发,即一旦收到接收端发出的出错信息,发送端便自动重发,此时的差错控制只需要检错功能。常用的检错码两类:奇偶校验码和循环冗余校验码。奇偶校验码是一种最常见的检错码,其实现方法简单,但检错能力较差;循环冗余校验码的编码也很简单且误判率低,所以在通信系统中获得了广泛的应用。下面介绍CAN网络中循环冗余校验码(即CRC码)的原理和实现方法。
1 CRC码检错的工作原理
CRC码检错是将被处理报文的比特序列当作一个二进制多项式A(x)的系数,该系数除以发送方和接收方预先约定好的生成多项式g(x)后,将求得的余数P(x)作为CRC校验码附加到原始的报文上,并一起发给接收方。接收方用同样的.g(x)去除收到的报文B(x),如果余数等于p(x),则传输无误(此时A(x)和B(x)相同);否则传输过程中出错,由发送端重发,重新开始CRC校验,直到无误为止。
上述校验过程中有几点需注意:①在进行CRC计算时,采用二进制(模2)运算法,即加法不进位,减法不借位,其本质就是两个操作数进行逻辑异或运算;②在进行CRC计算前先将发送报文所表示的多项式A(x)乘以xn,其中n为生成多项式g(x)的最高幂值。对二进制乘法来讲,A(x)·xn就是将A(x)左移n位,用来存放余数p(x),所以实际发送的报文就变为A(x)·xn p(x);③生成多项式g(x)的首位和最后一位的系数必须为1。
图1为CRC校验的工作过程。
目前已经有多种生成多项式被列入国际标准中,如:CRC-4、CRC-12、CRC-16、CCITT-16、CRC-32等。CAN总线中采用的生成多项式为g(x)=x15 x14 x10 x8 x7 x4 x3 1。可以看出,CANU叫线中的CRC校验采用的多项式能够校验七级,比一般CRC校验(CRC-4、CRC-12、CRC-16等)的级数(二~五级)要高许多,因而它的检错能力很强,误判率极低,成为提高数据传输质量的有效检错手段。
图2 产生CRC校验码的硬件电路
2 CRC码的电路实现
2.1 硬件电路的特点
在CAN总线中为了产生CRC码,硬件电路除了具有复位和时钟信号以外,还需要以下两个控制信号的参与:①填充位解除信号destuff,它的有效逻辑值是1;②CRC检验的使能信号enable,有效逻
辑也为1。该硬件电路的特点是采用选择器和反相器代替传统设计中用的异或门,既实现了比较功能,又降低了生产成本,同时也为工程师们提供了一种新的设计思路。2.2 硬件电路图
图2即为实现CRC码的硬件电路图。
图中需要说明的几点如下:①使能信号和填充位解除信号省略;②crcnxt代表的逻辑值为输入报文序列和CRC寄存器的最高位异或的结果;③标号0~14所指示的为15位CRC寄存器,上升沿触发;④标号1~6所指示的为选择器和反相器的组合逻辑,实现异或功能,该选择器的逻辑功能为Y=AB AC,具体结构如图3所示。
2.3 电路工作过程
从以上分析可知:①当enable=0时,CRC清0;②当enable=1、destuff=1时,进行正常CRC计算;③当enable=1而destuff=0时,正在解除填充时,数据暂停传送。