校验码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
奇偶校验码
奇偶校验码是一种通过增加冗余位使得码字中“1”的个数为奇数或偶数的编码方法,它是一种检错码。
1.垂直奇偶校验的特点及编码规则
发送顺序↑
│
│
│
│
I
11
I
12
(I)
1q┐
│
│
│
┘
信
息
位I
21
I
22
(I)
2q
......
I
p1
I
p2
(I)
pq
r
1
r
2
... 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。
2.水平奇偶校验的特点及编码规则1)编码规则:
发送顺序↑
│
│
│
│
I
11
I
12
(I)
1q r1
r
2
....
r
p
I
21
I
22
(I)
2q
......
I
p1
I
p2
(I)
pq
└──────┘↑
信息位冗余位
偶校验:r i=I i1+I i2+...+I iq(i=1,2,...,p)
奇校验:r i=I i1+I i2+...+I iq+1(i=1,2,...,p)
式中 p为码字的定长位数
q为码字的个数
水平奇偶校验的编码效率为R=q/(q+1)。
2)特点:水平奇偶校验又称横向奇偶校验,它不但能检测出各段同一位上的奇数个错,而且还能检测出突发长度<=p的所有突发错误。
其漏检率要比垂直奇偶校验方法低,但实现水平奇偶校验时,一定要使用数据缓冲器。
3.水平垂直奇偶校验的特点及编码规则1)编码规则:
发送顺序↑
│
│
│
│
I
11I12...I1q r1,q+1
I
21I22...I2q r2,q+1
.........
I
p1I p2...I pq r p,q+1
r
p+1,1r p+1,2...r p+1,q r p+1,q+1
若水平垂直都用偶校验,则
r i,q+1=I i1+I i2+...+I iq (i=1,2,...,p)
r p+1,j=I1j+I2j+...+I pj (j=1,2,...,q)
r p+1,q+1=r p+1,1+r p+1,2+...+r p+1,q
=r1,q+1+r2,q+1+...+r p,q+1
水平垂直奇偶校验的编码效率为R=pq/[(p+1)(q+1)]。
2)特点:水平垂直奇偶校验又称纵横奇偶校验。
它能检测出所有3位或3位以下的错误、奇数个错、大部分偶数个错以及突发长度<=p+1的突发错。
可使误码率降至原误码率的百分之一到万分之一。
还可以用
来纠正部分差错。
有部分偶数个错不能测出。
适用于中、低速传输系统和反馈重传系统。
循环冗余码(CRC)
1.CRC的工作方法
在发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端,接收端收到的信息按发送端形成循环冗余码同样的算法进行校验,若有错,需重发。
2.循环冗余码的产生与码字正确性检验例子。
例1.已知:信息码:110011 信息多项式:K(X)=X5+X4+X+1
生成码:11001 生成多项式:G(X)=X4+X3+1(r=4) 求:循环冗余码和码字。
解:1)(X5+X4+X+1)*X4的积是 X9+X8+X5+X4对应的码是1100110000。
2)积/G(X)(按模二算法)。
由计算结果知冗余码是1001,码字就是1100111001。
1 0 0 0 0 1←Q(X)
G(x)→1 1 0 0 1 )1 1 0 0 1 1 0 0 0 0←F(X)*X r
1 1 0 0 1 ,
1 0 0 0 0
1 1 0 0 1
1 0 0 1←R(X)(冗
余码)
例2.已知:接收码字:1100111001 多项式:T(X)=X9+X8+X5+X4+X3+1 生成码: 11001 生成多项
式:G(X)=X4+X3+1(r=4)
求:码字的正确性。
若正确,则指出冗余码和信息码。
解:1)用字码除以生成码,余数为0,所以码字正确。
1 0 0 0 0 1←Q(X)
G(x)→1 1 0 0 1 )1 1 0 0 1 1 1 0 0 1←F(X)*X r+R(x)
1 1 0 0 1
1 1 0 0 1
1 1 0 0 1
0←S(X)(余
数)
2)因r=4,所以冗余码是:11001,信息码是:110011
3.循环冗余码的工作原理
循环冗余码CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(X)来得到,K位要发送的信息位可对应于一个(k-1)次多项式K(X),r位冗余位则对应于一个(r-1)次多项式R(X),由r位冗余位组成的n=k+r位码字则对应于一个(n-1)次多项式
T(X)=Xr*K(X)+R(X)。
4.循环冗余校验码的特点
1)可检测出所有奇数位错;
2)可检测出所有双比特的错;
3)可检测出所有小于、等于校验位长度的突发错。
海明码
1.海明码的概念
海明码是一种可以纠正一位差错的编码。
它是利用在信息位为k位,增加r位冗余位,构成一个n=k+r位的码字,然后用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。
它必需满足以下关系式:
2r>=n+1 或 2r>=k+r+1
海明码的编码效率为:
R=k/(k+r)
式中 k为信息位位数
r为增加冗余位位数
2.海明码的生成与接收
方法一:(按教科书)
1)海明码的生成。
例1.已知:信息码为:"0010"。
海明码的监督关系式为:
S2=a2+a4+a5+a6
S1=a1+a3+a5+a6
S0=a0+a3+a4+a6
求:海明码码字。
解:1)由监督关系式知冗余码为a2a1a0。
2)冗余码与信息码合成的海明码是:"0010a2a1a0"。
设S2=S1=S0=0,由监督关系式得:
a2=a4+a5+a6=1
a1=a3+a5+a6=0
a0=a3+a4+a6=1
因此,海明码码字为:"0010101"
2)海明码的接收。
例2.已知:海明码的监督关系式为:
S2=a2+a4+a5+a6
S1=a1+a3+a5+a6
S0=a0+a3+a4+a6
接收码字为:"0011101"(n=7)
求:发送端的信息码。
解:1)由海明码的监督关系式计算得S2S1S0=011。
2)由监督关系式可构造出下面错码位置关系表:
3)由S2S1S0=011查表得知错码位置是a3。
4)纠错--对码字的a3位取反得正确码字:"0 0 1 0 1 0 1"
5)把冗余码a2a1a0删除得发送端的信息码:"0010"
方法二:(不用查表,方便编程)
1)海明码的生成(顺序生成法)。
例3.已知:信息码为:" 1 1 0 0 1 1 0 0 " (k=8)
求:海明码码字。
解:1)把冗余码A、B、C、…,顺序插入信息码中,得海明码
码字:" A B 1 C 1 0 0 D 1 1 0 0 "
码位: 1 2 3 4 5 6 7 8 910 11 12
其中A,B,C,D分别插于2k位(k=0,1,2,3)。
码位分别为
1,2,4,8。
2)冗余码A,B,C,D的线性码位是:(相当于监督关系式)
A->1,3,5,7,9,11;
B->2,3,6,7,10,11;
C->4,5,6,7,12;(注 5=4+1;6=4+2;7=4+2+1;12=8+4)
D->8,9,10,11,12。
3)把线性码位的值的偶校验作为冗余码的值(设冗余码初值为0):
A=∑(0,1,1,0,1,0)=1
B=∑(0,1,0,0,1,0)=0
C=∑(0,1,0,0,0) =1
D=∑(0,1,1,0,0) =0
4)海明码为:"1 0 1 1 1 0 0 0 1 1 0 0"
2)海明码的接收。
例4.已知:接收的码字为:"1 0 0 1 1 0 0 0 1 1 0 0"(k=8) 求:发送端的信息码。
解:1)设错误累加器(err)初值=0
2)求出冗余码的偶校验和,并按码位累加到err中:
A=∑(1,0,1,0,1,0)=1 err=err+20=1
B=∑(0,0,0,0,1,0)=1 err=err+21=3
C=∑(1,1,0,0,0) =0 err=err+0=3
D=∑(0,1,1,0,0) =0 err=err+0=3
由err≠0可知接收码字有错,
3)码字的错误位置就是错误累加器(err)的值3。
4)纠错--对码字的第3位值取反得正确码字:
"1 0 1 1 1 0 0 0 1 1 0 0"
5)把位于2k位的冗余码删除得信息码:"1 1 0 0 1 1 0 0"
CRC码:循环冗余校验码(CRC)
CRC校验采用多项式编码方法。
被处理的数据块可以看作是一个n阶的二进制多项式,由。
如一个8位二进制数10110101可以表示为:。
多项式乘除法运算过程与普通代数多项式的乘除法相同。
多项式的加减法运算以2为模,加减时不进,错位,和逻辑异或运算一致。
采用CRC校验时,发送方和接收方用同一个生成多项式g(x),并且g(x)的首位和最后一位的系数必须为1。
CRC的处理方法是:发送方以g(x)去除t(x),得到余数作为CRC 校验码。
校验时,以计算的校正结果是否为0为据,判断数据帧是否出错。
CRC校验可以100%地检测出所有奇数个随机错误和长度小于等于k(k为g(x)的阶数)的突发错误。
所以CRC的生成多项式的阶数越高,那么误判的概率就越小。
CCITT建议:2048 kbit/s的PCM基群设备采用CRC-4方案,使用的CRC校验码生成多项式g(x)= 。
采用16位CRC校验,可以保证在bit码元中只含有一位未被检测出的错误。
在IBM的同步数据链路控制规程SDLC的帧校验序列FCS中,使用CRC-16,其生成多项式g(x)= ;而在CCITT推荐的高级数据链路控制规程HDLC的帧校验序列FCS中,使用CCITT-16,其生成多项式g(x)= 。
CRC-32的生成多项式g(x)= 。
CRC-32出错的概率比CRC-16低倍。
由于CRC-32的可靠性,把CRC-32用于重要数据传输十分合适,所以在通信、计算机等领域运用十分广泛。
在一些UART通信控制芯片(如MC6582、Intel8273和
Z80-SIO)内,都采用了CRC校验码进行差错控制;以太网卡芯片、MPEG解码芯片中,
也采用CRC-32进行差错控制。
海明码:
海明码的基本思想:将有效的信息按照某种规律分成若干组,每组安排一个校验位进行奇偶测试。
在一个数据位组中加入几个校验位,增加数据代码间的码距,当某一位发生变化时会引起校验结果发生变化,不同代码位上的错误会得出不同的校验结果。
海明码能校验出2
位错误,并能纠正1位错误。
奇偶校验码:
奇偶校验是一种校验代码传输正确性的方法。
根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。
采用奇数的称为奇校验,反之,称为偶校验。
采用何种校验是事先规定好的。
通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。
若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输
代码的正确性。