帧校验Word文档格式.docx
- 文档编号:21683716
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:17
- 大小:47.82KB
帧校验Word文档格式.docx
《帧校验Word文档格式.docx》由会员分享,可在线阅读,更多相关《帧校验Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
采用反码加法程序比较麻烦,所以常用另外2种累加和算法。
(1)异或法(模2加)
∑X=X1异或X2异或X3异或X4异或X5异或Xn
(2)不管最高进位的累加法(模256加)
∑X=X1ADDX2ADDX3ADDX4ADDX5ADDXn
二、循环冗余校验(CRC校验)
虽然采用“和校验”可以发现几个连续位的差错,但不能检测出信息之间的顺序差错(任意交换各字节之间的位置,其校验和不变),检错能力有限。
现在,应用最广泛、功能最强大的检错码是循环冗余校验码(CyclicalRedundancyCheck,缩写为CRC)。
据文献资料分析,当采用余数为16位的CRC时,它的错误发现率如下:
单个位的差错:
100%
双位差错:
100%
奇数个差错:
比16位短的突发性差错:
100%
恰好17位的突发性差错:
99.9969%
其它所有的突发性差错:
99.9984%
如此强大的检错能力使CRC广泛地使用在数据存储与数据通信中,并且在国际上已经形成了规范,以硬件形式做进磁盘驱动器和通信产品(如调制解调器)中。
常用的CRC码,已成为国际标准,有下列几种。
名称
生成多项式
应用举例
CRC-4
x4+x+1
ITUG.704
CRC-12
x12+x11+x3+x+1
用于字符长度为6bit的情况
CRC-16
x16+x15+x2+1
IBMSDLC
CRC-ITU**
x16+x12+x5+1
ISOHDLC,ITUX.25,V.34/V.41/V.42,PPP-FCS
CRC-32
x32+x26+x23+...+x2+x+1
ZIP,RAR,IEEE802LAN/FDDI,IEEE1394,PPP-FCS
CRC-32c
x32+x28+x27+...+x8+x6+1
SCTP
(一)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)=x4+x3+x+1,可转换为二进制数码11011。
而发送信息位1111,可转换为数据多项式为C(x)=x3+x2+x+1。
2、生成多项式
是接受方和发送方的一个约定的二进制数,可转换为生成多项式G(x)。
在发送方,利用生成多项式对信息多项式做模2除生成校验码。
在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。
应满足以下条件:
a、生成多项式的最高位和最低位必须为1。
b、当被传送信息任何一位发生错误时,被生成多项式做除后应该使余数不为0。
c、不同位发生错误时,应该使余数不同。
d、对余数继续做除,应使余数循环。
3、CRC具体算法
将一段信息看成一个很长的二进制数(例如将一段128字节的信息看成一个1024位的二进制数),然后用一个特定的数(例如二进制数1,0001,0000,0010,0001B,即十六进制数11021H)去除它,最后将余数作为校验码附在信息代码之后一起传送(或存储),在进行接收(或读出)时进行同样的处理,如有差错就可以发现。
除数:
按CCITT(国际电话和电报咨询委员会)规定,采用17比特的二进制数1,0001,0000,0010,0001B,即十六进制数11021H。
数据块大小:
128字节(即1024比特)。
CRC校验位的长度:
2字节(即16比特),附在数据块之后。
CRC生成算法中除法的实现:
在CRC算法中采用的是模2除法,即用“异或”操作代替减法操作,不用考虑借位问题,余数可以保证在16比特之内。
CRC生成算法的步骤:
先在128字节数据块之后补上两字节的零,扩充成130字节;
然后从高位到低位进行模2除法,最后的余数就是CRC校验码,将其存放在两个补零的字节位置上即可。
收方的检错方法:
收方接收到130字节数据之后,对其进行CRC校验(即从高位到低位进行模2除法),结果为零表示没有差错,结果不为零表示有差错。
(二)循环冗余码祥细介绍
循环冗余码简称循环码,是一类重要的分组码,它建立在严格的代数理论的基础上,基本方法是用代数多项式来表示码字。
在一个长度为n的码字中包含k个信息位和n-k个校验位,校验位的产生只与该码字内的k个信息位有关,通常将这种结构的码记为(n,k)码。
循环码具有以下两个基本特性:
A、对于一种循环码,其中的任何两个码字按模2相加后,形成的新序列仍为一个有用码字。
若两个相同码字相加必然得到一个全0序列,因此,循环码一定包含全0码字。
具有这种特性的码称为线性码。
B、一个码字的每次循环移位一定也是码集合中的另一个码字。
设一个(n,k)线性码,其中k位信息位表示为:
l={Ck-1,Ck-2,...,C1,C0},且Ci∈{0,1}i=0,1,...,k-1
1、信息多项式
我们用一个k-1次幂的多项式来表示这k位信息位,即信息多项式为:
I(X)=Ck-1Xk-1+Ck-2Xk-2+.....+C1X+C0
下面用多项式来表示(n,k)循环码的编码过程。
设有n-k位校验位,将信息多项式I(X)升高n-k阶,即令i'
(X)=Xn-k*I(X)。
这个新形成的多项式I’(X)相当于在原K个信息位后附加N-K个0。
然后将I'
(X)除以一个收发双方事先同意(协定)的多项式G(X),称G(X)为生成多项式。
G(X)的幂为N-K,而且G(X)的最高幂次(Xn-k)和最低幂次(X0)的系数必须为l。
I'
(X)/G(X)=Xn-k*I(X)/G(X)=Q(X)+R(X)/G(X)(10-4)
其中Q(X)为商多项式,R(X)为余数多项式,R(X)的最高幂次为(n-k-1)。
由式(10-4)可得,
Xn-kI(X)=Q(X)*G(X)十R(X)(10-5)
根据模2运算得规则(模2的加法和减法是等同的),将式(10-5)移项后可得:
F(x)≌Xn-k*I(X)十R(X)=Q(X)*G(X)(10-6)
F(x)称为帧多项式,它的系数即表示将R(X)附加于I'
(x)之后,由编码形成的码字。
上述数学表达实际上就是用G(X)生成(n,k)循环码的编码过程。
由编码过程可以看出,当传输正确时,接收到的F(X)必定是G(X)的倍式,即能够被G(X)除尽。
相反,若传输存在差错,即F(X)变成了P(X)=F(X)十E(X),E(X)为差错多项式。
在接收端,也用G'
(X)对P(X)进行除法运算,则可得
P(X)/G(X)=[F(X)+E(X)]/G(X)=Q(X)+E(X)/G(X)(10-7)
设E(X)/G(X)=Qc(X)+Rc(X)/G(X)
则P(X)/G(X)=Q(X)+Qc(X)+Pc(X)/G(X)(10-8)
当Rc(x)≠0时,认为存在差错;
而当Rc(X)=0时,认为无差错。
例:
8比特的信息序列ll100110,通过数据链路传输,采用CRC差错检测(生成多项式为l1001)。
已知生成多项式的最高幂次为4,所以附加的校验位长度为4比特。
开始时,在信息位的后面附加4个“0”,相当于信息多项式乘以X4。
然后将这个序列用生成多项式进行摸2除,可以利用长除法逐步进行,每次处理与生成多项式相同长度的位数,如图2a所示。
结果得到的4位余数即为该信息序列的校验位,再把它附加到原始信息序列的末尾发送到数据链路上。
G(X)--→11001111001100000
11001
10111
11100
10100
11001
11010
11001
发送幀1110011001100110←--R(X)=FCS
(a)
1100111100110011011001111001101111
1100111001
1011110111
1110011100
1010110111
1100111001
1100111101
1100111001
0000001001
0000000000
00001001
R(X)=0:
无差错R(X)≠0:
检测到差错
(b)
图2CRC编码、译码
在接收端,整个接收的比特序列被同一生成多项式除,前者余数为0说明传输正确;
后者的余数不为0,此时说明传输出现差错,可以反馈否定确认信号,使发送端重发原码字。
对一个循环码译码器,如果它能检查出2t个差错,则它就能纠正t个差错。
循环冗余校验(CRC)技术的理论和应用都是简单明了的。
其生成为三个基本步骤的。
第一步,在数据单元的末尾加上n个0。
n是一个比预定除数的比特位数(n+l)少l的数。
第二步,采用二进制除法将新的加长的数据单元除以除数。
由此除法产生的余数就是循环冗余码(CRC码),
第三步,用从第二步得到的n个比特的CRC码替换数据单元末尾附加的n个0。
如果余数位数小于n,最左的缺省位数为0。
如果除法过程根本未产生余数——也就是说,如果原始的数据单元本身就可以被除数整除——那么以n个0作为CRC码替换余数所在的位置。
产生的比特模式正好能被除数整除。
到达接收方的数据单元首先到达的是数据,然后是CRC码。
接收方将整个数据串当作一个整体去除以用来产生循环冗余校验余数的同一个除数。
数据串无差错地到达接收方,校验器产生余数0,数据单元将通过检验。
如传输中数据单元被改变,将产生非零余数,数据单元将通不过检验。
2、可靠性
生成多项式的选择是很重要的。
首先,生成多项式的最高幂次决定了检错能力,由代数多项式理论可以得知,任何长度小于或等于(n—k)的突发错误都能被检测出来,若发生长度大于(n-k)的突发错误,利用生成多项式也能以很高的概率发现错误。
其次,生成多项式与要检测的差错类型密切相关。
从式可以看出,若差错多项式是生成多项式的倍式,则译码后的余数必为0,这样就不能检测出错误,所以通常利用计算机模拟来找到合适的生成多项式。
最后,生成多项式的选择应使实现方法尽量简单,目前大都采用一种移位寄存器来进行计算,并用硬件来完成对校验位的校验。
以下分析循环冗余码的检错性能。
当(n,k)分组码的码距为d时,必定可以检查出(d-l)个及以下数目的差错。
但实际上一个码字若有d个或d个以上的差错时,有很大可能会从一个合法码字变成非法码字,因此这一类的差错仍能被检测出来。
可以证明非法码字的个数为2n-k-l,所以在一个码字内如有d个或d个以上的差错时,能发现差错的机率是与2n-k成正比的。
假设在二进制对称信道中,比特位的平均误码率为P,则字长为n、其中正好有i个差错的概率Pe(i)为:
Pe(i)=(ni)Pi(l—P)n-I(10-9)
从而长度为n的码字出现差错的概率为
Pe=1-pe(0)=1-(1-p)n(10-10)
可以证明,不可检测的码字差错的概率为
Pu=(1/2n-k)∑Pe(i)i=(d到n)(10-11)
式(10-11)表明,当检测长度大于或等于(n-k+1)位的突发差错时,只有全部差错模式中的1/2n-k无法查出,其余都能被发现。
例如,
3、循环冗余码(CRC)生成器
循环冗余码生成器采用了模2除法。
图2显示了这一过程。
在第一步,从被除数的头四位减去四位的除数。
除数的每一位都与被除数的对应位在不涉及上一位的情况下独立进行减法。
在本例中,除数l101从被除数的前四位1001中减去,得到100(余数起头的0被省略)。
在被除数中,下一个没有使用过的比特接着被抄录下来,使得余数的位数和除数的位数相同。
因此,下一步就是1000—l101,结果是101,依此类推。
在二进制除法中,除数总是以l开头的,然后从上一次的被除数/余数中与除数位数相同的部分中减去除数,并且只能从最左位是l的被除数/余数中减去除数。
每当被除数/余数的最左位是0时,就在该步骤中用与除数位数长度相同的一串0代替除数。
例如,如果除数是四位的,就被四个0替换。
(我们是在进行比特模式处理,而不是数值量,0000和0是不一样的)这种限制意味着,在任何一步中,最左位的减法要么是0-0,或者是l-l,两者都将产生0。
因此,在减法后,余数最左位总是一个前导零,因此被丢弃(就象在十进制除法中一样),然后被除数中的下一个未使用比特被抄录下来填充余数。
注意只有余数的第一位被丢弃——如果第二位仍然是0,这个0被保留,并且下一步的被除数/余数会以0开头。
一直重复这个过程直到被除数中所有比特都被使用过。
4、CRC码的生成步骤
1、将x的最高幂次为R的生成多项式G(x)转换成对应的R+1位二进制数。
2、将信息码左移R位,相当与对应的信息多项式C(x)*2的R次方
3、用生成多项式(二进制数)对信息码做除,得到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位后的原始报文进行除:
这里的除法有两种方法
一种是把原二进制转化为10进制,然后进行除法运算得到余数。
将这个余数再转化为二进制,就是要填在后面的二进制数了(这个可能有误……)
如此例
1010000(原始报文移位后)转换为十进制为80
1011(生成多项式)转换为十进制为11
11除80,余数为3
转化为二进制位011
这个011就是要在后三位的校验码
编码后的报文(CRC码):
1010000
+011
------------------
1010011
第二种就是直接进行二进制除法
生成CRC码的基本原理:
任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。
例如:
代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。
CRC码集选择的原则:
若设码字长度为N,信息字段为K位,校验字段为R位(N=K+R),则对于CRC码集中的任一码字,存在且仅存在一个R次多项式g(x),使得
V(x)=A(x)g(x)=xRm(x)+r(x);
其中:
m(x)为K次原始的信息多项式,r(x)为R-1次校验多项式(即CRC校验和),
g(x)称为生成多项式:
g(x)=g0+g1x1+g2x2+...+g(R-1)x(R-1)+gRxR
发送方通过指定的g(x)产生CRC码字,接收方则通过该g(x)来验证收到的CRC码字。
5、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)
发送方:
发出的传输字段为:
10110011010
信息字段校验字段
接收方:
使用相同的生成码进行校验:
接收到的字段/生成码(二进制除法)
如果能够除尽,则正确,
给出余数(1010)的计算步骤:
除法没有数学上的含义,而是采用计算机的模二除法,即,除数和被除数做异或运算。
进行异或运算时除数和被除数最高位对齐,按位异或。
10110010000
^11001
--------------------------
01111010000
1111010000
-------------------------
0011110000
11110000
00111000
111000
^11001
-------------------
001010
则四位CRC监督码就为:
1010。
利用CRC进行检错的过程可简单描述为:
在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。
在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。
这个规则,在差错控制理论中称为“生成多项式”。
6、代数学的一般性算法
在代数编码理论中,将一个码组表示为一个多项式,码组中各码元当作多项式的系数。
例如1100101表示为1·
x6+1·
x5+0·
x4+0·
x3+1·
x2+0·
x+1,即x6+x5+x2+1。
设编码前的原始信息多项式为P(x),P(x)的最高幂次加1等于k;
生成多项式为G(x),G(x)的最高幂次等于r;
CRC多项式为R(x);
编码后的带CRC的信息多项式为T(x)。
发送方编码方法:
将P(x)乘以xr(即对应的二进制码序列左移r位),再除以G(x),所得余式即为R(x)。
用公式表示为T(x)=xrP(x)+R(x)
接收方解码方法:
将T(x)除以G(x),如果余数为0,则说明传输中无错误发生,否则说明传输有误。
举例来说,设信息码为1100,生成多项式为1011,即P(x)=x3+x2,G(x)=x3+x+1,计算CRC的过程为
xrP(x)=x3(x3+x2)=x6+x5G(x)=x3+x+1即R(x)=x。
注意到G(x)最高幂次r=3,得出CRC为010。
如果用竖式除法,计算过程为
1110-------1011/1100000(1100左移3位)1011----11101011-----10101011-----00100000----010因此,T(x)=(x6+x5)+(x)=x6+x5+x,即1100000+010=1100010
如果传输无误,
T(x)=(x6+x5+x)/G(x)=x3+x2+x,G(x)=x3+x+1无余式。
回头看一下上面的竖式除法,如果被除数是1100010,显然在商第三个1时,就能除尽。
上述推算过程,有助于我们理解CRC的概念。
但直接编程来实现上面的算法,不仅繁琐,效率也不高。
实际上在工程中不会直接这样去计算和验证CRC。
7、循环码的译码
设发的是[n,k]循环码的码字c=(cn-1,cn-2,,c0),相应的码多项式为
c(x)=cn-1xn-1+cn-2xn-2++c1x+c0
信道产生的错误图样是E,它的多项式表示是
E(x)=en-1xn-1+en-2xn-2++e1x+e0
译码器收到的是R=C+E=(rn-1,rn-2,,r0),它的多项式表示是
R(x)=rn-1xn-1+rn-2xn-2++r1x+r0
循环码是线性分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 帧 校 验.docx