对于传统卷积码,通过在数据帧的末尾嵌入 mc(编码器的移位寄存器的个数)和 0 比特可迫使编码网格图在结束时回到全零状态。但是对于递归系统卷积码,由于具有无限冲激相应特性,因此仅依靠嵌入 mc 个 0 比特一般无法使其编码网格图在编码结束时回到全零状态。为此,必须通过选择信息输入 mi 来使得余式对应的系数 ai=0(n-mc<= i <=n-1)。这样,对于递归系统卷积码,输入信息序列中的最后 mc 个比特必须满足:
一般情况下,Turbo码的两个分量编码器的选择为两个相同的系统卷积码。
交织器
交织实际上就是将数据序列中元素的位置济宁重置得到交织序列的过程。其逆过程就是在交织序列的基础上将元素恢复到原来的位置顺序上,一般称该过程为解交织过程。例如,设交织器 I 的输入为:其中,ui = {0, 1},i = 1, 2, … , N。交织映射输出序列记为:其中,vj = {0, 1},j = 1, 2, … , N。序列 v 与 序列 u 仅仅是元素位置的顺序不同。如果把输入序列和交织输出序列看成是一对含有 N 个元素的集合,则交织过程就是从集合 u 到集合 v 的一一映射过程,即:若定义集合:则交织过程可以用一一映射索引函数描述为: 其中,i 和 j 分别是原数据序列 u 和 v 中的元素索引。映射函数可以用交织矢量表示,如下所示: 下面介绍几种常用的交织器。
2、循环移位交织器 循环移位交织器按照如下循环移位映射来实现交织,其交织的映射函数可以表示为:其中,a 为不长,是与交织长度 N 互素的正整数,且 步长 a 的值决定了原序列中相邻比特在交织后序列中的距离。
3、分组螺旋交织器 分组螺旋交织器首先将数据序列按行写入 m*n 矩阵,其中 m 与 n 互素。在交织时从矩阵的左上角开始向右下方向读取数据,每向下一行同时右移一位(即行索引递增的同时列索引也递增,增量步长为1),同时在行方向和列方向分别对索引取模 m 和 n。 若令 ri 和 ci 分别表示第 i 个比特的行索引和列索引,则分组螺旋交织器的数据读取顺序为:其中,i = 0,1,…,N-1,且初始值 r0 与 c0 均为 0 。另外,还可以从交织矩阵的左下角开始读取数据,其读取数据顺序为:其中,i = 0,1,…,N-1,且初始值 r0 = N-1 , c0 = 0 。 交织过程示意图如下所示:注意:在使用分组螺旋交织器时,一定要满足 m 与 n 互素,即 m 与 n 互为质数。
4、伪随机交织器 伪随机交织器是指在交织映射随机生成的交织器。每个长度为 N 的伪随机交织器共有 N! 种可能的交织形式。伪随机交织的实现步骤如下(交织长度为 N)。 (1)从集合 S = {1,2,…,N} 中随机选择一个整数 i1 ,相应的选取到 i1 的概率为 p(i1) = 1/N,将选择的 i1 记为 I(1) ,同时将 i1 从集合 S 中删除,得到新的集合,记为 S1。 (2)在第 k 步,从集合 Sk-1 中随机选择一个整数 ik ,其相应的选取概率为 p(ik) = 1/(N-k+1) ,将选择的 ik 记为 I(k),同时将 ik 从集合 Sk-1 中删除,得到新的集合,记为 Sk。 (3)当 k = N时,得到 I(N) ,相应的选取概率为 p(iN) = 1,SN为空。 交织过程结束。