微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
1、卷积码定义
卷积码(convolutional code)是一种线性非分组码,适用于前向纠错。
卷积码在编码是,把k比特的信息段变成n个比特的码组,但是监督码元不仅仅和当前的k比特信息段有关系,而且还跟前面m=(N-1)个信息段有关。
一个码组中的监督码元监督着N个信息段,N称为编码约束度,nN称为编码约束长度。将卷积码记作(n,k,N)。码率为k/n。
2、卷积码的基本原理
卷积码编码器由三种主要元件构成,包括Nk级移存器、n个模2加法器和一个旋转开关。
模2加法器的输入端连接到一些移存器的输出端,数目可以不同。
模2加法器的输出端均接到旋转开关上。
将时间分成等间隔的时隙,在每个时隙中k比特从左端进入移存器,并且移存器各级暂存的信息向右移k位。
旋转开关每时隙旋转一周,输出n比特(n>k)。
常用的卷积码,k=1。移存器共有N级,每个时隙中,只有1b输入信息进入移存器,并且移存器各级暂存的内容向右移1位,开关旋转一周输出n比特。码率为1/n。
一个(n,k,N)=(3,1,3)的卷积码编译器
输入信息比特序列为…b(i-2) b(i-1) b(i) b(i+1)…
当输入b(i)时,编码器输出ci,di,ei与b(i-2) b(i-1) b(i)的关系
3、卷积码的代数表示
卷积码是一种线性码,故可以由一个监督矩阵H或生成矩阵G所确定。
①监督矩阵
在第一个信息位b1进入编码器之前,各级移存器均处于“0”状态,监督位di、ei和信息位bi之间的关系
注意:“+”表示的是异或“⊕”
用矩阵表示为
故监督矩阵为
监督矩阵是一种截短监督矩阵,矩阵的最左边n列、(n-k)N行的一个子矩阵,且向右的每n行均相对于前n列降低(n-k)行。
卷积码的截短监督矩阵的一般形式:
②生成矩阵G
截短生成矩阵
一般截短生成矩阵
4、卷积码的几何表述
①码树图
一个(3,1,3)卷积码的码树图
移存器M1,M2,M3的初始状态000作为码树的起点。
输入信息位为“0”,状态支路向上移动;
输入信息位为“1”,状态支路向下移动。
②状态图
将码树改进为状态机,M2和M3的四种状态表示符号a,b,c,d
当前输入信息位、移存器前一状态、移存器下一状态和输出码元之间关系
卷积码状态图
③网格图
将状态图在时间上展开,即可得到网格图
5、卷积码的解码
卷积码的解码方法有两种:代数解码和概率解码。
代数解码是利用编码本身的代数结构进行解码,不考虑信道的统计特性。
大数逻辑解码,或门限解码,是卷积码代数解码的最主要一种方法,也应用于循环码的解码。适应于约束长度较短的卷积码。
概率解码,或最大似然解码,基于信道的统计特性和卷积码的特点进行计算。一是序贯解码,二是维特比(Viterbi)算法。
①大数逻辑解码
卷积码的大数逻辑解码是基于卷积码的代数表述运算的。
具体的操作步骤:
将接收信息位暂存于移存器,并从接收码元的信息位和监督位计算校正子。
将计算得出的校正子暂存,用来检测错码的位置。
在信息位移存器输出端,接一个模2加电路,当检测输出的信息位有错时,在输出的信息位上加“1”,从而纠正。
②维特比解码算法
维特比解码算法原理是将接收到的信号序列和所有可能的发送信号序列比较,选择其中汉明码距最小的序列认为是当前发送信号序列。
维特比解码算法,常用于卫星通信和蜂窝网通信系统中。