CN102404011B - 维特比解码实现方法及装置 - Google Patents

维特比解码实现方法及装置 Download PDF

Info

Publication number
CN102404011B
CN102404011B CN201010284258.0A CN201010284258A CN102404011B CN 102404011 B CN102404011 B CN 102404011B CN 201010284258 A CN201010284258 A CN 201010284258A CN 102404011 B CN102404011 B CN 102404011B
Authority
CN
China
Prior art keywords
metric
value
decoded
accumulated value
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201010284258.0A
Other languages
English (en)
Other versions
CN102404011A (zh
Inventor
原维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201010284258.0A priority Critical patent/CN102404011B/zh
Priority to US13/823,440 priority patent/US9100050B2/en
Priority to PCT/CN2011/072957 priority patent/WO2012034398A1/zh
Publication of CN102404011A publication Critical patent/CN102404011A/zh
Priority to HK12109532.2A priority patent/HK1168947A1/zh
Application granted granted Critical
Publication of CN102404011B publication Critical patent/CN102404011B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4107Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4161Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
    • H03M13/4169Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management using traceback
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

本发明涉及一种维特比解码实现方法及装置,该方法包括:计算接收码字与参考码字的分支路径度量值;根据状态转移图,将对应状态的度量值与分支路径度量值并行累加计算,获得累加值,并将最大的累加值作为下一状态新的度量值,记录所有的幸存路径选择结果,直到待解码数据结束;根据幸存路径选择结果,从最终状态开始回溯,获得解码。本发明通过将传统的串行或串并混合计算累计路径度量值的方式改为多路全并行计算方式,提高了***数据吞吐率,可达us级。本发明还改变了原本的滑动窗回溯方式,采用2倍的编码长度的回溯深度进行一次回溯,但只使用第二倍深度的回溯数据,无需存储累加值及状态度量值,简单高效又提高了***的性能。

Description

维特比解码实现方法及装置
技术领域
本发明涉及通讯领域,特别涉及一种维特比解码实现方法及装置。
背景技术
在无线传输中,由于信道比较恶劣,接收到的数据包含大量误码。所以传输信号必须进行编码及纠错。信道编码正是为了抗击传输过程中各种各样的噪声和干扰,通过人为增加冗余信息,使得***具有自动纠正差错的能力,从而保证数字传输的可靠性。随着无线数字通信技术的发展和各种高速率、突发性强的业务的出现,人们也对纠错编码技术提出了愈来愈高的要求。
最初纠错码主要集中在以代数理论为基础的线性分组码,随后出现了汉明码、RS码、循环码等,然而效果解决实际问题均有限。五十年代出现的卷积码在编码过程中引入了寄存器,增加了码元之间的相关性,从而在相同复杂度下获得比分组码更高的编码增益。卷积编码有三种格栅终止策略:
直接截尾法(如Directtruncation),不提供任何关于格栅最终状态到信息给解码器。
零尾法(如Zeroturmination),尾比特0被加到信息比特后面,然后进行编码,这样保证格栅回到特定状态0。
咬尾法(tailbiting)中有一种特殊到形式即零尾法,然而其相比零尾法不同的地方是不需要添加尾比特。咬尾法即一个码块在编码之前将卷积码编码器的初始状态设为该码块的最后若干比特,对于循环卷积码,在编码过程结束后编码器又重新回到初始状态,所以解码格栅可以被看成一个圈,在圆的任何位置解码都可以被初始化,也因此其对应的解码可以看成是循环转圈形式。
对于卷积编码所对应的解码算法很多,但其中最有效、最实用的解码算法为最大似然解码,即维特比解码算法。为了提高卷积码的码率,现在LTE等高速***中都采用咬尾卷积解码器,相比零尾法卷积解码器,需要更多的存储空间,计算复杂度也更大。
发明内容
本发明的主要目的是提供一种维特比解码实现方法及装置,旨在节省计算的存储空间,提高解码的工作效率。
本发明提供了一种维特比解码实现方法,包括以下步骤:
A计算接收码字与参考码字的分支路径度量值,所述接收码字为待解码数据,参考码字为编码器的状态输出值;
B根据状态转移图,将对应状态的度量值与分支路径度量值并行累加计算,并将最大的累加值作为下一状态的新的度量值,记录所有的幸存路径选择结果,直到待解码数据结束;
C在解码数据结束后,再重新输入6个零,并重复执行步骤B;
D根据所述幸存路径选择结果,从最终状态开始回溯,获得解码。
优选地,上述计算接收码字与参考码字的分支路径度量值之前还包括:
采用交叉存储的方法存储外部输入的待解码数据;并根据外部的解码指令读取待解码的数据。
优选地,上述根据状态转移图,将对应状态的度量值与分支路径度量值并行累加计算,并将最大的累加值作为下一状态的新的度量值,记录所有的幸存路径选择结果,直到待解码数据结束的步骤具体包括:
根据状态转移图,多路全并行累加计算对应状态的度量值与分支路径度量值,获得累加值;
根据加比选法则,选择最大的累加值作为下一状态的新的度量值,并保存所有的幸存路径选择结果;
当所述累加次数小于预置累加次数,则返回执行下一次累加计算;当所述累加次数大于或等于预置累加次数,则结束累加流程。
优选地,上述根据状态转移图,多路全并行累加计算对应状态的度量值与分支路径度量值,获得累加值之后还包括:
当0状态对应的累加度量值有效位的最高位为1时,将所有获得的累加值有效位的次高位减1,获得新的累加值并作为本次累加计算的结果。
优选地,上述根据幸存路径选择结果,从最终状态开始回溯,获得解码的步骤中,回溯深度采用两倍的编码长度。
本发明还提供了一种维特比解码实现装置,包括:
分支路径度量模块,用于计算接收码字与参考码字的分支路径度量值;
加比选模块,用于根据状态转移图,将对应状态的度量值与分支路径度量值并行累加计算,获得累加值,并将最大的累加值作为下一状态的新的度量值,记录所有的幸存路径选择结果,直到待解码数据结束;还用于待解码数据结束后,重新输入6个零,并重复进行路径度量值的累加计算;
回溯模块,用于根据所述幸存路径选择结果,从最终状态开始回溯,获得解码。
优选地,上述实现装置还包括:
输入数据存储模块,用于采用交叉存储的方式存储外部输入的待解码数据;并根据外部的解码指令读取待解码的数据。
优选地,上述加比选模块具体包括:
累加计算单元,用于根据状态转移图,多路全并行累加计算对应状态的度量值与分支路径度量值,获得累加值;
选择单元,用于根据加比选法则,选择最大的累加值作为下一状态的新的度量值,并记录其选择结果,直到待解码数据结束;
幸存路径存储单元,用于保存所有的幸存路径选择结果;
判断单元,用于当所述累加次数小于预置累加次数,则返回执行所述累加计算单元的下一次累加计算;当所述累加次数大于或等于预置累加次数,则结束累加计算。
优选地,上述加比选模块还包括:
防溢出单元,用于当0状态对应的累加度量值有效位的最高位为1时,将所有获得的累加值有效位的次高位减1,获得新的累加值并作为本次累加计算的结果。
优选地,上述回溯模块采用的回溯深度为两倍的编码长度。
本发明通过将传统的串行或串并混合计算累计路径度量值的方式改为多路全并行计算方式,提高了***数据吞吐率,可达us级。
本发明还改变了原本的滑动窗回溯方式。一次回溯即输出译码结果,回溯深度为2倍的编码长度,但只使用第二倍深度的回溯数据,且无需存储状态度量值,简单高效又提高了***的性能。
本发明还改变了累计路径度量值的防溢出方式,更易于实现,且可降低累计路径度量值的位宽。
本发明对于待解码数据的输入采用交叉存储的方式,数据输入与解码可同时进行,解决了解码等待而带来的处理延迟。
附图说明
图1是本发明维特比解码实现方法一实施例的流程示意图;
图2是本发明相关技术的咬尾卷积编码器的结构示意图;
图3是本发明相关技术的咬尾卷积编译码器的状态转移图;
图4是本发明维特比解码实现方法一实施例中累加路径度量值的流程示意图;
图5是本发明维特比解码实现方法另一实施例中累加路径度量值的流程示意图;
图6是本发明维特比解码实现方法又一实施例的流程示意图;
图7是本发明维特比解码实现方法中交叉存储器的结构示意图;
图8是本发明维特比解码实现装置一实施例的结构示意图;
图9是本发明维特比解码实现装置一实施例中加比选模块的结构示意图;
图10是本发明维特比解码实现装置另一实施例中加比选模块的结构示意图;
图11是本发明维特比解码实现装置又一实施例的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1是本发明维特比解码实现方法一实施例的流程示意图。
本实施例维特比解码实现方法包括以下步骤:
步骤S10、计算接收码字与参考码字的分支路径度量值;
接收码字为待解码数据,参考码字为编码器的状态输出值。将编码器的状态输出值与待解码数据进行相关计算,获得分支路径度量值。
本实施例主要用于数据移动通讯***中纠错码的解码,例如3G(3rd-Generation,第三代移动通信技术)及LTE(LongTermEvolution,长期演进)项目等。下面将以3GPPTS36.212标准中提供的咬尾卷积编码器为例进行详细描述。
参照图2,是3GPPTS36.212标准中提供的咬尾卷积编码器,共有6个移存器,码率为1/3,因此每一次计算过程中有26=64个状态,分别为:S0,S1,S2,……S63,将这6个寄存器用向量表示:dd[5:0],其中dd[0]为input对应的触发器。
编码过程dd变化:ddt[5:0]={ddt-1[5:0],din},从这可以看出,能到达一个St状态共有两个,为{0,ddt-1[4:0]}和{1,ddt-1[4:0]}。它们满足:ddt[5:1]=ddt-1[4:0],ddt[0]=din。还可以看出{0,ddt-1[4:0]}和{1,ddt-1[4:0]}都能到达{ddt-1[4:0],0}和{ddt-1[4:0],1}这两个状态。
具体来说,卷积编码过程中,在T时刻,能到达S2k、S2k+1的状态有两个为Sk和Sk+32(k=0~31)这两个状态,S2k对应于输入为0,S2k+1对应于输入为1。Sk和Sk+32的最高位分别对应为0和1,即如图3所示的编解码状态转移图。例如,通过相关计算,可知Sk到S2k和S2k+1的分支路径度量值分别为5和3,而Sk+32到S2k和S2k+1的分支度量值分别为13和10。
步骤S11、根据状态转移图,将对应状态的度量值与分支路径度量值并行累加计算,获得累加值,并将最大的累加值作为下一状态的新的度量值,记录所有的幸存路径选择结果,直到待解码数据结束;
参照图4,步骤S11具体可包括:
步骤A1、根据状态转移图,多路全并行累加计算对应状态的度量值与分支路径度量值,获得累加值;
根据状态转移图,通过多路(例如32路)全并行,将对应状态的度量值与分支路径度量值进行累加,获得累加值。例如,T-1时刻,Sk的度量值为16,Sk+32的度量值为15,且Sk到S2k和S2k+1的分支路径度量值分别为5和3,而Sk+32到S2k和S2k+1的分支度量值分别为13和10,则通过累加对应状态的度量值及分支路径度量值可知,到达S2k的路径累加值分别为26+5=31和15+13=28,到达S2k+1的路径累加值分别为26+3=29和15+10=25。
步骤A2、根据加比选法则,选择最大的累加值作为下一状态的新的度量值;
根据加比选法则,将到达同一状态的两条支路的路径累加值进行比较,选择最大的路径累加值作为该状态的新的度量值,并记录其选择结果,直到待解码数据结束。例如根据步骤A2,将选择最大的路径累加值31作为S2k的新的度量值,选择最大的路径累加值29作为S2k+1的新的度量值。所以在T时刻时,S2k和S2k+1的度量值分别为31和29,作为T+1时刻的累加计算时对应状态的度量值。
步骤A3、保存所有的幸存路径选择结果;
根据步骤A2中的选择结果,从而保存该所有的幸存路径选择结果,并形成一条幸存路径,以供后期根据该幸存路径回溯到原始状态。
步骤A4、判断累加次数是否小于预置累加次数,是则返回执行步骤A1;否则结束累加流程。
该预置的累加次数,由码块长度及外部的解码循环次数共同决定。
步骤S12、根据所述幸存路径选择结果,从最终状态开始回溯,获得解码。
待解码数据结束后,则步骤S11后获得了相应的幸存路径值,则步骤S12中可以根据该幸存路径值,从最终状态开始回溯,即可获得解码。该最终状态可以为0状态,也可以为任意状态。
在此步骤中,由于编码器在编码前其编码方式就已经固定,因此其参考码字或称为编码多项式就已经固定,步骤S10所获得的分支路径度量,如何进行步骤S11的蝶形累加,需由参考码字与输入码字的状态计算并进行选择,且需在加比选内部来选择。而本发明根据加比选全并行以及编码器状态转移的特点,可以减少32路并行计算固定选项的一大堆电路,节省了***资源。
本实施例通过将传统的串行或串并混合计算累计路径度量值的方式改为多路全并行计算方式,提高了***数据吞吐率,可达us级。
上述实施例中计算累加路径度量值时,如果不对其位宽进行限制,则将浪费大量资源。例如解码循环4次,码块长度为128,而输入待解码的数据位宽为8bit,则所需累计路径度量值的位宽为19bit(28*3*128*4=219),其至少用到64个累计路径度量寄存器,资源浪费比较大。因此,为了降低资源浪费,参照图5,可以在上述步骤A2之后还包括:
步骤A5、当0状态对应的累加度量值有效位的最高位为1时,将所有获得的累加值有效位的次高位减1,获得新的累加值并作为本次累加计算的结果。
首先将判断0状态所对应的累加路径度量值的的有效位的最高位(若有符号数,有效位指除了符号位之外的数据位)是否为1,是则将所有获得的累加值有效位的次高位减1,即将整体度量值向零值进行简单归一化。例如,以14bit的累计路径度量值为例,当distance0[12]为零时,正常操作,产生的减法使能信号sub_en为低电平;当distance0[12]为1时,产生的减法使能信号sub_en为高电平,则将所有幸存路径减去0x800(16进制),即distance0有效位的次高位,就能有效防止累计度量值的溢出。
传统的防溢出步骤主要是固定值的选择上,需要比较所有路径度量值并取其最小值作为固定值,而本实施例的防溢出步骤可以节省一堆比较选择电路、并且减法电路极为简单,因为它只针对累计度量值的高三位进行减1操作。
上述实施例中,步骤S12中回溯的深度为两倍的编码长度。回溯的具体过程为:由步骤S11可以得到回溯的起始状态为max_num[5:0]=0,则其前一个状态为max_num[5:0]={qqq[max_num],max_num[5:1]},此处qqq为记录的64比特的幸存路径值。当回溯需取所记录的幸存路径选择结果qqq时,其回溯深度约为2*block_size,回溯后解码的输出结果为dec_bit=max_num[0]。当输出数据时抛弃第一倍深度的回溯数据,只使用第二倍深度的回溯数据,因此也只存储一倍的回溯数据,资源上并未增加太多东西。采用两倍编码长度的回溯深度,是因为高速解码***用咬尾卷积码代替普通卷积码,仿真后发现其相比一倍的编码长度回溯,解码器的性能提高了0.2db~0.3db,因此本发明回溯深度采用两倍的编码长度保证了***的性能。而且,相比传统的滑动窗方式需根据窗长多步回溯,本发明的控制更为简单,实现更为方便。
上述回溯控制由外部的解码循环次数max_times决定。当满足外部时序控制条件en_6s&(~en_5s)=1时,判断内部循环计数max_cnt是否等于max_times,若相等则停止解码,并将循环计数器max_cnt清0;否则再次启动解码,置内部解码启动标志位trace_flag为1,max_cnt加1。此处启动回溯输出解码结果仅是一个简化的表示,其实际还包括给定幸存路径的读取地址,以及相应控制、存储等多个操作。理论上循环次数越大,解码器的性能越好,然而经仿真发现,当循环次数在4圈以上,解码器的性能增加很小,而同时带来的资源消耗却大大增加,因此本发明的循环次数max_times取值优选为2圈~4圈之间。
上述实施例中,步骤S11之后待解码数据结束后,还可以重新输入6个零,并重复上述步骤S11。因为当解码循环次数到达(即待解码数据结束)后,所有状态度量中仅有一个状态对应最大路径度量累加值,若此时回溯则需要在步骤S11的每次计算中存储每次的状态度量值,才能得到最大路径度量对应的状态度量值。本发明为了节省状态度量的存储空间,待解码数据结束后,还可以重新输入6个零,并重复上述步骤S11。由于该编码器为6个移存器,因此经过6次加比选计算后,所有的状态对应的路径度量值都等于最大路径度量值,则根据该幸存路径就可以回溯到最初状态,即不用存储状态度量值。可以理解的是,当步骤S12进行回溯的时候回溯长度增加了6。因此,本实施例中步骤S12中回溯是采用的回溯深度则为2倍的编码长度+6。
参照图6,上述实施例中,步骤S10之前还包括步骤S14:采用交叉存储的方式存储外部输入的待解码数据;并根据外部的解码指令读取待解码的数据。
当接收到外部的解码指令时,则将存储在交叉存储器中的待解码数据分时读入。参照图7,是交叉存储器的结构图。该交叉存储器包括两个存储器SA和SB。首先判断两个交叉存储器是否处于空闲状态,是则允许新的待解码数据写入交叉存储器;否则禁止新的待解码数据写入交叉存储器。在待解码数据写入一个存储器的同时,允许从另一个存储器中读取待解码数据。例如,在第一场的时间,将输入的数据缓存至存储器SA,在第二场的时间,通过“输入数据选择单元”的切换,将输入的数据流缓存至存储器SB,同时可以将存储器SA的数据通过“输出数据选择单元”的选择送出。在第三场的时间,将输入的数据流缓存至存储器SA,同时可以将存储器SB的数据通过“输出数据选择单元”的切换而送出。如此循环,即可实现数据的无缝缓冲,大大提高了后期的并行处理速度。
本实施例中根据解码器所支持的最大编码长度,采用一组交叉存储器的存储结构,每组可包含3个单口RAM,分别存储编码器输出的g0、g1、g2三路数据。如此,在进行维特比解码的同时,下一组待解码数据就可同时准备,利用交叉存储器,有效减少了解码时因为等待存储数据而带来的处理延迟。
图8是本发明维特比解码实现装置一实施例的结构示意图。
本实施例维特比实现装置包括:
分支路径度量模块10,用于计算接收码字与参考码字的分支路径度量值;
加比选模块11,用于根据状态转移图,将对应状态的度量值与分支路径度量值并行累加计算,获得累加值,并将最大的累加值作为下一状态的新的度量值,记录所有的幸存路径选择结果,直到待解码数据结束;
回溯模块12,用于根据所述幸存路径选择结果,从最终状态开始回溯,获得解码。
接收码字为待解码数据,参考码字为编码器的状态输出值。分支路径度量模块10将编码器的状态输出值与待解码数据进行相关计算,获得分支路径度量值。由图3所示的编解码状态转移图,通过相关计算可知Sk到S2k和S2k+1的分支路径度量值分别为5和3,而Sk+32到S2k和S2k+1的分支度量值分别为13和10。
参照图9,加比选模块11具体包括:
累加计算单元111,用于根据状态转移图,多路全并行累加计算对应状态的度量值与分支路径度量值,获得累加值;
选择单元112,用于根据加比选法则,选择最大的累加值作为下一状态的新的度量值;
幸存路径存储单元113,用于保存所有的幸存路径选择结果;
判断单元114,用于当所述累加次数小于预置累加次数,则返回执行所述累加计算单元的下一次累加计算;当所述累加次数大于或等于预置累加次数,则结束累加计算。
根据状态转移图,通过32路全并行,累加计算单元111将对应状态的度量值与分支路径度量值进行累加,并获得累加值。例如,T-1时刻,Sk的度量值为16,Sk+32的度量值为15,且Sk到S2k和S2k+1的分支路径度量值分别为5和3,而Sk+32到S2k和S2k+1的分支度量值分别为13和10,则通过累加对应状态的度量值及分支路径度量值可知,到达S2k的路径累加值分别为26+5=31和15+13=28,到达S2k+1的路径累加值分别为26+3=29和15+10=25。选择单元112则根据加比选法则,选择最大的累加值作为下一状态的新的度量值。即选择最大的路径累加值31作为S2k的新的度量值,选择最大的路径累加值29作为S2k+1的新的度量值。同时,幸存路径存储单元113将保存每一次选择的路径度量值,直到判断单元114判断累加次数大于或等于预置累加次数时,才结束累加计算单元111的累加计算。
本实施例通过将传统的串行或串并混合计算累计路径度量值的方式改为多路全并行计算方式,提高了***数据吞吐率,可达us级。
参照图10,上述实施例中的加比选模块还包括:
防溢出单元115,用于当0状态对应的累加度量值有效位的最高位为1时,将所有获得的累加值有效位的次高位减1,获得新的累加值并作为本次累加计算的结果。
由于上述实施例中的累计路径度量值时,如果不对其位宽进行限制,则将浪费大量资源。例如解码循环4次,码块长度为128,而输入待解码的数据位宽为8bit,则所需累计路径度量值的位宽为19bit(28*3*128*4=219),其至少用到64个累计路径度量寄存器,资源浪费比较大。因此,防溢出单元114将判断0状态所对应的累加路径度量值的有效位的最高位(若有符号数,有效位指除了符号位以外的数据位)是否为1,是则将所有获得的累加值有效位的次高位减1,即将整体度量值向零值进行简单归一化。例如,以14bit的累计路径度量值为例,当distance0[12]为零时,正常操作,产生的减法使能信号sub_en为低电平;当distance0[12]为1时,产生的减法使能信号sub_en为高电平,将所有幸存路径减去0x800(16进制),即distance0的有效位的次高位,就能有效防止累计度量值的溢出。
传统的防溢出单元主要是固定值的选择上,需要比较所有路径度量值并取其最小值作为固定值,而本实施例的防溢出步骤可以节省一堆比较选择电路、并且减法电路极为简单,因为它只针对累计度量值的高三位进行减1操作。
上述实施例中,回溯模块12中采用的回溯的深度为两倍的编码长度。回溯的具体过程为:由步骤S11可以得到回溯的起始状态为max_num[5:0]=0,则其前一个状态为max_num[5:0]={qqq[max_num],max_num[5:1]},此处qqq为记录的64比特的幸存路径值。当回溯需取所记录的幸存路径选择结果qqq时,其回溯深度约为2*block_size,回溯后解码的输出结果为dec_bit=max_num[0]。当输出数据时抛弃第一倍深度的回溯数据,只使用第二倍深度的回溯数据,因此也只存储一倍的回溯数据,资源上并未增加太多东西。采用两倍编码长度的回溯深度,是因为高速解码***用咬尾卷积码代替普通卷积码,仿真后发现其相比一倍的编码长度回溯,解码器的性能提高了0.2~0.3db,因此本发明回溯深度采用两倍的编码长度保证了***的性能。而且,相比传统的滑动窗方式需根据窗长多步回溯,本发明的控制更为简单,实现更为方便。
上述实施例中,上述加比选模块11还用于待解码数据结束后,重新输入6个零,并重复进行路径度量值的累加计算。因为当解码循环次数到达(即待解码数据结束)后,所有状态度量中仅有一个状态对应最大路径度量值,若此时回溯则需要在加比选模块11的每次加比选计算中存储其状态度量值,才能得到最大路径度量对应的状态度量值。因此,本发明为了节省状态度量的存储空间,待解码数据结束后,重新输入6个零,并重复进行路径度量值的累加计算。由于该编码器为6个移存器,因此经过6次加比选计算后,所有的状态对应的路径度量值都等于最大路径度量值,则根据该幸存路径就可以回溯到最初状态,即不用存储状态度量值。可以理解的是,针对该加比选模块11的保存结果进行回溯的时候回溯长度增加了6。因此,本实施例中回溯模块12采用的回溯深度则为2倍的编码长度+6。
参照图11,是本发明维特比解码实现装置另一实施例的结构示意图。
在上一实施例的基础上,本实施例维特比解码实现装置还包括:
输入数据存储模块13,用于采用交叉存储的方式存储外部输入的待解码的数据;并根据外部的解码指令读取待解码的数据。
当接收到外部的解码指令时,则将存储在交叉存储器中的待解码数据分时读入。该输入数据存储模块13包括一组交叉存储器,每组存储器又由三个小存储区(例如单口RAM)组成,分别存储编码后输出的g0、g1、g2三路数据。首先判断交叉存储器是否处于空闲状态,是则允许新的待解码数据写入交叉存储器;否则禁止新的待解码数据写入交叉存储器。在待解码数据写入一个交叉存储器的同时,允许从另一个交叉存储器中读取待解码数据。该输入数据存储模块13主要由外部的时序控制模块控制其并行地送至分支路径度量模块10。因此,在进行维特比解码的同时,下一组待解码数据就可同时准备,利用交叉存储器,有效减少了解码时因为等待存储数据而带来的处理延迟。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (6)

1.一种维特比解码实现方法,其特征在于,包括以下步骤:
A计算接收码字与参考码字的分支路径度量值,所述接收码字为待解码数据,参考码字为编码器的状态输出值;
B根据状态转移图,将对应状态的度量值与分支路径度量值并行累加计算,获得累加值,并将最大的累加值作为下一状态的新的度量值,记录所有的幸存路径选择结果,直到待解码数据结束;
C在解码数据结束后,再重新输入6个零,并重复执行步骤B;
D根据所述幸存路径选择结果,从最终状态开始回溯,获得解码;
所述根据状态转移图,将对应状态的度量值与分支路径度量值并行累加计算,获得累加值,并将最大的累加值作为下一状态的新的度量值,记录所有的幸存路径选择结果,直到待解码数据结束的步骤具体包括:
根据状态转移图,多路全并行累加计算对应状态的度量值与分支路径度量值,获得累加值;
当0状态对应的累加度量值有效位的最高位为1时,将所有获得的累加值有效位的次高位减1,获得新的累加值并作为本次累加计算的结果;
根据加比选法则,选择最大的累加值作为下一状态的新的度量值,并保存所有的幸存路径选择结果;
当所述累加次数小于预置累加次数,则返回执行下一次累加计算;当所述累加次数大于或等于预置累加次数,则结束累加流程。
2.根据权利要求1所述的维特比解码实现方法,其特征在于,所述计算接收码字与参考码字的分支路径度量值之前还包括:
采用交叉存储的方式存储外部输入的待解码数据;并根据外部的解码指令读取所述待解码的数据。
3.根据权利要求1或2所述的维特比解码实现方法,其特征在于,所述根据幸存路径选择结果,从最终状态开始回溯,获得解码的步骤中,回溯深度采用两倍的编码长度。
4.一种维特比解码实现装置,其特征在于,包括:
分支路径度量模块,用于计算接收码字与参考码字的分支路径度量值;
加比选模块,用于根据状态转移图,将对应状态的度量值与分支路径度量值并行累加计算,获得累加值,并将最大的累加值作为下一状态的新的度量值,记录所有的幸存路径选择结果,直到待解码数据结束;还用于待解码数据结束后,对加比选模块重新输入6个零,并复用加比选模块,重复进行路径度量值的累加计算;
回溯模块,用于根据所述幸存路径选择结果,从最终状态开始回溯,获得解码;
所述加比选模块具体包括:
累加计算单元,用于根据状态转移图,多路全并行累加计算对应状态的度量值与分支路径度量值,获得累加值;
防溢出单元,用于当0状态对应的累加度量值有效位的最高位为1时,将所有获得的累加值有效位的次高位减1,获得新的累加值并作为本次累加计算的结果;
选择单元,用于根据加比选法则,选择最大的累加值作为下一状态的新的度量值;
幸存路径存储单元,用于保存所有的幸存路径选择结果;
判断单元,用于当所述累加次数小于预置累加次数,则返回执行所述累加计算单元的下一次累加计算;当所述累加次数大于或等于预置累加次数,则结束累加计算。
5.根据权利要求4所述的维特比解码实现装置,其特征在于,还包括:
输入数据存储模块,用于采用交叉存储的方式存储外部输入的待解码数据;并根据外部的解码指令读取待解码的数据。
6.根据权利要求4或5所述的维特比解码实现装置,其特征在于,所述回溯模块采用的回溯深度为两倍的编码长度。
CN201010284258.0A 2010-09-15 2010-09-15 维特比解码实现方法及装置 Expired - Fee Related CN102404011B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201010284258.0A CN102404011B (zh) 2010-09-15 2010-09-15 维特比解码实现方法及装置
US13/823,440 US9100050B2 (en) 2010-09-15 2011-04-18 Method and device for implementing Viterbi decoding
PCT/CN2011/072957 WO2012034398A1 (zh) 2010-09-15 2011-04-18 维特比解码实现方法及装置
HK12109532.2A HK1168947A1 (zh) 2010-09-15 2012-09-27 維特比解碼實現方法及裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010284258.0A CN102404011B (zh) 2010-09-15 2010-09-15 维特比解码实现方法及装置

Publications (2)

Publication Number Publication Date
CN102404011A CN102404011A (zh) 2012-04-04
CN102404011B true CN102404011B (zh) 2015-05-20

Family

ID=45830970

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010284258.0A Expired - Fee Related CN102404011B (zh) 2010-09-15 2010-09-15 维特比解码实现方法及装置

Country Status (4)

Country Link
US (1) US9100050B2 (zh)
CN (1) CN102404011B (zh)
HK (1) HK1168947A1 (zh)
WO (1) WO2012034398A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102655415B (zh) * 2012-04-20 2016-03-30 泰斗微电子科技有限公司 一种维特比译码装置和方法
CN103427850B (zh) * 2012-05-24 2017-04-05 深圳市中兴微电子技术有限公司 多模维特比解码装置及其解码方法
CN103401826B (zh) * 2013-08-09 2016-10-26 电子科技大学 基于ook调制的多载波跳频通信的软判决方法
CN110034769B (zh) * 2019-05-24 2024-05-03 国网信息通信产业集团有限公司 一种维特比译码方法及装置
CN110990337A (zh) * 2019-12-25 2020-04-10 北京锐安科技有限公司 文件搬运方法、装置、计算机设备及存储介质
CN112532554B (zh) * 2020-10-29 2022-10-28 西安空间无线电技术研究所 一种GMSK***Viterbi解调的一步回溯方法
CN113723337A (zh) * 2021-09-07 2021-11-30 武汉东智科技股份有限公司 基于ddt深度神经模型结构的监控图像地点信息识别方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1307432A (zh) * 2000-01-24 2001-08-08 华为技术有限公司 用于Turbo码的解码方法和解码器
CN1933335A (zh) * 2006-07-28 2007-03-21 华为技术有限公司 一种译码方法及译码装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822341A (en) 1995-04-06 1998-10-13 Advanced Hardware Architectures, Inc. Multiport RAM for use within a viterbi decoder
JP3280834B2 (ja) * 1995-09-04 2002-05-13 沖電気工業株式会社 符号化通信方式における信号判定装置および受信装置ならびに信号判定方法および通信路状態推定方法
FR2776873B1 (fr) * 1998-03-25 2000-06-02 Matra Communication Procede de detection d'une sequence de symboles discrets a partir d'un signal d'observation, et processeur de viterbi mettant en oeuvre un tel procede
CN1155161C (zh) 2000-05-08 2004-06-23 华为技术有限公司 用于特博码的解码器及其解码方法
AU2001291311A1 (en) * 2000-09-08 2002-03-22 Avaz Networks Programmable and multiplierless viterbi accelerator
CN100413217C (zh) * 2005-08-08 2008-08-20 北京大学深圳研究生院 一种维特比译码器及用于维特比译码器的加比选单元电路
US20070115960A1 (en) * 2005-11-04 2007-05-24 Mediatek Inc. De-interleaver for data decoding
US7512870B2 (en) * 2006-08-30 2009-03-31 Cisco Technology, Inc. Method and system for improving the performance of a trellis-based decoder
CN101090274A (zh) 2007-07-31 2007-12-19 华为技术有限公司 一种维特比译码器及其回溯译码方法和回溯译码装置
US8009773B1 (en) * 2008-04-04 2011-08-30 Hellosoft India Pvt. Ltd. Low complexity implementation of a Viterbi decoder with near optimal performance
CN101635611B (zh) * 2009-09-02 2013-06-05 中兴通讯股份有限公司 一种信道译码方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1307432A (zh) * 2000-01-24 2001-08-08 华为技术有限公司 用于Turbo码的解码方法和解码器
CN1933335A (zh) * 2006-07-28 2007-03-21 华为技术有限公司 一种译码方法及译码装置

Also Published As

Publication number Publication date
WO2012034398A1 (zh) 2012-03-22
HK1168947A1 (zh) 2013-01-11
US9100050B2 (en) 2015-08-04
CN102404011A (zh) 2012-04-04
US20130185616A1 (en) 2013-07-18

Similar Documents

Publication Publication Date Title
CN102404011B (zh) 维特比解码实现方法及装置
CN103427850B (zh) 多模维特比解码装置及其解码方法
CN107911195B (zh) 一种基于cva的咬尾卷积码信道译码方法
CN101997553B (zh) 一种卷积码译码方法及装置
CN1327653A (zh) 移动通信***中的分量解码器及其方法
US8719658B2 (en) Accessing memory during parallel turbo decoding
RU2571597C2 (ru) Способ и устройство для декодирования турбокода
WO2011026330A1 (zh) 一种信道译码方法和装置
KR102547476B1 (ko) 경로 메트릭 값 기반의 디코딩 프로세스 제어 방법, 연산 장치 및 모바일 장치
EP0653867B1 (en) Viterbi equaliser using a processing power saving trace-back method
US20040044945A1 (en) Turbo decoding apparatus and method
CN102835062B (zh) 确定码距的方法及计算装置
CN102739261B (zh) 多相加比选前向回溯Viterbi译码器
CN101662293B (zh) 一种译码方法和设备
US8032811B2 (en) Efficient almost regular permutation (ARP) interleaver and method
CN114430279B (zh) 一种列表维特比译码方法、装置、译码器和存储介质
CN102291198B (zh) 信道译码方法和装置
CN100505557C (zh) 基于Viterbi译码的多路并行循环块回溯方法
CN103986477A (zh) 矢量viterbi译码指令及viterbi译码装置
CN105589082A (zh) 一种北斗导航***的维特比译码装置及方法
US20040261005A1 (en) Algorithm for a memory-based Viterbi decoder
CN103873072A (zh) 一种基于FPGA的卷积码高速viterbi译码器
JP3892471B2 (ja) 復号方法
CN113992213B (zh) 一种双路并行译码存储设备及方法
US20140281789A1 (en) Adaptive multi-core, multi-direction turbo decoder and related decoding method thereof

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1168947

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1168947

Country of ref document: HK

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150520

Termination date: 20200915

CF01 Termination of patent right due to non-payment of annual fee