CAN总线中循环冗余校验码的原理及其电路实现

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时,正在解除填充时,数据暂停传送。在各个控制信号均有效时,输入报文的每一位都是和crc寄存器的最高位相异和后移入最低位,同时寄存器的第13、9、7、6、3、2位均和其最高位异或,结果分别左移一位;其它未进行异或操作的寄存器位值也分别左移一位,直到报文的每一位都移入crc寄存器为止,此时寄存器中的值取为计算得到的crc码。如果报文的比特序列长度为16,则需要左移16次才能对报文的每一位均进行处理。如果以ck表示crc寄存器的第k位位值、ck'表示移位后的第k位位值(k=0,1,2,3……15),则移位规律见表1。

表 1 移位规律表c14'=c13^crcnxtc13'=12c12'=c11c11'=c10c10'=c9^crcnxtc9'=c8c8'=c7^crcnxtc7'=c6^cr cnxtc6'=c5c5'=c4c4'=c3^crcnxtc3'=c2^crcnxtc2'=c1c1'=c0c0'=crcnxt^datain 3 crc校

验码的软件实现crc校验用软件实现起来非常方便。鉴于目前的资料中介绍的方法多使用c 语言、汇编语言等实现,而缺乏用硬件描述语言实现,这里给出crc码的verilog hdl之行为级描述程序。本程序在verilog_xl下编译通过,同时在synopsis上成功进行了综合及优化。//用verilog hdl实现crc码module crc(clk,rst,enable,destuff,datain,crc);input clk;input rst;input enable;input destuff;input datain;output[14:0]crc;reg[14:0]crc;wire crcnxt=datain^crc[14];always@(posedge rst or posedge clk)beginif(rst)crc=0;else if(enable && destuff)beginif(crcnxt)crc<=crc^15h'4599;elsecrc<={crc[13:0],1'b0 5;;endendendmodule

图4 crc仿真波形图

4 仿真波形假设发送的是一个标准格式的远程帧,需求的数据字节为8,标识符序列为10101011000,则对上述程序仿真后的波形如图4所示。crc序列从第20位开始输出。crc 校验码的检错能力很强,并且由于crc码检错的软件和硬件实现都很简单,因而被广泛地应用于各类数据校验中。crc码检错是提高数据传输质量、高效检错的有力手段。

CAN总线呕心沥血教程

哥很郁闷,为了CAN研究了不少,看了不少资料,现在我给大家总结一下先看看工作原理 当CAN总线上的一个节点(站)发送数据时,它以报文的形式广播给网络中所有节点,对每个节点来说,无论数据是否是发给自己的,都对其接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式成为面向内容的编制方案。同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文,当几个站同时竞争总线读取时,这种配置十分重要。 大体的工作原理我们搞清了,但是根本的协议我们还要花一番功夫。下面介绍一个重要的名词,“显性“和”隐性“ 在我看到的很多文章里,有很多显性和隐性的地方,为此我头痛不已,最终我把它们彻底弄明白了。 首先CAN数据总线有两条导线,一条是黄色的,一条是绿色的。分别是CAN_High线和CAN_Low线 当静止状态时,这两条导线上的电平一样。这个电平称为静电平。大约为2.5伏。这个静电平状态就是隐形状态,也称隐性电平。也就是没有任何干扰的时候的状态称为隐性状态.当有信号修改时,CAN_High线上的电压值变高了,一般来说会升高至少1V,而CAN_Low线上的电压值会降低一个同样值,也是1v,那么这时候。CAN_High就是2.5v+1v=3.5v,它就处于激活状态了。而CAN_Low降为2.5v-1v=1.5v。 可以看看这个图 由此我们得到 在隐性状态下,CAN_High线与CAN_Low没有电压差,这样我们看到没有任何变化也就检测不到信号。但是在显性状态时,改值最低为2V,我们就可以利用这种变化才传输数据了。所以出现了那些帧,那些帧中的场,那些场中的位,云云~~~~~~~~~~~ 在总线上通常逻辑1表示隐性。而0表示显性。这些1啊,0啊,就可以利用起来为我们传数据了。 利用这种电压差,我们可以接收信号。 一般来说,控制单元通过收发器连接到CAN驱动总线上,这个收发器(顾名思义,可发送,可接收)内有一个接收器,该接收器是安装在接收一侧的差动信号放大器。然后,这个放大器很自然地就放大了CAN_High和CAN_Low线的电平差,然后传到接收区。如下图 由上图可知,当有电压差,差动信号放大器放大传输,将相应的数据位任可为0。下面我们进入重点难点。报文 所谓报文,就是CAN总线上要传输的数据报,为了安全,我们要给我们传输的数据报编码定一下协议,这样才能不容易出错,所以出现了很多的帧,以及仲裁啊,CRC效验。这些都是难点。 识别符的概念。 识别符顾名思义,就是为了区分不同报文的可以鉴别的好多字符位。有标准的,和扩展的。标准的是11位,扩展的是29位。他有一个功能就是可以提供优先级,也就是决定哪个报文优先被传输,报文标识符的值越小,报文具有越高的优先权。CAN的报文格式有两种,不同之处其实就是识别符长度不同,具有11位识别符的帧称为标准帧,而还有29位识别符的帧为扩展帧,CAN报文有以下4个不同的帧类型。分别是

循环冗余校验原理及程序

在远距离数据通信中,为确保高效而无差错地传送数据,必须对数据进行校验即差错控制。循环冗余校验CRC(Cyclic Redundancy Check)是对一个传送数据块进行校验,是一种高效的差错控制方法。 1、循环冗余校验码原理 CRC 校验采用多项式编码方法,如一个8 位二进制数(B7B6B5B4B3B2B1B0)可以用7 阶二进制码多项式B7X7+B6X6+B5X5+B4X4+B3X3+B2X2+B1X1+B0X0表示。 例如11000001 可表示为 1X7+1X6+0X5+0X4+0X3+0X2+0X1+0X0 一般说,n 位二进制数可用(n-1)阶多项式表示。它把要发送的数据位串看成是系数只能为“1”或“0”的多项式。一个n 位的数据块可以看成是从Xn-1到X0的n 项多项式的系数 序列,位于数据块左边的最高位是X n-1项的系数,次高位是X n-2项的系数,依此类推,位 于数据块右边的最低位是X0项的系数,这个多项式的阶数为n-1。 多项式乘除法运算过程与普通代数多项式的乘除法相同。多项式的加减法运算以2 为模,加减时不进、错位,如同逻辑异或运算。 采用CRC 校验时,发送方和接收方事先约定一个生成多项式G(X),并且G(X)的最高项和最低项的系数必须为1。设m 位数据块的多项式为M(X),生成多项式G(X)的阶数必需 比M(X)的阶数低。CRC 校验码的检错原理是:发送方先为数据块生成CRC 校验码,使这 个CRC 校验码的多项式能被G(X)除尽,实际发送此CRC 校验码;接收方用收到的CRC 校 验码除以G(X),如果能除尽,表明传输正确,否则,表示有传输错误,请求重发。 生成数据块的CRC 校验码的方法是: (1) 设G(X)为r 阶,在数据块末尾添加r 个0,使数据块为m+r 位,则相应的多项式 为XrM(X); (2) 以2 为模,用对应于G(X)的位串去除对应于XrM(X)的位串,求得余数位串; (3) 以2 为模,从对应于XrM(X)的位串中减去余数位串,结果就是为数据块生成的带足够校验信息的CRC 校验码位串。 例如,设要发送的数据为1101011011,G(X)=X4+X+1,则首先在发送数据块的末尾加4 个0,得到11010110110000,然后用G(X)的位串10011 去除,再用11010110110000 减去余 数位串1110,得到的即为CRC 位串11010110111110,将对应多项式称为T(X),显然,T(X) 能被G(X)除尽。这样,一旦接收到的CRC 位串不能被同样的G(X)的位串除尽,那么一定 有传输错误。 当使用CRC校验码进行差错控制时,除了为G(X)的整数倍的差错多项式不能被检测外,其它差错均能被查出。CRC 校验码的差错控制效果取决于G(X)的阶数,阶数越高,效果

CRC校验码原理

CRC校验码 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 目录 详细介绍 代数学的一般性运算 详细介绍 循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2的R次方,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2的R次方除以生成多项式G(x)得到的余数就是校验码。 几个基本概念 1、多项式与二进制数码 多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。 多项式包括生成多项式G(x)和信息多项式C(x)。 如生成多项式为G(x)=x4+x3+x+1,可转换为二进制数码11011。 而发送信息位1111,可转换为数据多项式为C(x)=x3+x2+x+1。 2、生成多项式 是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。 在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。 应满足以下条件: a、生成多项式的最高位和最低位必须为1。 b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0。 c、不同位发生错误时,应该使余数不同。 d、对余数继续做除,应使余数循环。

crc校验码 详细介绍看懂了就会了

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2的R次方,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2的R次方除以生成多项式G(x)得到的余数就是校验码。 编辑本段 几个基本概念 1、多项式与二进制数码 多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。 多项式包括生成多项式G(x)和信息多项式C(x)。 如生成多项式为G(x)=x^4+x^3+x+1,可转换为二进制数码11011。 而发送信息位1111,可转换为数据多项式为C(x)=x^3+x^2+x+1。 2、生成多项式 是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。 在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。 应满足以下条件: a、生成多项式的最高位和最低位必须为1。 b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0。 c、不同位发生错误时,应该使余数不同。 d、对余数继续做除,应使余数循环。 3 CRC码的生成步骤 1、将x的最高次幂为R的生成多项式G(x)转换成对应的R+1位二进制数。 2、将信息码左移R位,相当与对应的信息多项式C(x)*2的R次方。 3、用生成多项式(二进制数)对信息码做除,得到R位的余数。 4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。 【例】假设使用的生成多项式是G(x)=x^3+x+1。4位的原始报文为1010,求编码后的报文。 解: 1、将生成多项式G(x)=x^3+x+1转换成对应的二进制除数1011。 2、此题生成多项式有4位(R+1),要把原始报文C(x)左移3(R)位变成1010000 3、用生成多项式对应的二进制数对左移3位后的原始报文进行模2除,相当于按位异或: 1010000

CAN总线的工作原理

CAN总线的特点和优点 CAN总线的特点和优点; (1)多主控制 在总线空闲时,所有的单元都可开始发送消息(多主控制)。最先访问总线的单元可获得发送权(CSMA/CA)。多个单元同时开始发送时,发送高优先级D消息的单元可获得发送权。 (2)消息的发送 在CAN协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总 线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时, 根据标识符(D)决定优先级。两个以上的单元同时开始发送消息时,对各消 息ID的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可 继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。 (3)系统的柔软性 与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。 (4)通信速度 根据整个网络的规模,可设定适合的通信速度。在同一网络中,所有单元 必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此 单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通 信速度。 表1一1 CAN总线系统任意两节点间的最大距离

最大距离/m 位速率bps 10 1000 130 500 270 250 530 125 620 100 1300 50 3300 20 6700 10 10000 5 CAN总线上任意两节点之间的通信距离与其位速率有关,表2一1列举了相关数据。 (5)远程数据请求可通过发送“请求帧”请求其他单元发送数据。 (6)错误检测功能·错误通知功能·错误恢复功能 所有的单元都可以检测错误(错误检测功能)。检测出错误的单元会立即同 时通知其他所有单元(错误通知功能)。正在发送消息的单元一旦检测出错误, 会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直 到成功发送为止(错误恢复功能)。 (7)故障封闭 CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还 是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总 线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。

循环冗余校验码原理

1、循环冗余校验码原理 CRC 校验采用多项式编码方法,如一个8 位二进制数(B7B6B5B4B3B2B1B0)可以用7 阶二进制码多项式B7X7+B6X6+B5X5+B4X4+B3X3+B2X2+B1X1+B0X0表示。 例如11000001 可表示为 1X7+1X6+0X5+0X4+0X3+0X2+0X1+0X0 一般说,n 位二进制数可用(n-1)阶多项式表示。它把要发送的数据位串看成是系数只能为“1”或“0”的多项式。一个n 位的数据块可以看成是从Xn-1到X0的n 项多项式的系数 序列,位于数据块左边的最高位是X n-1项的系数,次高位是X n-2项的系数,依此类推,位 于数据块右边的最低位是X0项的系数,这个多项式的阶数为n-1。 多项式乘除法运算过程与普通代数多项式的乘除法相同。多项式的加减法运算以2 为模,加减时不进、错位,如同逻辑异或运算。 采用CRC 校验时,发送方和接收方事先约定一个生成多项式G(X),并且G(X)的最高项和最低项的系数必须为1。设m 位数据块的多项式为M(X),生成多项式G(X)的阶数必需 比M(X)的阶数低。CRC 校验码的检错原理是:发送方先为数据块生成CRC 校验码,使这 个CRC 校验码的多项式能被G(X)除尽,实际发送此CRC 校验码;接收方用收到的CRC 校 验码除以G(X),如果能除尽,表明传输正确,否则,表示有传输错误,请求重发。 生成数据块的CRC 校验码的方法是: (1) 设G(X)为r 阶,在数据块末尾添加r 个0,使数据块为m+r 位,则相应的多项式 为XrM(X); (2) 以2 为模,用对应于G(X)的位串去除对应于XrM(X)的位串,求得余数位串; (3) 以2 为模,从对应于XrM(X)的位串中减去余数位串,结果就是为数据块生成的带足够校验信息的CRC 校验码位串。 例如,设要发送的数据为1101011011,G(X)=X4+X+1,则首先在发送数据块的末尾加4 个0,得到11010110110000,然后用G(X)的位串10011 去除,再用11010110110000 减去余 数位串1110,得到的即为CRC 位串11010110111110,将对应多项式称为T(X),显然,T(X) 能被G(X)除尽。这样,一旦接收到的CRC 位串不能被同样的G(X)的位串除尽,那么一定 有传输错误。 当使用CRC校验码进行差错控制时,除了为G(X)的整数倍的差错多项式不能被检测外,其它差错均能被查出。CRC 校验码的差错控制效果取决于G(X)的阶数,阶数越高,效果越 好。目前,常用的有两种生成多项式G(X)的方法,分别是: CRC-16 X16+X15+X2+1 CCITT X16+X12+X5+1

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时,正在解除填充时,数据暂停传送。在各个控制信号均有效时,输入报文的每一位都是和crc寄存器的最高位相异和后移入最低位,同时寄存器的第13、9、7、6、3、2位均和其最高位异或,结果分别左移一位;其它未进行异或操作的寄存器位值也分别左移一位,直到报文的每一位都移入crc寄存器为止,此时寄存器中的值取为计算得到的crc码。如果报文的比特序列长度为16,则需要左移16次才能对报文的每一位均进行处理。如果以ck表示crc寄存器的第k位位值、ck'表示移位后的第k位位值(k=0,1,2,3……15),则移位规律见表1。 表 1 移位规律表c14'=c13^crcnxtc13'=12c12'=c11c11'=c10c10'=c9^crcnxtc9'=c8c8'=c7^crcnxtc7'=c6^cr cnxtc6'=c5c5'=c4c4'=c3^crcnxtc3'=c2^crcnxtc2'=c1c1'=c0c0'=crcnxt^datain 3 crc校

CAN总线原理2009

CAN总线原理2009-09-22 08:54一、概述 对于一般控制,设备间连锁可以通过串行网络完成。因此,BOSCH公司开发了CAN总线(Controller Area Network),并已取得国际标准化组织认证(ISO11898),其总线结构可参照I SO/OSI参考模型。同时,国际上一些大的半导体厂商也积极开发出支持CAN总线的专用芯片。通过CAN总线,传感器、控制器和执行器由串行数据线连接起来。它不仅仅是将电缆按树形结构连接起来,其通信协议相当于ISO/OSI参考模型中的数据链路层,网络可根据协议探测和纠正数据传输过程中因电磁干扰而产生的数据错误。CAN网络的配制比较容易,允许任何站之间直接进行通信,而无需将所有数据全部汇总到主计算机后再行处理。 二、CAN在国外的发展 对机动车辆总线和对现场总线的需求有许多相似之处,即较低的成本、较高的实时处理能力和在恶劣的强电磁干扰环境下可靠的工作。奔驰S型轿车上采用的就是CAN总线系统;美国商用车辆制造商们也将注意力转向CAN总线;美国一些企业已将CAN作为内部总线应用在生产线和机床上。同时,由于CAN总线可以提供较高的安全性,因此在医疗领域、纺织机械和电梯控制中也得到广泛应用。 三、CAN的工作原理 当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。 CAN总线的报文发送和接收参见图1。当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时, 转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。 由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。 四、位仲裁 要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。实时处理通过网络交换的紧急数据有较大的不同。一个快速变化的物理量,如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求更短的延时。 CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线

循环冗余校验码(CRC)的基本原理

循环冗余校验码(CRC)的基本原理 模2除(按位除) 模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。步骤如下: a、用除数对被除数最高几位做模2减,没有借位。 b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。 c、一直做到余数的位数小于除数时,该余数就是最终余数。 循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2R除以生成多项式G(x)得到的余数就是校验码。 CRC码的生成步骤 4、得到011-------余数(校验位)

5、编码后的报文(CRC码)1010011 1、将x的最高幂次为R的生成多项式G(x)转换成对应的R+1位二进制数。 2、将信息码左移R位,相当与对应的信息多项式C(x)*2R 3、用生成多项式(二进制数)对信息码做模2除,得到R位的余数。 4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。 【例】假设使用的生成多项式是G(x)=x3+x+1。4位的原始报文为1010,求编码后的报文。解: 1、将生成多项式G(x)=x3+x+1转换成对应的二进制除数1011。 2、此题生成多项式有4位(R+1),要把原始报文C(x)左移3(R)位变成1010000 3、用生成多项式对应的二进制数对左移4位后的原始报文进行模2除

循环冗余码的生成和验证

一、题目 编写一个循环冗余码的生成和验证程序,并实现停等式ARQ,编程实现如何生成CRC码,传输,加入噪声,检错反馈,检测验证,信息重发的过程 二、概要设计 CRC校验码的编码方法是用待发送的二进制数据t(x)除以生成多项式g (x),将最后的余数作为CRC校验码。其实现步骤如下: 设待发送的数据块是m位的二进制多项式t(x),生成多项式为r阶的g(x)。在数据块的末尾添加r个0,数据块的长度增加到m+r位,对应的二进制多项式为。用生成多项式g(x)去除,求得余数为阶数为r-1的二进制多项式y(x)。此二进制多项式y(x)就是t(x)经过生成多项式g(x)编码的CRC校验码。用以模2的方式减去y(x),得到二进制多项式。就是包含了CRC校验码的待发送字符串。 CRC编码实际上是将代发送的m位二进制多项式t(x)转换成了可以被g (x)除尽的m+r位二进制多项式,所以解码时可以用接受到的数据去除g(x),如果余数位零,则表示传输过程没有错误;如果余数不为零,则在传输过程中肯定存在错误。CRC码可以看做是由t(x)和CRC校验码的组合,所以解码时将接收到的二进制数据去掉尾部的r位数据,得到的就是原始数据。 三、详细设计 如果生成码是10011 编码: //reg 是一个5 bits 的寄存器 把reg 中的值置0. 把原始的数据后添加r 个0. While (数据未处理完) Begin If (reg 首位是1) reg = reg XOR 0011. 把reg 中的值左移一位,读入一个新的数据并置于register 的0 bit 的位置。 End reg 的后四位就是我们所要求的余数。 解码验错: //reg 是一个5 bits 的寄存器 把reg 中的值置0. 把循环冗余码作为原始的数据 While (数据未处理完)

一文看懂汽车CAN总线技术原理

一文看懂汽车CAN总线技术原理 随着现代汽车技术的不断发展,CAN总线逐渐成为现代汽车上不可缺少的技术,并大大推动了汽车技术的高速发展。本文将对汽车CAN 总线技术的工作原理、特点及优点,CAN总线在汽车制造中的应用及发展趋势做了简单介绍,具体的跟随小编一起来了解一下。 CAN总线的由来由于现代汽车的技术水平大幅提高,要求能对更多的汽车运行参数进行控制,因而汽车控制器的数量在不断的上升,从开始的几个发展到几十个以至于上百个控制单元。控制单元数量的增加,使得它们互相之间的信息交换也越来越密集。为此德国BOSCH 公司(和inter 公司共同)开发了一种设计先进的解决方案-CAN 数据总线,提供一种特殊的局域网来为汽车的控制器之间进行数据交换。 CAN 是ControllerAreaNetwork 的缩写,称为控制单元的局域网,它是车用控制单元传输信息的一种传送形式。 CAN总线技术简介CAN总线又称作汽车总线,全称为“控制器局域网(Controller Area Network)”,意思是区域网络控制器,它将各个单一的控制单元以某种形式(多为星形)连接起来,形成一个完整的系统。在该系统中,各控制单元都以相同的规则进行数据传输交换和共享,称为数据传输协议。CAN总线最早是德国Bosch公司为解决现代汽车中众多的电控模块(ECU)之间的数据交换而开发的一种串行通讯协议。 在工程实际中CAN总线是对汽车中标准的串行数据传输系统的习惯叫法。随着车用电气设备越来越多,从发动机控制到传动系统控制,从行驶、制动、转向系统控制到安全保证系统及仪表报警系统,使汽车电子系统形成一个复杂的大系统,并且都集中在驾驶室控制。另外,随着近年来智能运输系统(ITS)的发展,以3G(GPS、GIS和GSM)为代表的新型电子通讯产品的出现,它对汽车的综合布线和信息的共享交互提出了更高的要求。CAN 总线正是为满足这些要求而设计的。 CAN总线主要有四部分组成:导线、控制器、收发器和终端电阻。其中导线为由两根普通铜导线绞在一起的双绞线。控制器的作用是对收到和发送的信号进行翻译。收发器负责

CAN总线中循环冗余校验码的原理

CAN总线中循环冗余校验码的原理 在CAN系统中为保证报文传输的正确性,需要对通信过程进行差错控制。目前常用的方法是反馈重发,即一旦收到接收端发出的出错信息,发送端便自动重发,此时的差错控制只需要检错功能。常用的检错码有两类:奇偶校验码和循环冗余校验码。奇偶校验码是一种最常见的检错码,其实现方法简单,但检错能力较差;循环冗余校验码的编码也很简单且误判率低,所以在通信系统中获得了广泛的应用。下面介绍CAN网络中循环冗余校验码(即CRC码)的原理和实现方法。 1CRC码检错的工作原理 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位,用来存放余数(x),所以实际发送的报文就变为A(x)·xn+p(x);③生成多项式g(x)的首位和最后一位的系数必须为1。 图1为CRC校验的工作过程。 目前已经有多种生成多项式被列入国际标准中,如:CRC-4、CRC-12、CRC-16、CCITT-16、CRC-32等。CAN总线中采

CRC循环冗余校验原理

CRC校验原理 转载:CRC校验原理 1、循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。 3、CRC码集选择的原则:若设码字长度为N,信息字段为K位,校验字段为R 位(N=K+R),则对于CRC码集中的任一码字,存在且仅存在一个R次多项式g(x),使得 V(x)=A(x)g(x)=x R m(x)+r(x); 其中: m(x)为K次信息多项式, r(x)为R-1次校验多项式, g(x)称为生成多项式: g(x)=g 0+g 1 x+ g 2 x2+...+g (R-1) x(R-1)+g R x R 发送方通过指定的g(x)产生CRC码字,接收方则通过该g(x)来验证收到的CRC 码字。 4、CRC校验码软件生成方法: 借助于多项式除法,其余数为校验字段。 例如:信息字段代码为: 1011001;对应m(x)=x6+x4+x3+1 假设生成多项式为:g(x)=x4+x3+1;则对应g(x)的代码为: 11001 x4m(x)=x10+x8+x7+x4对应的代码记为:10110010000; 采用多项式除法: 得余数为: 1010 (即校验字段为:1010) 发送方:发出的传输字段为: 1 0 1 1 0 0 1 1 0 10 信息字段校验字段 接收方:使用相同的生成码进行校验:接收到的字段/生成码(二进制除法)如果能够除尽,则正确, CRC(Cyclic Redundancy Check)循环冗余校验码 是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带

循环冗余校验码(CRC)的基本原理

循环冗余校验码(CRC)的基本原理 循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R 的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设发送信息用信息多项式f(X)表示,将f(x)左移R位(则可表示成f(x)*X R),这样f(x)的右边就会空出R位,这就是校验码的位置。通过f(x)* X R除以生成多项式G(x)得到的余数就是校验码。 几个基本概念 1、多项式与二进制数码 多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。 多项式包括生成多项式G(x)和信息多项式f(x)。 如生成多项式为G(x)=X4+X3+X+1,可转换为二进制数码11011。 而发送信息位1111,可转换为数据多项式为f(x)=X3+X2+X+1。

2、生成多项式 是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。 在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。 应满足以下条件: a、生成多项式的最高位和最低位必须为1。 b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。 c、不同位发生错误时,应该使余数不同。 d、对余数继续做模2除,应使余数循环。 将这些要求反映为数学关系是比较复杂的。但可以从有关资料查到常用的对应于不同码制的生成多项式如图9所示: N K 码距d G(x)多项式G(x) 7 4 3 x3+x+1 1011 7 4 3 x3+x2+1 1101 7 3 4 x4+x3+x2+1 11101 7 3 4 x4+x2+x+1 10111

CAN总线的工作原理

CAN总线的工作原理 控制器局域网总线(CAN,Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的 现场总线之一。CAN 协议由德国的Robert Bosch 公司开发,用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束。该协议的健壮性使其用 途延伸到其他自动化和工业应用。CAN 协议的特性包括完整性的串行数据通讯、提供实时支持、传输速率高达1Mb/s、同时具有11 位的寻址以及检错能力。CAN 总线是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电子干扰性,并且能够检测出产生的任何错误。CAN 总线可以应用于汽车电控制系统、电梯控制系统、安全监测系统、医疗仪器、纺织机械、船舶运输 等领域。CAN 总线的特点1、具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点;2、采用双线串行通信方式,检错能力强,可在高噪声干 扰环境中工作;3、具有优先权和仲裁功能,多个控制模块通过CAN 控制器挂到CAN-bus 上,形成多主机局部网络;4、可根据报文的ID 决定接收或屏蔽该报文;5、可靠的错误处理和检错机制;6、发送的信息遭到破坏后,可自动 重发;7、节点在错误严重的情况下具有自动退出总线的功能;8、报文不包含 源地址或目标地址,仅用标志符来指示功能信息、优先级信息。CAN 总线的工作原理CAN 总线使用串行数据传输方式,可以1Mb/s 的速率在40m 的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。CAN 与I2C 总线的许多细节很类似,但也有一些明显的区别。当CAN 总线上 的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节 点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11 位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方

《计算机组成与工作原理》数据校验码—循环冗余校验码(教学设计)

《计算机组成与工作原理》教学设计 第2章计算机的信息表示 2.3 循环冗余校验码 一、学情分析 就当代中职学生的现状来看,普遍存在文化基础知识比较薄弱,对于枯燥无味的理论教学缺乏兴趣和耐心,而如同《计算机组成与工作原理》这样的抽象的理论课程又是计算机专业的必修课程,作为教学要求,学生必须掌握。所以,只是通过普通的教学方式已经无法达到预期效果,需要结合多媒体等信息技术,以及生活案例或既定的任务环节来引导学生学习相关知识。 二、教材分析 1.内容及地位 本教材由刘晓川老师主编,电子工业出版社出版,是专门针对于中等职业学校计算机类专业编写的一本书。同时,《计算机组成与工作原理》也是计算机专业学生必修的课程之一。在近几年的对口招生考试中,《计算机组成与工作原理》也同样是必考内容。而其中的计算机信息表示的章节占有一定的比重。 2.重、难点分析 (1)重点: ①了解循环冗余校验码的定义和特点。 ②掌握循环冗余校验码的编码方式。 ③掌握模2运算的运算方法及特点。 ④掌握对循环冗余校验码的校验。 (2)难点: ①掌握循环冗余校验码的编码方式。 ②掌握模2运算的运算方法及特点。

3.课时安排: 1个课时(45分钟) 三、教学目标 1、知识目标 (1)知道循环冗余校验码的简称。 (2)知道循环冗余校验码的编码过程。 (3)知道模2运算的运算过程及特点。 (4)知道循环冗余校验码的校验方法。 2、能力目标 (1)能够正确掌握模2运算方法。 (2)能够正确掌握循环冗余校验码的运算过程。 (3)能够对于循环冗余校验码进行校验。 3、情感目标 (1)通过相关知识的学习提高自己的知识面。 (2)通过相关的学习提高学习兴趣和耐心,以及钻研知识的毅力。 四、教学策略 1.任务驱动法: 围绕任务展开学习,以任务的完成结果检验和总结学习过程等,改变学生的学习状态,使学生主动建构探究、实践、思考、运用、解决、高智慧的学习。 2.演示法: 通过教师演示、视频演示以及学生演示来帮助同学了解任务流程,从而更好的开展活动。 3.内容引导方法: 在教学及活动的过程中,不是直接指出学生的缺点或错误,而是通过引导的方法,让学生自己意思到问题所在并引导学生去解决问题,从而提高学生发现问题及解决问题

CRC循环冗余校验码课设

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2014年秋季学期 《计算机通信》课程设计 题目:循环冗余校验码(CRC)的编译码仿真实现专业班级:通信工程(1)班 姓名: 学号: 指导教师: 成绩:

摘要 CRC即循环冗余校验码(Cyclic Redundancy Check)是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 本次课程设计研究了纠错码及循环冗余校验码的原理,以及利用MATLAB对其进行了编码和译码仿真,实现了CRC循环冗余校验码的编码及校验,在接收端收到通过校验的码,从而确定传输过程是否出错,得到的结论和理论上是一致的。 关键词:循环冗余校验码;检错码;matlab软件

前言 (1) 第1章循环冗余校验码(CRC)的基本原理 (2) 1.1 循环冗余校验码的基本介绍 (2) 1.2 循环冗余校验码的几个基本概念 (2) 1.3 循环冗余校验码的基本原理 (3) 第2章 MATLAB软件基本介绍 (5) 2.1 MATLAB的介绍 (5) 2.2 MATLAB的组成部分 (5) 2.3 MATLAB的语言特点 (5) 2.4 MATLAB的优势 (6) 第3章循环冗余校验码(CRC)的详细设计 (7) 3.1 CRC循环冗余校验码的编码模块 (7) 3.2 CRC循环冗余校验码的译码模块 (7) 3.3 CRC循环冗余校验码的性能分析 (8) 3.4 CRC循环冗余校验码的生成器和校验器 (8) 3.5 CRC循环冗余校验码的程序流程图 (8) 3.6 运行结果及其分析 (10) 总结 (12) 参考文献 (13) 附录 (13) 致谢 (16)

差错控制方法(奇偶校验码、循环冗余码、海明码)

差错控制方法 差错控制在数据通信过程中能发现或纠正差错,把差错限制在尽可能小的允许范围内的技术和方法。 1.差错的控制方法 最常用的差错控制方法是差错控制编码。数据信息位在向信道发送之前,先按照某种关系附加上一定的冗余位,构成一个码字后再发送,这个过程称为差错控制编码过程。接收端收到该码字后,检查信息位和附加的冗余位之间的关系,以检查传输过程中是否有差错发生,这个过程称为检验过程。 差错控制编码可分为检错码和纠错码。 ①检错码--能自动发现差错的编码; ②纠错码--不仅能发现差错而且能自动纠正差错的编码。 差错控制方法分两类,一类是自动请求重发ARQ,另一类是前向纠错FEC。 在ARQ方式中,当接收端发现差错时,就设法通知发送端重发,直到收到正确的码字为止。ARQ方式只使用检错码。 在FEC方式中,接收端不但能发现差错,而且能确定二进制码元发生错误的位置,从而加以纠正。FEC 方式必须使用纠错码。 2.编码效率 衡量编码性能好坏的一个重要参数是编码效率R,它是码字中信息位所占的比例。编码效率越高,即R 越大,信道中用来传送信息码元的有效利用率就越高。编码效率计算公式为: R=k/n=k/(k+r) 式中k为码字中的信息位位数 r为编码时外加冗余位位数 n为编码后的码字长度 2.5.2 奇偶校验码 奇偶校验码是一种通过增加冗余位使得码字中“1”的个数为奇数或偶数的编码方法,它是一种检错码。 1.垂直奇偶校验的特点及编码规则 发送顺序↑ │ │ │ │ I11 I12 ... I1q┐ │ │ │ ┘ 信 息 位I21 I22 (2) ...... I p1 I p2 ... I pq r1 r2 ... r q冗余位 1)编码规则: 偶校验:r i=I1i+I2i+...+I pi(i=1,2,...,q) 奇校验:r i=I1i+I2i+...+I pi+1(i=1,2,...,q) 式中 p为码字的定长位数 q为码字的个数 垂直奇偶校验的编码效率为R=p/(p+1)。 2)特点:垂直奇偶校验又称纵向奇偶校验,它能检测出每列中所有奇数个错,但检测不出偶数个的错。因而对差错的漏检率接近1/2。

相关文档
最新文档