3. 卷积码(Convolutional Codes)
卷积码是一类具有“记忆性”的差错控制编码,广泛应用于卫星通信、移动通信(如GSM、4G/5G)、深空通信等领域。与分组码不同,卷积码的输出不仅取决于当前输入的信息位,还依赖于前若干个输入位。
一、卷积码的基本概念
1. 卷积码的产生
- 卷积码通过移位寄存器和模2加法器实现。
- 输入信息流连续进入编码器,每输入 $ k $ 位,输出 $ n $ 位编码符号。
- 编码过程类似于“滑动窗口”,每个输出是当前及过去若干输入的线性组合。
✅ 类似数字信号处理中的卷积运算 → 故称“卷积码”
2. 参数表示:$ (n, k, K) $
- $ k $:每次输入的比特数(通常为1)
- $ n $:每次输出的比特数
- $ K $:约束长度(Constraint Length),表示编码器中寄存器级数(记忆深度)
📌 实际中常取 $ k=1 $,则编码效率为 $ R = k/n = 1/n $
⚠️ 注意:有些文献将 $ K $ 定义为总记忆比特数(即寄存器级数),也有的定义为 $ K = m + 1 $,其中 $ m $ 是最大延迟。
3. 编码效率(Code Rate)
R=kn
R = \frac{k}{n}
R=nk
常见码率有 $ 1/2, 1/3, 2/3, 3/4 $ 等
- 码率越低,冗余越多,纠错能力越强,但传输效率下降
二、卷积码的解析表示
1. 生成矩阵(Generator Matrix)
- 卷积码也可用无限维的生成矩阵 $ \mathbf{G} $ 表示:
c=u⋅G \mathbf{c} = \mathbf{u} \cdot \mathbf{G} c=u⋅G - 但由于其“无限长”特性,实际使用较少,主要用于理论分析。
2. 生成多项式(Generator Polynomials)
最常用的解析方式!
- 每个输出支路对应一个生成多项式 $ g^{(i)}(x) $
- 多项式系数表示该支路是否连接到某一级寄存器
📌 示例:一个 $ (2,1,3) $ 卷积码,若两个输出支路连接关系为:
- 输出1:连接第1级和第3级 → $ g^{(1)}(x) = x^2 + 1 $
- 输出2:连接第1级和第2级 → $ g^{(2)}(x) = x^2 + x $
则可记作:$ G = [g^{(1)}, g^{(2)}] = [1 + x^2, x + x^2] $ 或以八进制表示为 G = [7, 5]
✅ 接收端可根据这些多项式构建译码器
三、卷积码的图解表示
为了直观理解卷积码的行为,常用以下三种图形工具:
1. 状态图(State Diagram)
- 状态由移位寄存器的内容决定(共 $ 2^{K-1} $ 个状态)
- 每个状态转移代表一次输入(0或1)引起的变换
- 边上标注输出(如“00”、“11”)
📌 适用于小 $ K $ 的情况,展示所有可能的状态转移路径
2. 树状图(Tree Diagram)
- 树根为初始状态(全零)
- 每一层代表一个时间单位
- 分支表示输入0或1后的输出和状态变化
- 随时间增长呈指数扩展
❗ 缺点:重复状态未合并,图形庞大
3. 网格图(Trellis Diagram)
- 最重要、最实用的表示方法
- 横轴为时间,纵轴为状态
- 每个节点表示某一时刻的某个状态
- 连线表示状态转移,边上标有输入/输出(如“1/11”)
✅ 维特比译码就是在网格图上寻找最可能路径
四、卷积码的维特比译码原理(Viterbi Decoding)
维特比算法是一种最大似然序列译码(MLSD)方法,基于动态规划思想,在网格图中搜索最接近接收序列的合法路径。
基本思想:
- 接收端收到的是可能含错的序列 $ \mathbf{r} $
- 在所有可能的发送路径中,找出与 $ \mathbf{r} $ 汉明距离最小(或欧氏距离最小)的路径作为估计路径
步骤详解:
- 初始化:从起始状态(通常是全0)开始
- 递推:每一时刻计算到达每个状态的所有路径的累积度量(如汉明距离)
- 比较/选择:对每个状态保留度量最优的一条路径(称为幸存路径)
- 存储路径信息:记录每条幸存路径的历史
- 回溯判决:当译码结束或达到一定深度后,选择总度量最小的路径,并回溯得到原始信息
✅ 关键优势:避免穷举所有路径,复杂度仅为 $ O(2^{K-1}) $ 而非 $ O(2^L) $
特点:
| 优点 | 缺点 |
|---|---|
| 能有效纠正随机错误 | 计算复杂度随 $ K $ 指数增长 |
| 适合硬判决和软判决输入(软判决性能更好) | 需要较长的回溯深度才能准确译码 |
| 可实现近似最优译码 | 对突发错误敏感(需配合交织) |
📌 应用:GPS、CDMA、DVB-S、4G LTE 中均采用维特比译码


2407

被折叠的 条评论
为什么被折叠?



