)
循环码是线性分组码的一个重要子类。一个 (n,k)(n,k) 线性分组码称为循环码当且仅当它的任意一个码字的循环移位仍是该码的码字。循环码之所以重要是因为它具有代数结构——可以用多项式来描述编码和译码都可以用简单的移位寄存器电路实现。1.1 码字的多项式表示将码字 c(c0,c1,…,cn−1)c(c0,c1,…,cn−1) 写成多项式c(x)c0c1xc2x2⋯cn−1xn−1c(x)c0c1xc2x2⋯cn−1xn−1其中 ci∈GF(2)ci∈GF(2)加法为模 2即 XOR。1.2 生成多项式(n,k)(n,k) 循环码的所有码字多项式都是某个 n−kn−k 次多项式 g(x)g(x) 的倍式g(x)g0g1x⋯gn−kxn−kg(x)g0g1x⋯gn−kxn−k其中 g01g01且 g(x)g(x) 整除 xn−1xn−1在 GF(2)GF(2) 上即为 xn1xn1。例对于 (7,4)(7,4) 循环码生成多项式 g(x)1xx3g(x)1xx3。验证(1xx3)(1xx2x4)1x7(1xx3)(1xx2x4)1x7即 g(x)g(x) 整除 x71x71。✓二、系统循环码编码2.1 编码步骤系统码要求信息位出现在码字的前 kk 位。编码过程将 kk 位信息多项式 m(x)m(x) 乘以 xn−kxn−k左移 n−kn−k 位空出校验位除以 g(x)g(x) 求余式 r(x)m(x)⋅xn−k g(x)r(x)m(x)⋅xn−kmodg(x)码字 c(x)m(x)⋅xn−kr(x)c(x)m(x)⋅xn−kr(x)写成矩阵形式cm⋅Gcm⋅G其中系统生成矩阵 G[Ik∣P]G[Ik∣P]。2.2 P 矩阵的构造PP 的第 ii 行i1,…,ki1,…,k是 xn−ki−1 g(x)xn−ki−1modg(x) 的系数。以 (7,4) 码为例推导n7,k4,n−k3n7,k4,n−k3g(x)1xx3g(x)1xx3。被除式模 g(x)g(x) 的余式P 矩阵行x3x31x1x[1,1,0][1,1,0]x4x4xx2xx2[0,1,1][0,1,1]x5x51xx21xx2[1,1,1][1,1,1]x6x61x21x2[1,0,1][1,0,1]得到G7,4[I4∣P][1000110010001100101110001101]G7,4[I4∣P]1000010000100001101111100111校验矩阵 H[P⊤∣In−k]H[P⊤∣In−k]H7,4[101110011100100111001]H7,4110011111101100010001满足 GH⊤0GH⊤0模 2。三、伴随式译码3.1 原理设发送码字为 cc接收向量为 rcerceee 为错误图样。伴随式定义为sr⋅H⊤sr⋅H⊤由于 c⋅H⊤0c⋅H⊤0所以se⋅H⊤se⋅H⊤伴随式仅依赖于错误图样与发送码字无关3.2 译码流程计算 srH⊤srH⊤模 2若 s0s0 ⇒ 认为无错直接输出前 kk 位若 s≠0s0 ⇒ 查表找对应的错误图样 e^e^纠正c^r⊕e^c^r⊕e^输出前 kk 位作为译码结果3.3 (7,4) 循环码的伴随式表(7,4)(7,4) 码有 n−k3n−k3 个校验位伴随式空间大小为 238238。恰好对应 7 种单比特错误 1 种无错情况伴随式 s错误图样 e错误位置[0 0 0][0 0 0 0 0 0 0]无错误[1 1 0][1 0 0 0 0 0 0]第 1 位[0 1 1][0 1 0 0 0 0 0]第 2 位[1 1 1][0 0 1 0 0 0 0]第 3 位[1 0 1][0 0 0 1 0 0 0]第 4 位[1 0 0][0 0 0 0 1 0 0]第 5 位[0 1 0][0 0 0 0 0 1 0]第 6 位[0 0 1][0 0 0 0 0 0 1]第 7 位表是完备的——每个单比特错误有唯一伴随式译码器不会混淆。3.4 纠错与检错能力(7,4)(7,4) 循环码的最小汉明距离 dmin3dmin3因此可纠正所有 t⌊(3−1)/2⌋1t⌊(3−1)/2⌋1 个错误可检测所有 dmin−12dmin−12 个错误当发生双比特错误时伴随式与某个单比特错误的伴随式相同碰撞译码器会错误地纠正到错误的码字引入额外错误。这是 dmin3dmin3 的固有限制。四、仿真设置参数取值码型(7,4) 和 (15,11) 循环码生成多项式g7(x)1xx3g7(x)1xx3g15(x)1xx4g15(x)1xx4调制BPSK0↦1, 1↦−10↦1,1↦−1信道AWGN译码硬判决 伴随式查表Eb/N0 范围0 ~ 9 dB仿真终止累计 200 比特错误或 200 万帧五、仿真结果5.1 单比特纠错验证发送消息 m[1 0 1 1]m[1011]编码得 c[1 0 1 1 1 0 0]c[1011100]。在第 6 位注入错误翻转接收 r[1 0 1 1 1 1 0]r[1011110]。计算伴随式srH⊤[0 1 0]srH⊤[010]查表得e^[0 0 0 0 0 1 0]e^[0000010]第 6 位纠正c^r⊕e^[1 0 1 1 1 0 0]cc^r⊕e^[1011100]c译码m^[1 0 1 1]mm^[1011]m ✓遍历全部 7 个比特位置的错误均正确纠正。5.2 双比特错误局限性在码字第 3、5 位同时注入错误。伴随式 s[0 1 1]s[011]查表对应第 2 位的单比特错误。译码器将第 2 位翻转结果产生3 个比特错误——反而更差了。这验证了 dmin3dmin3 的码只能纠单错不能纠双错。5.3 BER 性能Eb/N0 (dB)无编码 BER(7,4) BER(15,11) BER07.86×10−27.86×10−21.13×10−11.13×10−11.24×10−11.24×10−132.29×10−22.29×10−22.73×10−22.73×10−23.22×10−23.22×10−255.95×10−35.95×10−37.19×10−37.19×10−34.01×10−34.01×10−377.73×10−47.73×10−45.82×10−45.82×10−42.11×10−42.11×10−493.36×10−53.36×10−51.57×10−51.57×10−52.36×10−62.36×10−6编码增益在 BER 10−410−4 处(7,4) 循环码0.31 dB(15,11) 循环码1.01 dB5.4 结果分析低 SNR 阈值效应0~4 dB 时编码 BER 反而高于无编码。原因是冗余校验位消耗了发射能量——每编码比特分到的能量只有 EcR⋅EbEcR⋅Eb码率越低这个效应越明显。高 SNR 编码增益SNR ≥ 5 dB 后纠错能力开始超过能量损失编码增益逐渐显现。码率的影响(15,11) 以 0.73 的码率获得了比 (7,4)码率 0.57更好的性能。两者 dmindmin 相同但 (15,11) 的冗余开销更小。这是信息论的一个核心思想更长、更高码率的码通常更高效。硬判决的局限本文使用硬判决译码先硬判再译码编码增益仅约 1 dB。若采用软判决如基于对数似然比的译码可额外获得约 2 dB 增益。