CN1855735A - Turbo码交织地址的计算方法和装置 - Google Patents
Turbo码交织地址的计算方法和装置 Download PDFInfo
- Publication number
- CN1855735A CN1855735A CN 200510066526 CN200510066526A CN1855735A CN 1855735 A CN1855735 A CN 1855735A CN 200510066526 CN200510066526 CN 200510066526 CN 200510066526 A CN200510066526 A CN 200510066526A CN 1855735 A CN1855735 A CN 1855735A
- Authority
- CN
- China
- Prior art keywords
- row
- address
- array
- result
- prime number
- 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.)
- Granted
Links
Images
Abstract
本发明涉及一种Turbo码交织地址的计算方法和装置,本发明所述方法主要包括:根据输入码块长度确定交织矩阵的基本参数;根据所述交织矩阵的基本参数,利用加法器、减法器和控制逻辑计算出交织矩阵的列号选择数组和最小质整数数组;利用所述列号选择数组和最小质整数数组,计算出Turbo码交织地址。本发明所述装置主要包括:基本参数计算模块,最小质整数数组计算模块,列号选择数组计算模块,交织地址计算模块。利用本发明所述方法,可以提高交织地址的计算速度,优化系统逻辑资源的消耗,减小系统芯片的功耗。
Description
技术领域
本发明涉及计算机应用领域,尤其涉及一种Turbo码交织地址的计算方法和装置。
背景技术
Turbo码是法国学者1993年发现的一种新的差错控制码,是信息和编码领域中重大的研究成果之一,在诸如远程数据通信、数据的磁记录等领域是应用性能最好的码。
因为Turbo码十分接近香农公式的BER(误码率)极限,在CDMA(码分多址)和第三代移动通信技术中得到了广泛的应用。在对Turbo码进行编码和解码的操作之前,需要利用Turbo码交织器对输入数据进行非一致性交织,即对输入数据进行重新排列组合,使输入数据的码字的权重得到重新分布,从而使输入数据的码字的伪随机性达到最好,提高系统抗突发错误的能力,提高系统性能。
3GPP(第三代伙伴组织计划)25.212协议规定的Turbo码交织器的定义如下:
1、码块长度K决定交织矩阵行数R。
情况1:K=40到159比特时,R=5;
情况2:K=160到200比特或481到530比特时,R=10;
情况3:K为其他长度,R=20。
2、根据码块长度K确定质数P和交织矩阵列数C。
情况1:K=481到530比特,C=p=53;
情况2:从存储在ROM(只读存储器)中的表1中寻找最小的质数,使得p满足:K≤R×(p+1),具体操作过程为:按次序依次从表1中读出P的值,做乘法比较运算,直到找到满足条件的P为止。然后根据P的值确定列数C。
表1:质数表
P索引 | 质数p | 根v | P索引 | 质数p | 根v | P索引 | 质数p | 根v |
0 | 7 | 3 | 22 | 101 | 2 | 44 | 223 | 3 |
1 | 11 | 2 | 23 | 103 | 5 | 45 | 227 | 2 |
2 | 13 | 2 | 24 | 107 | 2 | 46 | 229 | 6 |
3 | 17 | 3 | 25 | 109 | 6 | 47 | 233 | 3 |
4 | 19 | 2 | 26 | 113 | 3 | 48 | 239 | 7 |
5 | 23 | 5 | 27 | 127 | 3 | 49 | 241 | 7 |
6 | 29 | 2 | 28 | 131 | 2 | 50 | 251 | 6 |
7 | 31 | 3 | 29 | 137 | 3 | 51 | 257 | 3 |
8 | 37 | 2 | 30 | 139 | 2 | |||
9 | 41 | 6 | 31 | 149 | 2 | |||
10 | 43 | 3 | 32 | 151 | 6 | |||
11 | 47 | 5 | 33 | 157 | 5 | |||
12 | 53 | 2 | 34 | 163 | 2 | |||
13 | 59 | 2 | 35 | 167 | 5 | |||
14 | 61 | 2 | 36 | 173 | 2 | |||
15 | 67 | 2 | 37 | 179 | 2 | |||
16 | 71 | 7 | 38 | 181 | 2 | |||
17 | 73 | 5 | 39 | 191 | 19 | |||
18 | 79 | 3 | 40 | 193 | 5 | |||
19 | 83 | 2 | 41 | 197 | 2 | |||
20 | 89 | 3 | 42 | 199 | 3 | |||
21 | 97 | 5 | 43 | 211 | 2 | |||
3、将输入码块按行写入R×C的交织矩阵中;
4、构造行内置换序列、构造行间置换序列,然后先行内交织、再行间交织;
行号根据P(j)(j=0,1,…,R-1)序列进行行间交换,P(j)为第j个被交换行的初始位置。
PA:{19,9,14,4,0,2,5,7,12,18,10,8,13,17,3,1,16,6,15,11}for R=20;
PB:{19,9,14,4,0,2,5,7,12,18,16,13,17,15,3,1,6,11,8,10}for R=20;
PC:{9,8,7,6,5,4,3,2,1,0}for R=10;
PD:{4,3,2,1,0}for R=5。
序列长度K: P(j)
40 to 159-bit: PD
160 to 200-bit: PC
201 to 480-bit: PA
481 to 530-bit:: PC
531 to 2280-bit: PA
2281 to 2480-bit: PB
2481 to 3160-bit: PA
3161 to 3210-bit: PB
3211 to 5114-bit: PA
列交换的关系比较复杂一些,分三种情况:
情况1:如果C=p,进行第j次列间交换(j=0,1,2,…,R-1),cj(i)=s((i*q(j))mode(p-1)),i=0,1,2,…,(p-2).,and cj(p-1)=0;
情况2:如果C=p+1,进行第j次列间交换(j=0,1,2,…,R-1),cj(i)=s((i*q(j))mode(p-1)),i=0,1,2,…,(p-2),cj(p-1)=0,cj(p)=p;如果(K=C×R),交换cR-1(p)和cR-1(0)。
情况3:如果C=p-1,进行第j次列间交换(j=0,1,2,…,R-1),cj(i)=s((i*q(j))mode(p-1))-1,i=0,1,2,…,(p-2)。
其中最小质数组{q(j)}(j=1,2,…,R-1)的确定方法是:g.c.d{qj,p-1}=1,q(j)>6,q(j)>q(j-1),q(0)=1。
序列S(i)确定方法是:s(i)=(v*s(i-1))mod p,i=1,2,…,(p-2).,s(0)=1。其中v为从表1中查找到的根v。
3、交织矩阵中按列输出码块(矩阵填充比特需删减)。
Turbo码交织地址计算的实现方案主要有2种方式:1、交织地址预计算法,即预先计算好交织地址表,并把该表存放在RAM(随机存取存储器)中,在进行TURBO编码时,如果有需要交织的地方,则直接从RAM中读取交织地址;2、交织地址实时计算法,在TURBO编码时实时地计算交织地址。
现有技术中交织地址的一种计算方法为:在所述3GPP 25.212协议规定的交织器中采用高速DSP(数字信号处理器)计算交织地址。
该交织地址计算方法的缺点为:3GPP 25.212协议规定的交织器实现方案中包含大量的乘法和取模运算。采用高速DSP按照该方案计算交织地址,处理的延时相对较大,无法提高系统的整体编码、解码性能。
现有技术中交织地址的另一种计算方法为:在所述3GPP 25.212协议规定的交织器中采用ASIC(专用集成电路)或FPGA(现场可编程门阵列)实时计算交织地址。
该交织地址计算方法的缺点为:
1、耗用较多的逻辑资源、芯片的功耗较大;
2、TURBO编解码模块的相关联性较大,影响模块间各自的流水处理速度;
3、进行多个码块的编解码时,需要重复计算交织地址。
发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种Turbo码交织地址的计算方法和装置,从而提高了交织地址的计算速度,优化了系统逻辑资源的消耗,减小了系统芯片的功耗。
本发明的目的是通过以下技术方案实现的:
一种Turbo码交织地址的计算方法,包括:
A、根据输入码块长度确定交织矩阵的基本参数;
B、根据所述交织矩阵的基本参数,利用加法器、减法器和控制逻辑计算出交织矩阵的列号选择数组和最小质整数数组;
C、利用所述列号选择数组和最小质整数数组,计算出Turbo码交织地址。
所述的基本参数包括:
交织矩阵的行数R和列数C、质数p、根v、特殊行和列转换标记p_rel。
所述的特殊行和列转换标记p_rel包括:
如果C=p-1,则p_rel=0;
如果C=p,则p_rel=1;
如果C=p+1,输入码块长度K!=R*C,则p_rel=2;
如果C=p+1,K=R*C,则p_rel=3。
所述的步骤B进一步包括:
B1、对所述根v进行累加;
B2、如果所述累加的值大于质数p,则将累加的值-p的值按照地址从小到大依次存进缓存;否则,将累加的值按照地址从小到大依次存进缓存;
B3、按照第一个地址查询出所述缓存中所存的值,以所查询出的值作为地址再去查询所述缓存中所存的值,依次以前一次查询出的值作为地址再去查询所述缓存中所存的值,并将每次查询出的值组成列号选择数组。
所述的步骤B包括:
B4、根据所述交织矩阵的质数p和交织矩阵的行数R,从现有质数中从小到大依次选择出预定数量的和p-1的最大公约数为1的质数;
B5、设置一个中间值,该中间值初始化为0;
B6、如果所述选择出的质数大于中间值+(p-1),则记录选择出的质数-中间值-(p-1)的值,并把中间值累加p-1;否则,记录选择出的质数-中间值的值,中间值保持不变;
B7、依次将所记录的值组成最小质整数数组。
所述的步骤B4包括:
B41、选择大于6的前21个质数组成一个质数表;
B42、从所述质数表中从小到大依次读出质数,并依次记录所读出的质数中和p-1的最大公约数不为1的质数的位置;
B43、将所述记录的和p-1的最大公约数不为1的质数的位置、质数p和根v组成一个最小质数组剔除质数的位置表;
B44、根据所述最小质数组剔除质数的位置表和交织矩阵的行数R,从所述质数表中依次读出预定数量的和p-1的最大公约数为1的质数。
所述的步骤C进一步包括:
C1、根据所述交织矩阵的基本参数,进行交织矩阵行号的转换;
C2、利用所述计算出的列号选择数组和最小质整数数组,进行交织矩阵列号的转换;
C3、根据所述转换后的行号和列号,计算出Turbo码交织地址。
所述的步骤C2进一步包括:
C21、利用加法器对所述最小质整数数组中的质数进行步长为1的累加;
C22、利用减法器和控制逻辑对所述累加的值进行p-1的取模运算;
C23、以所述取模运算的结果作为地址,查询所述列号选择数组中的值,并将所查询出来的值作为转换后的列号,进行交织矩阵列号的转换。
所述的步骤C2还包括:
根据所述特殊行和列转换标记、所交织的数据的行数row_cnt和所交织的数据的列数col_cnt,进行交织矩阵特殊列号的转换。
所述的步骤C2进一步包括:
如果p_c_rel=1,col_cnt=p或者p_c_rel=2,col_cnt=p-1或者p_c_rel=3,col_cnt=p-1,则转换后的列号为0;
如果p_c_rel=2,col_cnt=p或者p_c_rel=3,col_cnt=p,row_cnt!=0或者p_c_rel=3,col_cnt=0,row_cnt=0,则转换后的列号为p;
如果p_c_rel=3,col_cnt=p,row_cnt=0,则转换后的列号为1;
如果p_c_rel=0,则转换后的列号为列号选择数组的输出值减去1的值。
一种Turbo码交织器,包括:
基本参数计算电路:用于根据码块长度计算包括交织矩阵的根参数和质数参数的基本参数,并将计算出的参数分别传递给列号选择数组计算电路、最小质整数数组计算电路和交织地址计算电路;
最小质整数数组计算电路:用于根据基本参数确定电路传递过来的交织矩阵的基本参数,利用加法器、减法器和控制逻辑计算出符合最小质整数挑选条件的质数数组,并将计算出的结果存放在随机存取存储器RAM中;
列号选择数组计算电路:用于根据基本参数确定电路传递过来的交织矩阵的基本参数,利用加法器、减法器和控制逻辑计算出转换前的交织矩阵列号的选择数组,并将计算出的结果存放在RAM中;
交织地址计算电路:用于根据基本参数确定电路传递过来的交织矩阵的基本参数,利用存放在RAM中的最小质整数数组和列号选择数组的值,计算出交织地址,并将计算出的交织地址存放在RAM中。
所述的最小质整数数组计算电路包括:
质整数地址获得电路:用于根据交织矩阵的质数参数,计算出符合最小质整数挑选条件的质数的地址,并将计算出的结果传递给比较相减电路;
中间值存放电路:用于存放取模运算的中间值,并将存放的结果传递给比较相减电路;
比较相减电路:用于通过加法器、减法器和控制逻辑,利用中间值存放电路传递过来的中间值,将根据质整数地址获得电路传递过来的地址所查询到的质数进行取模运算,并将计算的结果依次传递给最小质整数数组RAM;
最小质整数数组RAM:用于依次存放比较相减电路传递过来的计算结果,并将该计算结果作为最小质整数数组的最终计算结果。
所述的列号选择数组计算电路包括:
累加比较相减电路:用于通过加法器进行交织矩阵的根参数的累加计算,然后通过加法器、减法器和控制逻辑对累加的结果进行质参数的取模运算,并把计算的结果传递给中间结果RAM;
中间结果RAM:用于按照从小到大的地址依次存放累加比较相减电路传递过来的计算结果;
递推查找电路:用于从第一个地址开始,查找中间结果RAM中存放的计算结果,然后依次以前一次查找到的计算结果做为地址,查找中间结果RAM中存放的计算结果,并将查找到的计算结果依次传递给最终结果RAM;
最终结果RAM:用于依次存放递推查找电路传递过来的计算结果,并将该计算结果作为列号选择数组的最终计算结果。
所述的交织地址计算电路包括:
行号转换电路:用于根据交织矩阵的基本参数,通过查表的方式进行交织矩阵的行号的转换,并将转换的结果传递给交织地址确定电路;
列号转换电路:用于根据交织矩阵的基本参数,利用存放在最小质整数数组RAM中的最小质整数数组和存放在最终结果RAM中的列号选择数组,进行交织矩阵的列号的转换,并将转换的结果传递给交织地址确定电路;
交织地址确定电路:用于根据行号转换电路、列号转换电路所传递过来的转换后的行号和列号,计算出交织地址,并将计算出的结果存放在RAM中。
由上述本发明提供的技术方案可以看出,本发明和现有技术相比,本发明通过加法器、减法器和控制逻辑实现了交织地址计算过程中的取模运算,因此,本发明简化了3GGP 25.212协议中规定的Turbo交织地址计算算法,使得Turbo交织地址计算算法可以通过ASIC来实现,从而提高了交织地址的计算速度、优化了系统逻辑资源的消耗,减小了系统芯片的功耗。
附图说明
图1为现有技术中Turbo编辑器结构图;
图2为本发明所述方法的具体处理流程图;
图3为本发明所述方法的基本原理图;
图4为本发明所述方法中实现SI数组计算的电路原理图;
图5为本发明所述方法中实现Q(j)数组比较相减算法的电路原理图;
图6为本发明所述方法中实现Q(j)数组比较相减算法中的质数表地址获得电路原理图;
图7为本发明所述方法中的行号和列号转换的示意图;
图8为本发明所述方法中实现累加取模运算的电路原理图;
图9为本发明所述装置的电路原理图。
具体实施方式
本发明提供了一种Turbo码交织地址的计算方法和装置。本发明的核心为:将交织地址计算过程中的取模运算转化为“比较相减”运算,简化了Turbo交织地址计算算法。
下面结合附图来详细描述本发明所述方法,本发明所述方法的具体处理流程如图2所示,包括5个步骤本发明所述方法的基本原理图如图3所示,本发明将交织地址的计算过程分成4个阶段:基本参数确定、SI(列号选择)数组计算、Q(j)最小质整数)数组计算和交织地址计算。
下面按照本发明所述方法的流程来详细描述本发明所述方法,本发明所述方法的流程包括如下步骤:
步骤2-1、根据码块长度确定基本参数。
该步骤需要确定的参数包括:交织矩阵的行数和列数、质数p、根v、最小质数组剔除质数的位置和交换矩阵特殊转换的标记p_c_rel。
其中交织矩阵的行数和列数、质数p、根v是按照3GPP 25.212协议规定进行确定的。具体操作按照如下过程进行:
1、确定交织矩阵的行数R。
交织矩阵行数R是按照码块长度K来确定的,分三种情况来处理:
情况1:K=40到159比特时,R=5;
情况2:K=160到200比特或481到530比特时,R=10;
情况3:K为其他长度,R=20。
2、确定质数P、交织矩阵列数C和根v。
质数P和交织矩阵列数C是按照码块长度K和交织矩阵行数R来确定的,分两种情况来处理:
情况1:K=481到530比特,C=p=53;
情况2:在表1所示的质数表中寻找最小的质数p,使得p满足:K≤R×(p+1),具体操作过程为:按表1中的P索引列从小到大依次读出质数P的值,按照公式K≤R×(p+1)做乘法比较运算,直到找到满足条件的P为止。然后根据P的值确定列数C。
根据P的值在表1中进行查找,确定相应的根v。
3、确定最小质数组剔除质数的位置。
最小质数组是进行交织地址计算时要用的,最小质数组剔除质数的位置根据参数P来确定,具体操作过程如下:
从表1中按照从小到大挑选出前19个质数,依次为7、11、13……,79),需要剔除的质数为:该质数和(p-1)的最大公约数不为1,即:g.c.d{qj,p-1}!=1。
如:p=23的时候,质数11和22的最大公约数不为1,所以质数11在挑选时需要被剔除;当p=239的时候,需要剔除2个质数:第0个质数7和第2个质数13,因为7和13都能被238整除。
参数p和最小质数组剔除质数的位置的对应关系如表2所示,表中第四列记录需要剔除素数的位置,其中20表示不需要剔除,21表示需要剔除2个素数(第0个和第2个),其他值表示需要剔除素数的具体位置。
表2:质数数P、根v和剔除质数位置表
地址 | p(9比特) | v(3比特) | 剔除位置(5比特) |
0 | 7 | 3 | 20 |
1 | 11 | 2 | 20 |
2 | 13 | 2 | 20 |
3 | 17 | 3 | 20 |
4 | 19 | 2 | 20 |
5 | 23 | 5 | 1 |
6 | 29 | 2 | 0 |
7 | 31 | 3 | 20 |
8 | 37 | 2 | 20 |
9 | 41 | 6 | 20 |
10 | 43 | 3 | 0 |
11 | 47 | 5 | 5 |
12 | 53 | 2 | 2 |
13 | 59 | 2 | 6 |
14 | 61 | 2 | 20 |
15 | 67 | 2 | 1 |
16 | 71 | 7 | 0 |
17 | 73 | 5 | 20 |
18 | 79 | 3 | 2 |
19 | 83 | 2 | 9 |
20 | 89 | 3 | 1 |
21 | 97 | 5 | 20 |
22 | 101 | 2 | 20 |
23 | 103 | 5 | 3 |
24 | 107 | 2 | 12 |
25 | 109 | 6 | 20 |
26 | 113 | 3 | 0 |
27 | 127 | 3 | 0 |
28 | 131 | 2 | 2 |
29 | 137 | 3 | 3 |
30 | 139 | 2 | 5 |
31 | 149 | 2 | 8 |
32 | 151 | 6 | 20 |
33 | 157 | 5 | 2 |
34 | 163 | 2 | 20 |
35 | 167 | 5 | 19 |
36 | 173 | 2 | 10 |
37 | 179 | 2 | 20 |
38 | 181 | 2 | 20 |
39 | 191 | 19(用0表示) | 4 |
40 | 193 | 5 | 20 |
41 | 197 | 2 | 0 |
42 | 199 | 3 | 1 |
43 | 211 | 2 | 0 |
44 | 223 | 3 | 8 |
45 | 227 | 2 | 20 |
46 | 229 | 6 | 4 |
47 | 233 | 3 | 6 |
48 | 239 | 7 | 21 |
49 | 241 | 7 | 20 |
50 | 251 | 6 | 20 |
51 | 257 | 3 | 20 |
4、确定特殊转换的标记。
该标记用于标记参数p和列数C的关系。
如果C=p-1,则该标记p_c_rel=0;
如果C=p,则该标记p_c_rel=1;
如果C=p+1,且K!=R*C,则该标记p_c_rel=2;
如果C=p+1且K=R*C,则该标记p_c_rel=3。
步骤2-2、根据交织矩阵基本参数,利用加法器、减法器和控制逻辑进行列号选择数组和最小质整数数组的计算。
为了减少交织地址的计算的时间,本发明尽量让一些计算并行处理。因此,基本参数确定后,由于SI(列号选择)数组的计算和Q(j)(最小质整数)数组的计算相互独立,本发明中这两个数组的计算是并行地进行处理的。
下面我们首先描述SI数组的计算过程。
数组S(i)确定方法是:s(i)=(v*s(i-1))mod p,i=1、2、…(p-2).,s(0)=1。其中v为从表1中查找到的根v。
在交织地址的计算过程中,需要多次用到取模运算。对于取模计算,如果直接用逻辑来实现是很不经济的,需要耗用较多的逻辑资源,并且整个交织地址的计算时间也会加大。因此,本发明的核心问题就是如何简化交织地址计算算法中的取模运算,通过寻找一种等效算法来到达取模运算的目的,而不是直接用除法器实现取模运算。
本发明中将SI数组计算过程中的取模运算转化为“累加比较相减”运算,本发明中通过“累加比较相减”运算实现SI数组计算的电路原理图如图4所示。其具体工作过程如下:
1、首先,依次计算(v*i)mod p(1<=i<p),并把所计算出来的值作为一个数组存储在RAM中。具体实现过程为:
用一个累加寄存器进行累加,每拍累加v,并把累加的值和p相比较,如果累加的值大于p,将“累加值-p”作为计算结果,并把该计算结果存储到中间结果RAM中;如果累加的值不大于p,则直接把累加值锁存,并把这个值存储到中间结果RAM中的下一个地址中。因此,累加结束后,中间结果RAM中从地址0开始依次存放着(1*v)mod p,(2*v)mod p,(3*v)modp,……((p-1)*v)mod p的值。由于v小于p,因此中间结果RAM中存储的第一个数据为:(1*v)mod p=v。
然后,调用递推公式,以S(i-1)的值作为索引从中间结果RAM中查找S(i)的值。即地址从0开始,读取中间结果RAM的值,这个值就是S(1)的值,然后把这个值存储到SI结果RAM中。再以S(1)-1的值作为地址,读取中间结果RAM的值,读出的值就是S(2)的值,把这个值得存储到SI结果RAM中。……,依次类推,可以得到所有S(i)的值。
下面我们描述Q(j)数组的计算过程。
最小质整数数组Q(j)的计算过程主要为:从表1中挑选符合条件的质数q,并进行p-1取模运算,然后将取模运算后的结果存放在片内RAM中。
最小质整数组的选择条件为:{q(j)}{j=1、2、…R-1),使得g.c.d{qj,p-1}=1,即q(j)和p-1的最小公约数为1,其中q(j)>6,q(j)>q(j-1),q(0)=1。
Q(j)数组的具体实现方法是:从表1中选择出前21个质数作为原始质数数组,根据p的值,从表2中查找到不满足最小质整数组选择条件的质数的位置,即表2中的剔除质数位置,然后从所述原始质数数组中按照查找到的剔除质数位置,剔除出不满足选择条件的质数,得到经过剔除后的质数数组,从该数组中挑选出前19个,并对其进行p-1取模运算,即得到Q(j)数组。
上文所述对挑选出的质数进行p-1的取模运算,和SI数组的计算过程中的取模运算类似,是采用比较相减算法来实现的。在进行质数取模运算时,每次读出的质数是由小到大排列的,并且相临两个质数的差值总是小于等于p-1。所述比较相减算法的具体处理过程如下:
设置一个历史值,并将该历史值初始化为0,然后将从经过剔除后的质数数组读出的质数和“历史值+(p-1)”进行比较相减,即:
当读出的质数大于等于“历史值+(p-1)”时,取“读出的质数-历史值-(p-1)”作为取模的结果,并且历史值累加p-1;
当读出的质数小于“历史值+(p-1)”时,取“读出的质数-历史值”的值作为取模的结果,历史值保持不变。
本发明中实现Q(j)数组比较相减算法的电路原理图如图5所示。
其具体工作过程为:用一个计数器(模R-1)进行计数,控制整个Q(j)数组的运算过程。在收到启动脉冲后,计数器从值31跳转到0并开始计数,计数值依次为0,1……R-1(其中R为交织数组的行数)。计数器在0~R-1时,依次把Q(j)的运算结果写入到RAM中。第一个写入的初始值为“1”,后面依次写入取模运算所得到的结果。
用计数器的值作为查询质数表表1的地址,当遇到需要剔除的位置时,读地址跳过一个,即:读地址=计数器的值+1;还有一种特殊情况,需要跳过2个地址,即需要剔除2个质数时,对于这种情况,需要跳过位置0和位置2的质数,在实现时,当计数器的值小于2时,读地址=计数器的值+1,当计数器值大于等于2时,读地址=计数器的值+2。
实现Q(j)数组比较相减算法中的质数表地址获得电路原理图如图6所示。
其具体工作过程为:一般情况下可以直接用计数器的值作为地址,当遇到需要剔除的数据时,将地址的值增加一个偏移。该电路原理图分成2个分支,即需要剔除2个和小于2个质数的情况,即剔除位置是否为21(21标记需要剔除2个质数的情况)。
如果剔除位置为21,当计数器的值大于1时,用计数器的值加2作为ROM的地址,否则用计数器的值加1作为ROM的地址;
如果剔除位置不为21,用计数器的值和剔除位置做比较,当计数器的值>=剔除位置时,用计数器的值加1作为ROM的地址,否则直接用计数器的值作为ROM的地址。
步骤2-3:根据交织矩阵基本参数,进行交织矩阵行号的转换。
本发明所述的交织地址计算方法是基于交织地址预计算法。
本发明所述方法的主要处理过程为:用2个计数器计数交织后的行地址和列地址,并根据计数出来的行地址和列地址计算交织前的行地址和列地址,用交织前的行地址和列地址计算交织前的地址,并把这个地址值写入RAM中,供编码器查询。
交织地址=交织前的行号*矩阵的列数+交织前的列号。在本发明中有2个计数器,分别对行号(row_cnt)和列号计数(col_cnt)。先对行计数,当行计数器的值等于交织矩阵的行数时,列数加1,行数归零。
这两个计数器计数出的行号和列号是交织后的行号和列号,需要进行转换,转换成交织前的行号和列号。
本发明所述方法中的行号和列号转换的示意图如图7所示。
图7中方形点是交织后的位置,椭圆形点为行交换前的位置,圆形点为列交换前的位置(即交织前的位置)。
行号转换比较简单,可以直接用查表的方式进行转换。
步骤2-4:利用计算出的列号选择数组和最小质整数数组,进行交织矩阵列号的转换。
交织矩阵列交换的关系比较复杂一些,分三种情况:
情况1:如果C=p,进行第j次列间交换(j=0,1,2,…,R-1),cj(i)=s((i*q(j))mode(p-1)),i=0,1,2,…,(p-2).,and cj(p-1)=0;
情况2:如果C=p+1,进行第j次列间交换(j=0,1,2,…,R-1),cj(i)=s((i*q(j))mode(p-1)),i=0,1,2,…,(p-2),cj(p-1)=0,cj(p)=p;如果(K=C×R),交换cR-1(p)和cR-1(0)。
情况3:如果C=p-1,进行第j次列间交换(j=0,1,2,…,R-1),cj(i)=s((i*q(j))mode(p-1))-1,i=0,1,2,…,(p-2)。
其中最小质数组{q(j)}(j=1,2,…R-1)的确定方法是:g.c.d{qj,p-1}=1,q(j)>6,q(j)>q(j-1),q(0)=1。
序列S(i)确定方法是:s(i)=(v*s(i-1))mod p,i=1,2,…,(p-2).,s(0)=1。其中V为从表1中查找到的根v。
上面所述三种情况都要用到i*q(j)mod(p-1)的运算。
利用“(a*b)mod c等效于(a*(b mod c))mod c”的规律,可以先做q(j)mod(p-1)操作,然后乘以i,再对乘法结果取模。因为,最小质整数数组Q(j)在步骤2-2中已经计算出来,并且Q(j)中保存的是q(j)mod(p-1)的结果。因此,可以利用数组Q(j)将i*q(j)mod(p-1)的运算简化。
设cj(i)=i*q(j)mod(p-1),由于(i*q(j))mod(p-1)=((i-1)*q(j)+q(j))mod(p-1),且i从0开始每次只递增1,利用递推规律率,cj(0)=0,cj(1)=(cj)(0)+q(j))mod(p-1),cj(2)=(cj(1)+q(j))mod(p-1)……cj(i)=(cj(i-1)+q(j))mod(p-1),所以在进行cj(i)计算的时候,只需要对前一次计算的历史结果加q(j)再取模即可。因此,公式i*q(j)mod(p-1)中的乘法取模运算可以转化为累加取模运算。
本发明所述方法中实现累加取模运算的电路原理图如图8所示。其主要工作过程为:
公式i*q(j)mod(p-1)中的i是交织矩阵列的列计数,本发明所述方法在进行交织地址计算时是按列进行的,在计算完第1列所有行的交织地址后,再进行第2列所有行的交织地址,依次类推……。在进行累加取模运算时,首先把前一次计算的所有行的历史结果记录下来,由于交织矩阵的行数最多为20行,所以最多需要记录20个历史值。在进行新的一列的交织地址计算时,用历史值和当前读取的Q(j)的值相加,并用相加后的值和(p-1)比较:
如果相加后的值大于p-1,取相加后的值减去p-1的值作为累加取模运算的计算结果;
如果相加后的值不大于p-1,直接取相加后的值作为累加取模运算的计算结果。
同时把累加取模运算的计算结果作为新的历史值保存,为下一列计算作好准备。
将通过前面所述累加取模运算所获得的(i*q(j))mod(p-1)值作为地址(对于C=p-1情况需要用这个值减1),去查询通过步骤2-2所获得的SI数组的值,就可以得到列交换前的列号,然后进行相应的列转换。
在列号转换的时候,还需要考虑一些特殊情况。在C=p和C=p+1时,上面的处理只完成了前p-1个列交换地址的计算。当C=p时,第p-1列号赋值0;当C=p+1时,第p-1个列号赋值0,第p个列号赋值p。
同时,当C=p+1且K=R*C时,需要对第R-1行的第0列和第P列做交换。没有交换前,第0列和第p列的转换列号分别为1和p,因此,在这种情况下可以在遇到第R-1行的第0列时,直接对交换列号赋值p,遇到第R-1行的第p列时,直接对交换列号赋值1(这里提到的第R-1行是指交换后的行号,对应于行计数器的值为0的时候)。
考虑到交换矩阵中包含最后一行的空比特,在交换完成之后需要把这些空比特剔除。所以在交织地址计算的时候,需要把这些特殊地址去除。对于空比特在矩阵交换前的存放位置应该是:K,K+1,……R*C-1,因此,在遇到计算得到的交织地址值大于K时不把这些值写入交织地址表中。
本发明所述方法中针对特殊关系的列号的转换有一种特殊转换算法。它主要是根据当前计数的行号row_cnt和列号col_cnt,以及交换矩阵特殊标记p_c_rel,确定交织前的列号选择,在通常情况下,列号选择数组S(i)的输出即为交织前的列号选择,但对于一些特殊情况,需要选择一些特殊值,如“S(i)-1”、“0”、“1”、“p”。其选择关系是:
如果p_c_rel=0,则译码出0,即转换后的列号为列号选择数组的输出值减去1的值(即选择si_data-1输出);
如果p_c_rel=1且col_cnt=p或者p_c_rel=2且col_cnt=p-1或者p_c_rel=3且col_cnt=p-1,则译码出2,即转换后的列号为0;
如果p_c_rel=2且col_cnt=p或者p_c_rel=3且col_cnt=p且row_cnt!=0或者p_c_rel=3且col_cnt=0且row_cnt=0,则译码出3,即转换后的列号为p;
如果p_c_rel=3且col_cnt=p且row_cnt=0,则译码出4,即转换后的列号为1;
其他情况译码出1,即转换后的列号为列号选择数组的输出值(即选择si_data输出)。
步骤2-5:利用转换后的行号和列号,进行交织地址的计算。
经过对交织后的行号和列号进行转换后,得到交织前的行号和交织前的列号,然后利用公式:交织地址=交织前的行号*矩阵的列数+交织前的列号,得到所需要的交织前的码块的交织地址,最后将所得到的交织前的码块的交织地址存入交织地址RAM中,供Turbo码编辑器查询使用。
本发明还提供了一种Turbo码交织地址的计算装置,本发明所述装置的电路原理图如图9所示。包括如下模块:
基本参数计算模块:用于根据码块长度,计算交织矩阵的行数和列数、质数p、根v、最小质数组剔除质数的位置和特殊转换的标记等基本参数,并将计算出的参数分别传递给最小质整数数组计算模块、列号选择数组计算模块和交织地址计算模块。
最小质整数数组计算模块:用于根据基本参数确定模块传递过来的质数p,从质数表中挑选出符合最小质整数挑选条件的质数,然后通过比较相减算法进行p-1的取模运算,计算出最小质整数组Q(j),并将计算出的结果存放在RAM中。
列号选择数组计算模块:用于根据基本参数确定模块传递过来的根v,通过累加比较相减和递推算法计算出列号选择数组SI,并将计算出的结果存放在RAM中。
交织地址计算模块:用于根据基本参数确定模块传递过来的交织矩阵的基本参数,利用存放在RAM中的最小质整数数组和列号选择数组的值,计算出交织前的交织地址,并将计算出的交织地址存放在RAM中。
所述最小质整数数组计算模块又包括如下模块:
质整数地址获得模块:用于根据质数p和最小质整数挑选的条件,计算出质数表中出符合挑选条件的质数的地址,并将计算出的结果传递给比较相减模块;
中间值存放模块:用于存放进行比较相减运算所需要的中间值,并将存放的结果传递给比较相减模块,该中间值初始化为0;
比较相减模块:用于通过加法器、减法器和控制逻辑,利用中间值存放模块传递过来的中间值,将根据质整数地址获得模块传递过来的地址所查询到的质数进行取模运算,并将计算的结果依次传递给最小质整数数组RAM
最小质整数数组RAM:用于依次存放比较相减模块传递过来的计算结果,并将该计算结果作为最小质整数数组的最终计算结果。
所述列号选择数组计算模块又包括如下模块:
累加比较相减模块:用于根据根v的值,通过寄存器进行累加计算,然后将累加计算的结果和参数p的值,通过加法器、减法器和控制逻辑进行比较相减运算,并把计算的结果传递给中间结果RAM。
中间结果RAM:用于从地址0开始,依次存放累加比较相减模块传递过来的计算结果。
递推查找模块:用于从地址0开始,查找中间结果RAM中存放的计算结果,然后调用递推公式,依次以前一次查找的计算结果减一所得到的值做为地址,查找中间结果RAM中存放的计算结果,并将查找的计算结果依次传递给最终结果RAM。
最终结果RAM:用于依次存放递推查找模块传递过来的计算结果,并将该计算结果作为SI数组的最终计算结果。
所述交织地址计算模块又包括如下模块:
行号转换模块:用于根据基本参数确定模块传递过来的交织矩阵的基本参数,通过查表的方式进行交织矩阵的行号的转换,并将转换的结果传递给交织地址确定模块。
列号转换模块:用于根据交织矩阵的基本参数,利用存放在最小质整数数组RAM中的最小质整数数组和存放在最终结果RAM中的列号选择数组,进行交织矩阵的列号的转换,并将转换的结果传递给交织地址确定模块。
交织地址确定模块:用于根据行号转换模块、列号转换模块所传递过来的交织前的行号和列号,计算出交织前的交织地址,并将计算出的结果存放在RAM中。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (14)
1、一种Turbo码交织地址的计算方法,其特征在于,包括:
A、根据输入码块长度确定交织矩阵的基本参数;
B、根据所述交织矩阵的基本参数,利用加法器、减法器和控制逻辑计算出交织矩阵的列号选择数组和最小质整数数组;
C、利用所述列号选择数组和最小质整数数组,计算出Turbo码交织地址。
2、根据权利要求1所述一种Turbo码交织地址的计算方法,其特征在于,所述的基本参数包括:
交织矩阵的行数R和列数C、质数p、根v、特殊行和列转换标记p_rel。
3、根据权利要求2所述一种Turbo码交织地址的计算方法,其特征在于,所述的特殊行和列转换标记p_rel包括:
如果C=p-1,则p_rel=0;
如果C=p,则p_rel=1;
如果C=p+1,输入码块长度K!=R*C,则p_rel=2;
如果C=p+1,K=R*C,则p_rel=3。
4、根据权利要求2所述一种Turbo码交织地址的计算方法,其特征在于,所述的步骤B进一步包括:
B1、对所述根v进行累加;
B2、如果所述累加的值大于质数p,则将累加的值-p的值按照地址从小到大依次存进缓存;否则,将累加的值按照地址从小到大依次存进缓存;
B3、按照第一个地址查询出所述缓存中所存的值,以所查询出的值作为地址再去查询所述缓存中所存的值,依次以前一次查询出的值作为地址再去查询所述缓存中所存的值,并将每次查询出的值组成列号选择数组。
5、根据权利要求2或4所述一种Turbo码交织地址的计算方法,其特征在于,所述的步骤B包括:
B4、根据所述交织矩阵的质数p和交织矩阵的行数R,从现有质数中从小到大依次选择出预定数量的和p-1的最大公约数为1的质数;
B5、设置一个中间值,该中间值初始化为0;
B6、如果所述选择出的质数大于中间值+(p-1),则记录选择出的质数-中间值-(p-1)的值,并把中间值累加p-1;否则,记录选择出的质数-中间值的值,中间值保持不变;
B7、依次将所记录的值组成最小质整数数组。
6、根据权利要求5所述一种Turbo码交织地址的计算方法,其特征在于,所述的步骤B4包括:
B41、选择大于6的前21个质数组成一个质数表;
B42、从所述质数表中从小到大依次读出质数,并依次记录所读出的质数中和p-1的最大公约数不为1的质数的位置;
B43、将所述记录的和p-1的最大公约数不为1的质数的位置、质数p和根v组成一个最小质数组剔除质数的位置表;
B44、根据所述最小质数组剔除质数的位置表和交织矩阵的行数R,从所述质数表中依次读出预定数量的和p-1的最大公约数为1的质数。
7、根据权利要求1所述一种Turbo码交织地址的计算方法,其特征在于,所述的步骤C进一步包括:
C1、根据所述交织矩阵的基本参数,进行交织矩阵行号的转换;
C2、利用所述计算出的列号选择数组和最小质整数数组,进行交织矩阵列号的转换;
C3、根据所述转换后的行号和列号,计算出Turbo码交织地址。
8、根据权利要求7所述一种Turbo码交织地址的计算方法,其特征在于,所述的步骤C2进一步包括:
C21、利用加法器对所述最小质整数数组中的质数进行步长为1的累加;
C22、利用减法器和控制逻辑对所述累加的值进行p-1的取模运算;
C23、以所述取模运算的结果作为地址,查询所述列号选择数组中的值,并将所查询出来的值作为转换后的列号,进行交织矩阵列号的转换。
9、根据权利要求7或8所述一种Turbo码交织地址的计算方法,其特征在于,所述的步骤C2还包括:
根据所述特殊行和列转换标记、所交织的数据的行数row_cnt和所交织的数据的列数col_cnt,进行交织矩阵特殊列号的转换。
10、根据权利要求9所述一种Turbo码交织地址的计算方法,其特征在于,所述的步骤C2进一步包括:
如果p_c_rel=1,col_cnt=p或者p_c_rel=2,col_cnt=p-1或者p_c_rel=3,col_cnt=p-1,则转换后的列号为0;
如果p_c_rel=2,col_cnt=p或者p_c_rel=3,col_cnt=p,row_cnt!=0或者p_c_rel=3,col_cnt=0,row_cnt=0,则转换后的列号为p;
如果p_c_rel=3,col_cnt=p,row_cnt=0,则转换后的列号为1;
如果p_c_rel=0,则转换后的列号为列号选择数组的输出值减去1的值。
11、一种Turbo码交织器,其特征在于,包括:
基本参数计算电路:用于根据码块长度计算包括交织矩阵的根参数和质数参数的基本参数,并将计算出的参数分别传递给列号选择数组计算电路、最小质整数数组计算电路和交织地址计算电路;
最小质整数数组计算电路:用于根据基本参数确定电路传递过来的交织矩阵的基本参数,利用加法器、减法器和控制逻辑计算出符合最小质整数挑选条件的质数数组,并将计算出的结果存放在随机存取存储器RAM中;
列号选择数组计算电路:用于根据基本参数确定电路传递过来的交织矩阵的基本参数,利用加法器、减法器和控制逻辑计算出转换前的交织矩阵列号的选择数组,并将计算出的结果存放在RAM中;
交织地址计算电路:用于根据基本参数确定电路传递过来的交织矩阵的基本参数,利用存放在RAM中的最小质整数数组和列号选择数组的值,计算出交织地址,并将计算出的交织地址存放在RAM中。
12、根据权利要求11所述一种Turbo码交织器,其特征在于,所述的最小质整数数组计算电路包括:
质整数地址获得电路:用于根据交织矩阵的质数参数,计算出符合最小质整数挑选条件的质数的地址,并将计算出的结果传递给比较相减电路;
中间值存放电路:用于存放取模运算的中间值,并将存放的结果传递给比较相减电路;
比较相减电路:用于通过加法器、减法器和控制逻辑,利用中间值存放电路传递过来的中间值,将根据质整数地址获得电路传递过来的地址所查询到的质数进行取模运算,并将计算的结果依次传递给最小质整数数组RAM;
最小质整数数组RAM:用于依次存放比较相减电路传递过来的计算结果,并将该计算结果作为最小质整数数组的最终计算结果。
13、根据权利要求11所述一种Turbo码交织器,其特征在于,所述的列号选择数组计算电路包括:
累加比较相减电路:用于通过加法器进行交织矩阵的根参数的累加计算,然后通过加法器、减法器和控制逻辑对累加的结果进行质参数的取模运算,并把计算的结果传递给中间结果RAM;
中间结果RAM:用于按照从小到大的地址依次存放累加比较相减电路传递过来的计算结果;
递推查找电路:用于从第一个地址开始,查找中间结果RAM中存放的计算结果,然后依次以前一次查找到的计算结果做为地址,查找中间结果RAM中存放的计算结果,并将查找到的计算结果依次传递给最终结果RAM;
最终结果RAM:用于依次存放递推查找电路传递过来的计算结果,并将该计算结果作为列号选择数组的最终计算结果。
14、根据权利要求11、12或13所述一种Turbo码交织器,其特征在于,所述的交织地址计算电路包括:
行号转换电路:用于根据交织矩阵的基本参数,通过查表的方式进行交织矩阵的行号的转换,并将转换的结果传递给交织地址确定电路;
列号转换电路:用于根据交织矩阵的基本参数,利用存放在最小质整数数组RAM中的最小质整数数组和存放在最终结果RAM中的列号选择数组,进行交织矩阵的列号的转换,并将转换的结果传递给交织地址确定电路;
交织地址确定电路:用于根据行号转换电路、列号转换电路所传递过来的转换后的行号和列号,计算出交织地址,并将计算出的结果存放在RAM中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100665260A CN100525118C (zh) | 2005-04-27 | 2005-04-27 | Turbo码交织地址的计算方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100665260A CN100525118C (zh) | 2005-04-27 | 2005-04-27 | Turbo码交织地址的计算方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1855735A true CN1855735A (zh) | 2006-11-01 |
CN100525118C CN100525118C (zh) | 2009-08-05 |
Family
ID=37195634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100665260A Expired - Fee Related CN100525118C (zh) | 2005-04-27 | 2005-04-27 | Turbo码交织地址的计算方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100525118C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102316059A (zh) * | 2010-07-05 | 2012-01-11 | 中国科学院微电子研究所 | 一种ofdm系统的交织方法和装置 |
CN102412850A (zh) * | 2010-09-25 | 2012-04-11 | 中兴通讯股份有限公司 | Turbo码并行交织器及其并行交织方法 |
-
2005
- 2005-04-27 CN CNB2005100665260A patent/CN100525118C/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102316059A (zh) * | 2010-07-05 | 2012-01-11 | 中国科学院微电子研究所 | 一种ofdm系统的交织方法和装置 |
CN102412850A (zh) * | 2010-09-25 | 2012-04-11 | 中兴通讯股份有限公司 | Turbo码并行交织器及其并行交织方法 |
CN102412850B (zh) * | 2010-09-25 | 2014-02-05 | 中兴通讯股份有限公司 | Turbo码并行交织器及其并行交织方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100525118C (zh) | 2009-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1175579C (zh) | 编码器 | |
CN1118140C (zh) | 处理单元和处理方法 | |
CN1171391C (zh) | 交错方法、交错装置、涡轮编码方法以及涡轮编码装置 | |
CN1836394A (zh) | 在移动通信系统中编码/解码块低密度奇偶校验码的装置和方法 | |
CN1692557A (zh) | 编码设备、编码方法、编码程序、解码设备、解码方法、和解码程序 | |
CN1618175A (zh) | 用于对数据比特并行编码的方法和装置 | |
CN1159854C (zh) | 交织地址生成装置及其方法 | |
CN1144378C (zh) | 卷积码软输出解码装置和软输出解码方法 | |
CN1630204A (zh) | 具有矩阵转换技术的循环冗余码计算方法及系统 | |
CN1297617A (zh) | 用于通信系统的交织/解交织设备和方法 | |
CN1659785A (zh) | 信号多速率点阵矢量量化的方法和系统 | |
CN1601654A (zh) | 半导体非易失性存储器装置 | |
CN1330455A (zh) | Turbo(涡轮)码的译码电路和编码译码电路 | |
CN101047393A (zh) | 一种产生交织器/解交织器的方法及其应用 | |
CN1276588C (zh) | 在通信系统中生成代码的设备和方法 | |
CN1021004C (zh) | 在剩余数系统中用于编码和译码数据的方法和装置 | |
CN1427548A (zh) | 迭代链接码解码电路以及使用该电路的编码/解码系统 | |
CN1173480C (zh) | 维特比解码器和传输设备 | |
CN1577250A (zh) | 用于实现2的幂的浮点估计的系统与方法 | |
CN1154238C (zh) | 交织地址生成装置及交织地址生成方法 | |
CN1269680A (zh) | 交织器装置以及用于交织数据集的方法 | |
CN1855735A (zh) | Turbo码交织地址的计算方法和装置 | |
CN1493110A (zh) | 特播解码器、特播解码方法以及存储该方法的存储介质 | |
CN1268810A (zh) | 解码设备 | |
CN1841982A (zh) | 一种高速译码芯片 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090805 Termination date: 20150427 |
|
EXPY | Termination of patent right or utility model |