二:viterbi译码器
(2,1,7)卷积码译码过程的总体结构可分为4个子模块,分别是分支度量模块,加比选蝶形运算单元,幸存路径存储单元和回溯译码单元。
译码器的结构框图如图3所示。
·分支度量计算单元
分支度量计算单元是用来计算输入信号序列与卷积码各个可能输出信号序列的似然度量,维特比的似然准则就是在寻找具有最小距离的路径。若译码器采用硬判决译码时,分支度量计算采用汉明距离,而采用软判决译码时,则是采用欧氏距离,即计算
采用这种方法,与采用欧氏距离相比,对译码器的性能影响不大,该译码器的性能与采用欧氏距离的译码器性能差仅有0.1~0.2dB。
由上式可以看出,如果采用8电平量化软判决方式,则此时路径度量值扩展为0到14,所以分支度量单元的输入是3比特数据,而输出则是4比特数据,这样硬件实现比较简单,可以减少硬件开销。
其硬件实现电路结构如图4所示。由于本设计中采用的是(2,1,7)卷积码,所以一级中共有64个结点,需要64个分支度量计算单元,在实现中,采用了全并行的结构,这样在一个时钟周期内,可以更新所有64个结点的分支度量值。
图4 分支度量计算单元的硬件电路结构
其代码如下所示:
assign I = (en) ? Iin : 0; //软判决输出模块
assign Q = (en) ? Qin : 7; //软判决输出模块
assign recom = reset &en | start;
wire [3:0] bm0,bm1,bm2,bm3;
assign bm0=bm00(I,Q);//BM模块的输出
assign bm1=bm01(I,Q);//BM模块的输出
assign bm2=bm10(I,Q);//BM模块的输出
assign bm3=bm11(I,Q);//BM模块的输出