网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> C5000文章 >> C54X系列 >> 文章正文
  [组图]数字卫星通信中的Viterbi算法及DSP实现         ★★★ 【字体:
数字卫星通信中的Viterbi算法及DSP实现
作者:董鹏1,张…    文章来源:电子工程师    点击数:    更新时间:2007-1-1    

董鹏1,张锁熊2,田迎举3

(1郑州大学 信息工程学院河南 郑州450052
2
信息产业部二十七研究所河南 郑州450005
3
郑州空管中心河南 郑州450003)

      :介绍了应用于数字卫星通信的Viterbi(维特比)译码算法,讨论了影响编码增益的几个参数,提出了用TI(德州仪器)公司TMS320C54X实现译码算法的具体方法。
   
关键词Viterbi算法;蝶形运算单元;距离度量;回溯深度;CCSU

    在数字卫星通信系统中,广泛采用差错控制技术,以保证信号经有噪声及各种干扰的信道传输后的质量。对于卫星功率受限系统,采用差错控制技术后,在相同误比特率的条件下,对卫星所转发的信号能量可要求小一些,因而可以提高信道容量。Viterbi算法是基于最大后验概率的卷积译码算法。在编码约束长度不太长或误比特率要求不太高的条件下,计算速度快,且设备比较简单,故特别适用于基本上是白噪声高斯信道的卫星通信系统中纠随机差错。3GPP(第三代移动通信伙伴关系)的WCDMA标准,以及CCSDS(空间数据系统咨询委员会)的Planetary标准都将卷积码作为实时要求较高业务的信息纠错编码,使Viterbi译码器成为第三代移动通信系统及卫星通信系统的重要组成部分。

1Viterbi算法
    Viterbi算法为最大后验概率译码,等价于在篱笆图上找出与接收序列距离最小的路径,进行路径回溯获得判决输出。下面对译码算法的几个方面进行讨论。
1.1
蝶形运算单元
    Viterbi译码的基本运算单元可以看作一个蝶形运算单元,如图1所示。

   

从图1可以看出,状态S(i)S(i+1)S(i/2)S(i/2+2m-1)组成蝶形运算单元。S(i/2)为本地编码器,输入为0时,状态S(i)S(i+1)的状态转移;S(i/2+2m-1)为本地编码器,输入为1时,状态S(i)S(i+1)的状态转移。蝶形运算单元的运算可以用式(1),式(2)表示:


其中:dn(j)表示更新状态j的累加距离度量,d0(j)表示原状态为j的累加距离度量。表示输入为i时,由状态j出发接收码元与本地编码的距离度量。
   
蝶形运算单元的运算可以概括为“加比选”。即首先累加进入更新状态的两条路径的距离度量,然后比较两个距离度量,最后选出距离度量最小的一条作为幸存路径。

1.2
路径回溯
    译码输出是通过在篱笆树以最大后验概率向后回溯得到。考虑到硬件的可实现性及在实际当中幸存路径会以很大概率在第L个译码时刻后重合在一起,所以一般取L=(510)m作为回溯深度,其中m为编码存储。并且L取的越大,译码的误码率就越低,其仿真结果如图2所示。可以看出在相同的信噪比下,回溯深度L=60Viterbi译码器误码率要小于L=30的译码器。

2 DSP实现
    TMS320C54X是应用于通信设备的通用DSP芯片。该芯片采用了改善的哈佛结构,拥有优化的CPU1条程序总线,3条数据总线和4条地址总线,因而在1个周期内可以完成取指,2次读和1次写的操作。另外其CCSU(累加比较选择单元)结构及相应指令提高了译码速度。根据上面的算法讨论,译码过程分成3步:
2.1
存储空间的初始化
    译码需要的存储空间有4部分:
   
输入缓冲区输入缓冲区为一连续存储空间,其空间大小为Fs/R字。其中Fs为信源的帧长度,R为编码率。
   
输出缓冲区由于在每个译码时刻译码输出为1位,16个输出位经过打包为1个字,则输出缓冲区需要空间大小为Fs/16字。
   
转换表存储区转换表存储空间的大小由编码存储和帧长决定,空间大小为2m-4×Fs字。
   
状态矩阵存储区状态矩阵存储区需要2个存储区,一个存储区存储原状态矩阵,另一个存储更新状态矩阵,每个缓冲区的空间大小为2m
2.2
矩阵更新
    TMS320C54X可分离的ALU,双累加器和相应指令可并行完成“加比选”的某些过程。当本地距离存储在T寄存器时,处理器可以在1个指令周期完成2条路径的距离度量的累加。双加减指令DADSTDSADT1个指令周期里完成从存储单元取出原始状态累加距离度量与T寄存器的本地距离相加,并将累加器中的低16位存储在更新状态矩阵;然后从下个存储单元取出原始状态累加距离度量与T寄存器的本地距离相减,并将结果存入更新状态矩阵。所以1条指令完成2条路径的度量计算。路径的比较、存储由1CMPS指令完成。其部分代码为:


2.3路径回溯
    路径回溯主要是在转换表中找出每个译码时刻的正确译码输出位,表1给出了转换表结构。


其中转换字位置和转换字位位置由式(3),式(4)决定:


其中word为转换表中字位置,Bit为转换表中位位置,state为当前位置,mask为屏蔽字(取值为2m-4-1),state>>n表示状态右移n位。确定该时刻的译码输出位后,将此时刻的状态state左移1位,并将译码输出位左移进状态state的最低位,得到下一时刻的状态。重复上面过程直到回溯结束。其部分代码为:

3结语
    蝶形运算单元构成了Viterbi译码的基本单元。其算法就是以一个蝶形运算单元为基础进行“加,比,选”的过程,并选择合适的回溯深度,然后进行路径回溯。而利用TMS320C54XCCSU结构及相应指令可并行完成蝶形运算单元的某些运算,简化了译码过程,提高了译码的速度,可以满足高速实时的卫星通信业务需要。

参考文献

1Henry HendrixViterbi Decoding Techniques for the TMS320C54X DSP Generation[DBTI Application Report,2002(1)
2Blahut R E差错控制码的理论与实践[M.广州:华南理工大学出版社,1990
3]王新梅,肖国镇纠错码原理与方法[M.西安:西安电子科技大学出版社,1990
4]戴明桢,周建江TMS320C54X DSP结构·原理及应用[M.北京:北京航空航天大学出版社,2001

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号