什么是卷积码?
卷积码是由伊利亚斯发明的一种非分组码,它更加倾向于纠错,对于实际的性能优于分组码,运算较为简单。
将卷积码记为(n,k,N),码率定义为k/n
n是n个比特
k是k个信息位
N是N个信息段
卷积码编码器
组成:Nk级移位寄存器,n个模二加法器,一个旋转开关
题目:画出(5,6,7)8(5,6,7)_8(5,6,7)8的卷积码译码器框图
如果这一步你画不出来 to 输入与输出的序列关系写不出来 to后面的码树图你就画不出来 to 状态图画不出来 to 维特比译码图画不出来
解题步骤:
- 不管几进制的你都要先转化成二进制:(101110111)2(101 110 111)_2(101110111)2
- 然后(5,6,7)8(5,6,7)_8(5,6,7)8有三个数,写三个多项式,多项式的指数从左到右从0开始依次递增,它们的系数就是转化成为二进制之后的数字,每个式子有三个系数,刚好把上面9个数字用完,如下:
G1(D)=1+D2G_1(D)=1+D^2G1(D)=1+D2 -----X1,j=mj⨁X_{1,j}=m_j\bigoplusX1,j=mj⨁mj−2m_{j-2}mj−2
后面几个式子就上图了,懒得打公式:
注意译码器的排布,它的序号是从左往右依次递减的
码数图
得到输入与输出的关系后,就可以画码树图了,我们这里以(3,1,3)(3,1,3)(3,1,3)卷积码的码树图为例,只要它没有标下标,就是默认十进制,把它转化成二进制就OK了。
步骤:
- 咱们前面不是说了吗,寄存器它的序号是从左到右依次递减的,这里的寄存器要以M3M2M1M_3M_2M_1M3M2M1的方式来进行,它的初始状态是000,从左到右进来的时候好比就是把最右边的那个0挤出去,于是乎变成了M3M2M1M_3M_2M_1M3M2M1=100100100,到这里我们就可以使用前面得到的输入与输出关系了,就那个异或的式子,后面码树图上的数字,全靠咱们这个输入与输出关系来填补
- 码树图的起始点有两个一上一下的箭头,一般是0在上,1在下,我看一些教材在画这个码树图的时候,还会在每个数的子节点用a,b,c,d来代表四个状态,为此在码树图底下专门列了一张表,这个好像没有强制要求,你画这个东西后期看起来好像更加清晰,不画也可以
- 码树图枝干上填写的数字就是它给的输入序列利用咱们的多项式计算后得到的输出序列,你移位寄存器每次移动一位,你就得进行一次异或计算,并把你异或计算的到的数字(有几个多项式就得到几个数字)写在码树图的枝干上
- 码树图原则上可以用于解码,就是搜索解码,比较相邻支路的汉明距离,选出最短的,依次连接,但这样子不实用,码树图支路按照指数规律增长,计算量巨大无比
敲公式实在是太麻烦,我写纸上拍照展示给大家,以(3,1,3)卷积码为例
写出状态的abcd的好处就是后面你画状态图的时候方便一些
维特比译码
画码树图的时候记得选取两个寄存器来表示状态(a,b,c,d),这样你后面画维特比译码的时候比较方便,维特比译码实线表示输入的是0,虚线表示输入的是1,每一次译码的累加汉明距离要写在最右端,最右端画两个圆,把数值写里面,每推进一次,就要舍去数值较大的那一个路线,依次累积。