循环码(Cyclic Codes)是线性分组码中最核心、最具实用工程价值的代数码类。它不仅继承了线性码的全部优秀代数性质,更具备独特的循环移位不变性,使得复杂的矩阵编码与译码操作能够完全转换为**多项式除法与线性反馈移位寄存器(LFSR)**的超高速硬件实现。
9.3.1 循环码的基本概念
Section titled “9.3.1 循环码的基本概念”1. 严格数学定义
Section titled “1. 严格数学定义”设 mathcalC 为长为 n、信息位长为 k 的二元线性分组码集合。
若对码集合 mathcalC 中的任意码字 c = (cₙ-1, cₙ-2, …, c₁, c₀) ∈ mathcalC,将其各个分量沿右(或沿左)循环移动任意一位后所得到的向量:
c^((1)) = (cₙ-2, cₙ-3, …, c₀, cₙ-1)依然是该集合 mathcalC 中的合法码字,则称该线性分组码为循环码。
由数学归纳法易知,若单次循环移位封闭,则对其进行任意 i 次(0 ≤ i ≤ n-1)循环移位后得到的向量:
c^((i)) = (cₙ-1-i, …, c₀, cₙ-1, …, cₙ-i) ∈ mathcalC均必然属于合法码字集合。

上图揭示了 (7,3) 与 (7,4) 循环码内部的码字循环轨道结构:全零码字自身形成退化的单点独立循环圈;其余非零码字按周期划分为互不相交的循环置换群。
9.3.2 多项式代数描述与模 xⁿ + 1 运算
Section titled “9.3.2 多项式代数描述与模 xⁿ + 1xn+1 运算”1. 码多项式表示
Section titled “1. 码多项式表示”一个长为 n 的码字 c = (cₙ-1, cₙ-2, …, c₁, c₀) 可以一一对应地表示为系数取值于 GF(2) 的一元多项式,称为码多项式(Code Polynomial):
c(x) = cₙ-1 xⁿ-1 + cₙ-2 xⁿ-2 + … + c₁ x + c₀多项式的加法即为对应项系数的模 2 异或相加,乘法则按照普通代数展开后对系数取模 2。
2. 循环移位的多项式同余准则
Section titled “2. 循环移位的多项式同余准则”对于 (n, k) 循环码中的任意码多项式 c(x),其单次循环左移对应的码多项式 c^((1))(x) 严格等于 x · c(x) 对多项式 xⁿ + 1 的模余式:
c^((1))(x) = [x · c(x)] bmod (xⁿ + 1)相应地,进行 i 次循环移位后的码多项式为:
c^((i))(x) = [xⁱ · c(x)] bmod (xⁿ + 1)严格数学证明: 对码多项式乘以 x:
x c(x) = cₙ-1 xⁿ + cₙ-2 xⁿ-1 + … + c₁ x² + c₀ x在二元域上,xⁿ ≡ 1 ±odxⁿ + 1。将其恒等变形为:
x c(x) = cₙ-1(xⁿ + 1) + ( cₙ-2 xⁿ-1 + … + c₀ x + cₙ-1 )等式右端括号内的多项式最高次数为 n-1,其各项系数构成的向量恰好为 (cₙ-2, …, c₀, cₙ-1) = c^((1))。 因此:
[x c(x)] bmod (xⁿ + 1) = c^((1))(x)证毕。
这一结论表明:(n, k) 循环码的全部代数结构,等价于多项式商环 GF(2)[x] / (xⁿ + 1) 中的一个理想(Ideal)。
在 (7, 4) 循环码中,某已知码字为 c = (1, 1, 0, 1, 0, 0, 0),其对应的码多项式为:
c(x) = x⁶ + x⁵ + x³试通过多项式模长除法,计算该码字连续循环左移 3 次后的码多项式 c^((3))(x) 及对应二进制码字。
查看解析与步骤
根据移位同余定理:
x³ c(x) = x³(x⁶ + x⁵ + x³) = x⁹ + x⁸ + x⁶在 GF(2) 上用 x⁷ + 1 除 x⁹ + x⁸ + x⁶ 进行多项式长除法:
x⁹ + x⁸ + x⁶ &= x²(x⁷ + 1) oplus x(x⁷ + 1) oplus (x⁶ oplus x² oplus x) &= (x² oplus x)(x⁷ + 1) oplus (x⁶ oplus x² oplus x)求得余式为:
c^((3))(x) = [x³ c(x)] bmod (x⁷ + 1) = x⁶ + x² + x对应的二进制码字为:
c^((3)) = (1, 0, 0, 0, 1, 1, 0)直接检验原始向量 (1, 1, 0, 1, 0, 0, 0) 向左循环移位 3 位的物理结果,完全一致!
9.3.3 生成多项式与生成矩阵
Section titled “9.3.3 生成多项式与生成矩阵”1. 生成多项式定义与五大根本性质
Section titled “1. 生成多项式定义与五大根本性质”在 (n, k) 循环码全部合法非零码多项式集合 mathcalC(x) 中,除 0 多项式以外次数最低且唯一的首一(Monic)多项式,称为该循环码的生成多项式(Generator Polynomial),记为 g(x)。
生成多项式 g(x) = x^r + gᵣ-1 x^(r-1) + … + g₁ x + 1 具备以下 5 项充要代数性质:
- 常数项必为 1(g₀ = 1): 若 g₀ = 0,则 g(x) = x · g'(x),表明 g(x) 是更低阶多项式 g'(x) 循环移位的结果,与 g(x) 次数最低的定义矛盾;
- 唯一性: 商环中次数为 r 的最低阶码多项式在 GF(2) 上是绝对唯一的;
- 整除倍式性: 循环码中的每一个码多项式 c(x) 都是 g(x) 的倍式;反之,任何次数不超过 n-1 的 g(x) 的倍式必为合法码多项式: c(x) = u(x) g(x)
- 次数严格等于校验位长: 生成多项式 g(x) 的最高次数为: deg g(x) = r = n - k
- 因式分解因子性: g(x) 必然是多项式 xⁿ + 1 的因式: xⁿ + 1 = g(x) h(x) 式中 h(x) 为次数为 k 的监督多项式(Parity Polynomial)。
设计一个码长为 n 的循环码,数学实质完全等价于在 GF(2) 上将二项式 xⁿ + 1 分解为不可约素多项式的乘积。任意选取其中若干个因式的乘积作为 g(x)(设次数为 r),即可构造出一个唯一的 (n, n-r) 循环码!
2. 系统循环码的构成算法
Section titled “2. 系统循环码的构成算法”直接采用 c(x) = u(x) g(x) 编码产生的是非系统码。为了使原始 k 位信息比特无失真地出现在码字的前 k 位(高次项),必须采用多项式除法构造系统循环码:
- 左移腾位:将输入信息多项式 u(x) = uₖ-1 x^(k-1) + … + u₀ 乘以 xⁿ-k,使信息位移至高位阶;
- 除法求余:用生成多项式 g(x) 除 xⁿ-k u(x),得到商式 Q(x) 和余式 r(x): xⁿ-k u(x) = Q(x) g(x) oplus r(x) 余式 r(x) 的最高次数必定小于 n - k(即 deg r(x) ≤ n - k - 1),该余式即为校验多项式;
- 模 2 拼接:利用二元加减等价性,合成完整码多项式: c(x) = xⁿ-k u(x) oplus r(x) = Q(x) g(x) 由于 c(x) 严格为 g(x) 的整倍式,故其必然属于合法循环码字,且高位完整保持原始信息!
已知 (7, 4) 循环汉明码的生成多项式为 g(x) = x³ + x + 1。 输入信息分组为 u = (1, 0, 0, 1),对应多项式 u(x) = x³ + 1。 试求编码后的 (7, 4) 系统循环码字。
查看解析与步骤
1. 信息多项式升阶: n - k = 7 - 4 = 3,升阶多项式为:
x³ u(x) = x³(x³ + 1) = x⁶ + x³2. 模 2 长除法求校验余式: 用 g(x) = x³ + x + 1 除 x⁶ + x³:
x⁶ + x³ &= x³(x³ + x + 1) oplus (x⁴ oplus x³ oplus x³) = x³(x³ + x + 1) oplus x⁴ &= (x³ oplus x)(x³ + x + 1) oplus (x² oplus x)解得商式 Q(x) = x³ + x,余式为:
r(x) = [x³ u(x)] bmod g(x) = x² + x3. 合成系统码多项式:
c(x) = x³ u(x) oplus r(x) = x⁶ + x³ + x² + x展开为 7 维二进制码向量:
c = (underbrace1, 0, 0, 1_(信息位), underbrace1, 1, 0_(校验位))编码过程清晰展现了“前 k 位直通、后 n-k 位填补余式”的系统码标准结构。
9.3.4 循环码的硬件除法编码电路与时序节拍
Section titled “9.3.4 循环码的硬件除法编码电路与时序节拍”系统循环码的核心操作是多项式模 g(x) 求余。在数字逻辑电路中,这一运算由**线性反馈移位寄存器(Linear Feedback Shift Register, LFSR)**以极高的时钟频率流水线完成。

1. 电路拓扑与工作模式
Section titled “1. 电路拓扑与工作模式”以上图 (7, 4) 循环码编码器为例(生成多项式 g(x) = x³ + x + 1):
- 包含 r = n - k = 3 级 D 触发器移存单元(D₀, D₁, D₂);
- 模 2 加法器(XOR)的位置由 g(x) 的非零系数严格决定(在 x¹ 处引入反馈加法器);
- 双刀逻辑控制门(门 1 与门 2):
- 前 k = 4 个时钟节拍(信息发射与除法阶段):门 1 导通、门 2 关断。信息比特流一方面直接输出至信道,另一方面同时注入 LFSR 进行多项式除法迭代;
- 第 4 节拍结束瞬时:4 位信息全部移入,此时移位寄存器 D₂, D₁, D₀ 中锁存的状态恰好就是多项式除法的最终余式系数(即校验比特);
- 后 n - k = 3 个时钟节拍(校验输出阶段):门 1 关断、门 2 导通,切断输入反馈。移位时钟连续驱动 3 拍,将寄存器中存储的校验元依次推入信道,完成一个完整码字的发射。
2. 详细时序推演表(以输入 1001 为例)
Section titled “2. 详细时序推演表(以输入 1001 为例)”| 时钟节拍 | 信息输入 | 寄存器 D₀(x⁰) | 寄存器 D₁(x¹) | 寄存器 D₂(x²) | 输出码元 | 状态说明 |
|---|---|---|---|---|---|---|
| 初始 | — | 0 | 0 | 0 | — | 复位清零 |
| 1 | 1 | 1 | 0 | 0 | 1 | 输出首个信息位 |
| 2 | 0 | 0 | 1 | 0 | 0 | 输出第 2 信息位 |
| 3 | 0 | 0 | 0 | 1 | 0 | 输出第 3 信息位 |
| 4 | 1 | 0 | 1 | 1 | 1 | 4 位信息输出完毕,余式锁定为 110 |
| 5 | — | 0 | 0 | 1 | 1 | 输出校验位 r₂ |
| 6 | — | 0 | 0 | 0 | 1 | 输出校验位 r₁ |
| 7 | — | 0 | 0 | 0 | 0 | 输出校验位 r₀ |
整整 7 个时钟周期,无需微处理器介入,纯硬件自动吐出完整系统码字 1001110!
9.3.5 循环冗余校验(CRC)与工业标准
Section titled “9.3.5 循环冗余校验(CRC)与工业标准”**循环冗余校验(Cyclic Redundancy Check, CRC)**是现代计算机网络(以太网、Wi-Fi、TCP/IP、USB、CAN 总线)中应用最为普及的高速硬件检错编码。
1. CRC 与循环码的辩证关系
Section titled “1. CRC 与循环码的辩证关系”作为检错系统,CRC 核心利用了“合法码多项式必能被生成多项式 g(x) 整除”这一代数特性:
- 接收端用同样的 g(x) 对接收码字 y(x) 进行模 2 除法:若余式为零,判定帧无差错;若余式非零,立即上报 CRC 校验失败并丢弃损坏帧;
- ⚠️ 重要工程差异:作为纯检错码,CRC 并不苛求 g(x) 必须为 xⁿ + 1 的因式。只要给定一个 r 阶生成多项式 g(x),任意长度 k 的数据帧均可后缀 r 位校验元构成 (k+r, k) 分组检错码,其编码与译码硬件结构与循环码完全通用。
(a) 生成多项式为 x⁸ + x⁷ + x⁴ + x³ + x + 1 的 CRC 编码器
(b) 对应的 CRC 硬件检错译码器
2. 国际标准 CRC 生成多项式大全
Section titled “2. 国际标准 CRC 生成多项式大全”| CRC 标准 | 校验位数 r | 标准生成多项式 g(x) | 主要应用领域与协议 |
|---|---|---|---|
| CRC-4 | 4 | x⁴ + x + 1 | 电信 E1 多帧对齐监控 |
| CRC-8 | 8 | x⁸ + x² + x + 1 | ATM 信元头差错控制(HEC)、1-Wire 总线 |
| CRC-16-CCITT | 16 | x¹6 + x¹2 + x⁵ + 1 | X.25、HDLC 帧同步、蓝牙链路层 |
| CRC-16-ANSI | 16 | x¹6 + x¹5 + x² + 1 | USB 令牌包、Modbus 工业总线 |
| CRC-24 | 24 | x²4 + x²3 + x¹4 + x¹2 + x⁸ + 1 | 3GPP LTE / 5G NR 物理层传输块校验 |
| CRC-32 (IEEE 802.3) | 32 | x³2 + x²6 + x²3 + x²2 + x¹6 + x¹2 + x¹1 + x¹0 + x⁸ + x⁷ + x⁵ + x⁴ + x² + x + 1 | 以太网(Ethernet)、Wi-Fi (802.11)、ZIP/PNG 压缩校验 |
| CRC-64-ISO | 64 | x⁶4 + x⁴ + x³ + x + 1 | 高性能分布式文件系统、大型数据库完整性校验 |
3. CRC 的漏检概率理论极限分析
Section titled “3. CRC 的漏检概率理论极限分析”设信道发生非全零错误图样 e(x)。当且仅当错误图样 e(x) 自身恰好能够被生成多项式 g(x) 整除时,接收端除法余数依然为 0,差错将彻底骗过译码器产生不可检测差错(漏检)。
在长为 n = k + r 的空间中:
- 全部可能的非零错误图样总数为 2^(k+r) - 1 个;
- 其中能被 g(x) 整除的非零错误图样恰好有 2^k - 1 个。
因此,在所有可能发生的错误模式中,CRC 的理论宏观漏检比例为:
Pₗeak = frac2^k - 12^(k+r) - 1 ≈ 2⁻r- 对于 CRC-16:漏检率上限仅为 2⁻16 ≈ 1.52 × 10⁻5;
- 对于 CRC-32:漏检率上限急剧降至 2⁻32 ≈ 2.33 × 10⁻10(百亿分之二)!
加上实际物理信道中错误图样多为短突发,而 CRC 对于长度不超过 r 的全部连续突发错误具有 100% 的绝对检出率,因而在工程上被公认为最为坚固、高效的检错屏障。