CN106209117B - 一种低资源消耗的多参数可配置Viterbi译码器 - Google Patents
一种低资源消耗的多参数可配置Viterbi译码器 Download PDFInfo
- Publication number
- CN106209117B CN106209117B CN201610832176.2A CN201610832176A CN106209117B CN 106209117 B CN106209117 B CN 106209117B CN 201610832176 A CN201610832176 A CN 201610832176A CN 106209117 B CN106209117 B CN 106209117B
- Authority
- CN
- China
- Prior art keywords
- code
- state
- unit
- standard
- grid
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/23—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
- H03M13/235—Encoding of convolutional codes, e.g. methods or arrangements for parallel or block-wise encoding
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明涉及一种低资源消耗的多参数可配置Viterbi译码器,包括:输入配置单元,用于将译码输入标准化;标准码计算单元,用于计算标准卷积码;分支度量计算单元,用于计算分支度量值;网格运算单元,用于重构网格图和计算幸存路径;状态度量存储比较单元、幸存路径存储单元和回溯单元,用于根据幸存路径和网格图重建译码序列。本发明针对标准码计算单元提出一种递归复用的方法:枚举四组状态码作为标准码元,计算标准码元的标准卷积码,然后依次翻转标准码元的高五位和最低位,将标准码元的标准卷积码与翻转位进行迭代运算,经过六次迭代运算后得到所有状态码的标准卷积码;该方法通过复用标准码元进行计算,降低了资源消耗。
Description
技术领域
本发明涉及无线通信的信道解码技术,特别涉及一种低资源消耗的多参数可配置Viterbi译码器。
背景技术
在无线通信的信道解码技术中,概率译码是作为接收端对编码序列进行分析的一种最佳方式。在概率译码中,Viterbi译码算法是对卷积码在加性高斯白噪声信道下的最佳概率译码算法。自Viterbi译码算法提出以来,已经被广泛应用于信道纠错系统中,如移动通信、卫星通信、数字电视、高速硬盘等。
对于不同的通信标准,卷积码的约束长度、码率、约束多项式均不同,对应的Viterbi译码算法参数也不同。表1列出了部分使用Viterbi算法作为译码算法的通信标准及其相关参数。
表1多种无线通信标准下的卷积码参数
在对多模通信要求越来越高的移动通信系统中,发明一种可针对多种约束条件下卷积码进行分析的译码器就显得尤为重要。在现有的相关工作中,已有可以支持可变码率、可变约束长度的可配置Viterbi译码器。这一类研究主要集中在可配置、高吞吐率以及动态可配置方面,表2列出了一些相关研究人员和其发表的论文中可配置Viterbi译码器的参数和资源消耗情况。例如,Cacallaro J.R.等人(Cavallaro J.R.,Vaya M.."Viturbo:areconfigurable architecture for Viterbi and turbo decoding."IEEEInternational Conference on Acoustics IEEE,2003:II-497-500vol.2.)提出了一种支持1/2、1/3可变码率和3-9可变约束长度的Viterbi译码器,实现吞吐率为60.6Mbps;CamposJ.M.(Campos J.M.,Cumplido R.."A Runtime Reconfigurable Architecture forViterbi Decoding."International Conference on Electrical and ElectronicsEngineering,2006:1-4.)、Swaminathan S.(Swaminathan S,et al."A dynamicallyreconfigurable adaptive viterbi decoder."ACM/SIGDA international symposium onfield programmable gate arrays,2002:227-236.)等人均实现了Viterbi译码器的动态可配置;Batcha M.F.N.等人(Batcha M.F.N.,Sha'Ameri A.Z.."Configurable adaptiveViterbi decoder for GPRS,EDGE and Wimax."IEEE International Conference onTelecommunications and Malaysia International Conference on Communications,2007:237-241.)实现了吞吐率高达150Mbps的可配置Viterbi译码器。以上提到的可配置Viterbi译码器,在可配置、高吞吐率和动态可配置等方面有较好的阐述,但并未在资源消耗的优化上进行深入的研究。
表2相关工作中可配置Viterbi译码器的参数和资源消耗
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:约束长度由小变大时,Viterbi译码器的电路复杂度呈指数上升;为了实现多参数可配置,采用可自适应多种约束长度的状态码和网格图是最佳的解决方案;为了实现高吞吐率,采用全并行的结构可以大大的减少路径延时,提高译码速率;但是这两种方法带来的问题是:当以多参数可配置作为最终目标时,可配置部分逻辑单元的数量和面积难以控制,而需要采用部分流水线结构以减小电路的面积,导致吞吐率较低;当以高吞吐率为最终目标时,全并行的结构将会大大增加电路的面积,需要牺牲一部分参数的配置为代价,保证电路面积不至于过大。
(二)技术方案
为解决上述问题,本发明提供了一种低资源消耗的多参数可配置Viterbi译码器,包括输入配置单元(1)、标准码计算单元(2)、分支度量计算单元(3)、网格运算单元(4)、状态度量存储比较单元(5)、幸存路径存储单元(6)和回溯单元(7)。所述低资源消耗的多参数可配置Viterbi译码器以较少的资源消耗实现灵活的配置,支持3-9可变约束长度,可变码率(1/2、1/3、1/4)和可变约束多项式,具有良好的吞吐率,对GSM、CDMA、CDMA2000、DAB等多种通信标准都具有良好的兼容性。
所述输入配置单元(1)用于将可变约束多项式和待译码数据标准化,并产生控制网格运算单元(4)的控制信号。所述标准码计算单元(2)用于生成状态码,并计算对应于状态码的标准卷积码。所述分支度量计算单元(3)包含多个对应于状态码的度量计算单元,用于计算对应于状态码的分支度量值。所述网格运算单元(4)用于重构网格图,包含多个可配置蝶形运算单元,用于计算对应于状态码的状态度量值和幸存路径。所述状态度量存储比较单元(5)用于存储状态度量值,并将所有状态度量值进行逐级比较,计算回溯索引值。所述幸存路径存储单元(6)用于存储网格运算单元(4)输出的幸存路径。所述回溯单元(7)根据回溯索引值和幸存路径寻找译码比特信息,得到最终的译码序列。
所述低资源消耗的多参数可配置Viterbi译码器,针对所述标准码计算单元(2)提出了一种递归复用的方法:采用位宽为八的四组状态码作为标准码元,计算标准码元的标准卷积码;依次翻转标准码元的高五位和最低位,生成约束长度为9的所有状态码;针对第一次翻转,将标准码元的标准卷积码与当前翻转位进行第一次迭代运算,得到对应于当前状态码的标准卷积码;在第一次翻转之后的每一次翻转,仅需将上一次翻转得到的标准卷积码与当前翻转位进行迭代运算,即可得到对应于当前状态码的标准卷积码。
所述网格运算单元(4)可根据可变约束长度的变化重构网格图。网格运算单元(4)采用标准码计算单元(2)生成的约束长度为9的所有状态码为节点,构建基准网格图。当约束长度变化为k(3≤k≤8)时,将基准网格图中节点的高k-1位作为新的节点,将基准网格图中节点的MSB-(k-1)作为新的转换路径,重构约束长度为k的网格图。
如上所述的低资源消耗的多参数可配置Viterbi译码器,其译码步骤为:输入配置单元(1)对待译码数据和可变约束多项式进行标准化处理,生成标准化码字信息和标准化多项式;标准码计算单元(2)生成状态码,并采用递归复用的方法计算对应于状态码的标准卷积码;分支度量计算单元(3)计算标准化码字信息和标准卷积码之间的汉明距离,输出对应于状态码的分支度量值;网格运算单元(4)采用状态码作为节点重构网格图,将分支度量值进行迭代运算,得到状态码的状态度量值,并将对应于状态码的原状态码的MSB作为幸存路径输出到幸存路径存储单元(6);状态度量存储比较单元(5)存储并比较所有状态码的状态度量值,将最小状态度量值对应的状态码作为回溯索引值输出;回溯单元(7)根据回溯索引值和幸存路径寻找译码比特信息,重建译码序列。
附图说明
图1是所述一种低资源消耗的多参数可配置Viterbi译码器的结构示意图;
图2是所述输入配置单元(1)的结构示意图;
图3是所述标准码计算单元(2)的数据流程图;
图4是所述网格运算单元(4)构建的约束长度为9时的网格图;
图5是所述网格运算单元(4)重构约束长度为6的网格图的流程图
图6是所述网格运算单元(4)中可配置蝶形运算单元的结构示意图;
图7是所述回溯单元(7)的结构示意图;
图8是本发明的仿真图。
具体实施方式
下面结合附图,对本发明的具体实施方式作进一步详细描述。以下实例用于说明本发明,但不用来限制本发明的范围。
本发明提出了一种低资源消耗的多参数可配置Viterbi译码器,其结构图如图1所示,包括输入配置单元(1)、标准码计算单元(2)、分支度量计算单元(3)、网格运算单元(4)、状态度量存储比较单元(5)、幸存路径存储单元(6)和回溯单元(7)。该Viterbi译码器最大支持四位待译码数据输入和四组可变约束多项式输入,每组可变约束多项式支持的最大位宽为9,并且每组可变约束多项式的所有比特位支持任意“0”或“1”输入;该Viterbi译码器支持3-9可变约束长度和1/2、1/3、1/4可变码率。
所述输入配置单元(1)用于将可变约束多项式和待译码数据标准化,并产生控制网格运算单元(4)的控制信号。所述标准码计算单元(2)用于生成状态码,并计算对应于状态码的标准卷积码。所述分支度量计算单元(3)包含多个对应于状态码的度量计算单元,用于计算对应于状态码的分支度量值。所述网格运算单元(4)用于重构网格图,包含多个可配置蝶形运算单元,用于计算对应于状态码的状态度量值和幸存路径。所述状态度量存储比较单元(5)用于存储状态度量值,并将所有状态度量值进行逐级比较,计算回溯索引值。所述幸存路径存储单元(6)用于存储网格运算单元(4)输出的幸存路径。所述回溯单元(7)根据回溯索引值和幸存路径寻找译码比特信息,得到最终的译码序列。
本发明采用动态配置的方式实现实时配置Viterbi译码器结构。在译码器启动时,Viterbi译码器的内部所有模块初始化,读取约束长度、码率和约束多项式等参数;其次,内部模块如输入配置单元(1)、标准码计算单元(2)和网格运算单元(4)根据参数进行数据与结构调整,得到相应的译码器结构。由于在通信模式切换时,原有的通信数据无需保留,因此可以在约束长度、码率和约束多项式等参数变化时,使用复位信号对译码器初始化,实现Viterbi译码器工作模式的动态切换。
本发明一种可配置Viterbi译码器的具体配置如下:输入配置单元(1)根据码率对待译码数据的输入端口和可变约束多项式的输入端口进行配置;当码率为1/r(2≤r≤3,r为整数)时,将待译码数据输入端口的MSB到MSB-(3-r)接地,将可变约束多项式的前4-r组输入端口接地;当码率为1/4时,待译码数据和可变约束多项式的所有端口均可接收数据;输入配置单元(1)根据约束长度产生一个位宽为9的控制信号(11),该信号用于控制网格运算单元(4)重构网格图的过程,当约束长度为k(3≤k≤9,k为整数)时,控制信号(11)的MSB到MSB-(k-1)为“1”,MSB-k到LSB为“0”;当可变约束多项式变化时,标准码运算单元(2)中的异或逻辑运算实时更新,重新计算标准卷积码。
所述输入配置单元(1)的结构示意图如图2所示。图2中符号“&”表示按位与操作,“约束多项式1”、“约束多项式2”、“约束多项式3”、“约束多项式4”分别表示可变约束多项式的四组输入,“标准化多项式1”、“标准化多项式2”、“标准化多项式3”、“标准化多项式4”分别表示标准化多项式的四组输出。图2中,有限状态机(8)的触发端口与码率输入端口相连,根据码率生成控制信号(10);有限状态机(9)的触发端口与约束长度输入端口相连,根据约束长度生成控制信号(11)。表3列出了码率与有限状态机(8)输出之间的对应关系,表4列出了约束长度与有限状态机(9)输出之间的对应关系。
表3.码率与有限状态机(8)输出之间的关系
表4.约束长度与有限状态机(9)输出之间的关系
所述输入配置单元(1)将控制信号(10)的MSB、MSB-1、LSB+1、LSB接入多路选择器的控制端。当多路选择器的控制端为“0”时,多路选择器的输出与地相连,当多路选择器的控制端为“1”时,多路选择器的输出与“约束多项式1”、“约束多项式2”、“约束多项式3”或“约束多项式4”相连。所述输入配置单元(1)将控制信号(10)与待译码数据进行按位与操作,得到标准化码字信息。所述输入配置单元(1)将控制信号(11)分别和多路选择器的输出进行按位与操作,得到标准化多项式。所述输入配置单元(1)将控制信号(11)的低八位输出到网格运算单元(4),控制网格运算单元(4)重构网格图的过程。
所述标准码计算单元(2)采用了递归复用的方法,枚举位宽为八的四组偶数状态码作为标准码元,计算标准码元的标准卷积码;依次翻转标准码元的高五位和最低位,生成约束长度为9时的所有状态码;针对第一次翻转,将标准码元的标准卷积码与当前翻转位进行第一次迭代运算,得到对应于当前状态码的标准卷积码;在第一次翻转之后的每一次翻转,仅需将上一次翻转得到的标准卷积码与当前翻转位进行迭代运算,即可得到对应于当前状态码的标准卷积码。图3所示为标准码计算单元(2)的工作流程图,图中“AND”表示按位与,“XOR”表示按位异或,“R-XOR”表示缩减异或,标准码计算单元(2)的工作流程分为七个步骤:
①、枚举四组偶数状态码00000000、00000010、00000100、00000110作为标准码元(12),先将标准码元(12)的低三位分别与四组标准化多项式的低三位进行按位与运算,然后将得到的结果结合标准化多项式的MSB进行缩减异或运算,得到对应于标准码元(12)的标准卷积码(19);
②、将标准码元(12)的LSB+3翻转,得到00000000到00001110的偶数状态码(13),将步骤①得到的标准卷积码(19)与四组标准化多项式的LSB+3进行按位异或运算,再将得到的结果与偶数状态码(13)的LSB+3进行按位与运算,得到对应于偶数状态码(13)的标准卷积码(20);
③、将偶数状态码(13)的LSB+4翻转,得到00000000到00011110的偶数状态码(14),将步骤②得到的标准卷积码(20)与四组标准化多项式的LSB+4进行按位异或运算,再将得到的结果与偶数状态码(14)的LSB+4进行按位与运算,得到对应于偶数状态码(14)的标准卷积码(21);
④、将偶数状态码(14)的LSB+5翻转,得到00000000到00111110的偶数状态码(15),将步骤③得到的标准卷积码(21)与四组标准化多项式的LSB+5进行按位异或运算,再将得到的结果与偶数状态码(15)的LSB+5进行按位与运算,得到对应于偶数状态码(15)的标准卷积码(22);
⑤、将偶数状态码(15)的LSB+6翻转,得到00000000到01111110的偶数状态码(16),将步骤④得到的标准卷积码(22)与四组标准化多项式的LSB+6进行按位异或运算,再将得到的结果与偶数状态码(16)的LSB+6进行按位与运算,得到对应于偶数状态码(16)的标准卷积码(23);
⑥、将偶数状态码(16)的LSB+7翻转,得到00000000到11111110的偶数状态码(17),将步骤⑤得到的标准卷积码(23)与四组标准化多项式的LSB+7进行按位异或运算,再将得到的结果与偶数状态码(17)的LSB+7进行按位与运算,得到对应于偶数状态码(17)的标准卷积码(24);
⑦、将偶数状态码(17)的LSB翻转,得到00000001到11111111的奇数状态码(18),将步骤⑥得到的标准卷积码(24)与四组标准化多项式的LSB进行按位异或运算,再将得到的结果与奇数状态码(18)的LSB进行按位与运算,得到对应于奇数状态码(18)的标准卷积码(25)。
通过步骤①②③④⑤⑥⑦可以得到所有的状态码(00000000到11111111),以及所有状态码对应的标准卷积码。在计算标准卷积码的过程中,步骤②到步骤⑦中的每一步仅需将前一步计算得到的标准卷积码与标准化多项式进行按位异或运算,再与状态码对应的翻转位进行按位与运算,即可得到对应于当前状态码的标准卷积码,该方法减少了状态码低位与标准化多项式低位的重复计算,降低了资源的消耗。
所述分支度量计算单元(3)包含多个对应于状态码的度量计算单元,每一个度量计算单元对应一个状态码,并且仅接收对应于该状态码的标准卷积码。例如,度量计算单元p(0≤p≤255)对应于二进制-十进制转换后值为p的状态码p,仅接收对应于状态码p的标准卷积码;度量计算单元p通过计算标准化码字信息与标准卷积码之间的汉明距离,得到对应于状态码p的分支度量值,并输出到网格运算单元(4)。
所述网格运算单元(4)根据可变约束长度重构网格图。网格运算单元(4)采用标准码计算单元(2)生成的约束长度为9的所有状态码为节点,构建基准网格图。当约束长度变化为k(3≤k≤8)时,将基准网格图中节点的高k-1位作为新的节点,将基准网格图中节点的MSB-(k-1)作为新的转换路径,重构约束长度为k时的网格图。
图4所示为本发明网格运算单元(4)重构的基准网格图,图中包含了四个周期的网格图结构,由虚线框圈出的部分为一个完整的网格图结构,该网格图结构包含一个周期内的节点和节点之间的路径。以一个周期作为参照,当前周期的节点为当前周期的状态码,前一个周期的节点为对应于状态码的原状态码,虚线箭头表示节点之间的转换路径为“0”,实线箭头表示节点之间的转换路径为“1”。节点与节点之间的转换路径的对应关系可以由以下步骤确定:将原状态码左移一位,最低位补“0”或“1”;若状态码由原状态码最低位补“0”得到,则节点之间的路径为“0”;若状态码由原状态码最低位补“1”得到,则节点之间的路径为“1”。
图5以约束长度6为例,描述当约束长度为6时网格运算单元(4)重构网格图的过程,图中符号“&”表示按位与运算。原状态码(26)、转换路径(27)和原状态码(28)是图4中网格图的一部分,原状态码(26)和状态码(28)分别与控制信号(11)的低八位进行按位与运算,得到原状态码(29)和状态码(31)。原状态码(26)的MSB-5作为新的转换路径(30)替换原有的转换路径(27)。将原状态码(29)和状态码(31)的低三位舍去,再将重复项合并,即可得到约束长度为6时的网格图(32)。
所述网格运算单元(4)包含多个可配置蝶形运算单元,可配置蝶形运算单元对分支度量值进行迭代运算,并计算对应于状态码的状态度量值和幸存路径。图6所示为可配置蝶形运算单元的结构示意图,图中实线框内的“u”表示位宽为7的一组二进制序列,该二进制序列与“0”或“1”进行排列组合构成约束长度为9时的原状态码(26)和状态码(28),图中四个虚线框表示经过重构的网格图的原状态码(33)(34)和状态码(35)(36),BM00、BM01、BM10、BM11表示对应于原状态码(33)(34)和状态码(35)(36)的分支度量值, 表示原状态码(33)(34)和状态码(35)(36)的状态度量值。
所述可配置蝶形运算单元将BM00、BM01、BM10、BM11分别与进行第i次迭代运算,将对应于同一个状态码(35)(36)的迭代运算结果进行比较,取较小值作为状态码(35)(36)的状态度量值和同时将该较小值对应的原状态码(33)(34)的MSB作为幸存路径,输出到幸存路径存储单元(6)。的计算过程简化为公式(1),的计算过程简化为公式(2),公式(1)和公式(2)中符号“min()”表示取最小值。
所述状态度量存储比较单元(5)以状态码为标志,寄存网格图运算单元(4)中所有可配置蝶形运算单元计算得到的状态度量值。状态度量存储比较单元(5)包含一个八级流水线比较器,用来逐级比较所有状态度量值,并将最小状态度量值对应的状态码作为回溯索引值输出到回溯单元(7)。
所述幸存路径存储单元(6)用于存储网格运算单元(4)输出的幸存路径,图7为幸存路径存储单元(6)的工作流程图。本发明采用回溯算法进行译码,为了保证数据的连续传输,采用了两块RAM(Random-Access Memory,随机存取存储器)交替进行读写操作,每块RAM的大小等于一个回溯深度。回溯深度计算公式如(3)所示,式中T表示回溯深度,K表示约束长度,R表示码率。
为了满足3-9可变约束长度和1/2、1/3、1/4可变码率,本发明采用最大约束长度9和最大码率1/2计算回溯深度,根据公式(3)可以得出64为最适应本发明的回溯深度,因幸存路径存储单元(6)采用了两块存储深度均为64的RAM。
所述回溯单元(7)根据回溯索引值和幸存路径寻找译码信息比特,重建译码序列。图7所示为回溯单元(7)的结构示意图,包含条件判决器(37)、多路选择器(38)、移位寄存器(39)、索引单元(40)和LIFO(Last In First Out,后进先出)(41)。记幸存路径存储单元(6)的每一个读写周期为一个判决周期,每64个判决周期为一个回溯周期。
所述条件判决单元(37)在每一个判决周期中对幸存路径存储单元(6)中两块RAM的写指针进行判决,通过判断两块RAM中是否有RAM的写指针达到阈值63,输出控制多路选择器(38)的控制信号。所述多路选择器(38)根据该控制信号选择a输入端或b输入端的数据进行输出。所述索引单元(40)根据多路选择器(38)的输出值读取幸存路径的对应比特位,将该比特位作为译码信息比特输出到LIFO(41),并将该比特位作为移位寄存器(39)的输入值。所述移位寄存器(39)将多路选择器(38)的输出值左移一位,作为新的索引值反馈到多路选择器(38)的b输入端。所述LIFO(41)的存储深度等于一个回溯深度,在每一个回溯周期结束后,LIFO(41)被写满,LIFO(41)逆序读出译码信息比特,得到最终的译码序列。
所述回溯单元(7)的具体工作步骤为:当条件判决单元(37)检测到两块RAM中有一块RAM的写指针为63时,条件判决单元(37)输出一个周期的高电平脉冲,该脉冲控制多路选择器(38)将a输入端的回溯索引值输出,索引单元(40)根据回溯索引值读取幸存路径的对应比特位,将该比特位输出到LIFO(41);当条件判决单元(37)检测到两块RAM的写指针均小于63时,条件判决单元(37)输出低电平,该低电平控制多路选择器(38)将b输入端的索引值输出,索引单元(40)根据该索引值读取幸存路径的对应比特位,将该比特位输出到LIFO;当LIFO(41)被写满时,开始逆序读出译码信息比特,得到译码序列。
仿真验证和结果展示
本发明所述的一种低资源消耗的多参数可配置Viterbi译码器,采用ISE结合Modelsim工具进行仿真验证。为了方便展示结果,结合卷积码编码器进行联合仿真,同时在Modelsim的设置中将编码输入和译码输出量化为模拟波形,以便进行比对,仿真结果如图8所示。
图8中“reset”为复位信号,“constraintlength”为约束长度,“coderate”为码率,“poly0”、“poly1”、“poly2”、“poly3”为可变约束多项式的四组输入,“ad_p”为卷积码编码器经过采样之后的编码输入,“da”为本发明的Viterbi译码器的译码输出。当“constraintlength”、“coderate”、“poly0”、“poly1”、“poly2”、“poly3”等参数变化时,“reset”信号产生一个低电平脉冲,该脉冲对卷积码编码器和Viterbi译码器进行初始化,当“reset”信号恢复高电平时,卷积码编码器开始重新接收数据,进行编码工作,并将编码后的数据输出到Viterbi译码器;Viterbi译码器在短暂的配置后,开始进行译码工作,输出译码序列;将“ad_p”和“da”进行比对,可以得出在下一个“reset”低电平脉冲到来之前,Viterbi译码器的译码序列与卷积码编码器的输入一致。
本发明所述的一种低资源消耗的多参数可配置Viterbi译码器采用DC(DesignCompiler)进行综合,由综合报告得到本发明的Viterbi译码器的总面积,然后将总面积除以所调用元器件库中最小二输入与门单元的面积,得到本发明使用的最小逻辑门的数量为162k。
本发明所述的一种低资源消耗的多参数可配置Viterbi译码器采用XilinxVirtex7 FPGA平台进行验证,最大支持200MHz的工作频率,吞吐率为200Mbps。
本发明所述的一种低资源消耗的多参数可配置Viterbi译码器支持灵活的参数配置,包括3-9的可变约束长度、任意输入的可变多项式和1/2、1/3、1/4的可变码率,同时采用了全并行的结构,最高支持200Mbps的吞吐率。得益于迭代复用的新方法,本发明在实现多参数可配置的同时保持了较高的吞吐率,并且将逻辑门的数量控制在了162k,资源消耗相对较低。与表2列出的相关工作相比,本发明具有一定的优势。
以上所述,仅为本发明的具体实施方式,而并非本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (3)
1.一种低资源消耗的多参数可配置Viterbi译码器,包括输入配置单元(1)、标准码计算单元(2)、分支度量计算单元(3)、网格运算单元(4)、状态度量存储比较单元(5)、幸存路径存储单元(6)和回溯单元(7);
所述输入配置单元(1)用于将可变约束多项式和待译码数据标准化,并产生控制网格运算单元(4)的控制信号;
所述标准码计算单元(2)用于生成状态码,并计算对应于状态码的标准卷积码;
所述分支度量计算单元(3)包含多个对应于状态码的度量计算单元,用于计算对应于状态码的分支度量值;
所述网格运算单元(4)用于重构网格图,包含多个可配置蝶形运算单元,用于计算对应于状态码的状态度量值和幸存路径;
所述状态度量存储比较单元(5)用于存储状态度量值,并将所有状态度量值进行逐级比较,计算回溯索引值;
所述幸存路径存储单元(6)用于存储网格运算单元(4)输出的幸存路径;
所述回溯单元(7)根据回溯索引值和幸存路径寻找译码比特信息,得到最终的译码序列;
针对所述标准码计算单元(2)提出了一种递归复用的方法,采用位宽为八的四组状态码作为标准码元,计算标准码元的标准卷积码;依次翻转标准码元的高五位和最低位,生成约束长度为9的所有状态码;针对第一次翻转,将标准码元的标准卷积码与当前翻转位进行第一次迭代运算,得到对应于当前状态码的标准卷积码;在第一次翻转之后的每一次翻转,仅需将上一次翻转得到的标准卷积码与当前翻转位进行迭代运算,即可得到对应于当前状态码的标准卷积码。
2.根据权利要求1所述的低资源消耗的多参数可配置Viterbi译码器,其特征在于:所述输入配置单元(1)支持可变码率和可变约束长度;
当码率为1/r时,r=2或3,待译码数据输入的低r位和后r组可变约束多项式有效,其余位和其余组置“0”;
当码率为1/4时,待译码数据输入的所有位和所有可变约束多项式输入均有效;当约束长度为k时,3≤k≤9,k为整数,输入配置单元(1)根据约束长度产生一个位宽为9的控制信号,该控制信号的MSB(Most Significant Bit,最高有效位)到MSB-(k-1)位为“1”,MSB-k到LSB(Last Significant Bit,最低有效位)为“0”,用于控制网格运算单元(4)重构网格图的过程。
3.根据权利要求1所述的低资源消耗的多参数可配置Viterbi译码器,其译码步骤为:输入配置单元(1)对待译码数据和可变约束多项式进行标准化处理,生成标准化码字信息和标准化多项式;标准码计算单元(2)生成状态码,并根据所述的一种递归复用的方法计算对应于状态码的标准卷积码;分支度量计算单元(3)计算标准化码字信息和标准卷积码之间的汉明距离,输出对应于状态码的分支度量值;网格运算单元(4)采用状态码作为节点重构网格图,将分支度量值进行迭代运算,得到状态码的状态度量值,并将对应于状态码的原状态码的MSB作为幸存路径输出到幸存路径存储单元(6);状态度量存储比较单元(5)存储并比较所有状态码的状态度量值,将最小状态度量值对应的状态码作为回溯索引值输出;回溯单元(7)根据回溯索引值和幸存路径寻找译码比特信息,重建译码序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610832176.2A CN106209117B (zh) | 2016-09-19 | 2016-09-19 | 一种低资源消耗的多参数可配置Viterbi译码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610832176.2A CN106209117B (zh) | 2016-09-19 | 2016-09-19 | 一种低资源消耗的多参数可配置Viterbi译码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106209117A CN106209117A (zh) | 2016-12-07 |
CN106209117B true CN106209117B (zh) | 2023-05-02 |
Family
ID=58068144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610832176.2A Active CN106209117B (zh) | 2016-09-19 | 2016-09-19 | 一种低资源消耗的多参数可配置Viterbi译码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106209117B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107342775B (zh) * | 2017-07-07 | 2020-04-07 | 西安电子科技大学 | 删余卷积码的维特比译码方法 |
CN107862161B (zh) * | 2017-12-08 | 2021-03-30 | 江南大学 | 一种基于层次化处理与分簇约束的多阈值单元替换方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8009773B1 (en) * | 2008-04-04 | 2011-08-30 | Hellosoft India Pvt. Ltd. | Low complexity implementation of a Viterbi decoder with near optimal performance |
CN102739261A (zh) * | 2011-04-08 | 2012-10-17 | 中国科学院微电子研究所 | 多相加比选前向回溯Viterbi译码器 |
CN105162475A (zh) * | 2015-08-19 | 2015-12-16 | 中国人民解放军海军工程大学 | 一种基于fpga的参数化多标准高吞吐率译码器 |
CN206099947U (zh) * | 2016-09-19 | 2017-04-12 | 江南大学 | 一种低资源消耗的多参数可配置Viterbi译码器 |
-
2016
- 2016-09-19 CN CN201610832176.2A patent/CN106209117B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8009773B1 (en) * | 2008-04-04 | 2011-08-30 | Hellosoft India Pvt. Ltd. | Low complexity implementation of a Viterbi decoder with near optimal performance |
CN102739261A (zh) * | 2011-04-08 | 2012-10-17 | 中国科学院微电子研究所 | 多相加比选前向回溯Viterbi译码器 |
CN105162475A (zh) * | 2015-08-19 | 2015-12-16 | 中国人民解放军海军工程大学 | 一种基于fpga的参数化多标准高吞吐率译码器 |
CN206099947U (zh) * | 2016-09-19 | 2017-04-12 | 江南大学 | 一种低资源消耗的多参数可配置Viterbi译码器 |
Also Published As
Publication number | Publication date |
---|---|
CN106209117A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20070058501A (ko) | 재구성가능한 트렐리스형 디코딩을 구현하기 위한 방법 및장치 | |
US7131055B2 (en) | Fast bit-parallel Viterbi decoder add-compare-select circuit | |
US20070113161A1 (en) | Cascaded radix architecture for high-speed viterbi decoder | |
US8566683B2 (en) | Power-reduced preliminary decoded bits in viterbi decoders | |
CN106209117B (zh) | 一种低资源消耗的多参数可配置Viterbi译码器 | |
CN113258940B (zh) | turbo译码方法、装置、译码设备及存储介质 | |
US8839082B2 (en) | Methods for viterbi decoder implementation | |
US7793200B1 (en) | Method of and circuit for accessing a memory of a trellis decoder | |
CN206099947U (zh) | 一种低资源消耗的多参数可配置Viterbi译码器 | |
JP3823731B2 (ja) | 誤り訂正復号器 | |
CN1129257C (zh) | 串行回溯的最大似然解码方法及其使用该方法的解码器 | |
JP2010130271A (ja) | 復号器および復号方法 | |
Mandwale et al. | Implementation of High Speed Viterbi Decoder using FPGA | |
Arun et al. | Design and VLSI implementation of a Low Probability of Error Viterbi decoder | |
El-Dib et al. | Memoryless viterbi decoder | |
US7698624B2 (en) | Scheduling pipelined state update for high-speed trellis processing | |
Nandula et al. | High speed area efficient configurable Viterbi decoder for WiFi and WiMAX systems | |
Mousa et al. | Implementation of soft decision viterbi decoder based on a digital signal processor | |
JP4295871B2 (ja) | 誤り訂正復号器 | |
Véstias | High-Speed Viterbi Decoder | |
US20100185925A1 (en) | Differential Locally Updating Viterbi Decoder | |
KR100531840B1 (ko) | 비터비 디코더의 가지 메트릭 계산 방법 및 그 회로 | |
Véstias | Viterbi Decoder in Hardware | |
Kadam et al. | FPGA Implementation of Soft Output Viterbi Algorithm Using Memoryless Hybrid Register Exchange Method | |
KR20110025433A (ko) | 슬라이딩 방법을 이용한 uwb용 고속 비터비 디코더 및 이를 이용한 디코딩 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |