minitos的个人空间 https://bbs.21ic.com/?417199 [收藏] [复制] [RSS]

日志

数字卫星通信中的Viterbi算法及DSP实现

已有 1197 次阅读2009-4-24 10:54 |系统分类:嵌入式系统

(转)

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

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


1Viterbi算法
    Viterbi算法为最大后验概率译码,等价于在篱笆图上找出与接收序列距离最小的路径,进行路径回溯获得判决输出。下面对译码算法的几个方面进行讨论?br> 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)表示_br>
其中:dn(j)表示更新状态j的累加距离度量,d0(j)表示原状态为j的累加距离度量?img height="35" border="0" width="40" src="http://www.51kaifa.com/upload/eWebUpload/20060303100700223.jpg">表示输入为i时,由状态j出发接收码元与本地编码的距离度量?br>     蝶形运算单元的运算可以概括为“加比逿rdquo;。即首先累加进入更新状态的两条路径的距离度量,然后比较两个距离度量,最后选出距离度量最小的一条作为幸存路径?
1.2路径回溯
    译码输出是通过在篱笆树以最大后验概率向后回溯得到。考虑到硬件的可实现性及在实际当中幸存路径会以很大概率在第L个译码时刻后重合在一起,所以一般取 L=(5?0)m作为回溯深度,其中m为编码存储。并且L取的越大,译码的误码率就越低,其仿真结果如图2所示。可以看出在相同的信噪比下,回溯深度 L=60的Viterbi译码器误码率要小于L=30的译码器?



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


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



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


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


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


参考文猿/font>


_]Henry Hendrix Viterbi Decoding Techniques for the TMS320C54X DSP Generation [DB]TI Application Report,2002(1)
_]Blahut R E 差错控制码的理论与实践[M_广州:华南理工大学出版社_990
_]王新梅,肖国镇 纠错码原理与方法[M_西安:西安电子科技大学出版社,1990
_]戴明桢,周建江 TMS320C54X DSP结构·县理及应用[M_北京:北京航空航天大学出版社_001



PS: http://www.51kaifa.com/html/jswz/200603/read-5390.htm

(转自:http://www.ebablg.com/h4901/blog/item/64c9f9f26ed9ca1bb17ec53f.html)


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)