打印
[Quartus]

基于FPGA的卷积编译码器的设计与实现

[复制链接]
1721|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2012-9-21 23:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2 Velerbi(维特比)译码器原理
  卷积码的译码方式有3种:Veterbi译码、门限译码和序列译码。其中维特比译码具有最佳译码性能,但硬件实现相对复杂。veterbi算法是检测离散马儿可夫过程有限状态序列的优化算法。在数字通信系统中,前向纠错卷积码编码和维特比译码用来提高系统性能,应用广泛。
  维特比算法是一种最大似然译码算法。它不是在网格图上一次比较所有可能的2条完整路径,而是接收一段,计算比较一段,选择一段最有可能的码段,从而达到整个码序列是一个有最大似然函数的序列。其基本原理是:以断续的接收码流为基础,逐个计算它与其他所有可能出现的连续的格状图路径的距离,选出其中概率最大的一条作为译码输出。
  维特比(Veterbi)译码算法是基于卷积码的网格图表示中路径的计算,其核心思想就是通过计算路径矢量进而寻找最短路径从而最终得到译码序列并可以纠正传输过程中的错误码字。图4中给出(2,1,3)卷积码的网格图表示。

图4中的网格图*有2k(N-1)种状态,每个状态(节点)有2k条支路进入,同时也有2k条支路引出。由于本文讨论的是(2,1,3)卷积码的情况,因此k=1,假设起始状态为全0。
  在不同时刻对于同一节点的所有8个状态,分别计算以其为终点的2条分支路径的对数似然函数累加值并进行比较,舍弃其中对数似然函数累加值小的路径,保留对数似然函数累加值较大的路径,并将此路径称为剩余路径。由此可见,上述过程可以归纳为“加-比-选”算法,经过“加-比-选”电路以后,通过结束信息来确定最终得到的译码序列,其中每到来一个结束信息时,只将与已知发送信息相符的那条支路保留,以此类推,经过N-1个结束信息后,即可得到与发送序列最相似的译码路径。
3 译码器设计与实现
  维特比译码器包括4个子模块,如图5所示。

1)控制单元 向各个功能模块提供控制信号,保证译码器的工作时序正确,协调各个功能模块从而促使整个译码器的正常工作。
  2)路径度量和“加-比-选单元”计算和比较每条支路的路径度量,得到并保存剩余路径提供给回溯单元。对于(2,1,3)卷积码,译码深度D=5(m+1)=20,为保证存储单元和回溯单元同时并行工作,存储单元为2D(m+1)2m=1280 bit。
  3)回溯单元 从前面“加-比-选”电路送来的剩余路径中选择量度最小的剩余路径,从这条路径对应的状态开始向前寻找,直到找完前面所有状态,并从存储单元中读出译码信息送给译码控制单元。
  4)译码控制单元 将回溯单元送来的译码序列反转顺序输出即为所要输出的正确的接收序列。其中反转顺序的操作可由RAM实现,顺序写入倒序读出。

相关帖子

沙发
gaochy1126|  楼主 | 2012-9-21 23:22 | 只看该作者
2 Velerbi(维特比)译码器原理
  卷积码的译码方式有3种:Veterbi译码、门限译码和序列译码。其中维特比译码具有最佳译码性能,但硬件实现相对复杂。veterbi算法是检测离散马儿可夫过程有限状态序列的优化算法。在数字通信系统中,前向纠错卷积码编码和维特比译码用来提高系统性能,应用广泛。
  维特比算法是一种最大似然译码算法。它不是在网格图上一次比较所有可能的2条完整路径,而是接收一段,计算比较一段,选择一段最有可能的码段,从而达到整个码序列是一个有最大似然函数的序列。其基本原理是:以断续的接收码流为基础,逐个计算它与其他所有可能出现的连续的格状图路径的距离,选出其中概率最大的一条作为译码输出。
  维特比(Veterbi)译码算法是基于卷积码的网格图表示中路径的计算,其核心思想就是通过计算路径矢量进而寻找最短路径从而最终得到译码序列并可以纠正传输过程中的错误码字。图4中给出(2,1,3)卷积码的网格图表示。

图4中的网格图*有2k(N-1)种状态,每个状态(节点)有2k条支路进入,同时也有2k条支路引出。由于本文讨论的是(2,1,3)卷积码的情况,因此k=1,假设起始状态为全0。
  在不同时刻对于同一节点的所有8个状态,分别计算以其为终点的2条分支路径的对数似然函数累加值并进行比较,舍弃其中对数似然函数累加值小的路径,保留对数似然函数累加值较大的路径,并将此路径称为剩余路径。由此可见,上述过程可以归纳为“加-比-选”算法,经过“加-比-选”电路以后,通过结束信息来确定最终得到的译码序列,其中每到来一个结束信息时,只将与已知发送信息相符的那条支路保留,以此类推,经过N-1个结束信息后,即可得到与发送序列最相似的译码路径。
3 译码器设计与实现
  维特比译码器包括4个子模块,如图5所示。

1)控制单元 向各个功能模块提供控制信号,保证译码器的工作时序正确,协调各个功能模块从而促使整个译码器的正常工作。
  2)路径度量和“加-比-选单元”计算和比较每条支路的路径度量,得到并保存剩余路径提供给回溯单元。对于(2,1,3)卷积码,译码深度D=5(m+1)=20,为保证存储单元和回溯单元同时并行工作,存储单元为2D(m+1)2m=1280 bit。
  3)回溯单元 从前面“加-比-选”电路送来的剩余路径中选择量度最小的剩余路径,从这条路径对应的状态开始向前寻找,直到找完前面所有状态,并从存储单元中读出译码信息送给译码控制单元。
  4)译码控制单元 将回溯单元送来的译码序列反转顺序输出即为所要输出的正确的接收序列。其中反转顺序的操作可由RAM实现,顺序写入倒序读出。

使用特权

评论回复
板凳
gaochy1126|  楼主 | 2012-9-21 23:22 | 只看该作者
4 译码器设计中改进和优化算法
  本文采取状态路径和判决比特同时存储,在表示状态信息的比特前加上1位判决比特来表示相应状态的输入支路的译码信息,因此,译码器在回溯时就可直接输出判决比特作为译码器的输出,降低了译码器的判决难度,节省了存储回溯路径所需要的内存,从而降低了译码器结构复杂性。
  本设计中译码器在计算所有状态的路径量度的同时进行路径存储,从而大大提高了译码速度。路径量度是指每个状态的2条输入支路和2条输出支路,路径存储指的是状态存储以及相应的译码判决比特存储。该结构的译码器对每一个状态都具有独立的处理单元,彼此互补影响,并行工作,提高了译码速度。对于(2,1,3)卷积码,一个时钟需要进行2x2x2m=32次路径量度计算和2m=8次4比特存储操作。充分发挥了FPGA拥有大量LCS和RAM的优势。
  在网格图中,随着状态的改变,每个状态的输出支路的路径量度逐渐增加,造成存储资源压力增大,设计中在每次进行路径量度计算时,将该状态的量度值与上次剩余路径量度的最小值做差后进行保存,以达到减小存储器空间的需求。对于编码效率为1/2的卷积码,以上差值最大不超过2m,因此,路径量度的量化宽的为1b(2m)。对于(2,1,3)卷积码,存储路径量度的寄存器位宽为lb(2×3)=3。
5 验证仿真
  本设计采用Xilinx公司的ISE 9.2i为开发平台,选用的是Xilinx Virtex 4 FPGA为开发芯片用于设计和验证所提出的卷积编码和维特比(Veterbi)译码算法。
5.1 卷积编码器
  如图6所示,clk为时钟信号,reset为复位信号,din为输入信号,out_1,out_2为编码后得到的并行码字序列。可看出:输入码元为“101010111011 000100011011111111100……”经过编码得到编码结果为“1101000100010010101000101011001101110011101001010101010 10101011”结果正确。

5.2 Verterbi译码器
  Vertrbi译码器仿真波形如图7所示,rev[1:0]为输入译码器的接收序列,clk为时钟信号,rst为复位信号,enable为使能信号,h_out为译码器输出序列。可看出:译码输出码元为“10101011101100010001101111111l100……”。结果正确。

使用特权

评论回复
地板
gaochy1126|  楼主 | 2012-9-21 23:22 | 只看该作者
6 结束语
  通过对卷积编码原理与维特比译码算法的深入研究,在理解传统实现方法的基础上提出适合FPGA存储器和独立运算单元丰富的特点的优化算法,有效地提高了译码器的处理速度,简化了译码器的复杂程度。

使用特权

评论回复
5
51xlf| | 2012-9-26 08:05 | 只看该作者
卷积编码器的算法在网上有很多,楼主最好给分析一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1074

主题

11334

帖子

26

粉丝