版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档-下载后可编辑Viterbi译码-基础电子对于卷积码的解码方法中,Viterbi译码算法是被应用的广泛的译码算法。是一种似然译码算法(MLD,MaximuLikelihoodDecoding)。它接收输人的信息序列后,寻找任何可能的路径值,而后找一条路径值当作解码输出。为了描述Viterbi译码算法,常用网格图(TrellisDiagram,根据时间的增加将网格图扩充所得到的图形,如图1所示)来表示演算过程。网格图中的节点,代表编码器中的各个状态,而在其中的分支代表编码器的所有可能的状态转移情况。图1显示为(2,1,3)网格图。
图1(2,1,3)网L=5时的网格图
此图是L=5时,该(2,1,3)码的状态转移时间关系图,总共有L+m+1个时间单位(节点),以0至L+m标号,其中m=k ̄1为编码存储。若编码器从SO(00)状态开始,并且结束于SO状态,则的m=2个节点(0,1),相应于编码器由SO状态出发往各个状态行进,而m2个节点(6,7),相应于编码器由各状态返回到SO状态。因而,在开始和m个时间单位,编码器不可能处于任意状态中,而只能处于某些特定状态(如SO,Sl)中之一,仅仅从第m(2)至第L(5)节点,编码器可以处于任何状态之中(即4个状态SO、S1、S2、S3中之任一个)。编码器从全0的SO状态出发,叉回到SO状态时所输出的码序列,称为结尾卷积码序列。因此,当送完L段信息序列后,还必须向编码器再送入m段全0序列,以迫使编码器回到SO状态。
网格图中每一状态有两个输入和两个输出分支。在某一节点i,离开每一状态的虚线分支(下面分支),表示输人编码器中的信息子组ml=1;而实线分支(上面分支)表示此时刻输人至编码器的信息子组ml=o;每一分支上的2(nO)个数字,表示第i时刻编码器输出的子组01=(cl(1),cl(2)),因此网格图中的每一条路径都对应于不同输入的信息序列。由于所有可能输人的信息序列共有2k1条不同的路径,相应于编码器输出的2k1个码序列。
Viterbi译码算法考虑的是如何去掉不可能成为似然选择对象的格形图上的路径,即如果有两条路径到达同一个状态,则具有度量的路径被选中,称为幸存路径(survtvmgpath)。对所有状态都将进行这样的选路操作,译码器不断在格形图上深人,通过去除可能性的路径实现判决。较早地抛弃不可能的路径从而降低了译码器上实现的复杂度。Omura在1969年证明了Viterbi译码算法其实就是似然算法。也就是说,选择路径可以表述为选择具有似然度量的码字,或者选择具有距离的码字。
Viterbi译码算法中硬判决Viterbi译码和软判决Viterbi译码的性能差异。由于对模拟信号的处理比较复杂,因此在软判决译码之前,一般先要对接收序列进行量化。实际上,可以将硬判决译码看做软判决译码的特殊情况,即采用了1比特量化。而软判决采用的是多比特量化。在理想的软判决情况下,信道接收值直接用于译码器。相应地,卷积码的Viterbi译码也有硬判决Viterbi译码和软判决Viterbi译码两种译码方式。从仿真的结果来看,对于高斯信道来说,8级量化比2级量化的信噪比提高了大约2dB,这说明了为了获得相同的比特差错性能,8级软判决需要的Ec/No比硬判决低2dB,模拟装置比2级量化的性能提高2.2dB;因此,8级量化比无穷级量化的性能损失了仅0.2dB。由于这个原因,量化级超过8级只能获得较少的性能提高。因此,软判决Viterbi译码算法一般采用3比特量化,它比硬判决Viterbi算法所要处理的数据量要多3倍。可见,软判决译码的代价是译码器所需存储量的增大。
卷积码的编码码字序列c是输入信息序列m与编码器冲激响应g卷积的结果。码字序列c经过信号传输映射并送至有噪信道传输,在接收端得到接收序列r。Viterbi译码算法就是利用接收序列r,根据似然估计准则来得到估计的码字序列y。即寻找在接收序列r的条件下使条件概率p(r/y)取得值时所对应的码字序列y。序列y必须取自许用码字集合。
对于码率为R的(no,k0,m)卷积码,在每个时间单位并行输人k0个码元,同时并行输出no个码元。一般输人序列表示为:
其中下标中的m表示卷积码编码器中寄存单元的个数,L表示输入信息序列的长度。事实上,增加的m个码元为零码元,目的是得到结尾码字,即使编码器在编码结束时的状态回到初始全零状态。相应的接收序列表示为:
类似地,接收序列r和估计序列y也有类似的表示形式:
对于似然译码,Viterbi算法选择使p(r/y)的y作为估计序列。如果假设信道是无记忆的,则噪声对每一位发送码元的影响都是独立(不相关)的,从而条件概率p(r/y)就等于每个独立同分布接收码元条件概率的乘积,即
上式即为给定接收序列r的条件下序列y的似然函数。由于对数函数lg是一个单调递增函数,因此使p(r/y)化就等价于化lgp(r/y)。为降低似然函数的计算复杂性,常采用如下定义的对数似然函数:
为简化上式中的对数函数求和运算,可以定义如下码元度量:
其中常数a和b的选取原则是使码元度量值是或者尽可能接近于某个小的正整数。在BSC信道或者采用硬判决译码时可以用不同的方式定义常数a和b:
在这种情况下,Viterbi算法就是在编码格图上选择与接收序列r之间汉明(Hamming)距离的码字序列作为译码输出。对于一般的信道,可以按照误差化的原则选择常数a和b的值来获得可接受的码元度量。根据码元度量的定义可以定义格图路径度量:
这意味着在编码格图上译码估计码元序列y与接收码元序列r之间的总代价。对于BSC,即两个序列之间的汉明距离。
Vitervi算法就是利用卷积码编码器的格形图来计算路径度量。算法首先给格图中的每个状态(结点)指定一个部分路径度量值。这个部分路径度量值由从起始时刻t=0的So状态到当前各个时刻的So状态决定。在每个状态,选择达到该状态的具有“”部分路径度量的分支。
的部分路径度量根据前述常数a和b的选择不同,可以是“”度量,也可以是“”度量。按照所采用的度量,选择满足条件的部分路径作为幸存路径,而将其他达到该状态的分支从格图上删除。viterbi算法就是在格形图上选择从起始时刻到终止时刻的惟一幸存路径作为似然路径。沿着似然路径,从终止时刻回溯到开始时刻,所走过的路径|对应的编码输出就是似然译码输出序列。
硬判决viterbi算法可以按照如下步骤实现。
(1)首先以Skj代表编码器格图中第t时刻的状态Sk。给格形图中的每个状态指定一个度量呈V(Skj)。
(2)初始化。在时刻t=0,V(So,o)=0,其他时刻V(Skj)为无穷大。
(3)t+1→t。计算在t时刻到达Sk状态的所有路径的部分路径度量,即首先找到时刻t的分支度量,这可以通过计算汉明距离来完成。其次,计算t时刻的部分路径度量。
(4)将V(Skj)设置为t时刻到达Sk状态的“”部分路径度量。通常情况下,的部分路径度量是具有度量值的部分路径度量;如果有多个的部分路径度量,可以选择其中任意一个。
(5)存储的部分路径度量及其相应的幸存路径和状态路径。
(6)若t<L+m-1,返回(3)。
viterbi算法得到的终幸存路径在格形图中是惟一的,也就是似然路径。
下面给出硬判决viterbi算法实现卷积码译码的一个简单例子。考察(2,1,3)卷积码。若输入序列为m=(1011100);相应的码字序列为c=(11,10,00,01,10,01,11)。如果经过BSC信道传输后得到的接收硬判决序列为F(10,10,00,01,11,01,11)。其中两位出现了错误,下面考察通过viterbi算法以汉明距离为准则实现译码,从而获得估计信息序列m和码字序列c。
图2给出了在编码器格形图上根据接收序列进行Viterbi译码的过程。图中用粗线画出了在每一时刻进入每一个状态的幸存路径。在t=2时刻以前,进人每一个状态的分支只有一个,因此这些路径就是幸存路径;从t=2时刻开始,进入每一个状态结点的路径有两条,按照距离准则,选择一条幸存路径。在t=7时刻,只剩下惟一的一条幸存路径,即似然路径,与这条似然路径相对应的码字就是译码输出,显然,根据前述该输人序列的编码码字,可知(II,10,00,01,10,01,II);相应的译码输出信息序列为(1011100)。
图2译码过程流程
表1进入每个状态节电的幸存路径的部分度量值
通常,实现软判决viterbi算法是利用欧几里德距离度量代替硬判决时的汉明距离度量,其中接收码元采用多比特量化;接收机并不是将每个接收码元简单地判决为0或者1,而是使用多比特量化或者直接使用未量化的模拟信号。理想情况下,接收序列r直接用于软判决viterbi译码器。软判决viterbi译码器的工作过程与硬判决viterbi译码器的工作过程相似,惟一的区别是在度量中以欧几里德距离的平方代替汉明距离。
从实现方法来看,硬判决viterbi译码算法和软判决viterbi译码算法区别主要在加比选部件(ACS,AdditionComparisonSelection),路径计算部件(BMG;Bran。hMetricGeneration)以及度量储存模块或者寄存器模块的不同。
Viterbi译码流程主要有下面几个部分。
(1)量化。将接收机接收的模拟信号转化成数字信号。
(2)码同步。检测码元帧的边界以及码元标志。
(3)分支度量计算。计算各个状态的接收码元和本地码元的汉明距离。
(4)状态度量更新。用各个状态新的路径度量代替前一时刻的路径度量。
(5)幸存路径存储。将Viterbi译码所需的网格图上所走过的路径记录下来。
(6)输出判决。根据幸存路径存储的信`崽,产生译码序列的输出。
图3显示了Viterbi译码算法的流程,它是根据上述的几个部分来进行的。
整个译码器按照功能主要分成7个模块。系统框图如图4所示,主要由路径计算模块(BMG,BranchMetricGeneration),加比选模块(ACS,AdditionComparisonSelection),状态路径存储管理模块(MMU,MetricMemoryManagementUnit),路径回溯模块(TB,Traceback),路径存储模块(SMU,SurvivorMemoryManagementUnit),输人输出模块再加上一个控制电路模块组成。
图3Viterbi译码算法流程
图4Viterbi译码系统框图
输入输出模块:输入输出部分提供解码器与外部的接口。在无线通信中,接收端从信道中接收到信息序列,然后通过输入端传入解码器。经过解码之后,得到的解码序列从输出端送出,在经过其他处理输出。
ACS模块:AddCompareSelect模块,即“加比选”模块。它是Viterbi译码器中运算量的部分,大量的运算都是在这个模块完成的。ACS接收原来的状态度量和当前的度量路径值,每一状态都有两条路径可以到达,对每一状态的两条路径的对应值相加,将得到的两个结果进行比较,从中选取较小的一条,将它作为当前的状态度量。
BMG模块:BranchMetricGenerator模块,即路径度量模块。这个模块计算每一时刻各个状态的路径度量的,在BSC信道的硬判决Viterbi译码过程中,就是计算接收值与期望值之间的汉明距离。
TB模块:Traceback模块,路径回溯模块。这个模块当译码开始一段序列后,按照路径回溯算法,历经各个状态,得到译码输出。
MMU模块:MetricMemoryManagementUnit,路径度量存储管理模块。这个模块主要负责对路径度量的存取进行管理,为ACS模块提供所需的路径度量值以及按时更新路径度量。
SMU模块:SurvivorMemoryManagementUnit,幸存路径存储管理模块。这个模块负责对幸存路径RAM进行管理,负责幸存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论