CN1790919A - 一种涡轮码译码器 - Google Patents
一种涡轮码译码器 Download PDFInfo
- Publication number
- CN1790919A CN1790919A CN 200410098700 CN200410098700A CN1790919A CN 1790919 A CN1790919 A CN 1790919A CN 200410098700 CN200410098700 CN 200410098700 CN 200410098700 A CN200410098700 A CN 200410098700A CN 1790919 A CN1790919 A CN 1790919A
- Authority
- CN
- China
- Prior art keywords
- module
- reads
- cycle
- bit
- writes
- 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.)
- Pending
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种Turbo码译码器,包括:主控模块,用于接收译码器外部所提供的控制参数,并向RAM读写控制模块提供该控制参数;定时器模块,用于产生迭代计算所需要的定时信号和状态机,并向内核计算模块发送该定时信号和状态机;交织器模块,用于在收到交织器模块启动信号后产生交织地址,并向RAM读写控制模块提供交织地址;RAM读写控制模块,根据主控模块提供的控制参数、交织器模块提供的交织器地址向内核计算模块提供计算输入,并读写内核计算模块的计算输出和产生交织器模块启动信号;内核计算模块,用于根据定时信号与状态机和计算输入迭代计算出译码结果。本发明所提出的Turbo码译码器没有反馈,逻辑清晰,时序规则,极大地降低了硬件规模。
Description
技术领域
本发明涉及信道编码领域,特别是一种涡轮(Turbo)码译码器。
背景技术
在无线通信系统中,由于传输介质的不均匀性和不稳定性,传输的信号会受到时间扩散、衰落等干扰影响,造成接收的比特有随机性的差错。为了防止信道噪声的干扰影响,需要采用一定的方式来提高信道的传送可靠性和有效性。可以通过增加冗余度的方法来降低误码率。在移动通信系统和卫星通信系统中,纠错码得到了广泛的应用。
具有优异性能的Turbo码是一种纠错能力很强的码,已经成为信道编码领域研究的焦点之一。尽管Turbo码的译码复杂度大于传统的卷积码,但在无线信道低信噪比情况下Turbo码的性能非常优异,因此普遍使用Turbo码作为高速数据业务的编码方式。当前宽带码分多址(WCDMA)系统、码分多址2000(CDMA-2000)系统和时分同步码分多址(TD-SCDMA)系统中,对于高速数据业务的传输均已采用Turbo码。另外,美国国家航空航天局也已经将Turbo码作为今后航天飞机、宇宙飞船和空间站与地球接收站之间通信的标准信道编码技术。
目前有两大类的Turbo码译码算法,一类是基于维特比(Viterbi)算法的改进,属于次最佳算法,其中包括软输出维特比算法(SOVA)和串行列表输出维特比算法(SLVA),另一类是BCJR算法处理后验概率分布的最大后验算法(MAP),以及在对数域的Max-log-MAP算法和log-MAP等算法。在Turbo码译码器中,BCJR算法是目前最常用的MAP算法。
在MAP算法中,译码器输出的软判决信息为对数似然比,如公式(1):
在计算信息比特的后验概率之前,先计算已知有噪信道中的观测y时每个有效的状态转移的后验概率P[si→si+1|y]。由条件概率公式:
由Markov过程的性质,公式(2)的分子部分可以分解为:
P[s1→si+1,y]=α(si)γ(si→si+1)β(si+1) (3)
其中,
α(si)=P[si,(y0,...,yi-1)] (4)
γ(si→si+1)=P[si+1,yi|si] (5)
β(si+1=P[(yi+1,...,yN-1)|si+1] (6)
γ(si→si+1)是与状态转移(si→si+1)相对应的分支转移度量,它可表示为:
γ(si→si+1)
=P[si+1|si]P[yi|si→si+1] (7)
=P[xi]P[yi|ci]
公式(7)的第一项P[xi]可以由前一级迭代得到的先验信息zi计算得到:
公式(7)的第二项P[yi|ci]为调制方式和信道模型的函数,在BPSK或QPSK调制信号慢衰落信道下
其中,α为信号的衰落幅度,ci是与状态转移(si-1→si)相对应的编码器输出符号,对于码率为1/2的分量码编码器
ci∈{(00)′,(01)′,(10)′,(11)′} (10)
概率α(si)可以由如下的前向递推得到:
式中,I为与状态si相连的状态si-1的集合。由于Turbo码的分量码编码器的初始状态为全0,所以公式(11)的初始条件为
类似的,β(si)可以由如下的反向递推得到:
由于第三代移动通信系统中Turbo码的两个分量码译码器都附加了伪比特使译码器最终回到全0状态,所以公式(13)的初始条件为
一旦得到了状态转移的后验概率P[si→si+1|y],由全概率公式可得信息比特的概率为:
其中,S1={si→si+1:xi=1)为信息比特xi为1所对应的状态转移的集合,S0={si→si+1:xi=0)为信息比特xi为0所对应的状态转移的集合。
由公式(1)、(2)、(3)、(15)、(16),对数似然比为:
由于需要进行大量的乘法运算和指数运算,MAP算法非常不适用于硬件实现。Erfanian和Pasupathy最早提出了MAP算法在对数域的简化算法LOG-MAP算法。通过转换到对数域运算,不需要指数运算,同时乘法变成了加法,而加法变成了MAX*运算。
定义MAX*运算如公式(18):
MAX*(X,Y)=log(eX+eY)
=MAX(X,Y)+log(1+e-|X-Y|) (18)
则公式(17)可以改写为:
其中,A、G、B分别对应α、γ、β的对数值,一般,A称为前向累积路径度量,B称为后向累积路径度量,G称为分支转移度量。
由公式(7)、(8)、(9)可得:
Gi-1(si-1,si)=ln P[xi]+ln P[yi|ci]
其中,x(si+1,si)∈{0,1}为与状态转移(si-1→si)相对应的译码器输入,Ci是与状态转移(si-1→si)无关的常数,在计算时可被省略。
对公式(11)、(12)、(13)、(14)两边取对数,得
由此,得到LOG-MAP算法的计算过程包括以下步骤:
第一步:前向递推。由公式(22)初始化A0,由公式(21)递推计算Ai,i=1,...,N-1。
第二步:反向递推。由公式(24)初始化BN,由公式(23)计算Bi,i=N-1,...,0
第三步:由公式(19)计算得到对数似然比Li。
在Turbo码LOG-MAP译码算法中,公式(19)中G称为分支转移度量,其计算式为公式(20)。经推导出可得到一种简化计算方法
Gi(si,si+1)=λi[c(si,si+1)],其中si=0,1,...,2v-1,si+1=0,1,...,2v-1
对于第三代移动通信系统中采用的Turbo码,有:
λi(00)=0,
上式中,λi(00)、λi(01)、λi(10)和λi(11)中的标号分别是用二进制进行表示。如果是十进制表示,分别为λi(0)、λi(1)、λi(2)、λi(3)。
目前现有的Turbo码译码器包括N个分量译码器和N-1个交织器,通过N个分量译码器和N-1个交织器的迭代处理来完成整个译码过程。其中,N个分量译码器中的每个分量译码器都按照相应编码器进行编码的顺序产生数据块中每一个数据的软判信息,N-1个交织器中的每一个交织器都交织来自上一个分量译码器的软判信息,并把被置换软信息块提供给后续分量译码器。因为不同的分量译码器之间有反馈路径,所以造成逻辑复杂和Turbo码译码器硬件规模较大,因此Turbo码译码器硬件的运算速度也受到很大的限制。
发明内容
有鉴于此,本发明的主要目的是提出一种Turbo码译码器,以降低Turbo码译码器的硬件规模。
为达到上述目的,本发明的技术方案是这样实现的:
一种Turbo码译码器,该译码器包括:
主控模块,用于接收译码器外部所提供的译码参数,并向RAM读写控制模块提供该译码参数;
定时器模块,用于产生迭代计算所需要的定时信号和状态机信号,并向内核计算模块发送该定时信号和状态机信号;
交织器模块,用于在收到交织器模块启动信号后产生交织地址,并向RAM读写控制模块提供交织地址;
RAM读写控制模块,产生交织器模块启动信号,并根据主控模块提供的译码参数、交织器模块提供的交织器地址向内核计算模块提供计算输入和读写内核计算模块的计算输出;
内核计算模块,用于根据定时信号与状态机信号和计算输入迭代计算出译码结果。
所述内核计算模块为MAP算法计算模块或Max-log-MAP算法计算模块或log-MAP算法计算模块。
所述RAM读写控制模块进一步连接RAM0、RAM1和RAM2,其中:
RAM0,用于存储反向迭代的累积路径度量β;
RAM1,用于存储变量待译码的系统向量X、分量编码器1输出的校验向量Y、分量编码器2输出的校验向量Y’、上一次迭代的输出的外信息L;
RAM2,存储迭代译码输出的硬判决Z。
所述RAM1包括顺序排列的四部分,其中第一部分存储X向量、第二部分存储Y向量、第三部分存储Y’向量,第四部分存储L向量;
所述第一部分存储X向量为:在第一部分顺序存储译码块的X向量和译码块的网格终止比特X、X’;
所述第二部分存储Y向量为:在第一部分顺序存储译码块的Y向量和译码块的网格终止比特Y;
所述第三部分存储Y’向量为:在第三部分顺序存储译码块的Y’向量和译码块的网格终止比特Y’;
所述第四部分存储L向量为:在第四部分存储译码块的L向量。
所述RAM读写控制模块包括:
Ram_control_adder模块,用于根据从Ram1中读出的X、Y、L计算分支转移度量λ1、λ2和λ3;
Ram_control_ram0模块,用于将Ram0中保存的累积路径度量β发送到内核计算模块,并将内核计算模块计算出的累积路径度量β返回到Ram0;
Ram_control_ram1模块,用于将Ram1读出的X、Y、L送到Ram_control_adder,并将内核计算模块计算出的L发送到Ram1;
Ram_control_ram3模块,用于将内核计算模块计算出的Z发送到Ram3。
所述RAM读写控制模块向内核计算模块提供计算输入,并读写内核计算模块的计算输出为:RAM读写控制模块以复帧为单位向内核计算模块提供计算输入,并读写内核计算模块的计算输出和产生交织器模块启动信号。
所述复帧由4个译码帧frame组成,每个译码帧由N+10个周期cycle组成,其中N表示译码块长度,每个周期包括4个时隙slot,一个slot与一个时钟周期clock cycle对应,其中,第0译码帧为垂直后向迭代,第1译码帧为垂直前向迭代,第2译码帧为水平后向迭代,第3译码帧为水平前向迭代;
对垂直后向迭代:
对于RAM1:从cycle3至cycle5,在每个cycle中的第0slot读Y1,第1slot读X1;从cycle6开始,在每个cycle中的第0slot读Y1,第1slot读X1,第2slot读LL1,第3slot根据读出的Y1,X,LL1计算出λ1、λ2、λ3,并在第3slot末将其锁存输出;第0、1、2、N+5、N+6、N+7、N+8cycle不做操作;
对RAM0:从cycle4开始,在每个cycle中的第0slot写第0到第15比特位,第1slot写第16到第31比特位,第2slot写第32到第47比特位,第3slot写第48到第63比特位;其中,第0、1、2、3、N+7、N+8slot不做操作;
对垂直前向迭代:
对RAM1:
从cycle1开始,在每个cycle中的第0slot读Y1,第1slot读X1,第2slot读LL1,第3slot根据读出的Y1、X、LL1计算出λ1、λ2、λ3,并在第3slot末将其锁存输出;其中第0、(N+1)~(N+8)cycle不读数据;
对RAM0:
从cycle1开始,在每个cycle中的第0slot写第0到第15比特位,第1slot写第16到第31比特位,第2slot写第32到第47比特位,第3slot写第48到第63比特位;其中:第0、(N+1)~(N+8)cycle不做操作;
对水平后向迭代:
对RAM1:
从cycle1至cycle3,在每个cycle中的第0slot读Y0,第1slot读X0,第2slot空操作,第3slot根据读出的Y0,X0计算出λ1、λ2、λ3,并在第3slot末将其锁存输出,
从cycle4开始,在每个cycle中的第0slot读Y0,第1slot读X0,第2slot读LL0,第3slot根据读出的Y0,X0,LL0计算出λ1、λ2、λ3,并在第3slot末将其锁存输出;其中:第0、(N+3)~(N+8)cycle不做操作;
对RAM0:
从cycle2开始,在每个cycle中的第0slot写第0到第15比特位,第1slot写第16到第31比特位,第2slot写第32到第47比特位,第3slot写第48到第63比特位;其中:第0、1、(N+5)~(N+8)cycle不做操作;
对水平前向迭代:
对RAM1:
从cycle1开始,在每个cycle中的第0slot读Y0,第1slot读X0,第2slot读LL0,第3slot根据读出的Y0,X0,LL0计算出λ1、λ2、λ3,并在第3slot末将其锁存输出;其中第0、(N+1)~(N+8)cycle不读数据;
对RAM0:
从cycle1开始,在每个cycle中的第0slot写第0到第15比特位,第1slot写第16到第31比特位,第2slot写第32到第47比特位,第3slot写第48到第63比特位;其中第0、(N+1)~(N+8)cycle不做操作。
所述的主控模块进一步接收译码器启动信号,并启动译码器。
从以上的技术方案可以看出,本发明所提出的Turbo码译码器包括主控模块、定时器模块、交织器模块、RAM读写控制模块和内核计算模块。主控模块负责总体控制和对外接口,RAM读写控制模块负责译码迭代定时和存取控制,内核计算模块负责迭代计算。本发明通过各种模块的功能整合和复用使得不同分量码的译码之间不存在显式的反馈路径,本发明中交织器模块可以完成译码所需的交织/解交织及顺/逆序输出功能,内核计算模块也可以完成正/逆向迭代计算,从而不存在反馈路径,因此本发明所提出的Turbo译码器逻辑清晰,时序规则紧凑,极大地降低了Turbo码译码器的硬件规模。
附图说明
图1为本发明一实施例的Turbo码译码器的结构图。
图2为本发明一实施例的定时器模块的时序图。
图3为本发明一实施例的RAM读写控制模块的结构示意图。
图4为本发明一实施例的RAM读写控制模块在第0译码帧的时序图。
图5为本发明一实施例的RAM读写控制模块在第1译码帧的时序图。
图6为本发明一实施例的RAM读写控制模块在第2译码帧的时序图。
图7为本发明一实施例的RAM读写控制模块在第3译码帧的时序图。
具体实施方式
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。
图1为本发明的Turbo码译码器(下面简称译码器)的结构图。如图1所示,该译码器包括主控模块101、定时器模块102、交织器模块103、RAM读写控制模块104和内核计算模块105。主控模块101用于接收译码器外部所提供的译码参数,并向RAM读写控制模块104提供该译码参数;定时器模块102用于产生迭代计算所需要的定时信号和状态机信号,并向内核计算模块105发送该定时信号和状态机信号;交织器模块103用于在收到交织器模块启动信号后产生交织地址,并向RAM读写控制模块104提供交织地址;RAM读写控制模块104用于产生交织器模块启动信号,并根据主控模块101提供的译码参数、交织器模块103提供的交织器地址向内核计算模块105提供计算输入和读写内核计算模块105的计算输出;内核计算模块105用于根据定时模块102提供的定时信号与状态机信号和RAM读写控制模块104提供的输入迭代计算出译码结果。
主控模块101是译码器的控制部分,它接收译码器外部所提供的控制参数,这些控制参数至少包括译码参数,而译码参数包括译码块长度、迭代次数、待译码数据存放地址。优选地,控制参数包括译码参数和启动译码器信号。主控模块101将这些译码参数锁存在主控模块中,并向RAM读写控制模块104提供该译码参数。主控模块101根据译码参数和译码器内部的状态控制译码器的工作,并在译码结束时产生译码结束信号和向译码器外部上报译码结果。主控模块101和外部接口模块106、定时器模块102、交织器模块103、RAM读写控制模块104连接。主控模块101的操作归结为启动译码器事件和在本次迭代结束时进行译码器未来工作仲裁操作。
当译码器收到外部接口模块106所提供的启动译码器信号后,主控模块101首先初始化译码器,其中包括初始化主控模块101的迭代计数器和主控模块中用于存放待译码数据的RAM读写首地址寄存器组,然后主控模块101启动定时器模块102,至此完成启动译码器的事件。
启动译码器后,当主控模块101收到定时器模块102发出的本次迭代结束信号时,主控模块101开始进行译码器未来工作仲裁操作。首先主控模块101控制迭代计数器进位;然后根据迭代计数器是否等于给定的迭代次数来判断是否本块译码结束,如果是则产生块译码结束信号,否则进行下一次迭代。
定时器模块102、交织器模块103和RAM读写控制模块104组成迭代子系统。主控模块101直接控制该迭代子系统,迭代子系统负责一次迭代当中的所有逻辑控制。主控模块101在启动迭代子系统之前,首先将迭代计算所需要的控制参数锁存到自身相应的寄存器中,这些控制参数包括译码器长度、迭代次数和待译码数据地址。主控模块101通过产生定时器模块启动信号启动迭代子系统。
主控模块101启动迭代控制子系统后,定时器模块102产生一次迭代所需要的迭代定时信号,并给出迭代计算所需的各计数器的计数值,即状态机信号。迭代定时信号和计数器的计数值将作为迭代子系统工作的定时之用。RAM读写控制模块104在迭代定时信号及计数器的计数值的驱动下,根据主控模块101提供的译码参数,向内核计算模块105提供计算输入及读写内核计算模块105的计算输出,同时根据时序需要产生包括交织器模块103的控制信号,其中这些控制信号包括启动交织器模块103的信号和方向信号。
交织器模块103在RAM读写控制模块104给出启动信号后,根据主控模块101提供的参数和RAM读写控制模块104给出的方向信号的指示,正序或逆序产生交织地址,供RAM读写控制模块104使用。本次迭代计算完成时,定时器模块102产生本次迭代结束信号,并将该信号上报主控模块101。
启动信号在各时钟信号有效前有效,为1个时钟宽度的负脉冲信号,启动信号后第2个时钟周期开始,各时钟信号有效。在启动信号有效时,主控模块的各个参数已有效。
下面分别对迭代子系统的中的定时器模块102、交织器模块103和RAM读写控制模块104进行说明,并且对内核计算模块105也进行说明。
定时器模块102用于产生迭代计算所需要的各种定时信号及必要的状态机信号。由于译码器外部送给译码器的只有一个时钟信号,因此译码器本身必须具备定时器模块101。当译码器外部向译码器发出译码器启动信号后,译码器的主控模块101就启动定时器模块102,以后的迭代计算工作都是以定时器模块产生的迭代定时信号作为时序基准。图2为本发明一实施例的迭代定时器模块的时序图。
在迭代定时信号及状态机的驱动下,RAM读写控制模块104用于根据主控模块101提供的控制参数,向内核计算模块105提供计算输入及读写内核计算模块105的计算输出,同时根据时序需要产生交织器模块103所需的控制信号。RAM读写模块104还分别连接RAM0、RAM1和RAM2,其中RAM0用于存储反向迭代的累积路径度量β;RAM1用于存储变量待译码的系统向量X、分量编码器1输出的校验向量Y、分量编码器2输出的校验向量Y’、上一次迭代的输出的外信息L;RAM2用于存储迭代译码输出的硬判决Z,Z即译码结果。
译码器对一帧数据的译码由若干次迭代完成,迭代次数多少可以由外部设定。每次迭代称为译码器的一个复帧(multi-frame),每个译码器的复帧由4个译码帧(frame)组成,每个译码帧由N+10个周期(cycle)组成,其中N表示译码块长度,每个周期包括4个时隙(slot),一个时隙与一个时钟周期对应。各时间单位的标号均从“0”开始。
内核计算模块105是计算译码算法的内核模块。内核计算模块105可以为实现MAP算法的模块,或者是实现Max-log-MAP算法的模块、或者是实现log-MAP等算法的模块。优选地,内核计算模块105是实现log-MAP算法的模块。
内核计算模块105用于根据输入的待译码数据进行迭代计算,并计算出译码结果。待译码数据为信道观测的对数似然比(LLR),用8比特定点有符号数表示。待译码数据可存放在译码器外部的RAM1,并通过译码器与RAM1的接口而输入译码器。在RAM1中存储的待译码数据的存储空间包括4部分。第一部分存储待译码的系统向量X向量,第二部分存储分量编码器1输出的校验向量Y向量,第三部分存储Y’向量,第四部分存储上一次迭代的输出的外信息L向量。
表1为RAM1中待译码数据的存储空间表,如表1所示,待译码数据的存储空间分为四部分,其中第一部分存储X向量、第二部分存储Y向量、第三部分存储Y’向量,第四部分存储L向量。待译码数据的存储空间分配如下:
X向量 |
Y向量 |
Y’向量 |
L向量 |
表1待译码数据存储空间表
待译码数据的存储空间的第一部分用于存储X向量。表2为第一部分中X向量存储的空间表。如表2所示,X向量的存储空间为:
译码块的X向量 |
译码块的网格终止比特X、X’ |
表2X向量存储空间表
待译码数据的存储空间的第二部分用于存储Y向量。表3为第二部分中Y向量存储空间表,如表3所示,Y向量的存储空间为:
译码块的Y向量 |
译码块的网格终止比特Y |
表3Y向量存储空间表
待译码数据的存储空间的第三部分用于存储Y’向量。表4为第三部分中Y’向量存储空间表。如表4所示,Y’向量的存储空间为:
译码块的Y’向量 |
译码块的网格终止比特Y’ |
表4Y’向量存储空间表
待译码数据的存储空间的第四部分用于存储Y’向量。表5为第三部分中L向量存储空间表。如表5所示,L向量的存储空间为:
译码块的L向量 |
表5L向量存储空间表
其中,X向量网格终止比特的排列顺序为:
X(N+1)
X(N+2)
X(N+3)
X’(N+1)
X’(N+2)
X’(N+3)
Y向量网格终止比特的排列顺序为:
Y(N+1)
Y(N+2)
Y(N+3)
Y’向量网格终止比特的排列顺序为:
Y’(N+1)
Y’(N+2)
Y’(N+3)
图3所示为本发明一实施例的RAM读写控制模块的结构示意图。如图3所示,该RAM读写控制模块包括ram_control_adder子模块301、ram_control_ram0子模块302和ram_control_ram1子模块303。ram_control_adder子模块301用于根据从ram1中读出的X、Y、L计算分支转移度量λ1、λ2和λ3,并将λ1、λ2和λ3送至内核计算模块105进行计算;ram_control_ram0子模块303用于将ram0中保存的β发送到内核计算模块105,并将内核计算模块105计算出来的β发送到ram0;ram_control_ram1子模块302用于将ram1中读出的X、Y、L发送到ram_control_adder301子模块,以用于计算λ1、λ2和λ3,并将内核计算模块105中计算出来的L发送到ram1。ram_control_ram2子模块304用于将内核计算模块105计算出来的Z每32位一次送到ram2。
RAM读写控制模块104的工作以复帧(multi-frame)为单位,在定时器模块102提供的各种定时信号的驱动下完成工作。不同复帧中,RAM读写控制模块104所完成的工作完全相同。即:RAM读写控制模块不关心复帧号,不关心当前是第几次迭代。
图4为RAM读写控制模块在第0译码帧的时序图。对第0译码帧即为垂直后向迭代。其中Int_gen表示交织器模块,Ram_read_write_logic表示RAM读写控制模块,Kernel表示内核计算模块。如图4所示:
对RAM1:
从cycle3至cycle5,在每个cycle中的第0slot读Y1,第1slot读X1;
从cycle6开始,在每个cycle中的第0slot读Y1,第1slot读X1,第2slot读LL1,第3slot根据读出的Y1,X,LL1计算出λ(包括λ1,λ2,λ3),并在第3slot末将其锁存输出;第0、1、2、N+5、N+6、N+7、N+8cycle不做操作。
地址说明:
对于X1,前三个地址分别为N+2,N+1,N,其余依次为交织器生成器给出的Int(N-1)~Int(1);
对于Y1,其读地址为(N+2)~1;
对于LL1,前三位不读,LL1以零值记,其余依次为交织器生成器给出的Int(N-1)~Int(1);
交织地址从交织器模块103读到。
对RAM0:
从cycle4开始,在每个cycle中的第0slot写第0到第15比特位,即β(15~0),第1slot写β(31~16),第2slot写β(47~32),第3slot写β(63~48);其中,第0、1、2、3、N+7、N+8slot不做操作;
地址说明:
对于β,其写地址依次为(N+3)~1;由于每一个β要用ram0的4个存储单元,因而实际映射到ram中的写地址为:(4N+12)~4。
图5为RAM读写控制模块在第1译码帧的时序图。第1译码帧是垂直前向迭代。如图5所示:
对RAM1:
从cycle1开始,在每个cycle中的第0slot读Y1,第1slot读X1,第2slot读LL1,第3slot根据读出的Y1,X,LL1计算出λ(包括λ1,λ2,λ3),并在第3slot末将其锁存输出;其中:第0、(N+1)~(N+8)cycle不读数据;
地址说明:
对于X1,读地址为交织器生成器给出的Int(0)~Int(N-1);
对于Y1,读地址为0~(N-1);
对于LL1,读地址为交织器生成器给出的Int(0)~Int(N-1);
从cycle6开始,在每个cycle中的第3slot写LL0;
其中:第0~5、N+6、N+7、N+8cycle不做操作;
对于LL0,写地址为交织器生成器给出的Int(0)~Int(N-1),相当于对LL1的读地址延后5拍;
对RAM0:
从cycle1开始,在每个cycle中的第0slot读β(15~0),第1slot读β(31~16),第2slot读β(47~32),第3slot读β(63~48);
其中:第0、(N+1)~(N+8)cycle不做操作
地址说明:
对于β,其读地址依次为1~N;实际映射到ram0中的读地址为4~4N。
图6为RAM读写控制模块在第2译码帧的时序图。第2译码帧是水平后向迭代。如图6所示:
对RAM1:
从cycle1至cycle3,在每个cycle中的第0slot读Y0,第1slot读X0,第2slot空操作,第3slot根据读出的Y0,X0计算出λ(包括λ1,λ2,λ3),并在第3slot末将其锁存输出;
从cycle4开始,在每个cycle中的第0slot读Y0,第1slot读X0,第2slot读LL0,第3slot根据读出的Y0,X0,LL0计算出λ(包括λ1,λ2,λ3),并在第3slot末将其锁存输出;
其中:第0、(N+3)~(N+8)cycle不做操作;
地址说明:
对于X0,其读地址为(N+2)~1;
对于Y0,其读地址为(N+2)~1;
对于LL0,前三位(cycle1至cycle3)不读,LL0以零值记,其余读地址为(N-1)~1;
对RAM0:
从cycle2开始,在每个slot中的第0cycle写β(15~0),第1cycle写β(31~16),第2cycle写β(47~32),第3cycle写β(63~48);其中:第0、1、(N+5)~(N+8)cycle不做操作;
地址说明:
对于β,其写地址依次为(N+3)~1;映射到ram0中的写地址为4(N+3)~4。
图7为RAM读写控制模块在第3译码帧的时序图。第3译码帧是水平前向迭代。其中,pipeline_1到pipeline_4分别表示流水时延。如图7所示:
对RAM1:
从cycle1开始,在每个cycle中的第0slot读Y0,第1slot读X0,第2slot读LL0,第3slot根据读出的Y0,X0,LL0计算出λ(包括λ1,λ2,λ3),并在第3slot末将其锁存输出;
其中:第0、(N+1)~(N+8)cycle不读数据;
地址说明:
对于X0,读地址为0~(N-1);
对于Y0,读地址为0~(N-1);
对于LL0,读地址为0~(N-1);
从cycle6开始,在每个cycle中的第3slot写LL1;
其中:第0~5、N+6、N+7、N+8cycle不做操作;
对于LL1,写地址为0~(N-1),相当于对LL0的读地址延后5拍。
对RAM0:
从cycle1开始,在每个cycle中的第0slot读β(15~0),第1slot读β(31~16),第2slot读β(47~32),第3slot读β(63~48);
其中:第0、(N+1)~(N+8)cycle不做操作;
地址说明:
对于β,其读地址依次为1~N,映射到ram0中的地址为4~4N。
对RAM3:
从cycle(6)至cycle(N+5),每个cycle都会收到kernel送来的一个Z,每收到16个Z,向ram3中写入一次;其中:第0~5,(N+6)~(N+8)cycle不做操作;
地址说明:
对于Z,其写地址依次为0~(N-1)/4。
在一个复帧结束时,RAM读写控制模块将需要上报的参数稳定在相应的信号线上。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1、一种Turbo码译码器,其特征在于,该译码器包括:
主控模块,用于接收译码器外部所提供的译码参数,并向RAM读写控制模块提供该译码参数;
定时器模块,用于产生迭代计算所需要的定时信号和状态机信号,并向内核计算模块发送该定时信号和状态机信号;
交织器模块,用于在收到交织器模块启动信号后产生交织地址,并向RAM读写控制模块提供交织地址;
RAM读写控制模块,产生交织器模块启动信号,并根据主控模块提供的译码参数、交织器模块提供的交织器地址向内核计算模块提供计算输入和读写内核计算模块的计算输出;
内核计算模块,用于根据定时信号与状态机信号和计算输入迭代计算出译码结果。
2、根据权利要求1所述的Turbo码译码器,其特征在于,所述内核计算模块为MAP算法计算模块或Max-log-MAP算法计算模块或log-MAP算法计算模块。
3、根据权利要求1所述的Turbo码译码器,其特征在于,所述RAM读写控制模块进一步连接RAM0、RAM1和RAM2,其中:
RAM0,用于存储反向迭代的累积路径度量β;
RAM1,用于存储变量待译码的系统向量X、分量编码器1输出的校验向量Y、分量编码器2输出的校验向量Y’、上一次迭代的输出的外信息L;
RAM2,存储迭代译码输出的硬判决Z。
4、根据权利要求3所述的Turbo码译码器,其特征在于,所述RAM1包括顺序排列的四部分,其中第一部分存储X向量、第二部分存储Y向量、第三部分存储Y’向量,第四部分存储L向量;
所述第一部分存储X向量为:在第一部分顺序存储译码块的X向量和译码块的网格终止比特X、X’;
所述第二部分存储Y向量为:在第一部分顺序存储译码块的Y向量和译码块的网格终止比特Y;
所述第三部分存储Y,向量为:在第三部分顺序存储译码块的Y’向量和译码块的网格终止比特Y’;
所述第四部分存储L向量为:在第四部分存储译码块的L向量。
5、根据权利要求3所述的Turbo码译码器,其特征在于,所述RAM读写控制模块包括:
Ram_control_adder模块,用于根据从Ram1中读出的X、Y、L计算分支转移度量λ1、λ2和λ3;
Ram_control_ram0模块,用于将Ram0中保存的累积路径度量β发送到内核计算模块,并将内核计算模块计算出的累积路径度量β返回到Ram0;
Ram_control_ram1模块,用于将Ram1读出的X、Y、L送到Ram_control_adder,并将内核计算模块计算出的L发送到Ram1;
Ram_control_ram3模块,用于将内核计算模块计算出的Z发送到Ram3。
6、根据权利要求5所述的Turbo码译码器,其特征在于,所述RAM读写控制模块向内核计算模块提供计算输入,并读写内核计算模块的计算输出为:RAM读写控制模块以复帧为单位向内核计算模块提供计算输入,并读写内核计算模块的计算输出和产生交织器模块启动信号。
7、根据权利要求6所述的Turbo码译码器,其特征在于,所述复帧由4个译码帧frame组成,每个译码帧由N+10个周期cycle组成,其中N表示译码块长度,每个周期包括4个时隙slot,一个slot与一个时钟周期clock cycle对应,其中,第0译码帧为垂直后向迭代,第1译码帧为垂直前向迭代,第2译码帧为水平后向迭代,第3译码帧为水平前向迭代;
对垂直后向迭代:
对于RAM1:从cycle3至cycle5,在每个cycle中的第0slot读Y1,第1slot读X1;从cycle6开始,在每个cycle中的第0slot读Y1,第1slot读X1,第2slot读LL1,第3slot根据读出的Y1,X,LL1计算出λ1、λ2、λ3,并在第3slot末将其锁存输出;第0、1、2、N+5、N+6、N+7、N+8cycle不做操作;
对RAM0:从cycle4开始,在每个cycle中的第0slot写第0到第15比特位,第1slot写第16到第31比特位,第2slot写第32到第47比特位,第3slot写第48到第63比特位;其中,第0、1、2、3、N+7、N+8slot不做操作;
对垂直前向迭代:
对RAM1:
从cycle1开始,在每个cycle中的第0slot读Y1,第1slot读X1,第2slot读LL1,第3slot根据读出的Y1、X、LL1计算出λ1、λ2、λ3,并在第3slot末将其锁存输出;其中第0、(N+1)~(N+8)cycle不读数据;
对RAM0:
从cycle1开始,在每个cycle中的第0slot写第0到第15比特位,第1slot写第16到第31比特位,第2slot写第32到第47比特位,第3slot写第48到第63比特位;其中:第0、(N+1)~(N+8)cycle不做操作;
对水平后向迭代:
对RAM1:
从cycle1至cycle3,在每个cycle中的第0slot读Y0,第1slot读X0,第2slot空操作,第3slot根据读出的Y0,X0计算出λ1、λ2、λ3,并在第3slot末将其锁存输出,
从cycle4开始,在每个cycle中的第0slot读Y0,第1slot读X0,第2slot读LL0,第3slot根据读出的Y0,X0,LL0计算出λ1、λ2、λ3,并在第3slot末将其锁存输出;其中:第0、(N+3)~(N+8)cycle不做操作;
对RAM0:
从cycle2开始,在每个cycle中的第0slot写第0到第15比特位,第1slot写第16到第31比特位,第2slot写第32到第47比特位,第3slot写第48到第63比特位;其中:第0、1、(N+5)~(N+8)cycle不做操作;
对水平前向迭代:
对RAM1:
从cycle1开始,在每个cycle中的第0slot读Y0,第1slot读X0,第2slot读LL0,第3slot根据读出的Y0,X0,LL0计算出λ1、λ2、λ3,并在第3slot末将其锁存输出;其中第0、(N+1)~(N+8)cycle不读数据;
对RAM0:
从cycle1开始,在每个cycle中的第0slot写第0到第15比特位,第1slot写第16到第31比特位,第2slot写第32到第47比特位,第3slot写第48到第63比特位;其中第0、(N+1)~(N+8)cycle不做操作。
8、根据权利要求1所述的Turbo码译码器,其特征在于,所述的主控模块进一步接收译码器启动信号,并启动译码器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410098700 CN1790919A (zh) | 2004-12-15 | 2004-12-15 | 一种涡轮码译码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410098700 CN1790919A (zh) | 2004-12-15 | 2004-12-15 | 一种涡轮码译码器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1790919A true CN1790919A (zh) | 2006-06-21 |
Family
ID=36788478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410098700 Pending CN1790919A (zh) | 2004-12-15 | 2004-12-15 | 一种涡轮码译码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1790919A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746710A (zh) * | 2013-12-30 | 2014-04-23 | 华为技术有限公司 | 一种译码器和译码方法 |
CN103997752A (zh) * | 2014-05-28 | 2014-08-20 | 天津大学 | 基于Markov的协作通信系统的安全稳定性评价方法 |
-
2004
- 2004-12-15 CN CN 200410098700 patent/CN1790919A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746710A (zh) * | 2013-12-30 | 2014-04-23 | 华为技术有限公司 | 一种译码器和译码方法 |
CN103997752A (zh) * | 2014-05-28 | 2014-08-20 | 天津大学 | 基于Markov的协作通信系统的安全稳定性评价方法 |
CN103997752B (zh) * | 2014-05-28 | 2017-05-31 | 天津大学 | 基于Markov的协作通信系统的安全稳定性评价方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1256812C (zh) | 透平编码器和信道编码方法 | |
CN1836394A (zh) | 在移动通信系统中编码/解码块低密度奇偶校验码的装置和方法 | |
CN1310458C (zh) | 对存在码间干扰并在多路发送和接收中进行按位交织编码的数字数据流进行编码/解码的方法及相应系统 | |
CN1153354C (zh) | 纠错编码器、纠错解码器和具有纠错码的数据传输系统 | |
CN1113295C (zh) | 错误校正编码方法及其设备 | |
CN1692557A (zh) | 编码设备、编码方法、编码程序、解码设备、解码方法、和解码程序 | |
CN1164039C (zh) | 里德-所罗门编码装置 | |
CN1526196A (zh) | 缩减的软输出信息分组的选择 | |
CN1516381A (zh) | 处理单元和处理方法 | |
CN1838542A (zh) | 解码设备和方法以及程序 | |
CN85103579A (zh) | 纠错码的译码方法和系统 | |
CN1494770A (zh) | 适于turbo解码器的交错器 | |
CN1144378C (zh) | 卷积码软输出解码装置和软输出解码方法 | |
CN1630204A (zh) | 具有矩阵转换技术的循环冗余码计算方法及系统 | |
CN1330455A (zh) | Turbo(涡轮)码的译码电路和编码译码电路 | |
CN1593012A (zh) | 用于低密度奇偶校验码的幅度相位偏移群集的比特标记 | |
CN1179488C (zh) | 包括结合正交调幅的穿孔乘积码的数字传输系统与方法 | |
CN1685621A (zh) | 用于解交织通信设备中的交织数据流的方法和装置 | |
CN1728563A (zh) | Turbo译码装置和Turbo译码方法 | |
CN1276588C (zh) | 在通信系统中生成代码的设备和方法 | |
CN1305221C (zh) | 迭代链接码解码电路以及使用该电路的编码/解码系统 | |
CN1173480C (zh) | 维特比解码器和传输设备 | |
CN101064591A (zh) | 低密度奇偶校验码的译码方法及其校验节点更新电路 | |
CN1653699A (zh) | 软判定解码里德-索洛蒙码的方法 | |
CN1493110A (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20060621 |