论文部分内容阅读
摘要:本文主要介绍了循环冗余码的校验原理,并且讲述了在报文传输中使用CRC能更好的实现无错误传输。最后,采用了硬件描述语言VHDL实现了这一算法。
关键词:循环冗余码 VHDL 报文传输
一、引言
控制器局域网CAN为串行通信协议,能有效地支持具有很高安全等级的分布实时控制。CAN技术的应用范围很广,从高速的网络到低价位的多路配线都可以使用CAN。在计算机与CAN总线的通信中报文的传输有着重要的作用,报文传输有4种不同类型的帧格式,分别为数据帧、远程帧、错误帧和过载帧。奇偶校验码作为一种检错码虽然简单,但是漏检率太高,因此在计算机和数据通信领域中使用最广泛的检错码是循环冗余码CRC,其漏检率很低,只需一个简单的电路就可实现,安全可靠。
二、循环冗余码校验原理
1、循环冗余码在报文传输中的应用
在报文的传输中,传输数据的准确无误是首先应该保证的,为了检验所接收的报文是否正确就必须在接收端加以检验,其中,循环冗余码(Cyclic Redundancy Code,CRC)是应用最为广泛的差错检验码。
2、CRC校验原理
CRC是利用除法及余数的原理来做错误侦测的,它将要发送的数据比特序列当作一个本源多项式f(x)的系数,而这个多项式除法的余数就是发送到CAN总线上的CRC序列。然后把计算的CRC序列和实际接收到的余数多项式数据进行比较,相同的话则表示传输正确。
现在计算CRC序列,步骤如下:1)初始化触发器,使每个触发器初始值为0。2)从高位开始输入数到输入端,将触发器输出数据左移一位,末位补0。3)若CRCNXT为1,则2)的结果与 的 (除最高位外)的系数位(即0011)相异或,若CRCNXT为0,则结果与2)的结果一致。4)重复上述2)和3)的过程,直至最低位传输完为止,此时触发器中的二进制代码1010为CRC序列。因此,发送的数据序列为10110011010。在数据接受端,将接受的数据序列除以生成多项式,如余数为零,则发送正确,如余数不为零,则发送错误。
三、CRC检验的VHDL语言实现
四、结束语
循环冗余码是很有效的差错校验方法,除了能检测数据块的比特值是按数据值变化的错误外,还能检测出其他所有错误。CRC接收电路再配上适当的硬件电路不仅可以检错还可以纠错,纠错能力很强特别适合检测突发性错误,在数据通信中得到较广泛的应用。
参考文献
[1] 《现场总线CAN原理与应用技术》(第2版) 饶云涛 邹继军等编著 北京航空航天大学出版社2007-08
关键词:循环冗余码 VHDL 报文传输
一、引言
控制器局域网CAN为串行通信协议,能有效地支持具有很高安全等级的分布实时控制。CAN技术的应用范围很广,从高速的网络到低价位的多路配线都可以使用CAN。在计算机与CAN总线的通信中报文的传输有着重要的作用,报文传输有4种不同类型的帧格式,分别为数据帧、远程帧、错误帧和过载帧。奇偶校验码作为一种检错码虽然简单,但是漏检率太高,因此在计算机和数据通信领域中使用最广泛的检错码是循环冗余码CRC,其漏检率很低,只需一个简单的电路就可实现,安全可靠。
二、循环冗余码校验原理
1、循环冗余码在报文传输中的应用
在报文的传输中,传输数据的准确无误是首先应该保证的,为了检验所接收的报文是否正确就必须在接收端加以检验,其中,循环冗余码(Cyclic Redundancy Code,CRC)是应用最为广泛的差错检验码。
2、CRC校验原理
CRC是利用除法及余数的原理来做错误侦测的,它将要发送的数据比特序列当作一个本源多项式f(x)的系数,而这个多项式除法的余数就是发送到CAN总线上的CRC序列。然后把计算的CRC序列和实际接收到的余数多项式数据进行比较,相同的话则表示传输正确。
现在计算CRC序列,步骤如下:1)初始化触发器,使每个触发器初始值为0。2)从高位开始输入数到输入端,将触发器输出数据左移一位,末位补0。3)若CRCNXT为1,则2)的结果与 的 (除最高位外)的系数位(即0011)相异或,若CRCNXT为0,则结果与2)的结果一致。4)重复上述2)和3)的过程,直至最低位传输完为止,此时触发器中的二进制代码1010为CRC序列。因此,发送的数据序列为10110011010。在数据接受端,将接受的数据序列除以生成多项式,如余数为零,则发送正确,如余数不为零,则发送错误。
三、CRC检验的VHDL语言实现
四、结束语
循环冗余码是很有效的差错校验方法,除了能检测数据块的比特值是按数据值变化的错误外,还能检测出其他所有错误。CRC接收电路再配上适当的硬件电路不仅可以检错还可以纠错,纠错能力很强特别适合检测突发性错误,在数据通信中得到较广泛的应用。
参考文献
[1] 《现场总线CAN原理与应用技术》(第2版) 饶云涛 邹继军等编著 北京航空航天大学出版社2007-08