卷积码编码和译码(六)
我们用(2,1,4)编码器来编码输入的两个比特 10,来看一下编码是如何进行的.


首先,把比特 1 送到编码器,看最终的输入结果。如图 6 所示.
a) 在 t=0时刻, 编码器的初始状态是 全 0(最右边 L 个位置上存储寄存器中的比特). 输入比特 1 产生了两个比特 11 的输出。 这是怎么计算出来的?把所有寄存器中的比特用模2加起来产生第一个输出比特,把生成多项式确定的三个比特模2相加得到第二个输出比特 。
b) 在 t=1 时刻, 输入的比特1向前移动了一个寄存器位置。输入寄存器是空的,我们填充一个清空(flush)比特 0. 现在,编码器的状态变为 100。 用同样的计算方法可以计算出输出比特是11.
c) 输入的比特1继续向前移动了一个寄存器位置. 现在,编码器状态是010,另外一个清空比特 0 放入输入寄存器。此时,输出比特为10.
d) 在时刻点3,输入的比特1移动了最后一个寄存器中,现在,编码器状态为 001. 输出比特是 11。 在时刻点 4, 输入比特1已经移出了编码器. 编码器的状态也被清空为 全0, 为下一个序列做好了准备.
需要注意的是,虽然这个编码器的码率是1/2,但是一个输入比特产生了8个比特的输出. 这表明,较短的输入序列,其额外开销远大于名义上的输出比特的数量(即按照码率计算出来的输出比特的数量),所以,只有较长的输入序列,才能基本达到名义上的码率.
如果我们输入比特 0,然后做同样的编码过程,则我们得到8个全 0 的输出比特.
前面这种方式产生的输出,称之为编码器的冲击响应.输入比特1的冲击响应是 11 11 10 11. 类似的,输入比特 0 的冲击响应为00 00 00 00(前面没有具体展示如何计算,但是这是很明显的).
通过计算编码器生成多项式与输入比特序列之间的卷积,我们可以得到上面两个输出序列,这也是被称为卷积码的原因. 根据线性叠加原理,我们根据上面两个冲击响应,我们可以对任意输入序列计算出输出序列.
例如我们输入序列为 1011. 我们想知道编码出来的序列. 我们可以把每个输入比特的冲击响应,做相应的位移再相加,就可以计算出输出比特序列.

把0/1的冲击响应,做相应的移位后相加,就得到了序列 1011 的响应.
图 7 中,我们手工把序列 1011 通过编码器来编码,验证前面的卷积思想, 我们得到相同的结果. 这说明上面的卷积模型是正确的.

上面每个时间节点上编码结果,列在表格 2 中:

编码后得到的序列为 11 11 01 11 01 01 11