CN100477538C - 一种Turbo码交织器 - Google Patents

一种Turbo码交织器 Download PDF

Info

Publication number
CN100477538C
CN100477538C CNB2004100803980A CN200410080398A CN100477538C CN 100477538 C CN100477538 C CN 100477538C CN B2004100803980 A CNB2004100803980 A CN B2004100803980A CN 200410080398 A CN200410080398 A CN 200410080398A CN 100477538 C CN100477538 C CN 100477538C
Authority
CN
China
Prior art keywords
address
output
input
row
module
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
CNB2004100803980A
Other languages
English (en)
Other versions
CN1756091A (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.)
China Potevio Co ltd
Petevio Institute Of Technology Co ltd
Original Assignee
Potevio Institute of Technology Co Ltd
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 Potevio Institute of Technology Co Ltd filed Critical Potevio Institute of Technology Co Ltd
Priority to CNB2004100803980A priority Critical patent/CN100477538C/zh
Publication of CN1756091A publication Critical patent/CN1756091A/zh
Application granted granted Critical
Publication of CN100477538C publication Critical patent/CN100477538C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种Turbo码交织器,所述交织器包括初始化模块,计算模块,以及,包含有控制电路和用于存储有效交织地址的缓存器的缓存模块,来自外部的时钟信号分别送至上述模块;本发明以硬件电路实现协议中规定的交织算法,解决了现有技术中查表方式进行交织的缺点,使得交织器具有一定的灵活性。

Description

一种Turbo码交织器
技术领域
本发明涉及移动通信中的交织技术,具体地说,涉及一种Turbo码交织器。
背景技术
Turbo码交织器是Turbo编译码器的重要组成部分,Turbo码具有的优异性能,其根本原因在于Turbo码的实现方案中,交织器实现了伪随机性。在发送端,其伪随机性通过编码器以及并行级联方式来实现;在译码端,则利用具有软输入/软输出特性的交织器的反馈迭代译码来实现。可见,交织器是非常重要的,其性能直接影响Turbo码的性能。3GPP(第三代移动通信伙伴计划)协议给出了一种不规则交织的算法,这种交织器算法非常复杂而且随交织块长度的不同其算法也不同。
按照3GPP规定,Turbo码的交织包括比特输入矩阵,矩阵的行内交换和行间交换,矩阵中的比特输出时将原来不存在的比特删除。以下说明协议中有关Turbo码的交织过程。
设Turbo码的交织输入比特记为x1,x2,x3,...,xK,K是输入的比特数机交织长度,并且40≤K≤5114。Turbo码交织的输入比特序列xk按如下步骤写入矩阵。
(1)确定矩阵的行数R:
R = 5 , if ( 40 ≤ K ≤ 159 ) 10 , if ( ( 160 ≤ K ≤ 200 ) or ( 481 ≤ K ≤ 530 ) ) 20 , if ( K = anyothervalue )
矩阵的行数由上到下记为0,1,2,...,R-1。
(2)确定矩阵的列数C:
C = p , p = 53 , if ( 481 &le; K &le; 530 ) p - 1 , if ( K &le; R &times; ( p - 1 ) ) p , if ( R ( p - 1 ) < K &le; R &times; ( p - 1 ) ) p + 1 , if ( K > R &times; p )
其中,p为素数。矩阵的列数从左到右记为0,1,2,...,C-1。
(3)将比特序列xk一行一行的写入R×C矩阵,比特x1在0行的0列上:
x 1 x 2 x 3 &CenterDot; &CenterDot; &CenterDot; x C x ( C + 1 ) x ( C + 2 ) x ( C + 3 ) &CenterDot; &CenterDot; &CenterDot; x 2 C &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; x ( ( R - 1 ) C + 1 ) x ( ( R - 1 ) C + 2 ) x ( ( R - 1 ) C + 3 ) &CenterDot; &CenterDot; &CenterDot; x RC
比特输入R×C矩阵后,矩阵的行间交换和行内交换按以下算法进行:
(1)从表1选择原根v
(2)构造行内交换基本序列s(i)
s(i)=[v×s(i-1)]modp,i=1,2,...,(p-2),ands(0)=1。
其中i为矩阵列序号。
(3)以q0=1为{qj}中的第一个素数,按下式选择连续的最小素数{qj}(j=1,2,...,R-1,为矩阵行序号):
g.c.d{qj,p-1}=1,qj>6,qj>q(j-1),其中g.c.d.是最大公约数。
(4)变换{qj}得到交换素数{rj}
rT(j)=qj,j=0,1,...,R-1,
其中T(j)(j=0,1,2,...,R-1)是行间交换模式,由下式确定的四种行间交换模式之一:Pat1,Pat2,Pat3和Pat4
{ T ( 0 ) , T ( 1 ) , T ( 2 ) , . . . , T ( R - 1 ) } = Pat 4 if ( 40 &le; K &le; 159 ) Pat 3 if ( 160 &le; K &le; 200 ) Pat 1 if ( 201 &le; K &le; 480 ) Pat 3 if ( 481 &le; K &le; 530 ) Pat 1 if ( 531 &le; K &le; 2280 ) Pat 2 if ( 2281 &le; K &le; 2480 ) Pat 1 if ( 2481 &le; K &le; 3160 ) Pat 2 if ( 3161 &le; K &le; 3210 ) Pat 1 if ( 3211 &le; K &le; 5114 )
Pat1,Pat2,Pat3和Pat4分别如下:
Pat1:{19,9,14,4,0,2,5,7,12,18,10,8,13,17,3,1,16,6,15,11}
Pat2:{19,9,14,4,0,2,5,7,12,18,16,13,17,15,3,1,6,11,8,10}
Pat3:{9,8,7,6,5,4,3,2,1,0}
Pat4:{4,3,2,1,0}
(5)第j个(j=0,1,2,...,R-1)行内交换如下:
a.如果C=p,那么
Uj(i)=s([i×rj]mod(p-1)),i=0,1,2,...,(p-2),andUj(p-1)=0,
其中Uj(i)是第j行经过行内变换后的第i个输出的输入比特的位置。
b.如果C=p+1,那么
Uj(i)=s([i×rj]mod(p-1)),i=0,1,2,...,(p-2),Uj(p-1)=0,andUj(p)=p,
其中Uj(i)是第j行经过行内变换后的第i个输出的输入比特的位置,并且如果K=C×R,那么交换UR-1(p)和UR-1(0)的位置。
c.如果C=p-1,那么
Uj(i)=s([i×rj]mod(p-1))-1,i=0,1,2,...,(p-2),
Uj(i)是第j行经过行内交换以后的第i个输出的输入比特的位置。
(6)基于模式T(j)(j=0,1,2,...,R-1)进行行间交换,T(j)是第j个交换行的原始位置。
  p   v   p   v   p   v   p   v   p   v
  7   3   47   5   101   2   157   5   223   3
  11   2   53   2   103   5   163   2   227   2
  13   2   59   2   107   2   167   5   229   6
  17   3   61   2   109   6   173   2   233   3
  19   2   67   2   113   3   179   2   239   7
  23   5   71   7   127   3   181   2   241   7
  29   2   73   5   131   2   191   19   251   6
  31   3   79   3   137   3   193   5   257   3
  37   2   83   2   139   2   197   2
  41   6   89   3   149   2   199   3
  43   3   97   5   151   6   211   2
表1:素数p和相关的原根v
经过行内和行间交换,矩阵的比特记为y′k
y &prime; 1 y &prime; ( R + 1 ) y &prime; ( 2 R + 1 ) &CenterDot; &CenterDot; &CenterDot; y &prime; ( ( C - 1 ) R + 1 ) y &prime; 2 y &prime; ( R + 2 ) y &prime; ( 2 R + 2 ) &CenterDot; &CenterDot; &CenterDot; y &prime; ( ( C - 1 ) R + 2 ) &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; y &prime; R y &prime; 2 R y &prime; 3 R &CenterDot; &CenterDot; &CenterDot; y &prime; CR
Turbo码交织的输出比特是将经过行内和行间交换的矩阵R×C按列依次输出,起始比特y′1在0列的0行,结束比特y′CR在C-1列的R-1行。输出时,将输入序列中不存在的比特去掉,也就是说,对应于x′k的比特y′k,如果经过行内和行间交换矩阵中有k>K的比特y′k,则在输出时要去掉。交织后的输出记为x′1,x′2,...,x′K,x′1对应于经过整理的y′k,k是最小序号,x′2对应于经过整理的y′k,k是次小序号。交织的输出比特数为K,需要删除的比特数为R×C-K。
上述协议规定的交织算法,在实际的编译码应用中,通常预先根据交织算法生成交织表,通过查表获得用于交织的输入比特和输出比特位置的对应关系,以省去交织过程中复杂的算法。例如,一种方案是,按照协议中规定的所有交织长度,为某些交织长度特别值建立输入比特和输出比特位置的对应关系的位置表,即基本表或交织表,比如分别建立交织长度为40比特、50比特、55比特等的位置表,一般包括220个,进行交织时首先根据交织长度选择对应的位置表,然后根据位置表查找当前输入比特对应的输出比特的位置;另一种方案是,预先估计需要提供的业务类型和交织长度,根据交织长度建立位置表,以减少交织表的存储量,进行交织时直接根据位置表查找当前输入比特对应的输出比特的位置。
无论采用何种方式建立交织表,这种通过查表实现交织的方式在一定程度上可以减少交织算法的运算量,但当交织表的存储量很大,由此所需的查找运算量和查找时间也很大,并且非常不利于硬件的实现。
发明内容
有鉴于此,本发明的目的在于提供一种Turbo码交织器,以用硬件电路实现协议中规定的交织算法,避免现有技术中通过查表方式实现交织的缺点。
本发明的交织器通过以下技术方案实现:
一种Turbo码交织器,其特征在于,所述交织器包括初始化模块,计算模块,以及,包含有控制电路和用于存储有效交织地址的缓存器的缓存模块,来自外部的时钟信号分别送至上述模块,其中,
初始化模块接收到来自外部的初始化启动信号后,根据当前业务的交织长度从外部存储器读取比特输入矩阵的行数、列数、素数和原根,根据读取的上述参数计算当前业务的所有行内交换基本序列并存储,向外部输出初始化结束标志,且向计算模块输出包括交织长度、行数、列数以及素数的参数组和用于读取行内交换模式和交换素数的基地址;
计算模块接收到外部模块根据初始化模块输出的初始化结束标志而产生的启动信号后,根据当前行序号和初始化模块输出的基地址,计算用于读取存储于外部存储器的读取行内交换模式和交换素数的读地址,根据读地址读取行内交换模式和交换素数,并读取来自外部的正逆序标志以及存储于初始化模块中的行内交换基本序列,根据读取的行内交换模式、交换素数以及行内交换基本序列,按列数和素数的关系,选择以下公式计算比特输入矩阵的第j行第i列对应的交织地址:
如果列数和素数相等,则
intterleaver _ address = T ( j ) * C + s ( ( i * r T ( j ) ) mod ( p - 1 ) ) , [ i = 0 , . . . , p - 2 ; j = 0 , . . . , R - 1 ] T ( j ) * C , [ i = p - 1 ; j = 0 , . . . , R - 1 ] - - - ( a )
如果列数等于素数与1之和,则将交织长度与比特输入矩阵的行数和列数之积进行比较,如果不相等,则按式(b)计算,如果相等,则按式(c)计算,
intterleaver _ address = T ( j ) * C + s ( ( i * r T ( j ) ) mod ( p - 1 ) ) , [ i = 0 , . . . , p - 2 ; j = 0 , . . . , R - 1 ] T ( j ) * C , [ i = p - 1 ; j = 0 , . . . , R - 1 ] T ( j ) * C + p , [ i = p ; j = 0 , . . . R - 1 ] - - - ( b )
intterleaver _ address = T ( j ) * C + p , [ i = 0 ; j = 0 , . . . , R - 1 ] T ( j ) * C + s ( ( i * r T ( j ) ) mod ( p - 1 ) ) , [ i = 1 , . . . , p - 2 ; j = 0 , . . . , R - 1 ] T ( j ) * C , [ i = p - 1 ; j = 0 , . . . , R - 1 ] T ( j ) * C + 1 , [ i = p ; j = 0 , . . . R - 1 ] - - - ( c )
如果列数等于素数与1之差,则
intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1))-1,[i=0,...,p-2;j=0,...,R-1](d)
其中,T(j)为行间交换模式,C为比特输入矩阵的列数,R为比特输入矩阵的行数,p为素数,s((i*rT(j)mod(p-1))为行内交换的基本序列,rT(j)为交换素数;
所述计算模块在计算交织地址后,将有效交织地址标志、计算出的交织地址以及开始存储控制信号输出至缓存模块中的控制电路;
缓存模块中的控制电路根据来自外部的所述启动信号、开始存储控制信号以及有效交织地址标志,向用于存储有效交织地址的缓存器输出写使能信号,并输出写地址和读地址至所述缓存器;缓存器受控制电路的控制,将来自计算模块输出的交织地址中的有效交织地址写入,并按照外部模块的读时序要求输出缓存于所述缓存器的交织地址。
本发明在对3GPP Turbo交织算法进行研究的基础上找出其中的规律,针对列数与素数、交织长度与列数与行数之积的关系的几类情况,给出交织前后地址的映射关系,极大地节省了存储空间,优化了交织算法。根据上述交织地址的计算规律以及Turbo编译码器的时序要求,从而对交织器的硬件电路进行了设计,提出了其硬件实现方案。相对于现有技术中以查表进行交织的方式而言,本发明提供的交织器,由于其参数可以通过设置以适应不同业务的需要,因此具有一定的灵活性,且占用的存储空间少;并且通过正逆序标志对交织器中计算模块的控制,使得交织地址的正序计算和逆序计算可共用同一个硬件结构,更适合于Turbo码编译码算法的硬件实现,尤其是ASIC实现。
附图说明
图1a和图1b为计算正序交织地址的流程图。
图2示出了Turbo码交织器的总体框图。
图3示出了计算模块硬件原理图。
图4为乘除法运算流水线示意图。
图5示出了缓存模块电路原理图。
图6为交织器输入输出的时序关系图。
图7为写时序和读时序相同时缓存模块电路原理图。
具体实施方式
本发明通过对3GPP协议规定的交织方法的总结和归纳,得到在不同交织长度下,比特输入矩阵中各比特在交织后所对应的输出比特序列中的位置,即,得到交织前后地址的映射关系。具体方法如下:
首先,根据当前比特输入矩阵中矩阵列数选择相应的计算式,计算矩阵中第j行第i列的输入比特对应的输出比特序列中的位置,即交织地址;
(1)当C=p时,
intterleaver _ address = T ( j ) * C + s ( ( i * r T ( j ) ) mod ( p - 1 ) ) , [ i = 0 , . . . , p - 2 ; j = 0 , . . . , R - 1 ] T ( j ) * C , [ i = p - 1 ; j = 0 , . . . , R - 1 ]
(2)当C=p+1时
a.若K≠C×R
intterleaver _ address = T ( j ) * C + s ( ( i * r T ( j ) ) mod ( p - 1 ) ) , [ i = 0 , . . . , p - 2 ; j = 0 , . . . , R - 1 ] T ( j ) * C , [ i = p - 1 ; j = 0 , . . . , R - 1 ] T ( j ) * C + p , [ i = p ; j = 0 , . . . R - 1 ]
b.若K=C×R
intterleaver _ address = T ( j ) * C + p , [ i = 0 ; j = 0 , . . . , R - 1 ] T ( j ) * C + s ( ( i * r T ( j ) ) mod ( p - 1 ) ) , [ i = 1 , . . . , p - 2 ; j = 0 , . . . , R - 1 ] T ( j ) * C , [ i = p - 1 ; j = 0 , . . . , R - 1 ] T ( j ) * C + 1 , [ i = p ; j = 0 , . . . R - 1 ]
(3)当C=p-1时
intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1))-1,[i=0,...,p-2;j=0,...,R-1]
然后,比较计算的交织地址与交织长度,如果交织地址大于交织长度,则去掉该交织地址。
图1a和图1b为计算正序交织地址的流程图。从流程图可见,计算以i作为外循环(i=0,...,C-1),以j作为内循环(j=0,...,R-1),对第(2)种情况,即C=p+1,当K=C×R时,是一种特殊情况,在3GPP协议中规定要将UR-1(p)和UR-1(0)的位置进行交换,而在本发明中通过计算公式可以得到。如果计算逆序交织地址,只需在初始化时将行序号和列序号分别设为R-1和C-1,流程中行序号和列序号按递减变化。
上述交织地址的计算方法可采用硬件电路实现。参见图2所示,图2示出了Turbo码交织器的总体框图,包括初始化模块、交织地址计算模块、以及用于进行输入输出速率转换的缓存模块,该缓存模块包含有控制电路和用于存储有效交织地址的缓存器。其中,
初始化模块收到初始化启动信号start_ini后,根据外部模块送来的当前交织长度、业务参数表索引地址,从交织器外部的第一ROM存储器中读取包括素数p、原根v、以及比特输入矩阵列数C、行数R的参数组,并送至计算模块;根据协议标准按读取的参数计算当前业务的所有行内交换基本序列s(i),并存入初始化模块中的RAM,其中,当C=p-1时,将计算得到的s(i)的值减1后存入初始化模块中的RAM;当行内交换基本序列计算完毕后,向交织器外部模块输出初始化结束标志flag;将基地址送至计算模块;
当外部模块收到初始化结束标志后,向计算模块和缓存模块中的控制电路发送启动信号start_cp,同时,计算模块读取来自外部的正逆序标志up_down,以确定是按正序还是按逆序计算交织地址;计算模块从交织器外部的第二ROM存储器中读取行间交换模式T(j)和交换素数rT(j),根据初始化模块中RAM存储的行内交换基本序列s(i)、读取的T(j)和rT(j)、以及来自初始化模块的参数组,按C与p的关系选择相应的计算公式计算输出序列的交织地址,并向缓存模块输出该交织地址以及控制信号,其中控制信号包括开始存储控制信号start_save以及有效交织地址标志valid_flag;
缓存模块的控制电路在来自外部的所述启动信号、开始存储控制信号以及有效交织地址标志的控制下,向用于存储有效交织地址的缓存器输出写使能信号,将计算出的交织地址中的有效地址写入缓存器,缓存器在读时序的控制下输出写入的交织地址;并在写时序和外部模块的读时序不相同时,如果写地址等于写地址阈值,则向计算模块输出停止计算信号stop_work有效以停止交织地址的计算,并停止写操作,如果读地址等于读地址阈值,则向计算模块输出停止计算信号stop_work无效,以启动交织地址的计算并启动写操作。
以下以Turbo码编译码器要求交织器每4个时钟周期输出一个交织地址为例,描述上述各模块的电路原理。
参见图3所示,图3示出了计算模块硬件原理图。来自缓存模块的停止计算信号stop_work以及外部的start_cp信号送至具有三个状态的第一状态机的使能端,所述状态机实质为3进制的计数器。当stop_work信号无效且start_cp信号有效时,第一状态机开始计数输出,以向计算模块中行计数器、列计数器、各锁存器、以及输出延迟单元提供时钟信号。地址计算单元根据来自初始化模块的基地址和行计数器输出的行序号j,计算行间交换模式T(j)和交换素数rT(j)对应的存储地址,向第二ROM存储器的读地址端输出该地址,第二存储器根据读地址查找对应的行间交换模式T(j)和交换素数rT(j),分别输出至第一乘法器和第二乘法器,其中第一乘法器计算列数C与行间交换模式T(j)的乘积后输出到第一锁存器,第二乘法器计算交换素数rT(j)与列计数器输出的列序号i的乘积后,输出到第二锁存器。第二锁存器输出至除法器,除法器将第二锁存器的输出与p-1进行模运算,以计算因式(i*rT(j))mod(p-1),除法器输出计算结果至第三锁存器。第三锁存器将该计算结果作为读地址输出至存储了行内交换基本序列s(i)的初始化模块中的RAM,该RAM根据读地址输出该地址对应的行内交换基本序列s(i)至复用器,复用器根据列数C与素数p的关系以及当C=p+1时K与C*R的关系,从复用器的0值、p值、s(i)或1值输入信号中选择满足交织地址计算式的输入信号进行选择性复用,复用后输出至加法器,加法器将来自第一锁存器的计算值与来自复用器的值进行叠加,然后输出至第四锁存器,此时加法器的输出值即为按交织计算公式计算的交织地址。比较器将第四锁存器的输出值和交织长度进行比较,如果第四锁存器的输出值小于等于交织长度,则比较器输出有效交织地址标志valid_flag的有效值至第五锁存器,通过第五锁存器输出,否则,比较器输出有效交织地址标志valid_flag的无效值至第五锁存器。同时,输出延迟单元将来自第四锁存器的交织地址延迟一个时钟周期后输出至缓存模块中的缓存器,即,向缓存模块输出信号cp_output,以使得交织地址的输出与有效交织地址标志valid_flag的输出的时序一致。
在上述计算模块中,各锁存器为了满足交织器的时序要求而引用;行计数器中可以具有分频器,以实现在计算的过程中,以i作为外循环(i=0,...,c-1),以j作为内循环(j=0,...,R-1)计算。来自外部的正逆序标志up_down信号分别输入至行计数器和列计数器的控制端,以控制当进行正序交织地址计算时,行计数器和列计数器采用递增方式计数,当进行逆序交织地址计算时,采用递减方式计数。行计数器和列计数器的输出信号还分别送至控制逻辑,该控制逻辑在计算出交织地址的时序中向缓存模块输出开始存储控制信号start_save。
最核心部分是乘除器的计算,它将决定交织器的工作速度,在本发明中,使用流水线的方法来完成乘除器的运算,一个乘法器和除法器计算一次(i*rT(j))mod(p-1),由于使用第一状态机的状态2来进行锁存、数据的读取,所以乘法和除法的计算都是各用3个时钟周期,乘除法运算的速度均可以满足要求。乘除法运算流水线见图4,这是一个2级流水。采用流水线的方式可以比无流水线方式的速度提高一倍。除法器可以采用EDA综合工具中的库直接生成,不需要自己写VHDL程序,不仅使用方便,而且面积小,功能齐全。
参见图5所示,图5示出了缓存模块电路原理图。其中,用于提供写操作地址控制的3进制第三状态机、用于提供读操作地址控制的4进制的第四状态机、写地址计数器、读地址计数器、与门以及停止计算信号产生模块组成了控制电路。来自外部的启动信号start_cp分别输入至第三状态机和第四状态机的计数使能端,时钟信号分别提供给第三状态机、第四状态机、以及用于缓存交织地址的RAM,来自计算模块的开始存储控制信号start_save、来自计算模块的有效交织地址标志valid_flag、以及第三状态机的输出信号输入至与门进行与逻辑运算后输出到缓存交织地址的缓存器的写使能端。第三状态机的输出信号还输出至写地址计数器,第四状态机的输出信号输出至读地址计数器,从而使得写操作每3个时钟执行一次,读操作每4个时钟执行一次。写地址计数器的输出分别输入到缓存交织地址的缓存器的写地址端和停止计算信号产生模块,读地址计数器的输出分别输入到缓存交织地址的缓存器的读地址端和停止计算信号产生模块。停止计算信号产生模块根据输入的写地址判断当前写地址是否等于设定的写地址阈值,如果是,则向计数模块中的第一状态机的计数使能端输出stop_work有效;根据输入的读地址判断当前读地址是否等于设定的读地址阈值,如果是,则向计数模块中的第一状态机的计数使能端输出stop_work无效。来自计数模块中的输出延迟单元的cp_output输出至缓存交织地址的缓存器的数据端。
从缓存模块的组成可以看出,每三时钟周期向缓存交织地址的缓存器写入一个交织地址,每四个时钟周期从缓存器中读出一个有效交织地址,由于写的速度快,读的速度慢,而存储空间是有限的,并且交织地址的计算是实时的,因此当读写进行到一定程度时,要将计算停下来,待再读出一部分数据后再启动计算,以免交织地址还没有读出来就被覆盖。上述停止计算信号产生模块通过输出stop_work信号来实现读写的控制。
参见图6所示,图6为交织器输入输出的时序关系图。当start_ini信号有效时,初始化模块开始工作,通过输入的参数组,选择当前业务下相应的参数(包括p,v,R,C),并实时计算行内交换基本序列s(i)的值,存贮到初始模块内的RAM中,在初始化结束以后,输出一个初始化结束标志flag,反馈给外部模块;当外部模块接收到flag信号后,向计算模块和缓存模块发出start_cp,同时交织器计算模块读外部送来的正逆序标志up_down,并锁入寄存器中,当up_down=’1’时表示正序,为’0’时表示逆序,于是开始进行交织地址的计算,在start_cp信号有效后的第23个时钟周期开始,每计算出一个交织地址,则输出一个开始存储控制信号start_save。
在计算模块中所计算出的交织地址包括有效交织地址和无效交织地址,每三个时钟周期输出一个交织地址。在缓存模块,每3个时钟周期写入一个有效交织地址,每4个时钟周期读出一个有效交织地址。由于无效地址都在比特输入矩阵的第一行,因此至少每隔20个交织地址才会有1个无效交织地址。
如果缓存模块中的控制电路在写时序和外部模块的读时序相同时,这时图2所示交织器中,将没有停止计算信号反馈至计算模块,而缓存模块的电路原理如图7所示。控制电路包括,写地址计数器、读地址计数器、与门以及第二状态机,其中,来自外部的所述启动信号输入至第二状态机的使能端,所述时钟信号输入至第二状态机的输入,第二状态机的输出分别连至写地址计数器和读地址计数器的输入,并还输入至与门的输入;来自计算模块的有效交织地址标志以及开始存储控制信号输入至与门的输入,与门的输出连至缓存器的写使能端;写地址计数器输出写地址至缓存器的写地址端,读地址计数器输出读地址至缓存器的读地址端。

Claims (6)

1、一种Turbo码交织器,其特征在于,所述交织器包括初始化模块,计算模块,以及,包含有控制电路和用于存储有效交织地址的缓存器的缓存模块,来自外部的时钟信号分别送至上述模块,其中,
初始化模块接收到来自外部的初始化启动信号后,根据当前业务的交织长度从外部存储器读取比特输入矩阵的行数、列数、素数和原根,根据读取的上述参数计算当前业务的所有行内交换基本序列并存储,向外部输出初始化结束标志,且向计算模块输出包括交织长度、行数、列数以及素数的参数组和用于读取行内交换模式和交换素数的基地址;
计算模块接收到外部模块根据初始化模块输出的初始化结束标志而产生的启动信号后,根据当前行序号和初始化模块输出的基地址,计算用于读取存储于外部存储器的读取行内交换模式和交换素数的读地址,根据读地址读取行内交换模式和交换素数,并读取来自外部的正逆序标志以及存储于初始化模块中的行内交换基本序列,根据读取的行内交换模式、交换素数以及行内交换基本序列,按列数和素数的关系,选择以下公式计算比特输入矩阵的第j行第i列对应的交织地址:
如果列数和素数相等,则
intterleaver _ address = T ( j ) * C + s ( ( i * r T ( j ) ) mod ( p - 1 ) ) , [ i = 0 , . . . , p - 2 ; j = 0 , . . . , R - 1 ] T ( j ) * C , [ i = p - 1 ; j = 0 , . . . , R - 1 ] - - - ( 1 )
如果列数等于素数与1之和,则将交织长度与比特输入矩阵的行数和列数之积进行比较,如果不相等,则按式(2)计算,如果相等,则按式(3)计算,
intterleaver _ address = T ( j ) * C + s ( ( i * r T ( j ) ) mod ( p - 1 ) ) , [ i = 0 , . . . , p - 2 ; j = 0 , . . . , R - 1 ] T ( j ) * C , [ i = p - 1 ; j = 0 , . . . , R - 1 ] T ( j ) * C + p , [ i = p ; j = 0 , . . . R - 1 ] - - - ( 2 )
intterleaver _ address = T ( j ) * C + p , [ i = 0 ; j = 0 , . . . , R - 1 ] T ( j ) * C + s ( ( i * r T ( j ) ) mod ( p - 1 ) ) , [ i = 1 , . . . , p - 2 ; j = 0 , . . . , R - 1 ] T ( j ) * C , [ i = p - 1 ; j = 0 , . . . , R - 1 ] T ( j ) * C + 1 , [ i = p ; j = 0 , . . . R - 1 ] - - - ( 3 )
如果列数等于素数与1之差,则
intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1))-1,[i=0,...,p-2;j=0,...,R-1]    (4)
其中,T(j)为行间交换模式,C为比特输入矩阵的列数,R为比特输入矩阵的行数,p为素数,s((i*rT(j)mod(p-1))为行内交换的基本序列,rT(j)为交换素数;
所述计算模块在计算交织地址后,将有效交织地址标志、计算出的交织地址以及开始存储控制信号输出至缓存模块中的控制电路;
缓存模块中的控制电路根据来自外部的所述启动信号、开始存储控制信号以及有效交织地址标志,向用于存储有效交织地址的缓存器输出写使能信号,并输出写地址和读地址至所述缓存器;缓存器受控制电路的控制,将来自计算模块输出的交织地址中的有效交织地址写入,并按照外部模块的读时序要求输出缓存于所述缓存器的交织地址。
2、根据权利要求1所述的交织器,其特征在于,所述缓存模块中的控制电路在写时序与外部模块的读时序不相同时,向计算模块输出控制计算模块计算的停止计算信号。
3、根据权利要求1或2所述的交织器,其特征在于,所述初始化模块包括参数提取模块、计算行内交换基本序列的计算单元、以及存储计算出的行内交换基本序列的存储器,其中,
参数读取模块,接收所述初始化启动信号,读取所述存储于外部存储器中比特输入矩阵的行数、列数、素数和原根,输出读取的素数和原根至计算行内交换基本序列的计算单元,输出所述基地址以及所述参数组至计算模块;
计算行内交换基本序列的计算单元,根据参数读取模块输出的素数和原根计算所述当前业务的所有行内交换基本序列,并输出至存储计算出的行内交换基本序列的存储器;
存储计算出的行内交换基本序列的存储器,在收到来自计算模块的读地址时输出当前行内交换基本序列。
4、根据权利要求3所述的交织器,其特征在于,所述计算模块包括,第一状态机、行计数器、列计数器、地址计算单元、第一乘法器、第二乘法器、除法器、复用器、加法器、比较器、输出延迟单元、控制逻辑、第一锁存器、第二锁存器、第三锁存器、第四锁存器、以及第五锁存器,其中,
所述启动信号输入至第一状态机的使能端,所述第一状态机的输出为行计数器、列计数器、输出延迟单元、以及所述各锁存器分别提供时钟信号,所述时钟信号输入至第一状态机;
所述正逆序标志分别输入至行计数器和列计数器的控制端,行计数器输出行序号至地址计算单元;
所述基地址输入至地址计算单元,地址计算单元根据基地址和行计数计算出所述用于读取行内交换模式和交换素数的读地址,并向所述外部存储器输出该读地址;
来自外部存储器输出的行内交换模式和交换素数分别输入至第一乘法器和第二乘法器,第一乘法器将行数与行内交换模式的乘积输出至第一锁存器,第一锁存器的输出连至比较器的输入;第二乘法器将交换素数与来自列计数器输出的列序号的乘积输出至第二锁存器,第二锁存器的输出连至除法器的输入;
除法器将来自第二锁存器的输出与素数减1之差进行模运算,将运算结果输出至第三锁存器,第三锁存器的输出连至所述存储计算出的行内交换基本序列的存储器的读地址端;
复用器根据列数与素数的关系,选择输入复用器的0值、素数、1值或来自存储计算出的行内交换基本序列的存储器输出的行内交换基本序列进行复用,并向加法器输出;
加法器叠加来自复用器的输出以及来自第一锁存器的输出,并输出交织地址至第四锁存器,第四锁存器的输出分别连至比较器的输入以及输出延迟单元的输入;
比较器比较来自第四锁存器的交织地址与交织长度,如果交织地址大于交织长度,则输出有效交织地址标志至第五锁存器的输入,第五锁存器的输出连至缓存模块中控制电路的输入;
输出延迟单元将来自第四锁存器输出的交织地址延时后输出至缓存模块中的缓存器;
控制逻辑接收分别来自行计数器和列计数器的输出,根据在计算出交织地址的时序中输出开始存储控制信号至缓存模块中控制电路的输入。
5、根据权利要求1所述的交织器,其特征在于,所述控制电路包括,写地址计数器、读地址计数器、与门以及第二状态机,其中,
来自外部的所述启动信号输入至第二状态机的使能端,所述时钟信号输入至第二状态机的输入,第二状态机的输出分别连至写地址计数器和读地址计数器的输入,并还输入至与门的输入;
来自计算模块的有效交织地址标志以及开始存储控制信号输入至与门的输入,与门的输出连至缓存器的写使能端;
写地址计数器输出写地址至缓存器的写地址端,读地址计数器输出读地址至缓存器的读地址端。
6、根据权利要求4所述的交织器,其特征在于,所述控制电路包括,写地址计数器、读地址计数器、与门、第三状态机、第四状态机、以及停止计算信号产生模块,其中,
来自外部的所述启动信号分别输入至第三状态机的使能端和第四状态机的使能端,所述时钟信号分别输入至第三状态机和第四状态机的输入,第三状态机的输出连至写计数器的输入和与门的输入,第四状态机的输出连至读计数器的输入;
来自计算模块的有效交织地址标志以及开始存储控制信号分别输入至与门的输入,与门的输出连至缓存器的写使能端;
写地址计数器输出写地址至缓存器的写地址端以及停止信号产生模块的输入,读地址计数器输出读地址至缓存器的读地址端以及停止计算信号产生模块的输入;
停止计算信号产生模块在输入的写地址等于设置的写地址阈值或输入的读地址等于设置的读地址阈值时,输出停止计算信号至计算模块中第一状态机的使能端。
CNB2004100803980A 2004-09-29 2004-09-29 一种Turbo码交织器 Active CN100477538C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100803980A CN100477538C (zh) 2004-09-29 2004-09-29 一种Turbo码交织器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100803980A CN100477538C (zh) 2004-09-29 2004-09-29 一种Turbo码交织器

Publications (2)

Publication Number Publication Date
CN1756091A CN1756091A (zh) 2006-04-05
CN100477538C true CN100477538C (zh) 2009-04-08

Family

ID=36689096

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100803980A Active CN100477538C (zh) 2004-09-29 2004-09-29 一种Turbo码交织器

Country Status (1)

Country Link
CN (1) CN100477538C (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154957B (zh) * 2006-09-30 2011-02-02 华为技术有限公司 Turbo码交织器及交织地址传输方法
CN104617961B (zh) * 2014-12-30 2018-05-25 中山大学花都产业科技研究院 一种低硬件复杂度的交织器
CN106301393B (zh) * 2016-07-22 2019-09-06 西安空间无线电技术研究所 一种基于Turbo编码的交织地址快速计算方法
CN108880609B (zh) * 2018-06-25 2020-06-30 南京理工大学 基于突发扩频信号的伪码同步方法
CN113381770B (zh) * 2021-06-10 2022-11-04 Oppo广东移动通信有限公司 交织方法、交织器及存储介质

Also Published As

Publication number Publication date
CN1756091A (zh) 2006-04-05

Similar Documents

Publication Publication Date Title
CN100476719C (zh) 密码系统和相关的椭圆曲线运算方法
CN101043284B (zh) 一种宽带码分多址系统中turbo编码器内的交织器
CN101170406B (zh) 双核公钥密码算法运算协处理器的一种实现方法
CN101510781A (zh) 交织和解交织处理中哑元的填充方法和装置及处理系统
CN101438501A (zh) 一种产生交织器/解交织器的方法及其应用
CN101547089A (zh) 集成电路中素数域椭圆曲线密码算法的实现方法
CN100477538C (zh) 一种Turbo码交织器
CN113794572A (zh) 一种高性能椭圆曲线数字签名与验签的硬件实现系统和方法
Reyhani-Masoleh et al. Fast normal basis multiplication using general purpose processors
CN101196964B (zh) 一种抗旁路攻击算法的芯片
CN110022187B (zh) 通信调制系统中(n,n(n-1),n-1)-PGC代数解码方法及解码器
Mera et al. Compact domain-specific co-processor for accelerating module lattice-based key encapsulation mechanism
Mihaljević et al. A cellular automaton based fast one-way hash function suitable for hardware implementation
CN102111163B (zh) Turbo编码器及编码方法
CN109933304B (zh) 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法
Orup et al. A high-radix hardware algorithm for calculating the exponential ME modulo N.
CN102117195B (zh) 大数模乘器电路
Yu et al. Approximate divider design based on counting-based stochastic computing division
CN1592117B (zh) 用于计算交织参数的移动电话、设备、方法和程序
MXPA03002200A (es) Intercalador de modem fdd de tercera generacion.
CN1983824A (zh) 一种实现第二次交织的方法和系统及一种随机存取内存
Reyhani-Masoleh et al. Fast normal basis multiplication using general purpose processors
CN101154957A (zh) Turbo码交织器及交织地址传输方法
CN1773863B (zh) 一种可用于大容量存储器的rs(256,252)码纠错译码芯片
CN103888224A (zh) 一种用于LTE系统Turbo码内交织的并行实现方法及装置

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
ASS Succession or assignment of patent right

Owner name: CHINA POTEVIO COMPANY LIMITED

Free format text: FORMER OWNER: CHINA PUTIAN INSTITUTE OF TECHNOLOGY CO., LTD.

Effective date: 20090417

C41 Transfer of patent application or patent right or utility model
C56 Change in the name or address of the patentee

Owner name: CHINA PUTIAN INSTITUTE OF TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: CHINA PUTIAN INSTITUTE OF TECHNOLOGY

CP03 Change of name, title or address

Address after: No. two North 6 street, Beijing, Haidian District

Patentee after: PETEVIO INSTITUTE OF TECHNOLOGY Co.,Ltd.

Address before: No. two, 2 street, Beijing information industry base

Patentee before: POTEVIO Institute of Information Technology

TR01 Transfer of patent right

Effective date of registration: 20090417

Address after: No. two, 2 street, Zhongguancun science and Technology Park, Beijing, Haidian District

Patentee after: CHINA POTEVIO CO.,LTD.

Address before: No. two North 6 street, Beijing, Haidian District

Patentee before: PETEVIO INSTITUTE OF TECHNOLOGY Co.,Ltd.