循环码74Word文件下载.docx
《循环码74Word文件下载.docx》由会员分享,可在线阅读,更多相关《循环码74Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。
以3号码组(0010111)为例,左移循环一位变成6号码组(0101110),依次左移一位构成的状态图如图1.1-2所示。
1001011110010111100100010111010111010111000111001
图3-1(7,4)循环码中的循环圈
可见除全零码组外,不论循环右移或左移,移多少位,其结果均在该循环码组的集合中(全零码组自己构成独立的循环圈)。
3.2码多项式
为了用代数理论研究循环码,可将码组用多项式表示,循环码组中各码元分别为多项式的系数。
长度为n的码组a。
2...a1a0)用码多项式表示则为
a(x)。
an。
1xn。
1。
2xn。
2。
...。
a1x。
a0式中,x的幂次是码元位置的标记。
若把一个码组左移i位后的码组记为,
(3-3)
a(i)。
ian。
i...an。
i。
i)其码多项式为
(3-4)
a(i)(x)。
ixn。
ix。
ia(i)(x)可以根据xia(x)按模xn+1运算得到,即
(3-5)
xia(x)mod(xn。
(3-6)1)或
xia(x)。
q(x)(xn。
1)。
a(i)((3-7)x)
式中,q(x)为xia(x)除以xn+1的商式,而xia(x)等于a(i)(x)被xn+1除得之余式。
以码组0100111为例,若将此码左移两位,则由式(3-7)可得x2(x5+x2+x+1)=q(x)(x7+1)+a
(2)(x)易有其余式为a
(2)(x)=x4+x3+x2+x,对应的码组为0011101,它与直接对码组进行循环左移的结果相同。
3.3生成多项式
(n,k)循环码码组集合中(全“0”码除外)幂次最低的多项式(n-k)阶称为生成多项式g(x)。
它是能整除xn+1且常数项为1的多项式,具有唯一性。
下面证明g(x)唯一性:
[证明]令g(x)。
g0。
g1x。
gr。
1xr。
xr是(n,k)码中一个次数最低的非零码字多项式。
若g(x)不是唯一的,则必然存在另一个次数为r的码字多项式,例如
。
g1。
x。
xrg。
(x)。
g0由于(n,k)是线性的,所以
)。
(g1。
)x。
(gr。
1)xrg(x)。
g。
(g0。
g0也是一个码字多项式,显然若g(x)。
0,则它必是一个次数低于r的非零码字多项式。
这与假设g(x)是次数最低非零码字多项式矛盾,所以g(x)。
0,因此
g(x)。
(x)(3-8)
从而g(x)唯一。
集合中其他码多项式,都是按模(xn+1)运算下g(x)的倍式,即可以由多项式g(x)产生循环码的全部码组。
假设信息码多项式为m(x),则对应的循环码多项式为
a(x)=m(x)g(x)(3-9)
式中,m(x)为次数不大于k-1的多项式,共有2k个(n,k)循环码组。
考查表3-1,其中n-k=4阶的多项式只有编号为2的码组(0011101),所以表中所示(7,4)循环码组的生成多项式g(x)=x4+x3+x2+1,并且该码组集合中的任何码多项式a(x)都可由信息位乘以生成多项式得到
a(x)=(mk-1+mk-2+…+m1+m0)g(x)mod(xn+1)(3-10)
式中,(mk-1mk-2…m1m0)为信息码元。
对于(7,k)循环码,x7+1的因式分解为
x7+1=(x+1)(x3+x+1)(x3+x2+1)(3-11)
由该式可以构成表3-2所示几种(7,k)循环码。
表3-2(7,k)循环码的生成多项式
(7,k)(7,1)(7,3)(7,4)(7,6)
g(x)(x+x+1)(x3+x2+1)(x+1)(x3+x+1)或(x+1)(x3+x2+1)x3+x+1或x3+x2+1x+13从表(3-2)中可以看出,即使n,k均已确定,也可能由多种生成多项式供选择,选用的多项式不同,产生出的循环码组也不同。
3.4生成矩阵
根据各码组集合中生成多项式的唯一性,可以构造生成矩阵g。
由于g(x)的次数为n-k,则g(x),xg(x),…,xk-1g(x)都是码多项式,而且线性无关,因此以这k各多项式对应的码组作为k行就能构成该循环码的生成矩阵,因此循环码的生成矩阵多项式可以写成
xk。
1g(x)。
.。
xg(x)。
(3-12)
以生成多项式g(x)=x4+x3+x2+1构造g(x),相应的矩阵形式为65422。
xg(x)
543
x4。
x3。
x2。
(3-13)
则g为g(x)升幂排列时的g为
1
0。
110100。
111010。
011101。
(3-14)
对式(3-14)作线性变换,整理成典型形式的生成矩阵
1001110。
0100111。
0011101。
(3-15)
若信息码元与式(3-15)相乘,得到的就是系统循环码。
3.5监督多项式与监督矩阵
如前所述,在(n,k)循环码中,由于g(x)能除尽,因此xn+1可分解成g(x)和其他因式的乘积,记为
xn+1=g(x)h(x)(3-16)
即可写成
h(x)=xn+1/g(x)(3-17)
由于g(x)是常数项为1的r次多项式,所以h(x)必为k次多项式。
称h(x)为监督多项式或一致校验多项式,与式(3.18)给出的g(x)相对应,监督矩阵多项式可表示为
xh(x)。
h(x)。
*。
r。
1*
(3-18)
式中,h*(x)式h(x)的逆多项式。
由式(1.1.14)可知,前述生成多项式的g(x)的一致校验多项式为h(x)x3+x2+1,所以其一致校验矩阵(监督矩阵)为
0h(x)。
0101000。
011010。
(3-19)
001001。
3.6循环码的编码及实现利用生成多项式g(x)实现编码:
如上所述,一但循环码的生成多项式g(x)确定时,码就完全确定了。
现在讨论生成多项式g(x)给定以后,如何实现循环码的编码问题。
若已知
gn。
kxn。
k。
g0并设信息元多项式
(3-20)
m(x)。
mk。
1xk。
2xk。
m1x。
m0xn。
k乘以m(x),再加上校验元多项式r(x),这样得到的码字多项式c(x)为
(3-21)
要编码成系统循环码形式,即码字的最左边k位是信息元,其余n-k位是校验元,则要用
c(x)。
xn。
km(x)。
r(x)其中r(x)。
rn。
r1x。
r0
由于循环码属于线性分组码c(x)一定是g(x)的倍式,即有
(3-22)
r(x)。
q(x)g(x)(3-23)c(x)。
(xn。
r(x))modg(x)。
0(3-24)
注意到g(x)为n-k次多项式,而r(x)最多为n-k-1次多项式,必有
km(x)modg(x)(3-25)
即r(x)必是xn-km(x)除以g(x)的余式。
上述过程指出了系统循环码的编码方法:
首先将信息元多项式m(x)乘以xn-k成为xn-km(x),然后将xn-km(x)除以生成多项式g(x)得到余式r(x),该余式就是校验元多项式,从而得到式(3-22)所示的码字多项式
综上所述,系统循环码的编码问题,可以归结为两个多项式的除法运算,即将xn-km(x)除以生成多项式g(x)得到余式r(x)的运算。
首先根据给定的(n,k)值来选定生成多项式g(x)。
即从(xn+1)的因子中选定一个(n-k)次多项式作为g(x)。
所有多项式t(x)都能被g(x)整除。
根据这条原则可以对给定的信息位进行编码。
设m(x)为信息码多项式,其次数小于k。
用xn-k乘m(x),得到的xn-km(x)次数必定小于n。
用g(x)除xn-km(x),得到余式r(x),r(x)的次数必定小于g(x)的次数,即小于(n-k)。
将此余式r(x)加在信息位后作为监督为,即将r(x)和xn-km(x)相加,得到的多项式必定是一个码多项式。
m(x)xn。
k确定余式r(x)。
km(x)/g(x)的余式确定c(x),c(x)=xn。
k图3-2循环码编码过程框
下面以(7,4)码为例演示编码过程
(1)确定g(x)。
由x7+1=(x+1)(x3+x2+1)(x3+x+1)所以g(x)=x3+x2+1或g(x)=x3+x+1;
这里选择g(x)=x3+x2+1
(2)用xn-k乘m(x),该运算实际上是在信息码后附加上(n-k)个“0”,例如,信息码为1100,它写成多项式为m(x)=x3+x2。
当n-k=7-4=3时,xn-km(x)=x6+x5它表示码组1100000。
(3)用g(x)除xn-km(x),得到商q(x)和余式r(x)即[xn-km(x)]/[g(x)]=q(x)+r(x)/g(x)例如[xn-km(x)]/[g(x)]=(x6+x5)/(x3+x2+1)=(x3+1)+(x2+1)/(x3+x2+1)上式是用码多项式表示的运算。
它和下式等效:
1100000/1101=1001+101/1101
(4)编出码组为t(x)=xn-km(x)+r(x)即t(x)=1100000+101=1100101由以上方法可以算出(7,4)码表:
表3-3(7,4)码表
序号12345678输入序列00000001001000110100010101100111输出序列00000000001101001011100110100100011010111001101000111001序号910111213141516输入序列10001001101010111100110111101111输出序列10001101001011101000110111001100101110100011100101111111
根据表3-3所显示的计算结果,可用vb进行编程,流程图如下:
该程序以j为循环变量反复从输入序列中读取4位,然后根据码码表添加后3位,再累加到输出序列。
当输入序列全部读取时即j等于输入序列长度len时,显示输出序列。
当输入序列不能被4整除时,程序不对序列做任何处理,也没有输出序列。
这时可重新输
图3-3查表法编码流程图
j=len。
ylen被4整除。
开始在text1输入序列点击编码触发单击事件计算text1序列长度lenn序列长度len对4求余y初始化循环变量j读入从j开始的4位序列读入序列后查表加3位,累加到输出nj+4输出到text2结束入序列,保证其能被4整除。
图3-4输入“0011”时程序运行结果
图3-5输入“10100011”时程序运行结果
当输入序列位“0011”和“10100011”时的结果如图3-4和图3-5所示,经查表验证结果正确。
说明此程序可以正确将输入序列分段并添加后三位,最后显示输出序列。
程序符合设计要求。
3.7循环码的译码及实现
设发送的码字为c(x),接收到的码字为r(x),如果c(x)=r(x),则说明收到的码字正确;
如果c(x)≠r(x),则说明收到的码字出现错误,则有:
e(x)(3-26)
公式⑴中的e(x)称为错误图样。
当e(x)=0时说明没有错误,用g(x)去除r(x),得
r(x)c(x)。
e(x)c(x)e(x)。
==(3-27)
g(x)g(x)g(x)g(x)因为c(x)是由g(x)生成的,故c(x)必能为g(x)除尽,显然r(x)与e(x)同余式(r(x)≡e(x)modg(x)),以g(x)除e(x)所得余式称为伴随式s(x)。
由公式⑴可知,r(x)ht=(c(x)+e(x))h(x)=e(x)h(x)。
若e(x)=0,则e(x)h(x)=0;
若e(x)≠0,则e(x)h(x)≠0。
这说明,r(x)ht仅与错误图样有关,而与发送的码字无关,由此可以确定错误图样表。
由于g(x)的次数为n-k次,g(x)除e(x)后得到余式(即伴随式s(x))的次数为n-k-1次,
表3-4伴随式与错误图像关系表
错误图样错误图样码字1000000伴随式s(x)2伴随式100e6(x)。
x6e5(x)。
x5x1100100000x2。
xx2。
x+1e4(x)。
x4e3(x)。
x300100001110001000000010000000100000001x。
1x。
1x12011e2(x)。
x2101e1(x)。
x1010e0(x)。
x0001e(x)。
000000000000故s(x)共有2n。
k个表达式,每个可能的表达式对应一个错误格式,可以知道(7,4)循环码的s(x)共有27。
4=8个表达式,可以根据错误图样表来纠正(7,4)循环码的一位错误。
其伴随式如表3-4所示。
综上所述循环码的译码可按以下三个步骤进行:
1.接收到的y(x)计算伴随式式s(x);
2.根据伴随式s(x)找到对应的估值错误图样e(x);
3.计算c=y(x)+e(x),得到估值码字c(x)。
若c(x)=c(x),则译码正确,否则,若。
c(x)≠c(x),则译码错误。
由上述方法可计算出(7,4)码译码码表:
图3-5(7,4)码译码表
序号12345678910111213141516输入序列0000000及其1位出错码组0001101及其1位出错码组0010111及其1位出错码组0011010及其1位出错码组0100011及其1位出错码组0101110及其1位出错码组0110100及其1位出错码组0111001及其1位出错码组1000110及其1位出错码组1001011及其1位出错码组1010001及其1位出错码组1011100及其1位出错码组1100101及其1位出错码组1101000及其1位出错码组1110010及其1位出错码组1111111及其1位出错码组输出序列0000000100100011010001010110011110001001101010111100110111101111
开始在text1输入序列点击译码触发单击事件计算text1序列长度lenn
序列长度len对7求余len被7整除。
y初始化循环变量j读入从j开始的7位序列读入序列后查表求对应的4位码,累加到输出n
j+7j=len。
y输出到text2结束图3-6查表法译码流程图
该程序以j为循环变量反复从输入序列中读取7位,然后根据码码表去掉后3位,再累加到输出序列。
当输入序列不能被7整除时,程序不对序列做任何处理,也没有输出序列。
这时可重新输入序列,保证其能被7整除。
图3-7输入“0011110”时译码结果
图3-8输入“10100100011110”译码结果
当输入序列位“0011110”和“10100100011110”时的结果如图3-7和图3-8所示,经查表验证结果正确。
说明此程序可以正确将输入序列分段并去除后三位,最后显示输出序列。
图3-9“0000000”a0位出错时输出结果
图3-10“0011110”a3位出错时输出结果
当输入序列位“0000000”a0位出错和“0011110”a3位出错时的结果如图3-9和图3-10所示,经查表验证结果正确。
说明此程序可以正确纠正一位错码,并显示输出序列。
图3-11“0000000”a2,a3位出错时输出结果
当输入序列位“0000000”a2,a3位出错时的结果如图3-11所示,“0000000”a2,a3位出错会被认为是“0001101”a0位出错进行译码,所以该程序不能纠正和检测出两位错码。
该结果验证了式(2-5)的正确性。
第4章总结
本文第1章介绍了纠错码的大致分类,回顾了纠错码的发展。
按照对信息元处理方法的不同,分为分组码与卷积码两大类;
根据校验元与信息元之间的关系分为线性码与非线性码;
按照所纠错误的类型可分为纠随机错误的码、纠突发错误的码以及既能纠随机错误又能纠突发错误的码;
按照每个码元取值来分,可分为二进制码与q进制码(q=pm,p为素数,m为正整数);
按照对每个信息元保护能力是否相等可分为等保护纠错码与不等保护(uep)纠错码。
第2章简单介绍了线性分组码原理和编码译码方式。
对于分组码一般用符号(n,k)表示,其中n是码组的总位数,又成为码组的长度(码长),k是码组中信息码元的数目,n–k=r为码组中的监督码元数目。
分组码(n,k)当信息码元与监督码元之间的关系为线性关系时,这种分组码就称为线性分组码。
对于长度为n的二进制线性分组码,它有m=
种可能的码组
,从种码组中,可以选择
个码组(k