CN107196666B - 一种通用Turbo编译码器快速验证方法 - Google Patents

一种通用Turbo编译码器快速验证方法 Download PDF

Info

Publication number
CN107196666B
CN107196666B CN201710237697.8A CN201710237697A CN107196666B CN 107196666 B CN107196666 B CN 107196666B CN 201710237697 A CN201710237697 A CN 201710237697A CN 107196666 B CN107196666 B CN 107196666B
Authority
CN
China
Prior art keywords
encoder
code
representing
calculating
configuring
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
Application number
CN201710237697.8A
Other languages
English (en)
Other versions
CN107196666A (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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN201710237697.8A priority Critical patent/CN107196666B/zh
Publication of CN107196666A publication Critical patent/CN107196666A/zh
Application granted granted Critical
Publication of CN107196666B publication Critical patent/CN107196666B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2792Interleaver wherein interleaving is performed jointly with another technique such as puncturing, multiplexing or routing
    • 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/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing

Landscapes

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

Abstract

本发明属于Turbo码编译码技术领域,公开了一种通用Turbo编译码器快速验证方法,包括:配置交织器;配置分量编码器;配置打孔器;配置码率匹配单元;计算状态转移矩阵;计算分支度量值;配置后向度量计算单元;配置前向度量计算单元;配置后验信息计算单元;配置解交织器。本发明使用软硬件结合的方式,可以根据实际工程中编码码长、打孔方式、编码码率和码字生成多项式的要求,利用软件程序生成的硬件配置文件对编译码器进行配置;降低了兼容式编译码器的硬件资源消耗;大大提高了Turbo编译码器的通用性。在相同的比特信噪比下,本发明的所有仿真曲线具有更小的误比特率。

Description

一种通用Turbo编译码器快速验证方法
技术领域
本发明属于Turbo码编译码技术领域,尤其涉及一种通用Turbo编译码器快速验证方法。
背景技术
1948年香农在信道编码定理中指出,只要随机编码的码长足够长就可以进行无限逼近信道容量的通信,而且可以使错误概率任意小。1993年C.Berrou等人提出了Turbo码,它利用随机交织器和卷积码实现了随机编码,使得信道编码理论在逼近香农极限的进程中有了里程碑式的突破。由于Turbo译码器在实现时硬件复杂度较高,译码延迟也很大,导致在Turbo码提出后的一段时间内其应用范围较为有限。但是经过二十余年的发展,Turbo编译码方案有了长足的进步,走上了主流舞台,各种通信规范中都采用Turbo码作为信道编码方案。Chi-Hsuan Hsieh等人在文章“A 516Mb/s 0.2nJ/bit/iter Variable-Block-SizeTurbo Decoder for 3GPP LTE-A System”(International SoC Design Conference,2012)中公开了一种Turbo译码系统,该系统采用滑动窗算法,具有较高的吞吐率,并且支持188种编码码长。该系统的不足之处是,使用的码长固定,而且不支持自定义码率和自定义码字生成多项式Turbo码编译码,适用范围较为有限。“兼容LTE和WiMAX的4并行度、基-16高性能Turbo译码器”公开了一种Turbo译码器,该译码器采用4并行度、基-16结构,降低了递归运算单元的复杂度,提出了简化交织器,优化了存储器结构,避免了访问冲突,降低了运算复杂度,可以针对LTE标准和WIMAX标准规定的Turbo码进行译码。该译码器存在不足之处是,使用了硬件资源来控制不同的编码标准,增加了硬件复杂度,且可拓展性较差。随着Turbo码的广泛适用,工程中常常会基于标准对Turbo码的参数进行自定义修改,修改参数包括编码码长、编码码率、编码打孔方式和编码生成多项式,在一些Turbo码性能验证的试验中,为了获得最佳的译码性能,也常常需要对某些参数反复修改。由于对Turbo码的自定义修改方式很多,对每一种方式都使用逻辑进行控制,将会占用大量的硬件资源,所以现有的技术方案都只是支持少数几种固定的Turbo编译码方式,不能及时满足工程变化的需求,寻找使用较少硬件资源实现兼容标准的和自定义的通用Turbo码编译码方法是目前的设计需求之一。
综上所述,现有技术存在的问题是:现有的Turbo码译码器存在使用硬件资源来控制不同的编码标准,增加了硬件复杂度,且可拓展性较差。
发明内容
针对现有技术存在的问题,本发明提供了一种通用Turbo编译码器快速验证方法。
本发明是这样实现的,一种通用Turbo编译码器快速验证方法,所述通用Turbo编译码器快速验证方法包括以下步骤:
步骤一,配置交织器,按照交织地址计算方法,计算交织地址;
步骤二,配置分量编码器,按照前馈向量和反馈向量的获取方法,获得前馈向量g1和反馈向量g0
步骤三,配置打孔器,将打孔图案存成32行两列的打孔图案矩阵,32表示打孔周期,矩阵第一列表示编码器第一校验位的打孔图案,矩阵第二列表示编码器第二校验位的打孔图案;利用Matlab程序,调用fprintf函数,将打孔图案矩阵存储成打孔图案的*.coe文件;利用打孔图案的*.coe文件初始化打孔器的只读存储器ROM;
步骤四,配置码率匹配单元,利用打孔图案的*.coe文件初始化码率匹配单元的只读存储器ROM;
步骤五,计算状态转移矩阵,根据前馈向量和反馈向量,利用Matlab程序,生成16行5列的Turbo编码器状态转移矩阵,其中,第一列表示分量编码器当前状态,第二列表示分量编码器当前输入比特,第三列表示分量编码器输出的信息位比特,第四列表示分量编码器输出的校验位,第五列表示分量编码器下一状态;
步骤六,计算分支度量值,按照分支度量计算方法,计算分支度量值;
步骤七,配置后向度量计算单元:利用Matlab程序,调用fprintf函数,按照后向度量中间值表达式,生成计算后向度量中间值的硬件代码;使用生成的硬件代码,作为后向度量计算单元计算后向度量中间值的代码;
步骤八,配置前向度量计算单元,利用Matlab程序,调用fprintf函数,按照前向度量中间值表达式,生成计算前向度量中间值的硬件代码,使用生成的硬件代码,作为前向度量计算单元计算前向度量中间值的代码;
步骤九,配置后验信息计算单元,利用Matlab程序,调用fprintf函数,按照后验信息中间值表达式,生成计算后验信息中间值的硬件代码,使用生成的硬件代码,作为后验信息计算单元计算后验信息中间值的代码;
步骤十,配置解交织器,按照解交织地址计算方法,计算解交织地址;利用Matlab程序,调用fprintf函数,将解交织地址按列存储为解交织地址的*.coe文件;利用解交织地址的*.coe文件初始化解交织器的只读存储器ROM。
进一步,所述步骤一的交织地址计算方法如下:
利用下式,计算交织地址:
Π(x)=(f1·x+f2·x2)modL;
其中,Π(x)表示交织后的地址;x表示交织前地址;f1和f2分别表示交织参数1和交织参数2,f1和f2的值由二次置换多项式QPP交织器的交织规则规定;L是交织深度。
进一步,所述步骤二的前馈向量和反馈向量的获取方法如下:
第一步,在Turbo码标准中,前馈多项式表达式如下:
a1+b1·D1+c1·D2+d1·D3
其中,a1表示编码器反馈支路系数;b1、c1、d1分别表示编码器前馈支路中3个寄存器系数;D1、D2、D3分别表示编码器的3个寄存器;
利用编码器反馈支路系数a1和编码器前馈支路中3个寄存器系数b1、c1、d1,组成前馈向量:
g1=[a1,b1,c1,d1];
其中,g1表示前馈向量;
第二步,在Turbo码标准中,反馈多项式表达式如下:
a0+b0·D1+c0·D2+d0·D3
其中,a0表示编码器输入比特系数;b0、c0、d0分别表示编码器反馈支路中3个寄存器系数;
利用编码器输入比特系数a0和编码器反馈支路中3个寄存器系数b0、c0、d0,组成反馈向量:
g0=[a0,b0,c0,d0];
其中,g0表示反馈向量。
利用下式,计算编码器寄存器状态和编码器输出比特:
码字编码:
Figure BDA0001268488460000041
Figure BDA0001268488460000042
Figure BDA0001268488460000043
Figure BDA0001268488460000044
Figure BDA0001268488460000045
Figure BDA0001268488460000046
归零编码:
Figure BDA0001268488460000047
Figure BDA0001268488460000048
Figure BDA0001268488460000051
Figure BDA0001268488460000052
Figure BDA0001268488460000053
Figure BDA0001268488460000054
其中,g表示编码器输入及状态向量;uk表示k时刻编码器的输入比特;
Figure BDA0001268488460000055
Figure BDA0001268488460000056
分别表示k时刻编码器的3个寄存器;k表示编码时刻,在码字编码时依次取值1,2,...,L,在归零编码时,依次取值L+1,L+2,L+3;L表示Turbo码编码码长;g0表示反馈向量;g1表示前馈向量;(·)T表示矩阵转置操作。
进一步,所述步骤五的状态转移矩阵的每两行为一个子矩阵,如下:
Figure BDA0001268488460000057
其中,s′表示编码器当前状态,依次取值为0,1,…,7;uk表示分量编码器当前输入比特;
Figure BDA0001268488460000058
表示分量编码器状态为s′时,分量编码器输入uk后输出的信息位比特;
Figure BDA0001268488460000059
表示分量编码器状态为s′时,分量编码器输入uk后输出的校验位比特;D01、D02、D03分别表示分量编码器状态为s′时,分量编码器输入uk前,分量编码器的3个寄存器;s表示分量编码器状态为s′时,分量编码器输入uk后分量编码器的新状态,s∈{0,1,...,7};D11、D12、D13分别表示分量编码器状态为s′时,分量编码器输入uk后,分量编码器的3个寄存器。
进一步,所述步骤六的分支计算方法如下:
Figure BDA00012684884600000510
Figure BDA00012684884600000511
Figure BDA00012684884600000512
Figure BDA00012684884600000513
其中,
Figure BDA00012684884600000514
分别表示k时刻的4个分支度量值;
Figure BDA00012684884600000515
表示k时刻校验位软信息;La(uk)表示k时刻先验信息;
Figure BDA0001268488460000061
表示k时刻系统位软信息。
进一步,所述步骤七利用下式,计算后向度量中间值:
Figure BDA0001268488460000062
其中,
Figure BDA0001268488460000063
表示k时刻分支度量中间值;
Figure BDA0001268488460000064
表示k+1时刻后向度量;
Figure BDA0001268488460000065
表示k时刻分支度量值;i表示分支度量值的编号,i∈{0,1,2,3}。
进一步,所述步骤八利用下式,计算前向度量中间值:
Figure BDA0001268488460000066
其中,
Figure BDA0001268488460000067
表示k时刻前向度量中间值;
Figure BDA0001268488460000068
表示k-1时刻前向度量。
进一步,所述步骤九利用下式,计算后验信息中间值:
Figure BDA0001268488460000069
其中,
Figure BDA00012684884600000610
表示后验信息中间值;
所述步骤十的解交织地址计算方法如下:
利用下式,计算交织地址:
z=Π-1(x);
其中,z表示解交织后的地址;x表示交织前地址;Π-1(·)表示软件中求解交织地址操作。
本发明的另一目的在于提供一种所述通用Turbo编译码器快速验证方法的通用Turbo编译码器快速验证系统,所述通用Turbo编译码器快速验证系统包括:编码器、Matlab程序单元、译码器;
Matlab程序单元用于配置编码器和译码器;
编码器进一步包括:交织器、分量编码器、打孔器;
交织器连接分量编码器,分量编码器连接打孔器;
译码器进一步包括:码率匹配单元、软输入软输出译码器;
码率匹配单元与软输入软输出译码器连接;
软输入软输出译码器进一步包括:交织器、解交织器、前向度量计算单元、后向度量计算单元、后验信息计算单元。
本发明的另一目的在于提供一种安装有所述通用Turbo编译码器快速验证方法的Turbo编译码器。
本发明的优点及积极效果为:使用了软硬件结合的方式,可以根据实际工程中编码码长、打孔方式、编码码率和码字生成多项式的要求,利用软件程序生成的硬件配置文件对编译码器进行配置。本发明方法避免了使用硬件资源来控制不同的编译码方式,降低了硬件复杂度,减少了硬件资源的消耗。由于本发明方法可以根据前馈多项式和反馈多项式,使用Matlab自动生成硬件程序,可以根据设计要求及时配置编译码器,从而克服了一般编译码器不支持自定义码率和自定义码字生成多项式Turbo码编译码的缺点,使得本发明方法具有很强的通用性。从图3的仿真结果可以看出,本发明方法的所有译码仿真曲线,与未编码的方法相比,均发生了左移;在相同的比特信噪比下,本发明的所有仿真曲线具有更小的误比特率,说明了本发明方法具有优秀的译码性能。
附图说明
图1是本发明实施例提供的通用Turbo编译码器快速验证方法流程图。
图2是本发明实施例提供的通用Turbo编译码器快速验证系统结构示意图;
图中:1、编码器;2、Matlab程序单元;3、译码器。
图3是本发明实施例提供的误比特率仿真曲线图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面结合附图对本发明的应用原理作详细的描述。
如图1所示,本发明实施例提供的通用Turbo编译码器快速验证方法包括以下步骤:
S101:配置交织器;
S102:配置分量编码器;
S103:配置打孔器;
S104:配置码率匹配单元;
S105:计算状态转移矩阵;
S106:计算分支度量值;
S107:配置后向度量计算单元;
S108:配置前向度量计算单元;
S109:配置后验信息计算单元;
S110:配置解交织器。
如图2所示,本发明实施例提供的通用Turbo编译码器快速验证系统包括:编码器1、Matlab程序单元2、译码器3。
Matlab程序单元2用于配置编码器1和译码器3。
编码器1进一步包括:交织器、分量编码器、打孔器。
交织器连接分量编码器,分量编码器连接打孔器。
译码器3进一步包括:码率匹配单元、软输入软输出译码器。
码率匹配单元与软输入软输出译码器连接。
软输入软输出译码器进一步包括:交织器、解交织器、前向度量计算单元、后向度量计算单元、后验信息计算单元。
下面结合具体实施例对本发明的应用原理作进一步的描述。
本发明实施例中以前馈多项式为1+D2+D3,反馈多项式为1+D+D3,交织深度为584,第一校验位打孔图案为“10101010101010111010101010101010”,第二校验位打孔图案为“01010101010101011101010101010101”的Turbo码为例,打孔图案中“1”表示保留该位置处比特,“0”表示删除该位置处比特。
步骤1,配置交织器:
按照交织地址计算方法,计算交织地址。
所述的交织地址计算方法如下:
利用下式,计算交织地址:
Π(x)=(3·x+146·x2)mod584;
其中,Π(x)表示交织后的地址;x表示交织前地址;3和146分别表示交织参数1和交织参数2,3和146的值由二次置换多项式QPP(Quadratic Permutation Polynomial)交织器的交织规则规定;584是交织深度。
利用Matlab程序,调用fprintf函数,将交织地址按列存储为交织地址的*.coe文件。
利用交织地址的*.coe文件初始化交织器的只读存储器ROM(Read Only Memory)。
步骤2,配置分量编码器:
按照前馈向量和反馈向量的获取方法,获得前馈向量g1和反馈向量g0
前馈向量和反馈向量的获取方法如下:
第一步,在Turbo码标准中,前馈多项式表达式如下:
a1+b1·D1+c1·D2+d1·D3
其中,a1表示编码器反馈支路系数;b1、c1、d1分别表示编码器前馈支路中3个寄存器系数;D1、D2、D3分别表示编码器的3个寄存器;
利用编码器反馈支路系数a1和编码器前馈支路中3个寄存器系数b1、c1、d1,组成前馈向量:
g1=[1,0,1,1];
其中,g1表示前馈向量;
第二步,在Turbo码标准中,反馈多项式表达式如下:
a0+b0·D1+c0·D2+d0·D3
其中,a0表示编码器输入比特系数;b0、c0、d0分别表示编码器反馈支路中3个寄存器系数;
利用编码器输入比特系数a0和编码器反馈支路中3个寄存器系数b0、c0、d0,组成反馈向量:
g0=[1,1,0,1];
其中,g0表示反馈向量。
利用下式,计算编码器寄存器状态和编码器输出比特:
码字编码:
Figure BDA0001268488460000101
Figure BDA0001268488460000102
Figure BDA0001268488460000103
Figure BDA0001268488460000104
Figure BDA0001268488460000105
Figure BDA0001268488460000106
归零编码:
Figure BDA0001268488460000107
Figure BDA0001268488460000108
Figure BDA0001268488460000109
Figure BDA00012684884600001010
Figure BDA00012684884600001011
Figure BDA00012684884600001012
其中,g表示编码器输入及状态向量;uk表示k时刻编码器的输入比特;
Figure BDA00012684884600001013
Figure BDA00012684884600001014
分别表示k时刻编码器的3个寄存器;k表示编码时刻,在码字编码时依次取值1,2,...,L,在归零编码时,依次取值L+1,L+2,L+3;L表示Turbo码编码码长;g0表示反馈向量;g1表示前馈向量;(·)T表示矩阵转置操作。
利用Matlab程序,调用fprintf函数,生成计算编码器状态和编码器输出比特的硬件代码,如下所示:
Figure BDA0001268488460000111
使用生成的硬件代码,作为分量编码器中计算编码器状态和编码器输出比特的代码。
步骤3,配置打孔器:
将打孔图案存成32行两列的打孔图案矩阵,32表示打孔周期,矩阵第一列表示编码器第一校验位的打孔图案,矩阵第二列表示编码器第二校验位的打孔图案。
利用Matlab程序,调用fprintf函数,将打孔图案矩阵存储成打孔图案的*.coe文件。
利用打孔图案的*.coe文件初始化打孔器的只读存储器ROM。
步骤4,配置码率匹配单元:
利用打孔图案的*.coe文件初始化码率匹配单元的只读存储器ROM。
步骤5,计算状态转移矩阵:
根据前馈向量和反馈向量,利用Matlab程序,生成16行5列的Turbo编码器状态转移矩阵,其中,第一列表示分量编码器当前状态,第二列表示分量编码器当前输入比特,第三列表示分量编码器输出的信息位比特,第四列表示分量编码器输出的校验位,第五列表示分量编码器下一状态,状态转移矩阵如下:
Figure BDA0001268488460000121
编码器状态转移矩阵的每两行为一个子矩阵,如下所示:
Figure BDA0001268488460000122
其中,s′表示编码器当前状态,依次取值为0,1,…,7;uk表示分量编码器当前输入比特;
Figure BDA0001268488460000123
表示分量编码器状态为s′时,分量编码器输入uk后输出的信息位比特;
Figure BDA0001268488460000124
表示分量编码器状态为s′时,分量编码器输入uk后输出的校验位比特;D01、D02、D03分别表示分量编码器状态为s′时,分量编码器输入uk前,分量编码器的3个寄存器;s表示分量编码器状态为s′时,分量编码器输入uk后分量编码器的新状态,s∈{0,1,...,7};D11、D12、D13分别表示分量编码器状态为s′时,分量编码器输入uk后,分量编码器的3个寄存器。
步骤6,计算分支度量值:
按照分支度量计算方法,计算分支度量值。
所述的分支计算方法如下:
Figure BDA0001268488460000125
Figure BDA0001268488460000131
Figure BDA0001268488460000132
Figure BDA0001268488460000133
其中,
Figure BDA0001268488460000134
分别表示k时刻的4个分支度量值;
Figure BDA0001268488460000135
表示k时刻校验位软信息;La(uk)表示k时刻先验信息;
Figure BDA0001268488460000136
表示k时刻系统位软信息。
步骤7,配置后向度量计算单元:
利用下式,计算后向度量中间值:
Figure BDA0001268488460000137
Figure BDA0001268488460000138
Figure BDA0001268488460000139
Figure BDA00012684884600001310
Figure BDA00012684884600001311
Figure BDA00012684884600001312
Figure BDA00012684884600001313
Figure BDA00012684884600001314
其中,
Figure BDA00012684884600001315
表示k时刻分支度量中间值;
Figure BDA00012684884600001316
表示k+1时刻后向度量;
Figure BDA00012684884600001317
表示k时刻分支度量值;i表示分支度量值的编号,i∈{0,1,2,3}。
利用Matlab程序,调用fprintf函数,按照后向度量中间值表达式,生成计算后向度量中间值的硬件代码,代码如下:
beta0_0<=beta0+gama0;
beta0_4<=beta4+gama3;
beta1_0<=beta0+gama3;
beta1_4<=beta4+gama0;
beta2_1<=beta1+gama1;
beta2_5<=beta5+gama2;
beta3_1<=beta1+gama2;
beta3_5<=beta5+gama1;
beta4_2<=beta2+gama2;
beta4_6<=beta6+gama1;
beta5_2<=beta2+gama1;
beta5_6<=beta6+gama2;
beta6_3<=beta3+gama3;
beta6_7<=beta7+gama0;
beta7_3<=beta3+gama0;
beta7_7<=beta7+gama3;
其中,betas′_s表示硬件语言中后向度量中间值,s′表示编码器当前状态,s表示编码器下一状态,s′,s∈{0,1,...,7};betas′表示硬件语言中后向度量;gamai表示硬件语言中的分支度量值,i表示分支度量值的编号,i∈{0,1,2,3}。
使用生成的硬件代码,作为后向度量计算单元计算后向度量中间值的代码。
步骤8,配置前向度量计算单元:
利用下式,计算前向度量中间值:
Figure BDA0001268488460000141
Figure BDA0001268488460000142
Figure BDA0001268488460000143
Figure BDA0001268488460000144
Figure BDA0001268488460000145
Figure BDA0001268488460000146
Figure BDA0001268488460000147
Figure BDA0001268488460000148
其中,
Figure BDA0001268488460000151
表示k时刻前向度量中间值;
Figure BDA0001268488460000152
表示k-1时刻前向度量。
利用Matlab程序,调用fprintf函数,按照前向度量中间值表达式,生成计算前向度量中间值的硬件代码,代码如下:
alpha0_0<=alpha0+gama0;
alpha1_0<=alpha1+gama3;
alpha2_1<=alpha2+gama1;
alpha3_1<=alpha3+gama2;
alpha4_2<=alpha4+gama2;
alpha5_2<=alpha5+gama1;
alpha6_3<=alpha6+gama3;
alpha7_3<=alpha7+gama0;
alpha0_4<=alpha0+gama3;
alpha1_4<=alpha1+gama0;
alpha2_5<=alpha2+gama2;
alpha3_5<=alpha3+gama1;
alpha4_6<=alpha4+gama1;
alpha5_6<=alpha5+gama2;
alpha6_7<=alpha6+gama0;
alpha7_7<=alpha7+gama3;
其中,其中,alphas′_s表示硬件语言中前向度量中间值,s′表示编码器当前状态,s表示编码器下一状态,s′,s∈{0,1,...,7};alphas′表示硬件语言中前向度量。
使用生成的硬件代码,作为前向度量计算单元计算前向度量中间值的代码。
步骤9,配置后验信息计算单元:
利用下式,计算后验信息中间值:
Figure BDA0001268488460000153
Figure BDA0001268488460000154
Figure BDA0001268488460000155
Figure BDA0001268488460000156
Figure BDA0001268488460000157
Figure BDA0001268488460000158
Figure BDA0001268488460000161
Figure BDA0001268488460000162
其中,
Figure BDA0001268488460000163
表示后验信息中间值。
利用Matlab程序,调用fprintf函数,按照后验信息中间值表达式,生成计算后验信息中间值的硬件代码,代码如下:
L0_4<=alpha0+gama3+beta4;
L1_0<=alpha1+gama3+beta0;
L2_5<=alpha2+gama2+beta5;
L3_1<=alpha3+gama2+beta1;
L4_2<=alpha4+gama2+beta2;
L5_6<=alpha5+gama2+beta6;
L6_3<=alpha6+gama3+beta3;
L7_7<=alpha7+gama3+beta7;
L0_0<=alpha0+gama0+beta0;
L1_4<=alpha1+gama0+beta4;
L2_1<=alpha2+gama1+beta1;
L3_5<=alpha3+gama1+beta5;
L4_6<=alpha4+gama1+beta6;
L5_2<=alpha5+gama1+beta2;
L6_7<=alpha6+gama0+beta7;
L7_3<=alpha7+gama0+beta3;
其中,Ls′_s表示后验信息中间值,s′表示编码器当前状态,s表示编码器下一状态,s′,s∈{0,1,...,7};
使用生成的硬件代码,作为后验信息计算单元计算后验信息中间值的代码。
步骤10,配置解交织器:
按照解交织地址计算方法,计算解交织地址。
所述的解交织地址计算方法如下:
利用下式,计算交织地址:
z=sort(Π(x));
其中,z表示解交织后的地址;x表示交织前地址;sort(·)表示Matlab中求解交织地址操作。
利用Matlab程序,调用fprintf函数,将解交织地址按列存储为解交织地址的*.coe文件。
利用解交织地址的*.coe文件初始化解交织器的只读存储器ROM。
下面结合仿真对本发明的应用效果作详细的描述。
仿真实验1:
1.仿真条件:
本发明仿真实验软件环境:MATLAB R2014a,ISE 13.4。
采用基于LTE标准的自定义Turbo码,前馈多项式g1(D)=1+D2+D3,反馈多项式g0(D)=1+D+D3,编码码长为584,第一校验位打孔图案为“10101010101010111010101010101010”,第二校验位打孔图案为“01010101010101011101010101010101”。同时采用基于LTE标准的自定义Turbo码,前馈多项式g1(D)=1+D+D3,反馈多项式g0(D)=1+D2+D3,编码码长为584,第一校验位打孔图案为“10101010101010111010101010101010”,第二校验位打孔图案为“01010101010101011101010101010101”。译码迭代次数为8,调制方式为π/2-BPSK。
2.仿真内容与结果分析:
用本发明方法和未编码方法分别仿真出误码率随信噪比变化的曲线,结果如图3所示。图3中纵坐标表示误比特率,横坐标表示比特信噪比,单位是dB。图3中以正方形标识的虚线代表未编码情况的误码仿真结果曲线。图3中以圆形标示的实线代表前馈多项式g1(D)=1+D2+D3、反馈多项式g0(D)=1+D+D3、编码码长为584,第一校验位打孔图案为“10101010101010111010101010101010”,第二校验位打孔图案为“01010101010101011101010101010101”的Turbo译码仿真结果曲线。图3中以上三角标识的虚线代表前馈多项式g1(D)=1+D+D3、反馈多项式g0(D)=1+D2+D3、编码码长为584、第一校验位打孔图案为“10101010101010111010101010101010”、第二校验位打孔图案为“01010101010101011101010101010101”的Turbo译码仿真结果曲线。
从图3的仿真结果可以看出,本发明方法的所有译码仿真曲线,与未编码的方法相比,均发生了左移。在相同的比特信噪比下,本发明的所有仿真曲线具有更小的误比特率,说明了本发明方法具有优秀的译码性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (3)

1.一种通用Turbo编译码器快速验证方法,其特征在于,所述通用Turbo编译码器快速验证方法包括以下步骤:
(1)配置交织器:
(1a)按照交织地址计算方法,计算交织地址;交织地址计算方法如下:
利用下式,计算交织地址:
Π(x)=(f1·x+f2·x2)modL;
其中,Π(x)表示交织后的地址;x表示交织前地址;f1和f2分别表示交织参数1和交织参数2,f1和f2的值由二次置换多项式QPP交织器的交织规则规定;L表示Turbo码编码码长;
(1b)利用软件程序,调用打印函数,将交织地址按列存储为交织地址的*.coe文件;
(1c)利用交织地址的*.coe文件初始化交织器的只读存储器ROM;
(2)配置分量编码器:
(2a)按照前馈向量和反馈向量的获取方法,获得前馈向量g1和反馈向量g0;前馈向量和反馈向量的获取方法如下:
第一步,在Turbo码标准中,前馈多项式表达式如下:
a1+b1·D1+c1·D2+d1·D3
其中,a1表示编码器反馈支路系数;b1、c1、d1分别表示编码器前馈支路中3个寄存器系数;D1、D2、D3分别表示编码器的3个寄存器;
利用编码器反馈支路系数a1和编码器前馈支路中3个寄存器系数b1、c1、d1,组成前馈向量:
g1=[a1,b1,c1,d1];
其中,g1表示前馈向量;
第二步,在Turbo码标准中,反馈多项式表达式如下:
a0+b0·D1+c0·D2+d0·D3
其中,a0表示编码器输入比特系数;b0、c0、d0分别表示编码器反馈支路中3个寄存器系数;
利用编码器输入比特系数a0和编码器反馈支路中3个寄存器系数b0、c0、d0,组成反馈向量:
g0=[a0,b0,c0,d0];
其中,g0表示反馈向量;
(2b)利用下式,计算编码器寄存器状态和编码器输出比特:
码字编码:
Figure FDA0002208567530000021
Figure FDA0002208567530000022
Figure FDA0002208567530000023
Figure FDA0002208567530000024
Figure FDA0002208567530000025
Figure FDA0002208567530000026
归零编码:
Figure FDA0002208567530000027
Figure FDA0002208567530000028
Figure FDA0002208567530000029
Figure FDA00022085675300000210
Figure FDA00022085675300000211
Figure FDA00022085675300000212
其中,g表示编码器输入及状态向量;uk表示k时刻编码器的输入比特;
Figure FDA00022085675300000213
Figure FDA00022085675300000214
分别表示k时刻编码器的3个寄存器;k表示编码时刻,在码字编码时依次取值1,2,...,L,在归零编码时,依次取值L+1,L+2,L+3;L表示Turbo码编码码长;g0表示反馈向量;g1表示前馈向量;(·)T表示矩阵转置操作;
(2c)利用软件程序,调用打印函数,生成计算编码器状态和编码器输出比特的硬件代码;
(2d)使用生成的硬件代码,作为分量编码器中计算编码器状态和编码器输出比特的代码;
(3)配置打孔器:
(3a)将打孔图案存成M行两列的打孔图案矩阵,M表示打孔周期,矩阵第一列表示编码器第一校验位的打孔图案,矩阵第二列表示编码器第二校验位的打孔图案;
(3b)利用软件程序,调用打印函数,将打孔图案矩阵存储成打孔图案的*.coe文件;
(3c)利用打孔图案的*.coe文件初始化打孔器的只读存储器ROM;
(4)配置码率匹配单元:
利用打孔图案的*.coe文件初始化码率匹配单元的只读存储器ROM;
(5)计算状态转移矩阵:
(5a)根据前馈向量和反馈向量,利用软件程序,生成16行5列的Turbo编码器状态转移矩阵,其中,第一列表示分量编码器当前状态,第二列表示分量编码器当前输入比特,第三列表示分量编码器输出的信息位比特,第四列表示分量编码器输出的校验位,第五列表示分量编码器下一状态;
(5b)编码器状态转移矩阵的每两行为一个子矩阵,如下所示:
Figure FDA0002208567530000031
其中,s′表示编码器当前状态,依次取值为0,1,…,7;uk表示分量编码器当前输入比特;
Figure FDA0002208567530000032
表示分量编码器状态为s′时,分量编码器输入uk后输出的信息位比特;
Figure FDA0002208567530000033
表示分量编码器状态为s′时,分量编码器输入uk后输出的校验位比特;D01、D02、D03分别表示分量编码器状态为s′时,分量编码器输入uk前,分量编码器的3个寄存器;s表示分量编码器状态为s′时,分量编码器输入uk后分量编码器的新状态,s∈{0,1,...,7};D11、D12、D13分别表示分量编码器状态为s′时,分量编码器输入uk后,分量编码器的3个寄存器;
(6)计算分支度量值:按照分支度量计算方法,计算分支度量值;分支计算方法如下:
Figure FDA0002208567530000041
Figure FDA0002208567530000042
Figure FDA0002208567530000043
Figure FDA0002208567530000044
其中,
Figure FDA0002208567530000045
分别表示k时刻的4个分支度量值;
Figure FDA0002208567530000046
表示k时刻校验位软信息;La(uk)表示k时刻先验信息;
Figure FDA0002208567530000047
表示k时刻系统位软信息;
(7)配置后向度量计算单元:
(7a)利用下式,计算后向度量中间值:
Figure FDA0002208567530000048
其中,
Figure FDA0002208567530000049
表示k时刻分支度量中间值;
Figure FDA00022085675300000410
表示k+1时刻后向度量;
Figure FDA00022085675300000411
表示k时刻分支度量值;i表示分支度量值的编号,i∈{0,1,2,3};
(7b)利用软件程序,调用打印函数,按照后向度量中间值表达式,生成计算后向度量中间值的硬件代码;
(7c)使用生成的硬件代码,作为后向度量计算单元计算后向度量中间值的代码;
(8)配置前向度量计算单元:
(8a)利用下式,计算前向度量中间值:
Figure FDA00022085675300000412
其中,
Figure FDA00022085675300000413
表示k时刻前向度量中间值;
Figure FDA00022085675300000414
表示k-1时刻前向度量;
(8b)利用软件程序,调用打印函数,按照前向度量中间值表达式,生成计算前向度量中间值的硬件代码;
(8c)使用生成的硬件代码,作为前向度量计算单元计算前向度量中间值的代码;
(9)配置后验信息计算单元:
(9a)利用下式,计算后验信息中间值:
Figure FDA0002208567530000051
其中,
Figure FDA0002208567530000052
表示后验信息中间值;
(9b)利用软件程序,调用打印函数,按照后验信息中间值表达式,生成计算后验信息中间值的硬件代码;
(9c)使用生成的硬件代码,作为后验信息计算单元计算后验信息中间值的代码;
(10)配置解交织器:
(10a)按照解交织地址计算方法,计算解交织地址;解交织地址计算方法如下:
利用下式,计算交织地址:
z=Π-1(x);
其中,z表示解交织后的地址;x表示交织前地址;Π-1(·)表示软件中求解交织地址操作;
(10b)利用软件程序,调用打印函数,将解交织地址按列存储为解交织地址的*.coe文件;
(10c)利用解交织地址的*.coe文件初始化解交织器的只读存储器ROM。
2.一种如权利要求1所述通用Turbo编译码器快速验证方法的通用Turbo编译码器快速验证系统,其特征在于,所述通用Turbo编译码器快速验证系统包括:编码器、Matlab程序单元、译码器;
Matlab程序单元用于配置编码器和译码器;
编码器进一步包括:交织器、分量编码器、打孔器;
交织器连接分量编码器,分量编码器连接打孔器;
译码器进一步包括:码率匹配单元、软输入软输出译码器;
码率匹配单元与软输入软输出译码器连接;
软输入软输出译码器进一步包括:交织器、解交织器、前向度量计算单元、后向度量计算单元、后验信息计算单元。
3.一种安装有权利要求1所述通用Turbo编译码器快速验证方法的Turbo编译码器。
CN201710237697.8A 2017-04-12 2017-04-12 一种通用Turbo编译码器快速验证方法 Active CN107196666B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710237697.8A CN107196666B (zh) 2017-04-12 2017-04-12 一种通用Turbo编译码器快速验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710237697.8A CN107196666B (zh) 2017-04-12 2017-04-12 一种通用Turbo编译码器快速验证方法

Publications (2)

Publication Number Publication Date
CN107196666A CN107196666A (zh) 2017-09-22
CN107196666B true CN107196666B (zh) 2020-04-07

Family

ID=59870885

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710237697.8A Active CN107196666B (zh) 2017-04-12 2017-04-12 一种通用Turbo编译码器快速验证方法

Country Status (1)

Country Link
CN (1) CN107196666B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110690907B (zh) * 2019-09-27 2023-04-25 电子科技大学 一种已知支路信息turbo码删除模式估计方法
CN111130572B (zh) * 2020-01-06 2024-04-23 西南电子技术研究所(中国电子科技集团公司第十研究所) Turbo码快速实现方法
CN114095042B (zh) * 2022-01-19 2022-04-05 北京理工大学 低码率双正交码译码器及译码的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101938330A (zh) * 2010-09-02 2011-01-05 复旦大学 一种多码率Turbo码译码器及其存储资源优化方法
CN102064838A (zh) * 2010-12-07 2011-05-18 西安电子科技大学 基于新型无冲突交织器的低延迟并行Turbo译码方法
CN106253912A (zh) * 2016-07-27 2016-12-21 西安电子科技大学 兼容两代DVB‑RCS的Turbo译码装置及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101938330A (zh) * 2010-09-02 2011-01-05 复旦大学 一种多码率Turbo码译码器及其存储资源优化方法
CN102064838A (zh) * 2010-12-07 2011-05-18 西安电子科技大学 基于新型无冲突交织器的低延迟并行Turbo译码方法
CN106253912A (zh) * 2016-07-27 2016-12-21 西安电子科技大学 兼容两代DVB‑RCS的Turbo译码装置及方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
"Implementation of turbo codes using verilog-HDL and estimation of its error correction capability";Tepoju Vivek Vardhan等;《2015 IEEE Asia Pacific Conference on Postgraduate Research in Microelectronics and Electronics (PrimeAsia)》;20160411;第75页到第79页 *
"Lowering the Error Floor of Turbo Codes With CRC Verification";Thibaud Tonnellier等;《IEEE Wireless Communications Letters》;20160520;第5卷(第4期);第404页到第407页 *
"Performance Improvement of Turbo Codes Using Soft Input Decryption";S. Nandan等;《2012 Fourth International Conference on Computational Intelligence and Communication Networks》;20121206;第394页到第397页 *
"新颖的低延迟并行Turbo译码方案";任德锋等;《通信学报》;20110630;第32卷(第6期);第38页到第44页 *
"短帧长Turbo编译码的FPGA实现研究";张风源等;《上海航天》;20160825;第33卷(第4期);第95页到第101页 *

Also Published As

Publication number Publication date
CN107196666A (zh) 2017-09-22

Similar Documents

Publication Publication Date Title
US6950977B2 (en) Mechanism for turbo decoding when CRC for partial blocks is provided
CN101026439B (zh) 一种提高Turbo码译码速率的译码方法
Weithoffer et al. 25 years of turbo codes: From Mb/s to beyond 100 Gb/s
JP2006115145A (ja) 復号装置及び復号方法
CZ407397A3 (cs) Paralelní zřetězené konvoluční kódy s koncovými bity a jejich dekodéry
KR20050118056A (ko) 다양한 부호율을 갖는 Block LDPC 부호를 이용한이동 통신 시스템에서의 채널부호화 복호화 방법 및 장치
CN107196666B (zh) 一种通用Turbo编译码器快速验证方法
JP5700035B2 (ja) 誤り訂正符号復号装置、誤り訂正符号復号方法および誤り訂正符号復号プログラム
JP4229948B2 (ja) 復号装置、復号方法、及び受信装置
CN103354483A (zh) 通用的高性能Radix-4SOVA译码器及其译码方法
JP4837645B2 (ja) 誤り訂正符号復号回路
CN102158235A (zh) turbo译码的方法及装置
Lin et al. A 40 nm 535 Mbps multiple code-rate turbo decoder chip using reciprocal dual trellis
Lohith Kumar et al. Design and Performance analysis of a 3GPP LTE/LTE-Advance turbo decoder using software reference models
CN113872615A (zh) 一种可变长度的Turbo码译码器装置
CN103701475B (zh) 移动通信系统中8比特运算字长Turbo码的译码方法
Joseph et al. Design and implementation of turbo coder for 5G technology
Huahua et al. Analysis of turbo decoding algorithm in lte system
CN108880569B (zh) 一种基于反馈分组马尔科夫叠加编码的速率兼容编码方法
Chen et al. Iterative soft-decision decoding of Reed-Solomon convolutional concatenated codes
Xu et al. An efficient OSD-aided iterative decoding algorithm for LTE turbo codes
Adiono Radix-4 max-log-map parallel turbo decoder architecture with a new cache memory data flow for lte
Boudaoud et al. VHDL design and FPGA implementation of a high data rate turbo decoder based on majority logic codes
Bahirgonde et al. BER analysis of turbo code interleaver
Abbasfar et al. Interleaver design for high speed turbo decoders

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant