(2,1,7)卷积码编译码器的FPGA实现

2011-09-13 08:38勇,
通信技术 2011年1期
关键词:译码器译码度量

郭 勇, 杨 欢

(南京北方信息产业集团有限公司产品研发中心,江苏 南京 211153)

0 引言

在无线通信中,由于信道的噪声和畸变,必然会对其中传输的信息引入失真和信号判决错误,因此需要使用纠错编码来降低误码率。卷积码的纠错性能优于分组码。在译码算法中,Viterbi译码算法性能最优[1]。其中(2,1,7)卷积码应用非常广泛。现采用Xilinx的FPGA设计(2,1,7)卷积码和Viterbi译码器,并对设计的译码器进行纠错能力测试,测试结果表明,该译码器纠错性能良好。

1 编码器的设计

(2,1,7)卷积码编码器的 k0=1, n0=2, N =7。码生成多项式为: G0= ( 171)8, G1=(133)8。

设输入为1 1 0 1 0 0 1 0 0 1 0 0 0,编码后的输出为11 01 01 11 01 10 10 01 10 11 10 10 00 00 01 11 00。用Verilog语言设计编码器模块,并编写仿真测试文件,在ModelSimSE6.4a中得到编码器的仿真波形,如图1所示[2]。

图1 (2,1,7)卷积码编码器的仿真波形

2 Viterbi译码器的设计

Viterbi译码算法是1967年由维特比提出的基于最大似然概率的译码算法。相比于序列译码和门限译码,Viterbi译码算法有更好的纠错性能。

2.1 分支度量单元(BMU)的设计

分支度量单元是计算译码输入与各状态分支间的距离度量值,并作为加-比-选(ACS)模块的输入。对BMU模块进行设计,仿真结果如图2所示[3]。

图2 BMU模块仿真波形

2.2 ACS(加-比-选模块)的设计

ACS模块的功能是在每个状态节点上分别对两个前一状态输入支路的路径度量值和相应分支度量值相加并进行比较,并将其中较小的值作为该节点新的路径度量值。如果相加以后的值相同,则任意选择一条路径。这里采用全并行结构,因此需要64个ACS单元[4]。在每个时钟的上升沿对64个状态并行地进行一次加-比-选运算。对ACS模块进行设计,仿真结果如图3所示。

图3 ACS模块仿真波形

2.3 路径量度迭代更新计算模块

对译码器来说,每送入2位译码输入,64个ACS模块并行地进行一次加-比-选运算,并储存运算的结果。这里需要计算 42次,即回溯的译码深度。回溯深度要求是约束长度的5~10倍。这里选择6倍。为防止累加的过程中发生溢出,在编程中设定,如果经过ACS模块计算后,S0~S63的64个状态的路径度量值都大于4,则所有的值都减去4,实际的纠错性能满足要求。EN00~EN63是每个状态比较的结果,需要并行的输出,作为回溯模块找到正确路径的判据[5]。

在经过 42次计算后,所有可能的路径汇聚到一起,形成唯一一条最大似然路径,这条路径回溯后得到的输出序列为正确的译码序列,仿真结果如图4所示。

图4 路径量度迭代更新模块仿真波形

2.4 回溯操作模块设计与功能验证

当迭代运算进行完 42步以后,唯一的一条幸存路径已经生成,回溯操作的目的就是找到这条幸存路径。

当所有的状态回溯完成后,下一步送到译码输出模块输出正确的译码序列,结果如图5所示。

图5 状态回溯模块仿真波形

2.5 译码输出模块的设计与功能验证

把回溯的状态转移路径输入到译码输出模块,得到正确的译码输出结果[6]。

输入编码器的比特为1 1 0 1 0 0 1 0 0 1 0 0 0,送入译码器的是有误码的编码序列11 01 01 11 01 11 10 01 10 11 10 10 11 00 01 11 00,加粗为误码,译码器输出的是正确的1 1 0 1 0 0 1 0 0 1 0 0 0 。译码器实现了预先的纠错功能,图6的仿真结果表明该译码器实现了预期的纠错功能。

图6 译码输出模块的仿真波形

3 纠错性能测试

设进入编码器的比特序列为:11011 00111 01101 00111。(伪随机序列用Matlab中的randint函数产生)。

正确的编码输出为:11 01 01 11 10 00 10 11 00 00 01 11 11 11 01 10 10 10 10 11 01 00 10 10 10 11 00 00 00 00,仿真波形如图7所示。

送入译码器的有误码的编码为:11 01 01 00 10 00 10 11 01 00 01 11 11 11 00 10 11 10 10 11 01 00 10 10 10 11 01 00 00 00 00 00 00 00。加粗表示误码。

经过译码器纠错,输出正确的未编码序列。仿真波形如图8所示。

图7 编码输入仿真波形

图8 译码输出仿真波形

4 结语

给出了(2,1,7)卷积码编码器和采用Viterbi算法的译码器各功能模块的设计方法,并对译码器纠错性能进行了测试,测试结果表明该译码器有良好的纠错性能。该译码器适用于对运算速度要求高、对资源占用较敏感的高速数字通信系统中。

[1] 王新梅,肖国镇. 纠错码—原理与方法[M]. 西安:西安电子科技大学出版社,2001:74-80.

[2] 西瑞克斯.无线通信的Matlab和FPGA实现[M].北京:人民邮电出版社,2009:46-52.

[3] 安乐,李实秋. Viterbi译码器的应用及其硬件设计与实现[J]. 通信技术,2008,41(05):26-28.

[4] 傅民仓,冯立杰,李立波,等. 基于FPGA的高速Viterbi译码器的优化设计和实现[J]. 现代电子技术,2006,29(07):52-54.

[5] 周冲,胡剑浩,张忠培,等. CDMA系统通用高速Viterbi译码器的设计与实现[J]. 通信技术,2009,42(12):10-13.

[6] 张传达,李小文. 卷积码编码及其Viterbi译码的实现[J]. 无线电工程,2006,36(07):45-48.

猜你喜欢
译码器译码度量
鲍文慧《度量空间之一》
模糊度量空间的强嵌入
分段CRC 辅助极化码SCL 比特翻转译码算法
基于校正搜索宽度的极化码译码算法研究
迷向表示分为6个不可约直和的旗流形上不变爱因斯坦度量
高速码率兼容DVB-S2的LDPC译码器的FPGA实现
编码器和译码器综合实现数字显示
跟踪导练(一)5
从霍尔的编码译码理论看弹幕的译码
地质异常的奇异性度量与隐伏源致矿异常识别