2024年10月23日发(作者:厉泓)
(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(21)申请号 CN2.0
(22)申请日 2005.04.27
(71)申请人 华为技术有限公司
地址 518129 广东省深圳市龙岗区坂田华为总部办公楼
(72)发明人 张家佶
(74)专利代理机构 北京凯特来知识产权代理有限公司
代理人 郑立明
(51)
H03M13/27
H03M13/29
H03M13/00
(10)申请公布号 CN 1855735 A
(43)申请公布日 2006.11.01
权利要求说明书 说明书 幅图
(54)发明名称
置
(57)摘要
本发明涉及一种Turbo码交织地址
Turbo码交织地址的计算方法和装
的计算方法和装置,本发明所述方法主要
包括:根据输入码块长度确定交织矩阵的
基本参数;根据所述交织矩阵的基本参
数,利用加法器、减法器和控制逻辑计算
出交织矩阵的列号选择数组和最小质整数
数组;利用所述列号选择数组和最小质整
数数组,计算出Turbo码交织地址。本发
明所述装置主要包括:基本参数计算模
块,最小质整数数组计算模块,列号选择
数组计算模块,交织地址计算模块。利用
本发明所述方法,可以提高交织地址的计
算速度,优化系统逻辑资源的消耗,减小
系统芯片的功耗。
法律状态
法律状态公告日
法律状态信息
法律状态
权 利 要 求 说 明 书
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中。
说 明 书
技术领域
本发明涉及计算机应用领域,尤其涉及一种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。
K>≤>R>×>>(>p>-
>1>)>>>>>>p>>>if
R>×>>(>p>-
>1>)>><>K>≤>R>×>p<
/mi>>>>>>p>+>1>>>if
R>×>p><>K>>> > >
表1:质数表 id="table1"> c> p p p v 3 > entry> ntry> 45 y> y> 2 09 > ntry> entry> 7 > > 241 entry> 2 0 y> 31 ntry> 8 > y> 9 ntry> entry> 10 51 ow> y> 157 w> > y> /entry> > 36 entry> ntry> entry> y> > 5 y> > /entry> ntry> 89 y> ntry> 97 >
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。 K>≤>R>×>>(>p>- >1>)>>>>>>p>>>if R>×>>(>p>- >1>)>><>K>≤>R>×>p< /mi>>>>>>p>+>1>>>if R>×>p><>K>>> > > 根据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和剔除质数位置表 id="table2"> try> 地址 位置(5比 特) 3 ry> 2 entry> 2 y> entry> 3 29 > 31 ntry> 37 > entry> 1 > 12 ntry> 13 > w> ntry> 19 body> y> /entry> > 20 ntry> 6 entry> 3 ry> 137 try> 139 > entry> 33 ntry> 34 w> w> > /entry> > 20 示) ntry> 5 ry> 211 try> 223 > /entry> 47 try> 48 w> w> > /entry> 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中。 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或 替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要 求的保护范围为准。
2024年10月23日发(作者:厉泓)
(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(21)申请号 CN2.0
(22)申请日 2005.04.27
(71)申请人 华为技术有限公司
地址 518129 广东省深圳市龙岗区坂田华为总部办公楼
(72)发明人 张家佶
(74)专利代理机构 北京凯特来知识产权代理有限公司
代理人 郑立明
(51)
H03M13/27
H03M13/29
H03M13/00
(10)申请公布号 CN 1855735 A
(43)申请公布日 2006.11.01
权利要求说明书 说明书 幅图
(54)发明名称
置
(57)摘要
本发明涉及一种Turbo码交织地址
Turbo码交织地址的计算方法和装
的计算方法和装置,本发明所述方法主要
包括:根据输入码块长度确定交织矩阵的
基本参数;根据所述交织矩阵的基本参
数,利用加法器、减法器和控制逻辑计算
出交织矩阵的列号选择数组和最小质整数
数组;利用所述列号选择数组和最小质整
数数组,计算出Turbo码交织地址。本发
明所述装置主要包括:基本参数计算模
块,最小质整数数组计算模块,列号选择
数组计算模块,交织地址计算模块。利用
本发明所述方法,可以提高交织地址的计
算速度,优化系统逻辑资源的消耗,减小
系统芯片的功耗。
法律状态
法律状态公告日
法律状态信息
法律状态
权 利 要 求 说 明 书
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中。
说 明 书
技术领域
本发明涉及计算机应用领域,尤其涉及一种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。
K>≤>R>×>>(>p>-
>1>)>>>>>>p>>>if
R>×>>(>p>-
>1>)>><>K>≤>R>×>p<
/mi>>>>>>p>+>1>>>if
R>×>p><>K>>> > >
表1:质数表 id="table1"> c> p p p v 3 > entry> ntry> 45 y> y> 2 09 > ntry> entry> 7 > > 241 entry> 2 0 y> 31 ntry> 8 > y> 9 ntry> entry> 10 51 ow> y> 157 w> > y> /entry> > 36 entry> ntry> entry> y> > 5 y> > /entry> ntry> 89 y> ntry> 97 >
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。 K>≤>R>×>>(>p>- >1>)>>>>>>p>>>if R>×>>(>p>- >1>)>><>K>≤>R>×>p< /mi>>>>>>p>+>1>>>if R>×>p><>K>>> > > 根据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和剔除质数位置表 id="table2"> try> 地址 位置(5比 特) 3 ry> 2 entry> 2 y> entry> 3 29 > 31 ntry> 37 > entry> 1 > 12 ntry> 13 > w> ntry> 19 body> y> /entry> > 20 ntry> 6 entry> 3 ry> 137 try> 139 > entry> 33 ntry> 34 w> w> > /entry> > 20 示) ntry> 5 ry> 211 try> 223 > /entry> 47 try> 48 w> w> > /entry> 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中。 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或 替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要 求的保护范围为准。