您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

用TMS320C54X实现Vertibi译码器

时间:2007-1-20栏目:电子通信论文

其中SDn表示接收序列,Gn(j)为网格上每个路径状态的期望输入值,j是路径指示值,C为编码速率的倒数。将(1)式展开得:

用TMS320C54X实现Vertibi译码器

对于所有的路径来说,用TMS320C54X实现Vertibi译码器都是一样的,2只是个常数,在进行各路径度量值比较时,可以不考虑。这样可简化为:

用TMS320C54X实现Vertibi译码器

省去胶面的负号,在度量值的比较时取最大值。对于编码速率为1/2的卷积码,分支度量为:

T=SD0G0(j)+SD1G1(j)    (4)

当编码速率为1/3时,分支度量为:

T=SD0G0(j)+SD1G1(j)+SD2G2(j)    (5)

Gn(j)用双极性表示,即0用+1表示,1用-1表示。这样分支度量值的计算可以进一步简化为接收数据的加和减。

下面给出编码速率为1/3时,DSP实现具体程序。

LD *AR1+,16,A ;A=SD(2*i)

ADD*AR1+,16,B,B ;B=SD(2*i)+SD(2*i+1)

ADD*AR1-,16,B,B ;B=SD(2*i)+SD(2*i+)+SD(2*i+2)

STH B,*AR2+ ;temp(0)=SD(2*i)+SD(2*i+2)

SUB*AR1+,16,A,B ;B=SD(2*i)-SD(2*i+)

ADD *AR1-,16,B,B ;B=SD(2*i)-SD(2*i+1)+SD(2*i+2)

STHB,*AR2+ ;temp(1)=SD(2*i)-SD(2*i+1)+SD(2*i+2)

SUB *AR1+,16,A,B ;B=SD(2*i)-SD(2*i+1)

SUB *AR1-,16,B,B ;B=SD(2*i)-SD(2*i+1)-SD(2*i+)

STH B,*AR2+ ;temp(2)=SD(2*i)-SD(2*i+1)-SD(2*i+2)

ADD *AR1+,16,A,B ;B=SD(2*i)+SD(2*i+1)

SUB *AR1+,16,B,B ;B=SD(2*i)+SD(2*i+1)-SD(2*i+2)

STH B,*AR2 ;temp(3)=SD(2*i)+SD(2*i+1)-SD(2*i+2)

加比选单元是Vertibi译码器的核心单元。它的主要功能是取出当前状态的量度值,分别与其两个后续支路的量度相加并比较,选择罗小的一个作为后续状态的量度,并保存幸存支路。图3给出了该算法的示意图。

C54X片内的比较、选择和存储单元(CSSU)就是专门为Viterbi算法设计的加法/比较/选择(ACS)运算的硬件单元。图3所示的运算包括加法、比较和选择三部分操作。其加法运算由DSP的ALU完成。只要将状态寄存器ST1中的C16位置成1,ALU就被配置成双16位工作方式,这样,就可以在一个机器周期内执行两次加法运算。其结果(Old_Met1+D1和Old_Met2+D2)都是16位数,分别存放在累加器的高16位和低16位中。然后,利用CMPS指令对累加器的高16位和低16位进行比较,并选择出较

上一页  [1] [2] [3] [4] 下一页

下页更精彩:1 2 3 4 下一页