《第九讲——卷积码的维特比译码和卷积码的性能分析》由会员分享,可在线阅读,更多相关《第九讲——卷积码的维特比译码和卷积码的性能分析(22页珍藏版)》请在金锄头文库上搜索。
1、第九讲卷积码的维特比译码及卷积码性能分析回顾卷积码的编码:有记忆的信道编码卷积码的概率译码序列译码:费诺算法和堆栈算法最大似然译码:维特比算法维特比译码的描述从第1时刻的全零状态开始(零状态初始度量为0,其它状态初始度量为负无穷)在任一时刻t,对每一个状态只记录到达路径中度量最大的一个(残留路径)及其度量(状态度量)在向t+1时刻前进过程中,对t时刻的每个状态作延伸,即在状态度量基础上加上分支度量,得到M*2k条路径对所得到的t+1时刻到达每一个状态的2k条路径进行比较,找到一个度量最大的作为残留路径直到码的终点,如果确定终点是一个确定状态,则最终保留的路径就是译码结果图解维特比译码维特比译码
2、收尾最大似然序列译码要求序列有限,因此对卷积码来说,要求能收尾。收尾的原则:在信息序列输入完成后,利用输入一些特定的比特,使M个状态的各残留路径可以到达某一已知状态(一般是全零状态)。这样就变成只有一条残留路径,这就是最大似然序列。卷积码收尾的实现非递归卷积码:约束长度为m+1的卷积码,只要在信息序列输入完成后连续送入m个0,即可使任一路径都到达最终的状态0。递归卷积码:也可通过将输入值置成反馈值的负值,而使m个时钟后的状态到达0。卷积码收尾非系统非递归码 递归系统码维特比译码的复杂度对信息序列长度为L,信息符号取自GF(p),R=k/n,约束长度为m+1的卷积码。状态数为pkm,因此对每个时
3、刻要做pkm次加比选得到pkm个状态的残留路径,每次加比选包括pk次加法和pk-1次比较。因此总运算量约为Lpkm次加比选。同时要能保存pkm条残留路径,因此需要Lpkm个存贮单元。维特比译码的特点维特比算法是最大似然的序列译码算法译码复杂度与信道质量无关运算量与码长呈线性关系存贮量与码长呈线性关系运算量和存贮量都与状态数呈线性关系状态数随分组大小k及编码深度m呈指数关系吞吐量与存储量运算量与码长呈线性关系意味着平均吞吐量与码长无关存贮量与码长呈线性关系意味着对无限码长(流的情况)要求有无限的存贮量。滑动窗维特比译码算法基本思想:当状态数有限时,给定时刻的各状态残留路径在一定时间(L)之前来自
4、于同一状态的可能性随L的增加而迅速趋近于1。因此当前时刻各残留路径很可能来自于L时刻前的同一路径。滑动窗维特比译码算法实现在第k时刻,可以将t-L时刻前的路径结果直接输出,而在存贮空间中不再保存t-L时刻前的内容。因此存贮量控制在Lpkm。这里的L就被称做译码深度。不再随码长的增加而增加。因而特别适合信息流的卷积码编译码。在这种情况下甚至不需要对流分段加尾比特。这里的L就被称做译码深度。显然,滑动窗算法是一种准最优算法。但通常译码深度只要有编码约束长度的5到10倍,其性能损失就可以忽略不计了。状态数对维特比译码的影响由于运算量与k和m呈指数关系,因此维特比译码算法一般只适合于k和m较小的场合。
5、大多数情况下k=1,m10。对状态数很大的卷积码,维特比算法要经一定的修正后才可能实用,常用的算法是缩减状态的维特比译码,即在每一时刻,只处理部分的状态。序列译码与维特比译码的比较信道质量对前者运算量影响较大,而对后者运算量没有影响前者是次优的,后者是最优的前者运算量与约束长度无关,而后者运算量与约束长度呈指数关系前者会有译码失败,而后者只有译码错误在不同场合有不同用途卷积码的性能分析误码分析重量或距离谱首次差错率两个序列间差异的扩大对于有限状态的流编码传输而言,如果两个序列不起始于同一状态且终于同一状态,则可以通过网格图的继续延伸而呈现出更大的差别。而只有有限的差别才有可能造成误判。因此对卷
6、积码而言,我们关心的是某一时刻两条路径分离,而在有限时间内又再次合并的情形。这就是流编码中的一次错误事件。首次错误事件显然,两条路径分离后一般并不会立即合并,而是要经过一段时间后才可能合并,这段时间可长可短,是随机的。因此卷积码中出现的误码一般也有较强的突发性,一般突发长度不小于约束长度。对半无限的卷积码而言,总是开始于状态0,我们要研究的就是什么时候会发生第一次错误事件?这一次错误事件的长度是多少?它引起了多少比特错误?错误概率如何?等等。对于线性卷积码对线性卷积码而言,输入全0时输出也是全0,构成一条全0序列,这是一个合法的编码序列。因此研究误码可以假设发的是全0序列,而研究译成非0序列的
7、概率。为此我们要研究卷积码的距离谱或重量谱。线性卷积码的首次错误事件在研究首次错误事件概率时,要研究的是第一次与全0序列分离并再次回到全0序列的事件。它等价于在网格图上第一次离开状态0并再次回到状态0的路径。由于这些事件要离开状态0,而再次回到状态0后就不允许离开状态0,因此状态0要分解成两个状态:0和0,其中0为注入态,而0为吸收态。我们要研究的就是从注入到吸收所有可能的路径,及它们的各种特性,如长度、输入重量、输出重量等等。重量表示由于路径每走一步,长度、输入重量、输出重量等参数都要随各自的分支而进行累加,因此如果将这些参数在每个分支上的值用指数标注,则可以用乘积的方式表示一条路径的各项值
8、。例如,一条路径的乘积项为NiSjDk,表示该路径长度是i个时刻,输入重量为j,输出重量为k。当将所有可能路径的乘积项加起来,合并同类项,就可以得到下面的式子:F(N,S,D)=i,j,kA(i,j,k) NiSjDkF(N,S,D)的含义它表示,在所有可能路径中,长度是i个时刻,输入重量为j,输出重量为k的路径共有A(i,j,k)条。这个式子包含了有关卷积码性能的大量信息,可以从它得到误比特率、误事件率及误帧率的性能界。如何计算F(N,S,D)为了得到F(N,S,D),我们可以借助流图的方法,即将各分支的乘积增量做为该分支的转移函数或增益,而计算从0状态注入到0状态输出的总增益,这个总增益就是F(N,S,D)。