CN107196666B - 一种通用Turbo编译码器快速验证方法 - Google Patents
一种通用Turbo编译码器快速验证方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000012795 verification Methods 0.000 title claims abstract description 17
- 238000005259 measurement Methods 0.000 claims abstract description 31
- 239000011159 matrix material Substances 0.000 claims abstract description 30
- 238000004364 calculation method Methods 0.000 claims abstract description 25
- 238000004080 punching Methods 0.000 claims abstract description 22
- 230000007704 transition Effects 0.000 claims abstract description 12
- 230000006870 function Effects 0.000 claims description 19
- 238000004088 simulation Methods 0.000 abstract description 13
- 238000013461 design Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
-
- 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/27—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 using interleaving techniques
- H03M13/2792—Interleaver wherein interleaving is performed jointly with another technique such as puncturing, multiplexing or routing
-
- 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/63—Joint error correction and other techniques
- H03M13/635—Error control coding in combination with rate matching
- H03M13/6362—Error 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编译码器快速验证方法。
背景技术
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表示反馈向量。
利用下式,计算编码器寄存器状态和编码器输出比特:
码字编码:
归零编码:
其中,g表示编码器输入及状态向量;uk表示k时刻编码器的输入比特; 分别表示k时刻编码器的3个寄存器;k表示编码时刻,在码字编码时依次取值1,2,...,L,在归零编码时,依次取值L+1,L+2,L+3;L表示Turbo码编码码长;g0表示反馈向量;g1表示前馈向量;(·)T表示矩阵转置操作。
进一步,所述步骤五的状态转移矩阵的每两行为一个子矩阵,如下:
其中,s′表示编码器当前状态,依次取值为0,1,…,7;uk表示分量编码器当前输入比特;表示分量编码器状态为s′时,分量编码器输入uk后输出的信息位比特;表示分量编码器状态为s′时,分量编码器输入uk后输出的校验位比特;D01、D02、D03分别表示分量编码器状态为s′时,分量编码器输入uk前,分量编码器的3个寄存器;s表示分量编码器状态为s′时,分量编码器输入uk后分量编码器的新状态,s∈{0,1,...,7};D11、D12、D13分别表示分量编码器状态为s′时,分量编码器输入uk后,分量编码器的3个寄存器。
进一步,所述步骤六的分支计算方法如下:
进一步,所述步骤七利用下式,计算后向度量中间值:
进一步,所述步骤八利用下式,计算前向度量中间值:
进一步,所述步骤九利用下式,计算后验信息中间值:
所述步骤十的解交织地址计算方法如下:
利用下式,计算交织地址:
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表示反馈向量。
利用下式,计算编码器寄存器状态和编码器输出比特:
码字编码:
归零编码:
其中,g表示编码器输入及状态向量;uk表示k时刻编码器的输入比特; 分别表示k时刻编码器的3个寄存器;k表示编码时刻,在码字编码时依次取值1,2,...,L,在归零编码时,依次取值L+1,L+2,L+3;L表示Turbo码编码码长;g0表示反馈向量;g1表示前馈向量;(·)T表示矩阵转置操作。
利用Matlab程序,调用fprintf函数,生成计算编码器状态和编码器输出比特的硬件代码,如下所示:
使用生成的硬件代码,作为分量编码器中计算编码器状态和编码器输出比特的代码。
步骤3,配置打孔器:
将打孔图案存成32行两列的打孔图案矩阵,32表示打孔周期,矩阵第一列表示编码器第一校验位的打孔图案,矩阵第二列表示编码器第二校验位的打孔图案。
利用Matlab程序,调用fprintf函数,将打孔图案矩阵存储成打孔图案的*.coe文件。
利用打孔图案的*.coe文件初始化打孔器的只读存储器ROM。
步骤4,配置码率匹配单元:
利用打孔图案的*.coe文件初始化码率匹配单元的只读存储器ROM。
步骤5,计算状态转移矩阵:
根据前馈向量和反馈向量,利用Matlab程序,生成16行5列的Turbo编码器状态转移矩阵,其中,第一列表示分量编码器当前状态,第二列表示分量编码器当前输入比特,第三列表示分量编码器输出的信息位比特,第四列表示分量编码器输出的校验位,第五列表示分量编码器下一状态,状态转移矩阵如下:
编码器状态转移矩阵的每两行为一个子矩阵,如下所示:
其中,s′表示编码器当前状态,依次取值为0,1,…,7;uk表示分量编码器当前输入比特;表示分量编码器状态为s′时,分量编码器输入uk后输出的信息位比特;表示分量编码器状态为s′时,分量编码器输入uk后输出的校验位比特;D01、D02、D03分别表示分量编码器状态为s′时,分量编码器输入uk前,分量编码器的3个寄存器;s表示分量编码器状态为s′时,分量编码器输入uk后分量编码器的新状态,s∈{0,1,...,7};D11、D12、D13分别表示分量编码器状态为s′时,分量编码器输入uk后,分量编码器的3个寄存器。
步骤6,计算分支度量值:
按照分支度量计算方法,计算分支度量值。
所述的分支计算方法如下:
步骤7,配置后向度量计算单元:
利用下式,计算后向度量中间值:
利用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,配置前向度量计算单元:
利用下式,计算前向度量中间值:
利用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,配置后验信息计算单元:
利用下式,计算后验信息中间值:
利用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)利用下式,计算编码器寄存器状态和编码器输出比特:
码字编码:
归零编码:
其中,g表示编码器输入及状态向量;uk表示k时刻编码器的输入比特; 分别表示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)编码器状态转移矩阵的每两行为一个子矩阵,如下所示:
其中,s′表示编码器当前状态,依次取值为0,1,…,7;uk表示分量编码器当前输入比特;表示分量编码器状态为s′时,分量编码器输入uk后输出的信息位比特;表示分量编码器状态为s′时,分量编码器输入uk后输出的校验位比特;D01、D02、D03分别表示分量编码器状态为s′时,分量编码器输入uk前,分量编码器的3个寄存器;s表示分量编码器状态为s′时,分量编码器输入uk后分量编码器的新状态,s∈{0,1,...,7};D11、D12、D13分别表示分量编码器状态为s′时,分量编码器输入uk后,分量编码器的3个寄存器;
(6)计算分支度量值:按照分支度量计算方法,计算分支度量值;分支计算方法如下:
(7)配置后向度量计算单元:
(7a)利用下式,计算后向度量中间值:
(7b)利用软件程序,调用打印函数,按照后向度量中间值表达式,生成计算后向度量中间值的硬件代码;
(7c)使用生成的硬件代码,作为后向度量计算单元计算后向度量中间值的代码;
(8)配置前向度量计算单元:
(8a)利用下式,计算前向度量中间值:
(8b)利用软件程序,调用打印函数,按照前向度量中间值表达式,生成计算前向度量中间值的硬件代码;
(8c)使用生成的硬件代码,作为前向度量计算单元计算前向度量中间值的代码;
(9)配置后验信息计算单元:
(9a)利用下式,计算后验信息中间值:
(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编译码器。
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)
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)
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译码装置及方法 |
-
2017
- 2017-04-12 CN CN201710237697.8A patent/CN107196666B/zh active Active
Patent Citations (3)
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)
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 |