首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的卷积码编译码器

基于FPGA的卷积码编译码器

关键字:截尾译码算法   Viterbi译码器   FPGA   卷积码  
由于卷积码具有较好的纠错性能,因而在通信系统中被广泛使用。采用硬件描述语言VerilogHDL或VHDL和FPGA(Field Programmable Gate Array——现场可编程门阵列)进行数字通信系统设计,可在集成度、可靠性和灵活性等方面达到比较满意的效果。
文献以生成矩阵G=[101,111]的(2,1,3)卷积码为例,介绍了卷积码编码器的原理和VerilogHDL语言的描述方式;文献采用VerilogHDL语言,对(2,1,7)卷积码的Viterbi硬判决译码进行了FPGA设计。本文基于卷积码编/译码的基本原理,使用VHDL语言和FPGA芯片设计并实现了(2,1,3)卷积码编码器及其相应的Viterbi译码器,通过仿真验证了设计的正确性。

1 (2,1,3)卷积码编码器的设计

1.1 (2,1,3)卷积码编码器的原理

卷积码编码器通常记作(n,k,N),对应于每段k个比特的输入序列,输出n个比特;这n个输出比特不仅与当前的k个输入比特有关,而且还与以前的(N-1)k个输入比特有关。(n,k,N)卷积码编码器包括:一个由Ⅳ段组成的输入移位寄存器,每段有k级,共Nk位;一组n个模2加法器;一个由n级组成的输出移位寄存器。整个编码过程可以看成是输入序列与由移位寄存器和模2加法器连接方式所决定的另一个序列的卷积。

对于(2,1,3)卷积码编码器来说,n=2,k=1,N=3,即每输入1个信息比特时经编码后产生2个输出比特,输出比特不仅与当前的1个输入比特有关.而且还与以前的2个输入比特有关。(2,1,3)卷积编码器框图如图1所示。





当编码使能start为0时不进行编码,并将状态state清零;start为1时进行编码,此时每2个时钟周期输入一个新的信息比特,同时状态信号改变,输出2位已编码比特,即每个时钟周期输出1位已编码比特。

2 维特比译码器的设计

2.1 维特比译码器的原理

卷积码的译码一般采用维特比译码。维特比译码本质上是对长度为L的二进制序列的最佳译码,需要对可能发送的2L个不同的序列的2L条路径量度进行计算和比较,选取其中量度最小的一条作为幸存路径。其基础是基于网格图的描写,即对于不同的路径的量度进行比较,如某一节点上发出的某条路径已经不可能获得最大似然函数,那么就放弃这条路径,并在保存下来的路径中重新选择译码路径,一直到最后,复杂度较高。维特比译码器实际上对各个可能路径进行比较,比较原则是计算其路径的对数似然函数,而计算似然函数就是计算该路径与接收序列之间的汉明距(量度)。译码过程的操作可归纳为“加-比-选”3个部分。

实际的维特比译码中,译码几步后可能的路径便合为一条,因此,不必等全部译出后再输出,即译码一定长度后便可将已经相同的部分输出,这样做可以大量节省译码所需路径的存储空间。只要保证译码深度在5~10倍的约束长度之间就不影响译码效果,这就是所谓的“截尾译码”。

2.2 结构框图

维特比译码器的结构框图如图2所示。






其中“比前路径长度”中下划线前的数字代表该路径最后停在的状态,下划线后的数字代表是由哪个状态转移过来的。如果是“0”则代表由状态号较小的状态转移过来的那条路径,反之如果为“1”则代表由状态号较大的状态转移过来的那条路径;“选后路径长度”和“译码路径”的序号表示该路径最后停在的状态号。图3为维特比译码过程的网格图。



返回列表