用TMS320C54X实现Vertibi译码器
其中SDn表示接收序列,Gn(j)为网格上每个路径状态的期望输入值,j是路径指示值,C为编码速率的倒数。将(1)式展开得:
对于所有的路径来说,都是一样的,2只是个常数,在进行各路径度量值比较时,可以不考虑。这样可简化为:
省去胶面的负号,在度量值的比较时取最大值。对于编码速率为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)
《用TMS320C54X实现Vertibi译码器(第2页)》