卷积码编码和译码(七)
编码器的设计
前面章节中的两个方法,用数学公式来看了一下编码是如何进行的. 实际的编码硬件就更简单了,不涉及到数学计算. 卷积码的编码器一般用查表的方式来做编码. “查找表” 有四项:
1) 输入比特
2) 编码器的状态,例如(2,1,4)编码器,是8种状态之一
3) 输出比特. 例如 (2,1,4) 编码器, 有两个输出比特,则输出的比特可能为 00, 01, 10 和 11.
4) 输出后的状态,即给下一个输入比特用的编码器状态.
图7 中给出的(2,1,4)生成多项式 . 可以产生如下表所示的”查找表”.

这个查找表确定了唯一的一个(2,1,4) 编码器. 不同参数和生成多项式的编码器都有不同的“查找表”.
如果用图来表示编码器,我们有三种图表示方法来加深我们对编码过程的理解:
1) 状态图 State Diagram
2) 树状图 Tree Diagram
3) 栅格图 Trellis Diagram
状态图
图8是(2,1,4)编码器对应的状态图。每个圆圈代表一个状态。在任何一个时刻,编码器都是停在某个确定的状态上。到达和离开圆圈的线表示在输入一个比特后可能的状态转移。在每一时刻,只有两种可能的状态转移,输入比特1或者输入比特0,并分别跳到不同的状态。状态图没有时间维度的信息,因此不是特别直观。

可以对比上面的状态图与编码器的“查找表”,可以看出,状态图与“查找表”含有相同的信息,只是状态图是一种图形表达。图中实线表示输入比特0,虚线表示输入比特1. 每种情况的输出比特写在线上,箭头表示状态转移的方向。
我们把编码器的状态做一个想象。想象你在一个岛上。有多少种方法可以离开这个岛?你可以乘船或者游泳。假设你只有这两种方法离开这个岛。你乘船去陆地上。你可以有多少种路径?你可以乘船,但是你去了另外一个目的地. 你在哪里(你的状态)决定了你有多少种路径(你的输出)。
一些编码器的状态下可以输出11和00,一些编码器的状态下可以输出01和10.但是,没有哪个状态可以有四种可能的输出。
那么,使用状态图,我们如何对1011序列进行编码?
(1) 我们从状态000开始。输入比特为1,则输出为11,状态转移到100.
(2) 下一个输入比特是0,输出比特为11,状态转移到 010.
(3) 下一个输入比特是1,输出比特为01,状态转移到101.
(4) 最后一个输入比特是1,输出比特为11,状态转移到110.现在我们有 11 11 01 11这8个比特的输出。但是,还没有结束。我们需要把编码器的状态转移到全0状态。
(5) 从状态110,转移到状态011,输出比特为01.
(6) 从状态011,转移到状态001,输出比特为01.
(7) 从状态001,转移到状态000,输出比特为11.
最后得到的输出比特为 11 11 01 11 01 01 11.
这与我们把每个比特的冲激响应叠加后得到的结果是一样的。