基于C54XDSP的viterbi译码技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于C54XDSP的viterbi译码技术卷积码的概率码最早始于1961年由Wozencraft提出的序列译码,这是第一个有用的概率译码方法,1963年Fano对序列译码进行改进,提出Fano算法,从而推动了序列译码的实际应用。
1967年Viterbi提出了另一种概率译码算法:Viterbi算法,它是一种最大似然译码算法。
在码的约束比较小时,它比序列译码算法效率更高、速度更快,译码器也较简单。
因而自Viterbi算法提出以来,不管在理论上依旧实践上都得到了极其迅速的进展,并广泛应用于各种数据传输系统,专门是卫星通信系统中。
1.1 卷积码的进展
卷积码是深度空间通信系统和无线通信系统中常用的一种编码。
卷积码与分组码不同,它的本码组的校验元不仅与本组的信息元有关,而且还与往常各时刻输入至编码器的信息组有关。
在编码过程中,卷积码充分利用了各码字间的有关性,而且它的信息元和校验元也比分组码小,在与分组码同样的码率R和设备复杂性条件下,不管从理论上依旧从实践上都证明卷积码的性能至少不比分组码差;而且卷积码在实现最佳译码也较分组码容易。
因此从信道编码定理来看,卷积码是一种专门有前途的码类。
在IS-95.CDMA的无线数字蜂窝标滩中都采纳了卷积码;在第三代无线通信系统的蜂窝结构中所采纳的Turbo码,也是源自卷积码。
卷积码是由伊利亚斯(P.Elias)发明的一种非分组码。
通常它更适用于前向纠错,因为关于许多实际情形它的性能优于分组码,而且运算简单。
卷积码是一种线性树码,由于该码的输出序列是输入序列和编码器的冲击响应的离散时刻卷积,故名卷积码。
其一样结构包括:一个由N段组成的输入移位寄存器,每段k个,共Nk个移位寄存器、一组n 个模2和相加器,一个由n级组成的输出移位寄存器。
对应于每段k 个比特的输入序列,输出n个比特。
卷积码常记为(n,k,N-1),当k等于1时,N-1确实是寄存器的个数。
卷积编码器是由经历的,即一组信息码元的校验码元不但取决于本组信息元,而且还与前m=N-1组信息码元有关。
其中m被称为编码存贮,N=m+1被称为编码约束长度。
一个卷积码不但能够通过增加校验码元(相应地降低编码效率)来改善纠错性能,更能够用增加编码约束长度的方法提升纠错能力[1]。
卷积码的概率译码方法要紧有两种:viterbi译码算法和序列译码算法(费诺算法)。
其中,viterbi算法的复杂度和编码约束度成指数关系,因此只适合m较小的卷积码或者误码率高于10-5的应用。
由于该算法的收敛性与信道干扰程度无关,因此运算量是固定的,译码实时性较好;另外该算法适合软判决译码,能够获得额外的编码增益。
序列译码(费诺算法)的复杂度与m无关,适合大编码约束长度(即具有较大自由距离)的卷积码或者误码率低于10-6的业务需求。
这种算法的收敛速度与信道干扰程度有关,译码实时性较差,使用软判决较为复杂[2]。
本文要紧研究(2,1,7)卷积码的viterbi译码,其中码率为1/2,约束长度为7,共有64个状态。
1.2 数字信号处理(DSP)
20世纪60年代以来,随着大规模集成电路、数字运算机等信息技术的飞速进展。
数字信号处理(Digital Signal Processing,DSP)技术应运而生并得到快速的进展。
在过去的20多年里,DSP在理论和应用方面持续地进步和完善,在越来越多的应用领域中迅速取代传统的模拟信号处理方法,同时开创出许多新的应用领域。
目前数字信号处理技术差不多在通信、雷达、航空航天、工业操纵、生物医学工程、网络及家电领域得到极为广泛的应用,数字时代正在到来。
由于DSP技术应用专门广泛,迫切需要一种能高效完成复杂数字信号处理或数字系统操纵,能够作为DSP系统核心的器件。
因此,众多半导体厂商投入到高性能数字信号处理器(Digital Signal Processors, DSPs)芯片的研发当中。
1982年,美国德州仪器公司(Texas Instrume nts Incorporation,简称TI公司)推出了该公司的第一款DSPs芯片,专门快DSPs芯片就以其数字器件特有的稳固性、可重复性、可大规模集
成和易于实现DSP算法等优点,为数字信号处理技术带来了更大的进展和应用前景。
采纳各种类型DSPs实现系统的数字化处理和操纵差不多成为了以后进展的趋势,同时随着DSPs运算能力的持续提升,数字信号处理的研究重点也由最初的非实时应用转向高速实时应用[3]。
本文要紧讲用到TI公司的C54X系列的DSPs芯片,并将在CCS2 000(for 5000)平台上进行仿真、运行。
在TMS320C54系列DSP的应用设计中,DSP的运行速度是衡量系统性能的一项重要指标,要达到预期的运行速度,就要给DSP系统的程序空间设计一个高速程序储备空间。
常用的储备器件分为停电数据丢失和停电数据不丢失两类。
停电数据丢失的器件有RAM;停电数据不丢失的有ROM,EPROM,FLAS H等,其中FLASH因读写方便快速而较常用。
在对DSP硬件进行编程时,有时C语言不如汇编语言方便,有时全然不能用C语言进行编程。
因此,对实时性要求较高或需对硬件直截了当操纵的功能,如A/D采纳程序及数字信号处理的核心算法等,可由汇编语言实现;而对运行速度和代码效率要求不高但要求可读性强爱护容易的程序,如系统初始化、用户操作界面等,则用C语言编写。
因此,混合编程法已成为开发TMS320C54X DSP应用程序的常用方法。
要想开发基于C54X DSP系统,第一要有C54X DSP的仿真器,才能实现程序的下载及调试。
在没有仿真器的情形下,也同样能够开发DSP系统,因为C54X DSP提供JTAG口和HPI口用于程序的下载,能够按照相应协议设计自己的开发系统。
其中,HPI是8位的数据总线接口,由于C5000系列DSP是16位,因此与主机通信的数据差不多上由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 本文研究对象
本文所设计的viterbi译码是基于C54X DSP实现的。
在此之前,要先运用matlab软件对viterbi译码程序进行仿真,再在ccs2000(for 5000)环境下进行软件仿真。
在viterbi译码器的设计中,采纳了并行加比选(ACS)碟形算法来完成对分支度量、路径度量的运算,以及对幸存路径的选择和路径溢出的操纵,在对幸存路径的处理上,有两种经典的算法,一种是寄存器交换(register exchange)算法,另一种是回溯(trac e_back)算法,本文所设计的viterbi译码采纳回溯算法。
同时viterbi译码器还同时支持硬判决和软判决。
通过matlab和ccs上的仿真,我们将具体出现viterbi译码的正确性和有用性,以及viterbi译码器的误码性能。
2 卷积码
卷积码至今尚未建立像线性分组码那样有严密而完整的数学分析体系,分析它的方法也专门多,但都有一定的局限性。
描述卷积码的方法大致能够分为解析表示法和图形表示法。
解析法又分为生成矩阵法、码多项式法等;图形表示法也能够分为状态图法、树图法、网格图法等。
2.1 卷积码的编码及其应用
2.1.1 卷积码的编码表达形式
关于一个信道,最不确定的因素确实是噪声干扰,引起差错的往往也是噪声。
就噪声引发差错的统计规律而言可分为随机差错信道和突发差错信道。
关于随机差错信道,它的差错要紧是由加性高斯白噪声(A WGN)引起的。
按照编码信道的输出是二电平、多电平或是模拟量(多电平数的极限)它可分为:二进制对称信道(BSC)、离散无经历信道(DMC)、离散输入连续输出信道。
BSC信道输入输出差不多上二进制的,也确实是检测器实行门限硬判决;DMC信道的输入是二进制输出是多进制的,也确实是检测器进行多电平量化,亦即所谓软判决:离散输入连续输出信道是DMC的极限情形。
从香农(Shannon)信道编码定理能够看出要降低误码率,通过某种规则加入冗余信息(编码)是常用途径之一。
常用的这些编码“规则”有:分组编码、卷积编码等等。
查找好的编码方法一直是信息论研究的重点与核心。
在相同误码率的条件下,编码比不编码能够节约几个dB的信号功率,也确实是讲在同样的信噪比条件下编码以后能够降低发射和接收功率。
卷积编码是在实际中应用极为广泛的一种编码方法,能够用(n,k,m)来表示。
其编码器是一个由k个输入端、n个输出端且具有m-1级移位寄存器所构成的有限状态的有经历系统,m称之为编码约束长度,它表示编码码字的产生受m个信息分组的制约;k/n表示编码效率[5]。
图2.1是卷积码的编码流程,卷积码至今尚未建立像线性分组码那样有严密而完整的数学分析体系,分析它的方法也专门多,但都有一定
图 信息 a b c d a a a b b b c c c d d
d 状
态 图2.2 (2,1,3)卷积码树状图
按照习惯的做法,码树的起点节点位于左边;移位寄存器的初始状态为00,分别用a ,b ,c 和d 表示寄存器1m ,2m 的4种状态:00,01,
10和11,作为树状图中每条支路的节点。
以全零状态a 为起点,当第1位输入信息为零时,输出码元为00,寄存器保持状态a 不变。
输入第二个比特为1时,输出码元为11,寄存器则转移到状态b 。
然后再分别
以这两条支路的终节点a和b作为处理下一位输入信息比特的起点,从
而得到4
4
码元己和第N
01(1)
-1的意义。
图2.3 (2,1 ,3 )卷积码的状态图
从图2.3能够看出寄存器总的状态数为4 种,其状态标号为S0=0 0,S1=10, S2=01, S3=11。
由于每次的输入有两种可能:0或者1,因此每次更新后的状态和编码输出可能也只有两个。
四个圆圈内的分别表示状态及对应的寄存器信息,状态之间的连线与箭头表示状态转移方向,分支上的数字表示状态转移时相应的编码输出(码字),而括号内的数字则表示相应的输入信息。
例如,假定初始状态为s0 (00),若输入信息位为1,则输出码字为11,下一时刻的状态为S1(10);若输入信息位为0,则输出码字00,下一时刻的状态仍旧是S0(00)。
它实际上确实是一个有限状态机。
状态转移图尽管表现了各状态转移的去向,但不能记录状态转移随时刻的轨迹。
另一种描述法一网格图法(也称栅格图法)能够补偿这一缺陷.它能够将状态转移展开在时刻轴上,使整个编码的全过程跃然纸上。
专门是在卷积码的概率译码中,它起着极其重要的作用。
网格图以状态为纵轴,以时刻为横轴,将平面分割成格状就像网格一样。
状态以及状态转移的定义和状态转移图法一致,也是用箭头表示转移。
箭头上方标出的是状态转移时的输出码字(输入信息)。
关于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)。
关
(轨迹)与之相对应
反过来,因此如
,则必
Viterbi译码中专门重要,找了这条路径也就0
S(00)
1
S(10)
2
S
3
S(11)
图2.4 (2, 1, 3)卷积码的网格图
上述三种表示方法各有千秋,是懂得卷积码编译码方法的基础。
2.1.2 卷积码的解析表示
2.1.2.1 生成矩阵
一个卷积码完全由一个监督矩阵H或生成矩阵G所确定。
下面将查找卷积码的生成矩阵。
以(3,1,3)为例来讨论生成矩阵[7]。
当第一信息比特
1
m输入时,若移位寄存器起始状态全为零。
那么三个输出比特为
1,11
y m
=,2,11
y m
=,
3,11
y m
=(2.1)
第二个信息比特
2
m输入时,1m右移一位,那么输出比特为1,22
y m
=,
2,22
y m
=,
3,212
y m m
=+(2.2)
当第j个(j≥3)信息比特j
m输入时,输出为:
1,
2,2
3,12
j j
j j j
j j j j
y m
y m m
y m m m
-
--
=
=+
=++
(2.3)
式2.1可写成矩阵形式
211,2,3,
j j j j j j
m m m A y y y
--
⎡⎤⎡⎤
=
⎣⎦⎣⎦(2.4)
其中系数矩阵
011
001111A = (2.5)
由上看到,
在第一和第二信息比特输入时,存在过渡过程,现在有 []111,12,13,100m T y y y ⎡⎤=⎣⎦
[]1221,22,23,20m m T y y y ⎡⎤=⎣⎦ (2.6) 其中,1111000000T =,20
01111000
T = (2.7) 类同线性码的输出序列矩阵与输入序列矩阵的关系有
Y MG = (2.8)
式2.8中 M = [123m m m ……]为输入序列矩阵
Y =[1,12,13,11,22,23,2y y y y y y ……]为输出序列矩阵
G 为生成矩阵,那个地点M 和Y 明显是半无限矩阵。
总括上面的编码过程,生成矩阵应该是 12~T T A A
G A
A = (2.9) 式2.9中矩阵空白区元素都为0。
明显,该生成矩阵是半无限矩阵,
常记为∞G 。
2.1.2.2 多项式
我们能够用多项式来表示输入序列、输出序列、编码器中移位寄存器与模2和的连接关系。
在一样情形下,输入序列可表示为
.....)(5645342321++++++=x m x m x m x m x m m x M (2.10) 那个地点1m 2m 3m ……为二进制表示(1或0)的输入序列。
x 常称
为移位算子或延迟算子,它标志着位置状况。
我们能够用多项式表示移位寄存器各级与模2加的连接关系。
若某级寄存器与模2加相连接,则相应多项式的系数为1;反之,无连接线时的多项式项系数为0。
以(3,1,3)编码器为例[7],相应的生成多项式为
12223()1
()1()1g x g x x g x x x ==+=++ (2.11)
利用生成多项式与输入序列多项式相乘,能够产生输出序列多项式,即得到输出序列。
设输出序列为1101010111……,借助上述输出多项式来求输出序列如下。
输入序列多项式为
35789()1.....M x x x x x x x =++++++ (2.12)
因此 3578911()()()1.....Y x M x g x x x x x x x ==++++++ 35789222()()()(1.....)(1)Y x M x g x x x x x x x x ==+++++++
28101......x x x x =+++++
3578923()(1.....)(1)Y x x x x x x x x x =++++++++
4691.....x x x =+++ (2.13)
即有序列
1y =1 1 0 1 0 1 0 1 1 1 ……
2y =1 1 1 0 0 0 0 0 1 0 ……
3y =1 0 0 0 1 0 1 0 0 1 …… (2.14) 因此输出序列
y = 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,……
为方便起见,人们常用八进制序列和二进制序列来表示生成多项式,例如
118()1(100)(4)g x g =→==
2228()1(101)(5)g x x g =+→==
2338()1(111)(7)g x x x g =++→==
(2.15)
2.1.3 卷积码的应用
从信道编码定理看,卷积码是一种专门有前途的能达到信道编码定理所提出的码型,广泛应用于各种领域如:数字卫星通信系统、遥测外测系统、GSM (Group Special Mobile)、3G(第三代移动通信)、各种数字电视标准等等。
例如:绝大多数卫星通信采纳的是(2,1,7)卷积码:G SM 采纳了 (2,1,5)卷积码;CDMA 的IS-95标准采纳的是(2,1, 9)卷积码;
3GPP(第三代移动通信伙伴关系)的WCDMA 正向信道采纳的是(2,l,9) 卷积码,反向信道采纳的是(3,1,9 )卷积码;CCSDS(空间数据系统咨询委员会)也把卷积码作为实时要求较高业务的信息纠错编码。
此外卷积码还和RS 码作为一对黄金搭档常常级连使用,RS 码做为外码卷积码作为内码用于DVB(欧洲数字视频广播)标准和ATSC(美国先进电视)标准等等。
不同结构的卷积码有不同的特性,卷积码也分成系统卷积码和非系统卷积码等等,但这些不是本文研究的范畴。
本文要紧研究viterbi 译码在DSP 中的仿真以及在matlab 环境下的仿真实验。
2.2 卷积码的译码原理
卷积码的译码方法可分为两大类。
一类是代数译码,利用编码本身的代数结构进行译码,不考虑信道本身的统计特性。
该方法的硬件实现简单,但性能较差,其中具有典型意义的是门限译码。
另一类是概率译码,这种译码通常建立在最大似然准则的基础上。
由于运确实是用到了信道的统计特性。
因而提升了译码性能,但这种性能的提升是以增加硬件的复杂度为代价的。
常用的概率译码方法有维特比译码和序列译码。
2.2.1 代数译码
代数译码[8]是从码字本身的代数结构动身,不考虑信道统计特性,在每次的运算循环之内,可全部译出一个码的支路。
在信道传输中码字产生了错误,如果错误图样是已知的,则一定满足R=C+E (R 为接收码元序列,C 为发送码元序列,E 为误码序列)。
按照码元信息位与监督位的关系,一个接收的码字有没有错误能够用监督矩阵H 来检验,R ,C ,E 之间有如式2.16关系式
()T T T T HR H C E HC HE =+=+ (2.16)
因为C 是一个码字,因此有0T T HC =,则T T HC HE =。
令T T
S HE =或T S EH =,称S 为相伴式或校验字。
当0T S EH ==时,[]R C ∈判无错;
当0T S EH =≠时,[]R C ∉判有错。
因此能够利用相伴式S 的内容对接收序列进行检错和纠错。
相伴式与信道所产生的错误图样有关,而与发送的是哪一个码字无关。
任何一个错误图样都可由公式(2.16)算出相应的相伴式。
译码器的任务确实是按照相伴式来确定错误图样,得到最可能发送的码字C R E =+。
适用于代数译码的卷积码是具有快检特性的系统卷积码。
代数译码方法专门多,且各有特点和使用场合,常用的有门限译码法。
2.2.2 最大似然译码
卷积码概率译码的差不多思路是[9]:以断续的接收码流为基础,逐个运算它与其他所有可能显现的、连续的网格图路径的距离,选出其中可能性(概率)最大的一条作为译码估值输出。
概率最大在大多数场合可讲明为距离最小,这种最小距离译码体现的正是最大似然的准则。
卷积码的最大似然译码(NLD ,Maximum Likelihood Decoding)与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。
要紧区别在于:分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。
明显,序列的似然度与序列长度有关。
如果把码组的似然度称作分支量度(BM ,Branch Metric),把序列的累积似然度log[(/)]j p R C 称为路径量度(PM ,Path Metric),那么在相同序列长度下(长度L 应足够大),具有最大路径的那个序列应选作译码估值序列^
C 输出。
2.2.3 维特比译码的原理
维特比译码一种最大似然译码算法[13],最大似然译码过程确实是按照接收序列,按最大似然译码准则力图找出编码器在网格图上所走过的路径,那个过程也确实是译码器运算、查找最大似然函数
)|(max i i C R P L k i 02...,2,1= (2.17)
的过程,也能够讲是运算、查找有最大“度量”的路径的过程。
对BSC(二进制对称信道)而言,运算、查找有最大度量的路径,等价于查找与R 有最小汉明距离的路径,即查找
)|(max i i
C R d L k i 02...,2,1= (2.18)
而对二进制输入Q 进制输出的DMC 信道而言,确实是查找与R 有最小软距离的路径,现在的度量确实是软判决距离
)|(max i i
s C R d L k i 02...,2,1= (2.19)
式2.19中,s R 与is C 是接收序列R 与i C 序列的Q 进制表示。
然而,用这种方法译码是专门难以实现的。
例如L=50,0n =3,0k =2,则网格图上共有L k 0
2=1002>3010条不同路径;如果要在一秒钟内送出这L k 0=100个信息元,则信息传输率只有100 bit/s ,这是专门低的。
但即使在如此低的信息速率下,也要求译码器在一秒钟内运算、比较3010个似然函数(或汉明距离),这相当于要求译码器运算每一似然函数的时刻小于3010-s ,这全然无法实现。
Viterbi 译码算法正是在解决上述困难时所引入的一种最大似然译码算法。
它并不是在网格图上一次比较所有可能的L k 0
2条路径,而是接收一段,运算、比较一段,选择一段最可能的码段,从而达到整个码序列是一个有最大似然函数的序列。
2.3 卷积码的译码
卷积码的译码方式要紧有三种:1963年Massey 提出的门限译码,这是一种基于码代数结构的代数译码,类似于分组码中的大数逻辑译码。
1963年有Fano 改进的序列译码,这是基于码的树状图结构的一种准最佳概率译码。
1967年Viterbi 提出的Viterbi 算法,基于码的网格图基础上的最大似然译码算法,是一种最佳概率译码。
其中,代数译码,利用编码本身的代数结构进行译码,不考虑信道本身的统计特性。
该方法的硬件实现简单,但性能较差,其中具有典型意义的是门限译码。
另一类是概率译码,这种译码通常建立在最大似然准则的基础上。
由于运确实是用到了信道的统计特性.因而提升了译码性能,但这种性能的提升是以增加硬件的复杂度为代价的。
常用的概率译码方法有维特比译码和序列译码。
维特比译码具有最佳性能,但硬件实现复杂;门限译码性能最差,但硬件简单;序列译码在性能和硬件方面介于维特比译码和门限译码之间。
viterbi译码算法是一种卷积码的解码算法。
缺点确实是随着约束长度的增加算法的复杂度增加专门快。
约束长度N为7时要比较的路径就有64条,为8时路径变为128条。
(2<<(N-1))。
因此viterbi译码一样应用在约束长度小于10的场合中。
先讲编码(举例约束长度为7):编码器7个延迟器的状态(0,1)组成了整个编码器的64个状态。
每个状态在编码器输入0或1时,会跳转到另一个之中。
例如110100输入1时,变成101001(事实上确实是移位寄存器)。
同时输出也是随之而改变的。
如此解码的过程确实是逆过程。
算法规定t时刻收到的数据都要进行64次比较,确实是64个状态每条路有两条分支(因为输入0或1),同时,跳传到不同的两个状态中去,将两条相应的输出和实际接收到的输出比较,量度值大的抛弃(也确实是比较结果相差大的),留下来的就叫做幸存路径,将幸存路径加上上一时刻幸存路径的量度然后储存,如此64条幸存路径就增加了一步。
在译码终止的时候,从64条幸存路径中选出一条量度最小的,反推出这条幸存路径(叫做回溯),得出相应的译码输出。
卷积码概率译码的差不多思路是:以接收码流为基础,逐个运算它与其他所有可能显现的、连续的网格图路径的距离,选出其中可能性最大的一条作为译码估值输出。
概率最大在大多数场合可讲明为距离最小,这种最小距离译码体现的正是最大似然的准则。
卷积码的最大似然译码与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。
要紧区别在于:分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。
基于网格图搜索的译码是实现最大似然判决的重要方法和途径。
用网格图描述时,由于路径的汇聚排除了树状图中的余外度,译码过程中只需考虑整个路径集合中那些使似然函数最大的路径。
如果在某一点上发觉某条路径已不可能获得最大对数似然函数,就舍弃这条路径,然后在剩下的“幸存”路径中重新选择路径。
在整个viterbi译码过程中一样是一下几个步骤[10]:
量化。
将接收机接收的模拟信号转化成数字信号。
码同步。
检测码元帧的边界以及码元标志。
分支度量运算。
运算各个状态的接收码元和本地码元的汉明距离。
状态度量更新。
用各个状态新的路径度量代替前一时刻的路径度量。
幸存路径储备。
将Viterbi 译码所需的网格图上所走过的路径记录下来。
输出判决。
按照幸存路径储备的信崽,产生译码序列的输出。
按照以上的步骤,不难明白看出在译码过程中将会有两种信号:数字信号处理部分和模拟信号处理部分,当信号被接收后先通过模拟信号部分进行量化,然后在进行数字信号部分的处理,最终用路径回溯输出方法将译码信息序列输出。
图2.5为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'。
到了第七时刻,留选路径就剩一条,相应的信息估值序列为U'= (1011100)[11],接收时的两个错误得到纠正。
0S 1S 00 d U ’ 1 (0) 1 (1) 11 a.第一时刻接收子码0R =10 00 11 11 01 10 2S 3S 2 (01) 1 (10) 3 (11) 00 1S b.第二时刻接收子码1R =10 0S
d U ’
2 (00) 0S 1S 2S 3S 00 00 00 00 11 11 10 01 01 10 d U ’ 2 (000) 1 (101)
3 (010) 3 (011) c.第三时刻接收子码2R =00 11 01 01 00 d.第四时刻接收子码 3R =01 d U ’ 3 (0000) 3 (0001) 3 (1010) 1 (1011) 0S 1S 2S
S 00 00 00 00 11 11 10 01 10
e. 第五时刻接收子码 4R =11
00 00 00 00 00 11 10 01 10
01 11 11
01
10 3 (10100) 3 (00001) 2 (10110) 2 (10111) d U ’。