CN1390391A - 并行涡轮编码器实施方案 - Google Patents
并行涡轮编码器实施方案 Download PDFInfo
- Publication number
- CN1390391A CN1390391A CN00815731A CN00815731A CN1390391A CN 1390391 A CN1390391 A CN 1390391A CN 00815731 A CN00815731 A CN 00815731A CN 00815731 A CN00815731 A CN 00815731A CN 1390391 A CN1390391 A CN 1390391A
- Authority
- CN
- China
- Prior art keywords
- xor
- logic
- std
- signal
- vector
- 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
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/23—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
- H03M13/235—Encoding of convolutional codes, e.g. methods or arrangements for parallel or block-wise encoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2903—Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
为了得到具有增加的处理速度的Turbo(涡轮)编码器块,提出实行指数n的并行化。为此,每个并行化的Turbo编码器块包括贮存装置(I0,…,I7),用于把输入信号I(t)的n个样本(I(t-1),…,I(t-n))存储到并行Turbo编码器块,以及至少一个贮存装置(Q0,…,Q7),用于存储并行Turbo编码器块的至少一个输出信号Qj(t)(j=1,…,M)的n个样本(Qj(t),…,Qj(t-(n-1))。而且,并行化的Turbo编码器块包括一组n个延时单元(X1,…,XN),以及适合于并行处理输入信号I(t)的n个样本,这样,该组的至少两个延时单元(X1,…,XN)可以直接接收输入信号I(t)的n个样本(I(t-1),…,I(t-n)),以及并行化Turbo编码器块中的至少一个延时单元(X1,…,XN)的输出信号被提供到并行化Turbo编码器块中的至少两个延时单元。
Description
发明领域
本发明涉及Turbo(涡轮)编码器实施方案,具体地,本发明涉及Turbo编码器实施方案的并行化。
背景技术
电信系统中发射机的基带部分通常与其它部分一起包括一个用于要被发送的比特的通用编码器。编码器把冗余的信息附加到进入的、具有比特量值K的数据流。由此,比特数目按照取决于编码器速率r的因子1/r增加。当前,通常使用1/2和1/3的编码器速率,然而也可以使用其他数值的编码器速率。对于每个具有K个未编码的比特的块,编码器输出一个具有K/r个编码的比特的块。
在电信系统中用于数据流的接收侧,原先的数据流是根据接收机中编码的数据块而被重新计算的,即使是在某些比特在通过例如空中接口传输期间被破坏的情形下。
近来,为了控制电信数据传输的错误,已引入Turbo编码器。通常,Turbo编码涉及在发送之前把两种或多种代码施加到同一个信息序列的不同的交织的版本中。由于TURBO编码在技术上是熟知的,例如,可以参见Berrou等人的“Near Shannon Limit Error-CorrectingCoder and Decoder:Turbo-Codes(接近香农极限误差-校正编码器和译码器:涡轮码)”IEEE International Communication Conference,pp.1064-1070,May 1993和Sklar的“APrimer on Turbo CodeConcept(涡轮码概念入门)”IEEE Communication Magazine,pp.94-102,December 1997,这里不再给出进一步的细节,所述的参考文献在此引用,以供参考。
图8上显示TURBO编码器的例子。如图8所示,Turbo编码器包含两个在结构上相同的Turbo编码器块TCB1,TCB2。这两个Turbo编码器块的差别在于,其中的一个接收未改变次序的输入块的比特,而另一个接收具有交替次序的输入比特。对于每个输入比特,在输出端0、1、2处分别产生三个输出比特。
如图8所示,Turbo编码器块TCB1包括在它的输入端处的第一XOR(异或)门100,以及在它的输出端处的第二XOR(异或)门102。在它们之间安排有三个延时单元104到108,用于延时各个输入比特。同样地,Turbo编码器块TCB2包括在它的输入端处的第三XOR(异或)门110,以及在它的输出端处的第四XOR(异或)门112。在它们之间安排有三个延时单元114到118,用于延时各个输入比特。
如图8所示,加到Turbo编码器的输入信号被直接提供到TUB编码器块1,而它是通过交织器120被提供到第二Turbo编码器块TCB2的。对于输出端0,输入信号不作任何修正地直接被转发。
工作时,对于图8所示的Turbo编码器的参量是每个Turbo编码器块中延时单元的数目,以及向不同的XOR门100、102、110、和112的提供的输入信号。
图8所示的Turbo编码器的直接的实施方案依赖于所使用的延时单元以及输入与输出寄存器(图8上未示出),这样,Turbo编码可以按逐个比特方式完成。这里,所有的延时单元以同一个系统时钟工作,从而延时单元的输出代表了具有以先前的时钟周期的输入。
虽然使用串行方式的延时单元的Turbo编码器的直接实施方案不需要许多寄存器和XOR门,但主要缺点在于Turbo编码是以串行方式执行的。这意味着,时钟系统的每个周期里只编码一个比特。结果,对于需要高比特速率的情形,时钟频率要增加到非常高的数值。
例如,如果要编码1200个信道,其每一个涉及到以1毫秒的时间周期的100比特的话音信道,则所必须的系统时钟频率是120MHz。这里,例如使用ASIC或FPGA技术来实施相关的Turbo编码器将是非常困难的。
虽然一个解决方案可以是对每个信道实施一个专用Turbo编码器,但这需要对输入和输出比特流的复杂处理,因为不同的信道仍旧必须并行地编码。这导致非常复杂的控制逻辑,以便在正确的时间提供正确的输入到正确的Turbo编码器。而且,不同的Turbo编码器的输出也必须以同样的复杂的方式被处理。
发明概要
根据以上说明,本发明的目的是提高Turbo编码器块的处理速度。
按照本发明,这个目的是通过并行实现Turbo编码器来达到的。
所以,Turbo编码器块的结构从一开始就是通过使用可以构成Turbo编码器块的并行化的基础的一般的正式说明来描述的。
具体地,加到Turbo编码器块的输入样本被看作为n维并行输入矢量的单元,其中n是并行化指数。
Turbo编码器块的一般正式说明然后被用来导出从这个并行输入矢量到至少一个并行输出矢量的映射。
更具体地,把内部状态变量替换过程应用到一般正式说明的每个内部状态变量,其中对内部状态变量的表示式进行扫描,以便找出最大时标单元,然后通过使用内部状态变量的、先前确定的时标替换的表示式来执行后向时标过渡,从而对所述最大时标单元进行替换。这些替换步骤重复进行,直至每个内部状态变量的表示式只取决于输入矢量单元为止,以及Turbo编码器的内部状态变量的数值根据并行化指数而被延时。
而且,对于每个并行输出矢量的每个单元也执行替换处理。也对每个输出矢量中的每个矢量单元的表示式进行扫描,以便找出具有最大时标的内部状态变量,然后递归地确定在矢量单元的表示式中的后向时标过渡,直至矢量单元的表示式只取决于输入矢量单元为止,以及内部状态变量的数值根据并行化指数而被延时。
所以,按照本发明,提出了对Turbo编码器块进行并行化,以使得为了达到增加的处理速度,只需要一个并行化的Turbo编码器块,而不用许多串行Turbo编码器。这导致能得到确定性的优点:不需要对于多个Turbo编码器块的复杂的输入和输出控制。
例如,对于四比特并行Turbo编码器块,在上面提到的例子中最终的系统时钟频率处在30MHz的范围,所以,可以容易地用FPGA或ASIC技术来实现。所以,并行化的Turbo编码器块和由此而导出的Turbo编码器可以按照并行化指数而获得比串行Turbo编码器高的速度,这样,预定的技术条件可以通过使用基于FPGA或ASIC技术的实施方案来满足。因此,并行化的Turbo编码器块可以构成在基带部分具有低处理延时的复杂电信系统的基础,而不用对不同的信道同时进行复杂的处理。
而且,当与串行Turbo编码器相比较时,并行化的Turbo编码器块和相关的Turbo编码器只需要最少量的附加的逻辑门和寄存器。
再者,当设置在Turbo编码器的前面和后面的处理块也支持并行处理方式时,完整的编码器块总共需要比起具有串行Turbo编码器块的编码器块更少的逻辑门和寄存器、以及某些附加的变换器(并行到串行以及串行到并行变换)。
按照本发明的另一个优选实施例,也提供了可直接装载到计算机的内存的、其中包括软件代码部分的计算机程序产品,它在计算机中运行时用来执行按照本发明的并行化方法的步骤。优选地,软件代码部分是VHDL型的。
所以,本发明能够实现快速地开发和修正并行Turbo编码器的设计,其中从设计到不同的硬件技术(例如,分别为ASIC或FPGA)的映射过程的开发周期可以减小,而且其灵活性增加。
附图简述
下面,参照附图描述本发明的优选实施例,其中:
图1显示具有一个输出的Turbo编码器块的电路图;
图2显示具有多个输出的Turbo编码器块的电路图;
图3显示将一个按时间顺序的输入数据流映射到并行输入矢量,以及将一个并行输出矢量映射到按时间顺序的输出数据流;
图4显示具体的Turbo编码器块的串行实施方案的电路图;
图5显示图4所示的Turbo编码器块的二比特并行实施方案的电路图;
图6显示图4所示的Turbo编码器块的四比特并行实施方案的电路图;
图7A显示图4所示的Turbo编码器块的八比特并行实施方案的输入部分的电路图;
图7B显示图4所示的Turbo编码器块的并行实施方案的输出部分的电路图;以及
图8显示包括交织器以及Turbo编码器块TCB1和TCB2的Turbo编码器的示意图。
发明详细描述
下面,参照图1到7描述本发明的优选实施例。
具体地,一开始,给出如图1和2所示的Turbo编码器块的形式的说明作为按照本发明的并行化方法的说明的基础。
然后,参照图3描述一个按时间顺序的输入数据流可以怎样被映射到要在并行化Turbo编码器块中被处理的并行输入矢量,以及这个并行化Turbo编码器块的并行输出矢量可以怎样被映射到按时间顺序的输出数据流。
此后,参照图4到7给出使用按照本发明的并行化方法的Turbo编码器的并行实施方案的不同的例子。
1.采用串行实施方案的Turbo编码器块,一般说明:
图1显示采用串行实施方案的Turbo编码器块的电路图。
如图1所示,Turbo编码器块包括N个诸如触发器的延时单元X1,X2,...,XN。延时单元X1,X2,...,XN的输出信号分别称为x1(t),x2(t)...,xN(t),其中t表示整数时标。在第一延时单元X1的输入端处,提供有输入XOR门12,以及在最后的延时单元Xn的输出端处,提供有输出XOR门14。
如图1所示,输入信号I(t)通过输入延时单元16被提供,以及输出XOR门14的输出信号通过输出延时单元18被转发出。
如图1所示,输出信号x1(t),x2(t)...,xN(t)可通过连接α1,α2,...,αN被提供到输入XOR门12。另外,加到延时单元的输入信号可以通过连接β0,β1,...,βN-1被提供到输出XOR门14。而且,延时单元XN的输出通过连接βN被提供到输出XOR门14。
通过正式分配0或1的数值给每个连接α1,α2,...,αN以及每个连接β0,β1,...,βN,可以按照下式来描述具有N个延时单元的任何串行Turbo编码器块实施方案:x1(t)=I(t-1)α1·x1(t-1)α2·x2(t-1)...αN·xN(t-1)
αiε{0,1}
(1.x1)x2(t)=x1(t-1)
(1.x2). .. .. .xN(t)=xN-1(t-1)
(1.xN)Q(t)=β0·[I(t-1)α1·x1(t-1)
α2·x2(t-1)
...αN·xN(t-1)]
β1·x1(t-1)β2·x2(t-1)...βN·xN(t-1)=
=β0·I(t-1)
β0·α1·x1(t-1)β1·x1(t-1)
β0·αN·xN(t-1)βN·xN(t-1)=
=β0·I(t-1)
x1(t-1)·[β0·α1β1]
.
.
.
xN(t-1)·[β0·αNβx]
βiε{0,1}
(1.Q)
如图2所示,以上对于具有单个输出的Turbo编码器块给出的一般说明可被推广为使用具有多个输出的串行实施方案的Turbo编码器块。
和图1一样,图2显示延时单元x1,x2,...,xN,其输出信号再次被表示为x1(t),x2(t)...,xN(t)。每个延时单元X1,X2,...,XN的输出信号x1(t),x2(t)...,xN(t)通过如图所示的连接α1,α2,...,αN被提供到输入XOR门12。另外,输入数据流通过输入延时单元16被提供到输入XOR门12。
图2所示的串行Turbo编码器块不同于前面讨论的Turbo编码器块之处在于提供了多个输出Q1(t),Q2(t)...,QM(t)。如图2所示,对于各个输出提供一个相关的输出XOR门14-1,...,14-M。在每个这样的输出XOR门14-1,...,14-M的输出端处,连接一个相关的输出延时单元18-1,...,18-M。
如图2所示,加到延时单元的每个输入可以通过连接β1,0,β1,1,β1,2,...,β1,N-1被提供到第一输出XOR门14-1,还通过连接β2,0,β2,1,β2,2,...,β2,N-1被提供到第二输出XOR门14-2,等等。而且,最后的延时单元XN的输出通过连接β1,N被提供到第一输出XOR门14-1,通过连接β2,N被提供到第二输出XOR门14-2等等。最后,每个输出XOR门的输出信号被延时,从而得到Turbo编码器块输出信号Q1(t),...,QM(t)。
图2所示的Turbo编码器不同于前面讨论的Turbo编码器之处在于,对于每个输出Q1(t),...,QM(t),相关的输出表示式被推广为:Qj(t)=βj0·I(t-1)
x1(t-1)·[βj0·α1βj1]
.
.
.
xN(t-1)·[βj0·αNβjN]
βijε{0,1}
jε[1,...,M]
(1.Q)
在具有一个或多个输出的串行实施方案中的Turbo编码器块的以上的正式表示式将用作为按照本发明的并行化方法的说明的基础。
然而,在下面描述按照本发明的并行化方法之前,将参照图3开始描述从串行输入数据流到并行输入矢量的映射以及从并行输出矢量到串行输出数据流的映射。
2.使用并行化指数n的并行实施方案的Turbo编码器块:
在左上方,图3显示按照串行输入数据流的时间顺序。同样地,在右上方,图3显示按照串行输出数据流的时间顺序。
如图3所示,并行输入矢量I0,I1,...,In-1可以按照下式从一系列输入数据值I(t-1),I(t-2),...,I(t-n)导出:I(t-1)=I0(p-1)I(t-2)=I1(p-1)
.
.
.I(t-n)=In-1(p-1)
假设从串行输入数据流导出的、图3所示的并行输入矢量在以下描述的并行Turbo编码器块中被处理,可以得到并行输入输出矢量Qj0,...,Qjn-1。
如图3所示,这个并行输出矢量然后可以按照下式被映射回串行输出数据流Qj(t),...,Qj(t-(n-1)):Qj(t)=Qj0(p)Qj(t-1)=Qj1(p)...Qj(t-(n-1))=Qjn-1(p)
jε[1,...,M]
2.1并行化概况
按照本发明,在串行域和并行域使用不同的时间尺度。换句话说,在串行时域中一组n个串行输入数据相应于一个并行输入矢量,该矢量在并行时域p中按照一个时钟周期并行地被处理。
结果,假设处理相同的数据量,则最终的并行系统时钟比起串行系统时钟慢n倍。所以,串行时间表示式(t-1)可以用并行时间表示式(p-1)代替,以及n个顺序时间输入的序列被重写为单个并行输入矢量,一个并行时钟周期要较早(p-1)。同样地,串行输出在当前的并行周期(p)内被重写为并行输出矢量。
通过使用按照图1和2的Turbo编码器块和从串行输入数据流到并行输入矢量的映射以及从并行输出矢量到串行输出数据流的反映射的一般说明,按照本发明的方法依赖于将具有n个串行输入数据项的并行输入矢量提供到并行化TURBO编码块和对M个输出矢量(其每一个包括n个输出数据项)的计算。
输出矢量的n个单元只取决于早先在串行Turbo编码器块实施方案的n个系统时钟(它只相应于并行化Turbo编码器块中的一个周期)处的内部延时单元X1,...,XN的数值,以及还取决于被概括在并行输入矢量中的这n个周期期间所有的输入数据项。
正如下面看到的,基于本发明的方法依赖于:对于下一个并行周期,根据并行Turbo编码器块的内部延时单元的输出值和先前的并行周期的并行输入矢量,如何去确定表示并行输出矢量的输出单元和并行Turbo编码器块的内部延时单元的输出值的方程。
按照串行表示法(见公式(1.Q)),在时间t,串行实施的TURBO编码块的每个输出值是根据在时间t-1时延时单元X1,...,XN的输出值与在时间t-1时输入数据项被计算的。
通过用早先的串行实施方案中一个系统时钟周期的数值来替换内部延时单元的所有的输出值,以及通过以递归方式重复进行这些替换步骤直至只留下在早先n个串行系统时钟周期时的输出值为止,可以得出用于计算在n个串行周期或等价的一个并行周期上的输出结果的公式。
换句话说,这些公式构成当n个串行时钟周期表示式一个并行时钟周期时的并行化Turbo编码器块的基础。
2.2对于第一内部状态的后向时标替换
在准备进行以上提到的递归替换过程时,可以使用对于第一延时单元X1的输出的表示法(参阅公式(1.x1))x1(t)=I(t-1)α1·x1(t-1)
α2·x2(t-1)...
αN·xN(t-1)
在下面它也被称为第一内部状态,以便按照下式表示对于串行时钟周期t-1,...,t-(n-1)的这个内部状态:x1(t-1)=I(t-2)α1·x1(t-2)
α2·x2(t-2)...
αN·xN(t-2)
(2.x1.1)x1(t-(n-1))=I(t-n)α1·x1(t-n)
α2·x2(t-n)...
αN·xN(t-n)
(2.x1.n-1)
2.3对于另外的内部状态的后向时标替换
而且,对于另外的延时单元X2,...,XN的的输出的表示法(参阅公式(1.x2),...,(1.xN))xi(t)=xi-1(t-1)
在下面它也被称为另外的内部状态,可被使用来按照下式表示对于串行时钟周期t-1,...,t-(n-1)的这些内部状态:xi(t-1)=xi-1(t-2)
(2.xi.1)
.
.
.xi(t-(n-1))=xi-1(t-n)
(2.xi.n-1)
2.4对于输出矢量单元的后向时标替换
再者,对于Turbo编码器块的至少一个输出的表示法(参阅公式(1.Q))Qj(t)=βj0·I(t-1)
x1(t-1)·[βj0·α1βj1]
.
.
.
xN(t-1)·[βj0·αNβjN]
(2.Q.0)
可被使用来按照下式表示对于串行时钟周期t-1,...,t-(n-1)的这个输出:Qj(t-1) =βj0·I(t-2)
x1(t-2)·[βj0·α1βj1]
.
.
.
xN(t-2)·[βj0·αNβjN]
(2.Q.1)...Qj(t-(n-1))=
βj0·I(t-n)
x1(t-n)·[βj0·α1βj1]
.
.
.
xN(t-n)·[βj0·αNβjN]
(2.Q.n-1)
2.5通过递归后向时标替换过渡步骤的并行化
2.5.1目标
正如上面已阐述的,构成按照本发明的并行化处理的基础的目标是把每个并行输出矢量的元素(对于图2所示的每个输出1,...,M,具有一个所述元素)表示为在当前的并行周期之前的一个并行周期(等价于n个串行周期)的一系列n个串行输入数据项和内部状态的函数:Qj(t-i)=f[I(t-1),...,I(t-n);x1(t-n),...,xN(t-n)]
foriε[0,...,n-1]
jε[1,...,M]Qji(p)=f[I0(p-1),...,In-1(p-1);x1(p-1), ...,xN(p-1)].
(2.Qi)
2.5.2递归时标过渡步骤
首先,为了达到这个目标,所有的内部状态被并行化。对于所有的内部状态x1(t),...,xN(t),一开始按照一系列运行的说明来设置在表示这个内部状态时要使用的最大时标。
然后,考虑所有内部状态的表示式,以及对其每一个进行递归扫描,以便用一个公式根据当前的最大时标来替换内部状态变量,这个公式通过使用以上列出的方程(2)之一来表示取决于在这个当前的最大时标之前的时标的同一个内部状态。
所以,所考虑的内部状态的表示式被这样地修正,以便从当前的最大时标过渡到该当前的最大时标前面的那个时标。这个过渡在下面将被称为后向时标过渡。在根据当前的最大时标对于所有的内部状态变量完成了后向时标过渡后,当前的最大时标被递减1。
继续进行对这个过程的递归重复,直至最大时标达到t-n的数值为止。这样做的理由在于,在这时,在周期t(p)所考虑的内部状态只根据在时间t-n(p-1)的内部状态和串行输入数据项I(t-1),...,I(t-n)来进行描述。
其次,在每个输出矢量中所有的单元可以按照如上所述的递归方式通过再次对内部状态执行后向时标过渡而被并行化。
而且,应当提到,在这些递归时标过渡步骤之间的中间级,在修正当前的最大时标时,内部状态和输出矢量的单元的各个表示式可通过使用关系式(aab≡b)而被简化。换句话说,在各个表示式中可以删除双项(aa)。
如图2所示最一般形式的串行Turbo编码器块的递归并行化可被概括如下:
程序 recursive_parallelization(n) int i,j,k; { /*内部状态的并行化*/ for(k=1;k<=N;k++) { /*考虑内部状态xk(t)*/ tmax=t-1; while(tmax>t-n) { scan representation of internal state xk(t) for internal states with maximum time index tmax; for(all internal states with maximum time index) <dp n="d13"/> { execute backward time index transition from tmax to tmax-1 through state variable substitution using eq.(2)above; } cancel double terms in representation of internal state xk(t); tmax=tmax-1; } } /*输出变量的并行化*/ for(j=1;j<=M;j++) { for(i=0;i<=n-2;i++) { /*考虑输出矢量单元Qj(t-i)*/ tmax=t-i-1; while(tmax>t-n) { scan representation of Qj(t-i)for internal states with maximum time index; for(all internal states with maximum time index) { execute backward time index transition from tmax to tmax-1 through state variable substitution using eq.(2)above; } <dp n="d14"/> cancel double terms in representation of Qj(t-i); tmax=tmax-1; } } } }/*结束程序*/
为了说明以上一般地描述的并行化方法的应用,在下面,参照具体的例子更详细地说明这个并行化过程。
正如在下面看到的,每个并行化Turbo编码器块包括:一个贮存单元,例如第一组触发器I0,...,I7,以便用来存储输入信号I(t)的n个样本I(t-1),...,I(t-n),从而进一步提供给并行化TURBO编码块;以及至少一个贮存单元,例如第二组触发器Q0,...,Q7,以便用来存储并行化TURBO编码块的至少一个输出信号Qj(t),j=1,...,M,的n个样本Qj(t),...,Qj(t-(n-1))。
而且,并行化TURBO编码器块包括一组n个延时单元X1,...,XN,以及适合于对输入信号I(t)的n个样本进行并行处理,这样,使得该组的至少两个延时单元X1,...,XN可以接收输入信号I(t)的n个样本I(t-1),...,I(t-n),以及在并行化Turbo编码器块中的至少一个延时单元X1,...,XN的输出信号被提供到并行化Turbo编码器块中的至少两个延时单元。
图4显示具体的串行Turbo编码器块的电路图,正如可以在图8所示的Turbo编码器中使用的那样。
这里,应当指出,提供输入延时单元16和输出延时单元18本身,在串行实施方案的情形下并不是先决条件,但在并行化的情形下是必须的,以便收集如图3所示的输入矢量和输出矢量的单元。
图4所示的串行Turbo编码器块可以通过使用按照上述的方程(1)的正式说明而被简短地描述为N=3,M=1,α=[α1,α2,α3] =[0,1,1],β=[β1,β2,β3,β4]=[1,1,0,1]。下面,将说明这个串行Turbo编码器块如何被并行化为一个n=2,4,和8比特的并行Turbo编码器块。
3.1实例:用于N=3,M=1,α=[0,1,1],β==[1,1,0,1]的2比特并行Turbo编码器
从方程(1)开始,我们得出x1(t)=I(t-1)x2(t-1)x3(t-1)x2(t)=x1(t-1)x3(t)=x2(t-1)Q(t)=I(t-1)x1(t-1)x2(t-1)这正如对于图4所示的Turbo编码器块说明的那样。以下在两个串行时间周期内的后向时标过渡是必须的:
x1(t)=I(t-1)x2(t-1)x3(t-1)<=>x1(t)=I(t-1)x1(t-2)x2(t-2)
这是按照并行电路:=> x1(p)=I0(p-1)x1(p-1)x2(p-1)
x2(t)=x1(t-1)<=>x2(t)=I(t-2) x2(t-2)x3(t-2)
这是按照并行电路:=> x2(p)=I1(p-1)x2(p-1)x3(p-1)
x3(t)=x2(t-1)<=>x3(t)=x1(t-2)这是按照并行电路:=> x3(p)=x1(p-1)
Q(t)=I(t-1)x1(t-1) x2(t-1)<=>Q(t)=I(t-1)[I(t-2)x2(t-2)x3(t-2)]x1(t-2)
这是按照并行电路:=> Q0(p)=I0(p-1)I1(p-1)x1(p-1)x2(p-1)x3(p-1)
Q(t-1)=I(t-2)x1(t-2)x2(t-2)
这是按照并行电路:=> Q1(p)=I1(p-1)x1(p-1)x2(p-1)
图5显示这个并行化过程的结果,即,对于图4所示的Turbo编码器块的二比特并行实施方案的电路图。
3.2实例:用于N=3,M=1,α=[0,1,1],β=[1,1,0,1]的4比特并行Turbo编码器
从方程(1)开始,我们得出x1(t)=I(t-1)x2(t-1)x3(t-1)x2(t)=x1(t-1)x3(t)=x2(t-1)Q(t)=I(t-1)x1(t-1)x2(t-1)这正如对于图4所示的Turbo编码器块说明的那样。以下在四个串行时间周期内以下的后向时标过渡是必须的:
x1(t)=I(t-1)x2(t-1)x3(t-1)<=>x1(t)=I(t-1)x1(t-2)x2(t-2)<=>x1(t)=I(t-1)I(t-3)x2(t-3)x3(t-3)x1(t-3)<=>x1(t)=I(t-1)I(t-3)x1(t-4)x2(t-4)
I(t-4)x2(t-4)x3(t-4)
这是按照并行电路:=> x1(p)=I0(p-1)12(p-1)I3(p-1)x1(p-1)x3(p-1)
x2(t)=x1(t-1)<=>x2(t)=I(t-2)x2(t-2)x3(t-2)<=>x2(t)=I(t-2)x1(t-3)x2(t-3)<=>x2(t)=I(t-2)[I(t-4)x2(t-4)x3(t-4)]x1(t-4)
这是按照并行电路:=> x2(p)=I1(p-1)I3(p-1)x1(p-1)x2(p-1)x3(p-1)
x3(t)=x2(t-1)<=>x3(t)=x1(t-2)<=>x3(t)=[I(t-3)x2(t-3)x3(t-3)]<=>x3(t)=I(t-3)x1(t-4)x2(t-4)
这是按照并行电路:=> x3(p)=I2(p-1)x1(p-1)x2(p-1)
Q(t) =I(t-1)x1(t-1)x2(t-1)<=>Q(t) =I(t-1)[I(t-2)x2(t-2)x3(t-2)]x1(t-2)<=>Q(t) =I(t-1)I(t-2)x1(t-3)x2(t-3)
[I(t-3)x2(t-3)x3(t-3)]<=>Q(t) =I(t-1)I(t-2)I(t-3)
[I(t-4)x2(t-4)x3(t-4)]x2(t-4)
这是按照并行电路:=> Q0(p) =I0(p-1)I1(p-1)I2(p-1)I3(p-1)x3(p-1)
Q(t-1)=I(t-2)x1(t-2)x2(t-2)<=>Q(t-1)=I(t-2)[I(t-3)x2(t-3)x3(t-3)]
x1(t-3)<=>Q(t-1)=I(t-2)I(t-3)x1(t-4)x2(t-4)
[I(t-4)x2(t-4)x3(t-4)]
这是按照并行电路:=> Q1(p) =I1(p-1)I2(p-1)I3(p-1)x1(p-1)x3(p-1)
Q(t-2)=I(t-3)x1(t-3)x2(t-3)<=>Q(t-2)=I(t-3)[I(t-4)x2(t-4)x3(t-4)]
x1(t-4)
这是按照并行电路:=> Q2(p) =I2(p-1)I3(p-1)x1(p-1)x2(p-1)x3(p-1)
Q(t-3)=I(t-4)x1(t-4)x2(t-4)
这是按照并行电路:=> Q3(p) =I3(p-1)x1(p-1)x2(p-1)
图6显示这个并行化过程的结果,即,对于图4所示的Turbo编码器块的四比特并行实施方案的电路图。
3.3实例:用于N=3,M=1,α=[0,1,1],β=[1,1,0,1]的8比特并行Turbo编码器
从方程(1)开始,我们得出x1(t)=I(t-1)x2(t-1)x3(t-1)x2(t)=x1(t-1)x3(t)=x2(t-1)Q(t)=I(t-1)x1(t-1)x2(t-1)
正如对于图4所示的Turbo编码器块说明的。在八个串行时间周期内以下的后向时标过渡是必须的:
x1(t)=I(t-1)x2(t-1)x3(t-1)<=>x1(t)=I(t-1)x1(t-2)x2(t-2)<=>x1(t)=I(t-1)[I(t-3)x2(t-3)x3(t-3)]x1(t-3)<=>x1(t)=I(t-1)I(t-3)x1(t-4)x2(t-4)
[I(t-4)x2(t-4)x3(t-4)]<=>x1(t)=I(t-1)I(t-3)I(t-4)
[I(t-5)x2(t-5)x3(t-5)]x2(t-5)<=>x1(t)=I(t-1)I(t-3)I(t-4)I(t-5)x2(t-6)<=>x1(t)=I(t-1)I(t-3)I(t-4)I(t-5)x1(t-7)<=>x1(t)=I(t-1)I(t-3)I(t-4)I(t-5)
[I(t-8)x2(t-8)x3(t-8)]
这是按照并行电路:=> x1(p)=I0(p-1)I2(p-1)I3(p-1)I4(p-1)
I7(p-1)x2(p-1)x3(p-1)
x2(t)=x1(t-1)<=>x2(t)=[I(t-2)x2(t-2)x3(t-2)]<=>x2(t)=I(t-2) x1(t-3)x2(t-3)<=>x2(t)=I(t-2)[I(t-4)x2(t-4)x3(t-4)]
x1(t-4)<=>x2(t)=I(t-2)I(t-4)x1(t-5)x2(t-5)
[I(t-5)x2(t-5)x3(t-5)]<=>x2(t)=I(t-2)I(t-4)I(t-5)
[I(t-6)x2(t-6)x3(t-6)]x2(t-6)<=>x2(t)=I(t-2)I(t-4)I(t-5)I(t-6)x2(t-7)<=>x2(t)=I(t-2)I(t-4)I(t-5)I(t-6)x1(t-8)这是按照并行电路:=> x2(p)=I1(p-1)I3(p-1)I4(p-1)I5(p-1)x1(p-1)
x3(t)=x2(t-1)<=>x3(t)=x1(t-2)<=>x3(t)=[I(t-3)x2(t-3)x3(t-3)]<=>x3(t)=I(t-3)x1(t-4)x2(t-4)<=>x3(t)=I(t-3)[I(t-5)x2(t-5)x3(t-5)]x1(t-5)<=>x3(t)=I(t-3)I(t-5)x1(t-6)x2(t-6)
[I(t-6)x2(t-6)x3(t-6)]<=>x3(t)=I(t-3)I(t-5)I(t-6)
[I(t-7)x2(t-7)x3(t-7)]x2(t-7)<=>x3(t)=I(t-3)I(t-5)I(t-6)I(t-7)x2(t-8)
这是按照并行电路:=> x3(p)=I2(p-1)I4(p-1)I5(p-1)I6(p-1)x2(p-1)
Q(t)= I(t-1)x1(t-1)x2(t-1)<=>Q(t)= I(t-1)[I(t-2)x2(t-2)x3(t-2)]x1(t-2)<=>Q(t)= I(t-1)I(t-2)x1(t-3)x2((t-3)
[I(t-3)x2(t-3)x3(t-3)]<=>Q(t)= I(t-1)I(t-2)I(t-3)
[I(t-4)x2((t-4)x3(t-4)]x2((t-4)<=>Q(t)= I(t-1)I(t-2)I(t-3)I(t-4)x2((t-5)<=>Q(t)= I(t-1)I(t-2)I(t-3)I(t-4)x1(t-6)<=>Q(t)= I(t-1)I(t-2)I(t-3)I(t-4)
[I(t-7)x2(t-7)x3(t-7)]<=>Q(t)= I(t-1)I(t-2)I(t-3)I(t-4)I(t-7)
x1(t-8)x2(t-8)
这是按照并行电路:=> Q0(p)= I0(p-1)I1(p-1)I2(p-1)I3(p-1)
I6(p-1)x1(p-1)x2(p-1)
Q(t-1)=I(t-2)x1(t-2)x2(t-2)<=>Q(t-1)=I(t-2)[I(t-3)x2(t-3)x3(t-3)]
x1(t-3)<=>Q(t-1)=I(t-2)I(t-3)x1(t-4)x2((t-4)
[I(t-4)x2(t-4)x3(t-4)]<=>Q(t-1)=I(t-2)I(t-3)I(t-4)
[I(t-5)x2(t-5)x3(t-5)]x2(t-5)<=>Q(t-1)=I(t-2)I(t-3)I(t-4)I(t-5)x2(t-6)<=>Q(t-1)=I(t-2)I(t-3)I(t-4)I(t-5)x1(t-7)<=>Q(t-1)=I(t-2)I(t-3)I(t-4)I(t-5)
[I(t-8)x2(t-8)x3(t-8)] 这是按照并行电路:=> Q1(p)= I1(p-1)I2(p-1)I3(p-1)I4(p-1)
I7(p-1)x2(p-1)x3(p-1)
Q(t-2)=I(t-3)x1(t-3)x2(t-3)<=>Q(t-2)=I(t-3)[I(t-4)x2(t-4)x3(t-4)]
x1(t-4)<=>Q(t-2)=I(t-3)I(t-4)x1(t-5)x2(t-5)
[I(t-5)x2(t-5)x3(t-5)]<=>Q(t-2)=I(t-3)I(t-4)I(t-5)
[I(t-6)x2(t-6)x3(t-6)]x2(t-6)<=>Q(t-2)=I(t-3)I(t-4)I(t-5)I(t-6)x2(t-7)<=>Q(t-2)=I(t-3)I(t-4)I(t-5)I(t-6)x1(t-8)
这是按照并行电路:=> Q2(p)= I2(p-1)I3(p-1)I4(p-1)I5(p-1)x1(p-1)
Q(t-3)=I(t-4)x1(t-4)x2(t-4)<=>Q(t-3)=I(t-4)[I(t-5)x2(t-5)x3(t-5)]
x1(t-5)<=>Q(t-3)=I(t-4)I(t-5)x1(t-6)x2(t-6)
[I(t-6)x2(t-6)x3(t-6)]<=>Q(t-3)=I(t-4)I(t-5)I(t-6)
[I(t-7)x2(t-7)x3(t-7)]x2(t-7)<=>Q(t-3)=I(t-4)I(t-5)I(t-6)I(t-7)x2(t-8)
这是按照并行电路:=> Q3(p)= I3(p-1)I4(p-1)I5(p-1)I6(p-1)x2(p-1)
Q(t-4)=I(t-5)x1(t-5)x2(t-5)<=>Q(t-4)=I(t-5)[I(t-6)x2(t-6)x3(t-6)]
x1(t-6)<=>Q(t-4)=I(t-5)I(t-6)x1(t-7)x2(t-7)
[I(t-7)x2(t-7)x3(t-7)]<=>Q(t-4)=I(t-5)I(t-6)I(t-7)
[I(t-8)x2(t-8)x3(t-8)]x2(t-8)
这是按照并行电路:=> Q4(p)= I4(p-1)I5(p-1)I6(p-1)I7(p-1)x3(p-1)
Q(t-5)=I(t-6)x1(t-6)x2(t-6)<=>Q(t-5)=I(t-6)[I(t-7)x2(t-7)x3(t-7)]
x1(t-7)<=>Q(t-5)=I(t-6)I(t-7)x1(t-8)x2(t-8)
[I(t-8)x2(t-8)x3(t-8)]
这是按照并行电路:=> Q5(p)= I5(p-1)I6(p-1)I7(p-1)x1(p-1)x3(p-1)
Q(t-6)=I(t-7)x1(t-7)x2(t-7)<=>Q(t-6)=I(t-7)[I(t-8)x2(t-8)x3(t-8)]
x1(t-8)
这是按照并行电路:=> Q6(p)=I6(p-1)I7(p-1)x1(p-1)x2(p-1)x3(p-1)
Q(t-7)=I(t-8)x1(t-8)x2(t-8)
这是按照并行电路:=> Q7(p)=I7(p-1)x1(p-1)x2(p-1)
图7A和7B显示这个并行化过程的结果,即,对于图4所示的Turbo编码器块的八比特并行实施方案的电路图。
4.VHDL代码
按照逐个步骤方式描述的上述递归并行化可以与逻辑综合工具一起使用,以便比较不同的设计替换例。不存在对任何这样特定系统的限制,这里,参考非常高速度硬件说明语言VHDL,以作为使用逻辑综合工具的逻辑电路设计的典型例子。
作为Turbo编码器块并行化结果的实施方案的VHDL代码方法的优点在于,设计可以在非常短的时间内实施,而不限于特定的技术(例如ASIC或FPGA)。
因此,实际的技术不是通过Turbo编码器块并行化结果而被规定的,而是可被设置为在进行编码后要借助逻辑综合工具来处理的参量,因此,可以容易地被加以改变以便去比较不同的设计任选方案。
在下面,列出对于图5、6和7所示的2,4和8比特并行化Turbo编码器块的VHDL代码。因为VHDL代码语言的使用在技术上是熟知的,以上说明的并行化结果的关系是显然的,这里不再给出细节的说明。
LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; ENTITY en_turbo_coder_rtl IS PORT( --General: reset_p : IN STD_LOGIC; clk32m : IN STD_LOGIC;--Clock (rising edge triggered) input_8 : IN std_logic_vector(7 DOWNTO 0); input_4 : IN std_logic_vector(3 DOWNTO 0); input_2 : IN std_logic_vector(1 DOWNTO 0); input_1 : IN std_logic; --turboCoding 2 bit parallel output_8 : OUT std_logic_vector(7 DOWNTO 0); output_4 : OUT std_logic_vector(3 DOWNTO 0); output_2 : OUT std_logic_vector(1 DOWNTO 0); output_1 : OUT std_logic ); END en_turbo_coder_rtl; ARCHITECTURE rtl OF en_turbo_coder_rtl IS <dp n="d26"/> SIGNAL s1_x1 : std_logic; SIGNAL s1_x2 : std_logic; SIGNAL s1_x3 : std_logic; SIGNAL s1_i : std_logic; SIGNAL s1_o : std_logic; SIGNAL s2_x1 : std_logic; SIGNAL s2_x2 : std_logic; SIGNAL s2_x3 : std_logic; SIGNAL s2_i : std_logic_vector(1 DOWNTO 0); SIGNAL s2_o : std_logic_vector(1 DOWNTO 0); SIGNAL s4_x1 : std_logic; SIGNAL s4_x2 : std_logic; SIGNAL s4_x3 : std_logic; SIGNAL s4_i : std_logic_vector(3 DOWNTO 0); SIGNAL s4_o : std_logic_vector(3 DOWNTO 0); SIGNAL s8_x1 : std_logic; SIGNAL s8_x2 : std_logic; SIGNAL s8_x3 : std_logic; SIGNAL s8_i : std_logic_vector(7 DOWNTO 0); SIGNAL s8_o : std_logic_vector(7 DOWNTO 0); BEGIN tc_1: PROCESS(clk32m,reset_p)--seriell building of turbo coder block TCB BEGIN IF reset_p=′1′THEN <dp n="d27"/> s1_x1<=′0′; s1_x2<=′0′; s1_x3<=′0′; s1_i <=′0′; s1_o <=′0′; ELSIF clk32m′EVENT AND clk32m=′1′THEN s1_i <=input_1; s1_x1<=s1_i XOR s1_x2 XOR s1_x3; s1_x2<=s1_x1; s1_x3<=s1_x2; s1_o <=s1_i XOR s1_x2 XOR s1_x1; END IF; END PROCESS tc_1; output_1<=s1_o; tc_2:PROCESS(clk32m,reset_p)--2bit parallel building of turbo coder block BEGIN IF reset_p=′1′THEN s2_x1<=′0′; s2_x2<=′0′; s2_x3<=′0′; s2_i <=(OTHERS=>′0′); s2_o <=(OTHERS=>′0′); <dp n="d28"/> ELSIF clk32m′EVENT AND clk32m=′1′THEN s1_i <=input_2 ; s2_x1<=s2_i(0) XOR s2_x1 XOR s2_x2; s2_x2<=s2_i(1) XOR s2_x2 XOR s2_x3; s2_x3<=s2_x1; s2_o(0)<=s2_i(0) XOR s2_i(1) XOR s2_x1 XOR s2_x2 XOR s2_x3; s2_o(1)<=s2_i(1) XOR s2_x1 XOR s2_x2; END IF; END PROCESS tc_2; output_2<=s2_o; tc_4:PROCESS(clk32m,reset_p)--4bit parallel building of turbo coder block BEGIN IF reset_p=′1′THEN s4_x1<=′0′; s4_x2<=′0′; s4_x3<=′0′; s4_i <=(OTHERS=>′0′); s4_o <=(OTHERS=>′0′); ELSIF clk32m′EVENT AND clk32m=′1′THEN s4_i <=input_4 ; s4_x1 <=s4_i(0) XOR s4_i(2) XOR s4_i(3) <dp n="d29"/> XOR s4_x1 XOR s4_x3; s4_x2 <=s4_i(1) XOR s4_i(3) XOR s4_x1 XOR s4_x2 XOR s4_x3; s4_x3 <=s4_i(2) XOR s4_x1 XOR s4_x2; s4_o(0)<=s4_i(0) XOR s4_i(1) XOR s4_i(2) XOR s4_i(3) XOR s4_x3; s4_o(1)<=s4_i(1) XOR s4_i(2) XOR s4_i(3) XOR s4_x1 XOR s4_x3; s4_o(2)<=s4_i(2) XOR s4_i(3) XOR s4_x1 XOR s4_x2 XOR s4_x3; s4_o(3)<=s4_i(3) XOR s4_x1 XOR s4_x2; END IF; END PROCESS tc_4; output_4<=s4_o; tc_8:PROCESS(clk32m,reset_p)--8bit parallel building of turbo coder block BEGIN IF reset_p=′1′THEN s8_x1<=′0′; s8_x2<=′0′; s8_x3<=′0′; s8_i <=(OTHERS=>′0′); s8_o <=(OTHERS=>′0′); ELSIF clk32m′EVENT AND clk32m=′1′THEN <dp n="d30"/> s8_i <=input_8 ; s8_x1 <=s8_i(0) XOR s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(7) XOR s8_x2 XOR s8_x3; s8_x2 <=s8_i(1) XOR s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_x1; s8_x3 <=s8_i(2) XOR s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_x2; s8_o(0)<=s8_i(0) XOR s8_i(1) XOR s8_i(2) XOR s8_i(3) XOR s8_i(6) XOR s8_x1 XOR s8_x2; s8_o(1)<=s8_i(1) XOR s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(7) XOR s8_x2 XOR s8_x3; s8_o(2)<=s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_x1; s8_o(3)<=s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_x2; s8_o(4)<=s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_i(7) XOR s8_x3; s8_o(5)<=s8_i(5) XOR s8_i(6) XOR s8_i(7) XOR s8_x1 XOR s8_x3; s8_o(6)<=s8_i(6) XOR s8_i(7) XOR s8_x1 XOR s8_x2 XOR s8_x3; s8_o(7)<=s8_i(7) XOR s8_x1 XOR s8_x2; END IF; END PROCESS tc_8; output_8 <=s8_o; END rtl;
5.Turbo编码器实现
虽然图8涉及到以上本发明的背景技术,但图8也涉及到本发明,正如下面看到的那样。
以上描述的本发明涉及到带有M个输出的Turbo编码器块的并行化。无论如何,应当指出,按照本发明,构建一个完整的Turbo编码器需要对并行化Turbo编码器块进行两次例示,正如图8所示的那样(其中在Turbo编码器块中假设M=1)。
一个Turbo编码器块涉及到图8所示的、用于导出OUTPUT1的正常的输入数据流,以及另一个涉及到用于导出OUTPUT2的交替的输入数据流。因为输入数据流也直接传送到OUTPUT0,所以Turbo编码器的三个输出具有每个并行时钟周期3n比特的宽度,其中n是其并行化指数。
Claims (9)
1.并行Turbo编码器实施方法,该方法按照下式从串行Turbo编码器块说明开始:x1(t)=I(t-1)α1·x1(t-1)α2·x2(t-1)...αN·xN(t-1)
αiε{0,1}x2(t)=x1(t-1). .. .. .xN(t)=xN-1(t-1)Qj(t)=βj0·I(t-1)
x1(t-1)·[βj0·α1βj1]
.
.
.
xN(t-1)·[βj0·αNβjN]
βijε{0,1}
jε[1,...,N]
包括以下步骤:
(a)按照下式对第一内部状态实行时标替换:x1(t-1) =I(t-2) α1·x1(t-2)
α2·x2(t-2)...
αN·xN(t-2)
(2.x1.1)
.
.x1(t-(n-1))=I(t-n)α1·x1(t-n)
α2·x2(t-n)...
αN·xN(t-n)
(2.x1.n-1)
其中n是并行化指数。
(b)按照下式对其余的内部状态(i=2,...,N)实行时标替换:xi(t-1)=xi-1(t-2)
(2.xi.1)xi(t-(n-1))=xi-1(t-n)
(2.xi.n-1)
(c)按照下式对输出实行时标替换:Qj(t-i)=βj0·I(t-(i+1))
x1(t-(i+1))·[βj0·α1βj1]
xN(t-(i+1))·[βj0·αNβjN]
iε[1,...,n-1]
(2.Q.i)
以导出并行输出矢量:Qj(t)=Qj0(p)Qj(t-1)=Qj1(p)Qj(t-(n-1))=Qjn-1(p)
jε[1,...,M]
(d)按照以下子步骤对每个内部状态xk(t)(k=1,...,N)实行内部状态替换处理:
(d1)把内部状态xk(t)的最大时标单元设置为tmax=t-1;
(d2)扫描内部状态xk(t)的表示式,寻找具有最大时标tmax的内部状态;
(d3)在内部状态xk(t)的表示式中通过使用方程(2)的状态变量替换步骤执行从tmax到tamx-1的后向时标过渡;和
(d4)把tmax递减1,以及当tmax>t-n时,重复进行步骤(d2)到(d4);
(e)按照以下子步骤对每个并行输出矢量Qj(t)(j=1,...,M)的每个单元Qj(t-i)(i=0,...,n-2)实行内部状态替换处理:
(e1)把在所考虑的并行输出矢量Qj(t)中的矢量单元Qj(t-i)的最大时标单元设置为tmax=t-i-1;
(e2)扫描矢量单元Qj(t-i)的表示式,寻找具有最大时标的内部状态;
(e3)在矢量单元Qj(t-i)的表示式中通过使用方程(2)的状态变量替换步骤执行从tmax到tmax-1的后向时标过渡;和
(e4)把tmax递减1,以及当tmax到>t-n时重复进行步骤(e2)到(e4)。
2.具有并行化指数n的并行Turbo编码器块,包括
(a)用于把输入信号I(t)的n个样本(I(t-1),...,I(t-n))存储到并行Turbo编码器块的装置(I0,...,I7);
(b)用于存储并行Turbo编码器块的至少一个输出信号Qj(t)(j=1,...,M)的n个样本(Qj(t),...,Qj(t-(n-1))的至少一个装置(Q0,...,Q7);
(c)Turbo编码器装置,它包括一组n个延时单元(X1,...,XN),以及适合于并行处理输入信号I(t)的n个样本,从而该组的至少两个延时单元(X1,...,XN)直接接收输入信号I(t)的n个样本(I(t-1),...,I(t-n)),以及Turbo编码器装置中的至少一个延时单元(X1,...,XN)的输出信号被提供到Turbo编码器装置中的至少两个延时单元。
3.按照权利要求2的并行Turbo编码器块,其特征在于,Turbo编码器装置具有一个结构,该结构可以通过权利要求1的并行Turbo编码器实施方法按照下式从串行Turbo编码器块说明中导出:x1(t)=I(t-1)α1·x1(t-1)α2·x2(t-1)...αN·xN(t-1)
αiε{0,1}x2(t)=x1(t-1). .. .. .xN(t)=xN-1(t-1)Qj(t)=βj0·I(t-1)
x1(t-1)·[βj0·α1βj1]
.
.xN(t-1)·[βj0·αNβjN]
βjiε{0,1}
jε[1,...,M]
4.按照权利要求2或3的并行Turbo编码器块,其特征在于,并行化指数是2,N=3,M=1,α=[0,1,1],β=[1,1,0,1],以及Turbo编码器装置的结构是:Q0(p)=I0(p-1)I1(p-1)x1(p-1)x2(p-1)x3(p-1)Q1(p)=I1(p-1)x1(p-1)x2(p-1),
其中x1(p)=I0(p-1)x1(p-1)x2(p-1),x2(p)=I1(p-1)x2(p-1)x3(p-1),和x3(p)=x1(p-1).
5.按照权利要求2或3的并行Turbo编码器块,其特征在于,并行化指数是4,N=3,M=1,α=[0,1,1],β=[1,1,0,1],以及Turbo编码器装置的结构是:Q0(p)=I0(p-1)I1(p-1)I2(p-1)I3(p-1)x3(p-1)Q1(p)=I1(p-1)I2(p-1)I3(p-1)x1(p-1)x3(p-1)Q2(p)=I2(p-1)I3(p-1)x1(p-1)x2(p-1)x3(p-1)Q3(p)=I3(p-1)x1(p-1)x2(p-1),
其中x1(p)=I0(p-1)I2(p-1)I3(p-1)
x1(p-1)x3(p-1),x2(p)=I1(p-1)I3(p-1)
x1(p-1)x2(p-1)x3(p-1),和x3(p)=I2(p-1)x1(p-1)x2(p-1).
6.按照权利要求2或3的并行Turbo编码器块,其特征在于,并行化指数是8,N=3,M=1,α=[0,1,1],β=[1,1,0,1],以及Turbo编码器装置的结构是:Q0(p)=I0(p-1)I1(p-1)I2(p-1)I3(p-1)
I6(p-1)x1(p-1)x2(p-1)Q1(p)=I1(p-1)I2(p-1)I3(p-1)I4(p-1)
I7(p-1)x2(p-1)x3(p-1)Q2(p)=I2(p-1)I3(p-1)I4(p-1)I5(p-1)x1(p-1)Q3(p)=I3(p-1)I4(p-1)I5(p-1)I6(p-1)x2(p-1)Q4(p)=I4(p-1)I5(p-1)I6(p-1)I7(p-1)x3(p-1)Q5(p)=I5(p-1)I6(p-1)I7(p-1)x1(p-1)x3(p-1)Q6(p)=I6(p-1)I7(p-1)x1(p-1)x2(p-1)x3(p-1)Q7(p)=I7(p-1)x1(p-1)x2(p-1),
其中x1(p)=I0(p-1)I2(p-1)I3(p-1)
I4(p-1)I7(p-1)x2(p-1)x3(p-1),x2(p)=I1(p-1)I3(p-1)I4(p-1)I5(p-1)
x1(p-1),和x3(p)=I2(p-1)I4(p-1)I5(p-1)I6(p-1)x2(p-1).
7.可直接装载到计算机的内存的计算机程序产品,
包括软件代码部分,当该产品在计算机上运行时用于执行按照权利要求1的步骤。
8.按照权利要求7的计算机程序产品,其特征在于,软件代码部分是VHDL类型的。
9.按照权利要求8的计算机程序产品,其特征在于,软件代码部分被规定为:
LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; ENTITY_en_turbo_coder_rtl_IS PORT( --General: reset_p : IN STD_LOGIC; clk32m : IN STD_LOGIC; --Clock (rising edge triggered) input_8 : IN std_logic_vector(7 DOWNTO 0); input_4 : IN std_logic_vector(3 DOWNTO 0); input_2 : IN std_logic_vector(1 DOWNTO 0); input_1 : IN std_logic; -- turboCoding 2 bit parallel output_8 : OUT std_logic_vector(7 DOWNTO 0); output_4 : OUT std_logic_vector(3 DOWNTO 0); output_2 : OUT std_logic_vector(1 DOWNTO 0); output_1 : OUT std_logic ); END_en_turbo_coder_rtl; ARCHITECTURE rtl OF en_turbo_coder_rtl IS SIGNAL s1_x1 : std_logic; SIGNAL s1_x2 : std_logic; SIGNAL s1_x3 : std_logic; SIGNAL s1_i : std_logic; SIGNAL s1_o : std_logic; <dp n="c7"/> SIGNAL s2_x1 : std_logic; SIGNAL s2_x2 : std_logic; SIGNAL s2_x3 : std_logic; SIGNAL s2_i : std_logic_vector(1 DOWNTO 0); SIGNAL s2_o : std_logic_vector(1 DOWNTO 0); SIGNAL s4_x1 : std_logic; SIGNAL s4_x2 : std_logic; SIGNAL s4_x3 : std_logic; SIGNAL s4_i : std_logic_vector(3 DOWNTO 0); SIGNAL s4_o : std_logic_vector(3 DOWNTO 0); SIGNAL s8_x1 : std_logic; SIGNAL s8_x2 : std_logic; SIGNAL s8_x3 : std_logic; SIGNAL s8_i : std_logic_vector(7 DOWNTO 0); SIGNAL s8_o : std_logic_vector(7 DOWNTO 0); BEGIN tc_1:PROCESS(clk32m,reset_p)--seriell building of TC BEGIN IF reset_p=′1′THEN s1_x1<=′0′; s1_x2<=′0′; s1_x3<=′0′; s1_i <=′0′; s1_o <=′0′; ELSIF clk32m′EVENT AND clk32m=′1′THEN <dp n="c8"/> s1_i <=input_1; s1_x1<=s1_i XOR s1_x2 XOR s1_x3; s1_x2<=s1_x1; s1_x3<=s1_x2; s1_o <=s1_i XOR s1_x2 XOR s1_x1; END IF; END PROCESS tc_1; output_1<=s1_o; tc_2:PROCESS(clk32m,reset_p)--2bit par building of TC BEGIN IF reset_p=′1′THEN s2_x1<=′0′; s2_x2<=′0′; s2_x3<=′0′; s2_i<=(OTHERS=>′0′); s2_o<=(OTHERS=>′0′); ELSIF clk32m′EVENT AND clk32m=′1′THEN s2_i<=input_2; s2_x1<=s2_i(0) XOR s2_x1 XOR s2_x2; s2_x2<=s2_i(1) XOR s2_x2 XOR s2_x3; s2_x3<=s2_x1; s2_o(0)<=s2_i(0) XOR s2_i(1) XOR s2_x1 XOR s2_x2 XOR s2_x3; <dp n="c9"/> s2_o(1)<=s2_i(1) XOR s2_x1 XOR s2_x2; END IF; END PROCESS tc_2; output_2<=s2_o; tc_4:PROCESS(clk32m,reset_p)--4bit par building of TC BEGIN IF reset_p=′1′THEN s4_x1 <=′0′; s4_x2 <=′0′; s4_x3 <=′0′; s4_i <=(OTHERS=>′0′); s4_o <=(OTHERS=>′0′); ELSIF clk32m′EVENT AND clk32m=′1′THEN s4_i <=input_4; s4_x1 <=s4_i(0) XOR s4_i(2) XOR s4_i(3) XOR s4_x1 XOR s4_x3; s4_x2 <=s4_i(1) XOR s4_i(3) XOR s4_x1 XOR s4_x2 XOR s4_x3; s4_x3 <=s4_i(2) XOR s4_x1 XOR s4_x2; s4_o(0) <=s4_i(0) XOR s4_i(1) XOR s4_i(2) XOR s4_i(3) XOR s4_x3; s4_o(1) <=s4_i(1) XOR s4_i(2) XOR s4_i(3) XOR s4_x1 XOR s4_x3; s4_o(2) <=s4_i(2) XOR s4_i(3) XOR s4_x1 <dp n="c10"/> XOR s4_x2 XOR s4_x3; s4_o(3) <=s4_i(3) XOR s4_x1 XOR s4_x2; END IF; END PROCESS tc_4; output_4 <=s4_o; tc_8:PROCESS(clk32m,reset_p)--8bit par building of TC BEGIN IF reset_p=′1′THEN s8_x1 <=′0′; s8_x2 <=′0′; s8_x3 <=′ 0′; s8_i <=(OTHERS=>′0′); s8_o <=(OTHERS=>′0′); ELSIF clk32m′EVENT AND clk32m=′1′THEN s8_i <=input_8; s8_x1 <=s8_i(0) XOR s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(7) XOR s8_x2 XOR s8_x3; s8_x2 <=s8_i(1) XOR s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_x1; s8_x3 <=s8_i(2) XOR s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_x2; s8_o(0)<=s8_i(0) XOR s8_i(1) XOR s8_i(2) <dp n="c11"/> XOR s8_i(3) XOR s8_i(6) XOR s8_x1 XOR s8_x2; s8_o(1) <=s8_i(1) XOR s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(7) XOR s8_x2 XOR s8_x3; s8_o(2) <=s8_i(2) XOR s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_x1; s8_o(3) <=s8_i(3) XOR s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_x2; s8_o(4) <=s8_i(4) XOR s8_i(5) XOR s8_i(6) XOR s8_i(7) XOR s8_x3; s8_o(5) <=s8_i(5) XOR s8_i(6) XOR s8_i(7) XOR s8_x1 XOR s8_x3; s8_o(6) <=s8_i(6) XOR s8_i(7) XOR s8_x1 XOR s8_x2 XOR s8_x3; s8_o(7) <=s8_i(7) XOR s8_x1 XOR s8_x2; END IF; END PROCESS tc_8; output_8<=s8_o; END rtl;
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP99117945.8 | 1999-09-15 | ||
EP99117945A EP1085660A1 (en) | 1999-09-15 | 1999-09-15 | Parallel turbo coder implementation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1390391A true CN1390391A (zh) | 2003-01-08 |
CN1196268C CN1196268C (zh) | 2005-04-06 |
Family
ID=8238967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008157316A Expired - Fee Related CN1196268C (zh) | 1999-09-15 | 2000-09-04 | 并行涡轮编码器实施方案 |
Country Status (11)
Country | Link |
---|---|
US (1) | US6651209B1 (zh) |
EP (2) | EP1085660A1 (zh) |
JP (1) | JP4713039B2 (zh) |
KR (1) | KR20020035595A (zh) |
CN (1) | CN1196268C (zh) |
AR (1) | AR025674A1 (zh) |
AT (1) | ATE263454T1 (zh) |
AU (1) | AU6842800A (zh) |
DE (1) | DE60009531T2 (zh) |
TW (1) | TW474068B (zh) |
WO (1) | WO2001020787A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571282B (zh) * | 2003-03-31 | 2010-10-06 | 法国电信公司 | 纠错编码方法、编码方法、相应的编码和解码装置 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7315579B2 (en) * | 2001-02-28 | 2008-01-01 | Broadcom Corporation | Trellis coded modulation tails |
US6980820B2 (en) | 2001-08-20 | 2005-12-27 | Qualcomm Inc. | Method and system for signaling in broadcast communication system |
US6731936B2 (en) | 2001-08-20 | 2004-05-04 | Qualcomm Incorporated | Method and system for a handoff in a broadcast communication system |
US6701482B2 (en) * | 2001-09-20 | 2004-03-02 | Qualcomm Incorporated | Method and apparatus for coding bits of data in parallel |
US6948109B2 (en) * | 2001-10-24 | 2005-09-20 | Vitesse Semiconductor Corporation | Low-density parity check forward error correction |
US6954885B2 (en) * | 2001-12-14 | 2005-10-11 | Qualcomm Incorporated | Method and apparatus for coding bits of data in parallel |
US7912485B2 (en) | 2003-09-11 | 2011-03-22 | Qualcomm Incorporated | Method and system for signaling in broadcast communication system |
US8570880B2 (en) | 2004-08-05 | 2013-10-29 | Qualcomm Incorporated | Method and apparatus for receiving broadcast in a wireless multiple-access communications system |
EP1880473A2 (en) * | 2005-01-14 | 2008-01-23 | Nxp B.V. | Channel encoding with two tables containing two sub-systems of a z system |
US8620900B2 (en) * | 2009-02-09 | 2013-12-31 | The Hong Kong Polytechnic University | Method for using dual indices to support query expansion, relevance/non-relevance models, blind/relevance feedback and an intelligent search interface |
US8583993B2 (en) * | 2011-06-17 | 2013-11-12 | Lsi Corporation | Turbo parallel concatenated convolutional code implementation on multiple-issue processor cores |
KR101286019B1 (ko) * | 2012-01-20 | 2013-07-19 | 주식회사 이노와이어리스 | 터보 인코더 장치 |
EP2693673A1 (en) * | 2012-08-01 | 2014-02-05 | Alcatel Lucent | Bit-interleaver for an optical line terminal |
US9281846B2 (en) | 2013-07-31 | 2016-03-08 | Globalfoundries Inc | Turbo encoding on a parallel processor |
EP2899991A1 (en) * | 2014-01-24 | 2015-07-29 | Alcatel Lucent | Space time switch and bit interleaver |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61214623A (ja) * | 1985-03-20 | 1986-09-24 | Fujitsu Ltd | 畳み込み符号化回路 |
JPH07253895A (ja) * | 1994-03-14 | 1995-10-03 | Sony Corp | 複数ビット同時演算による高速除算器 |
FI100565B (fi) * | 1996-01-12 | 1997-12-31 | Nokia Mobile Phones Ltd | Tiedonsiirtomenetelmä ja laitteisto signaalin koodaamiseksi |
US6023783A (en) * | 1996-05-15 | 2000-02-08 | California Institute Of Technology | Hybrid concatenated codes and iterative decoding |
KR19990012821A (ko) * | 1997-07-31 | 1999-02-25 | 홍성용 | 전자기파 흡수체 조성물과 이의 제조 방법, 전자기파 흡수용도료 조성물과 이의 제조 방법 및 이의 도포 방법 |
KR100334819B1 (ko) * | 1998-06-05 | 2002-05-02 | 윤종용 | 레이트 매칭을 위한 채널 부호화 장치 및 방법 |
AU731794B2 (en) * | 1998-08-20 | 2001-04-05 | Samsung Electronics Co., Ltd. | Device and method for inserting previously known bits in input stage of channel encoder |
JP2000114986A (ja) * | 1998-10-08 | 2000-04-21 | Oki Electric Ind Co Ltd | 符号化方法及び装置 |
US6366624B1 (en) * | 1998-11-30 | 2002-04-02 | Ericsson Inc. | Systems and methods for receiving a modulated signal containing encoded and unencoded bits using multi-pass demodulation |
US6304991B1 (en) * | 1998-12-04 | 2001-10-16 | Qualcomm Incorporated | Turbo code interleaver using linear congruential sequence |
-
1999
- 1999-09-15 EP EP99117945A patent/EP1085660A1/en not_active Withdrawn
-
2000
- 2000-08-24 TW TW089117076A patent/TW474068B/zh not_active IP Right Cessation
- 2000-09-04 AU AU68428/00A patent/AU6842800A/en not_active Abandoned
- 2000-09-04 JP JP2001524245A patent/JP4713039B2/ja not_active Expired - Lifetime
- 2000-09-04 EP EP00956515A patent/EP1221200B1/en not_active Expired - Lifetime
- 2000-09-04 KR KR1020027003287A patent/KR20020035595A/ko not_active Application Discontinuation
- 2000-09-04 WO PCT/EP2000/008631 patent/WO2001020787A1/en not_active Application Discontinuation
- 2000-09-04 AT AT00956515T patent/ATE263454T1/de not_active IP Right Cessation
- 2000-09-04 DE DE60009531T patent/DE60009531T2/de not_active Expired - Lifetime
- 2000-09-04 CN CNB008157316A patent/CN1196268C/zh not_active Expired - Fee Related
- 2000-09-12 US US09/660,290 patent/US6651209B1/en not_active Expired - Lifetime
- 2000-09-14 AR ARP000104837A patent/AR025674A1/es unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571282B (zh) * | 2003-03-31 | 2010-10-06 | 法国电信公司 | 纠错编码方法、编码方法、相应的编码和解码装置 |
Also Published As
Publication number | Publication date |
---|---|
DE60009531D1 (de) | 2004-05-06 |
EP1221200A1 (en) | 2002-07-10 |
CN1196268C (zh) | 2005-04-06 |
DE60009531T2 (de) | 2005-03-03 |
AR025674A1 (es) | 2002-12-11 |
EP1085660A1 (en) | 2001-03-21 |
EP1221200B1 (en) | 2004-03-31 |
JP2003509943A (ja) | 2003-03-11 |
WO2001020787A1 (en) | 2001-03-22 |
KR20020035595A (ko) | 2002-05-11 |
US6651209B1 (en) | 2003-11-18 |
AU6842800A (en) | 2001-04-17 |
TW474068B (en) | 2002-01-21 |
JP4713039B2 (ja) | 2011-06-29 |
ATE263454T1 (de) | 2004-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1390391A (zh) | 并行涡轮编码器实施方案 | |
CN1153354C (zh) | 纠错编码器、纠错解码器和具有纠错码的数据传输系统 | |
CN1159854C (zh) | 交织地址生成装置及其方法 | |
CN1187716C (zh) | 用于编码和解码关键字数据的装置和方法 | |
CN1330455A (zh) | Turbo(涡轮)码的译码电路和编码译码电路 | |
CN1201494C (zh) | 最大后验概率译码方法和装置 | |
CN1139191C (zh) | 涡轮码纠错译码方法 | |
CN1122420C (zh) | 图象译码装置 | |
CN1630204A (zh) | 具有矩阵转换技术的循环冗余码计算方法及系统 | |
CN2631163Y (zh) | 一种时分双工/码分多址(tdd/cd ma)通信系统 | |
CN1194510A (zh) | 位置分集接收方法、基站主机设备及接收信号的处理方法 | |
CN1770864A (zh) | 基于avs的4×4离散余弦变换的快速并行装置及其方法 | |
CN1189019A (zh) | 包括结合多维调制的乘积码的数字传输系统与方法 | |
CN1226039A (zh) | 指数计算装置和解码装置 | |
CN1669071A (zh) | 用于在音频代码的编码/解码处理之间转换代码的方法和装置以及使用该方法和装置的存储介质 | |
CN1023353C (zh) | 录音和重放的方法和设备 | |
CN1279550A (zh) | 时钟信号控制方法及电路和使用其的数据传输装置 | |
CN1269680A (zh) | 交织器装置以及用于交织数据集的方法 | |
CN1314208C (zh) | 可扩展标记语言数据流压缩器及其压缩方法 | |
CN1234932A (zh) | 变长帧传输方法、发射机和接收机 | |
CN1020364C (zh) | 改进的数字信号数据及前向差错控制编码技术 | |
CN1187902C (zh) | 解码设备 | |
CN1848718A (zh) | 应用于可变长度通讯系统的方法 | |
CN1878311A (zh) | 用于编码和解码比特流和并列内插器的装置和方法 | |
CN1112047C (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050406 Termination date: 20160904 |