1 / 7
文档名称:

3G测试系统中的Viterbi译码及其DSP实现及优化(精).doc

格式:doc   大小:241KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

3G测试系统中的Viterbi译码及其DSP实现及优化(精).doc

上传人:帅气的小哥哥 2024/5/12 文件大小:241 KB

下载得到文件列表

3G测试系统中的Viterbi译码及其DSP实现及优化(精).doc

相关文档

文档介绍

文档介绍:该【3G测试系统中的Viterbi译码及其DSP实现及优化(精) 】是由【帅气的小哥哥】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【3G测试系统中的Viterbi译码及其DSP实现及优化(精) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。3G测试系统中的Viterbi译码及其DSP实现及优化来源:EDN电子设计技术|?发表于:2024年07月10日本文相关DataSheet:TMS320C54X????TMS320C55X????TMS320C55x???? 摘要介绍了一种用于测试TD-SCDMA手机终端测试平台中的关键技术——Viterbi译码。研究用约束度K=9的卷积编码和最大似然Viterbi译码的过失控制方案,在Viterbi译码算法中,提出了原位运算度量、保存路径转移过程和循环存取幸存路径等方法,能有效地减少存储量、降低功耗,使得K=S集成环境平台和TMS320C55XDSP芯片上实现,其性能指标符合3GPP通信协议标准要求,文中给出了适用于DSP编程的算法,给出了DSP具体实现,同时给出了硬件的仿真结果。 0、引言 随着TD-SCDMA产业化进程的日益明朗,3G之战还未吹号,硝烟味已弥漫了黎明前的市场。这就要求尽快提供好的手机终端。对手机终端的性能测试越显得迫在眉睫。由于重邮信科3G研究院在TD方面有着很成熟的技术和经验,在此根底上我们不但推出了3G样机,而且致力于开发好的TD手机测试平台,本文所介绍的Viterbi译码方法是独具特色的TD测试平台中所用到的。3GPP中TD-SCDMA系统采用了3种信道编码方案:卷积编码、Turbo编码和不编码。不同类型的传输信道所使用的编?码方案和编码效率是不同的。本文介绍针对卷积编码的Viterbi译码方案。针对DSP设计的特点,本文在不改变纠错性能的前提下提出了一系列的方法,如原位运算、保存转移、循环存取等,旨在将存储器的容量减到最小,将整体功耗降到最低。 1、Viterbi译码原理[1] Viterbi译码算法〔简称VA算法〕是由Viterbi在1967年首先提出的,它是一种针对卷积码的最大似然译码算法。他不是在网格图上依次比较所有的可能路径,而是接受一段,计算、比较一段,保存最有可能的路径,从而到达整个码序列是一个最大似然序列。Viterbi译码算法优点是在码的约束比较小时,它比序列译码算法效率更高、速度更快,译码器也较简单。缺点就是随着约束长度的增加算法的复杂度增加很快。约束长度N为7时要比较的路径就有64条,为8时路径变为128条。〔2<<〔N-1〕〕。所以Viterbi译码一般应用在约束长度小于10的场合中。虽然有许多算法降低了复杂性、减少了运算量,但它们必然以牺牲性能为代价。本文研究的出发点是立足于不降低算法性能,寻求在实现最大似然译码时的优化方法。而这点我们主要是通过与硬件实现相结合做到的。Viterbi算法主要由路径度量的“加比选〞运算、度量的更新、路径的更新、最大似然路径的回溯过程组成。 Viterbi译码算法流程图如图1所示。图1 Viterbi译码算法处理流程 2、具体DSP实现及优化方法 分支度量 每收到一个符号就进行状态转移,Viterbi译码算法必须计算前一个状态到各个新状态的分支度量值,当采用硬判决输入时,分支度量值可用汉明距离表示;假设用软判决输入时,采用欧氏距离来计算。本文实现是利用软判决来实现的。具体原理如下[2]: 对于编码速率为R=1/C的卷积码来说,欧氏距离: 其中C为码率的例数。即:R=1/C。上式可以分解为: 其中的 在一级中都是一样的。中间项的2只是一个常数可以不考虑。所以分支度量值可以简化为: 省去上式前面的负号,但在分支度量值比较时应取大值。将其中的Gn〔j〕用双极性表示。即0用+1表示,1用-1表示。那么分支度量值变为: 所以在状态转移图中一级中的分支度量值的绝对值只有两个值。在译码过程中,由于度量的数值是累加的,会造成溢出,解决的方法是在每一步运算时将各个状态的度量减去前一步所有状态度量的最小值。那么度量的精度如何控制呢?也就是说,要用多少二进制位来表示度量既不溢出又使存储量最小?对于码率为1/2,约束度为K的卷积码的硬判决译码,在每一步的度量的最大值与最小值的差不超过2〔K-1〕。由此可以知道度量跨度的最小二进制比特数为[log2〔2〔K-1〕〕]。当K=9时,可以用5比特二进制位来运算和存储每一步的度量。事实上,这一结论也可以从状态转移情况推得。假设在第i步某一状态具有最大度量且为2〔K-1〕+1+M〔设最小度量为M〕,根据式〔1〕、〔2〕的度量递推规那么,在第i-1步必有相邻连续两状态的度量大于2〔K-1〕-2+M,在第i-2步必有连续4个状态的度量大于2〔K-1〕-4+M,在第i-S步必有连续2S个连续状态的度量大于2〔K-1〕-2×S+M,那么在第i-〔K-1〕步必有连续2〔K-1〕个连续状态的度量大于M,而对约束度为K的卷积码其总状态数只有2K-1个,总存在一个最小状态度量不大于M,从而导出矛盾,因此度量跨度最大值不可能超过2〔K-1〕。 度量值更新 〔1〕计算每一个可能路径的每一步的距离值。〔2〕计算各条路径的累计值。〔3〕选择并且保存累加值最小的那条路径。〔4〕保存该条被选出的路径轨迹。在传统的Viterbi译码算法中,译码状态的转移导致度量的读出和写入地址不同,这使得度量的更新复杂化,尤其是在用DSP硬件实现时需要大的存储空间或降低了处理能力。如果能够使度量的读出与写入地址相同,就可使存储空间减小一半或使译码速度提高一倍。通过研究可以发现,译码过程中的状态转移具有很好的规律性,如果建立了转移后的新状态与转移前的老状态的地址映射关系,就可使度量迭代在原位进行。即新状态的度量是由能够转移到达的两个相邻老状态的度量经过“加比选〞运算获得的。由于转移前后的状态〔地址〕不同,度量的读出与写入不能在同一地址进行,也不能在同一片存储器内进行〔会破坏其它状态的度量〕,必需配置相同的读和写空间〔各2K-1个字单元〕,并在每产生一位译码输出后交换读写空间,到达更新度量的目的。这在实现时既不方便,又消耗资源。但如果我们将新状态的度量放回老状态地址中,至少不会破坏其它状态的度量。规定:新状态的内容放回老状态的单元中,构成原位运算。? 回溯 当接收完一帧数据后,添加?尾比特强迫网格图的最后一个状态为0状态,回溯就是从最后一个状态〔0状态〕开始,反向追踪最大似然路径,完成原始数据的译码。 该步中具体实现技巧:按常规,新状态的总的路径值是老状态的总的路径值〔L比特〕左移一位后加上当前一步路径值,这就需要先读出L比特数据,做一次移位操作,再写入L比特数据,这样假设单纯用DSP编程来实现,那么很消耗内存。在我们所设计的测试平台中,设法将该步用硬件来实现。这样,在整个平台的设计中,我们利用了ARM存储数据的特点。对RAM的读写比特数为2L。由于RAM的功耗正比于单位时间内的读写比特数,我们设法减少每一次路径更新所需的读写比特数。研究译码路径中各状态转移可以发现,路径信息已经隐含在状态信息中,因此没有必要保存这一步路径信息,而是要保存真正的“转移〞信息,即经过“加比选〞选出的新状态是由哪一个老状态转移来的。有了这种“转移〞信息就不难逐步回溯到前L步,作出译码输出判决。规定:如果新状态0AK-2AK-3…A2A1是由老状态AK-2AK-3…A2A10转移来的〔经过了“加比选〞运算〕,那么路径转移为“0〞:如果是由老状态AK-2AK-3…A2A11转移来的,那么路径转移为“1〞;如果新状态1AK-2AK-3…A2A1是由老状态AK-2AK-3…A2A10转移来的,那么路径转移为“0〞;如果是由老状态AK-2AK-3…A2A11转移来的,那么路径转移为“1〞。根据这个规定,每一步各状态的路径转移值唯一确定了前一步的各对应的状态,从而可以方便地进行路径保存与回溯,更重要的是,每个状态路径的更新只需写1个比特路径。 Viterbi译码的DSP实现流程图 根据Viterbi译码算法和TMS320C55XDSP芯片的特点,我们设计出了适合汇编语言编程的流程图。通过2步中的优化算法考虑,我们设计出了译码流程图如图2所示:图中R表示编码效率,可取的值为1/2,1/3。图2 DSP实现流程图 译码关键步骤中的DSP程序实现 译码中最关键的局部就是加比选单元〔ACSU〕的工作。在C55xDSP中,可以应用指令ADDSUB,SUBADD和MAXDIFF来完成各个状态路径度量值的累加,比较和选择工作。在一个蝶形循环内,为了方便调用,可以定义两个宏p0,p1。 ACSU的DSP程序如下: 该实现中我们使用了并行处理命令||MOVAC2,*AR7+,*AR6。每一条并行命令节省一个机器周期。这样总程序运行时间就会缩短很多。在存储器的使用方面我们考虑到存储空间的有效利用,及时释放掉所占用的不必要内存。这样在整个内存分配上减少了不必要的存储冗余。从而使得整个程序运行效率更高,运算速度更快。 S〔poserStudio〕简介[3,4] C55x是德州仪器公司〔TI〕新一代定点DSPC5000系列的代表。它对C54x的体系结构进行了改进和增强,源代码与C54x完全兼容,目前版本的C55x工作频率可达160MHz左右。C55x最显著特点是超低功耗,可以预见它有广阔的应用前景。从CPU体系结构方面来看,C55x具有以下主要特点:①32×16bit指令缓冲队列;②双MAC和双AIU单元;③4个40位累加器;④数据与地址总线多达12条{⑤灵巧的节能配置。增强的结构设计使得C55x具有并行执行功能,这一强大功能可大大节省程序执行周期,尤其对于一些运算密集的应用效果更明显。在实现维特比算法这一特定应用方面,C55x有精心的设计:它扩增了专门用于VA的指令maxdif,使得计算每个蝶形图单元的所需时钟周期仅为3个〔C54x需4周期〕,同时兼顾到SOVA算法的要求,这种改进是令人鼓舞的}转移存放器增加到2个,分别为TRN0和TRN1,简化了维特比算法中回溯的实现暂存器Tx多达4个,可减少分支路径度量的搬运存储。 〔poserStudio〕是一种针对标准TMS320调试接口的集成开发环境〔IDE〕。由TI公司于1999年推出。它提供了环境配置、源文件编辑、程序调试、跟踪和分析等工具,可以帮助用户在一个软件环境下完成编辑、编译链接、调试和数据分析等工作。S只适用于一种系列的DSP芯片。S所具有的强大数据分析功能,我们能通过各种方式来分析,检验系统的性能。 S下译码DSP实现图形[4] CCS提供了几种分析工具,其中图形显示功能是最直观的一种,其可以提供的图形显示包括时频分析、星座图、眼图和图像显示。各图形显示所采用的工作原理根本相同,即采用双缓冲区〔采集缓冲区和显示缓冲区〕分别存储和显示图形。采集缓冲区存在于实际或方针目标板,包含用户需要显示的数据区。显示缓冲区存在于主机内存中,内容为采集缓冲区的拷贝。 图3是时频图中的双曲线图〔DualTime〕,该图形是对显示缓冲区中的数据不加处理,直接画出显示缓冲区中数据的幅度—时间曲线。图中虚线构成的曲线是卷积编码输入数据的时频图,实线构成的曲线是Viterbi译码输出数据的时频图。图3 Viterbi译码输出与卷积编码输入时频图 5、结论 以前Viterbi译码算法对于大数据量的译码存在局限性,本文利用软件与硬件结合使用来来消除这一限制。通过原位运算、保存转移、循环存取等优化手段,我们将存储器的容量减到最小,将整体功耗降到最低,通过验证编码输入与译码输出图形,我们可以容易地得到译码效率,S开发环境可以很好地得到编码输入和译码输出数据比较图形。通过硬件方针可以知道,该译码效果非常好,它适用于大数据量传输的3G系统中。很好地解决了接收链路中的瓶颈问题。我们所设计出的该测试平台是针对TD-SCDMA系统的。由于设计中跟TD-SCDMA手机中译码过程相对照,我们可以有效防止因测试系统与应用系统不相对应而造成的麻烦。 参考文献 1 . 2 3 :清华大学出版社. 4 . 5 -SCDMA第三代移动通信系统、信令及实现[M]北京:人民邮电出版社,-112.