分类: 软件 |
在纠错编码代数中,把以二进制数字表示的一个数据系列看成一个多项式。例如,二进制数字序列10101111,用多项式可以表示成:
http://i-math.sysu.edu.cn/Multimedia/multi/img/Image370.gif
=http://i-math.sysu.edu.cn/Multimedia/multi/img/Image371.gif
式中的http://i-math.sysu.edu.cn/Multimedia/multi/img/Image374.gif称为信息代码多项式。
在模2多项式代数运算中定义的运算规则有:
例如,模2多项式的加法和减法:
从这两个例子中可以看到,对于模2运算来说,代码多项式的加法和减法运算所得的结果相同。所以在做代码多项式的减法时,可用做加法来代替做减法。
代码多项式的除法可按长除法做。例如:
http://i-math.sysu.edu.cn/Multimedia/multi/img/Image377.gif
如果一个k位的二进制信息代码多项式为http://i-math.sysu.edu.cn/Multimedia/multi/img/Image379.gif,如图13-01所示。
http://i-math.sysu.edu.cn/Multimedia/multi/img/Image380.gif图13-01 信息代码结构
如果用一个校验码生成多项式http://i-math.sysu.edu.cn/Multimedia/multi/img/Image384.gif,则可写成
因为模2多项式的加法和减法运算结果相同,所以又可把上式写成:
http://i-math.sysu.edu.cn/Multimedia/multi/img/Image387.gif
http://i-math.sysu.edu.cn/Multimedia/multi/img/Image390.gif除尽的,即它的余项为0。
例如,CD盘中的q通道和软磁盘存储器中使用的CRC校验码生成多项式是
http://i-math.sysu.edu.cn/Multimedia/multi/img/Image391.gif
若用二进制表示,则为
http://i-math.sysu.edu.cn/Multimedia/multi/img/Image392.gif=100010000000100001(B)
=11021(H)
假定要写到盘上的信息代码http://i-math.sysu.edu.cn/Multimedia/multi/img/Image393.gif为
http://i-math.sysu.edu.cn/Multimedia/multi/img/Image393.gif=4D6F746F (H)
由于增加了2个字节共16位的校验码,所以信息代码变成http://i-math.sysu.edu.cn/Multimedia/multi/img/Image394.gif: 4D6F746F0000(H)。 CRC检验码计算如下:
http://i-math.sysu.edu.cn/Multimedia/multi/img/Image395.gif
两数相除的结果,其商可不必关心,其余数为B994(H)就是CRC校验码。把信息代码写到盘上时,将原来的信息代码和CRC码一起写到盘上。在这个例子中,写到盘上的信息代码和CRC码是4D6F746F B994,
4D6F746F |
B994 |
信息代码 |
CRC码 |
这个码是能被11021(H)除尽的。
从盘上把这块数据读出时,用同样的CRC码生成多项式去除这块数据,相除后得到的两种可能结果是:①余数为0,表示读出没有出现错误;②余数不为0,表示读出有错。
CD-ROM中也采用了相同的CRC检错。CD-ROM扇区方式01中,有一个4字节共32位的EDC字域,它就是用来存放CRC码。不过,CD-ROM采用的CRC校验码生成多项式与软磁盘采用的生成多项式不同,它是一个32阶的多项式,
http://i-math.sysu.edu.cn/Multimedia/multi/img/Image396.gif
计算CRC码时用的数据块是从扇区的开头到用户数据区结束为止的数据字节,即字节0~2063共2064个字节。在EDC中存放的CRC码的次序如下:
EDC: |
x24-x31 |
x16-x23 |
x8-x15 |
x0-x7 |
字节号: |
2064 |
2065 |
2066 |
2067 |