CN101116249A - 并行交织器、并行解交织器以及交织方法 - Google Patents
并行交织器、并行解交织器以及交织方法 Download PDFInfo
- Publication number
- CN101116249A CN101116249A CNA2006800040360A CN200680004036A CN101116249A CN 101116249 A CN101116249 A CN 101116249A CN A2006800040360 A CNA2006800040360 A CN A2006800040360A CN 200680004036 A CN200680004036 A CN 200680004036A CN 101116249 A CN101116249 A CN 101116249A
- Authority
- CN
- China
- Prior art keywords
- data
- row
- address
- write
- interleaver
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0071—Use of interleaving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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/27—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 using interleaving techniques
- H03M13/276—Interleaving address generation
-
- 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/27—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 using interleaving techniques
- H03M13/2771—Internal interleaver for turbo 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/27—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 using interleaving techniques
- H03M13/2792—Interleaver wherein interleaving is performed jointly with another technique such as puncturing, multiplexing or routing
- H03M13/2796—Two or more interleaving operations are performed jointly, e.g. the first and second interleaving operations defined for 3GPP UMTS are performed jointly in a single interleaving operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0064—Concatenated codes
- H04L1/0066—Parallel concatenated 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Probability & Statistics with Applications (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
Abstract
提供能够实现以较简单的结构灵活地应对交织图案的变更,并可防止存储器存取争用的并行交织器。它设有:由多个存储库(RAM0~RAM4)构成,各个库与二维排列的一个或多个行号相对应的存储器(702);生成分别在二维排列的数据结构中的其他行中规定的多个行内重新排列图案的图案生成单元(710);以及在内部具有图案生成单元(710),并基于多个行内重新排列图案生成多个地址的读出控制单元(706~712),从存储器(702)同时读出多个数据。
Description
技术领域
本发明特别涉及并行交织器、并行解交织器以及交织方法,用于实现对二维排列型的数据结构以行方向优先的方式写入数据,进行各个行的行内重新排列,将每个行彼此重新排列,并以列方向优先的方式读出数据的交织算法。
背景技术
(交织的算法)
首先,说明以往的交织器的算法。交织处理是指,将长度K的数据串{d[0],d[1],...,d[K-1]}重新排列,并输出数据串{d’[0],d’[1],...,d’[K-1]}的处理。各个数据d[i]可以是单一的比特或固定小数点数(即所谓的软判决值)等各种情况,因此在此之后称为码元。
在以往的交织算法中,有使用二维排列型的数据结构的交织算法。其基本的算法如下。在此,举例介绍非专利文献1的记载。其交织方式作为质数交织器(Prime Interleaver;PIL)而为人所知。下面,说明PIL的步骤。使用图1、图2及图3举例说明数据长度K=45的情况。
[步骤1]根据数据长度K,以规定的算式决定排列的行数R和列数C。
[步骤2]以行方向优先的方式在R行C列的排列写入码元。此时,数据长度K不足于排列的大小RC时,在剩余的区域写入虚拟码元(dummysymbol)(d)。将此状态示于图1。
[步骤3]接着,对于排列的各个行,基于规定的规则在行内进行重新排列。此时,各个行的重新排列规则有时会不同。各个行的重新排列规则以数列Ui(j)表示。Ui(j)表示被移动到第i行第j列的数据在行内原来的位置。例如,在例子中U2(3)=7,这是指被移动到第2行第3列的数据的原来的位置是第2行第7列。换言之,d[27]通过行内重新排列,从第2行第7列移动到第2行第3列。将此状态示于图2。
[步骤4]然后,在保持各行内的顺序的状态下,基于规定的规则对各个行进行重新排列。此行间(inter-row)重新排列以数列T(i)表示。换言之,被移动到第i行的行的原来位置是第T(i)行。将此状态示于图3。
[步骤5]最后,以列方向优先的方式读出排列内的数据。此时,跳过虚拟数据(称为修剪(pruning))。由此,输出码元序列成为{d[40],d[30],d[20],d[10],...,d[18],4[4],d[31],...,d[16],d[7]}。
关于在上述步骤中的R和C的决定方法、行内重新排列规则Ui(j)、行间重新排列规则T(i),在非专利文献1中已有规定。另外,除了非专利文献1所示的方法之外,有许多方法已被提出。
另外,本发明提出的并行交织器,不论R和C的决定方法、行内重新排列规则Ui(j)、行间重新排列规则T(i)如何,对通过上述步骤进行的所有交织器有效。
(交织器的组装方法)
实际上以LSI等实现交织器电路时,不进行如上述的对二维排列的写入和行内/行间重新排列。一般已为人所知的交织器电路是通过按照所输入的码元的顺序,依序写入存储器之后,随机地读出,来实现重新排列。通过使行内/行间重新排列和以列方向优先读出的规则反映在进行该随机的存储器读出时的地址计算方法,由此能够实现如上述的交织。
图4表示最基本的交织器电路。由于一个循环只处理一个码元,因此被称为逐次型交织器。逐次型交织器由存储码元序列的RAM、产生升序地址的计数器1以及产生伪随机地址的地址表与计数器2构成。
在进行交织处理之前,根据决定交织图案的规格设定地址表。其步骤可在直觉上通过以列优先的方式观看图3来理解。
K=45的PIL的地址表示于图6。该表表示例如应在重新排列后第一个输出的数据是重新排列之前的第41个数据(即,A(0)=40。注意索引是从0开始)。并且,第2个输出的数据是重新排列之前的第31个数据。
接下来说明实际的交织处理。通过写入和读出的两个阶段来完成交织处理。
在写入阶段中,计数器1从0开始产生逐次加1的地址。通过使用该地址将输入码元写入RAM,数据串以被输入的顺序存储在RAM。图5的时间图中的时刻0~39为写入阶段。
在所有码元的写入都完成后,开始读出动作。在读出阶段中,首先由计数器2产生升序的计数值,将该计数值用作地址而参照地址表。然后,使从地址表输出的数据(A(k2))作为地址,从RAM读出1码元。通过将这样的动作重复相当于码元数的次数,则如图5的信号r_data所示,可获得交织后的数据串。
这样,通过在地址表中预先设定伪随机地址图案,从而能够以任意的图案进行交织。另外,也能够不使用存储器中的地址表而产生伪随机地址图案。作为用于PIL的地址产生电路的例子,有专利文献1所记载的发明。
将交织后的数据串复原成原本的顺序的处理,称为解交织。也可以使用如图5所示的逐次型交织器来实现解交织。换言之,在地址表设定解交织的图案即可。
进行解交织的更简单的方法是,将逐次型交织器的写入地址和读出地址交换。例如使其为图7所示的结构即可。通过这个方法,不需要准备新的图案,仅新增一点电路(将w_addr和r_addr交换的开关)即可实现进行交织和解交织的电路。
(交织器的并行化)
图4的交织器是逐次型,即,在一个循环仅写入或读出一个码元的交织器。因此,为了对K码元的数据串进行交织,从输入第一个码元开始到最后的码元被输出为止,产生2K+1循环的延迟。并且,逐次交织的吞吐量(每单位时间的处理能力)约为0.5码元/循环而较低。
为了实现高速且低延迟的交织处理,使交织器电路并行化是有效的。在此,作为交织器电路的并行化方法,举出三个方法。
<子块分割方式>
作为将交织器并行化的一个方法,是如图9所示地将输入数据串分割为部分数据串(子块)。各个子块被并行地输入到交织器。
例如,在图9中表示K=45,子块数2的情况。在此例中,在第一个循环中,数据d[0]和d[23]被同时输入到并行交织器1,在下一个循环中d[1]和d[24]被同时输入。并且,在读出阶段中,d[40]和d[2]被同时输出。这样,与图8所示的逐次交织器相比,能够以两倍的吞吐量及一般的延迟时间完成交织处理。
将使用并行交织器1构成的特播解码器(turbo decoder)示于图13。该并行特播解码器通过具有两个SISO(Soft-In Son-Out)解码器,与图12所示的逐次型的特播解码器相比能够实现两倍的吞吐量。这种利用子块分割的并行特播解码器被记述在例如非专利文献2。
<串/并行变换方式>
图10表示另一个并行交织器。此方法通过串行-并行变换器(图中的S/P)将连续的数据(例如d[0]和d[1])同时输入到并行交织器2。在读出阶段中,被同时输出的数据的组通过并行-串行变换器(图中的P/S)复原成连续的数据串。
使用并行交织器2构成的特播解码器为如图14所示。在这个类型的并行交织器中,由于被同时输入的数据在数据串上是连续的数据,不能以其他的SISO解码器进行并行处理。因此,需要能够同时输入多个码元的高速SISO解码器。作为这种SISO解码器,例如非专利文献3所记载的被称为radix-4的方式已为人所知。
<混合方式>
也能够合并使用子块分割方式和串行-并行变换方式(radix-4)。
radix-4的特播解码器与双路并行的子块分割方式相比,能够以较小的电路规模获得同等的吞吐量。可是,由于有关键路径以及特播码的约束长度的限制,难以进一步提高吞吐量(例如采用radix-8以上)。
因此,可以考虑在以任意的并行度分割子块之后,以radix-4处理各个子块的方法。配合子块数为2且采用radix-44的特播解码器(图15)而设计的、图11所示的并行交织器3的并行度为4(2×2)。
另外,上述交织器的并行化的课题在于必须同时对存储器进行多个数据的写入(读出)。下面列举以往所知的解决方案(实现实例)。
(并行化的实现实例1)
最简单的解决方案是使用多端口RAM。多端口RAM是能够同时处理多个地址,并能够同时写入(读出)多个数据的RAM。图16表示使用双端口RAM(可容许同时的两个存取的RAM)的并行交织器。另外,在图16中,在子块分割型的情况下将offset值设定为子块大小,在串行-并行变换型的情况下将offset值设定为1即可。
(并行化的实现实例2)
另一个解决方案是将RAM分割为多个库(bank)(模块)。如果是不同的库则能够独立地进行存取,因此最多能够同时进行与库数相同数目的存取。
然而,根据交织图案和子块的分割方法的不同,有时候会对一个库同时产生两个以上的存取(下面将此称为存储器存取争用)。因此需要仲裁电路,该仲裁电路在产生存储器存取争用时,在该循环仅写入一个,将其他数据保存在缓冲器,并在下一个循环之后再次进行写入。
举例说明通过仲裁电路防止存储器存取争用的方法。考虑码元数K=45,将子块分割成K0=23和K1=22这样大致均等的情况下的解交织处理。将附加仲裁电路的并行解交织器的结构例示于图17。
作为子块0而被输出的数据必须写入RAM0中,作为子块1而被输出的数据必须写入RAM1中。因此,解交织后的索引为0~22的数据被写入RAM0中,索引为23~44的数据被写入RAM1中。
在写入阶段的第一个循环中,作为两个子块的开头的数据的d[0]和d[23]被输入。通过地址表0求出A(0)=40,并通过地址表1求出A(23)=0而由此求出地址,因此可得知将数据d[0]写入RAM1,将数据d[23]写入RAM0即可。因此,仲裁电路进行连接,以将信号in_data0的值写入w_datal,并将in_datal的值写入W_data0。并且将地址表1的输出输入到w_addr0,并将地址表0的输出减去23之后的值输入到w_addrl。
在下一个循环中,数据d[1]和数据d[24]被输入。由于A(1)=30、A(24)=39,所以任意一方的数据都必须写入到RAM1。因此,将数据d[1]写入到RAM1的地址7,并将数据d[24]保存在缓冲器中(例如FIFO),在下一个循环之后写入。
然后在下一个循环中,数据d[2]和数据d[25]被输入。在这个循环中,将数据d[2]写入到RAM0的地址20,将数据d[24]从缓冲器取出并写入到RAM1的地址16。由于在同一个时间仅能对RAM1进行一个写入,所以这次将数据d[25]保存在缓冲器中。
如上述,通过使用仲裁电路,不用多端口存储器就能够实现并行交织器电路。这个方法还具有不需增加RAM的总容量的优点。
然而,交织图案的随机性越高,仲裁电路所需要的缓冲器的容量越多。
将RAM分割成多个库(模块)的情况的另一个结构例示于图18
在图18的交织器(解交织器)中,一个输出子块与一个RAM库相对应。例如,所属于输出子块0的数据被写入RAM0。例如K=40时对存储器的写入方法为如图19所示。进行这样的写入后,通过将各个RAM的内容按照地址顺序读出,能够并行地输出四个子块。
但是,由于对输入数据进行了子块分割,写入也必须以并行的方式进行。例如,在第0循环必须同时写入数据d[0]、d[10]、d[20]、d[30]。此时,三个数据d[10]、d[20]、d[30]都必须写入RAM1。可是,由于RAM1是单端口存储器,只能写入其中的一个。因此,在第0循环中,仅将数据d[10]写入RAM1,将数据d[20]和数据d[30]存储在缓冲器(FIFO),在下一个循环之后每次一个地写入RAM1中。进行这样的仲裁和缓冲的电路为图中的FIFO/仲裁单元。
如图18的结构,通过将存储器分割成与子块数相同数目的存储库RAM0~4,能够实现并行交织器。例如在专利文献2有记载这样的结构。
另外,作为通过库分配(数据的写入位置)来防止存储器存取争用的例子,有如图20所示的结构。在图20所示的交织器中,由库选择单元的函数M决定数据的写入位置。输入数据d[i](i=0~K-1)被写入库M(i)。将子块大小设为Ks时,由于数据d[i],d[i+Ks],d[i+2Ks],...被同时写入,为防止存取争用的产生,必须是M(i)≠M(i+Ks)≠M(i+2Ks)≠...。并且,在将交织图案设为π时,输出数据d[π(i)],d[π(i+Ks)],d[π(i+2Ks)]被同时读出。因此,为了防止在读出时产生存取争用,必须满足M(π(i))≠M(π(i+Ks))≠M(π(i+2Ks))≠...。通过找出这样的函数M,能够由图20所示的电路实现并行交织器。
在非专利文献4中示出了对任意的交织图案π的函数M的设计方法。
此外,以与图20相同的电路结构进行交织的技术被记载于专利文献3。在专利文献3中,M函数为简单的函数(例如整数除法等)。在专利文献3中,提出以使M(π(i)),M(π(i+Ks)),M(π(i+2Ks)),...成为固定的关系的方式来选择M函数以及交织图案π。例如示出了M(π(i+Ks))-M(π(i))=M(π(i+2Ks))-(π(i+Ks))=...=常数值的M函数的例子和交织图案π。此时,根据上述常数值和库数的关系(例如,常数值和库数互质)可保证不会产生存储器存取争用。由于在专利文献3公开了,总是满足上述关系的交织图案π的设计方法,所以能够设计出能以图20的电路进行不会引起存储器存取争用的并行处理的交织图案π。
[专利文献1]特许第3399904号
[专利文献2]特开2004-104776号公报
[专利文献3]美国特许第6,775,800号
[非专利文献1]3GPP TS25.212 v5.4.0“Multiplexing and channel coding(FDD),Release5”4.2.3.2.3节Turbo code internal interleaver
[非专利文献2]Giulietti,A.;Bougard,B.;Derudder,V;Dupont,S.;Weijers,J.-W.;Van der Perre,L.;“A 80Mb/s low-power scalable turbo codec core”,Custom Integrated Circuits Conference,2002.Proceedings of the IEEE 2002,pp.389-392
[非专利文献3]Charles Thomas,Mark A.Bickerstaff,Linda M.Davis,Thomas Prokop,Ben Widdup,Gongyu Zhou,David Garrett,Chris Nicol;“Integrated Circuits for Channel Coding in 3G Cellular Mobile Wireless Systems”,IEEE Communications Magazine August 2003,PP.150-159
[非专利文献4]Tarable,A.;Benedetto,S.;“Mapping interleaving laws toparallel turbo decoder architectures”,Communications Letters,IEEE,Volnme:8,Issue:3,March 2004,Pages:162-164
发明内容
发明需要解决的问题
然而,多端口RAM的电路规模较大,因而较少使用。在FPGA(FieldProgrammable Gate Array)中,由于常备有双端口RAM,虽然能实现两个并行的交织器,但难以实现并行度更高的交织器。
另外,如专利文献2所述的方法具有仲裁功能复杂的缺点。由于子块数(并行度)增加,使得仲裁的功能更加复杂,导致电路规模的增大。另外还有FIFO长度变长的缺点。由于需要较长的FIFO,使得电路规模增大,延迟时间变长。
另外,由于非专利文献4所示的M函数的设计方法不能以简单的式子表示M函数,所以实施时需要查表。因此,需要新增较大的存储器,而使得交织器的电路规模增大。另外,在每次交织图案改变时必须变更M函数,但可预测实际上将难以实时地导出函数。因此难以应对像3GPP标准的turbocoding internal interleaver那样数据长度改变时交织图案就改变的情况。
另外在专利文献3中,难以对某个被提供的π找出满足上述式子的M。并且在该方法中未考虑上述专利文献3。专利文献3记载的技术仅可说是满足上述式子的π的设计方法,以及对特别的π进行并行交织的方法。因此,具有以下问题:即使采用专利文献3所记载的技术也难以毫不产生存储器存取争用地对3GPP标准所示的internal interleaver进行并行化。
本发明的目的在于提供并行交织器、并行解交织器以及交织方法,能够以较简单的结构灵活地应对交织图案的变更,并可防止存储器存取争用。
解决该问题的方案
本发明的并行交织器通过将输入数据写入由多个存储库构成的存储器,并以与写入不同的顺序读出已写入的数据,由此实现对二维排列型的数据结构以行方向优先的方式写入数据,基于在各行规定的行内重新排列图案进行行内重新排列,将各行彼此重新排列,并以列方向优先的方式读出数据的交织算法,所采用的结构包括:存储器,由多个存储库构成,各个库与所述二维排列的一个或多个行号相对应;图案生成单元,生成分别在所述二维排列的数据结构中的其他行中所规定的多个行内重新排列图案;以及读出控制单元,在内部具有所述图案生成单元,并基于所述多个行内重新排列图案生成多个读出地址,从所述存储器同时读出多个数据。
发明的有益效果
根据本发明,即使采用任何行内和行间重新排列的图案,也不会在同一个存储库生成两个以上的读出地址。换言之,不管采用何种交织图案,都能够防止对存储库的存储器存取争用。其结果,能够实现以较简单的结构灵活地应对交织图案的变更,并可防止存储器存取争用的并行交织器、并行解交织器以及交织方法。
附图说明
图1是表示对质数交织器的二维矩阵的写入状态的图。
图2是表示质数交织器的行内重新排列的图。
图3是表示质数交织器的行间重新排列的图。
图4是表示逐次型交织器的结构的方框图。
图5是表示图1的逐次型交织器的动作的时间图。
图6是表示图1的地址表的内容的图。
图7是表示与逐次型交织器对应的解交织器的结构例的方框图。
图8是用于说明逐次交织方式的动作的模式图。
图9是用于说明子块分割交织方式(并行交织器)的动作的模式图。
图10是用于说明其他的并行交织器的模式图。
图11是用于说明其他的并行交织器的模式图。
图12是表示采用逐次型交织器的特播解码器的结构例的方框图。
图13是表示采用图9的并行交织器的特播解码器的结构例的方框图。
图14是表示采用图10的并行交织器的特播解码器的结构例的方框图。
图15是表示采用图11的并行交织器的特播解码器的结构例的方框图。
图16是表示采用双端口RAM的以往的并行交织器的结构的方框图。
图17是表示以往的附加仲裁电路的并行解交织器的结构例的方框图。
图18是表示以往将RAM分割成多个库(模块)的情况的并行交织器(解交织器)的另一个结构例的方框图。
图19是表示被写入图18的各个RAM0~4中的数据的图。
图20是表示以往将RAM分割成多个库(模块)的情况的并行交织器(解交织器)的另一个结构例的方框图。
图21是表示本发明实施方式1的交织器的结构的方框图。
图22是表示各个查找表LUT0~4的内容的图。
图23是表示写入所有数据之后的RAM内的数据配置的图。
图24是表示实施方式1的写入定时的时间图。
图25是表示实施方式1的读出定时的时间图。
图26是表示包含无效地址时的各个查找表LUT0~4的内容的图。
图27是表示包含无效地址时的改良后的各个查找表LUT0~4的内容的图。
图28是表示发生了修剪(pruning)时的写入定时的时序图。
图29是表示发生了修剪时的读出定时的时序图。
图30是表示发生了修剪时的输出块大小的图。
图31是表示实施方式2的交织器的结构的方框图。
图32是表示无效判定单元的结构的方框图。
图33是表示实施方式2的各个查找表LUT0~4的内容的图。
图34是表示实施方式2的写入定时的时序图。
图35是表示实施方式2的读出定时的时序图。
图36是表示实施方式2的交织器的其他的结构例的方框图。
图37是表示图36的交织器的各个查找表LUT0~4的内容的图。
图38是表示图36的写入定时的时序图。
图39是表示图36的交织器的读出定时的时序图。
图40是表示实施方式3的特播解码器的结构例的方框图。
图41是表示实施方式3的特播解码器的结构例的方框图。
图42是表示实施方式3的特播解码器的结构例的方框图。
图43是表示实施方式4的交织器的结构的方框图。
图44是表示写入时的组合和读出时的组合的图。
图45是用于说明库分配的图。
图46是用于说明库分配的图。
图47是表示输入端开关的配置(configuration)的图。
图48是表示列号开关的配置的图。
图49A是表示输入数据的子块分割的图。
图49B是表示输出数据的子块分割的情况的图。
图50是表示有关各个子块的行计数初始值、列计数初始值以及开头数据的排序的图。
图51是用于说明列号开关的功能的图。
图52是表示修剪判定单元的结构的方框图。
图53是表示阈值的例子的图。
图54是表示实施方式5的交织器的结构的方框图。
图55是表示输入端开关的配置的图。
图56A是表示输入数据的子块分割的图。
图56B是表示输出数据的子块分割的情况的图。
图57是表示写入时的组合和读出时的组合的图。
图58是用于说明库分配的图。
图59是用于说明库分配的图。
图60是表示有关各个子块的输入/输出顺序、行计数初始值、列计数初始值以及开头数据的排序的图。
图61是用于说明列号开关的功能的图。
图62是表示列号开关的配置的图。
图63是表示实施方式6的交织器的结构的方框图。
图64是表示输出数据的子块分割的情况的图。
图65是表示写入时的组合和读出时的组合的图。
图66是用于说明库分配的图。
图67是表示列号开关的配置的图。
图68是表示输入端开关的配置的图。
图69是表示行计数器、列计数器、列号开关的其他结构例的图。
图70是用于说明转发电路的结构例的图。
图71是表示与实施方式4的交织器对应的并行特播解码器的结构例的方框图。
图72是表示与实施方式6的交织器对应的并行特播解码器的结构例的方框图。
具体实施方式
下面,参照附图详细说明本发明的实施方式。
(实施方式1)
图21表示本发明实施方式1的交织器的结构。交织器100可并行地执行PIL(质数交织器),而不会引起存储器存取争用。在本实施方式中,为简化说明,仅表示与交织器的行数R=5对应的电路,并说明基本结构。
交织器100是通过子块分割以5路并行的方式进行交织的电路。首先说明较简单的不产生修剪(数据长度K=RC)的情况。
交织器100大致包括:输入端开关101、由可独立地写入及读出的多个库(RAM0~RAM4)构成的存储器102、输出端开关103、由行计数器105及列计数器106构成的写入地址生成单元104、行数计算单元107、列数计算单元108、输出子块大小计算单元109、输出子块计数器110、由查找表LUT0~LUT4构成的地址表111、查找表(LUT)设定单元112、行/列号分离单元113、地址开关114、以及有效检测单元115。
行数计算单元107和列数计算单元108根据3GPP标准,基于码元数K决定行数R及列数C。
假设输入数据data_in0~data_in4通过前级的处理块(例如解速率匹配处理、SISO(Soft-In Soft-Out)解码处理等)被分割成子块并输入。在此,假设输入子块0(对应于data_in0)到输入子块3的大小全都均等。将此记为Ksin。为了防止在本发明的交织器电路产生写入时的争用,输入子块大小Ksin必须是列数C以上。
输入子块大小Ksin由外部提供。交织器100基于所提供的输入子块大小Ksin,设定写入地址生成单元104的列计数器106及行计数器105的初始值。将配合写入动作说明初始值的设定方法。
输出子块大小计算单元109基于码元数K和行数R决定输出子块大小Ksout’。如图21的基本电路所示,在RAM数Mr与行数R与输出子块数Mout相等时,将输出子块大小Ksout决定成与行数R互质(最大公约数为1)。当然,Ms为子块数时,输出子块大小Ksout必须是Ksout×Ms≥RC(这里,K=RC。不在右边写K以因应使用修剪的情况)。
决定输出子块大小Ksout的一个方法,是像Ksout=C,C+1,C+2,.........那样依序寻找与R为互质的数值。
另一个方法是用下式决定。
Ksout=ceiling((C-floor(Ro×Ms/R))/Ms)×R+Ro
.........(1)
其中,ceiling():向无限大方向的取整(进位)处理
floor():向零方向的取整(小数点以下舍去)处理
Ro:与R互质的常数(例如1)
Ms:子块数
决定输出子块大小Ksout’之后,查找表(LUT)设定单元112进行地址表111的5个查找表LUT0~LUT4的设定。5个LUT0~LUT4分别对应5各子块。该LUT0~LUT4被设定成将计数值cnt_r作为地址输入后,将库号b和地址(存储库内的物理地址)a输出。这里,库号b与交织步骤中的行间重新排列后的行号对应,地址a与交织步骤中的行间重新排列后的列号对应。库号b及地址a与交织地址A(k2)之间的关系如下式。
b[m]=floor{A(cnt_r+m×C)/C}
a[m]=A(cnt_r+m×C)modC .........(2)
其中,m=0,1,...,Mout-1
floor:向0方向的取整(小数点以下舍去)处理
mod:求余运算(remainder operation)
创建的地址表111(查找表LUT0~LUT4)的例子示于图22。这里,虽然同时记述k2和A(k2)作为参考,实际上在LUT0~LUT4中保存的值仅有库号b和地址a。并且,此例是表示数据长度K=40,输出子块大小Ksout=8的情况。例如,如果参照LUT2的cnt_r=2的条目,可得知交织后的索引为18的数据(交织前的索引为14)被写入RAM1的地址6。
上述初始设定完成后,通过写入阶段和读出阶段执行并行交织。
在本实施方式中,输入数据data_in0~data_in4以C为单位划分后被写入不同的库(RAM0~RAM4)。例如在图21的基本电路中,第n个输入码元被写入floor(n/C)号的库。并且此时的物理地址(被输入到对应的库的读出地址)是n mod C(mod为求余运算)。
为实现上述的写入处理,本实施方式的交织器100使用行计数器105和列计数器106。行计数器105和列计数器106分别在其内部具有多个计数器。这里,设计数器的值为i[k],j[b]。另外,K=0~Ms-1(Ms为子块数),b=0~Mr-1(Mr为RAM库数)。
计数器的初始值i0[k],j0[b]使用输入子块大小Ks,如下式那样决定。
i0[k]=floor(Ksin×k/C)
i0[i0[k]]=(Ksin×k)mod C
j0[b]=C(b=i0[k]的k不存在时) .........(3)
在写入阶段中,列计数器j[k]从初始值开始每一个循环增1,计数到列数C。达到列数C时,列计数器j[k]停止,与对应的行计数器i[k]增1的同时将计数器j[i[k]]复位。
举例说明上述处理。这里假设子块大小Ks大于C。在开始写入时,因i[0]=0,j[0]=0,子块0的输入(data_in0)被写入RAM0的地址0。之后,在C-1循环,子块0的数据被写入RAM0的地址0~C-1。
此时,j[0]=C-1,因此在下一个循环中,i[0]被增1成为i[0]=1,计数器j[i[0]]被复位,开始动作。即,成为j[1]=0。因此,子块0的第C个数据在这个时候被写入RAM1的地址0。图23表示写入所有数据之后的RAM0~RAM4的数据配置。
在读出阶段中,输出子块计数器110从0开始到输出子块大小Ksout-1为止进行递增计数,将计数值cnt_r作为地址输入到LUT0~LUT4。LUT0~LUT4在这个时候将应读出的数据的库号和地址输出。例如,在图22的例子中,计数值cnt_r=0时,LUT0输出b0=4,a0=7。这表示为了输出子块0的开头数据(d[39]),只要读出库4的地址7即可。
LUT0~LUT4的5个输出分别被输入到行/列号分离电路113,被分离为行号b和列号a。
列号a0~a4被输入到地址开关114,分配给行号b0~b4指定的存储库(RAM0~RAM4)。例如,在上述的例子中,LUT0的输出a0=7的地址通过b0=4被转发到RAM4。LUT1的输出a1=3通过b1=1被转发到RAM1。这样,行号b0~b4操作地址开关114,将列号a0~a4转发到适宜的RAM模块。
行号b0~b4并进一步操作输出端开关103,将RAM0~RAM4的输出分配给适宜的子块输出信号data_out0~data_out4。例如,在上述的例子中,由于LUT0的输出b0=4,可得知应被输出到data_out0的数据是从RAM4输出的。因此,输出端开关103将信号r_data4与信号data_out0连接。
由此能够实现通过5子块分割进行的并行交织。将上述动作作为时间图重新表示在图24、图25。图24是写入定时,图25是读出定时。
另外,在本实施方式的交织器100不发生存储器争用的重点为下述两点。
(i)在生成交织图案的二维矩阵上,将与不同行对应的码元写入不同的存储库RAM0~RAM4。
(ii)选择与行数R互质的输出子块大小Ks。
这里,可将(ii)的条件换成下述说法。即,能够“对于同时读出的两个以上的码元,以使任意两个的位置的间隔S与行数R成为互质的方式选择同时读出的码元”。
使用此条件,在串行-并行变换型的并行交织器中,只要并行数为R以下就能够设计可在不产生存储器存取争用的情况下并行读出的交织器。
接下来说明本实施方式的交织器100进行的修剪(pruning)处理。
交织器100即使在发生修剪的情况下(在K<RC的情况下)也能够并行地执行交织处理而不会产生存储器存取争用。
用于处理修剪的重点有以下两个。
(i)创建包括修剪对象码元(无效地址)的LUT0~LUT4。
(ii)在与无效地址对应的部分,不输出该子块的码元。
下面,以K=45的情况为例进行说明。
行数计算单元108及列数计算单元107根据3GPP标准,求行数R=5,列数C=10。
对于输入子块大小的条件与不产生修剪的情况相同。但是,如本例,库数Mr和子块数Ms相等时,基于Ksin≥C的条件,最后子块总是比C短(Ksib是最后以外的子块大小)。相反地,如果以所有子块的大小相等的方式分割子块的话,在写入时一定会引起争用。
输出子块大小计算单元109以与行数R成为互质的方式决定输出子块的大小Ksout。并且使所有子块大小的合计大于生成交织图案的排列的大小。换言之,使子块数为Ms时,以Ksout×Ms≥RC的方式决定输出子块大小Ksout。在K=45时,作为满足这些条件的最小的输出子块大小Ksout,选择11。
查找表(LUT)设定单元112基于输出长度K及输出子块大小Ksout的值,设定所有的LUT0~LUT4。这里,包含被修剪的码元的地址(无效地址)设定地址图案。图26表示K=45时的LUT0~LUT4的内容。例如,由于LUT2的计数值cnt_r=3对应于A(k2)=49,因此是无效地址中的一个。
为无效地址时,通过控制地址开关114以不向RAM0~RAM4转发地址,由此实现修剪。这里,如图27所示,通过在与无效地址对应的地方将库号b的值改写为特别的值,能够简单地执行地址开关114的控制。另外,在LUT的空白部分也设定表示无效的值。
上述初始设定完成后,通过写入阶段和读出阶段执行并行交织。
写入阶段的动作与不产生修剪的情况相同。将时间图示于图28。
在读出阶段中,仅在从LUT0~LUT4输出表示无效地址的数据(b=6,a=0)时进行不同的动作。使用图29的时间图说明此情况。在时刻9,LUT0~LUT4的输出b0~b3取表示库号的3,2,1,0的值,但b4取表示无效地址的值6。相对于此,地址开关114对RAM0~3传送地址a0~3,对RAM4传送任意的地址(例如0)或使RAM4的读出无效。然后,有效检测单元115通过信号valid[4∶0]向外部(例如SISO解码器)通知子块4的输出无效。
通过反复进行上述动作,能够如图29的data_out0~4所示地完成交织处理。这里,将各个输出子块的大小示于图30。在不产生修剪时,输出子块大小除了最后的块之外所有的Ksout都一致,但在产生修剪时有时会变得比Ksout短。
(实施方式2)
在实施方式1中,示出了不引起争用而可进行并行交织的基本原理。在本实施方式中,进一步提议(1)写入处理的简化,(2)读出处理的简化,(3)子块大小决定方法的变更,(4)可对应较少的子块的结构及方法。
图31表示本实施方式的交织器的结构。图31的交织器200为可实现上述(1)~(3)的电路结构。并且,交织器200与实施方式1的交织器100相比,电路结构被简化。
交织器200大致包括:由可独立地写入及读出的多个存储库(RAM0~RAM4)构成的存储器201、输出端开关202、由列计数器204构成的写入地址生成单元203、列数计算单元205、行数计算单元206、子块大小决定单元207、读出地址生成单元210、库选择信号生成单元220、无效判定单元23。
(1)写入处理的简化
通过将输入子块大小决定为C,从而不需要输入端开关及行计数器,能够简化写入地址生成单元203的列计数器204。换言之,在输入子块大小Ksin=C时,子块[k]的数据全都被写入存储器201的RAM[k]。因此,通过使data_in[k]与w_data[k]直接连接,可省略输入端开关及控制开关的行计数器。此外由于在各个时间点将所有的数据写入相同的地址,只需要一个列计数器204即可(也可视为总是i[k]=k、j[0]=j[1]=...=j]k-1])。
(2)读出处理的简化
在实施方式1所示的图21的读出控制中,通过在LUT0~LUT4求各个子块应读出的数据的库号与地址,使用地址开关114将该地址传送到对应的库,而实现读出。这里,通过预先重新排列LUT0~LUT4内的数据,能够省略地址开关。具体而言,在LUT0存储应送往RAM0的地址,在LUT[b]存储应送往RAM[b]的地址。该表是将行内重新排列图案U[i](j)重新排列后的表。例如,在LUT0中,从条目0开始依序存储着U[0](0)、U[0](v)、U[0](2v)、...、U[0](tv mod Ksout)。其中,v=Ms×R/Mr。LUT[k]的第t个条目是LUT[k](t)=U[k]((tv+j0[k])mod Ksout)。其中,j0[k]=floor(Ksout×k/v)。
通过上述方式,由于不需要地址开关,不必将库选择号存储在LUT内,所以能够削减LUT的容量。在3GPP的turbo internal interleaver的情况下,LUT能够将每个字从13比特削减到8比特。将在K=45时的LUT0~LUT4的内容示于图33。
然而,另外需要库号用于输出端开关202的操作。并且,为了不将表示无效地址的特别的库号存储在LUT0~LUT4中,必须使用其他的方法进行有效判定。
首先说明求库号的电路结构,也就是库选择信号生成单元220。在时刻t的库选择信号b[k](t)是b[k](t)=T[(t+k×Ksout)mod R]。其中,若写i=t mod R、Ro=Ksout mod R,则成为b[k](t)=T[i+k×Ro]mod R]。
基于上述内容,通过设置对i=0~R-1进行计数的行计数器223、求行偏移Ro=Ksout mod R的行偏移计算单元222、R条目的LUT221(T-LUT)、以及以R为模的加法器(加法运算后求R的余)224,能够构成生成库号的电路(即,库选择信号生成单元220)。
接下来表示进行有效判定的电路(无效判定单元230)的例子。这里表示,调查对RAM4的存取是否有效,若为无效,将无效的子块的序号输出的电路。虽然因交织方式而异,但修剪一般在后半部分的库产生。因此,对每个产生修剪的库准备无效判定电路即可。例如,在PIL中在行17之后可能产生修剪。因此,对于RAM17、18、19分别需要三个进行判定的无效判定电路。
使用图32说明具体的无效判定单元230的结构。无效判定单元230包括比较单元231、编码器232、以及大小比较器233。构成比较单元231的5个比较器0~比较器4,对T-LUT的输出与要调查的库号(这里为4)进行比较。这相当于调查RAM4的输出是被输出到哪个子块。T-LUT的输出与要调查的库号相一致时,各个比较器0~4输出1。该输出1被输入到编码器232之后,编码器232将其变换为库号。
同时,大小比较器233比较r_addr4与K mod C。在r_addr4较大或两者一致时,RAM4的输出变成无效。因此,在这样的情况下,大小比较器233操作选择器,将编码器的输出与信号invalid_blk连接,表示对应的子块为无效。大小比较的结果,r_addr4的输出有效时,不将任何库号输出到invalid_blk。并输出例如-1等值。
如上述,示出了判定子块的输出是否有效的两个方法。一个是如实施方式1的图21所示地,预先在LUT设定表示无效地址的数据,另一个是如本实施方式的图31所示地,使用从库选择信号与读出地址进行判定的电路(无效判定单元230)。
实际上,上述的无效判定非常重要。例如,在以往的并行交织器中,一般是除去无效地址后创建地址表。可是,在实施方式中,特意将无效地址保留来保证不会产生存储器存取争用。因此,在实施方式中设置无效判定电路。这样,本实施方式的一个特征是以并行交织器进行无效判定。由此,在并行交织器中能够确定无效的子块。
(3)子块大小决定方法的变更
在图31的子块大小决定单元207中,基于Ksout=ceiling((C-floor(Ro×Ms/R))/Ms)×R+Ro来决定子块大小。这里,将行偏移固定为例如Ro=1,由此能够简化电路结构。
接下来使用图34和图35,说明交织器200的动作定时。图34表示写入定时,图35表示读出定时。这里表示K=45、Ms=5、Mr=5、R=5、C=10的情况。
时序图的特征如下:
(a)在写入中,能够确认w_data[k]全部为相等的值,以及in_data[k]与w_data[k]相等。
(b)在读出中,能够直接通过表而求r_addr[k]。在r_addr4,网格部分是与无效地址(修剪)对应的部分。因此,在data_out的一部分中具有有效数据不被输出的部分。此时,可得知信号invalid_blk表示无效的子块。
另外,库号生成单元的结构不限于图31所示的内容。换言之,由于行偏移值表示对应的子块的T-LUT的读出开始位置的偏移,如果配合行偏移预先将T-LUT的内容移动,就不需要对偏移进行相加的电路。
另外,由于库选择信号以R为周期变化,通过将R个寄存器连接成环状的电路也能够生成。由于寄存器之间的连接根据Ro改变,该结构在Ro为固定时使用较好。
(4)对较少子块的对应
在实施方式1以及本实施方式中说明的交织器可以说在子块数Ms与库数Mr相等时,电路的利用效率最高。然而,在将这些结构的交织器合并到特播解码器使用时,基于下述理由,有时会产生必须减小Ms的情况。
(i)SISO(Soft-In Soft-Out)解码器,即运算电路只具有比Ms小的并行处理能力时
(ii)子块大小过小,而使得解码性能恶化时
在本发明中,即使在Ms<Mr的情况下,也能够不产生存储器存取争用地执行并行交织。这里,将库数Mr=5,子块数Ms=3的例子示于图36。此外,在图36中,对于与图31对应的部分赋予相同的标号。另外,在图37示出图36的交织器300的读出地址生成单元的LUT0~4的内容,在图38示出在K=40,Ksin=14,Ksout=14,Ro=4时的写入定时,并在图39示出读出定时。
关于写入处理,由于必须是Ksin×Ms≥RC,不能使Ksin=C。因此,不能采用简易的结构,在图36的交织器300中,使写入地址生成单元301为具有行计数器302及列计数器303的结构。各个块在其内部具有三个计数器。
关于读出控制,与图31的交织器200的不同点有两点。首先,决定地址的LUT0~LUT4的内部有较多空白。相对于子块数为3,RAM数为5,因此在各个时间点中,对5个之中的两个RAM的存取为无谓的存取。为对应此,在交织器300中,在LUT0~LUT4的对应部分设定无效的地址(C以上的任意值,例如8)。在各个RAM0~RAM4中,通过在C以上的地址被输入时停止实际的存取,能够防止无谓的存取(进行此控制的部分未图示)。通过该控制,如图39的读出定时所示,不会对r_data端子输出无谓的数据。即使输出无谓的数据,在输出端开关202该数据将被忽视,因此对data_out不会产生影响。
第二个不同点在于库选择信号生成单元310,但只要简单地配合子块数将查找表311(T-LUT)削减为3个即可。
在交织器300中,从图37~图39可得知,对r_addr端子输入作为无效地址的8时,没有出自r_data端子的有效输出。可是,可得知如果在输出端开关202进行重新排列,可从3个子块获得被适宜地交织后的数据串。
另外,在交织器300中,由于用8这样的一个值填入LUT的无效部分,因此具有使LUT的容量及比特数增加的缺点。在这成为问题时,可采用以下任意的方法。第一,使用图21的结构。第二,将有效地址填入LUT的前方,以代替在LUT插入无效地址。但是,不能将计数值cnt_r直接用作LUT的读出地址,使得LUT的读出控制多少变得复杂。
(实施方式3)
将在实施方式1、2说明的并行交织器应用在特播解码器时特别有效。在本实施方式中说明将实施方式1、2的并行交织器合并到特播解码器时的结构。
图40表示目前已知的特播解码器的概要。如用虚线包围的部分所示,其较大的特征在于,在两个SISO解码器(Soft-In Soft-Out解码器)之间传递被称为外部值(或者外部信息、事前信息等)的信息,并进行重复处理。此详细记载于「Berrou,C.;Glavieux,A.;Thitimajshima,P.;“Near Shannon limiterror-correcting coding and decoding:Turbo-codes”,IEEE InternationalConference on Communications,1993,Pages:1064-1070 vol.2」等。
近年来,为实现高速通信,对特播解码器也要求高速处理。作为使SISO解码器高速化的方法,已知有使多个SISO解码器并行动作的方法,以及radix-4算法(例如记载于文献「Charles Thomas,MarkA.Bickerstaff,Linda M.Davis,Thomas Prokop,Ben Widdup,Gongyu Zhou,David Garrett,Chris Nicol;i°Integrated Circuits for Channel Coding in 3G Cellular Mobile WirelessSystemsi,IEEE Communications Magazine August 2003,PP.150-159」等)。可是,为作为特播解码器而高速动作,交织器也必须进行高速动作。需要与SISO解码器的高速化方法对应的并行交织器。
在使SISO解码器并行动作时,数据(外部值)被进行子块分割。将采用了子块分割的并行特播解码器电路示于图41。另外,在该图中,为了将外部值的流向表示在中央部分,省略了有关通信路值的处理和硬判决的电路。图41所示的并行特播解码器大致包括:并行交织器510、并行解交织器520、SISO解码器530、延迟电路540、SISO解码器550。并行交织器510包括:存储器511、地址生成单元512、交织器地址生成单元513、开关514、库选择信号生成单元515、无效判定单元516。并行解交织器520包括:开关521、存储器522、地址生成单元523。
另外,在图41中,使用SISO解码器00至04、以及10至14的共10个SISO解码器,但也可以以时分共享SISO解码器00至04以及10至14,而仅以5个SISO解码器加以实现。
此外,可对应于采用radix-4算法的SISO解码器,利用串行-并行型的交织器。将这些合并之后的特播解码器电路示于图42。图42所示的特播解码器大致包括:并行交织器610、并行解交织器620、Radix-4 SISO解码器630、延迟电路640、Radix-4 SISO解码器650。并行交织器610包括:开关611、库选择信号生成单元612、存储器613、地址生成单元614、交织器地址生成单元615、开关616、库选择信号生成单元617、无效判定单元618。
如上述,根据本发明,由于不会因仲裁电路的附加等而导致电路规模的增大,能够以简易的结构实现高速的交织器电路,因此能够实现小型且高速的特播解码器电路。
在上述的实施方式1、2中描述了将本发明用于质数交织器的情况,但本发明不限于此,可广泛地适用于实现对二维排列型的数据结构以行方向优先的方式写入数据,进行各个行的行内重新排列,将每个行彼此重新排列,并以列方向优先的方式读出数据的交织算法。
(实施方式4)
图43表示本实施方式的交织器的结构。交织器700大致包括:输入端开关701、由可独立地写入及读出的多个库(RAM0~RAM4)构成的存储器702、输出端开关703、由输入端计数器704及配置(configuration)选择单元705构成的写入地址生成单元、行计数器706、列计数器707、列号开关708、加法器709、由查找表LUT0~LUT4构成的地址表710、延迟单元711、加法器712、修剪(pruning)判定单元(相当于图1的有效检测单元115)713。
(1)设计方法·原理
在详细说明交织器700之前,先说明本实施方式的原理。
在本实施方式中,作为一个例子,表示使用RAM数5、5路并行输入/输出(5子块分割)对行数20进行并行交织的电路。另外在本实施方式中,以块大小为203的数据为例进行说明。在3GPP标准的PIL中,交织器的排列为行数R=20,列数C=11。
输入子块大小较好为C的倍数。这里为C的4倍,即44。其理由为,行数为20,且并行度(子块数)为5,因此使每1子块为4。
输出子块大小Ksout以同时满足下述两个条件的方式决定。
(i)Ksout除以R时的余数为1以上
(ii)被分配给1个库的行数不超过Ksout和R的最大公约数。
求这样的Ksout的简单的方法是在式(1)中使Ro=4。Ksout除以R时的余数为4。并且,Ksout与R的最大公约数为4,因此能够对1个库分配4行。因此,使Ksout为44。
接着,决定数据与存储库之间的对应。
使输入子块大小为C的倍数。因此,在写入动作的第一个C循环中,子块0将第0行的数据写入存储器,子块1将第4行的数据写入存储器,...。然后,在下一个C循环中,子块0写入第1行的数据,子块1插入第5行的数据。
基于上述,用行号表示同时写入的数据的组合时,成为图44的(0)~(3)的4种。
读出时,每个循环的组合改变。通过使输出子块Ksout为44,组合的数目为20种,对相同的行不会同时存取(不产生争用)。在本实施方式中,通过使作为用行数R除Ksout之后的余数的Ro为4,组合产生重复,如图44所示地被削减到4种。
如上述,被同时存取的行的组合(8种)全变得明确。因此,决定库分配,使这些行成为别的库。将分配的一个例子示于图45和图46。
以上为本实施方式的交织器的设计的原理。重点列举如下。
·使输出子块大小Ksout“包含虚拟数据(被修剪的数据)为44”,因此在写入时不会对相同的行产生同时存取。
·使作为Ksout除以R时的余数的Ro为4,使得进行同时读出的行的组合数被削减为4种。
·以使被同时存取的行成为不同的库的方式来决定数据RAM的分割方法(对库的分配方法)。被同时存取的行的组合越少,所需要的库数越少,可简化电路。
(2)结构与动作
接下来说明本实施方式的交织器700的结构与动作。
<结构>
(关于写入)
输入端子(data_in0~4):一个端子对应于一个子块。
输入端开关701:将输入端子连接到存储器702的适宜的RAM的库。开关实现如图47(A)~(B)所示的4种连接。在各个时间点切换到哪个连接是由配置选择单元705决定。
输入端计数器704:生成数据写入用的地址另外,配置选择单元705基于该计数器的输出动作。
RAM0~4:被写入输入数据。被分割成5个库。
(关于读出)
行计数器706:保持并更新子块0~4应分别读出的数据的交织后的行号。
列计数器707:保持并更新子块0~4应分别读出的数据的交织后的列号。
列号开关708:将列计数器707的值转发到适宜的LUT。作为连接的形态,除了图48(A)、(B)所示的两个之外,总共实现20种。同时计算应加到各个计数器值的高位的地址值。
地址表(LUT0~4)710:地址的表尤其在本实施方式中保持行内重新排列图案(intra-row permutation pattern)。与数据的RAM同样地被分割成5个库。
修剪(Pruning)判定单元713:检查地址表710的输出是否包含无效地址。有包含时,调查那是与哪个子块对应,并将结果输出到端子valid。
输入端开关703:将来自存储器702的各个库的数据输出连接到适宜的输出端子。
输出端子(data_out0~4):一个端子对应于一个子块。
(写入动作)
下面,以块大小(数据长度)203码元的情况为例进行说明。
在3GPP标准(PIL)中,交织器的排列为R=20,C=11。交织器700将输入数据分割为5个子块。将该情况示于图49(A)。另外,后半的子块有时会比Ksin短。在图49(A)的例子中,最后的子块(子块4)比其他短,只有27码元。
如图46所示地将输入数据配置在存储器702。这里,在各个图中补上基于行号I的标记。例如,子块3的开头的数据是I=12的数据,被写入RAM3的开头部分。
为进行这样的写入,图21的电路进行如下的动作。
输入端计数器704从0到4C-1为止逐一地进行计数。该计数值作为写入地址被输入到各个RAM。基于该计数值,也进行输入端开关701的控制。换言之,输入端开关701在计数值为0~C-1的期间成为如图47(A)所示的连接状态,在计数值为C~2C-1的期间成为图47(B)所示的连接状态。
(读出动作)
在此例中,使输出子块大小为Ksout=44。基于该值,进行计数器706、707的初始设定。
输出子块0的开头数据的数据排序为0。因此,将行计数器0的初始值决定为0,将列计数器0的值决定为0。
输出子块1的开头数据的数据排序为44。因此,将行计数器1的初始值决定为4,将列计数器1的值决定为2。
这里将行计数器表示为I,将列计数器表示为J,将数据排序表示为n,在彼此之间下式的关系成立。
n=I+J R .........(4)
基于式(4)表示的关系,以及I为0~19的范围内的条件,计算行计数器1和列计数器1的初始值。同样地,对子块2~4也计算计数器的初始值。将这些值与数据排序示于图50。
这里,数据排序是包含由修剪处理除去的虚拟数据的、交织后的数据排序。因此,相对于块大小K为203,子块4的最后的数据排序是219,比块大小还要大。(由于219-203=16,因此被输入了16个虚拟数据)
另外,如果不基于包含虚拟数据的数据排序来决定计数器值,则无法保证不会发生存储器存取争用。
初始设定结束后,开始读出动作。行计数器706在每个循环增1,超过行的最大值19则被复位为0,同时使对应的列计数器707增1。换言之,列计数器707在每20个循环增1。
通过列号开关708将列计数器707的值转发到更适宜的LUT。这里,列号开关708有三个作用。
·intra-row permutation(行间重新排列)
·使行号与库号相对应
·使行号与库内位置相对应(生成高位地址)
在这些关系示于图51。
具体说明列号开关708的动作。在最初的循环(初始设定时),行计数器3和列计数器3的值分别为12和6。与该行号对应的重新排列(inter-rowpermutation)前行号为13。在重新排列前属于第13行的数据是库1(RAM1),因此列号开关708如图48所示地被连接。
另外,第13行的数据被保存在从库1前面开始的第2个区域。因此,由列号开关708生成作为表示此情形的高位地址的A=1的值。A=1这个值被变换成实际的地址(A=1的区域开始的地址)11,被加到列计数器值。
其结果,17(=6+11)这个值被输入到LUT1。LUT1将作为与12行6列对应的行内重新排列图案(intra-row permutation pattern)的4这个值输出。
对于这个输出,再次加上高位地址,并作为地址输入到RAM。换言之,对RAM1输入15(=4+11)这个地址值,从RAM输出d[147]。
输出端开关703进行与列号开关708相反方向的连接。换言之,将RAM1的输出连接到子块3(data_out3)。
通过上述方式,在读出动作的最初的循环输出d[147]作子决3的数据。将所有输出的情况示于图49(B)。
在本发明的并行交织器有在一部分的子块输出无效数据的情况。修剪判定单元713检查各个子块的数据是否有效。若为无效,输出通知无效的信号。
图52表示修剪判定单元713的电路结构。修剪判定单元713包括阈值设定单元713-1、阈值判定单元713-2、valid信号开关713-3。阈值判定单元713-2指定保存着各个RAM的无效数据的区域的地址。例如,在块大小203的情况,第19行全部无效,因此RAM2的地址33~43为无效。另外,第18行仅有一开始的5码元有效,因此RAM3的地址27~32为无效。图53表示阈值的例子。th1表示无效数据开始的地址,thh表示无效数据结束的地址。另外,在RAM4不会产生修剪。
阈值判定单元713-2判定从地址表710输出的地址是否为无效的区域,有效时返回true,无效时返回false。由此可知各个RAM的输出是否有效。
valid信号开关713-3进行与输出端开关703相同的动作。其结果,表示哪个子块是有效的5比特的信号valid[4:0]被输出。
(实施方式5)
图54表示本实施方式的交织器的结构。交织器800大致包括:输入端开关801、由可独立地写入及读出的多个库(RAM0~RAM9)构成的存储器802、输出端开关703、由升序计数器804-1和降序计数器804-2和开关805和配置选择单元806构成的写入地址生成单元、行计数器807、列计数器808、列号开关809、加法器810、由查找表LUT0~LUT9构成的地址表811、延迟单元812、加法器813、修剪(pruning)判定单元814。
(1)设计方法·原理
在详细说明交织器800之前,先说明本实施方式的原理。
在特播解码器中,使数据的输入顺序相反常常是有效的。因此,在本实施方式中,仅使奇数子块的输入/输出顺序相反。将该情况示于图56。
在这样的情况下也能够与实施方式4同样地实现不产生争用的并行交织器。以决大小203的例子说明。另外,在实施方式中使并行度为10。
使输入子块大小为22,并使输出子块大小为22。这里,由于并行度为10,使Ro为2(R÷10=2)并使用式(1)来决定子块大小。将子块分割的情况示于图56。
这里应注意的是,升序和降序的子块混合存在时,不是只要基于式(1)就一定不会产生争用。必须谨慎地进行设计,以使“对于同时读出的两个以上的数据,对任意的两个以上的数据,用行数除交织后的数据排序的差时的余数为1以上”。
但是,作为简单的方法,只要满足下述之一就可使用式(1)。
(i)使输出子块大小为偶数。
(ii)使偶数子块全部为升序,使奇数子块全部为降序。或使其相反。
被同时存取的行的组合如图57所示。
将库的分配方法的一个例子示于图58。另外,为简化列号开关809的高位地址的加法运算,如图59所示,以256为单位划分库内的边界。
(2)动作
接下来以与实施方式4的交织器700(图43)不同的部分为中心说明本实施方式的交织器800的动作。
<写入动作>
由于偶数子块(子块0、2、...)以前向输入数据,使用升序计数器804-1写入存储器802。并且由于奇数子块以反向输入数据,使用降序计数器804-2写入存储器802。
图55表示输入端开关801的结构。
<读出动作>
将行计数器807、列计数器808的初始值示于图60。
另外,子块号为奇数的计数器为降序计数器。换言之,行计数器807在每1个循环减1。达到0时,在下一个循环被复位为19的同时,将列计数器808的值减1。
与实施方式4同样地,通过列号开关809将列计数器808的值转发到更适宜的LUT。在此,列号开关809负责intra-row permutation(行间重新排列)、行号与库号的相对应、行号与库内位置的相对应(生成高位地址)。在这些关系示于图61。
输入端开关801的动作也是同样的。在图62表示列号开关708的20种结构中的一开始的两个。
其他动作与实施方式4的交织器700(图43)相同。
(实施方式6)
图63表示本实施方式的交织器的结构。交织器900大致包括:输入端开关901、由可独立地写入及读出的多个库(RAM0~RAM9)构成的存储器902、输出端开关903、由升序计数器904及配置选择单元905构成的写入地址生成单元、行计数器906、列计数器907、列号开关908、加法器909、由查找表LUT0~LUT9构成的地址表910、延迟单元911、加法器912、修剪(pruning)判定单元913。
(1)设计方法·原理
在详细说明交织器900之前,先说明本实施方式的原理。
本实施方式提出组合子块分割方式和串/并行变换型的混合型的并行交织器。这里设并行度为5×2。
与上述实施方式同样地,能够并行地进行读出而不会产生争用。
以与上述的实施方式相同的方法不能进行10路并行的写入。因此,在本实施方式中使写入为5路并行。但是,如果将所有的RAM二分割为偶数地址和奇数地址,则能够进行10路并行的写入。将RAM0分成RAM0-even、RAM0-odd。通过这样的存储器分割来逐次地使写入处理并行化已为人所知,在此不做说明。
在混合型中也能够使用式(1)。但是,要使子块大小为偶数。因此,在并行度为5×2的本例中,选择Ro=4,使输出子块大小为44。
子块分割的情况如图64所示。对于一个子块,在一个循环输出两个码元。
被同时存取的行的组合如图65所示。另外,应注意写入为5路并行,读出为10路并行。
基于上述条件如图66所示地决定库分配。
(2)动作
接下来以与实施方式4的交织器700(图43)不同的部分为中心说明本实施方式的交织器900的动作。
<写入动作>
输入端开关901被配置选择单元905控制为图68所示的结构。
<读出动作>
行计数器906、列计数器907的初始值与子块大小相等,因此与实施方式4相同。也就是如图50所示。
在本实施方式中,行计数器906在每1个循环增2。超过19后被复位(即被减去20)这一点,以及复位时使列计数器906增1这一点与实施方式4的例子相同。
列号开关908如图67所示,以将一个列计数器值传送到两个LUT的方式进行连接。
这样,从一组的行计数器·列计数器生成两个地址,两个数据被同时读出。由于计数器有5组,总计10个数据被读出。这些通过输出端开关903被传送到更适宜的端子(每1个子块有两个端子)。
然后,根据本发明,这10个的数据读出都被保证是对不同的库的存取,不会引起存取争用。
另外,修剪判定单元913的修剪判定是对每个数据进行,而不是对每个子块进行。例如,子块0的最初的数据的两个之中只有一个是无效的。
(其他实施方式)
(1)行计数器、列计数、列号开关的其他结构例
行计数器、列计数器、列号开关即使是与上述实施方式不同的电路结构也能够实现。但是,向LUT提供列号,并生成用于操作输出开关的目的不变。
在图69表示对图54所示的实施方式5的电路结构的变化形式。另外,图69仅表示与图54的交织器800的行计数器807、列计数器808、列号开关809、地址生成单元811对应的部分,省略了交织器1000的其他部分。
交织器1000包括转发电路1001、控制单元1002、寄存器1003、高位地址生成单元1004、加法器1005,以代替行计数器807、列计数器808、列号开关809。
10个寄存器0~9保持与列计数器808的值相当的值。在图54中,列计数器808与子块之间的对应为固定,但在图69使寄存器0~9与LUT0~9之间的对应为固定。
转发电路1001重新排列寄存器的内容。对一部分的寄存器进行值的更新。
图70表示转发电路1001的结构例。转发电路1001具有4个状态,并进行如图70(B)所示的状态迁移。
在状态0,白色四角形的部分被连接。也就是说,寄存器0的内容被转发到寄存器0,寄存器9的内容被转发到寄存器5。
与图62比较之后能够理解转发电路1001的动作。换言之,在图62中被输入到LUT9的值为列计数器0的值。然后,在下一个时刻,如图62(B)所示,进行开关连接的变更,以使列计数器0的值被转发到LUT5。
相对于此,在图70,在最初的状态下寄存器9保持与列计数器0相当的值作为应输入到LUT9的值。该值在下一个时刻用于LUT5,所以转发电路以向寄存器5转发的方式被连接。
在状态3(三角形),对输入到寄存器9的值加1,并从输入到寄存器5的值减1。这相当于在图62中列计数器707进行增1/减1的动作。
图69的控制单元1002控制转发电路1001的四个状态。与此同时,进行高位地址生成单元1004以及输出端开关的控制。
(2)对特播解码器的应用例1
在实施方式3中,表示了与实施方式1、2的并行交织器对应的并行特播解码器的结构例(图41、图42)。图71表示与实施方式4的交织器700(图43)对应的并行特播解码器的结构例。
图71所示的并行特播解码器大致包括:并行交织器1100、并行解交织器1200、SISO解码器1300、延迟电路1400、SISO解码器1500。
并行交织器1100包括:存储器1101、自然排序地址生成单元1102、开关1103、交替排序地址生成单元1104、修剪判定单元1103。另外,并行解交织器1200包括:开关1201、存储器1202、自然排序地址生成单元1203。
图71的并行特播解码器的具特征的动作在于下一点。
(i)通过修剪判定单元1105检测出无效地址时,仅使对应的SISO解码器等待(暂时停止)。
(ii)并行交织器1100的交织顺序地址只要在延迟电路1400调整定时即可直接在并行解交织器1200使用,因此交织顺序地址生成单元1104一个就可以。同时,也传递开关的控制信号。由此,在(仅简单地延迟的)相同定时传递相同地址,因此保证没有存取争用。另外,在SISO解码器1300的输入和输出,数据的排列顺序相同时,使用FIFO(先入先出)缓冲器作为延迟电路1400。数据在输入和输出的排列顺序相反时,使用LIFO(后入先出)缓冲器。
另外,关于(i),以往也进行基于修剪判定使SISO解码器等待的结构。本发明的特征在于使其为并行结构。
另外,作为现有的结构例,有以下两种。
[现有结构1]以逐次(非并行)特播解码器为前提。一个个计算地址而不是查表(因为地址表较大)。此时,由于会生成无效地址,这个时候使SISO解码器等待。为了不产生等待,也提出了每次生成两个地址并仅使用一个的方法。此时,不会连续的两个都无效。
[现有结构2]在并行交织器中,通过查表生成地址。虽然可能除了查表以外也能够生成,但一般多通过查表生成。既然要创建表,先除去无效地址已成为常识。
与此相对,在本发明中,在并行特播解码器中故意通过修剪产生等待。换言之,在保留无效地址的状态下创建表。由此,能够维持不产生争用的状态。
(3)对特播解码器的应用例2
图72表示与实施方式6的混合型的交织器900对应的特播解码器的结构例。
图72所示的特播解码器大致包括:并行交织器2100、并行解交织器2200、Radix-4 SISO解码器2300、延迟电路2400、Radix-4 SISO解码器2500。
并行交织器2100包括:开关2101、存储器2102、自然排序(natural order)地址生成单元2103、开关2104、交替排序(interleave order)地址生成单元2105、修剪判定单元2106。
这里,将存储库进一步分割成偶数地址和奇数地址的两种,以便在自然排序(并行交织器的写入时)能够进行10码元/循环的写入。在末端有e的RAM保存偶数地址的数据,末端有0的RAM保存奇数地址的位置。
在自然排序中,写入RAM10e时,同时也对RAM10o写入数据。在交替排序中,仅对RAM10e和RAM10o的任意一方进行读出。
如上说明,本发明的并行交织器的一个方面是如使用图21、图31、图36、图54、图63所说明地,用于通过将输入数据写入由多个存储库构成的存储器,并以与写入不同的顺序读出已写入的数据,由此实现对二维排列型的数据结构以行方向优先的方式写入数据,基于在各行规定的行内重新排列图案进行行内重新排列,将各行彼此重新排列,并以列方向优先的方式读出数据的交织算法的交织器,所采用的结构包括:存储器,由多个存储库构成,各个库与所述二维排列的一个或多个行号相对应;图案生成单元,生成分别在所述二维排列的数据结构中的其他行中规定的多个行内重新排列图案;以及读出控制单元,在内部具有所述图案生成单元,并基于所述多个行内重新排列图案生成多个读出地址,从所述存储器同时读出多个数据。
根据该结构,能够使用多个地址,不产生存取争用地进行并行处理,能够实现交织器的高速化。
本发明的并行交织器的一个方面所采用的结构是,所述读出控制单元以下述方式从所述多个存储库读出数据,即,对于在所述存储库之间同时读出的两个以上的数据,就任意的两个以上的数据来说,用行数除交织后的数据排序的差所得的余数都为1以上。
根据该结构,在读出时,由于以在存储库之间同时读出的数据的交织后的排序的差除以行数时的余数为1以上的方式读出各个存储库的数据,因此不论采用那种行内及行间重新排列图案,也不会在相同的存储库生成两个以上的读出地址。换言之,不管采用何种交织图案都能够防止对存储库的存储器存取争用。其结果,即使不设置仲裁电路等附加的电路,也能够实现能进行良好且高速的交织处理的并行交织器。
本发明的并行交织器的一个方面所采用的结构是,所述交织算法是在输入数据的数据大小小于所述二维排列时,在所述输入数据附加虚拟数据并进行交织处理之后,除去虚拟数据的交织算法,还包括无效地址判定单元,在所述多个地址中,判别与所述虚拟数据对应的0个到多个的无效地址。
本发明的并行交织器的一个方面所采用的结构是,所述读出控制单元以下述方式从所述多个存储库读出数据,即,对于在所述存储库之间读出的两个以上的数据,就任意的两个以上的数据来说,将虚拟数据除去前的排序的差除以行数所得的余数都为1以上。
根据该结构,即使进行虚拟数据的除去处理(修剪处理)也不会在同一个存储库生成两个以上的读出地址,所以在进行任意的数据大小的交织时能够防止对存储库的存储器存取争用。
本发明的并行交织器的一个方面所采用的结构是包括:写入控制单元,将所述二维排列的数据结构的各行的输入数据,写入相同行的数据与该行号对应的存储库,并生成用于写入所决定的存储库的写入地址,其中写入控制单元生成使二维排列的数据结构中的各行与写入目的地的存储库之间的对应为一对一的对应关系的写入地址。
根据该结构,能够在防止对存储库的存取争用的同时,使并行度与存储库数相等,因此变得能够最大限度地利用存储库,进行高速的交织处理。
本发明的并行交织器的一个方面所采用的结构是包括:写入控制单元,将所述二维排列的数据结构的各行的输入数据,写入相同行的数据与该行号对应的存储库,并生成用于写入所决定的存储库的写入地址,其中唯一地决定写入目的地的存储库对二维排列的数据结构中的行的对应,并且生成使不超过交织后的排序的差和行数的最大公约数的1个或多个行与一个存储库相对应的写入地址。
根据该结构,在同时读出的数据数少于行数时能够减少存储库数,因此能够以更小规模的电路实现并行交织器。
本发明的并行交织器的一个方面所采用的结构是,所述写入控制单元包括:行计数器,生成与所述同时读出的数据相同数量的第一行号组;以及列计数器,生成与所述同时读出的数据相同数量的第一列号组,该写入控制单元在通过所述第一行号组决定写入目的地库,同时通过所述第一列号组计算写入地址,所述读出控制单元包括:交织地址生成单元,生成与多个数据排序对应的交织地址,该多个数据排序中的任意两个的差除以行数时的余数为1以上;行号决定单元,对所述交织地址唯一地计算第二行号组和第二列号组;以及地址转发单元,使所述第二列号组作为读出地址,通过所述第二行号组决定读出源库,同时将所述读出地址传送到对应的读出源库。
本发明的并行交织器的一个方面所采用的结构是,所述读出控制单元包括:库选择信号生成单元,求将所述交织后的排序的差除以行数时的余数作为行偏移,基于行间重新排列图案,对由分别偏移了该行偏移的分量的、相当于所述存储库的分量的行号构成的行号组进行变换,将变换后的行号组作为库选择信号传送到设置在所述存储器的输出端的输出选择单元;以及读出地址生成单元,使用列号组和通过所述库选择信号生成单元求出的变换后的行号组,生成行内重新排列图案,将该图案作为读出地址传送到所述存储器的对应的存储库。
根据该结构,通过读出地址生成单元和库选择信号生成单元,能够实现以下述方式读出数据的处理,即,关于在存储库之间同时读出的两个以上的数据,对任意的两个以上的数据,使用行数除交织后的数据排序的差时的余数为1以上。
本发明的并行交织器的一个方面是具有写入控制单元的子块分割型的交织器,该写入控制单元生成用于将所述二维排列的数据结构中的各行的输入数据,以规定的子块单位写入不同的存储库的写入地址,所述读出控制单元包括:库选择信号生成单元,求将所述交织后的排序的差除以行数时的余数作为行偏移,基于行间重新排列图案,对由分别偏移了该行偏移的分量的、相当于所述存储库的分量的行号构成的行号组进行变换,将变换后的行号组作为库选择信号传送到设置在所述存储器的输出端的输出选择单元;以及读出地址生成单元,使用列号组和通过所述库选择信号生成单元求出的变换后的行号组,生成使交织后的排序的差成为子块大小的行内重新排列图案,将该图案作为读出地址传送到所述存储器的对应的存储库。
根据该结构,在子块分割型的交织器中,通过读出地址生成单元和库选择信号生成单元,能够实现以下述方式读出数据的处理,即,关于在存储库之间同时读出的两个以上的数据,对任意的两个以上的数据,使用行数除交织后的数据排序的差时的余数为1以上。
本发明的并行交织器的一个方面所采用的结构是,所述写入控制单元生成写入地址,该写入地址使写入所述各个存储库的输入数据的子块大小为所述二维排列的数据结构中的列数以上。
根据该结构,在子块型的交织器中,能够不产生存储器存取争用地进行将二维排列的数据结构中的各行的输入数据,写入相同行的数据与该行号对应的存储库的处理。
本发明的并行交织器的一个方面所采用的结构是,所述写入控制单元生成写入地址,该写入地址使写入所述各个存储库的输入数据的子块大小与所述二维排列的数据结构中的列数相等。
根据该结构,变得写入和读出都能够以相同的子块单位进行处理。
本发明的并行解交织器的一个方面所采用的结构是,将上述任意的并行交织器的写入地址和读出地址交换,并进一步交换输入选择单元和输出选择单元,由此实现交织算法的反向处理。
根据该结构,能够将通过上述任意的并行交织器进行交织后的数据复原成原本的排列而不产生存储库存取争用。
本发明的特播解码器的一个方面所采用的结构是包括上述任意的并行交织器。
本发明的交织方法的一个方面是,用于通过将输入数据写入由多个存储库构成的存储器,并以与写入不同的顺序读出已写入的数据,由此实现对二维排列型的数据结构以行方向优先的方式写入数据,基于在各行规定的行内重新排列图案进行行内重新排列,将各行彼此重新排列,并以列方向优先的方式读出数据的交织算法的并行交织方法,包括:图案生成步骤,生成分别在所述二维排列的数据结构中的其他行中规定的多个行内重新排列图案;以及地址生成步骤,基于在所述图案生成步骤中生成的所述多个行内重新排列图案生成有关存储器的多个地址,所述存储器由多个存储库构成,并且各个库与所述二维排列的1个或多个行号相对应,从所述多个存储器同时读出多个数据。
本说明书基于2005年2月3日申请的日本专利申请2005-28314号。其内容全部包含于此。
工业实用性
本发明的资源分配方法和基站装置,适用于缩短延迟时间和降低开销的数据分组的发送/接收装置。
Claims (14)
1.一种并行交织器,用于通过将输入数据写入由多个存储库构成的存储器,并以与写入不同的顺序读出所写入的数据,由此实现对二维排列型的数据结构以行方向优先的方式写入数据,基于在各行规定的行内重新排列图案进行行内重新排列,将各行彼此重新排列,并以列方向优先的方式读出数据的交织算法,该并行交织器包括:
存储器,由多个存储库构成,各个库与所述二维排列的一个或多个行号相对应;
图案生成单元,生成分别在所述二维排列的数据结构中的其他行中所规定的多个行内重新排列图案;以及
读出控制单元,在内部具有所述图案生成单元,并基于所述多个行内重新排列图案生成多个读出地址,
从所述存储器同时读出多个数据。
2.如权利要求1所述的并行交织器,其中
所述读出控制单元以下述方式从所述多个存储库读出数据,即,对于在所述存储库之间同时读出的两个以上的数据,就任意的两个以上的数据来说,将交织后的数据排序的差除以行数所得的余数都为1以上。
3.如权利要求1所述的并行交织器,其中
所述交织算法是在输入数据的数据大小小于所述二维排列时,在所述输入数据附加虚拟数据并进行交织处理之后,除去虚拟数据的交织算法,
所述并行交织器还包括:
无效地址判定单元,在所述多个地址中,判别与所述虚拟数据对应的0个到多个的无效地址。
4.如权利要求3所述的并行交织器,其中
所述读出控制单元以下述方式从所述多个存储库读出数据,即,对于在所述存储库之间读出的两个以上的数据,就任意的两个以上的数据来说,将虚拟数据除去前的排序的差除以行数所得的余数都为1以上。
5.如权利要求1所述的并行交织器,其中,包括:
写入控制单元,将所述二维排列的数据结构的各行的输入数据,写入相同行的数据与该行号对应的存储库,并生成用于写入所决定的存储库的写入地址,
该写入控制单元生成使二维排列的数据结构中的各行与写入目的地的存储库之间的对应为一对一的对应关系的写入地址。
6.如权利要求1所述的并行交织器,其中,包括:
写入控制单元,将所述二维排列的数据结构的各行的输入数据,写入相同行的数据与该行号对应的存储库,并生成用于写入所决定的存储库的写入地址,
该写入控制单元唯一地决定写入目的地的存储库与二维排列的数据结构中的行的对应,并且生成使不超过交织后的排序的差与行数的最大公约数的1个或多个行与一个存储库相对应的写入地址。
7.如权利要求1所述的并行交织器,其中,包括:
写入控制单元,将所述二维排列的数据结构的各行的输入数据,写入相同行的数据与该行号对应的存储库,并生成用于写入所决定的存储库的写入地址,
所述写入控制单元包括:
行计数器,生成与所述同时读出的数据相同数量的第一行号组;以及
列计数器,生成与所述同时读出的数据相同数量的第一列号组,
该写入控制单元通过所述第一行号组决定写入目的地库,同时通过所述第一列号组计算写入地址,
所述读出控制单元包括:
交织地址生成单元,生成与多个数据排序对应的交织地址,该多个数据排序中的任意两个的差除以行数所得的余数为1以上;
行号决定单元,对所述交织地址唯一地计算第二行号组和第二列号组;以及
地址转发单元,使所述第二列号组作为读出地址,通过所述第二行号组决定读出源库,同时将所述读出地址传送到对应的读出源库。
8.如权利要求1所述的并行交织器,其中,所述读出控制单元包括:
库选择信号生成单元,求将所述交织后的排序的差除以行数所得的余数作为行偏移,基于行间重新排列图案,对由分别偏移了该行偏移的分量的、相当于所述存储库的分量的行号构成的行号组进行变换,将变换后的行号组作为库选择信号传送到被设置在所述存储器的输出端的输出选择单元;以及
读出地址生成单元,使用列号组和通过所述库选择信号生成单元求出的变换后的行号组,生成行内重新排列图案,将该图案作为读出地址传送到所述存储器的对应的存储库。
9.如权利要求1所述的并行交织器,其中
所述并行交织器是具有写入控制单元的子块分割型的交织器,该写入控制单元生成用于将所述二维排列的数据结构中的各行的输入数据,以规定的子块单位写入不同的存储库的写入地址,
所述读出控制单元包括:
库选择信号生成单元,求将所述交织后的排序的差除以行数时的余数作为行偏移,基于行间重新排列图案,对由分别偏移了该行偏移的分量的、相当于所述存储库的分量的行号构成的行号组进行变换,将变换后的行号组作为库选择信号传送到被设置在所述存储器的输出端的输出选择单元;以及
读出地址生成单元,使用列号组和通过所述库选择信号生成单元求出的变换后的行号组,生成使交织后的排序的差成为子块大小的行内重新排列图案,将该图案作为读出地址传送到所述存储器的对应的存储库。
10.如权利要求9所述的并行交织器,其中
所述写入控制单元生成写入地址,该写入地址使写入所述各个存储库的输入数据的子块大小为所述二维排列的数据结构中的列数以上。
11.如权利要求8所述的并行交织器,其中
所述写入控制单元生成写入地址,该写入地址使写入所述各个存储库的输入数据的子块大小与所述二维排列的数据结构中的列数相等。
12.一种并行解交织器,通过将权利要求1所述的行交织器的写入地址和读出地址交换,并进一步交换输入选择单元和输出选择单元,由此实现交织算法的反向处理。
13.一种特播解码器,包括如权利要求1所述的并行交织器。
14.一种交织方法,为用于通过将输入数据写入由多个存储库构成的存储器,并以与写入不同的顺序读出所写入的数据,由此实现对二维排列型的数据结构以行方向优先的方式写入数据,基于在各行规定的行内重新排列图案进行行内重新排列,将各行彼此重新排列,并以列方向优先的方式读出数据的交织算法的并行交织方法,该方法包括:
图案生成步骤,生成分别在所述二维排列的数据结构中的其他行中所规定的多个行内重新排列图案;以及
读出控制步骤,基于在所述图案生成步骤中生成的所述多个行内重新排列图案,生成有关存储器的多个读出地址,所述存储器由多个存储库构成,并且各个库与所述二维排列的1个或多个行号相对应,
从所述多个存储器同时读出多个数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005028314 | 2005-02-03 | ||
JP028314/2005 | 2005-02-03 | ||
PCT/JP2006/301864 WO2006082923A1 (ja) | 2005-02-03 | 2006-02-03 | 並列インターリーバ、並列デインターリーバ及びインターリーブ方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101116249A true CN101116249A (zh) | 2008-01-30 |
CN101116249B CN101116249B (zh) | 2010-10-13 |
Family
ID=36777305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800040360A Expired - Fee Related CN101116249B (zh) | 2005-02-03 | 2006-02-03 | 并行交织器、并行解交织器以及交织方法 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1850486A4 (zh) |
JP (1) | JP4848359B2 (zh) |
KR (1) | KR100912156B1 (zh) |
CN (1) | CN101116249B (zh) |
WO (1) | WO2006082923A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882970A (zh) * | 2009-05-06 | 2010-11-10 | 中国科学院微电子研究所 | 多模式的交织与解交织地址生成方法及装置 |
CN102064910A (zh) * | 2009-11-13 | 2011-05-18 | 傲世通科技(苏州)有限公司 | 混合自动重传请求比特收集和交织的方法和装置 |
CN102316059A (zh) * | 2010-07-05 | 2012-01-11 | 中国科学院微电子研究所 | 一种ofdm系统的交织方法和装置 |
CN101345604B (zh) * | 2008-08-15 | 2012-03-21 | 北京理工大学 | 一种行列式分组交织器的并行实现方法 |
CN105790776A (zh) * | 2014-12-18 | 2016-07-20 | 深圳市中兴微电子技术有限公司 | 3G协议的turbo码并行译码方法及装置 |
CN103780341B (zh) * | 2013-12-31 | 2017-02-08 | 上海无线通信研究中心 | 基于并行编码与并行交织的无线通信传输方法 |
CN109842461A (zh) * | 2017-11-24 | 2019-06-04 | 深圳超级数据链技术有限公司 | 数据交织方法和装置、交织数据解交织方法和装置 |
CN109889311A (zh) * | 2019-03-25 | 2019-06-14 | 西安电子科技大学 | 基于组合编码的间隙信道通信方法 |
CN111628787A (zh) * | 2020-05-25 | 2020-09-04 | 武汉高德红外股份有限公司 | 一种无冗余数据的卷积交织与解交织fpga实现方法和系统 |
CN112740582A (zh) * | 2018-10-19 | 2021-04-30 | 华为技术有限公司 | 一种存储方法及极化码接收设备 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4692751B2 (ja) * | 2005-11-28 | 2011-06-01 | 日本電気株式会社 | ターボ復号器及びそれを備えた通信システム |
US7925956B2 (en) * | 2006-10-03 | 2011-04-12 | Motorola Mobility, Inc. | Method and apparatus for encoding and decoding data |
US8356232B2 (en) | 2006-10-06 | 2013-01-15 | Motorola Mobility Llc | Method and apparatus for encoding and decoding data |
JP4837645B2 (ja) * | 2006-10-12 | 2011-12-14 | ルネサスエレクトロニクス株式会社 | 誤り訂正符号復号回路 |
US8010867B2 (en) | 2006-10-12 | 2011-08-30 | Renesas Electronics Corporation | Error correction code decoding device |
JP2010508790A (ja) * | 2006-11-01 | 2010-03-18 | クゥアルコム・インコーポレイテッド | 高データレートのためのターボインターリーバ |
KR101290472B1 (ko) | 2006-11-22 | 2013-07-26 | 삼성전자주식회사 | 이동 통신 시스템에서 병렬 복호 방법 및 장치 |
JP2008135813A (ja) * | 2006-11-27 | 2008-06-12 | Fujitsu Ltd | ターボ復号器及びターボ復号方法 |
US7949926B2 (en) * | 2006-11-30 | 2011-05-24 | Motorola Mobility, Inc. | Method and apparatus for encoding and decoding data |
EP2698936B1 (en) * | 2007-06-19 | 2015-08-19 | Panasonic Intellectual Property Corporation of America | Channel arrangement circuit for radio communication |
EP2051387A1 (en) * | 2007-10-15 | 2009-04-22 | CoreOptics, Inc., c/o The Corporation Trust Center | Receiver, interleaving and deinterleaving circuit and method |
KR101297563B1 (ko) | 2007-11-15 | 2013-08-19 | 삼성전자주식회사 | 스토리지 관리 방법 및 관리 시스템 |
US8140932B2 (en) * | 2007-11-26 | 2012-03-20 | Motorola Mobility, Inc. | Data interleaving circuit and method for vectorized turbo decoder |
US8711984B2 (en) | 2008-01-22 | 2014-04-29 | Agere Systems Llc | Methods and apparatus for map detection with reduced complexity |
US8572332B2 (en) | 2008-03-28 | 2013-10-29 | Qualcomm Incorporated | De-interleaving mechanism involving a multi-banked LLR buffer |
JP5477465B2 (ja) | 2009-09-16 | 2014-04-23 | 日本電気株式会社 | インタリーバ及びインタリーブ方法 |
JP5476902B2 (ja) | 2009-09-30 | 2014-04-23 | 富士通株式会社 | ターボ復号装置及び通信装置 |
KR101553651B1 (ko) | 2009-10-13 | 2015-09-17 | 삼성전자 주식회사 | 다중 뱅크 메모리 액세스 장치 |
US8255759B2 (en) * | 2009-10-29 | 2012-08-28 | Qualcomm Incorporated | APP (a priori probability) storage design for LTE turbo decoder with quadratic permutation polynomial interleaver |
US8614977B2 (en) | 2010-05-11 | 2013-12-24 | Qualcomm Incorporated | Method and apparatus for parallel de-interleaving of LTE interleaved data |
CN102412850B (zh) * | 2010-09-25 | 2014-02-05 | 中兴通讯股份有限公司 | Turbo码并行交织器及其并行交织方法 |
CN102170333B (zh) * | 2011-05-17 | 2016-01-20 | 中兴通讯股份有限公司 | 一种交织地址的并行计算方法及系统 |
FR2987527B1 (fr) * | 2012-02-23 | 2014-02-21 | Univ Bretagne Sud | Dispositif auto-configurable d'entrelacement/desentrelacement de trames de donnees |
WO2014097531A1 (ja) * | 2012-12-19 | 2014-06-26 | 日本電気株式会社 | アクセス競合解決処理回路、データ処理装置及びアクセス競合解決方法 |
KR101558172B1 (ko) | 2014-10-14 | 2015-10-08 | 숭실대학교산학협력단 | 오류 분산을 위한 인터리빙 방법 및 장치, 이를 수행하기 위한 기록매체 |
JP6863661B2 (ja) * | 2017-06-08 | 2021-04-21 | 三菱電機株式会社 | レートデマッチング及びデインターリーブ回路 |
KR102445674B1 (ko) | 2017-12-18 | 2022-09-22 | 삼성전자주식회사 | 선택적으로 메모리를 부팅시키도록 구성되는 램 컨트롤러 및 그 동작 방법 |
WO2020095093A1 (en) | 2018-11-07 | 2020-05-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Optimized implementation of (de-)interleaving and rate (de-)matching for 3gpp new radio |
CN111478750B (zh) * | 2020-03-12 | 2022-10-14 | 普联技术有限公司 | 一种数据并行交织方法、终端设备及计算机存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2295791C (en) * | 1997-07-30 | 2006-06-13 | Samsung Electronics Co., Ltd. | Adaptive channel encoding method and device |
US6678843B2 (en) * | 1999-02-18 | 2004-01-13 | Interuniversitair Microelektronics Centrum (Imec) | Method and apparatus for interleaving, deinterleaving and combined interleaving-deinterleaving |
EP1097516B1 (en) * | 1999-05-19 | 2006-12-20 | Samsung Electronics Co., Ltd. | Turbo interleaving apparatus and method |
US6775800B2 (en) * | 2000-01-03 | 2004-08-10 | Icoding Technology, Inc. | System and method for high speed processing of turbo codes |
JP3399904B2 (ja) * | 2000-03-17 | 2003-04-28 | 松下電器産業株式会社 | インタリーブアドレス生成装置 |
US6845482B2 (en) * | 2001-02-28 | 2005-01-18 | Qualcomm Incorporated | Interleaver for turbo decoder |
US6392572B1 (en) * | 2001-05-11 | 2002-05-21 | Qualcomm Incorporated | Buffer architecture for a turbo decoder |
US6603412B2 (en) * | 2001-06-08 | 2003-08-05 | Texas Instruments Incorporated | Interleaved coder and method |
FR2838581B1 (fr) * | 2002-04-16 | 2005-07-08 | Universit De Bretagne Sud | Procede de codage et/ou de decodage de codes correcteurs d'erreurs, dispositifs et signal correspondants |
EP1401108A1 (en) * | 2002-09-12 | 2004-03-24 | STMicroelectronics N.V. | Electronic device avoiding write access conflicts in interleaving, in particular optimized concurrent interleaving architecture for high throughput turbo-decoding |
US6851039B2 (en) * | 2002-09-30 | 2005-02-01 | Lucent Technologies Inc. | Method and apparatus for generating an interleaved address |
US6912616B2 (en) * | 2002-11-12 | 2005-06-28 | Hewlett-Packard Development Company, L.P. | Mapping addresses to memory banks based on at least one mathematical relationship |
-
2006
- 2006-02-03 WO PCT/JP2006/301864 patent/WO2006082923A1/ja active Application Filing
- 2006-02-03 KR KR1020077018009A patent/KR100912156B1/ko not_active IP Right Cessation
- 2006-02-03 CN CN2006800040360A patent/CN101116249B/zh not_active Expired - Fee Related
- 2006-02-03 JP JP2007501644A patent/JP4848359B2/ja not_active Expired - Fee Related
- 2006-02-03 EP EP06713007A patent/EP1850486A4/en not_active Withdrawn
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101345604B (zh) * | 2008-08-15 | 2012-03-21 | 北京理工大学 | 一种行列式分组交织器的并行实现方法 |
CN101882970A (zh) * | 2009-05-06 | 2010-11-10 | 中国科学院微电子研究所 | 多模式的交织与解交织地址生成方法及装置 |
CN102064910A (zh) * | 2009-11-13 | 2011-05-18 | 傲世通科技(苏州)有限公司 | 混合自动重传请求比特收集和交织的方法和装置 |
CN102316059A (zh) * | 2010-07-05 | 2012-01-11 | 中国科学院微电子研究所 | 一种ofdm系统的交织方法和装置 |
CN103780341B (zh) * | 2013-12-31 | 2017-02-08 | 上海无线通信研究中心 | 基于并行编码与并行交织的无线通信传输方法 |
CN105790776A (zh) * | 2014-12-18 | 2016-07-20 | 深圳市中兴微电子技术有限公司 | 3G协议的turbo码并行译码方法及装置 |
CN109842461A (zh) * | 2017-11-24 | 2019-06-04 | 深圳超级数据链技术有限公司 | 数据交织方法和装置、交织数据解交织方法和装置 |
CN109842461B (zh) * | 2017-11-24 | 2022-08-26 | 山东协力合智通信科技有限公司 | 数据交织方法和装置、交织数据解交织方法和装置 |
CN112740582A (zh) * | 2018-10-19 | 2021-04-30 | 华为技术有限公司 | 一种存储方法及极化码接收设备 |
CN112740582B (zh) * | 2018-10-19 | 2022-08-09 | 华为技术有限公司 | 一种存储方法及极化码接收设备 |
CN109889311A (zh) * | 2019-03-25 | 2019-06-14 | 西安电子科技大学 | 基于组合编码的间隙信道通信方法 |
CN109889311B (zh) * | 2019-03-25 | 2020-06-12 | 西安电子科技大学 | 基于组合编码的间隙信道通信方法 |
CN111628787A (zh) * | 2020-05-25 | 2020-09-04 | 武汉高德红外股份有限公司 | 一种无冗余数据的卷积交织与解交织fpga实现方法和系统 |
CN111628787B (zh) * | 2020-05-25 | 2022-03-22 | 武汉高德红外股份有限公司 | 一种无冗余数据的卷积交织与解交织fpga实现方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2006082923A1 (ja) | 2006-08-10 |
EP1850486A4 (en) | 2008-05-07 |
JPWO2006082923A1 (ja) | 2008-06-26 |
KR20070093447A (ko) | 2007-09-18 |
KR100912156B1 (ko) | 2009-08-14 |
CN101116249B (zh) | 2010-10-13 |
EP1850486A1 (en) | 2007-10-31 |
JP4848359B2 (ja) | 2011-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101116249B (zh) | 并行交织器、并行解交织器以及交织方法 | |
CN101540654B (zh) | 一种交织速率匹配和解交织解速率匹配方法 | |
JP4383672B2 (ja) | 第3世代の符号分割多重アクセスのためのターボコード・インターリーバ | |
RU2009120617A (ru) | Турбоперемежитель для высоких скоростей передачи данных | |
WO2003044965A1 (fr) | Generateur d'ordre d'entrelacement, entrelaceur, turbo codeur et turbo decodeur | |
CN101079641A (zh) | 二维交织设备及方法 | |
US7170432B2 (en) | Addresses generation for interleavers in turbo encoders and decoders | |
CN102414991B (zh) | 用于解码器的数据重排 | |
CN1341295A (zh) | 用于透平编码的块交织 | |
CN1545765A (zh) | 可变长度编码打包体系结构 | |
JP2000353965A (ja) | インターリービング方法、インターリービング装置、ターボ符号化方法及びターボ符号化装置 | |
CN101237440B (zh) | 一种数据的交织方法和装置 | |
CN101924608B (zh) | 一种实现块交织的方法、装置及发射机 | |
CN1303834C (zh) | 用于最小化由收缩引起的输出延迟的设备和方法 | |
CN101540651B (zh) | 一种实现列交织的方法和装置 | |
CN102098126B (zh) | 用于块状编码的交织装置、速率匹配方法及装置 | |
KR20070029744A (ko) | 터보 디코더 입력 재배치 | |
CN105187162A (zh) | 一种多粒度并行解速率匹配方法和装置 | |
Wang et al. | Parallel interleaver architecture with new scheduling scheme for high throughput configurable turbo decoder | |
CN101895374A (zh) | 速率匹配方法及装置 | |
CN109728826B (zh) | 一种数据交织与解交织方法和装置 | |
CN100438345C (zh) | 一种交织装置 | |
CN103929271A (zh) | 一种lte系统速率匹配的并行实现方法和装置 | |
KR101173555B1 (ko) | 데이터 디레이트 매처 및 방법 | |
CN100466479C (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101013 Termination date: 20140203 |