基于LabVIEW的信号编码与解码—-215卷积码

  • Post author:
  • Post category:其他




2.4 卷积码知识



2.4.1 卷积码

卷积码(convolutional code)是由伊利亚斯发明的一种非分组码。在前向纠错系统中,卷积码在实际应用中的性能优于分组码,并且运算较简单。

卷积码在编码时将k比特的信息段编成n个比特的码组,监督码元不仅和当前的k比特信息段有关,而且还同前面m=(N-1)个信息段有关。通常将N称为编码约束长度。一般卷积码中k和n的值是较小的整数。将卷积码记作(n,k,N)。



2.4.2 卷积码编码原理

卷积码编码器在一段时间内输出的n位码,不仅与本段时间内的k位信息位有关,而且还与前面m段规定时间内的信息位有关。由于我们使用的是215卷积码,所以下面以215卷积码为例子说明。

编码器5个延迟器的状态(0,1)组成了整个编码器的16个状态。每个状态在编码器输入0或1时,会跳转到另一个之中。比如1101输入1时,变成1110(其实就是移位寄存器)。并且输出也是随之而改变的。

(2,1,5)卷积码编码器方框图如下所示:

215卷积码编码器方框图

根据模2加运算特点可以得知奇数个1模2运算后结果仍是1,偶数个1模2运算后结果是0。在实际应用中,根据模2加的特点,将所要处理的数据直接相加后除2求余,这样得到的结果和模2运算结果相同。可以得到生成式为:

215卷积编码公式



2.4.3 卷积码译码原理

卷积码的译码是根据接收序列来求解最可能的发送序列。

已知接收序列,可以得到卷积码的编码器结构和发送序列的长度,我们可以对所有的可能发送结果进行编码,将结果同接收序列进行比较,记录汉明距离,则汉明距离最小的就可能是发送序列。但这种方法计算量成指数增大,信息量很大时无法实现。

所以卷积码的译码主要采用概率译码(最大似然译码),比较典型的是维特比(Viterbi)算法。就是寻找一条路径,使得该路径的编码输出与接收序列的汉明距离最小,其关键就是路径的寻找过程。

(只做简单介绍)根据网格图,首先,我们从第一个状态出发,到下一个状态有两种路径,分别计算这两条路径的编码输出与接收序列的汉明距离(注意,此时不能进行任何舍弃,不能将距离大的舍弃)。

第二步,从第一步到达的两个状态出发,重复3次,继续寻找路径,由于4位移位寄存器共有16种状态,因此此时我们得到到达所有状态的路径(无论是否最优),也即是到达了篱笆图。

第三步,从这16个状态出发,继续寻找路径,此时我们将得到32种路径。这一步是算法的关键,此时要保留到达各状态的最短路径,舍弃其他路径,即舍弃后仍保留16条路径,且16条路径分别对应16个状态(无论该状态以后的路径如何选择,当到达该状态时,该状态以前的路径一定是最优的)。即对于(n,k,N)卷积码,进行维特比译码到达第N步时,要对路径进行舍弃,只保留幸存路径的信息,储存幸存路径以及当前的累计距离。

第四步:继续进行路径寻找,同样只保留每个状态下的幸存路径,直至步数达到输入序列的个数,此时译码结束。

最后,从16条幸存路径中选出一条量度最小的,反推出这条幸存路径(叫做回溯),即得到相应的译码输出。

总而言之,解码就是编码的逆过程。以215卷积码解码再次说明,算法规定寻找路径第5步以后,收到的数据都要进行16次比较,就是16个状态都有两条分支(因为输入0或1),选择使汉明距离最短的一条,一直保持到译码结束,即可寻找到汉明码距离最短的路径,然后将此过程回溯,得到解码。



2.5 卷积码LabVIEW实现

由于卷积码的LabVIEW实现与分组码的只有编解码部分不一样,所以此处只对卷积码的编解码进行描述,其他部分可以参考我的另外一个文章,关于分组码的。


基于LabVIEW的信号编码与解码—-(7,4)线性分组码



2.5.1 (215)卷积码编码部分

(215)卷积码编码程序框图如下所示:

215卷积码编码程序框图

首先,对输入数据补4个0在最后,这是为了方便译码时回溯使用。然后对数据除以2取余数,输出一维二进制数组经过索引隧道(一次取1个元素)进入循环,然后根据卷积码的编码原理,该1比特信息与相关的前4个状态,通过运算得到了卷积编码后的2位比特的码字,然后重排为一维的1 x 2n数组编码数据。



2.5.2 (215)卷积码译码部分

卷积码译码程序框图如下所示:

卷积码译码程序框图

卷积码译码前面版图如下所示:

卷积码译码前面版图

此部分(215)卷积编码的译码实现部分,首先从编码数据的处理开始分析整体框图,设此时的编码数据共有2n个比特,编码数据首先进入一个大循环,共循环n次,是因为最终要译码出编码前的共n个比特。然后,编码数据继续进入中循环,中循环共循环16次,这是因为要对16个可能的状态都进行计算。然后编码数据送进小循环,小循环共循环2次,这是因为可能输入的是0或1共两个可能。

然后对具体译码过程进行分析,编码数据传输进小循环后,通过两个索引数组分别输出当前位置的两个码字,然后与输出矩阵相减,再通过平方获得这2个码字在输入0情况下的汉明距离,然后小循环进行第2次循环,获得当前码字与输出矩阵相减,再通过平方获得这2个码字在输入1情况下的汉明距离,然后小循环通过索引隧道输出当前的2个不同输入的汉明距离,然后通过数组最大值和最小值的模块,输出小循环中最小的汉明距离作索引,输出相应状态下的跃迁矩阵数值,然后中循环进行16次循环,输出16种可能状态下的最小汉明距离,进行n次循环,即可确定所有2n码字的的16种可能状态的最小度量,此时获得幸存路径。

然后进行循环回溯,即通过编码的码字调整后与解码矩阵相乘,通过右边循环的共n次回溯,即可以得到全部2n解码后的n个原码字,最后把输出的编码数据截取掉前面编码时添加的4个0,然后反转输出,至此译码结束。



2.5.3 (215)卷积码编译码测试

(215)卷积码编码测试图:

 215卷积码编码测试图

(215)卷积码译码测试图:

215卷积码译码测试图

结合自行计算的 [100110] 的215卷积编码的结果 [111001101011] 与卷积码编码程序测试的结果,如上图2.15所示,不理会补零译码产生的后8位码字,编码结果与计算一致,则表示设计的215卷积编码程序正确。将程序编码后的所有码字 [11100110101100101100] 写入程序译码中,运行得到的结果为 [100110],则表明设计的215卷积码编解码正确,能组合使用。



2.6 卷积码结果分析

无信道编码运行图:

无信道编码运行图

启动卷积编码运行图:

启动卷积编码运行图


结果分析:

经过多次测试,发现在卷积编码部分,同样存在信噪比越大,处理后的图片越清晰,误码率越小。

在固定信噪比为10的情况下,分析得知,经过了模拟信道的传输后,此时处理后的图片出现了很多随机分布彩色的小点,说明信息在高斯白噪声信道中进行传输后出现了误码,得到的图像还原后有失真;当启动信道编码后,彩色小点明显减少,误码率从约0.005减小到约0.0003,说明了采用卷积码对JPG图片编解码的处理,也能在很大程度上降低误码率,提高传输的可靠性。

参考资料:

卷积编码和译码:

https://zlearning.netlify.app/communication/ecc/eccviterbi


卷积码的编译码实验

https://www.docin.com/p-1202755781.html

如果对你有所帮助,请点个赞。

转载请注明出处,欢迎交流。

感谢帮助我的kui、ying、ma、fang等多位同学



版权声明:本文为m0_46140457原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。