基于C54XDSP的viterbi译码技术.docx

上传人:牧羊曲112 文档编号:1667677 上传时间:2022-12-13 格式:DOCX 页数:37 大小:502.47KB
返回 下载 相关 举报
基于C54XDSP的viterbi译码技术.docx_第1页
第1页 / 共37页
基于C54XDSP的viterbi译码技术.docx_第2页
第2页 / 共37页
基于C54XDSP的viterbi译码技术.docx_第3页
第3页 / 共37页
基于C54XDSP的viterbi译码技术.docx_第4页
第4页 / 共37页
基于C54XDSP的viterbi译码技术.docx_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《基于C54XDSP的viterbi译码技术.docx》由会员分享,可在线阅读,更多相关《基于C54XDSP的viterbi译码技术.docx(37页珍藏版)》请在三一办公上搜索。

1、 本科毕业设计说明书(论文) 第 37 页 共 37 页1 引言卷积码的概率码最早始于1961年由Wozencraft提出的序列译码,这是第一个实用的概率译码方法,1963年Fano对序列译码进行改进,提出Fano算法,从而推动了序列译码的实际应用。1967年Viterbi提出了另一种概率译码算法:Viterbi算法,它是一种最大似然译码算法。在码的约束比较小时,它比序列译码算法效率更高、速度更快,译码器也较简单。因而自Viterbi算法提出以来,无论在理论上还是实践上都得到了极其迅速的发展,并广泛应用于各种数据传输系统,特别是卫星通信系统中。1.1 卷积码的发展卷积码是深度空间通信系统和无线

2、通信系统中常用的一种编码。卷积码与分组码不同,它的本码组的校验元不仅与本组的信息元有关,而且还与以前各时刻输入至编码器的信息组有关。在编码过程中,卷积码充分利用了各码字间的相关性,而且它的信息元和校验元也比分组码小,在与分组码同样的码率R和设备复杂性条件下,无论从理论上还是从实践上都证明卷积码的性能至少不比分组码差;而且卷积码在实现最佳译码也较分组码容易。所以从信道编码定理来看,卷积码是一种非常有前途的码类。在IS-95.CDMA的无线数字蜂窝标滩中都采用了卷积码;在第三代无线通信系统的蜂窝结构中所采用的Turbo码,也是源自卷积码。卷积码是由伊利亚斯(P.Elias)发明的一种非分组码。通常

3、它更适用于前向纠错,因为对于许多实际情况它的性能优于分组码,而且运算简单。卷积码是一种线性树码,由于该码的输出序列是输入序列和编码器的冲击响应的离散时间卷积,故名卷积码。其一般结构包括:一个由N段组成的输入移位寄存器,每段k个,共Nk个移位寄存器、一组n个模2和相加器,一个由n级组成的输出移位寄存器。对应于每段k个比特的输入序列,输出n个比特。卷积码常记为(n,k,N-1),当k等于1时,N-1就是寄存器的个数。卷积编码器是由记忆的,即一组信息码元的校验码元不但取决于本组信息元,而且还与前m=N-1组信息码元有关。其中m被称为编码存贮,N=m+1被称为编码约束长度。一个卷积码不但可以通过增加校

4、验码元(相应地降低编码效率)来改善纠错性能,更可以用增加编码约束长度的方法提高纠错能力1。卷积码的概率译码方法主要有两种:viterbi译码算法和序列译码算法(费诺算法)。其中,viterbi算法的复杂度和编码约束度成指数关系,所以只适合m较小的卷积码或者误码率高于10-5的应用。由于该算法的收敛性与信道干扰程度无关,所以计算量是固定的,译码实时性较好;另外该算法适合软判决译码,可以获得额外的编码增益。序列译码(费诺算法)的复杂度与m无关,适合大编码约束长度(即具有较大自由距离)的卷积码或者误码率低于10-6的业务需求。这种算法的收敛速度与信道干扰程度有关,译码实时性较差,使用软判决较为复杂2

5、。本文主要研究(2,1,7)卷积码的viterbi译码,其中码率为1/2,约束长度为7,共有64个状态。1.2 数字信号处理(DSP)20世纪60年代以来,随着大规模集成电路、数字计算机等信息技术的飞速发展。数字信号处理(Digital Signal Processing,DSP)技术应运而生并得到快速的发展。在过去的20多年里,DSP在理论和应用方面不断地进步和完善,在越来越多的应用领域中迅速取代传统的模拟信号处理方法,并且开辟出许多新的应用领域。目前数字信号处理技术已经在通信、雷达、航空航天、工业控制、生物医学工程、网络及家电领域得到极为广泛的应用,数字时代正在到来。由于DSP技术应用非常

6、广泛,迫切需要一种能高效完成复杂数字信号处理或数字系统控制,能够作为DSP系统核心的器件。因此,众多半导体厂商投入到高性能数字信号处理器(Digital Signal Processors,DSPs)芯片的研发当中。1982年,美国德州仪器公司(Texas Instruments Incorporation,简称TI公司)推出了该公司的第一款DSPs芯片,很快DSPs芯片就以其数字器件特有的稳定性、可重复性、可大规模集成和易于实现DSP算法等优点,为数字信号处理技术带来了更大的发展和应用前景。采用各种类型DSPs实现系统的数字化处理和控制已经成为了未来发展的趋势,并且随着DSPs运算能力的不断

7、提高,数字信号处理的研究重点也由最初的非实时应用转向高速实时应用3。本文主要讲用到TI公司的C54X系列的DSPs芯片,并将在CCS2000(for 5000)平台上进行仿真、运行。在TMS320C54系列DSP的应用设计中,DSP的运行速度是衡量系统性能的一项重要指标,要达到预期的运行速度,就要给DSP系统的程序空间设计一个高速程序存储空间。常用的存储器件分为停电数据丢失和停电数据不丢失两类。停电数据丢失的器件有RAM;停电数据不丢失的有ROM,EPROM,FLASH等,其中FLASH因读写方便快速而较常用。在对DSP硬件进行编程时,有时C语言不如汇编语言方便,有时根本不能用C语言进行编程。

8、因此,对实时性要求较高或需对硬件直接控制的功能,如A/D采用程序及数字信号处理的核心算法等,可由汇编语言实现;而对运行速度和代码效率要求不高但要求可读性强维护容易的程序,如系统初始化、用户操作界面等,则用C语言编写。因此,混合编程法已成为开发TMS320C54X DSP应用程序的常用方法。要想开发基于C54X DSP系统,首先要有C54X DSP的仿真器,才能实现程序的下载及调试。在没有仿真器的情况下,也同样可以开发DSP系统,因为C54X DSP提供JTAG口和HPI口用于程序的下载,可以根据相应协议设计自己的开发系统。其中,HPI是8位的数据总线接口,由于C5000系列DSP是16位,所以

9、与主机通信的数据都是由2个连续的字节组成4。C54X主要特点如下:具有先进的多总线结构,一条程序总线三条16位数据总线和四条地址总线;40位算术逻辑单元(ALU),包括一个40位桶形移位器和两个40位累加器;一个17*17乘法器和一个40位专用加法器,允许16位带/不带符号的乘法;整合viterbi加速器,用于提高viterbi编译码的速度;单周期正规化及指数译码;8个辅助寄存器及一个软件栈,允许使用业界最先进的定点DSP C语言编译器;数据/程序寻址空间1M*16bit,内置4k*16bit ROM和16k*16bit RAM;低功耗,工作电压为1.8V/3.3V。1.3 本文研究对象本文所

10、设计的viterbi译码是基于C54X DSP实现的。在此之前,要先运用matlab软件对viterbi译码程序进行仿真,再在ccs2000(for 5000)环境下进行软件仿真。在viterbi译码器的设计中,采用了并行加比选(ACS)碟形算法来完成对分支度量、路径度量的计算,以及对幸存路径的选择和路径溢出的控制,在对幸存路径的处理上,有两种经典的算法,一种是寄存器交换(register exchange)算法,另一种是回溯(trace_back)算法,本文所设计的viterbi译码采用回溯算法。同时viterbi译码器还同时支持硬判决和软判决。通过matlab和ccs上的仿真,我们将具体呈

11、现viterbi译码的正确性和实用性,以及viterbi译码器的误码性能。2 卷积码卷积码至今尚未建立像线性分组码那样有严密而完整的数学分析体系,分析它的方法也很多,但都有一定的局限性。描述卷积码的方法大致可以分为解析表示法和图形表示法。解析法又分为生成矩阵法、码多项式法等;图形表示法也可以分为状态图法、树图法、网格图法等。2.1 卷积码的编码及其应用2.1.1 卷积码的编码表达形式对于一个信道,最不确定的因素就是噪声干扰,引起差错的往往也是噪声。就噪声引发差错的统计规律而言可分为随机差错信道和突发差错信道。对于随机差错信道,它的差错主要是由加性高斯白噪声(AWGN)引起的。 根据编码信道的输

12、出是二电平、多电平或是模拟量(多电平数的极限)它可分为:二进制对称信道(BSC)、离散无记忆信道(DMC)、离散输入连续输出信道。BSC信道输入输出都是二进制的,也就是检测器实行门限硬判决;DMC信道的输入是二进制输出是多进制的,也就是检测器进行多电平量化,亦即所谓软判决:离散输入连续输出信道是DMC的极限情况。从香农(Shannon)信道编码定理可以看出要降低误码率,通过某种规则加入冗余信息(编码)是常用途径之一。常用的这些编码“规则”有:分组编码、卷积编码等等。寻找好的编码方法一直是信息论研究的重点与核心。在相同误码率的条件下,编码比不编码可以节省几个dB的信号功率,也就是说在同样的信噪比

13、条件下编码以后可以降低发射和接收功率。卷积编码是在实际中应用极为广泛的一种编码方法,可以用(n,k,m)来表示。其编码器是一个由k个输入端、n个输出端且具有m-1级移位寄存器所构成的有限状态的有记忆系统,m称之为编码约束长度,它表示编码码字的产生受m个信息分组的制约;k/n表示编码效率5。图2.1是卷积码的编码流程,卷积码至今尚未建立像线性分组码那样有严密而完整的数学分析体系,分析它的方法也很多,但都有一定的局限性。描述卷积码的方法大致可以分为解析表示法和图形表示法。解析法又分为生成矩阵法、码多项式法等;图形表示法也可以分为状态图法、树图法、网格图法等。图2.1 卷积码编码程序流程图下面结合(

14、2,1,3)卷积码来说明常用的几种表示法:树状图、状态图法和网格图法。图2.2 (2,1,3)卷积码树状图按照习惯的做法,码树的起点节点位于左边;移位寄存器的初始状态为00,分别用a,b,c和d表示寄存器,的4种状态:00,01,10和11,作为树状图中每条支路的节点。以全零状态a为起点,当第1位输入信息为零时,输出码元为00,寄存器保持状态a不变。输入第二个比特为1时,输出码元为11,寄存器则转移到状态b。然后再分别以这两条支路的终节点a和b作为处理下一位输入信息比特的起点,从而得到4条支路。以此类推,可以得到整个树状图。显然,对于第i个输入信息比特,途中将会出现2i条支路。从第4位信息开始

15、,树状图的上半部和下半部完全相同,这意味着此时的输出码元己和第1位信息无关,由此可以看出把卷积码的约束长度定义为N-1的意义。顾名思义,状态图法就是对编码寄存器做相应的状态标定,然后讨论编码规则的方法6。图2.3 (2,1 ,3 )卷积码的状态图从图2.3可以看出寄存器总的状态数为4 种,其状态标号为S0=00,S1=10, S2=01, S3=11。由于每次的输入有两种可能:0或者1,所以每次更新后的状态和编码输出可能也只有两个。四个圆圈内的分别表示状态及对应的寄存器信息,状态之间的连线与箭头表示状态转移方向,分支上的数字表示状态转移时相应的编码输出(码字),而括号内的数字则表示相应的输入信

16、息。例如,假定初始状态为s0 (00),若输入信息位为1,则输出码字为11,下一时刻的状态为S1(10);若输入信息位为0,则输出码字00,下一时刻的状态仍旧是S0(00)。它实际上就是一个有限状态机。状态转移图虽然表现了各状态转移的去向,但不能记录状态转移随时间的轨迹。另一种描述法一网格图法(也称栅格图法)可以弥补这一缺陷.它可以将状态转移展开在时间轴上,使整个编码的全过程跃然纸上。特别是在卷积码的概率译码中,它起着极其重要的作用。网格图以状态为纵轴,以时间为横轴,将平面分割成格状就像网格一样。状态以及状态转移的定义和状态转移图法一致,也是用箭头表示转移。箭头上方标出的是状态转移时的输出码字

17、(输入信息)。对于k=1的情况还可以用箭头的虚实来表示导致状态转移的输入是0还是1,实线表示0。虚线表示1。上一次转移与下一次转移在图上首尾相连以体现时间的变化。如图2.4所示的卷积码网格图。假设初始状态为S0,输入的信息序列仍为U=(1011100),则在网格图上状态转移轨迹为S0-S1-S2-S1-S3-S3-S2 -S0,相应的编码输出为(11, 01, 00, 10, 01, 10, 11)。对于不同的输入总能从网格图上找到唯一的一条路径(轨迹)与之相对应反过来,如果知道了状态转移的路径也就知道对应的输入信息。因此如果事先知道了状态转移路径为S0-S2-S1-S2-S3-S3-S1-S

18、0,则必然输入的信息序列为(1011100)。这对于卷积码的Viterbi译码中很重要,译码时就是根据最大似然准则找到这条路径,找了这条路径也就找到了相应的输入信息序列。图2.4 (2, 1, 3)卷积码的网格图上述三种表示方法各有千秋,是理解卷积码编译码方法的基础。2.1.2 卷积码的解析表示2.1.2.1 生成矩阵一个卷积码完全由一个监督矩阵H或生成矩阵G所确定。下面将寻找卷积码的生成矩阵。以(3,1,3)为例来讨论生成矩阵7。当第一信息比特输入时,若移位寄存器起始状态全为零。那么三个输出比特为, (2.1)第二个信息比特输入时,右移一位,那么输出比特为 , (2.2)当第j个(j3)信息

19、比特输入时,输出为: (2.3)式2.1可写成矩阵形式 (2.4)其中系数矩阵 (2.5)由上看到,在第一和第二信息比特输入时,存在过渡过程,此时有 (2.6)其中, (2.7)类同线性码的输出序列矩阵与输入序列矩阵的关系有 (2.8)式2.8中 = 为输入序列矩阵=为输出序列矩阵为生成矩阵,这里和显然是半无限矩阵。总括上面的编码过程,生成矩阵应该是 (2.9)式2.9中矩阵空白区元素都为0。显然,该生成矩阵是半无限矩阵,常记为。2.1.2.2 多项式我们可以用多项式来表示输入序列、输出序列、编码器中移位寄存器与模2和的连接关系。在一般情况下,输入序列可表示为 (2.10)这里为二进制表示(1

20、或0)的输入序列。常称为移位算子或延迟算子,它标志着位置状况。我们可以用多项式表示移位寄存器各级与模2加的连接关系。若某级寄存器与模2加相连接,则相应多项式的系数为1;反之,无连接线时的多项式项系数为0。以(3,1,3)编码器为例7,相应的生成多项式为 (2.11)利用生成多项式与输入序列多项式相乘,可以产生输出序列多项式,即得到输出序列。设输出序列为1101010111,借助上述输出多项式来求输出序列如下。输入序列多项式为 (2.12)所以 (2.13)即有序列=1 1 0 1 0 1 0 1 1 1 =1 1 1 0 0 0 0 0 1 0 =1 0 0 0 1 0 1 0 0 1 (2.

21、14)于是输出序列= 1 1 1,1 1 0,0 1 0,1 0 0,0 0 1,1 0 0,0 0 1,1 0 0,1 1 0,1 0 1,为方便起见,人们常用八进制序列和二进制序列来表示生成多项式,比如 (2.15)2.1.3 卷积码的应用从信道编码定理看,卷积码是一种很有前途的能达到信道编码定理所提出的码型,广泛应用于各种领域如:数字卫星通信系统、遥测外测系统、GSM (Group Special Mobile)、3G(第三代移动通信)、各种数字电视标准等等。例如:绝大多数卫星通信采用的是(2,1,7)卷积码:GSM采用了 (2,1,5)卷积码;CDMA的IS-95标准采用的是(2,1,

22、 9)卷积码;3GPP(第三代移动通信伙伴关系)的WCDMA正向信道采用的是(2,l,9) 卷积码,反向信道采用的是(3,1,9 )卷积码;CCSDS(空间数据系统咨询委员会)也把卷积码作为实时要求较高业务的信息纠错编码。此外卷积码还和RS码作为一对黄金搭档常常级连使用,RS码做为外码卷积码作为内码用于DVB(欧洲数字视频广播)标准和ATSC(美国先进电视)标准等等。不同结构的卷积码有不同的特性,卷积码也分成系统卷积码和非系统卷积码等等,但这些不是本文研究的范畴。本文主要研究viterbi译码在DSP中的仿真以及在matlab环境下的仿真实验。2.2 卷积码的译码原理卷积码的译码方法可分为两大

23、类。一类是代数译码,利用编码本身的代数结构进行译码,不考虑信道本身的统计特性。该方法的硬件实现简单,但性能较差,其中具有典型意义的是门限译码。另一类是概率译码,这种译码通常建立在最大似然准则的基础上。由于计算是用到了信道的统计特性。因而提高了译码性能,但这种性能的提高是以增加硬件的复杂度为代价的。常用的概率译码方法有维特比译码和序列译码。2.2.1 代数译码代数译码8是从码字本身的代数结构出发,不考虑信道统计特性,在每次的计算循环之内,可全部译出一个码的支路。在信道传输中码字产生了错误,如果错误图样是已知的,则一定满足R=C+E (R为接收码元序列,C为发送码元序列,E为误码序列)。根据码元信

24、息位与监督位的关系,一个接收的码字有没有错误可以用监督矩阵H来检验,R,C,E之间有如式2.16关系式 (2.16)因为是一个码字,所以有,则。令或,称为伴随式或校验字。当时,判无错;当时,判有错。因此可以利用伴随式的内容对接收序列进行检错和纠错。伴随式与信道所产生的错误图样有关,而与发送的是哪一个码字无关。任何一个错误图样都可由公式(2.16)算出相应的伴随式。译码器的任务就是根据伴随式来确定错误图样,得到最可能发送的码字。适用于代数译码的卷积码是具有快检特性的系统卷积码。代数译码方法很多,且各有特点和使用场合,常用的有门限译码法。2.2.2 最大似然译码卷积码概率译码的基本思路是9:以断续

25、的接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性(概率)最大的一条作为译码估值输出。概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。卷积码的最大似然译码(NLD,Maximum Likelihood Decoding)与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。主要区别在于:分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。显然,序列的似然度与序列长度有关。如果把码组的似然度称作分支量度(BM,Branch Metric),把序列的累积似然度称为路径量度(PM,Path Metric)

26、,那么在相同序列长度下(长度L应足够大),具有最大路径的那个序列应选作译码估值序列输出。2.2.3 维特比译码的原理维特比译码一种最大似然译码算法13,最大似然译码过程就是根据接收序列,按最大似然译码准则力图找出编码器在网格图上所走过的路径,这个过程也就是译码器计算、寻找最大似然函数 (2.17)的过程,也可以说是计算、寻找有最大“度量”的路径的过程。对BSC(二进制对称信道)而言,计算、寻找有最大度量的路径,等价于寻找与R有最小汉明距离的路径,即寻找 (2.18) 而对二进制输入Q进制输出的DMC信道而言,就是寻找与R有最小软距离的路径,此时的度量就是软判决距离 (2.19)式2.19中,与

27、是接收序列R与序列的Q进制表示。但是,用这种方法译码是非常难以实现的。例如L=50,=3,=2,则网格图上共有=条不同路径;如果要在一秒钟内送出这=100个信息元,则信息传输率只有100 bit/s,这是很低的。但即使在如此低的信息速率下,也要求译码器在一秒钟内计算、比较个似然函数(或汉明距离),这相当于要求译码器计算每一似然函数的时间小于s,这根本无法实现。Viterbi译码算法正是在解决上述困难时所引入的一种最大似然译码算法。它并不是在网格图上一次比较所有可能的条路径,而是接收一段,计算、比较一段,选择一段最可能的码段,从而达到整个码序列是一个有最大似然函数的序列。2.3 卷积码的译码卷积

28、码的译码方式主要有三种:1963年Massey提出的门限译码,这是一种基于码代数结构的代数译码,类似于分组码中的大数逻辑译码。1963年有Fano改进的序列译码,这是基于码的树状图结构的一种准最佳概率译码。1967年Viterbi提出的Viterbi算法,基于码的网格图基础上的最大似然译码算法,是一种最佳概率译码。其中,代数译码,利用编码本身的代数结构进行译码,不考虑信道本身的统计特性。该方法的硬件实现简单,但性能较差,其中具有典型意义的是门限译码。另一类是概率译码,这种译码通常建立在最大似然准则的基础上。由于计算是用到了信道的统计特性.因而提高了译码性能,但这种性能的提高是以增加硬件的复杂度

29、为代价的。常用的概率译码方法有维特比译码和序列译码。维特比译码具有最佳性能,但硬件实现复杂;门限译码性能最差,但硬件简单;序列译码在性能和硬件方面介于维特比译码和门限译码之间。viterbi译码算法是一种卷积码的解码算法。缺点就是随着约束长度的增加算法的复杂度增加很快。约束长度N为7时要比较的路径就有64条,为8时路径变为128条。 (2(N-1)。所以viterbi译码一般应用在约束长度小于10的场合中。 先说编码(举例约束长度为7):编码器7个延迟器的状态(0,1)组成了整个编码器的64个状态。每个状态在编码器输入0或1时,会跳转到另一个之中。比如110100输入1时,变成101001(其

30、实就是移位寄存器)。并且输出也是随之而改变的。这样解码的过程就是逆过程。算法规定t时刻收到的数据都要进行64次比较,就是64个状态每条路有两条分支(因为输入0或1),同时,跳传到不同的两个状态中去,将两条相应的输出和实际接收到的输出比较,量度值大的抛弃(也就是比较结果相差大的),留下来的就叫做幸存路径,将幸存路径加上上一时刻幸存路径的量度然后保存,这样64条幸存路径就增加了一步。在译码结束的时候,从64条幸存路径中选出一条量度最小的,反推出这条幸存路径(叫做回溯),得出相应的译码输出。卷积码概率译码的基本思路是:以接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中

31、可能性最大的一条作为译码估值输出。概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。卷积码的最大似然译码与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。主要区别在于:分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。基于网格图搜索的译码是实现最大似然判决的重要方法和途径。用网格图描述时,由于路径的汇聚消除了树状图中的多余度,译码过程中只需考虑整个路径集合中那些使似然函数最大的路径。如果在某一点上发现某条路径已不可能获得最大对数似然函数,就放弃这条路径,然后在剩下的“幸存”路径中重新选择路径。在整个viterbi译码过程中一般是一下

32、几个步骤10:(1) 量化。将接收机接收的模拟信号转化成数字信号。(2) 码同步。检测码元帧的边界以及码元标志。(3) 分支度量计算。计算各个状态的接收码元和本地码元的汉明距离。(4) 状态度量更新。用各个状态新的路径度量代替前一时刻的路径度量。(5) 幸存路径存储。将Viterbi译码所需的网格图上所走过的路径记录下来。(6) 输出判决。根据幸存路径存储的信崽,产生译码序列的输出。根据以上的步骤,不难知道看出在译码过程中将会有两种信号:数字信号处理部分和模拟信号处理部分,当信号被接收后先经过模拟信号部分进行量化,然后在进行数字信号部分的处理,最终用路径回溯输出方法将译码信息序列输出。图2.5

33、为viterbi译码流程图。图2.5 viterbi译码流程图若以上节所说的(2,1,3)卷积码为例,假设输入的信息序列仍为U= (1011100),编码器输出C= (11,10, 00, 01, 10, 01, 11),通过BSC信道送入译码器的的序列R=(10,10, 00, 01, 11, 01, 11)出现两个错误,现在利用Viterbi算法来求U的估值序列U。基于图2.4的网格图,Viterbi译码器接收序列R的过程如图2.6所示。图中画出了各时刻进入每一状态的的留选路径和其度量值d这里是最小汉明距离),以及相应的译码估计信息序列U。到了第七时刻,留选路径就剩一条,相应的信息估值序列

34、为U= (1011100)11,接收时的两个错误得到纠正。图2.6 Viterbi译码器接收序列R的过程3 viterbi译码器根据上面的算法,工程上实现Viterbi译码器的原理图如图3.1所示。从图中可以看出整个译码器按照功能主要分成7个模块。主要由路径计算模块(BMG,Branch Metric Generation),加比选模块(ACS,Addition Comparison Selection),状态路径存储管理模块(MMU,Metric Memory Management Unit),路径回溯模块(TB,Traceback),路径存储模块(SMU,Survivor Memory M

35、anagement Unit),输入输出模块再加上一个控制电路模块组成。图3.1 viterbi译码系统框图由图3.1可以看到整个viterbi译码的过程,下面将详细介绍这些模块的具体作用12。输入输出模块:输入输出部分提供译码器与外部的接口。在无线通信中,接收端从信道中接收到信息序列,然后通过输入端传入译码器。经过解码之后,最后得到的解码序列从输出端送出,在经过其他处理输出。ACS模块:Add Compare Select 模块,即“加比选”模块。它是Viterbi译码器中运算量最大的部分,大量的运算都是在这个模块完成的。ACS接收原来的状态度量和当前的度量路径值,每一状态都有两条路径可以到

36、达,对每一状态的两条路径的对应值相加,将得到的两个结果进行比较,从中选取较小的一条,将它作为当前的状态度量。BMG模块:Branch Metric Generator模块,即路径度量模块。这个模块计算每一时刻各个状态的路径度量的,在BSC信道的硬判决Viterbi译码过程中,就是计算接收值与期望值之间的汉明距离。TB模块:Traceback模块,路径回溯模块。这个模块当译码开始一段序列后,按照路径回溯算法,历经各个状态,得到译码输出。MMU模块:Metric Memory Management Unit,路径度量存储管理模块。这个模块主要负责对路径度量的存取进行管理,负责幸存路径的存储和读取。

37、SMU模块:Survivor Memory Management Unit,幸存路径存储管理模块。这个模块负责对幸存路径RAM进行管理,负责幸存路径的存储和读取。Control模块:控制电路模块,主要负责提供各种控制信号给各个模块,以保证时钟上同步,流水线不堵塞,提高系统并行能力。由于在卷积码的译码过程中,viterbi译码算法的复杂度和寄存器状态数成正比,与约束长度成指数增长关系。因此解决计算复杂度大的问题是关键,所以整个译码器的重点是在ACS模块、MMU模块、SMU模块和TB模块上。基于DSP的viterbi译码实现过程分为欧几里德计算(其中硬判决中计算汉明距离)、寻找最短距离、计算累加距

38、离、跟踪回溯路径、微分等步骤。 在viterbi译码实现过程中,用软判决与硬判决的区别在于加比选部件(ACS),路径计算部件(BMG)以及度量储存模块或者寄存器模块的不同。当然具体的软判决与硬判决的优缺点在本文中将不会涉及。本文主要介绍viterbi算法及其译码流程以及在C54X DSP上的实现。综合以上,不难发现viterbi译码器设置的主要模块是:加比选模块、路径度量存储管理模块、幸存路径存储管理模块、路径回溯模块上,在下面的viterbi译码过程中重点考虑。4 基于DSP的viterbi译码技术目前,卷积码编码和Viterbi算法的实现主要由两种方法:数字信号处理器(DSP)实现和可编程

39、专用集成电路(ASIC)实现。ASIC属于硬件实现,可以完成非常高速的Viterbi译码器的设计。DSP实现属于软件实现,其运算和存储是按指令周期顺序执行,速度较专用集成电路要慢,但灵活性大,使用广泛。4.1 DSP芯片TMS320VC5409简介MS320VC5409是TI公司生产的低功耗、高性能的定点可编程DSP芯片,其主要应用是无线通信系统等。其主要特点包括1416:(1)运算速度快。指令周期为lOns,运算能力为100MIPS。(2)优化的CPU结构。采用改进的哈佛结构,1条程序总线(PB),3条数据总线(CB、DB、EB),4条地址总线(PAB、CAB、DAB、EAB)和2个地址产生

40、器;40位的算术逻辑单元(ALU)以及一个40位的桶形移位器和两个40位的累加器(A、B) ,支持32位或双16位的运算;17位x17位的硬件乘法器与一个40位专用加法器相连,构成乘法器/加法器单元,可以在一个流水线周期内完成一次乘法和累加(MAC)运算;专用的指数编码器(EXP encoder)能够在一个周期内完成累加器中40位数值的指数运算;单独的数据地址产生单元(DAGEN)和程序地址(PAGEN)产生单元,能够同时进行三个读操作和一个写操作。此外,比较、选择和存储等单元能够加速维特比译码的执行。先进的DSP结构可高效地实现无线通信系统中的许多功能。(3) 大的存储空间。TMS320VC

41、5409有192K字16位的存储器空间:64K字的程序空间,64K字的数据空间和64K字的I/O空间。(4)智能片内外设。TMS320VC5409还提供了3个多通道缓冲串行口McBSP( Multi-channel Buffered Serial Port)和1个增强的8位主机接口(HPI-8),方便与外部器件的数据传输。4.2 matlab环境下viterbi译码仿真实验MATLAB是美国Mathworks公司开发的新一代科学计算软件;MATLAB是英文MATrix LABoratory(矩阵实验室);MATLAB是一个专门为科学计算而设计的可视化计算器。利用这个计算器中的简单指令,能很快速

42、完成其他高级语言只有通过复杂编程才能实现的数值计算和图形显示。4.2.1 matlab简介MATLAB13是一种既可交互使用又能解释执行的计算机编程语言。所谓交互使用,是指用户输入一条语句后立即就能得到该语句的计算结果,而无需像C语言那样首先编写源程序,然后对之进行编译、连接,才能最终形成可执行文件。MATLAB语言可以用直观的数学表达式来描述问题,从而避开繁琐的底层编程,并把有限的时间和精力更多的花在要解决的问题上,因此可大大提高工作效率。MATLAB的编程语法与交互使用是一致的,因此交互使用时输入的代码能够很方便地转化为可重用的函数或过程。MATLAB是解决工程技术问题的计算平台。利用它能

43、够轻松完成复杂的数值计算、数据分析、符号计算和数据可视化等任务。其中,符号计算能够得到符号表达式的符号解和任意精度数值解。相对于数值计算,符号计算不会带来任何机器误差,但是需要耗费更多的计算机内存和时间。另外,利用MATLAB软件包中的Simulink等组件,能够对各种动态系统进行仿真分析,并且能为多种实时目标生成可执行代码,这显然有利于缩短软硬件系统的研发周期。MATLAB软件是由主包和各种工具箱构成。其中,主包基本上是一个用C/C+等语言编写成的函数库。该函数库提供矩阵(或数组)的各种算法以及建立在此基础上的各种应用函数和一些相关的用户友好操作界面。而工具箱则从深度和广度上大大扩展了MAT

44、LAB主包的功能和应用领域。从使用角度看,这些工具箱可分为功能性工具箱和学科性工具箱两大类。前一类工具箱通用于各个学科领域,如“符号工具箱”;后一类工具箱则与专门学科密切相关,如“信号处理工具箱”、“神经网络工具箱”、“金融分析工具箱”等。此外,市场上还有大量不断涌现的基于MATLAB的第三方软硬件产品。本次viterbi译码的程序主要将用到关于卷积的库函数,这样大大减少了程序代码的书写以及资源的浪费。4.2.2 matlab仿真本文主要将用到matlab中的函数库主要程序是:Viterbi的编码函数:Trellis=poly2trellis(7,133,171);Code=convenc(m

45、1,trellis); 其中m1为输入,code为输出,poly2trellis为matlab自带的函数库,convenc为matlab自带的卷积运算函数。Viterbi译码函数:Codeout=vitdec(code,trellis,tbl,term,hard);图4.1 matlab下viterbi译码函数仿真图在图4.1中m1为输入,codeout为输出。我们在进行viterbi译码的时候,将主要将m1与codeout进行对比,看看他们的相似度是多少,是否完全相同。在进行仿真时,由上述的viterbi编码程序可以得到当m1=1,0,1,0,1,0,0时,code(即编码后的输出序列)为1

46、,1,0,1,0,0,1,0,0,0,0,0,0,0一共14位的以为数组。但在之后的译码时,输出codeout与输入m1惊人的相识,这说明viterbi译码是一种纠错能力很强的译码方法。从上述的几段主要代码我们可以看出matlab在软件仿真上的巨大优势,直接调用函数库就可以轻松完成编码、译码的函数编写。4.3 维特比译码算法的处理过程维特比译码算法的处理过程如图4.2所示。输入序列度量值更新回溯输出序列图4.2 维特比译码算法的处理过程首先输入的序列是编码后的序列,得到这些序列可以是软判决输入或硬判决输入。度量值更新可以获得整个编码的路径选择信息,然后通过回溯即可得到恢复编码过程,得到原信息序列。接下来详细分析每个步骤的处理过程。4.3.1 分支度量值的更新度量值的更新部分包括:(1)计算每一个可能路径的每一步的距离值;(2)对每个新状态,将分支度量值与旧状态的度量值相加,得到新状态的度量值;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号