郭 勇, 杨 欢
(南京北方信息产业集团有限公司产品研发中心,江苏 南京 211153)
在无线通信中,由于信道的噪声和畸变,必然会对其中传输的信息引入失真和信号判决错误,因此需要使用纠错编码来降低误码率。卷积码的纠错性能优于分组码。在译码算法中,Viterbi译码算法性能最优[1]。其中(2,1,7)卷积码应用非常广泛。现采用Xilinx的FPGA设计(2,1,7)卷积码和Viterbi译码器,并对设计的译码器进行纠错能力测试,测试结果表明,该译码器纠错性能良好。
(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)卷积码编码器的仿真波形
Viterbi译码算法是1967年由维特比提出的基于最大似然概率的译码算法。相比于序列译码和门限译码,Viterbi译码算法有更好的纠错性能。
分支度量单元是计算译码输入与各状态分支间的距离度量值,并作为加-比-选(ACS)模块的输入。对BMU模块进行设计,仿真结果如图2所示[3]。

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