【笔记整理】通信原理第九章复习——循环码

9.5 循环码

9.5.1 循环码的概念

循环性是指任意码组循环移位后仍然是该编码中的一个码组
多项式表示法
一般情况
(an−1an−2...a0)(a_{n-1}a_{n-2}...a_0)(an1an2...a0)是循环码的一个码组,则循环移位后的码组:
(an−2an−3...a0an−1)(a_{n-2}a_{n-3}...a_0a_{n-1})(an2an3...a0an1)
(an−3an−4...an−1an−2)(a_{n-3}a_{n-4}...a_{n-1}a_{n-2})(an3an4...an1an2)
… …
(a0an−1...a2a1)(a_{0}a_{n-1}...a_2a_1)(a0an1...a2a1)仍然是该编码中的码组

  • 多项式表示法
    一个长度为nnn的码组(an−1an−2...a0)(a_{n-1}a_{n-2}...a_0)(an1an2...a0)可以表示成
    T(x)=an−1xn−1+an−2xn−2+...+a1x+a0T(x)=a_{n-1}x^{n-1}+a_{n-2}x^{n-2}+...+a_1x+a_0T(x)=an1xn1+an2xn2+...+a1x+a0
    xxx的值没有任何意义,仅用它的幂代表 码元的位置
    【例】码组1100101可以表示为
    T(x)=1⋅x6+1⋅x5+0⋅x4+0⋅x3+1⋅x2+0⋅x+1=x6+x5+x2+1T(x)=1 \cdot x^6+1 \cdot x^5+0 \cdot x^4 +0 \cdot x^3 +1 \cdot x^2 +0 \cdot x +1= x^6 + x^5 + x^2 +1T(x)=1x6+1x5+0x4+0x3+1x2+0x+1=x6+x5+x2+1

9.5.2 循环码的运算

9.5.2.1 整数的按模运算

在整数运算中,有模nnn运算。
若一个整数mmm可以表示为
mn=Q+pn\frac{m}{n}=Q+\frac{p}{n}nm=Q+np
式中,QQQ为整数,则在模nnn运算下,有
m≡p(模n)m \equiv p (\text{模}n)mp(n)
在模nnn运算下,一个整数mmm等于它被nnn除得所得的余数

9.5.2.2 码多项式的按模运算

若任意一个多项式F(x)F(x)F(x)被一个nnn次多项式N(x)N(x)N(x)除,得到商式Q(x)Q(x)Q(x)和一个次数小于nnn的余式R(x)R(x)R(x),即
F(x)=N(x)Q(x)+R(x)F(x)=N(x)Q(x)+R(x)F(x)=N(x)Q(x)+R(x)
则在按模N(x)N(x)N(x)运算下,有
F(x)≡R(x)(模N(x))F(x) \equiv R(x) (\text{模}N(x))F(x)R(x)(N(x))
【例】x3x^3x3(x3+1)(x^3+1)(x3+1)除,得到余项即
x3≡1(模(x3+1))x^3 \equiv1(\text{模}(x^3+1))x31((x3+1))
【例】x4+x2+1≡x2+x+1(模(x3+1))x^4+x^2+1 \equiv x^2+x+1(\text{模}(x^3+1))x4+x2+1x2+x+1((x3+1))

9.5.2.3 循环码的数学表示法

【定理】在循环码中,设T(x)T(x)T(x)是一个长度为nnn的码组,若
xi⋅T(x)≡T’(x)x^i \cdot T(x) \equiv T’(x)xiT(x)T(x)
T’(x)T’(x)T(x)也是该编码中的一个码组

【例】一循环码为1100101,即
T(x)=x6+x5+x2+1T(x)=x^6+x^5+x^2+1T(x)=x6+x5+x2+1
若给定i=3i=3i=3,则有
x3⋅T(x)=x9+x8+x5+x3≡x5+x3+x2+x(模(x7+1))x^3 \cdot T(x)=x^9+x^8+x^5+x^3 \equiv x^5+x^3+x^2+x(\text{模}(x^7+1))x3T(x)=x9+x8+x5+x3x5+x3+x2+x((x7+1))
上式对应的码组为0101110,它正是T(x)T(x)T(x)向左移3位的结果
【结论】一个长为nnn的循环码必定为按(xn+1)(x^n+1)(xn+1)运算的一个余式

9.5.2.4 循环码的生成

有了生成矩阵GGG,就可以由kkk个信息位得出整个码组:
【例】A=[a6a5a4a3a2a1a0]=[a6a5a4a3]GA=[a_6a_5a_4a_3a_2a_1a_0]=[a_6a_5a_4a_3]GA=[a6a5a4a3a2a1a0]=[a6a5a4a3]G
G=[IkQ]=[1000∣1110100∣1100010∣1010001∣011] G= [I_kQ]= \begin{bmatrix} 1&0&0&0&|&1&1&1\\ 0&1&0&0&|&1&1&0\\ 0&0&1&0&|&1&0&1\\ 0&0&0&1&|&0&1&1 \end{bmatrix} G=[IkQ]=1000010000100001111011011011
生成矩阵GGG的每一行都是一个码组

  • 若能找到kkk个已知码组,就能构成矩阵GGG。如前所述,这kkk个已知码组必须是线性不相关的

  • 在循环码中,一个(n,k)(n,k)(n,k)码有2k2^k2k个不同的码组。若用g(x)g(x)g(x)表示其中前(k−1)(k-1)(k1)位皆为“0”的码组,则g(x),xg(x),x2g(x),...,xk−1g(x)g(x),xg(x),x^2g(x),...,x^{k-1}g(x)g(x),xg(x),x2g(x),...,xk1g(x)都是码组,而且这kkk个码组是线性无关的。因此它们可以用来构成此循环码的生成矩阵GGG

  • 在循环码中除全“0”码组外,再没有连续kkk均为“0”的码组,即连0的长度最多只能有k−1k-1k1。否则,在经过若干次循环移位后将得到kkk位信息位全“0”,但监督位不全位“0”的一个码组。这在线性码中显然是不可能的

  • g(x)g(x)g(x)必须是一个常数项不为“0”(n−k)(n-k)(nk)次多项式,而且这个g(x)g(x)g(x)还是这种(n,k)(n,k)(n,k)码中次数为(n−k)(n-k)(nk)的惟一一个多项式

    • 因为如果有两个,则由码的封闭性,把这两个相加也应该是一个码组,且此码组多项式的次数将小于(n−k)(n-k)(nk),即连续“0”的个数多于(k−1)(k-1)(k1)。显然,这时与前面的结论矛盾的
  • 称这唯一的(n−k)(n-k)(nk)次多项式g(x)g(x)g(x)码的生成多项式

  • 一旦确定了g(x)g(x)g(x),则整个(n,k)(n,k)(n,k)循环码就被确定

  • 循环码的生成矩阵GGG可以写成
    G(x)=[xk−1g(x)xk−2g(x)...xg(x)g(x)]G(x)=\begin{bmatrix}x^{k-1}g(x)\\x^{k-2}g(x)\\...\\xg(x)\\g(x)\end{bmatrix} G(x)=xk1g(x)xk2g(x)...xg(x)g(x)

  • g(x)g(x)g(x)为码的生成多项式

    • 常数项不为“0”(n−k)=r(n-k)=r(nk)=r次多项式

    • 前面(k−1)(k-1)(k1)个“0”
      【例】一个(7,3)(7,3)(7,3)循环码,n=7,k=3,n−k=4n=7,k=3,n-k=4n=7,k=3,nk=4,其中唯一的一个(n−k)=4(n-k)=4(nk)=4次码多项式代表的码组式第二码组0010111,与它对应的码多项式,即生成多项式,为
      g(x)=x4+x2+x+1g(x)=x^4+x^2+x+1g(x)=x4+x2+x+1
      将此g(x)g(x)g(x)代入矩阵,得到
      G(x)=[x2g(x)xg(x)g(x)]G(x)=\begin{bmatrix} x^2g(x)\\xg(x)\\g(x)\end{bmatrix}G(x)=x2g(x)xg(x)g(x)G=[101110001011100010111]G=\begin{bmatrix} 1011100\\0101110\\0010111\end{bmatrix}G=101110001011100010111
      循环码的生成多项式对应码组的重量就是该循环码的d0d_0d0
      若不符合G=[IkQ]G=[I_kQ]G=[IkQ]形式,则不是典型生成矩阵。需要经过线性变换,得到典型阵

  • 循环码组的多项式表示时T(x)T(x)T(x)
    T(x)=[a6a5a4]G(x)=[a6a5a4][x2g(x)xg(x)g(x)]=a6x2g(x)+a5xg(x)+a4g(x)T(x)=[a_6a_5a_4]G(x)=[a_6a_5a_4] \begin{bmatrix} x^2g(x)\\ xg(x)\\ g(x) \end{bmatrix} =a_6x^2g(x)+a_5xg(x)+a_4g(x)T(x)=[a6a5a4]G(x)=[a6a5a4]x2g(x)xg(x)g(x)=a6x2g(x)+a5xg(x)+a4g(x)
    所有码多项式T(x)T(x)T(x)都能够被g(x)g(x)g(x)整除,而且在任意一个次数不大于(k−1)(k-1)(k1)的多项式乘g(x)g(x)g(x)都是码多项式

9.2.5.5 寻求码生成多项式

因为任意一个循环码T(x)T(x)T(x)都是g(x)g(x)g(x)的倍式,故它可以写成
T(x)=h(x)⋅g(x)T(x)=h(x) \cdot g(x)T(x)=h(x)g(x)
而生成多项式g(x)g(x)g(x)本身也是一个码组,即有
T’(x)=g(x)T’(x)=g(x)T(x)=g(x)
由于码组T’(x)T’(x)T(x)是一个(n−k)(n-k)(nk)次多项式,故xkT’(x)x^kT’(x)xkT(x)是一个nnn次多项式。由
xi⋅T(x)≡T’(s)x^i \cdot T(x) \equiv T’(s)xiT(x)T(s)
可知,xkT’(x)x^kT’(x)xkT(x)在模xn+1x^n+1xn+1运算下也是一个码组,所以有
xkT’(x)xn+1=Q(x)+T(x)xn+1\frac{x^kT’(x)}{x^n+1}=Q(x)+\frac{T(x)}{x^n+1}xn+1xkT(x)=Q(x)+xn+1T(x)
上式左端分子和分母都是nnn次多项式,故相除的商Q(x)=1Q(x)=1Q(x)=1。因此可以写成
xkT’(x)=(xn+1)+T(x)x^kT’(x)=(x^n+1)+T(x)xkT(x)=(xn+1)+T(x)
T(x)=h(x)⋅g(x)T(x)=h(x) \cdot g(x)T(x)=h(x)g(x)T’(x)=g(x)T’(x)=g(x)T(x)=g(x)代入得到
xn+1=g(x)[xk+h(x)]x^n+1=g(x)[x^k+h(x)]xn+1=g(x)[xk+h(x)]
生成多项式g(x)g(x)g(x)应该是(xn+1)(x^n+1)(xn+1)的一个因子

9.5.3 循环码的编码方法

  • 根据给定的(n,k)(n,k)(n,k)值选定生成多项式g(x)g(x)g(x),即从(xn+1)(x^n+1)(xn+1)的因式中选一(n−k)(n-k)(nk)次多项式作为g(x)g(x)g(x)
  • 设待编码的kkk位信息多项式为m(x)m(x)m(x),用xn−kx^{n-k}xnkm(x)m(x)m(x):这一运算实际上是在信息码后附加上(n−k)(n-k)(nk)个”0”
  • g(x)g(x)g(x)xn−km(k)x_{n-k}m(k)xnkm(k),得到商Q(x)Q(x)Q(x)和余式r(x)r(x)r(x),既有
    xn−km(x)g(x)=Q(x)+r(x)g(x)\frac{x_{n-k}m(x)}{g(x)}=Q(x)+\frac{r(x)}{g(x)}g(x)xnkm(x)=Q(x)+g(x)r(x)
    【例】信息码为110,若选定g(x)=x4+x2+x+1g(x)=x^4+x^2+x+1g(x)=x4+x2+x+1,则有(多项式长除)
    多项式为m(x)=x2+xm(x)=x^2+xm(x)=x2+x。当n−k=7−3=4n-k=7-3=4nk=73=4时,xn−km(x)=x4(x2+x)=x6+x5x_{n-k}m(x)=x^4(x^2+x)=x^6+x^5xnkm(x)=x4(x2+x)=x6+x5,它表示码组1100000
    xn−km(x)g(x)=x6+x5x4+x2+x+1=(x2+x+1+x2+1x4+x2+x+1)\frac{x^{n-k}m(x)}{g(x)}=\frac{x^6+x^5}{x^4+x^2+x+1}=(x^2+x+1+\frac{x^2+1}{x^4+x^2+x+1})g(x)xnkm(x)=x4+x2+x+1x6+x5=(x2+x+1+x4+x2+x+1x2+1)
    等效:
    110000010111=111+10110111\frac{1100000}{10111}=111+\frac{101}{10111}101111100000=111+10111101
    整理得
    Q(x)g(x)=xn−km(x)+r(x)=T(x)Q(x)g(x)=x^{n-k}m(x)+r(x)=T(x)Q(x)g(x)=xnkm(x)+r(x)=T(x)
    T(x)=xn−km(x)+r(x)=1100000+101=1100101T(x)=x^{n-k}m(x)+r(x)=1100000+101=1100101T(x)=xnkm(x)+r(x)=1100000+101=1100101
  • 电路:(7,4)(7,4)(7,4)码的编码器包含四级移存器,分别用aaabbbcccddd表示,一个双刀双掷开关SSS。当信息位输入时,开关向下,输入信码一方面送入除法器进行运算,另一方面直接输出。输入kkk为信息全部进入除法器后,开关转向上,此时输出端接到移存器,将移存器中存储的除法余项依次取出,同时切断反馈线,并从左到右逐次清零

9.5.4 循环码的解码方法

  • 在检错时:当接受码组没有错码时,接收码组R(x)R(x)R(x)必定能被g(x)g(x)g(x)整除即
    R(x)g(x)=Q(x)+r(x)g(x)\frac{R(x)}{g(x)}=Q(x)+\frac{r(x)}{g(x)}g(x)R(x)=Q(x)+g(x)r(x)
    中余项r(x)r(x)r(x)应为零;否则,有误码
  • 在纠错时:
    • 用生成多项式g(x)g(x)g(x)除接收码组R(x)R(x)R(x),得出余式r(x)r(x)r(x)
    • 按照余式r(x)r(x)r(x),用查表的方法或计算方法得出错误图样E(x)E(x)E(x)
    • R(x)R(x)R(x)中减去E(x)E(x)E(x),便得到已纠正错码的原发送码组T(x)T(x)T(x)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值