矢量viterbi译码指令及viterbi译码装置制造方法

文档序号:7545792阅读:174来源:国知局
矢量viterbi译码指令及viterbi译码装置制造方法
【专利摘要】本发明公开了一种矢量viterbi译码指令及viterbi译码装置,指令包括矢量分支度量指令、矢量加法指令、矢量减法指令、矢量比较选择指令、回溯指令、viterbi译码的并行指令。viterbi译码并行指令利用了多指令并发技术,将读写存储器指令、矢量加法指令、矢量减法指令、矢量比较选择指令和回溯指令汇集成一条指令。通过反复调用这些指令即可高速完成viterbi译码,本发明节省了大量的硬件开销,利用本发明所设计的指令方法实现的viterbi译码速率比传统译码算法的速率提高了8~10倍。
【专利说明】 矢量viterbi译码指令及viterbi译码装置
【技术领域】
[0001]本发明涉及矢量viterbi译码指令,涉及通信芯片中的数字信号处理,属于无线通信领域,特别涉及DSP (数字信号处理)芯片中的vitebi译码指令。
【背景技术】
[0002]viterbi算法作为一种最大似然算法,可以在网格图上找出最大似然的状态转移路径,从而对噪声环境中的接受信号进行纠错译码。由于他的前向纠错性能,viterbi译码器广泛应用于各种数字通信系统如:卫星通信系统、GSM、3G、DVB标准和ATSC标准等各种通信系统中。
[0003]电力线载波通信(Power Line Communication)技术简称为PLC技术,是利用配电网低压线路传输高速数据、话音、图像等多媒体业务信号的一种通信方式。研究开发此项技术,对于充分利用电力设施,发挥电力资源优势,具有十分广阔的前景。作为采用了正交频分复用(Orthogonal Frequency Division Multiplexing, OFDM)技术的 PLC 标准,G3 电力线载波通信物理层协议采用了约束长度为7的(2,1,7)卷积码,由于使用了 OFDM技术,数据的传输速率和可靠性都得到了很大的提高,因此对viterbi译码器的译码效率提出了更高的要求。
[0004]传统意义上的viterbi译码器通常包含五部分:分支度量计算单元(BranchMetric Uint, BMU),加比选单兀(Add Compare Select, ACS),累加度量值存储RAM,幸存信息存储RAM和回溯判决模块(Traceback)。分支度量单元接受经过信道传输的卷积编码序列,计算分支度量值送给加比选单元,对于每一个状态,ACS单元从累加度量RAM中读出转移到该状态的前两个状态的累加度量值和相应的分支度量值进行加比选运算,得到新的累加值存入到累加度量RAM,同时得到I比特的幸存信息送入缓存器,等所有状态都完成运算后一起存入幸存信息RAM。当达到回溯深度后,回溯判决单元根据最小的累加度量值所对应的状态和幸存信息RAM的幸存信息用回溯的办法往前回溯即可得到信息比特。
[0005]由于实时性的要求,viterbi译码的传统实现方式通常是将viterbi译码器做成一个硬件加速器,这种实现方式增加了硬件开销而且通用性差。

【发明内容】

[0006]本发明要解决的技术问题是:克服现有技术的不足,提供一种矢量viterbi译码指令,能快速完成viterbi译码。
[0007]本发明解决其技术问题所采用的技术方案是:一种矢量viterbi译码指令,指令包括矢量分支度量指令、矢量加法指令、矢量减法指令、矢量比较选择指令、回溯指令、viterbi译码的并行指令。
[0008]所述的矢量分支度量指令为:利用处理器的SIMD(Single Instruction MultipleData)技术进行矢量计算,将viterbi输入的两个相邻的量化值分别作加法和减法,根据计算规律将得到的和与差组合成两个含有八个元素的矢量,将此两个矢量作为分支度量值。[0009]所述的矢量加法指令为:利用处理器的SMD技术对两个含有八个元素的矢量进行相加。
[0010]在Viterbi译码时,将旧的路径度量值矢量和分支度量值矢量送入加法指令,通过做矢量加法同时计算出八路新的路径度量值。
[0011]所述的矢量减法指令为:利用处理器的SMD技术对两个含有八个元素的矢量进行相减。
[0012]在viterbi译码时,将旧的路径度量值矢量和分支度量值矢量送入减法指令,通过做矢量减法同时计算出八路新的路径度量值。
[0013]所述的矢量比较指令为:利用处理器的SMD技术同时对八个新路径度量值进行比较选择。
[0014]在viterbi译码时,使用的是基2算法,在做比较选择前,每个节点有两条新计算出的路径度量值,利用矢量比较指令可同时对四个节点做幸存路径的比较选择,将每个节点的路径度量值较大的路径作为幸存路径。
[0015]所述的回溯指令为:回溯幸存路径,并得到最终的译码结果。
[0016]所述的viterbi译码并行指令为:利用了多指令并发技术,将读写存储器指令、矢量加法指令、矢量减法指令、矢量比较选择指令和回溯指令汇集成一条指令。
[0017]执行viterbi译码并行指令时利用存储器的读写指令将某些路径的路径度量值读出供下一条指令使用,同时利用矢量加法指令或矢量减法指令将前一条指令读出的路径度量值和新计算的分支度量值相应相加或相减,得到新的路径度量值供下一条指令使用,同时利用矢量比较选择指令将前一条指令计算出的每个点的两条新路径度量值做比较选择,得出每个节点的新路径度量值和幸存路径,结果待下条指令处理,同时利用存储指令将前一条条指令计算得到的新路径度量值写入存储器中。
[0018]一种viterbi译码装置,采用上述DSP中高速并行viterbi译码指令的方法。
[0019]本发明的有益效果是:本发明使用另一种思路实现了 viterbi译码,在DSP中添加了 viterbi译码的相关指令,通过反复调用这些指令即可高速完成viterbi译码。由于DSP还要进行FFT变换、CRC校验处理、滤波和Reed-Solomon编解码等计算,所以本身含有大量的硬件资源,这样在不增加硬件资源的前提下即可添加viterbi译码的指令,节省了大量的硬件开销。可以利用处理器设计中的SIMD(Single Instruction Multiple Data)技术、流水线技术和指令并发技术大幅提高viterbi译码的速率,利用本发明所设计的指令方法实现的viterbi译码速率比传统译码算法的速率提高了 8?10倍。
【专利附图】

【附图说明】
[0020]下面结合附图对本发明进一步说明。
[0021]图1是(2,I,7)卷积编码器结构图;
[0022]图2是(2,I,7)卷积编码器的状态转移示意图;
[0023]图3是第一类状态转移示意图;
[0024]图4是第二类状态转移示意图;
[0025]图5是第三类状态转移示意图;
[0026]图6是第四类状态转移示意图;[0027]图7是分支度量指令计算示意图;
[0028]图8是第一类状态转移的新路径度量值计算示意图;
[0029]图9是第二类状态转移的新路径度量值计算示意图;
[0030]图10是第三类状态转移的新路径度量值计算示意图;
[0031]图11是第四类状态转移的新路径度量值计算示意图;
[0032]图12是比较选择指令计算示意图;
[0033]图13是回溯过程示意图。
[0034]图14是viterbi译码装置译码流程图。
[0035]图15是状态转移计算示意图。
[0036]图16是viterbi译码时,处理器执行指令的时序图。
【具体实施方式】
[0037]现在结合附图对本发明作进一步的说明。这些附图均为简化的示意图仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
[0038]—种矢量viterbi译码指令,指令包括矢量分支度量指令、矢量加法指令、矢量减法指令、矢量比较选择指令、回溯指令、viterbi译码的并行指令。
[0039]矢量分支度量指令为:利用处理器的SIMD (Single Instruction Multiple Data)技术进行矢量计算,将viterbi输入的两个相邻的量化值分别作加法和减法,根据计算规律将得到的和与差组合成两个含有八个元素的矢量,将此两个矢量作为分支度量值。
[0040]矢量加法指令为:利用处理器的SMD技术对两个含有八个元素的矢量进行相加。
[0041]在viterbi译码时,将旧的路径度量值矢量和分支度量值矢量送入加法指令,通过做矢量加法同时计算出八路新的路径度量值。
[0042]矢量减法指令为:利用处理器的SMD技术对两个含有八个元素的矢量进行相减。
[0043]在viterbi译码时,将旧的路径度量值矢量和分支度量值矢量送入减法指令,通过做矢量减法同时计算出八路新的路径度量值。
[0044]矢量比较指令为:利用处理器的SMD技术同时对八个新路径度量值进行比较选择。
[0045]在viterbi译码时,使用的是基2算法,在做比较选择前,每个节点有两条新计算出的路径度量值,利用矢量比较指令可同时对四个节点做幸存路径的比较选择,将每个节点的路径度量值较大的路径作为幸存路径。
[0046]回溯指令为:回溯幸存路径,并得到最终的译码结果。
[0047]viterbi译码并行指令为:利用了多指令并发技术,将读写存储器指令、矢量加法指令、矢量减法指令、矢量比较选择指令和回溯指令汇集成一条指令。
[0048]执行viterbi译码并行指令时利用存储器的读写指令将某些路径的路径度量值读出供下一条指令使用,同时利用矢量加法指令或矢量减法指令将前一条指令读出的路径度量值和新计算的分支度量值相应相加或相减,得到新的路径度量值供下一条指令使用,同时利用矢量比较选择指令将前一条指令计算出的每个点的两条新路径度量值做比较选择,得出每个节点的新路径度量值和幸存路径,结果待下条指令处理,同时利用存储指令将前一条条指令计算得到的新路径度量值写入存储器中。[0049]—种viterbi译码装置,采用上述DSP中高速并行viterbi译码指令的方法。
[0050]例如,如图1是(2,1,7)卷积编码器的结构图,其约束长度为7,所以图中含有6个编码寄存器,对这六个编码寄存器做如下的状态标定:将距编码输入端最近的寄存器设为状态标号的最高位,将距编码输出端最近的寄存器设为状态标号的最低位,按照这种标定方法,编码器的状态转移图如图2所示,S后面括号内的数值表示编码寄存器组成的状态号,连线上的数值表示编码器的输入比特,连线上括号内的数值表示编码器的输出。
[0051]将四个相邻的状态分为一组,可得到16组状态转移图,研究发现按照编码器的输出这16组状态转移图可以分为四类,第一类如图3所示,编码器的输出依次为:(00,11,11,00,01,10,10,01),第二类如图4所示,编码器的输出依次为(11,00,00,11,10,01,01,10),第三类如图5所示,编码器的输出依次为(10,01,01,10,11,00,00,11),第四类如图6所示,编码器的输出依次为(01,10,10,01,00,11,11,00).[0052](2,1,7)编码器是1/2卷积编码器,编码器收到I比特信号后会有两个编码输出,接收方接收到信号后,首先对接收信号进行量化,然后将数据存储到存储器中,假设接收到的编码输出存储到Rtl和R1中,根据量化方法,在计算分支度量时接收到的软比特和期望值00的比较结果可以表示为BMOO = Rc^R1,与期望值11的比较结果可以表示为BMll=(RJR1),与期望值01的比较结果可以表示为BMOl = RtlR1,与期望值10的比较结果可以表示为BMlO = R0+ Rlo根据以上对状态转移图的分类总结,第一类状态转移的分支度量值计算方法为=O^R1, -Rq-R1, -Rq-R1, R0+Ri, R0-Ri, -Ro+R1, -Ro+R1, Rq-R1),第二类状态转移的分支度量值计算方法为:(-R0-Ri, Ro+Ri, W,-W,-RA R0-R1, W,-W,)=-(W,-W,-R0-R1, RA R0-R1, -Rc^R1, -Rc^R1, Rq-R1),第三类状态转移的分支度量值计算法方法为:(_R0+Ri? R0-Ri,Ro-Ri? -Ro+Ri,?,Ro+Ri,Ro+Ri,_RcrRi),第四类状态转移的分支度量值计算方法为:(R0-Ri, -Ro+Ri, -Ro+R1, R0-R1, W,? ? Ro+R1)=-(-RA R0-R1, R0-R1, -RA -W,W,R0+!^ -Rq-R1),所以所有状态转移的分支度量值计算方法只需要两种模式,即(Rci+R1, -Rq-R1, -Rq-R1, R0+Ri? RcrRi,_R0+Ri? _R0+Ri?R0-R1)和(-Rc^R1, R0-R1, Rtl-R1, -Rd+R1, _R0_Ri? R0+Ri? R0+Ri? _R0_Ri)? 由此设计的分支度量指令如图7所示,首先将接收到的两个编码输出分别相加和相减,然后将和与差按照分支度量值的两种计算模式组成两个矢量,最后将此两矢量存入矢量寄存器VAO和VB0,即VAO = (Rg+Rj, -R0-R1, -R0-R1, Rg+R1? R0-R1, -Ro+R1,-R0+Ri? R0-R1), VBO = (-Rc^R1, R0-R1?R0-R1, -Rg+R1 j -R0-R1, Ro+R1, Ro+R1, ?).[0053]DSP中存在两块矢量存储器,每一个地址单元可以存储8个状态的路径度量值,译码时,从第一块存储器中读出原路径度量值,经过状态转移后将新的路径度量值写入第二块存储单元中,在做下一次状态转移时,从第二块存储器中读取数据,将结果写入第一块存储器中,如此做乒乓操作。由图3所示的状态转移特征可知:对于每个状态S2k,当输入比特O时,状态转移至Sk,当输入比特为I时,状态转移至Sk+32,因此S2k的路径度量值需要和两个分支路径值相加,分别得到Sk和Sk+32的新的路径度量值,为了便于做矢量运算,在存储器中连续存储两个相同的状态路径度量值,如存储器的第一个存储单元存储的是DsB、
dE,.' DS: ' 0S- ' DS:、oS1 ' dE= ' ,VAO中也存储了含有八个元素的分支度量值,所以
本文利用处理器设计中的SIDM技术设计了矢量加法指令和矢量减法指令,用一条加法指令或减法指令即可实现八个路径度量值和八个分支度量值相加或相减。如图8所示,对于第一类状态转移,从存储器中取出八个状态的路径度量值,利用所设计的八个元素的矢量加指令,与VAO中的八个分支度量值做矢量加,得到新的相应状态的路径度量值;图9所示的是第二类状态转移,从存储器中取出八个状态的路径度量值后,利用本文所涉及的矢量减指令,与VAO中的八个分支度量值做矢量减,得到新的相应状态的路径度量值;图10所示的是第三类状态转移,从存储器中取出八个状态的路径度量值后,利用本文所涉及的矢量加指令,与VBO中的八个分支度量值做矢量加,得到新的相应状态的路径度量值;图11所示的是第四类状态转移,从存储器中取出八个状态的路径度量值后,利用本文所涉及的矢量减指令,与VBO中的八个分支度量值做矢量减,得到新的相应状态的路径度量值。
[0054]如图8、图9、图10和图11所示,根据状态转移图,状态路径度量值矢里
D oldl
【权利要求】
1.一种矢量Viterbi译码指令,其特征在于:指令包括矢量分支度量指令、矢量加法指令、矢量减法指令、矢量比较选择指令、回溯指令、viterbi译码的并行指令。
2.根据权利要求1所述的矢量viterbi译码指令,其特征在于:所述的矢量分支度量指令为:利用处理器的SMD技术进行矢量计算,将viterbi输入的两个相邻的量化值分别作加法和减法,根据计算规律将得到的和与差组合成两个含有八个元素的矢量,将此两个矢量作为分支度量值。
3.根据权利要求1所述的矢量viterbi译码指令,其特征在于:所述的矢量加法指令为:利用处理器的SMD技术对两个含有八个元素的矢量进行相加; 在viterbi译码时,将旧的路径度量值矢量和分支度量值矢量送入加法指令,通过做矢量加法同时计算出八路新的路径度量值; 所述的矢量减法指令为:利用处理器的SMD技术对两个含有八个元素的矢量进行相减; 在viterbi译码时,将旧的路径度量值矢量和分支度量值矢量送入减法指令,通过做矢量减法同时计算出八路新的路径度量值。
4.根据权利要求1所述的矢量viterbi译码指令,其特征在于:所述的矢量比较指令为:利用处理器的SMD技术同时对八个新路径度量值进行比较选择; 在viterbi译码时,使用的是基2算法,在做比较选择前,每个节点有两条新计算出的路径度量值,利用矢量比较指令可同时对四个节点做幸存路径的比较选择,将每个节点的路径度量值较大的路径作为幸存路径。
5.根据权利要求1所述的矢量viterbi译码指令,其特征在于:所述的回溯指令为:回溯幸存路径,并得到最终的译码结果。
6.根据权利要求1所述的矢量viterbi译码指令,其特征在于:所述的viterbi译码并行指令为:利用了多指令并发技术,将读写存储器指令、矢量加法指令、矢量减法指令、矢量比较选择指令和回溯指令汇集成一条指令; 执行viterbi译码并行指令时利用存储器的读写指令将某些路径的路径度量值读出供下一条指令使用,同时利用矢量加法指令或矢量减法指令将前一条指令读出的路径度量值和新计算的分支度量值相应相加或相减,得到新的路径度量值供下一条指令使用,同时利用矢量比较选择指令将前一条指令计算出的每个点的两条新路径度量值做比较选择,得出每个节点的新路径度量值和幸存路径,结果待下条指令处理,同时利用存储指令将前一条条指令计算得到的新路径度量值写入存储器中。
7.—种viterbi译码装置,其特征在于:采用权利要求1?6任一项所述的矢量viterbi译码指令的方法。
【文档编号】H03M13/23GK103986477SQ201410205590
【公开日】2014年8月13日 申请日期:2014年5月15日 优先权日:2014年5月15日
【发明者】刘勇 申请人:江苏宏云技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1