微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
本节目录
一、卷积码
1、卷积码的概念
2、卷积码的编码原理
3、卷积码的译码原理
本节内容
一、卷积码
1、卷积码的概念
分组码的编码器每次输入k个信息码元,输出n个码元,每次输出的码元只与本次输入的信息码元有关,而与之前输入的信息码元无关。卷积码的编码器输出,除了与本次输入的信息码元有关外,还与之前输入的信息码元有关。
卷积码通常用(n,k,K)来表示,其中n表示编码器每次输出的码元个数;k表示编码器每次输入的信息码元个数,一般k=1;K表示约束长度,在k=1的情况下,表示编码器的输出与本次及之前输入的K个码元相关。
2、卷积码的编码原理
(n,1,K)卷积码编码器一般使用(K-1)级移位寄存器来实现。
(2,1,3)卷积码编码器需要2级移位寄存器,编码器输入为mi,输出为u1和u2。其中:
u1=mi⊕mi-1⊕mi-2
u2=mi⊕mi-2
可以通过寄存器的状态及编码器输出变化进行分析,有兴趣地可以回顾下,以前整理的通信原理中的卷积码及其计算,此处可以对应画出状态图。
两个移位寄存器的初始状态为00,两个寄存器的输出共有4种可能状态:00、10、01、11,沿纵轴排列,以时间为横轴,将寄存器状态和编码器输出随输入的变化画出来,就是编码器网格图。
实线表示输入0,虚线表示输入1。
在t1时刻,寄存器状态为初始状态00。
在t2时刻,若输入为0,寄存器状态保持00,编码器输出00;若输入为1,寄存器状态变为10,编码器输出11。
在t3时刻,若前一时刻t2寄存器状态位00,输入为0,寄存器状态保持00,编码器输出00;输入为1,寄存器状态变为10,编码器输出11。若前一时刻t2寄存器状态为 10,输入为0,寄存器状态变为01,编码器输出10;输入为1,寄存器状态变为11,编码器输出01。
t4、t5、t6时刻依次类推。
若输入序列11011,获得其编码器网格图,得到输入序列11011编码得到的输出序列11 01 01 00 01。
3、卷积码的译码原理
卷积码的译码一般采用最大似然译码。
编码器的输入信息序列长度为L,输出的码字序列有2L种可能:Ai=(i=1,2,…,2L)。译码器在接收到码字序列B后,遍历Ai(i=1,2,…,2L),计算发送码字序列为Ai、接收码字序列为B的发生概率,将发生概率最大的发送码字序列对应的发送信息序列作为译码结果,这就是最大似然译码。
最大似然译码要遍历2L种可能码字序列计算概率才能完成译码,译码过程的计算量随L的增大而指数增长,难以实现。
维特比发现了一种方法,可以大大减小译码的计算量,将最大似然译码推向实用,这就是著名的维特比译码算法。维特比译码的原理,结合译码器网格图来说明,译码器网格图与编码器网格图类似,不同是实线和虚线旁的数字不再表示编码器的输出,而是表示接收码字序列与编码器输出码字序列的汉明距离。
维特比译码的过程就是寻找最优路径的过程,就是找到一条汉明距离之和最小的路径。