1.6 差错控制 1.6.1 差错类型及基本控制方法 噪声引入的随机误码,均匀分布 由干扰、快衰落引起的突发误码 单比特错误 多比特错误 1.6 差错控制 1.6.1 差错类型及基本控制方法 噪声引入的随机误码,均匀分布 由干扰、快衰落引起的突发误码 单比特错误 多比特错误 突发错误 1) 自动请求重发 ARQ(Automatic Request for Repeat) 2) 前向纠错 FEC(Forward Error Correction) 3) 混合方式 HEC(Hybrid FEC-ARQ)
自动请求重发ARQ 由发端送出能够发现错误的编码,由收端判决传输中有无错误产生。 如果发现错误,则通过反向信道把这一判决结果反馈给发端。发端把收端认为错误的信息再次重发,从而达到正确传输的目的。 其特点是需要反馈信道,译码设备简单,对突发错误和信道干扰较严重时有效, 但实时性差.
发端 收端 前向纠错FEC 发端发送能够纠正错误的码,收端收到信码后自动地纠正传输中的错误。其特点是单向传输,实时性好。 译码设备较复杂,代码效率低,适用于恶劣环境和可靠性要求高的场合。 发端 收端 纠错编码 举例:遥控天车
1.6.2 差错控制编码的基本原理 在信息码序列中加监督码就称为差错控制编码,也叫纠错编码。不同的编码方法,有不同的检错和纠错能力,增加监督码元越多,检(纠)错能力越强。 差错控制编码原则上是降低 Rb来换取可靠性提高(降低Pe)。 存在噪声干扰的信道,若信道容量为C,只要发送端以低于C的速率R发送信息(R为输入道编码器的二进制码元速率),则一定存在一种编码方式,使编码的错误概率Pe随着码长n的增加将按指数下降,即 Pe < e-nE[R] 即在信道容量及发送信息速率一定,可以通过增加码长,使错误概率下降。
码距 —— 两个码组对应位上数字不同的位数称为码组距离,又称汉明(Hamming)距离。 例如 11000 与 10011之间的距离d=3 码组集中任意两个码字之间距离的最小值称为码的最小距离d0。最小码距是码的一个重要参数, 它是衡量码检错、纠错能力的依据。 有以下关系: (1)为检测 e 个错码,则要求最小码距 d0 >=e+1 (2)为纠正 t 个错码,则要求最小码距 d0 >=2t+1 (3)为纠正 t 个错码,同时为检测 e 个错码,则要求最小码距 d0 >=e+t+1 ,e>t
[00,11] ——码距为 2 10,01 ——1位错,但不知哪位错。 [000,111] ——码距为 3 001,010,100… ——1位错。 110,101,011…
用8个码组,(000,001,010,011,100,101,110,111),各点之间最小相差1个边长,最小码距为1。 用4个码组,选(010,111,100,001)或(110,011,000,101),各点之间相差2个边长,最小码距为2。 用2个码组,分别选(111,000)(100,011)(110,001)(101,010),各点之间相差3个边长,最小码距为3。
k r 分组码 分组码一般可用(n,k)表示。 k是每组二进制信息码元的数目. n是编码码组的码元总位数,又称为码组长度,简称码长。
编码效率 用差错控制编码提高通信系统的可靠性, 是以降低有效性为代价换来的。我们定义编码效率R来衡量有效性: R=k/n 对纠错码的基本要求是: 检错和纠错能力尽量强; 编码效率尽量高;编码规律尽量简单。实际中要根据具体指标要求,保证有一定纠、检错能力和编码效率,并且易于实现。
1.6.3 奇偶监督码 奇偶监督码是在原信息码后面附加一个监督元, 使得码组中“1”的个数是奇数或偶数。或者说,它是含一个监督元,码重为奇数或偶数的(n,n-1)系统分组码。奇偶监督码又分为奇监督码和偶监督码。 An-1 An-2 A1 A0 An-1 Ө An-2 Ө… Ө A1 Ө A0 =0 偶校验 An-1 Ө An-2 Ө… Ө A1 Ө A0 =1 奇校验 如果以上关系被破坏,则出现错误,因此能检查出奇数个错误,但不能检测偶数个错误。 最小码距为 d0=2 编码效率R=(n-1)/n
水平奇偶监督码和垂直监督码(行列校验)示例 例:4行7列信息组的水平垂直偶校验码。 信息组 校验位 0111001 0 0010101 1 0101011 0 1010101 0 垂直偶校验字符 1010010 奇 0101101 01110010 00101011 01010110 10101010 10100101 for(i=0,fcs=0;i<n;i++) fcs^=send[i]; (1) 可发现某行或某列上奇数个错误。 (2)能检测出所有长度不大于方阵中行数(或列数)的突发错误。
a6 + a5 + a 4+ a 1=0 a6 + a5 + a 4+ a 0=0 1.6.4 线性分组码 1.6.4 线性分组码 (7,4)分组码:设其码字为A=[a6 a5 a4 a3 a2 a1 a0] 前 4 位是信息元,后 3 位是监督元,可用下列线性方程组来描述该分组码,产生监督元。 a6+ a5 + a 4+ a 2=0 a6 + a5 + a 4+ a 1=0 a6 + a5 + a 4+ a 0=0
矩阵形式 H矩阵各行是线性无关的。通过监督矩阵可以知道监督码和信息码的监督关系。
设发送码组A=[an-1,an-2,…,a1,a0] 接收码组B=[bn-1,bn-2,…,b1,b0], 收发码组之差定义为错误图样E, 也称为误差矢量, 则校正子S:
1.6.5 循环冗余检验码 CRC(Cyclic Redundancy Check ) 收发双方约定一个生成多项式g(x) ,发送方在帧的末尾加上校验和,使带校验和的帧的多项式能被g(x)整除。接收方收到后,用多项式除以g(x) ,若有余数,则传输有错。 M(X). X n-k /g(x)=q(X)+r(x )/g(x) M(X) . X n-k + r(x ) M’(X) . X n-k + r’(x ) M’(X) . X n-k /g(x)=q’’(X)+r’’(x )/g(x) 若r’(x ) = r’’(x ) 则认为无错
定理: 在一个(n,k)循环码中,存在一个且只有一个(n-k)次的码多项式 g(x) = xn-k + gn-k-1xn-k-1 + … . g2 x2 +g1 x + 1 满足下列两个条件: ¦此循环码中任一码多项式都是g(x)的倍式; ¦任意一个(n-1)次或(n-1)次以下又是g(x)倍式的多项式必定是此循环码的一个码多项式;
例:设发送码M(x)=111, g(x)=x4+x3+x2+1 M(x)*xn-k=1110000 M(x)*xn-k /g(x)=100+0100/11101 M(x)*xn- +r(x)= 111 0100 100 11101 1110000 11101 0100
CRC生成电路示意 a b c d + a b c d 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 0 0 1 0
CRC程序生成示意 uint crc16r(unsigned char *ptr, unsigned char len) { unsigned char i; while(len--!=0) { for(i=0x01;i!=0;i <<= 1) { if((crc&0x0001)!=0) { crc >>= 1; crc ^= 0x8408;} else crc >>= 1; if((*ptr&i)!=0) crc ^= 0x8408; } ptr++; return(crc);
常用的CRC生成多项式g(x)有: CRC16=x16+x15+x2+1 CRC16=x16+x12+x5+1 (CCITT) CRC32=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1