1.垂直奇偶校验码: 编码原理:
(1)将整个发送的数据块分为定长为m 的n 个组,一般m 为字符位数或位数的倍数,一组称为一个码字。
(2)每组末位按“1”的个数位奇数或者偶数的规律加一个
校验位j
r (
n j ,3,2,1=)
,使得每组包括校验位在内“1”的个数为奇数或偶数。
为偶数的称为偶校验,为奇数的称为奇校
验。
(ij
b 为一个比特位,运算为二进制运算)
校验位计算为: 偶校验 mj j j j b b b r +++= 21n
j ,3,2,1= 奇校验
121++++=mj j j j b b b r n
j ,3,2,1=
举例说明:
每一列代表一个码字:
1
011111001101
偶校验计算的校验位为:0111 奇校验计算的校验位为:1000
校验能力:只能检测每列码字中的奇数个错误,所有偶数个错误全部漏检。
实现方法:用硬件和软件均可,可以边发送边产生冗余位,接收时可以边接收边去掉冗余位。
2.水平奇偶校验码 编码原理:
(1)将整个发送的数据块分为定长为m 的n 个组,一般m 为字符位数或位数的倍数,一组称为一个码字。
(2)将n 个码字排成一个矩阵,对各个码字相应横向位进行奇偶校验。
(校验位的生成与垂直奇偶校验码生成方式一致)。
偶校验 in i i i b b b r +++= 21m i ,3,2,1= 奇校验 121++++=in i i i b b b r m i ,3,2,1=
(3)发送时将所有码字发送完后发送校验位。
举例说明: 奇 偶
每一列代表一个码字:
1
011111001101
01
0 1
10
1
校验能力:可以检测各个码字同一位上的奇数位错,对于长度小于或等于m 的突发错误,由于分布在不同行中,可以检测到。
实现方式:用硬件和软件均可,需要借助存储器。
3.水平垂直奇偶校验
编码原理:同时进行垂直和奇偶校验。
(过程略)
校验能力:冗余度大,具有更强检错能力。
可检验3位以下的全部错误,所有奇数位错,突发长度小于或等于m+1的突发错误以及绝大多数偶数位错。
4、斜奇偶校验
编码原理:在水平垂直奇偶校验码的基础上,按照斜对角线的方向计算出校验位。
校验能力:冗余位更多,编、译码较为复杂,校验能力更强。
正反码:
举例说明:
码长n=10,信息位k=5,校验位r=5,若信息位为11001,校验位为11001,码字为1100111001;若信息位为10001,校验位为01110,码字为1000101110。
纠错规则:
若发送码字1100111001,
接收码字1100111001(传输中无错),
合成码为11001+11001=00000,
接收码信息位有3个1,校验码为00000。
据上表,没有发生错误。
接收码字1000111001
合成码为10001+11001=01000,
接收码信息位有偶数个1,校验码为合成码的反码10111,据上表,信息位第二位出错。
(同学自己举例说明其他情况)。
循环冗余校验码 1、码多项式
如果把一个码字中的各位看作是一个多项式的系数,则长为n 的码字)(0121c c c c C n n --=可以表示为一个多项式:
1
2
2
1
1
)(c x c x c x c x C n n n n ++++=----
该多项式称为码字的码多项式。
如:码字11001的码多项式为:
110011)(3
4
1
2
3
4
++=⋅+⋅+⋅+⋅+⋅=x x
x x x x x C
2、多项式的按模运算
在CRC 中,常需要进行码多项式的运算,运算规则为按模2运算。
若任意的n 次多项式)(x T 被一个k 次多项式)(x k 除,得到商式)(x Q 和余式)(x R (次数必然小余k ),则表示为
)()()()(x R x Q x k x T +=。
3、循环冗余码
长为n 的码,信息位为k 位的码记为(n ,k )码。
若一个码字集合满足以下两个条件:
(1)循环性:码集中的任一个码字向左或右循环一位,得到的新的码字,仍为码集中的码字。
(2)封闭性:码集中任意两个码字之和仍为码集中的码字。
则称此码集为(n ,k )循环码。
例:)(0121c c c c C n n --=是码集中的码字,)(1210c c c c C n -=是码集中的码字,全零码字必然是码集中的码字。
4、循环冗余码的生成多项式
定理1 在循环冗余码(n ,k )中,存在且只有一个(n -k )次的码多项式
1
2
2
2
2
)(g x g x g x g x x G k n k n k
n +++++=-----
满足:
(1)此循环冗余码中任一多项式都是)(x G 的倍式;
(2)任意一个(n -1)次或(n -1)次以下的,又是)(x G 倍
式的多项式必定是此循环码中的一个码多项式。
(生成多项式的寻找有严密的代数背景,略) 5、循环冗余码的编码
一般是已知信息位,根据信息位求冗余位。
信息位为)(0121c c c c K k k --=,码多项式为
1
2
2
1
1
)(c x c x c x c x K k k k k ++++=----
冗余位为)
(021r r r R k n k n ----=,码多项式为
012
21
1)(r x r x
r x
r x R k n k k n k n ++++=-------
码字为)(0210121r r r c c c c T
k n k n k k ------=,码多项式为
)()()(x R x K x x T k n +=- (1)
码字是生成多项式)(x G 的倍式,则
)()()(x Q x G x T = (2) 由(1)(2)两式得
)()(x R x K x k n +-=)()(x Q x G
即 )(x K x k n -=)()()(x R x Q x G +
所以用)(x K x k n -去除以生成多项式)(x G 得到的余式就是码字的校验位。
编码算法:
(1)用k n x -乘以信息位对应的码多项式)(x K ;
(2)用生成多项式)(x G 去除)(x K x k n -,得余式)(x R ; (3)将)(x R 对应的码字加在信息位后发送即可。
6、循环冗余码的译码 (1)检错过程
发送方发送码字)(x T ,设接收方接收码字为)('x T ,根据
)()()(x Q x G x T =
若)('x T =)(x T ,则有
)()()('
x Q x G x T =
即)('x T 除以)(x G 没有余式。
若)('x T <>)(x T ,则)('x T 除以)(x G 有余式,接过收到的码字
出错。
据此译码过程可知出现错误。
注意:有时)('x T <>)(x T ,)('x T 除以)(x G 也没有余式,这种情况说明错误超过该编码的检错能力,每一种码的检错能力与生成多项式选择有关。
(2)纠错过程
对于每一种编码,由其生成多项式可得到码的检错能力在某一个范围内,即该码可检m 位错,纠s 位错。
在这个范围内可得到一个特定的错误模式,当余式)(x R 与这些错误模式存在一一对应关系时,便可以纠错。