WO2006082923A1 - 並列インターリーバ、並列デインターリーバ及びインターリーブ方法 - Google Patents

並列インターリーバ、並列デインターリーバ及びインターリーブ方法 Download PDF

Info

Publication number
WO2006082923A1
WO2006082923A1 PCT/JP2006/301864 JP2006301864W WO2006082923A1 WO 2006082923 A1 WO2006082923 A1 WO 2006082923A1 JP 2006301864 W JP2006301864 W JP 2006301864W WO 2006082923 A1 WO2006082923 A1 WO 2006082923A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
row
address
read
bank
Prior art date
Application number
PCT/JP2006/301864
Other languages
English (en)
French (fr)
Inventor
Hiroyuki Motozuka
Original Assignee
Matsushita Electric Industrial Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co., Ltd. filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to CN2006800040360A priority Critical patent/CN101116249B/zh
Priority to JP2007501644A priority patent/JP4848359B2/ja
Priority to EP06713007A priority patent/EP1850486A4/en
Publication of WO2006082923A1 publication Critical patent/WO2006082923A1/ja

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0071Use of interleaving
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/27Coding, 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/276Interleaving address generation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/27Coding, 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/2771Internal interleaver for turbo codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/27Coding, 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/2792Interleaver wherein interleaving is performed jointly with another technique such as puncturing, multiplexing or routing
    • H03M13/2796Two 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0064Concatenated codes
    • H04L1/0066Parallel concatenated codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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/2957Turbo codes and decoding

Definitions

  • the present invention writes data with a priority in the row direction to a two-dimensional array type data structure, rearranges each row, rearranges the rows, and reads the data with a priority in the column direction.
  • the present invention relates to a parallel interleaver, a parallel deinterleaver, and an interleaving method for realizing an interleave algorithm.
  • Interleaving is to sort the data string ⁇ d [0], d [l], ⁇ , d [K— 1] ⁇ of length K, and to obtain the data string ⁇ d '[0], d' [ l], ⁇ , d '[K— 1] ⁇ .
  • Each piece of data d [i] will be referred to as a symbol because it varies depending on whether it is a single bit or a fixed-point number (so-called soft decision value).
  • each row in the array is rearranged within the row according to a predetermined rule.
  • the sorting rule may be different for each row.
  • the sorting rule for each row is represented by the sequence Ui (j).
  • Ui (j) is the original position in the row of data being moved to row i, column j Indicates.
  • U2 (3) 7 in the example, which indicates that the original position of the data moved to the second row and third column is the second row and seventh column. That is, d [27] is moved to the 2nd row, 7th column force, 2nd row, 3rd column by rearrangement within the row. This state is shown in FIG.
  • Non-Patent Document 1 defines the R and C determination method, the in-line rearrangement rule Ui (j), and the inter-row rearrangement rule T (i) in the above procedure. In addition to the method disclosed in Non-Patent Document 1, many methods have been proposed.
  • the parallel interleaver proposed in the present invention is all performed by the above procedure regardless of the determination method of R and C, the in-line rearrangement rule Ui (j), and the inter-row rearrangement rule T (i). It is effective for the interleaver.
  • interleaver circuit When an interleaver circuit is actually realized by LSI or the like, writing to a two-dimensional array or rearranging between lines or between lines as described above is not performed.
  • a generally known interleaver circuit implements rearrangement by writing to the memory in the order of the input symbols in order and then reading them randomly. Interleaving as described above is realized by reflecting the rules of rearrangement between rows and reading in the column direction in the address calculation method when performing random memory reading.
  • FIG. 4 shows the most basic interleaver circuit. This is called a sequential interleaver because it processes one symbol per cycle.
  • the sequential interleaver consists of a RAM that stores symbol sequences, a counter 1 that generates ascending addresses, an address table that generates pseudo-random addresses, and counter 2.
  • an address table is set according to a standard that defines an interleaving pattern. The procedure is intuitively to read Figure 3 with column direction priority. And can be understood.
  • the second output data is the 31st data before sorting.
  • the interleaving process is completed in two phases: write and read.
  • counter 1 In the write phase, counter 1 generates an address starting from 0 and incrementing by 1. By writing input symbols to RAM using this address, the data strings are stored in RAM in the order in which they were input. Times 0 to 39 in the timing chart of FIG. 5 are write phases.
  • the read operation is started.
  • counter 2 first generates a count value for the rising jet, and the address table is referenced using the count value as an address. Then, one symbol is read from the RAM using the data (A (k2)) output from the address table as an address. By repeating such an operation for the number of symbols, an interleaved data string can be obtained as shown by the signal r_data in FIG.
  • Dinterleave the process of returning the interleaved data string to the original order is called Dinterleave.
  • Dinter leave can also be realized using a sequential interleaver as shown in Fig. 5. In other words, it is only necessary to set a Dinter Leave pattern in the address table.
  • a simpler method for performing the Dinterleave is to exchange the write address and the read address of the sequential interleaver.
  • the configuration shown in FIG. This method adds a small amount of circuitry (w -A circuit that performs interleaving and diinterleaving can be realized using only the switch that replaces addr and r_addr.
  • the interleaver in Fig. 4 was sequential, that is, writing or reading only one symbol per cycle. Therefore, in order to interleave the K symbol data sequence, the first symbol is input and the last symbol is output.
  • One way to parallelize the interleaver is to divide the input data string into partial data strings (sub-blocks) as shown in Fig. 9. Each sub-block is input in parallel with the interleaver.
  • the data d [0] and d [23] are simultaneously input to the parallel interleaver 1 in the first cycle, and d [l] and d [24] are simultaneously input in the next cycle. Entered.
  • d [40] and d [2] are output simultaneously. In this way, the interleaving process can be completed with twice the throughput and half the delay time compared to the sequential interleaver shown in FIG.
  • a turbo decoder configured using parallel interleaver 1 is shown in FIG.
  • SISO Soft-In Soft-Out
  • this parallel turbo decoder can achieve twice the throughput of the sequential turbo decoder shown in FIG.
  • Such a parallel turbo decoder using sub-block division is described in Non-Patent Document 2, for example.
  • Figure 10 shows another parallel interleaver.
  • This method is a serial-to-parallel variant (Continu data (for example, d [0] and d [1]) are simultaneously input to parallel interleaver 2 by SZP in the figure.
  • SZP serial-to-parallel variant
  • the data set that is output simultaneously is returned to a continuous data string by the parallel-serial converter (PZS in the figure).
  • a turbo decoder configured using the parallel interleaver 2 is as shown in FIG.
  • the data input at the same time is continuous data on the data string, so it cannot be processed in parallel by another SISO decoder. Therefore, a high-speed SISO decoder that can input multiple symbols simultaneously is required.
  • a method called radix-4 as described in Non-Patent Document 3 is known.
  • the turbo decoder based on radix-4 can achieve the same throughput with a small circuit scale as compared to the 2-parallel sub-block division method. However, it is difficult to further increase the throughput (for example, adopting radix-8 or higher) due to the restriction of the constraint length of the critical path and turbo code.
  • Multi-port RAM is a RAM that can process multiple addresses at the same time and write (read) multiple data at the same time.
  • Figure 16 shows a parallel interleaver using dual-port RAM (RAM that allows two simultaneous accesses).
  • FIG. For the block split type, set the offset value to the sub-block size, and for the serial / parallel conversion type, set the offset value to 1!
  • Another solution is to divide the RAM into multiple banks (modules). Since another bank can be accessed independently, the same number of accesses as the number of memory banks can be performed simultaneously.
  • Figure 17 shows an example of the configuration of a parallel Dinter River with an arbitration circuit.
  • data d [2] and data d [25] are input.
  • data d [2] is written to address 20 of RAM0, and data d [24] is taken out of the buffer and written to address 16 of RAMI. Since only one RAMI can be written at a time, data d [25] is now stored in the buffer.
  • a parallel interleaver circuit can be realized without using a multiport memory.
  • This method also has the advantage that the total amount of RAM does not have to be increased.
  • FIG. 1 shows another configuration example when such a RAM is divided into a plurality of banks (modules).
  • a parallel interleaver can be realized by dividing the memory into the same number of memory banks RAM0 to RAM4 as the number of subblocks.
  • Such a configuration is, for example, It is described in Patent Document 2.
  • Non-Patent Document 4 shows a method for designing a function ⁇ ⁇ ⁇ ⁇ for an arbitrary interleave pattern ⁇ .
  • Patent Document 3 describes a technique for performing interleaving with a circuit configuration similar to that of FIG.
  • the power function is a simple function (for example, integer division).
  • An example of a simple M function and the interleave pattern ⁇ are shown.
  • Patent Document 3 discloses a design method for an interleave pattern ⁇ that always satisfies the above relationship, it is possible to design an interleave pattern ⁇ that can be processed in parallel without causing memory access contention in the circuit of FIG. .
  • Patent Document 1 Japanese Patent No. 3399904
  • Patent Document 2 Japanese Unexamined Patent Application Publication No. 2004-104776
  • Patent Document 3 U.S. Pat.No. 6,775,800
  • Non-Patent Document 1 3GPP TS25.212 v5.4.0 "Multiplexing and channel coding (FDD), Release 5 4.2. Section 2.3 Turbo code internal interleaver
  • Non-Patent Document 2 Giulietti, A .; Bougard, B .; Derudder, V .; Dupont, S .; Weijers, J.- W .; Van der Perre, L .; "A 80 Mb / s low-power scalable turbo codec core, Custom Integrated Circuits Conference, 2002. Proceedings of the IEEE 2002, pp. 389-392
  • Non-Patent Document 3 David Garrett, Chris Nicol; "Integrated Circuits for Channel Coding in 3G Cellular Mobile Wireless Systems", IEEE Communications Magazine August 2003, pp.150-159
  • Patent Document 4 Tarable, A .; Benedetto, S .; "Mapping interleaving laws to parallel tur bo decoder architectures", Communications Letters, IEEE, Volume: 8, Issue: 3, March 2004, Pages: 162-164
  • the multiport RAM is rarely used because of its large circuit scale.
  • F Many PGAs Field Programmable Gate Arrays have dual-port RAM, so it is possible to implement a 2-parallel interleaver. Have difficulty.
  • Patent Document 2 has a drawback that the function of arbitration is complicated. As the number of sub-blocks (parallelism) increases, the arbitration function becomes more complex, leading to an increase in circuit scale. There is also a disadvantage that the FIFO length becomes long. The need for a long FIFO increases the circuit scale and increases the delay time.
  • Non-Patent Document 4 since the M function cannot be expressed by a simple expression, a table lookup is required for implementation. Accordingly, it is necessary to add a relatively large memory, which increases the circuit scale of the interleaver. In addition, it is practically difficult to derive the M function with a force real time that requires the M function to change each time the interleave pattern changes. Therefore, every time the data length changes, the 3GPP standard turbo coding internal interleaver It is difficult to respond when the turn changes.
  • Patent Document 3 it is difficult to find ⁇ that satisfies the above equation for a given ⁇ .
  • the method was carefully considered in Patent Document 3 above. It can be said that the technique described in Patent Document 3 is a design method of ⁇ that satisfies the above formula and a method of performing parallel interleaving for a special ⁇ . Therefore, there is a problem that even if the technique described in Patent Document 3 is applied, it is difficult to parallelize the internal interleaver shown in the 3GPP standard without memory access contention.
  • An object of the present invention is to provide a parallel interleaver, a parallel dinleaver, and an interleaving method capable of flexibly responding to changes in the interleave pattern and avoiding memory access contention with a relatively simple configuration. is there.
  • the parallel interleaver of the present invention writes input data to a memory having a plurality of memory banks, and reads the written data in a different order from the writing, thereby performing a row direction with respect to a two-dimensional array type data structure
  • a parallel interleaver that implements an interleaving algorithm that writes data with priority rearranges the rows based on the in-row sorting pattern defined for each row, sorts the rows, and reads the data with priority in the column direction.
  • Memory banks each of which is associated with one or more row numbers of the two-dimensional array and a plurality of rows defined in different rows in the data structure of the two-dimensional array.
  • a pattern generation unit configured to generate a rearrangement pattern; and the pattern generation unit included in the plurality of lines.
  • a read control means for generating a plurality of read addresses based on the rearrangement pattern, and adopting a configuration for simultaneously reading a plurality of data from the memory.
  • FIG. 5 is a timing chart showing the operation of the sequential interleaver in FIG.
  • FIG.7 Block diagram showing an example configuration of a Dinterleaver for a sequential interleaver.
  • ⁇ 8 Schematic diagram for explaining the operation of the sequential interleaving method.
  • FIG. 12 is a block diagram showing a configuration example of a turbo decoder using a sequential interleaver.
  • FIG. 13 is a block diagram showing a configuration example of a turbo decoder using the parallel interleaver in FIG.
  • FIG. 15 is a block diagram showing a configuration example of a turbo decoder using the parallel interleaver of FIG.
  • FIG. 16 Block diagram showing the configuration of a conventional parallel interleaver using dual-port RAM
  • FIG.17 Block diagram showing an example of the configuration of a conventional parallel Dinterleaver with an arbitration circuit
  • FIG.18 Conventional parallel interleaver (Dinter Reno) when RAM is divided into multiple banks (modules)
  • FIG.18 Conventional parallel interleaver (Dinter Reno) when RAM is divided into multiple banks (modules)
  • FIG. 19 A diagram showing data written to each RAM 0 to 4 in FIG.
  • FIG. 20 A block diagram showing another configuration example of a conventional parallel interleaver (Dinter Reno) when RAM is divided into a plurality of banks (modules).
  • FIG. 21 is a block diagram showing a configuration of an interleaver according to the first embodiment of the present invention.
  • FIG. 24 is a timing chart showing the write timing in the first embodiment.
  • FIG. 25 is a timing chart showing the read timing in the first embodiment.
  • FIG.27 A diagram showing the contents of the improved lookup tables LUT0 to 4 when invalid addresses are included
  • FIG. 31 is a block diagram showing a configuration of an interleaver according to the second embodiment.
  • FIG. 32 is a block diagram showing the configuration of the invalidity determination unit
  • FIG. 33 is a diagram showing the contents of lookup tables LUT0 to LUT4 in Embodiment 2.
  • FIG. 34 is a timing chart showing the write timing in the second embodiment.
  • FIG. 35 is a timing chart showing the read timing in the second embodiment.
  • FIG. 36 is a block diagram showing another configuration example of the interleaver according to the second embodiment.
  • FIG.37 Diagram showing the contents of lookup tables LUT0 to 4 in the interleaver in Fig.36
  • FIG. 38 is a timing chart showing the write timing in the interleaver in FIG. 36.
  • FIG. 39 is a timing chart showing the read timing in the interleaver in FIG. 36.
  • FIG. 40 is a block diagram showing a configuration example of the turbo decoder in the third embodiment.
  • FIG. 41 is a block diagram showing a configuration example of a turbo decoder according to the third embodiment.
  • FIG. 42 is a block diagram showing a configuration example of a turbo decoder according to the third embodiment.
  • FIG. 43 is a block diagram showing a configuration of an interleaver according to the fourth embodiment.
  • FIG.47 Diagram showing the configuration of the input side switch.
  • FIG. 49 (A) is a diagram showing sub-block division of input data, and (B) is a diagram showing sub-block division of output data.
  • FIG. 50 is a diagram showing the row counter initial value, column counter initial value, and head data order for each sub-block.
  • FIG. 52 is a block diagram showing the configuration of the pruning determination unit
  • FIG. 54 is a block diagram showing a configuration of an interleaver according to the fifth embodiment.
  • FIG. 55 is a diagram showing the configuration of the input side switch.
  • FIG. 56 (A) is a diagram showing sub-block division of input data, and (B) is a diagram showing sub-block division of output data.
  • FIG. 60 is a diagram showing the input / output order, row counter initial value, column counter initial value, and head data order for each sub-block.
  • FIG.62 Diagram showing the configuration of the column number switch.
  • FIG. 63 is a block diagram showing a configuration of an interleaver according to the sixth embodiment.
  • FIG. 64 is a diagram showing sub-block division of output data
  • FIG. 67 A diagram showing the configuration of the column number switch.
  • FIG. 68 is a diagram showing the configuration of the input side switch
  • FIG. 69 is a diagram showing another configuration example of the row counter, the column counter, and the column number switch.
  • FIG. 70 is a diagram for explaining a configuration example of a transfer circuit.
  • FIG. 71 is a block diagram showing a configuration example of a parallel turbo decoder corresponding to the interleaver of the fourth embodiment.
  • FIG. 72 is a block diagram showing a configuration example of a parallel turbo decoder corresponding to the interleaver of the sixth embodiment.
  • FIG. 21 shows the configuration of the interleaver according to Embodiment 1 of the present invention.
  • Interlino 100 enables PIL (prime interleaving) to be executed in parallel without causing memory access contention.
  • PIL primary interleaving
  • the interleaver 100 is roughly divided into an input side switch 101, a memory 102 having a plurality of banks (RAM0 to RAM4) capable of independent writing and reading, an output side switch 103, and a row counter 105. And a column address 106, a write address generation unit 104, a row number calculation unit 107, a column number calculation unit 108, an output sub-block size calculation unit 109, an output sub-block counter 110, and lookup tables LUT0 to LUT4.
  • the row number calculation unit 107 and the column number calculation unit 108 determine the number of rows R and the number of columns C based on the number of symbols K according to the 3GPP standard.
  • the input data data_in0 to data_in4 are divided into sub-blocks and input by the preceding processing block (for example, derate matching processing, SISO (Soft-In Soft-Out) decoding processing, etc.).
  • the input sub-block 0 (corresponding to data_inO) force and the input sub-block 3 are all equal in size. This is expressed as Ksin.
  • the input sub-block size Ksin In order to avoid contention when writing in the circuit, the input sub-block size Ksin must be greater than or equal to the number of columns C.
  • the input sub block size Ksin is given from the outside.
  • the interleaver 100 sets initial values of the column counter 106 and the row counter 105 of the write address generation unit 104 based on the given input sub-block size Ksin.
  • the initial value setting method will be explained together with the write operation.
  • Ksout C, C + 1, C + 2, and so on.
  • Ksout ceiling ((C-floor (Ro X Ms / R)) / Ms) XR + Ro
  • Ms indicates the number of sub-blocks.
  • the lookup table (LUT) setting unit 112 sets the five lookup tables LUT0 to LUT4 of the address table 111. Each of the 5 LUT0 to LUT4 corresponds to 5 sub-blocks. These LUT0 to LUT4 are set to output the bank number b and address (physical address in the memory bank) a when the counter value cnt_r is input as an address.
  • bank number b corresponds to the row number after reordering between rows in the interleaving procedure
  • address a corresponds to the column number.
  • the relationship between bank number b and address a and interleave address A (k2) is It becomes like this.
  • FIG. 1 An example of the created address table 111 (lookup tables LUT0 to LUT4) is shown in FIG.
  • the force with k2 and A (k2) written together The bank number b and address a are the only values actually stored in LUT0 to LUT4.
  • the input data “ ⁇ & _ 0 to € ⁇ & _ 4” are separated and written to another bank (RAM 0 to RAM 4).
  • the nth input symbol is written in the bank of floor (nZC).
  • the physical address at that time is n mod C (mod is a remainder operation).
  • the interleaver 100 of the present embodiment uses a row counter 105 and a column counter 106.
  • Each of the row counter 105 and the column counter 106 has a plurality of counters therein.
  • the initial values iO [k] and jO [b] of the counter are determined as follows using the input sub-block size Ks.
  • iO [k] floor (Ksin X k / C)
  • jO [iO [k]] (Ksin X k) mod C
  • the column counter j [k] is incremented by 1 for each cycle of the initial value force, and counts up to the number of columns C.
  • the column counter j [k] stops, but the corresponding row counter i [k] is incremented and the counter j [i [k]] is reset.
  • FIG. 23 shows the data arrangement in RAM0 to RAM4 after all data has been written.
  • the output sub-block counter 110 counts up from 0 to the output sub-block Ksout-1 and inputs the counter value cnt_r to LUT0 to LUT4 as an address.
  • the five outputs from LUT0 to LUT4 are respectively input to the row Z column number separation circuit 113 and separated into row number b and column number a.
  • Column numbers a0 to a4 are input to the address switch 114 and distributed to the memory banks (RAMO to RAM4) designated by the row numbers b0 to b4.
  • row numbers b0-b4 operate address switch 114 and column numbers a0-a4 are transferred to the appropriate RAM module.
  • condition (ii) can also be restated as follows. In other words, it can be said that “with respect to two or more symbols to be read simultaneously, the symbols to be read simultaneously are selected so that the position interval S is relatively prime to the number of rows R for any two”.
  • the interleaver 100 can execute interleaving processing in parallel without causing memory access contention even when pruning occurs (in the case of K and RC).
  • the requirements for the input sub-block size are the same as when pruning does not occur. However, if the number of banks Mr is equal to the number of subblocks Ms as in this example, the final subblock is always shorter than C due to the condition of Ksin ⁇ C (Ksin is a subblock size other than the final). Conversely, if the sub-blocks are divided so that all the sub-blocks have the same size, there will always be contention when writing.
  • the look-up table (LUT) setting unit 112 sets all LUT0 to LUT4 from the values of the data length K and the output sub-block size Ksout.
  • the address pattern is set including the address (invalid address) of the symbol to be pruned.
  • pruning can be realized by controlling the address switch 114 so that addresses are not sent to the RAM0 to RAM0.
  • the address switch 114 can be easily controlled by rewriting the value of the bank number b to a special value at the location corresponding to the invalid address. Also, set a value indicating invalidity in the empty part of the LUT.
  • Figure 28 shows the timing chart.
  • LUT0 to LUT4 outputs b0 to b3 It takes the values 3, 2, 1, 0, but b4 takes the value 6, which indicates an invalid address.
  • the address switch 114 sends valid addresses aO to 3 to RAMO to RAM3 and disables reading of RAM4, which is a power to send an arbitrary address (for example, 0) to RAM4. Then, the validity detection unit 115 notifies the outside (for example, the SISO decoder) that the output of the sub-block 4 is invalid through the signal valid [4: 0].
  • the interleaving process can be completed as indicated by data_out0 to 4 in FIG.
  • the size of each output sub-block is shown in FIG.
  • the output sub-block size is the same as Ksout except for the last block. If pruning occurs, it may be shorter than Ksoul :.
  • the basic principle that enables parallel interleaving without causing competition is shown.
  • (1) simplification of write processing, (2) simplification of read processing, (3) change of sub block size determination method, and (4) correspondence to fewer sub blocks are enabled.
  • a configuration and method are proposed.
  • FIG. 31 shows the configuration of the interleaver according to the present embodiment.
  • the interleaver 200 in FIG. 31 has a circuit configuration that enables the above (1) to (3).
  • Interleaver 200 has a simplified circuit configuration as compared to interleaver 100 of the first embodiment.
  • the interleaver 200 is roughly divided into a plurality of memory banks (RAM0 to: RAM4) capable of writing and reading independently, a write address composed of an output side switch 202, and a column force counter 204.
  • the bank number and address of the data to be read by each sub-block are obtained by LUT0 to LUT4, and the read is performed by using address switch 114 and sending the address to the corresponding bank. It was realized.
  • the address switch can be made unnecessary. Specifically, LUTO stores the address to be sent to RAMO, and LUT [b] stores the address to be sent to RAM [b].
  • This table is a sort of the in-line sorting pattern U [i] (j).
  • LUTO is stored in order from entry 0 as U [0] (0), U [0] (v), U [0] (2v) ⁇ ..., U [0] (tv mod Ksout) Has been.
  • v Ms XRZMr.
  • LUT [k] (t) U [k] ((tv + j 0 [k]) mod Ksout).
  • jO [k] floor (Ksout X k / v).
  • the capacity of the LUT can be reduced.
  • the LUT can be reduced from 13 bits to 8 bits per word.
  • bank number is separately required for the operation of the output side switch 202.
  • special bank numbers indicating invalid addresses must not be stored in LUT0 to LUT4! For this reason, it is necessary to determine validity using another method.
  • b [k] (t) T [(i + k XRo) mod R].
  • a circuit for generating a bank number (that is, the bank selection signal generation unit 220) can be configured.
  • a circuit invalidity determination unit 230
  • a circuit that checks whether access to RAM4 is valid and, if invalid, outputs the number of the subblock that becomes invalid is shown. Interleaved force pruning generally occurs in the second half of the bank. Therefore, an invalidity determination circuit should be prepared for each bank where pruning occurs. For example, in PIL, pruning can occur after line 17. Therefore, three invalidity determination circuits for determining each of the RAMIs 7, 18, and 19 are required.
  • the invalidity determination unit 230 includes a comparison unit 231, an encoder 232, and a magnitude comparator 233.
  • the five comparators 0 to 4 constituting the comparator 2 31 compare the output of the T-LUT with the bank number to be examined (here, 4). This is equivalent to checking which sub-block the output of RAM4 is output to.
  • Each comparator 0 to 4 outputs 1 when the output of the T-LUT matches the bank number to be checked. When this output 1 is input to the encoder 232, the encoder 232 converts it to a bank number.
  • the magnitude comparator 233 compares r_addr4 with K mod C. If r_addr4 is larger or matches, the output of RAM4 is invalid. Therefore, in such a case, the magnitude comparator 233 operates the selector and connects the output of the encoder to the signal invalidLblk to indicate that the corresponding sub-block is invalid. If the r_addr4 output is valid as a result of the size comparison, no bank number is output to invalid_blk. For example, output a value such as 1.
  • the invalidity determination as described above is very important.
  • a conventional parallel interleaver in general, an invalid address is removed and an address table is created.
  • an invalidity determination circuit is provided.
  • the parallel This is because invalidity determination is performed by the interleaver. This makes it possible to specify even invalid sub-blocks in the parallel interleaver.
  • Ksout ceiling ((C—floor (Ro X M s / R)) / Ms) X R + Ro.
  • FIG. 34 shows the write timing
  • FIG. 35 shows the read timing.
  • r_addr [k] can be obtained directly from the table.
  • the shaded part is the part corresponding to the invalid address (pull-jung). For this reason, some data_out does not output valid data. At this time, it can be divided that the signal invalid_blk indicates an invalid sub-block.
  • the row offset value indicates the shift in the T LUT read start position of the corresponding sub-block, so if the T-LUT contents are shifted in advance according to the row offset, a circuit for adding the offset is unnecessary. Become.
  • the bank selection signal changes with R as a period, it can also be generated by a circuit in which R registers are connected in a ring shape. Since the connection between the registers changes depending on Ro, this configuration should be used when Ro is fixed.
  • the interleaver described in Embodiment 1 and this embodiment has the highest circuit utilization efficiency when the number of subblocks Ms and the number of banks Mr are equal. However, when using an interleaver with these configurations in a turbo decoder, it may be necessary to reduce M s for the following reasons. [0121] (i) SISO (Soft-Input Soft-Output) decoder, that is, when the arithmetic circuit has only parallel processing capability smaller than Ms
  • FIG. 36 shows the contents of LUT0 to LUT4 in the read address generator of interleaver 300 in Figure 36.
  • the interreno 300 in FIG. 36 has a configuration in which the write address generation unit 301 has a row counter 302 and a column counter 303. Each block has three counters inside.
  • the second difference is that the bank selection signal generator 310 simply reduces the lookup table 3 l l (T-LUT) to 3 according to the number of sub-blocks.
  • Interleaver 300 has a disadvantage that the LUT capacity and the number of bits increase because the invalid portion of the LUT is filled with a value of 8. If this is a problem, you can do one of the following: First, use the configuration of FIG. Second, instead of inserting invalid addresses into the LUT, the valid addresses are padded in front of the LUT. However, the counter value cnt_r cannot be used directly as the LUT read address, and the LUT read control is somewhat complicated.
  • the parallel interleaver described in the first and second embodiments is particularly effective when applied to a turbo decoder.
  • the configuration when the parallel interleaver of Embodiments 1 and 2 is incorporated in a turbo decoder will be described.
  • FIG. 40 shows an outline of a currently known turbo decoder. As shown in the part surrounded by a broken line, information called external values (or external information, prior information, etc.) is passed between two SIS O decoders (Soft-In Soft-Out decoders) and repeated processing is performed. Is a big feature. For details, refer to the document "Berrou, C; Glavieux, A .; Thitimajshima, P .;” Near shannon limit error-correcting coding and decoding: Turbo-codes ", IEEE International Conference on Communications, 1993, Pages: 1064-1070 vol. .2 ”etc.
  • turbo decoders In recent years, high-speed processing is also required for turbo decoders in order to realize high-speed communication.
  • multiple SISO decoders are operated in parallel, and the radix-4 algorithm (for example, “Charles Thomas, Mark A. Bickerstaff, Linda M. Davis, Thomas Prokop, Ben Widaup, uongyu”). Zhou, Da vid Garrett, and hns Nicol; 'Integrated and described in ireuits for Channel Coding in 3G Cellular Mobile Wireless Systems ", IEEE Communications Magazine August 2003, pp.150-159 etc.) .
  • the interleaver must also operate at high speed.
  • a parallel interleaver corresponding to the SISO decoder acceleration method is required.
  • the SISO decoder When the SISO decoder is operated in parallel, the data (external value) is divided into sub-blocks. It is.
  • a parallel turbo decoder circuit using sub-block division is shown in FIG. In this figure, circuits related to channel value processing and hard decision are omitted to show the flow of external values.
  • the parallel turbo decoder shown in FIG. 41 roughly includes a parallel interleaver 510, a parallel interleaver 520, a SISO decoder 530, a delay circuit 540, and a SISO decoder 550.
  • the parallel interleaver 510 includes a memory 511, an address generation unit 512, an interleave address generation unit 513, a switch 514, a bank selection signal generation unit 515, and an invalidity determination unit 516.
  • the parallel Dinterleaver 520 includes a switch 521, a memory 522, and a loess generator 523.
  • SISO decoders 00 to 04 and 10 to 14 are used.
  • SISO decoders 00 to 04 and 10 to 14 can be shared by time division. It can also be realized with only one SISO decoder.
  • a serial parallel type interleaver can be used for SISO decoders using the radix-4 algorithm.
  • Figure 42 shows a turbo decoder circuit incorporating these.
  • the turbo decoder shown in FIG. 42 is roughly divided into a parallel interleaver 610, a parallel dinleaver 620, a Radix-4 SISO decoder 630, a delay circuit 640, and a Rad ix-4 SISO decoder 650.
  • the parallel interleaver 610 includes a switch 611, a bank selection signal generation unit 612, a memory 613, an address generation unit 614, an interleave address generation unit 615, a switch 616, a bank selection signal generation unit 617, and an invalid determination. Part 618.
  • a high-speed interleaver circuit can be realized with a simple configuration without causing an increase in circuit scale by adding an arbiter circuit. Can be realized.
  • Embodiments 1 and 2 described above the case where the present invention is used for prime interleaving has been described.
  • the present invention is not limited to this, and priority is given to the two-dimensional array type data structure in the row direction. This method is widely applicable when writing data, rearranging within each row, rearranging rows, and implementing an interleave algorithm that reads data with priority in the column direction.
  • FIG. 43 shows the configuration of the interleaver according to the present embodiment.
  • the interleaver 700 includes an input-side switch 701, a memory 702 capable of independent writing and reading (RAM0 to RAM4), an output-side switch 703, an input-side counter 704, and a conf iguration selection unit 705.
  • a write address generator comprising: a row counter 706; a column counter 707; a column number switch 708; a calorie calculator 709; an address table 710 comprising lookup tables LUT0 to LUT 4; a delay unit 711; It has a Karo arithmetic unit 712 and a pruning determination unit (corresponding to the validity detection unit 115 in FIG. 1) 713.
  • a circuit for interleaving 20 rows with parallel interleaving using 5 RAMs with 5 parallel inputs and outputs (5 sub-block division) is shown.
  • data with a block size of 203 will be described as an example.
  • the input sub-block size should be a multiple of C. Here it is 4 times C, or 44. The reason is that the number of rows is 20 and the degree of parallelism (number of sub-blocks) is 5, so 4 per sub-block is used.
  • Output sub-block size Ksout is determined to satisfy the following two conditions simultaneously.
  • Ksout is set to 44.
  • the input sub-block is a multiple of C. Therefore, in the first C cycle of the write operation, sub-block 0 writes data in the 0th row and sub-block 1 writes data in the 4th row to the memory. Then, in the next C cycle, sub-block 0 writes data in the first row, sub-block 1 writes data in the fifth row, and so on. From the above, when combinations of data written simultaneously are represented by row numbers, there are four ways shown in (0) to (3) in FIG.
  • Input terminal (data_in0 ⁇ 4): One terminal corresponds to one sub-block.
  • Input-side switch 701 Connect the input terminal to the appropriate RAM bank in memory 702.
  • the switch realizes the four types of connections shown in Figures 47 (A) to (B).
  • the configuration selection unit 705 determines which connection to switch to at each time point.
  • Input side counter 704 Generates an address for writing data.
  • the configuration selection unit 705 operates based on the output of this counter.
  • RAM0 to 4 Input data is written. Divided into 5 banks!
  • Row counter 706 Interleaving of data to be read by sub-blocks 0 to 4, respectively Keep line number after update.
  • Each of sub-blocks 0 to 4 retains and updates the column number after interleaving of data to be read.
  • Column number switch 708 Transfers the value of column counter 707 to the appropriate LUT. In addition to the two types shown in Figure 48 (A) and (B), a total of 20 types of connection are realized. At the same time, the upper address value to be added to each counter value is calculated.
  • Address table (LUT0 to 4) 710 Address table.
  • the present embodiment holds an intra-row permutation pattern. Like the data RAM, it is divided into five banks.
  • Pruning judgment unit 713 Checks whether invalid address is not included in the output of address table 710. If it is included, check which sub-block it corresponds to and output the result to the port valid.
  • Output side switch 703 Connect the data output of each bank of memory 702 to the appropriate output terminal.
  • Output terminal (data_out0 ⁇ 4): One terminal corresponds to one sub-block.
  • a block size (data length) 203 symbols will be described as an example.
  • Interleaver 700 divides input data into 5 sub-blocks. This is shown in Figure 49 (A). Note that the latter half of the sub-block may be shorter than Ksin. In the example of Fig. 49 (A), the last sub-block (sub-block 4) has only 27 symbols shorter than the others.
  • the input data is arranged in the memory 702 as shown in FIG.
  • each drawing was supplemented with an expression based on line number I.
  • the circuit of FIG. 21 operates as follows.
  • Input side counter 704 counts from 0 to 4C-1 one by one. This count value is input to each RAM as a write address. In accordance with this count value, the input side switch 701 is also controlled. That is, the input side switch 701 has a count value between 0 and C-1.
  • Fig. 47 (A) shows a connection state as shown in Fig. 47 (B) during the period when the count value is between C and 2C-1.
  • the data rank of the top data of output sub-block 0 is 0. Therefore, the initial value of row counter 0 is set to 0, and the value of column counter 0 is set to 0.
  • the data rank of the top data of output sub-block 1 is 44. Therefore, the value of row counter 1 is set to 4, and the value of ⁇ IJ counter 1 is set to 2.
  • row counter 1 and column counter 1 are calculated from the relationship expressed in equation (4) and the condition that I is in the range of 0-19. Similarly, the initial counter value is calculated for sub-blocks 2-4. These values and data ranking are shown in FIG.
  • the counter value is not determined based on the data order including dummy data, it cannot be guaranteed that no memory access conflict will occur.
  • column counter 707 The value of column counter 707 is transferred to the appropriate LUT by column number switch 708.
  • the column number switch 708 plays three roles.
  • the column number switch 708 In the first cycle (initial setting), the values of row counter 3 and column counter 3 are 12 and 6, respectively.
  • the row number before the inter-row permutation corresponding to this row number is 13. Since the data belonging to the 13th row before sorting is in bank 1 (RAMI), the column number switch 708 is connected as shown in FIG.
  • the output side switch 703 is connected in the reverse direction to the column number switch 708. That is, the output of RAM 1 is connected to sub-block 3 (data_out3).
  • d [147] is output as data of sub-block 3 in the first cycle of the read operation.
  • Fig. 49 (B) B shows the state of all outputs.
  • invalid data may be output in some sub-blocks.
  • the pruning determination unit 713 checks whether the data of each sub-block is valid. If invalid, a signal indicating invalidity is output.
  • FIG. 52 shows a circuit configuration of the pruning determination unit 713.
  • the pruning determination unit 713 includes a threshold setting unit 713-1, a threshold determination unit 713-2, and a valid signal switch 713-3.
  • the threshold judgment unit 713-2 specifies the address of the area where invalid data of each RAM is stored. For example, if the block size is 203, the 19th line is all invalid, RAM2 addresses 33 to 43 are invalid. In line 18, only the first five symbols are valid, so addresses 27 to 32 of RAM3 are invalid.
  • Figure 53 shows an example of threshold values. thl is the address where invalid data begins, and thh is the address where invalid data ends. Note that pruning does not occur in RAM4!
  • the threshold judgment unit 713-2 judges whether the address output from the address table 710 is an invalid area, and returns true when it is valid and false when it is invalid. This tells you if the output of each RAM is valid.
  • the valid signal switch 713-3 operates in the same manner as the output-side switch 703. As a result, a 5-bit signal valid [4: 0] indicating which sub-block is valid is output.
  • FIG. 54 shows the configuration of the interleaver according to the present embodiment.
  • the interleaver 800 includes an input side switch 801, a memory 802 capable of independent writing and reading (RAMO to RAM9), an output side switch 703, an ascending order counter 804-1 and a descending order counter 804— 2, write address generation ⁇ ⁇ consisting of switch 805 and configuration selection unit 806, row counter 807, ⁇ IJ counter 808, ⁇ IJ number switch 809, calorie calculator 810, look-up table 1 ⁇ 1710 ⁇ It has an address table 811 composed of 1 ⁇ 719, a delay unit 812, an adder 813, and a pruning determination unit 814.
  • a parallel interleaver that does not cause contention can be realized.
  • An example of the block size 203 will be described.
  • the parallelism is set to 10.
  • the input sub-block size was set to 22, and the output sub-block size was set to 22.
  • Figure 56 shows how sub-blocks are divided.
  • equation (1) may be used if either of the following is satisfied.
  • the output sub-block size is an even number.
  • FIG. 809 An example of the bank assignment method is shown in FIG. In order to simplify the addition of the upper address in column number switch 809, the boundaries in the bank were divided into 256 as shown in FIG.
  • interleaver 800 Refer to the present embodiment, the operation of interleaver 800 according to the present embodiment will be described focusing on differences from interleaver 700 (FIG. 43) according to the fourth embodiment.
  • FIG. 55 shows the configuration of the input side switch 801.
  • a counter with an odd sub-block number is a descending order counter.
  • the power hunter 807 decreases by 1 every cycle. When it reaches 0, it is reset to 19 in the next cycle and the value of column counter 808 is decremented.
  • the value of the column counter 808 is set to the appropriate L by the column number switch 809. Transferred to UT.
  • the column number switch 809 plays a role of intra-row permutation (rearrangement between rows), association of row numbers and bank numbers, and association of row numbers and positions in banks (generation of higher addresses).
  • Figure 61 shows these relationships.
  • Figure 62 shows the first two of the 20 configurations for column number switch 708.
  • FIG. 63 shows the configuration of the interleaver according to the present embodiment.
  • the interleaver 900 includes an input-side switch 901, a memory 902 having a plurality of banks (RAM0 to RAM9) capable of independent writing and reading, an output-side switch 903, an ascending counter 904, and a configuration selection unit 905.
  • a write address generator a row counter 906, a column counter 907, a column number switch 908, a calorie calculator 909, an address table 910 that also includes lookup tables LUT0 to LUT9, a delay unit 911, and an adder 912.
  • And a pruning determination unit 913 includes an input-side switch 901, a memory 902 having a plurality of banks (RAM0 to RAM9) capable of independent writing and reading, an output-side switch 903, an ascending counter 904, and a configuration selection unit 905.
  • a write address generator a row counter 906, a column counter 907, a column number switch 908, a calorie calculator 909, an address table 910 that also includes look
  • This embodiment presents a hybrid parallel interleaver that combines a sub-block division method and a serial / parallel conversion type.
  • the degree of parallelism is 5 X 2.
  • reading can be performed in parallel without contention.
  • the formula (1) can be used.
  • the state of sub-block division is as shown in FIG. Two symbols are output for one sub-block and one cycle.
  • Figure 65 shows the combinations of rows that are accessed simultaneously. Note that there are 5 parallel writes and 10 parallel reads.
  • bank allocation is determined as shown in Figure 66.
  • interleaver 900 Next, the operation of interleaver 900 according to the present embodiment will be described focusing on the differences from interleaver 700 (FIG. 43) according to the fourth embodiment.
  • the input-side switch 901 is controlled by the configuration selection unit 905 and has a configuration as shown in FIG.
  • the initial values of the row counter 906 and the column counter 907 are the same as in the fourth embodiment because the sub-block sizes are equal. That is, as shown in FIG.
  • the row counter 906 is incremented by 2 every cycle.
  • the resetting is performed when 19 is exceeded (that is, 20 is subtracted) and the column counter 906 is incremented by 1 at the time of resetting.
  • Column number switch 908 connects to send one column counter value to two LUTs, as shown in Figure 67.
  • the pruning determination in the pruning determination unit 913 is performed not for each sub-block but for each data.
  • the first data of sub-block 0 is one of two Only is invalid.
  • the row counter, column counter, and column number switch can be realized with a circuit configuration different from that of the above-described embodiment. However, supplying a column number to the LUT and generating a signal for operating the output switch!
  • FIG. 69 shows a norelation to the circuit configuration of the fifth embodiment shown in FIG.
  • FIG. 69 shows only parts corresponding to the row counter 807, column counter 808, column number switch 809, and address generation unit 811 of the interleaver 800 in FIG. The part is omitted.
  • Interleaver 1000 replaces row counter 807, column counter 808, and column number switch 809 with transfer circuit 1001, control unit 1002, register unit 1003, and higher address generation unit 10
  • the column counter 808 has a fixed correspondence with the sub-block.
  • the transfer circuit 1001 rearranges the register contents. The value is updated for some registers.
  • FIG. 70 shows a configuration example of the transfer circuit 1001.
  • the transfer circuit 1001 has four states, and changes state as shown in FIG. 70 (B).
  • the operation of the transfer circuit 1001 can be understood. That is, in FIG. 62, the value input to LUT 9 is the value of column counter 0. At the next time, as shown in FIG. 62 (B), the switch connection is changed so that the value of column counter 0 is transferred to LUT5.
  • the register 9 holds a value corresponding to the column counter 0 as a value to be input to the LUT 9. This value is used by the LUT5 at the next time, so the transfer circuit is connected to transfer to register 5.
  • state 3 (triangle mark) 1 is added to the value input to register 9 and 1 is subtracted from the value input to register 5. This corresponds to the operation of the column counter 707 incrementing / decrementing in FIG.
  • the control unit 1002 in FIG. 69 controls the four states of the transfer circuit 1001. At the same time, the upper address generation unit 1004 and the output side switch are controlled.
  • FIG. 71 shows a configuration example of a parallel turbo decoder corresponding to interleaver 700 (FIG. 43) of the fourth embodiment.
  • the parallel turbo decoder of Fig. 71 is roughly divided into a parallel interleaver 1100, a parallel deintersino 1200, a SISO decoder 1300, a delay circuit 1400, and a SISO decoder 1500.
  • the parallel interleaver 1100 includes a memory 1101, a natural order address generation unit 1102, a switch 1103, an interleave order address generation unit 1104, and a pruning determination unit 1103.
  • the average IJ Dinterlino 1200 includes a switch 1201, a memory 1202, and a natural order address generation unit 1203.
  • the characteristic operation of the parallel turbo decoder in Fig. 71 is as follows. (If an invalid address is detected by the 0-pull / one-jug judgment unit 1105, only the corresponding SISO decoder is waited (paused). (Ii) The interleave order address of the parallel interleaver 1100 is a delay circuit. If the timing is adjusted with 1400, it can be used as it is with the parallel dinleaver 120 0, so only one interleave order address generator 1104 is required, and at the same time, the switch control signal is also passed.
  • the FIFO (first in first out) buffer is used as the delay circuit 1400.
  • LIFO Last In First Out
  • the parallel turbo decoder purposely generates a weight due to pruning.
  • the table is created leaving invalid addresses. As a result, it is possible to maintain a state in which no competition occurs.
  • FIG. 72 shows a configuration example of a turbo decoder corresponding to hybrid interleaver 900 of the sixth embodiment.
  • the turbo decoder in FIG. 72 is roughly divided into a parallel interleaver 2100, a parallel dintarino 2200, a Radix—4 SISO decoder 2300, a delay circuit 2400, and a Radix—
  • the parallel interleaver 2100 includes a switch 2101, a memory 2102, a natural order address generation unit 2103, a switch 2104, an interleave order address generation unit 2105, and a pulling determination unit 2106.
  • the memory bank is further divided into an even address and an odd address so that 10 symbols / cycle can be written even in the natural order (when writing a parallel interleaver).
  • RAM with an e at the end stores even address data
  • RAM with an odd address stores odd address data.
  • RAMlOe In natural order, when writing to RAMlOe, data is written to RAMlOo at the same time. In Interleave order, either RAMlOe or RAMlOo Read only for.
  • one aspect of the parallel interleaver according to the present invention has a plurality of memories as described with reference to FIGS. 21, 31, 36, 43, 54, and 63, for example.
  • a memory that also has banking power and reading the written data in a different order from writing
  • the data is written with priority in the row direction to the data structure of the two-dimensional array type, and each row is
  • a parallel interleaver that implements an interleaving algorithm that performs in-row sorting based on a prescribed in-row sorting pattern, rearranges rows, and reads data with priority in the column direction.
  • a memory associated with one or more row numbers of the two-dimensional array, and a plurality of lines defined in different rows in the data structure of the two-dimensional array, respectively.
  • a pattern generation unit that generates an internal rearrangement pattern; and a read control unit address generation unit that includes the pattern generation unit and generates a plurality of read addresses based on the plurality of in-line rearrangement patterns.
  • a plurality of data is simultaneously read from the memory.
  • One aspect of the parallel interleaver according to the present invention is that the read control means performs data ranking after interleaving for any two or more data read simultaneously between the memory banks.
  • a configuration is adopted in which the plurality of memory bank force data are read so that the remainder obtained by dividing the difference by the number of rows is 1 or more.
  • One aspect of the parallel interleaver of the present invention is that, when the data size of the input data is smaller than the two-dimensional array, the interleaving algorithm performs an interleaving process by adding dummy data to the input data. Then, an interleaving algorithm that removes dummy data is used, and further includes an invalid address determination unit that determines 0 to a plurality of invalid addresses corresponding to the dummy data among the plurality of addresses.
  • the read control means is a dummy even if two or more pieces of data read between the memory banks are used.
  • a configuration is adopted in which data is read from the plurality of memories so that a remainder obtained by dividing the difference in rank before data removal by the number of rows becomes 1 or more.
  • the input data of each row in the data structure of the two-dimensional array is written in the memory bank corresponding to the row number of the data in the same row
  • a write control means for generating a write address for writing to a predetermined memory bank and the write control means has a one-to-one correspondence between each row in the data structure of the two-dimensional array and the write destination bank. It takes a configuration that generates a write address.
  • the degree of parallelism can be made equal to the number of memory banks while avoiding access competition to the memory banks, so that high-speed interleaving can be performed by making maximum use of the memory banks. It becomes like this.
  • the input data of each row in the data structure of the two-dimensional array is written in the memory bank corresponding to the row number of the data of the same row,
  • a write control means for generating a write address for writing to a predetermined memory bank, uniquely determining the correspondence of the write-destination memory bank to the row in the data structure of the two-dimensional array, and determining the rank after interleaving Difference and line A configuration is adopted in which a write address that associates a plurality of rows with one memory bank is generated so as not to exceed the greatest common divisor with the number.
  • the write control means includes a row counter that generates the same number of first row number sets as the data to be read simultaneously, and the same number as the data to be read simultaneously.
  • a column counter that generates a first set of column numbers, and determines a write destination bank from the first set of row numbers, calculates a write address from the first set of column numbers
  • the read control means includes an interleave address generating means for generating a plurality of interleave addresses for a plurality of data ranks such that a remainder obtained by dividing the difference by the number of rows is 1 or more, and the interleave address includes Matrix number determining means for uniquely calculating the second set of row numbers and the second set of column numbers, and the second set of column numbers as a read address, It adopts a configuration comprising address transfer means for determining a read source bank by a set of row numbers of 2 and sending the read address to the corresponding read source bank.
  • the read control unit obtains a remainder obtained by dividing the difference in rank after the interleaving by the number of rows as a row offset, and offsets the row offset by the row offset.
  • the line number set corresponding to the line number for the memory bank is converted based on the inter-line rearrangement pattern, and the converted line number set is sent to the output selection means provided on the output side of the memory as a bank selection signal.
  • the bank selection signal generating means to be transmitted, the column number set, and the converted row number set obtained by the bank selection signal generating means, an in-line rearrangement pattern is generated and the pattern is read out.
  • a read address generating means for sending it to the corresponding memory bank of the memory as a write address.
  • the read address generation means and the bank selection signal generation means can perform interleaving on any two or more data simultaneously read between memory banks.
  • the remainder after dividing the difference in the data ranking by the number of rows is 1 or more In this way, reading data makes it possible to implement simple processing.
  • the parallel interleaver writes data for writing input data of each row in the data structure of the two-dimensional array to different memory banks in a predetermined sub-block unit.
  • a sub-block division type interleaver having a write control means for generating an address, wherein the read control means obtains a remainder obtained by dividing a difference in rank after the interleaving by a number of rows as a row offset, and the row offset.
  • the row number set having the row number power for the memory bank, which is offset by one by one, is converted based on the inter-row sorting pattern, and the converted row number set is banked in the output selection means provided on the output side of the memory.
  • Bank selection signal generating means to be transmitted as a selection signal, a column number set, and the bank selection signal generating means Is used to generate an in-line rearrangement pattern in which the difference in rank after interleaving becomes the sub-block size using the converted line number set obtained by the above-described method, and using the pattern as a read address, the corresponding memory bank of the memory And a read address generating means for sending to the terminal.
  • any two or more of the two or more data read simultaneously between the memory banks by the read address generation unit and the bank selection signal generation unit With respect to the above, it is possible to implement processing such as reading data so that the remainder of dividing the data rank after interleaving by the number of rows is 1 or more.
  • One aspect of the parallel interleaver of the present invention is that the write control means sets the sub-block size of the input data to be written to each memory bank to be equal to or larger than the number of columns in the data structure of the two-dimensional array. Generate a configuration.
  • the process of writing the input data of each row in the data structure of the two-dimensional array and writing the data of the same row to the memory bank corresponding to the row number is performed. It can be done without causing access contention.
  • One aspect of the parallel interleaver of the present invention is the write address, wherein the write control means makes a sub-block size of input data to be written to each memory bank equal to the number of columns of the data structure of the two-dimensional array. Generate a configuration. [0209] According to this configuration, both writing and reading can be performed in the same sub-block unit.
  • One aspect of the parallel dinleaver of the present invention is the reverse of the interleaving algorithm by switching the write address and the read address of any of the parallel interleavers described above and further switching the input selection means and the output selection means. Use a configuration that realizes processing.
  • turbo decoder of the present invention employs a configuration including any one of the parallel interleavers described above.
  • One aspect of the interleaving method of the present invention is to write input data into a memory having a plurality of memory bank powers, and to read out the written data in a different order from the writing, so that a two-dimensional array type data structure is obtained.
  • Parallel interleaving method that implements an interleaving algorithm that writes data with priority in the row direction, performs in-row sorting based on the in-row sorting pattern defined for each row, sorts the rows, and reads data with priority in the column direction
  • Others associated with the plurality of line numbers, Ru memory Nitsu includes an address generating step of generating a plurality of addresses of the hand, and to read out a plurality of data simultaneously from said memory.
  • the parallel interleaver, parallel dinleaver, and interleaving method of the present invention are suitable for application to, for example, a turbo decoder of a wireless communication device.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)

Abstract

 比較的簡易な構成で、インターリーブパターンの変更にも柔軟に対応でき、かつメモリアクセス競合も回避し得る並列インターリーバを提供する。複数のメモリバンク(RAM0~RAM4)からなり、各バンクが2次元配列の1または複数の行番号と対応付けられているメモリ(702)と、それぞれ2次元配列のデータ構造における別の行において規定される複数の行内並び替えパターンを生成するパターン生成部(710)と、パターン生成部(710)を内部に持ち、複数の行内並び替えパターンに基づき複数のアドレスを生成する読み出し制御部(706~712)と、を設け、メモリ(702)から複数のデータを同時に読み出すようにする。

Description

明 細 書
並列インターリーノ 、並列ディンターリーバ及びインターリーブ方法 技術分野
[0001] 本発明は、特に、 2次元配列型のデータ構造に対して行方向優先でデータを書き 込み、各行ごとに行内並び替えを行い、行同士を並び替え、列方向優先でデータを 読み出すインターリーブアルゴリズムを実現する並列インターリーバ、並列ディンター リーバ及びインターリーブ方法に関する。
背景技術
[0002] (インターリーブのアルゴリズム)
先ず、従来のインターリーバのアルゴリズムについて説明する。インターリーブ処理 とは、長さ Kのデータ列 {d[0], d[l] , · ··, d[K— 1] }を並び替えて、データ列 {d' [0 ] , d' [l] , · ··, d' [K— 1] }を出力する処理である。個々のデータ d[i]は、単一のビッ トである場合や固定小数点数 ( 、わゆる軟判定値)である場合などさまざまであるから 、以後シンボルと呼ぶ。
[0003] 従来のインターリーブアルゴリズムのうち、 2次元配列型のデータ構造を用いるもの がある。その基本的なアルゴリズムは以下の通りである。なお、例として非特許文献 1 に記載されているものを紹介する。そのインターリーブ方式は、素体インターリーバ (P rime Interleaver;PIL)として知られているものである。以下、 PILの手順を説明する。 例として、データ長 K=45の場合について、図 1、図 2及び図 3を用いて説明する。
[0004] [手順 1]データ長 Κに応じて、配列の行数 Rおよび列数 Cを所定の式により決定す る。
[0005] [手順 2]R行 C列の配列に、行方向優先でシンボルを書き込む。このとき、データ長 Kが配列のサイズ RCに満たな 、場合、残りの領域にダミーシンボル (d)を書き込む。 この状態を、図 1に示した。
[0006] [手順 3]次に、配列の各行について、所定の規則に従い行内での並び替えを行う 。ここで、並び替え規則は各行ごとに異なる場合がある。各行の並び替え規則は、数 列 Ui (j)により表される。 Ui(j)は、第 i行第 j列に移動されるデータの行内の元の位置 を示す。例えば、例においては U2 (3) = 7であるが、これは第 2行第 3列に移動され るデータの元の位置は第 2行第 7列であることを示す。すなわち、 d[27]が行内並び 替えにより第 2行第 7列力 第 2行第 3列に移動される。この状態を、図 2に示した。
[0007] [手順 4]さらに、各行内の順序を保ったまま、所定の規則に従い行ごとを入れ替え る。この行間並び替えは、数列 T(i)で表される。すなわち、第 i行に移動される行の 元の位置は、第 T(i)行である。この状態を、図 3に示した。
[0008] [手順 5]最後に、配列内のデータを列方向優先に読み出す。このとき、ダミーデー タは読み飛ばす (プル一ユングという)。以上により、出力シンボル列は、 {d[40], d[ 30] , d[20] , d[10] , · ··, d[18] , d[4] , d[31] , · ··, d[16] , d[7] }となる。
[0009] 上記手順中における、 Rと Cの決定方法、行内並び替え規則 Ui(j)、行間並び替え 規則 T(i)については、非特許文献 1に規定されている。また非特許文献 1に示される 方法以外にも、多数の方法が提案されている。
[0010] 因みに、本発明で提案する並列インターリーバは、 Rと Cの決定方法、行内並び替 え規則 Ui (j)、行間並び替え規則 T(i)にかかわらず、上記手順により行われる全て のインターリーバに対して有効なものである。
[0011] (インターリーバの実装方法)
実際に LSIなどでインターリーバ回路を実現する場合には、上述したような 2次元配 列への書き込みや行内 ·行間並び替えを行うわけではない。一般的に知られている インターリーバ回路は、入力されたシンボル順でメモリに順序良く書き込んだ後、ラン ダム的に読み出すことで並び替えを実現する。このランダム的なメモリ読み出しを行う 際のアドレス計算方法に、行内'行間並び替えや列方向優先読み出しの規則を反映 させることにより、上述したようなインターリーブを実現する。
[0012] 図 4に、最も基本的なインターリーバ回路を示す。 1サイクルに 1シンボルずつ処理 するため、逐次型インターリーバと呼ばれるものである。逐次型インターリーバは、シ ンボル列を格納する RAMと、昇順アドレスを生成するカウンタ 1と、擬似ランダムアド レスを生成するアドレステーブルとカウンタ 2からなる。
[0013] インターリーブ処理を行うに先立ち、インターリーブパターンを定めた規格に従い、 アドレステーブルを設定する。その手順は、直感的には、図 3を列方向優先で読むこ とにより理解できる。
[0014] K=45の PILにおけるアドレステーブルを、図 6に示す。このテーブルは、例えば並 び替えの後、 1番目に出力されるべきデータは並び替え前の 41番目のデータである ことを示す (すなわち A (0) =40。インデックスが 0から始まっていることに注意)。さら に、 2番目に出力されるデータは並び替え前の 31番目のデータである。
[0015] 次に、実際のインターリーブ処理について説明する。インターリーブ処理は、書き込 みと読み出しの 2つのフェーズにより完了される。
[0016] 書き込みフェーズにおいては、カウンタ 1は 0から開始し 1ずつ増加するアドレスを 生成する。このアドレスを用いて入力シンボルを RAMに書き込むことにより、データ 列が入力された順序で RAMに格納される。図 5のタイミングチャートの時刻 0〜39は 書き込みフェーズである。
[0017] 全てのシンボルの書き込みが完了した後、読み出し動作を開始する。読み出しフエ ーズにおいては、先ずカウンタ 2が昇 j噴のカウント値を生成し、そのカウント値をァドレ スとしてアドレステーブルが参照される。そして、アドレステーブルから出力されたデ ータ(A(k2) )をアドレスとして、 RAMから 1シンボルを読み出す。このような動作をシ ンボル数繰り返すことにより、図 5の信号 r_dataが示すように、インターリーブされたデ 一タ列を得ることができる。
[0018] このように、アドレステーブルに擬似ランダムアドレスパターンを予め設定することに より、任意のパターンでインターリーブを行うことができる。なお、メモリによるアドレス テーブルを用いずに擬似ランダムアドレスパターンを生成することも可能である。 PIL のためのアドレス生成回路の例として、特許文献 1に記載されているものがある。
[0019] ところで、インターリーブされたデータ列を元の順序に戻す処理をディンターリーブ という。ディンターリーブは、図 5に示したような逐次型インターリーバを用いても実現 できる。すなわち、アドレステーブルにディンターリーブのパターンを設定すればよい
[0020] ディンターリーブを行うさらに簡単な方法は、逐次型インターリーバの書き込みアド レスと読み出しアドレスを入れ替えることである。例えば図 7に示すような構成とすれ ばよい。この方法により、新たなパターンを用意することなぐわずかな回路の追加 (w —addrと r_addrを入れ替えるスィッチ)のみでインターリーブ及びディンターリーブを行 う回路を実現できる。
[0021] (インターリーバの並列化)
図 4のインターリーバは、逐次型、すなわち 1サイクルに 1つのシンボルのみを書き 込み又は読み出しするものであった。従って、 Kシンボルのデータ列をインターリーブ するためには、初めのシンボルを入力してから最後のシンボルが出力されるまでに、
2K+ 1サイクルの遅延が発生する。また逐次インターリーバのスループット(単位時 間当たりの処理能力)は、約 0. 5シンボル Zサイクルと低力つた。
[0022] 高速かつ低遅延なインターリーブ処理を実現するためには、インターリーバ回路を 並列化することが有効である。ここでは、インターリーバ回路の並列化方法として、 3 つの方法を挙げる。
[0023] <サブブロック分割方式 >
インターリーバを並列化する一つの方法は、図 9に示すように入力データ列を部分 データ列(サブブロック)に分割することである。各サブブロックは、インターリーバ〖こ 並列に入力される。
[0024] たとえば、図 9では、 K=45で、サブブロック数 2の場合を示している。この例におい ては、初めのサイクルにお!/、てデータ d[0]と d[23]が並列インターリーバ 1に同時に 入力され、次のサイクルにおいて d[l]と d[24]が同時に入力される。また、読み出し フェーズにおいては、 d[40]と d[2]が同時に出力される。このようにして、図 8に示す 逐次インターリーバに比べ、 2倍のスループット及び半分の遅延時間でインターリー ブ処理を完了することができる。
[0025] 並列インターリーバ 1を用いて構成したターボデコーダを、図 13に示す。この並列タ ーボデコーダは、 SISO (Soft- In Soft- Out)デコーダを 2つ備えることにより、図 12に 示す逐次型のターボデコーダに比べ 2倍のスループットを実現することができる。この ような、サブブロック分割を利用した並列ターボデコーダにつ 、ては、例えば非特許 文献 2に記載されている。
[0026] <シリアル/パラレル変換方式 >
図 10に、別の並列インターリーバを示す。この方法は、シリアル パラレル変 ( 図中 SZP)により、連続したデータ (たとえば d [0]と d [ 1 ] )を並列インターリーバ 2に 同時に入力する。読み出しフェーズにおいては、同時に出力されるデータの組はパ ラレルーシリアル変換器(図中 PZS)により連続したデータ列に戻される。
[0027] 並列インターリーバ 2を用いて構成したターボデコーダは、図 14のようになる。この タイプの並列インターリーバにおいては、同時に入力されるデータはデータ列上で連 続したデータであるから、別の SISOデコーダで並列に処理することができない。従つ て、複数シンボルを同時に入力できる高速な SISOデコーダが必要となる。このような SISOデコーダとして、例えば非特許文献 3に記載されているような radix— 4と呼ば れる方式のものが知られて 、る。
[0028] <ハイブリッド方式 >
サブブロック分割方式とシリアル パラレル変換方式 (radix— 4)を併用することも 可能である。
[0029] radix— 4によるターボデコーダは 2並列のサブブロック分割方式に比べ、小さな回 路規模で同等のスループットが得られる。しかし、さらにスループットを高める(例えば radix— 8以上を採用)ことは、クリティカルパス及びターボ符号の拘束長の制約があ り困難である。
[0030] そこで、任意の並列度でサブブロック分割した後に、それぞれのサブブロックを radi X 4で処理する方法が考えられる。サブブロック数を 2として radix 4を適用するタ ーボデコーダ(図 15)に合わせて設計された、図 11に示す並列インターリーバ 3は、 並列度が 4 ( = 2 X 2)となる。
[0031] ところで、上述したインターリーバの並列化における課題は、複数のデータを同時 にメモリに書き込む (読み出す)必要があることである。以下に、従来知られている解決 策 (実現例)を列挙する。
[0032] (並列化の実現例 1)
最も単純な解決策は、マルチポート RAMを用いることである。マルチポート RAM は、同時に複数のアドレスを処理することができ、同時に複数のデータを書き込む( 読み出す)ことのできる RAMである。図 16に、デュアルポート RAM (同時に 2つのァ クセスが可能な RAM)を用いた並列インターリーバを示す。なお、図 16において、サ ブブロック分割型の場合には offset値をサブブロックサイズに、シリアル パラレル変 換型の場合には offset値を 1に設定すればよ!、。
[0033] (並列化の実現例 2)
別の解決策は、 RAMを複数のバンク (モジュール)に分割することである。別のバ ンクであれば独立にアクセスすることができるので、最大でメモリバンク数と同数のァ クセスを同時に行うことができる。
[0034] しかしながら、インターリーブパターンやサブブロックの分割方法によっては、ある 1 つのバンクに同時に 2つ以上のアクセスが発生してしまうことがある(以下これをメモリ アクセス競合と呼ぶ)。従って、メモリアクセス競合が発生した場合にはそのサイクル には 1つだけの書き込みを行い、他のデータはバッファに保存し次のサイクル以降に 改めて書き込みを行うような調停回路が必要となる。
[0035] メモリアクセス競合を調停回路により回避する方法について、例を用いて説明する。
シンボル数 K=45として、サブブロックを Κ0 = 23と Kl = 22のようにほぼ均等に分割 した場合のディンターリーブ処理にっ 、て考える。調停回路付きの並列ディンターリ ーバの構成例を、図 17に示す。
[0036] サブブロック 0として出力されるデータは RAM0に、サブブロック 1として出力される データは RAMIに書き込まれる必要がある。従って、ディンターリーブ後のインデッ クスカ^〜 22のデータは RAM0に、インデックスが 23〜44のデータは RAMIに書き 込まれる。
[0037] 書き込みフェーズの初めのサイクルにおいては、 2つのサブブロックの先頭のデー タである d[0]と d[23]が入力される。アドレステーブル 0より A (0) =40、アドレステー ブル 1より A(23) =0のようにアドレスが求まるから、データ d[0]を RAMIへ、データ d [23]を RAM0へ書き込めば良いことがわかる。従って、調停回路は信号 in_data0の 値を w_datalへ、 in_datalの値を w_data0へ入力するように接続する。またアドレステー ブル 1の出力を w_addr0へ、アドレステーブル 0の出力から 23を減じた値^ w_addrlへ 入力する。
[0038] 次のサイクルには、データ d[l]とデータ d[24]が入力される。 A(l) = 30、 A (24)
= 39であるから、いずれのデータも RAMIへ書き込む必要がある。そこで、データ d [1]を RAMIのアドレス 7へ書き込む一方、データ d[24]はバッファ(例えば FIFO) に保存し、次のサイクル以降に書き込む。
[0039] さらに次のサイクルには、データ d[2]とデータ d[25]が入力される。このサイクルに おいては、データ d[2]を RAM0のアドレス 20に書き込むと共に、バッファからデータ d[24]を取り出し RAMIのアドレス 16に書き込む。 RAMIへの書き込みは同時に 1 つしか行えないため、今度はデータ d[25]をバッファに保存する。
[0040] 以上のように、調停回路を用いることでマルチポートメモリを使うことなく並列インタ 一リーバ回路が実現可能となる。この方法はまた、 RAMの総容量を増やさなくてよい という利点がある。
[0041] し力しながら、インターリーブパターンのランダム性が高いほど、調停回路に必要な ノ ッファの容量が増大してしまう。
[0042] このような RAMを複数のバンク (モジュール)に分割した場合の別の構成例を、図 1
8に示す。
[0043] 図 18のインターリーノ (ディンターリーノ )では、 1つの出カサブブロックは 1つの R AMバンクと対応付けられる。例えば、出カサブブロック 0に属するデータは RAM0 に書き込まれる。例えば K=40のときのメモリへの書き込み方法は、図 19に示す通り である。このように書き込みを行った後、それぞれの RAMの内容をアドレス順に読み 出すことで、 4つのサブブロックを並列に出力することができる。
[0044] ところで、入力データはサブブロック分割されているため、書き込みも並列に行う必 要がある。たとえば、第 0サイクルにはデータ d[0] , d[10] , d[20] , d[30]を同時に 書き込む必要がある。このとき、 3つのデータ d[10] , d[20] , d[30]はいずれも RA Mlに書き込まなければならない。し力し、 RAMIはシングルポートメモリであるから、 いずれか 1つしか書き込むことができない。そこで、第 0サイクルにおいてはデータ d[ 10]のみを RAMIに書き込み、データ d[ 10]とデータ d [20]はバッファ(FIFO)に格 納しておき、次のサイクル以降に 1つずつ RAMIに書き込む。このような調停及びバ ッファリングを行う回路が、図中の FIFOZアービタ部である。
[0045] 図 18の構成のように、メモリをサブブロック数と同数のメモリバンク RAM0〜4に分 割することで並列インターリーバを実現することができる。このような構成は、例えば 特許文献 2に記載されて ヽる。
[0046] さらに、バンク割り当て (データの書き込み位置)を工夫してメモリアクセス競合を回 避するようにした例として、図 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)半…、である必要があ る。また、インターリーブパターンを πとしたとき、出力データ (1[π (i)], ά[π (i+Ks) ], ά[π (i + 2Ks)],…は同時に読み出される。従って、読み出し時にもアクセス競 合が発生しないためには、 Μ(π (ί))≠Μ(π (i+Ks))≠M(w (i+2Ks))≠ · · ·、 を満たす必要がある。このような関数 Mを見つけることにより、図 20のような回路によ つて並列インターリーブを実現することができる。
[0047] 非特許文献 4では、任意のインターリーブパターン πに対する関数 Μの設計方法 が示されている。
[0048] また図 20と同様の回路構成にて、インターリーブを行う技術が、特許文献 3に記載 されている。特許文献 3において、 Μ関数は簡単な関数 (たとえば、整数除算など)と なる。特許文献 3では、 Μ(π (i)), Μ(π (i+Ks)), Μ(π (i+2Ks)),…が固定的 な関係となるように M関数及びインターリーブパターン πを選ぶことが提案されている 。例えば、 Μ(π (i+Ks))—M(w (ί))=Μ(π (i+2Ks))—M(w (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), Rele ase5 4.2. 2.3節 Turbo code internal interleaver
非特許文献 2 : Giulietti, A.; Bougard, B.; Derudder, V.; Dupont, S.; Weijers, J.- W.; Van der Perre, L.; "A 80 Mb/s low-power scalable turbo codec core , Custom Inte grated Circuits Conference, 2002. Proceedings of the IEEE 2002, pp. 389—392 非特許文献 3 : Charles Thomas, Mark A. Bickerstaff, Linda M. Davis, Thomas Proko p, Ben Widdup, Gongyu Zhou, David Garrett, Chris Nicol; "Integrated Circuits for Channel Coding in 3G Cellular Mobile Wireless Systems", IEEE Communications M agazine August 2003, pp.150 - 159
特許文献 4 : Tarable, A.; Benedetto, S.; "Mapping interleaving laws to parallel tur bo decoder architectures", Communications Letters, IEEE, Volume: 8, Issue: 3, Ma rch 2004, Pages: 162 - 164
発明の開示
発明が解決しょうとする課題
[0049] し力しながら、マルチポート RAMは回路規模が大きぐ使用されることが少ない。 F PGA(Field Programmable Gate Array)においては、デュアルポート RAMを備えてい るものも多いため、 2並列のインターリーバを実現することは可能である力 さらに高 い並列度のインターリーバを実現することは困難である。
[0050] また特許文献 2に記載されているような方法では、調停の機能が複雑である欠点が ある。サブブロック数 (並列度)が増えることにより、調停の機能はさらに複雑となり、回 路規模の増大を招く。また FIFO長が長くなる欠点がある。長い FIFOを必要とするこ とにより、回路規模が増大し、遅延時間が長くなつてしまう。
[0051] さらに非特許文献 4に示された M関数の設計方法では、 M関数は単純な式で表す ことができないため、実装するにあたってはテーブル引きが必要となる。従って、比較 的大きなメモリを追加する必要があり、インターリーバの回路規模を増大させてしまう 。また、インターリーブパターンが変わるごとに M関数を変更する必要がある力 リア ルタイムで M関数を導くことは実際上困難と考えられる。従って、 3GPP規格の turbo coding internal interleaverのよつにテータ長が変わるごとにインターリーブノヽ ターンが変わる場合には対応することが困難である。
[0052] また特許文献 3では、ある与えられた πに対して上記の式を満たす Μを見つけるこ とは困難である。またその方法に 、ては上記特許文献 3では配慮されて 、な力つた。 特許文献 3に記載された技術はあくまで上記の式を満たす πの設計方法、および特 別な πに対して並列インターリーブを行う方法であるといえる。したがって、特許文献 3に記載された技術を適用しても 3GPP規格に示される internal interleaverをメモ リアクセス競合なしに並列化することは困難であるといった問題がある。
[0053] 本発明の目的は、比較的簡易な構成で、インターリーブパターンの変更にも柔軟に 対応でき、かつメモリアクセス競合も回避し得る並列インターリーノ 、並列ディンター リーバ及びインターリーブ方法を提供することである。
課題を解決するための手段
[0054] 本発明の並列インターリーバは、複数のメモリバンク力 なるメモリに入力データを 書き込み、書き込まれたデータを書き込みと異なる順序で読み出すことにより、 2次元 配列型のデータ構造に対して行方向優先でデータを書き込み、各行ごとに規定され る行内並び替えパターンに基づき行内並び替えを行い、行同士を並び替え、列方向 優先でデータを読み出すインターリーブアルゴリズムを実現する並列インターリーバ であって、複数のメモリバンク力 なり、各バンクが前記 2次元配列の 1または複数の 行番号と対応付けられているメモリと、それぞれ前記 2次元配列のデータ構造におけ る別の行において規定される複数の行内並び替えパターンを生成するパターン生成 手段と、前記パターン生成手段を内部に持ち、前記複数の行内並び替えパターンに 基づき複数の読み出しアドレスを生成する読み出し制御手段と、を具備し、前記メモ リから複数のデータを同時に読み出す構成を採る。
発明の効果
[0055] 本発明によれば、どのような行内および行間並び替えパターンを採用したとしても、 同一のメモリバンクに 2つ以上の読み出しアドレスが生成されることがなくなる。つまり 、どのようなインターリーブパターンを採用したとしても、メモリバンクへのメモリァクセ ス競合を回避できるようになる。この結果、比較的簡易な構成で、インターリーブバタ ーンの変更にも柔軟に対応でき、かつメモリアクセス競合も回避し得る並列インターリ ーノ 、並列ディンターリーバ及びインターリーブ方法を実現できる。
図面の簡単な説明
[図 1]プライムインターリーバの 2次元マトリックスへの書き込み状態を示す図
[図 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]プル一ユングが発生した場合の書き込みタイミングを示すタイミングチャート [図 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]入力側スィッチのコンフィギュレーションを示す図
[図 48]列番号スィッチのコンフィギュレーションを示す図
[図 49] (A)は入力データのサブブロック分割を示す図であり、 (B)は出力データのサ ブブロック分割の様子を示す図
[図 50]各サブブロックにつ 、ての行カウンタ初期値、列カウンタ初期値及び先頭デー タ順位を示す図
圆 51]列番号スィッチの機能の説明に供する図
[図 52]プルーニング(pruning)判定部の構成を示すブロック図
[図 53]閾値の例を示す図
[図 54]実施の形態 5のインターリーバの構成を示すブロック図
[図 55]入力側スィッチのコンフィギュレーションを示す図
[図 56] (A)は入力データのサブブロック分割を示す図であり、 (B)は出力データのサ ブブロック分割の様子を示す図
[図 57]書込時の組み合わせと、読出時の組み合わせを示す図
[図 58]バンク割り当ての説明に供する図
[図 59]バンク割り当ての説明に供する図
[図 60]各サブブロックについての入出力順序、行カウンタ初期値、列カウンタ初期値 及び先頭データ順位を示す図
圆 61]列番号スィッチの機能の説明に供する図
[図 62]列番号スィッチのコンフィギュレーションを示す図
[図 63]実施の形態 6のインターリーバの構成を示すブロック図
[図 64]出力データのサブブロック分割の様子を示す図
[図 65]書込時の組み合わせと、読出時の組み合わせを示す図
[図 66]バンク割り当ての説明に供する図
[図 67]列番号スィッチのコンフィギュレーションを示す図
[図 68]入力側スィッチのコンフィギュレーションを示す図
[図 69]行カウンタ、列カウンタ、列番号スィッチの他の構成例を示す図 [図 70]転送回路の構成例の説明に供する図
[図 71]実施の形態 4のインターリーバに対応する並列ターボデコーダの構成例を示 すブロック図
[図 72]実施の形態 6のインターリーバに対応する並列ターボデコーダの構成例を示 すブロック図 発明を実施するための最良の形態
[0057] 以下、本発明の実施の形態について図面を参照して詳細に説明する。
[0058] (実施の形態 1)
図 21に、本発明の実施の形態 1に係るインターリーバの構成を示す。インターリー ノ 100は、メモリアクセス競合を起こすことなく PIL (プライムインターリーブ)を並列に 実行可能とするものである。本実施の形態では、説明を簡単ィ匕するために、インター リーバの行数 R= 5のみに対応する回路を示し、基本構成について説明する。
[0059] インターリーバ 100は、サブブロック分割により 5並列でインターリーブを行う回路で ある。先ず、簡単のためプルーニングが発生しない (データ長 K=RC)場合について 説明する。
[0060] インターリーバ 100は、大きく分けて、入力側スィッチ 101と、独立に書き込み及び 読み出しが可能な複数のバンク (RAM0〜RAM4)力もなるメモリ 102と、出力側スィ ツチ 103と、行カウンタ 105及び列カウンタ 106からなる書き込みアドレス生成部 104 と、行数算出部 107と、列数算出部 108と、出カサブブロックサイズ算出部 109と、出 カサブブロックカウンタ 110と、ルックアップテーブル LUT0〜LUT4からなるアドレス テーブル 111と、ルックアップテーブル (LUT)設定部 112と、行 Z列番号分離回路 113と、アドレススィッチ 114と、有効検出部 115とを有する。
[0061] 行数算出部 107、列数算出部 108は 3GPP規格に従い、シンボル数 Kに基づき行 数 R及び列数 Cを決定する。
[0062] 入力データ data_in0〜data_in4は、前段の処理ブロック (例えばデレートマッチング 処理、 SISO(Soft-In Soft- Out)デコード処理など)により、サブブロックに分割されて 入力されるものとする。ここでは、入カサブブロック 0(data_inOに対応)力も入カサブブ ロック 3のサイズは全て等しいとする。これを Ksinと表記する。本発明のインターリーバ 回路で書き込み時に競合が起きないためには、入カサブブロックサイズ Ksinは列数 C以上である必要がある。
[0063] 入カサブブロックサイ Ksinは、外部より与えられる。インターリーバ 100は、与えら れた入カサブブロックサイ Ksinに基づき、書き込みアドレス生成部 104の列カウン タ 106及び行カウンタ 105の初期値を設定する。初期値の設定方法は、書き込み動 作とあわせて説明する。
[0064] 出カサブブロックサイズ算出部 109は、シンボル数 Kと行数 Rから出カサブブロック サイ Ksout,を決定する。図 21の基本回路のように、 RAM数 Mrと行数 Rと出力サ ブブロック数 Moutが等し!/、場合には、出カサブブロックサイ Ksoutは行数 Rと互!ヽ に素(最大公約数が 1)となるように定める。もちろん、出カサブブロックサイ Ksout は、 Msをサブブロック数とすると、 Ksout X Ms≥RCである必要がある(ここで、 K=R Co右辺を Kと書かない理由は、プルーニングありの場合にも対応するためである)。
[0065] 出カサブブロックサイ Ksoutを定めるひとつの方法は、 Ksout=C, C+ l, C + 2, のように順に Rと互 、に素である値を探すことである。
[0066] 別の方法は、次式で定めることである。
[0067] Ksout = ceiling ( (C - floor (Ro X Ms/R) ) /Ms) XR+Ro
(1)
ただし、 ceiling (): 無限大方向への丸め(切り上げ処理)
floor (): ゼロ方向への丸め(切り捨て)処理
Ro : Rと互いに素な定数 (例えば 1)
Ms : サブブロック数を示す。
[0068] 出カサブブロックサイズ Ksout'が決定した後、ルックアップテーブル (LUT)設定部 112はアドレステーブル 111の 5つのルックアップテーブル LUT0〜LUT4の設定を 行う。 5つの LUT0〜LUT4はそれぞれ 5つのサブブロックに対応する。この LUT0 〜LUT4は、カウンタ値 cnt_rをアドレスとして入力すると、バンク番号 bとアドレス(メモ リバンク内の物理アドレス) aを出力するよう設定される。ここで、バンク番号 bはインタ 一リーブ手順における行間並び替え後の行番号に、アドレス aは同じく列番号に対応 する。バンク番号 b及びアドレス aとインターリーブアドレス A (k2)との関係は、次式の ようになる。
[0069] b [m] = floor {A (cnt— r +m X C) /C}
a[m] =A(cnt— r+m X C) mod C (2)
ただし、 m=0, 1, · ··, Mout— 1、
floor: 0方向への丸め(切捨て)処理
mod: 剰余演算を示す。
[0070] 作成されたアドレステーブル 111 (ルックアップテーブル LUT0〜LUT4)の例を、 図 22に示す。ここでは、参考のため k2及び A (k2)を併記している力 実際に LUT0 〜LUT4に保存される値はバンク番号 bとアドレス aのみである。またこの例はデータ 長 K=40、出カサブブロックサイズ Ksout = 8の場合を表している。例えば、インター リーブ後のインデックスが 18であるデータ (インターリーブ前のインデックスは 14)は、 LUT2の cnt_r= 2のエントリを参照すると、 RAMIのアドレス 6に書き込まれることが 分かる。
[0071] 以上の初期設定が完了した後、書き込みフェーズ及び読み出しフェーズにより並列 インターリーブが実行される。
[0072] 本実施の形態においては、入力データ€^&_ 0〜€^&_ 4はじずっ区切られ別の バンク(RAM0〜RAM4)に書き込まれる。例えば図 21の基本回路においては、 n 番目の入力シンボルは、 floor (nZC)番のバンクに書き込まれる。またそのときの物 理アドレス(該当するバンクに入力される読み出しアドレス)は、 n mod C (modは 剰余演算)である。
[0073] 上記のような書き込み処理を実現するために、本実施の形態のインターリーバ 100 では、行カウンタ 105と列カウンタ 106を用いる。行カウンタ 105と列カウンタ 106は、 それぞれ内部に複数のカウンタを持つ。ここで、カウンタの値を i[k] , j [b]とする。な お k = 0〜Ms - 1 (Msはサブブロック数)であり、 b = 0〜Mr - 1 (Mrは RAMバンク 数)である。
[0074] カウンタの初期値 iO[k] , jO[b]は入カサブブロックサイズ Ksを用いて、次式のよう に決定する。
[0075] iO [k] = floor (Ksin X k/C) jO[iO[k] ] = (Ksin X k) mod C
jO[b] =じ0)=10[1^]なる1^が存在しなぃとき) (3)
[0076] 書き込みフェーズにお 、ては、列カウンタ j [k]は初期値力 毎サイクル 1ずつ増加 し、列数 Cまでカウントする。列数 Cに達すると、列カウンタ j [k]は停止するが、対応 する行カウンタ i[k]をインクリメントすると共に、カウンタ j [i[k] ]をリセットする。
[0077] 以上の処理を、例を用いて説明する。ここでサブブロックサイ Ksが Cより大きいと する。書き込み開始時において、 i[0] =0, j [0] =0であるから、サブブロック 0の入 力(datajnO)は RAMOのアドレス 0に書き込まれる。以後、 C—1サイクルにわたり、 R AMOのアドレス 0〜C 1にサブブロック 0のデータが書き込まれる。
[0078] このとき、 j [0] =C— 1となるので、次のサイクルにおいて、 i[0]がインクリメントされ i
[0] = 1になり、カウンタ j [i[0] ]はリセットされ、動作を開始する。すなわち、 j [l] =0 となる。従って、この時点においてサブブロック 0の C番目のデータは RAMIのァドレ ス 0に書き込まれる。図 23に、全てのデータを書き込んだ後の RAM0〜RAM4内の データ配置を示す。
[0079] 読み出しフェーズにおいては、出カサブブロックカウンタ 110が 0から出カサブブ口 ックサイ Ksout— 1までカウントアップを行い、カウンタ値 cnt_rを LUT0〜LUT4へ アドレスとして入力する。 LUT0〜LUT4はその時点で読み出すべきデータのバンク 番号とアドレスを出力する。例えば、図 22の例ではカウンタ値 cnt_r=0のときに LUT 0は b0=4, a0 = 7を出力する。これは、サブブロック 0の先頭のデータ(d[39])を出 力するためにはバンク 4のアドレス 7を読み出せば良!ヽと!、うことを示して!/、る。
[0080] LUT0〜LUT4からの 5つの出力は、それぞれ行 Z列番号分離回路 113に入力さ れ、行番号 bと列番号 aに分離される。
[0081] 列番号 a0〜a4はアドレススィッチ 114に入力され、行番号 b0〜b4の指定するメモ リバンク(RAMO〜: RAM4)へ分配される。例えば、前記の例では、 LUTOの出力 aO = 7というアドレスは、 b0=4より、 RAM4に転送される。 LUT1の出力 al = 3は、 bl = 1より RAMIに転送される。このように、行番号 b0〜b4がアドレススィッチ 114を操 作し、列番号 a0〜a4を適切な RAMモジュールへ転送する。
[0082] 行番号 b0〜b4はさらに、出力側スィッチ 103を操作し、 RAMO〜: RAM4の出力を 適切なサブブロック出力信号 data_out0〜data_out4へ分配する。例えば、前記の例で は、 LUTOの出力 b0=4であることから、 data_out0に出力されるべきデータは RAM4 力も出力されることが分かる。従って、出力側スィッチ 103は信号 r_data4を信号 data_o utOと接続する。
[0083] 以上のようにして、 5サブブロック分割による並列インターリーブが実現できる。以上 の動作を、図 24、図 25にタイミングチャートとして改めて示す。図 24は書き込みタイミ ングであり、図 25は読み出しタイミングである。
[0084] ところで、本実施の形態のインターリーバ 100でメモリ競合が発生しないための主た るポイントは、次の 2つである。
[0085] (i)インターリーブパターンを生成する 2次元マトリックス上で、異なる行に対応するシ ンボルは異なるメモリバンク RAMO〜: RAM4に書き込むこと。
(ii)出カサブブロックサイ Ksを行数 Rと互いに素となるよう選択すること。
[0086] ここで、(ii)の条件は次のように換言することもできる。つまり、「同時に読み出す 2つ 以上のシンボルに関して、いずれの 2つについても位置の間隔 Sが行数 Rと互いに素 となるように同時に読み出すシンボルを選択する」ということができる。
[0087] この条件を使えば、シリアル-パラレル変換型の並列インターリーバにおいても、並 列数カ 以下であればメモリアクセス競合を発生させることなく並列読み出しが可能 なインターリーバを設計できることが分力る。
[0088] 次に、本実施の形態のインターリーバ 100によるプルーニング処理について説明す る。
[0089] インターリーバ 100は、プルーニングが発生する場合 (Kく RCの場合)でもメモリア クセス競合を発生させずにインターリーブ処理を並列に実行可能となっている。
[0090] プルーニングに対応するための主なポイントは、以下の 2つである。
(i)プルーニング対象シンボル(無効アドレス)を含めて LUT0〜LUT4を作成する。
(ii)無効アドレスに対応する部分では、そのサブブロックのみシンボルを出力しな!、。
[0091] 以下、 K=45の場合を例に説明する。
[0092] 行数算出部 108及び列数算出部 107は 3GPP規格に従い、行数 R= 5、列数 C = 10を求める。 [0093] 入カサブブロックサイズに対する要件は、プルーニングが発生しない場合と同様で ある。ただし、本例のように、バンク数 Mrとサブブロック数 Msが等しい場合、 Ksin≥C の条件より、最終サブブロックは常に Cより短くなる (Ksinは最終以外のサブブロック サイズである)。逆に、全てのサブブロックが等しいサイズとなるようにサブブロック分 割すると、必ず書き込み時に競合が起こってしまう。
[0094] 出カサブブロックサイズ算出部 109は、出カサブブロックのサイズ Ksoutを、行数 R と互いに素になるように定める。また全てのサブブロックサイズの合計力 インターリー ブパターンを生成する配列のサイズより大きくなるようにする。すなわち、サブブロック 数を Msとしたとき、 Ksout X Ms≥RCとなるように出カサブブロックサイ Ksoutを定 める。 K=45の場合、これらの条件を満たす最小の出カサブブロックサイ Ksoutと して、 11を選択する。
[0095] ルックアップテーブル (LUT)設定部 112は、データ長 K及び出カサブブロックサイ ズ Ksoutの値から、全ての LUT0〜LUT4を設定する。ここでは、プルーニングされる シンボルのアドレス(無効アドレス)を含めてアドレスパターンを設定する。図 26に K =45の場合の LUT0〜LUT4の内容を示す。例えば LUT2のカウンタ値 cnt_r= 3 は、 A(k2) =49に対応するため、無効アドレスの 1つである。
[0096] 無効アドレスの場合、 RAM0〜RAMヘアドレスを送らないようにアドレススィッチ 1 14を制御することでプルーニングを実現できる。ここで、図 27に示すように無効アド レスに対応する場所はバンク番号 bの値を特別な値に書き替えておくことによって、ァ ドレススィッチ 114の制御を簡単にすることができる。また LUTの空いた部分にも無 効を示す値を設定しておく。
[0097] 以上の初期設定が完了した後、書き込みフェーズ及び読み出しフェーズにより並列 インターリーブが実行される。
[0098] 書き込みフェーズの動作はプルーニングが発生しない場合と同様である。タイミン グチャートを図 28に示す。
[0099] 読み出しフェーズにおいては、 LUT0〜LUT4から無効アドレスを示すデータ(b = 6, a=0)が出力されたときのみ異なる動作を行う。このことをタイミングチャート図 29 を用いて説明する。時刻 9において、 LUT0〜LUT4の出力 b0〜b3はバンク番号を 示す 3, 2, 1, 0という値を取るが、 b4は無効アドレスを示す 6という値を取る。これに 対し、アドレススィッチ 114は RAMO〜3に対しては有効なアドレス aO〜3を送り、 RA M4に対しては任意のアドレス(例えば 0)を送る力、 RAM4の読み出しを無効にする 。そして、有効検出部 115はサブブロック 4の出力が無効であることを信号 valid[4:0] を通じて外部(たとえば SISOデコーダ)に通知する。
[0100] 以上の繰り返しにより、図 29の data_out0〜4が示すとおりインターリーブ処理を完了 することができる。ここで、各出カサブブロックのサイズを、図 30に示す。プル一ニン グが発生しな!、場合、出カサブブロックサイズは最終ブロックを除きすベて Ksoutと一 致した力 プルーニングが発生する場合には Ksoul:より短くなる場合がある。
[0101] (実施の形態 2)
実施の形態 1では、競合を起こさず並列インターリーブを可能とする基本原理を示 した。本実施の形態では、さらに、(1)書き込み処理の簡略化、(2)読み出し処理の 簡略化、(3)サブブロックサイズ決定方法の変更、(4)少ないサブブロックへの対応 を可能とする構成及び方法を提案する。
[0102] 図 31に、本実施の形態のインターリーバの構成を示す。図 31のインターリーバ 200 は、上記(1)〜(3)を可能とする回路構成となっている。またインターリーバ 200は、 実施の形態 1のインターリーバ 100と比較して、回路構成が簡単化されている。
[0103] インターリーバ 200は、大きく分けて、独立に書き込み及び読み出しが可能な複数 のメモリバンク(RAM0〜: RAM4)力 なるメモリ 201と、出力側スィッチ 202と、列力 ゥンタ 204からなる書き込みアドレス生成部 203と、列数算出部 205と、行数算出部 2 06と、サブブロックサイズ決定部 207と、読み出しアドレス生成部 210と、バンク選択 信号生成部 220と、無効判定部 23とを有する。
[0104] (1)書き込み処理の簡略ィ匕
入カサブブロックサイズを Cと定めることで、入力側スィッチ及び行カウンタを不要と し、書き込みアドレス生成部 203の列カウンタ 204を簡略ィ匕できる。すなわち、入力サ ブブロックサイ Ksin=Cである場合、サブブロック [k]のデータは全てメモリ 201の R AM [k]に書き込まれる。従って、 data_in[k]^w_data[k]に直接接続することで、入力 側スィッチと、スィッチを制御する行カウンタが不要となる。また各時点で全てのデー タを同じアドレスに書き込むため、列カウンタ 204は 1つでよ!ヽ(常に i[k] =k、 j [0] = j [1] =… =j [k— 1]であると見ることもできる)。
[0105] (2)読み出し処理の簡略ィ匕
実施の形態 1で示した図 21の読み出し制御では、各サブブロックが読み出すべき データのバンク番号とアドレスを LUT0〜LUT4で求め、アドレススィッチ 114を用い 該当するバンクにそのアドレスを送ることで読み出しを実現した。ここで、 LUTO〜L UT4内のデータを予め並べ替えておくことで、アドレススィッチを不要とすることがで きる。具体的には、 LUTOには RAMOに送るべきアドレスを、 LUT[b]には RAM[b] に送るべきアドレスを格納しておく。このテーブルは、行内並び替えパターン U[i] (j) を並び替えたものである。たとえば、 LUTOは、エントリ 0から順に、 U[0] (0)、 U[0] (v)、 U[0] (2v)ゝ…、 U[0] (tv mod Ksout)、のように格納されている。ここで、 v = Ms XRZMrである。 LUT[k]の t番目のエントリは、 LUT[k] (t) =U[k] ( (tv+j 0 [k] ) mod Ksout)である。ここで、 jO [k] = floor (Ksout X k/v)である。
[0106] 以上のようにして、アドレススィッチを不要とし、バンク選択番号を LUT内に格納す る必要が無くなるため、 LUTの容量を削減することができる。 3GPPの turbo intern al interleaverの場合、 LUTは 1ワードあたり 13ビットから 8ビットに削減することが できる。 K=45の場合の LUT0〜LUT4の内容を、図 33に示す。
[0107] し力しながら、バンク番号は出力側スィッチ 202の操作のために別途必要となる。ま た、無効アドレスを示す特別なバンク番号を LUT0〜LUT4に格納しな!、ために別 の方法で有効判定を行う必要がある。
[0108] まず、バンク番号を求める回路構成、すなわちバンク選択信号生成部 220につ ヽ て説明する。時刻 tにおけるバンク選択信号 b[k] (t)は、 b[k] (t) =T[ (t + kXKsou t) mod R]である。ここで、 i=t mod R、Ro=Ksout mod Rと書くと、 b[k] (t) =T[ (i+k XRo) mod R]となる。
[0109] 以上から、 i=0〜R—lまでカウントする行カウンタ 223と、行オフセット Ro= Ksout mod Rを求める行オフセット算出部 222と、 Rエントリの LUT221 (T— LUT)と、 R を法とする加算器 (加算の後、 Rの剰余を求める) 224とを設けることで、バンク番号を 生成する回路 (すなわちバンク選択信号生成部 220)を構成することができる。 [0110] 次に、有効判定を行う回路 (無効判定部 230)の例を示す。ここでは、 RAM4への アクセスが有効かどうかを調べ、無効である場合、無効となるサブブロックの番号を出 力する回路を示す。インターリーブ方式による力 プルーニングは一般に後半のバン クで発生する。従って、プルーニングが発生するバンクごとに無効判定回路を用意す ればよい。例えば、 PILでは行 17以降でプルーニングが発生しうる。従って、 RAMI 7, 18, 19それぞれについて判定を行う 3つの無効判定回路が必要となる。
[0111] 具体的な無効判定部 230の回路構成について、図 32を用いて説明する。無効判 定部 230は、比較部 231と、エンコーダ 232と、大小比較器 233とを有する。比較部 2 31を構成する 5つの比較器 0〜比較器 4は、 T—LUTの出力と、調べるバンク番号( ここでは 4)とを比較する。これは、 RAM4の出力がどのサブブロックに出力されるか を調べることに相当する。各比較器 0〜4は、 T—LUTの出力と、調べるバンク番号と がー致すると、 1を出力する。この出力 1がエンコーダ 232に入力されると、ェンコ一 ダ 232はバンク番号に変換する。
[0112] 同時に、大小比較器 233は r_addr4と K mod Cを比較する。 r_addr4のほうが大き いか、一致する場合には RAM4の出力は無効である。従って、大小比較器 233はこ のような場合、セレクタを操作し、エンコーダの出力を信号 invalicLblkに接続し、該当 するサブブロックが無効であることを示す。大小比較の結果、 r_addr4の出力が有効で あるときは、 invalid_blkにはいずれのバンク番号も出力しない。例えば、 1などの値 を出力するようにしておく。
[0113] 以上のように、サブブロックの出力が有効かどうかを判定する方法として 2つ示した 。一つは実施の形態 1の図 21で示したように、 LUTに無効アドレスを示すデータを 予めセットしておく方法で、もう一つは本実施の形態の図 31で示したように、バンク選 択信号と読み出しアドレス力も判定する回路 (無効判定部 230)を用いることである。
[0114] 実際上、上述したような無効判定は非常に重要となる。例えば従来の並列インター リーバでは、一般に、無効アドレスは取り除いてアドレステーブルを作成するようにし ていた。しかし、実施の形態では、あえて無効アドレスを残しておくことでメモリァクセ ス競合が発生しないことを保証できるようにした。そのため、実施の形態では無効判 定回路を設けるようになつている。このように、本実施の形態の一つの特徴は、並列ィ ンターリーバで無効判定を行うようにしたことである。これにより、並列インターリーバ において無効なサブブロックまで特定することができる。
[0115] (3)サブブロックサイズ決定方法の変更
図 31のサブブロックサイズ決定部 207では、 Ksout = ceiling ( (C— floor (Ro X M s/R) ) /Ms) X R+Ro、に基づいてサブブロックサイズを決定する。ここで、行オフ セットを例えば Ro = 1と固定しておくことで、回路構成を簡単化できる。
[0116] 次に、図 34及び図 35を用いて、インターリーバ 200の動作タイミングを説明する。
なお図 34は書き込みタイミングを示し、図 35は読み出しタイミングを示す。ここでは、
K=45、 Ms = 5、 Mr= 5、 R= 5、 C= 10の場合を示した。
[0117] タイミングチャートにおける特徴は、次の点である。
(a)書き込みにおいて、 w_data[k]は全て等しい値であること、 in_data[k]は w_data[k]と 等しいことを確認できる。
(b)読み出しにおいて、 r_addr[k]は直接テーブルより求めることができる。 r_addr4に おいて、網掛け部分は、無効アドレス (プル一ユング)に対応する部分である。そのた め、 data_outの一部に有効なデータが出力されない部分がある。このとき、信号 invalid _blkが無効なサブブロックを示していることが分力る。
[0118] なおバンク番号生成部の構成は、図 31に示したものに限らない。すなわち、行オフ セット値は該当するサブブロックの T LUTの読み出し開始位置のずれをあらわす ので、 T—LUTの内容を行オフセットにあわせてあらかじめずらしておけば、オフセッ トを加算する回路が不要となる。
[0119] また、バンク選択信号は Rを周期として変化することから、 R個のレジスタをリング状 に接続した回路によっても生成することができる。 Roによりレジスタ間の接続が変わる ため、この構成は Roが固定である場合に用いるとよい。
[0120] (4)少ないサブブロックへの対応
実施の形態 1及び本実施の形態で説明したインターリーバは、サブブロック数 Msと バンク数 Mrが等しいとき、回路の利用効率が最も高いといえる。しかしながら、これら の構成のインターリーバをターボデコーダに組み込んで用いるとき、次の理由から M sを小さくする必要が生じる場合がある。 [0121] (i) SISO (Soft-Input Soft- Output)デコーダ、すなわち演算回路が Msより小さい並 列処理能力しか持たな 、とき
(ii)サブブロックサイズが小さすぎると、デコード性能が劣化してしまうとき
本発明では、 Ms< Mrである場合でも、メモリアクセス競合無く並列インターリーブ を実行可能である。ここでは、バンク数 Mr = 5、サブブロック数 Ms = 3である例を、図 36に示す。なお図 36では、図 31と対応する部分には同一符号を付した。また図 36 のインターリーバ 300の読み出しアドレス生成部の LUT0〜4の内容を図 37に、 K= 40、 Ksin= 14、 Ksout= 14、 Ro=4のときの書き込みタイミングを図 38に、読み出し タイミングを図 39に示した。
[0122] 書き込み処理に関して、 Ksin X Ms≥RCである必要があるので、 Ksin=Cとできな い。従って、簡易な構成をとることができず、図 36のインターリーノ 300では、書き込 みアドレス生成部 301を行カウンタ 302及び列カウンタ 303を有する構成とする。そ れぞれのブロックは、 3つのカウンタを内部に持つ。
[0123] 読み出し制御に関しては、図 31のインターリーバ 200との違いが 2点ある。まず、ァ ドレスを決定する LUT0〜LUT4の内部には空きが多いことである。サブブロック数 力 S3であるのに対し、 RAM数は 5つであるから、各時点において、 5つのうち 2つの R AMへのアクセスは無駄なアクセスとなってしまう。このことに対応するため、インター リーバ 300では、 LUT0〜LUT4の該当する部分に無効なアドレス(C以上の任意の 値、たとえば 8)をセットする。各 RAM0〜RAM4においては、 C以上のアドレスが入 力されたときに実際のアクセスを停止することで、無駄なアクセスを避けることができる (この制御を行う部分は図示していない)。この制御により、図 39の読み出しタイミング に示すとおり r_data端子には無駄なデータが出力されない。ただし、もし出力されても 出力側スィッチ 202でそのデータは無視されるため、 data_outには影響がな 、。
[0124] 2つ目の違いは、バンク選択信号生成部 310である力 単にルックアップテーブル 3 l l (T-LUT)をサブブロック数に合わせて 3つに削減するだけでよい。
[0125] インターリーバ 300においては、図 37〜図 39からも分かるように、 r_addr端子に無 効なアドレスである 8を入力したとき、 r_data端子からの有効な出力はない。しかし、出 力側スィッチ 202で並び替えを行うと、 3つのサブブロックから適切にインターリーブさ れたデータ列が得られることが分かる。
[0126] なお、インターリーバ 300では、 LUTの無効部分を 8という値で埋めたため、 LUT の容量及びビット数が増えてしまうという欠点がある。これが問題となる場合は、次の いずれかの方法をとることができる。第 1に、図 21の構成を用いることである。第 2に、 LUTに無効アドレスを挿入する代わりに、有効アドレスを LUTの前方に詰めることで ある。ただし、カウンタ値 cnt_rを LUTの読み出しアドレスとして直接使用できず、 LU Tの読み出し制御が多少複雑になる。
[0127] (実施の形態 3)
実施の形態 1、 2で説明した並列インターリーバは、特にターボデコーダに適用する と効果的である。本実施の形態では、実施の形態 1、 2の並列インターリーバをターボ デコーダに組み込んだ場合の構成につ 、て説明する。
[0128] 図 40に、現在知られているターボデコーダの概略を示す。破線で囲んだ部分に示 すように、外部値 (あるいは、外部情報、事前情報など)と呼ばれる情報を 2つの SIS Oデコーダ(Soft— In Soft— Outデコーダ)間で受け渡し、繰り返し処理を行うこと が大きな特徴である。詳しくは、文献「Berrou, C; Glavieux, A.; Thitimajshima, P.; " Near shannon limit error-correcting coding and decoding: Turbo-codes", IEEE Inte rnational Conference on Communications, 1993, Pages :1064 - 1070 vol.2」等【こ己載 されている。
[0129] 近年においては、高速な通信を実現するために、ターボデコーダに対しても高速処 理が求められている。 SISOデコーダを高速化する方法として、複数の SISOデコー ダを並列動作させる方法と、 radix— 4アルゴリズム(例えば文献「Charles Thomas, M ark A. Bickerstaff, Linda M. Davis, Thomas Prokop, Ben Widaup, uongyu Zhou, Da vid Garrett, し hns Nicol; 'Integratedし ireuits for Channel Coding in 3G Cellular Mo bile Wireless Systems", IEEE Communications Magazine August 2003, pp.150- 159」 等に記載されている)が知られている。しかし、ターボデコーダとして高速に動作させ るためにはインターリーバも高速動作させることが必要である。 SISOデコーダの高速 化手法に対応した並列インターリーバが必要となる。
[0130] SISOデコーダを並列動作させる場合には、データ(外部値)はサブブロック分割さ れる。サブブロック分割を用いた並列ターボデコーダ回路を、図 41に示す。なお、こ の図では外部値の流れを中心に示すため、通信路値の処理や硬判定に関する回路 を省略した。図 41の並列ターボデコーダは、大きく分けて、並列インターリーバ 510と 、並列ディンターリーバ 520と、 SISOデコーダ 530と、遅延回路 540と、 SISOデコ ーダ 550とを有する。並列インターリーバ 510は、メモリ 511と、アドレス生成部 512と 、インターリーブアドレス生成部 513と、スィッチ 514と、バンク選択信号生成部 515と 、無効判定部 516とを有する。並列ディンターリーバ 520は、スィッチ 521と、メモリ 5 22と、 、レス生成咅 523とを有する。
[0131] なお、図 41では、 SISOデコーダ 00乃至 04、及び 10乃至 14の計 10個の SISOデ コーダを用いているが、 SISOデコーダ 00乃至 04と 10乃至 14を時分割共有すること で 5個の SISOデコーダのみで実現することも可能である。
[0132] また、 radix— 4アルゴリズムを用いた SISOデコーダに対応しては、シリアル パラ レル型のインターリーバが利用できる。これらを組み込んだターボデコーダ回路を図 42に示す。図 42のターボデコーダは、大きく分けて、並列インターリーバ 610と、並 列ディンターリーバ 620と、 Radix -4 SISOデコーダ 630と、遅延回路 640と、 Rad ix-4 SISOデコーダ 650とを有する。並列インターリーバ 610は、スィッチ 611と、 バンク選択信号生成部 612と、メモリ 613と、アドレス生成部 614と、インターリーブァ ドレス生成部 615と、スィッチ 616と、バンク選択信号生成部 617と、無効判定部 618 とを有する。
[0133] 以上のように、本発明によれば高速なインターリーバ回路をアービタ回路の付加な どによる回路規模の増大を招くことなぐ簡易な構成で実現できるため、小型で高速 なターボデコーダ回路を実現することができる。
[0134] なお上述した実施の形態 1、 2では、本発明をプライムインターリーブに用いた場合 について述べたが、本発明はこれに限らず、 2次元配列型のデータ構造に対して行 方向優先でデータを書き込み、各行ごとに行内並び替えを行い、行同士を並び替え 、列方向優先でデータを読み出すインターリーブアルゴリズムを実現する場合に広く 適用できる。
[0135] (実施の形態 4) 図 43に、本実施の形態のインターリーバの構成を示す。インターリーバ 700は、入 力側スィッチ 701と、独立に書き込み及び読み出しが可能な複数のバンク (RAM0 〜RAM4)力 なるメモリ 702と、出力側スィッチ 703と、入力側カウンタ 704及び conf iguration選択部 705からなる書き込みアドレス生成部と、行カウンタ 706と、列カウン タ 707と、列番号スィッチ 708と、カロ算器 709と、ルックアップテーブル LUT0〜LUT 4からなるアドレステーブル 710と、遅延部 711と、カロ算器 712と、プルーニング(prun ing)判定部(図 1の有効検出部 115に相当) 713とを有する。
[0136] (1)設計方法'原理
先ず、インターリーバ 700の詳細を説明する前に、本実施の形態の原理について 説明する。
[0137] 本実施の形態では、一例として、行数 20のインターリーブを、 RAM数 5、 5並列入 出力(5サブブロック分割)により並列インターリーブする回路を示す。また本実施の 形態では、ブロックサイズが 203のデータを例に説明する。 3GPP規格の PILでは、 インターリーバの配列は行数 R= 20、列数 C= 11である。
[0138] 入カサブブロックサイズは、 Cの倍数とするとよい。ここでは Cの 4倍、すなわち 44と する。その理由は、行数が 20で、並列度(サブブロック数)が 5なので、 1サブブロック あたり 4とした。
[0139] 出カサブブロックサイズ Ksoutは、次の 2つの条件を同時に満たすように定める。
(i) Ksoutを Rで割った余りは 1以上
(ii) 1バンクに割り当てられる行数は、 Ksoutと Rの最大公約数を超えない
このような Ksoutを求める簡単な方法は、(1)式において Ro=4とすることである。 K soutを Rで割った余りは 4である。また、 Ksoutと Rの最大公約数は 4となるので、 1バン クに 4行を割り当てることができる。以上から、 Ksoutは 44とする。
[0140] 次に、データとメモリバンクの対応を決める。
入カサブブロックは Cの倍数とした。したがって、書込み動作の始めの Cサイクルは 、サブブロック 0は 0行目のデータを、サブブロック 1は 4行目のデータを、 · · ·、メモリ に書き込む。そして、次の Cサイクルは、サブブロック 0は 1行目のデータを、サブブロ ック 1は 5行目のデータを、 · · ·、書き込む。 以上から、同時に書き込まれるデータの組み合わせを行番号で表すと、図 44の(0 )〜(3)〖こ示される 4通りとなる。
[0141] 読出し時には、毎サイクル組み合わせが変わる。出カサブブロック Ksoutを 44とした ことにより、組み合わせの数は 20通りで、同じ行への同時アクセスがない (競合が発 生しない)。本実施の形態ではさらに、 Ksoutを行数 Rで除した余りである Roを 4とした ことにより、組み合わせに重複が生じ、図 44に示す 4通りにまで削減される。
[0142] 以上から、同時にアクセスされる行の組み合わせ (8通り)が全て明らかになった。し たがって、これらの行が別のバンクになるよう、バンク割り当てを決定する。割り当ての 一例を、図 45及び図 46に示す。
[0143] 以上が、本実施の形態のインターリーバの設計の原理である。重要な点を列挙する 。 ·出カサブブロックサイ Ksoutを、「ダミーデータ (プル一ユングされるデータ)を含 めて 44」としたので、書込み時に同じ行への同時アクセスが発生しない。 'Ksoutを R で除した余りである Roを 4としたので、同時読出しがなされる行の組み合わせの数が 4通りまでに削減された。 ·同時にアクセスされる行は別のバンクとなるよう、データ RA Mの分割方法 (バンクへの割り当て方法)を決定した。同時にアクセスされる行の組 み合わせが少ないほど、少ないバンク数で済み、回路が簡略化される。
[0144] (2)構成及び動作
次に、本実施の形態のインターリーバ 700の構成及び動作について説明する。 <構成 > (書込み関連)
入力端子 (data_in0〜4): 1つの端子は 1つのサブブロックに対応する。
入力側スィッチ 701:入力端子をメモリ 702の適切な RAMのバンクに接続する。ス イッチは、図 47 (A)〜(B)に示す 4通りの接続を実現する。各時点でどの接続に切り 替えるかは configuration選択部 705が決定する。
入力側カウンタ 704 :データ書き込み用のアドレスを生成する。なお、 configuration 選択部 705はこのカウンタの出力に基づき動作する。
RAM0〜4:入力データが書き込まれる。 5つのバンクに分割されて!、る。
[0145] (読出し関連)
行カウンタ 706:サブブロック 0〜4がそれぞれ読み出すべきデータのインターリー ブ後の行番号を保持'更新する。
列カウンタ 707:サブブロック 0〜4がそれぞれ読み出すべきデータのインターリー ブ後の列番号を保持'更新する。
列番号スィッチ 708:列カウンタ 707の値を適切な LUTに転送する。接続の形態と しては、図 48 (A)、(B)に示した 2つの他、計 20通りを実現する。同時に、各カウンタ 値に加算すべき上位アドレス値を算出する。
アドレステーブル (LUT0〜4) 710 :アドレスのテーブル。特に、本実施の形態では 行内並び替えパターン (intra-row permutation pattern)を保持する。データの RAMと 同様に 5つのバンクに分割されている。
プル一-ング(Pruning)判定部 713:アドレステーブル 710の出力に無効アドレスが 含まれていないか検査する。含まれている場合、それがどのサブブロックに対応する かを調べ、結果を端子 validに出力する。
出力側スィッチ 703 :メモリ 702の各バンク力ものデータ出力を適切な出力端子に 接続する。
出力端子 (data_out0〜4) : lつの端子は 1つのサブブロックに対応する。
[0146] <書込み動作 >
ブロックサイズ (データ長) 203シンボルの場合を例に説明する。
3GPP規格(PIL)では、インターリーバの配列は R= 20、 C= l lである。インターリ ーバ 700は、入力データを 5サブブロックに分割する。その様子を、図 49 (A)に示す 。なお、後半のサブブロックは Ksinより短くなる場合がある。図 49 (A)の例においても 、最後のサブブロック (サブブロック 4)は他より短ぐ 27シンボルしかない。
[0147] 入力データは、図 46のようにメモリ 702に配置する。ここで、各図面には行番号 Iに 基づく表現で補足を加えた。たとえば、サブブロック 3の先頭のデータは 1= 12のデ ータであり、 RAM3の先頭部分に書き込まれる。
[0148] このような書き込みを行うため、図 21の回路は次のように動作する。
入力側カウンタ 704は 0から 4C— 1まで 1ずつカウントする。このカウント値は書き込 みアドレスとして各 RAMに入力される。このカウント値に従い、入力側スィッチ 701の 制御も行われる。すなわち、入力側スィッチ 701は、カウント値が 0〜C—1の期間に は図 47 (A)、カウント値が C〜2C— 1の期間には図 47 (B)のような接続状態となる。
[0149] <読み出し動作 >
この例では、出カサブブロックサイズを Ksout=44とする。この値に基づき、カウンタ 706、 707の初期設定を行う。
出カサブブロック 0の先頭データのデータ順位は 0である。そこで、行カウンタ 0の初 期値を 0、列カウンタ 0の値を 0と定める。
出カサブブロック 1の先頭データのデータ順位は 44である。そこで、行カウンタ 1の 値を 4、歹 IJカウンタ 1の値を 2と定める。
[0150] ここで、行カウンタを I、列カウンタを J、データ順位を nと表すと、これらの間に次式の 関係が成り立つ。
n=I+JR (4)
(4)式に表される関係と、 Iが 0〜19の範囲であるという条件から、行カウンタ 1と列 カウンタ 1の初期値が算出される。同様に、サブブロック 2〜4についてもカウンタの初 期値が算出される。それらの値とデータ順位を、図 50に示す。
[0151] ここで、データ順位はプルーニング処理により除去されるダミーデータを含む、イン ターリーブ後のデータ順位である。したがって、ブロックサイ Kが 203であるのに対 し、サブブロック 4の最後のデータ順位は 219と、ブロックサイズより大きくなる。 (219 - 203 = 16であるから、 16個のダミーデータが挿入されて!、る)
なお、ダミーデータを含むデータ順位に基づきカウンタ値を定めないと、メモリァク セス競合が起こらな 、ことが保証されな 、。
[0152] 初期設定が完了すると、読み出し動作を開始する。行カウンタ 706は毎サイクル 1 ずつ増加し、行の最大値 19を超えると 0にリセットされるとともに対応する列カウンタ 7 07を 1増加させる。すなわち、列カウンタ 707は 20サイクルに一度インクリメントされる
[0153] 列カウンタ 707の値は、列番号スィッチ 708により適切な LUTに転送される。ここで 、列番号スィッチ 708は 3つの役割を担う。
• intra- row permutation ( ¾业ぴ替;
•行番号とバンク番号の関連付け •行番号とバンク内位置の関連付け(上位アドレスの生成)
図 51に、これらの関係を示す。
[0154] 列番号スィッチ 708の動作を具体的に説明する。初めのサイクル (初期設定時)に おいて、行カウンタ 3、列カウンタ 3の値は、それぞれ 12、 6である。この行番号に対 応する並び替え(inter-row permutation)前行番号は 13である。並び替え前に 13行 目に属するデータはバンク 1 (RAMI)にあるので、列番号スィッチ 708は図 48のよう に接続される。
[0155] また、 13行目のデータはバンク 1の前から 2番目の領域に保存されている。したがつ て、そのことを示す上位アドレスである A= 1という値が列番号スィッチ 708により生成 される。 A= lという値は、実際のアドレス (A= lの領域が始まるアドレス) 11に変換さ れ、列カウンタ値に加算される。
この結果、 17(=6 + 11)という値力LUT1に入力される。 LUT1は 12行 6列に対応 する行内並び替えパターン (intra-row permutation pattern)である 4という値を出力す る。
[0156] この出力に対し、再び上位アドレスをカ卩算し、 RAMへのアドレスとして入力する。す なわち、 RAMIへ、 15 (=4 + 11)というアドレス値が入力され、 RAMからは d[147] が出力される。
出力側スィッチ 703は、列番号スィッチ 708と逆方向の接続を行う。すなわち、 RA M 1の出力をサブブロック 3(data_out3)に接続する。
[0157] 以上のようにして、読出し動作の初めのサイクルには、サブブロック 3のデータとして d[147]が出力される。すべての出力の様子を、図 49 (B) Bに示す。
[0158] 本発明の並列インターリーバでは、一部のサブブロックにおいて無効データが出力 される場合がある。プルーニング判定部 713は、各サブブロックのデータが有効であ るかどうかを検査する。無効であった場合、無効を知らせる信号を出力する。
[0159] 図 52に、プルーニング判定部 713の回路構成を示す。プルーニング判定部 713は 、閾値設定部 713— 1と、閾値判定部 713— 2と、 valid信号スィッチ 713— 3とを有す る。閾値判定部 713— 2は、各 RAMの無効なデータが保存されている領域のァドレ スを指定する。たとえば、ブロックサイズ 203の場合、 19行目は全て無効であるから、 RAM2のアドレス 33〜43は無効である。また、 18行目は初めの 5シンボルのみ有効 であるから、 RAM3のアドレス 27〜32は無効である。図 53に、閾値の例を示す。 thl は無効データが始まるアドレス、 thhは無効データが終了するアドレスを示す。なお、 RAM4ではプルーニングは発生しな!ヽ。
閾値判定部 713— 2は、アドレステーブル 710から出力されたアドレスが無効の領 域であるかどうかを判定し、有効の時 trueを、無効の時 falseを返す。これで、各 RAM の出力が有効であるかどうかが分かる。
valid信号スィッチ 713— 3は、出力側スィッチ 703と同様の動作をする。この結果、 どのサブブロックが有効であるかを示す 5ビットの信号 valid[4:0]が出力される。
[0160] (実施の形態 5)
図 54に、本実施の形態のインターリーバの構成を示す。インターリーバ 800は、入 力側スィッチ 801と、独立に書き込み及び読み出しが可能な複数のバンク (RAMO 〜RAM9)力 なるメモリ 802と、出力側スィッチ 703と、昇順カウンタ 804— 1、降順 カウンタ 804— 2、スィッチ 805及び configuration選択部 806からなる書き込みァドレ ス生成咅と、行カウンタ 807と、歹 IJカウンタ 808と、歹 IJ番号ス ツチ 809と、カロ算器 810 と、ルックァップテーブル1^1710〜1^719からなるァドレステーブル811と、遅延部 81 2と、加算器 813と、プルーニング判定部 814とを有する。
[0161] (1)設計方法'原理
先ず、インターリーバ 800の詳細を説明する前に、本実施の形態の原理について 説明する。
ターボデコーダにおいては、データの入力順を逆方向にすることがしばしば有効で ある。そこで、本実施の形態では奇数サブブロックのみについて、入出力順序を逆に する。その様子を、図 56に示す。
この場合においても、実施の形態 4と同様に競合の発生しない並列インターリーバ を実現できる。ブロックサイズ 203の例で説明する。また、本実施の形態では並列度 を 10とした。
[0162] 入カサブブロックサイズを 22、出カサブブロックサイズを 22とした。ここで、サブブロ ックサイズは、並列度が 10であるから、 Roを 2とし (R÷ 10 = 2)、 (1)式を用いて決定 した。サブブロック分割の様子を、図 56に示す。
[0163] ここで注意すべきことは、昇順と降順のサブブロックが混在している場合、(1)式に 従っていれば必ず競合が発生しないわけではないことである。あくまで、「同時に読 み出す 2つ以上のデータについて、いずれの 2つ以上についても、インターリーブ後 のデータ順位の差を行数で除した余りが 1以上となる」ように注意深く設計しなければ ならない。
[0164] ただし、簡易な方法として、次のいずれかを満たせば(1)式を使ってもよい。
(i)出カサブブロックサイズを偶数とする。
(ii)偶数サブブロックはすべて昇順、奇数サブブロックはすべて降順とする。あるいは 、その逆とする。
[0165] 同時にアクセスされる行の組み合わせは、図 57の通りである。
バンクの割り当て方法の一例を、図 58に示す。なお、列番号スィッチ 809における 上位アドレスの加算を簡単にするため、図 59に示すように、バンク内の境界を 256ず つに区切った。
[0166] (2)動作
次に、本実施の形態のインターリーバ 800の動作について、実施の形態 4のインタ 一リーバ 700 (図 43)と異なる部分を中心に説明する。
[0167] <書込み動作 >
偶数サブブロック(サブブロック 0、 2、 · ·)は順方向にデータが入力されるので、昇 順カウンタ 804— 1を使ってメモリ 802に書き込む。奇数サブブロックは逆方向にデー タが入力されるので、降順カウンタ 804— 2を使ってメモリ 802に書き込む。
図 55に、入力側スィッチ 801のコンフィギュレーションを示す。
[0168] <読出し動作 >
行カウンタ 807、列カウンタ 808の初期値を、図 60に示す。
ところで、サブブロック番号が奇数のカウンタは降順カウンタである。すなわち、行力 ゥンタ 807は毎サイクル 1ずつ減少していく。 0に達すると、次のサイクルには 19にリ セットされるとともに、列カウンタ 808の値をデクリメントする。
実施の形態 4と同様に、列カウンタ 808の値は、列番号スィッチ 809により適切な L UTに転送される。ここで、列番号スィッチ 809は、 intra- row permutation (行間並び 替え)、行番号とバンク番号の関連付け、行番号とバンク内位置の関連付け(上位ァ ドレスの生成)の役割を担う。図 61に、これらの関係を示す。
入力側スィッチ 801の動作も同様である。図 62に、列番号スィッチ 708の 20通りの コンフィギュレーションのうち初めの 2つを示す。
他の動作は実施の形態 4のインターリーバ 700 (図 43)と同様である。
[0169] (実施の形態 6)
図 63に、本実施の形態のインターリーバの構成を示す。インターリーバ 900は、入 力側スィッチ 901と、独立に書き込み及び読み出しが可能な複数のバンク (RAM0 〜RAM9)力 なるメモリ 902と、出力側スィッチ 903と、昇順カウンタ 904及び config uration選択部 905からなる書き込みアドレス生成部と、行カウンタ 906と、列カウンタ 907と、列番号スィッチ 908と、カロ算器 909と、ルックアップテーブル LUT0〜LUT9 力もなるアドレステーブル 910と、遅延部 911と、加算器 912と、プルーニング判定部 913とを有する。
[0170] (1)設計方法'原理
先ず、インターリーバ 900の詳細を説明する前に、本実施の形態の原理について 説明する。
本実施の形態は、サブブロック分割方式と、シリアル/パラレル変換型を組み合わ せたハイブリッド型の並列インターリーバを提示するものである。ここでは、並列度を 5 X 2とした。
前述の実施の形態と同様に、読出しを競合なく並列に行うことができる。
[0171] 前述の実施の形態と同様の手法では、書き込みは 10並列でできない。そこで、本 実施の形態では書き込みは 5並列であるとした。ただし、全ての RAMを偶数アドレス と奇数アドレスで 2分割すれば 10並列書込みが可能である。 RAM0を RAMO-even , RAM0— oddのように分ける。このようなメモリ分割により、逐次書込み処理を並列 ィ匕することは、すでに知られていることであるから、あえて説明しない。
[0172] ノ、イブリツド型にぉ 、ても、(1)式を使用できる。ただし、サブブロックサイズが偶数 になるようにする。そこで、並列度が 5 X 2の本例では、 Ro=4を選び、出カサブブ口 ックサイズを 44とする。
サブブロック分割の様子は、図 64の通りである。 1つのサブブロックにっき、 1サイク ルに 2シンボルが出力される。
同時にアクセスされる行の組み合わせは、図 65の通りである。なお、書込みが 5並 列、読出しが 10並列であることに注意されたい。
上記の条件から、バンク割り当てを、図 66のように定める。
[0173] (2)動作
次に、本実施の形態のインターリーバ 900の動作について、実施の形態 4のインタ 一リーバ 700 (図 43)と異なる部分を中心に説明する。
[0174] <書込み動作 >
入力側スィッチ 901は、 configuration選択部 905に制御され、図 68に示すようなコ ンフィギユレーシヨンとされる。
[0175] <読出し動作 >
行カウンタ 906、列カウンタ 907の初期値は、サブブロックサイズが等しいので、実 施の形態 4のときと同様である。つまり、図 50の通りである。
本実施の形態では、行カウンタ 906は毎サイクル 2ずつ増加する。 19を超えたらリ セットされる(つまり 20が減算される)点、及びリセット時に列カウンタ 906を 1増加させ ることは実施の形態 4の例と同様である。
列番号スィッチ 908は、図 67に示すように、 1つの列カウンタ値を 2つの LUTに送 るよう、接続する。
[0176] このようにして、 1組の行カウンタ.列カウンタから 2つのアドレスが生成され、 2つの データが同時に読み出される。カウンタは 5組あるので計 10個のデータが読み出さ れる。これらは、出力側スィッチ 903により適切な端子に送られる(サブブロック 1つあ たり 2つの端子がある)。
そして、本発明によればこれら 10個のデータ読み出しはすべて別のバンクへのァク セスであることが保証され、アクセス競合は起こらな 、。
なお、プルーニング判定部 913でのプルーニング判定は、サブブロックごとではなく データごとに行われる。たとえば、サブブロック 0のはじめのデータは、 2つのうち 1つ だけが無効である。
[0177] (他の実施の形態)
(1)行カウンタ、列カウンタ、列番号スィッチの他の構成例
行カウンタ、列カウンタ、列番号スィッチは、上述した実施の形態と異なる回路構成 でも実現できる。ただし、 LUTに列番号を供給し、出力スィッチを操作するための信 号を生成すると!ヽぅ目的に変わりはな ヽ。
[0178] 図 69に、図 54に示した実施の形態 5の回路構成に対するノ リエーシヨンを示す。
なお、図 69は、図 54のインターリーバ 800の行カウンタ 807、列カウンタ 808、列番 号スィッチ 809、アドレス生成部 811に対応する部分のみを示したものであり、インタ 一リーバ 1000の他の部分は省略している。
[0179] インターリーバ 1000は、行カウンタ 807、列カウンタ 808、列番号スィッチ 809に換 えて、転送回路 1001と、制御部 1002と、レジスタ部 1003と、上位アドレス生成部 10
04と、カロ算器 1005とを有する。
10個のレジスタ 0〜9は、列カウンタ 808の値に相当する値を保持する。図 54では
、列カウンタ 808はサブブロックとの対応が固定であった力 図 69のレジスタ 0〜9は
LUT0〜9との対応を固定とした。
転送回路 1001は、レジスタの内容を並びかえる。一部のレジスタに対しては値の 更新を行う。
[0180] 図 70に、転送回路 1001の構成例を示す。転送回路 1001は 4つの状態を持ち、図 70 (B)のように状態遷移する。
状態 0では、白抜き四角形を記した部分が接続される。すなわち、レジスタ 0の内容 はレジスタ 0に転送され、レジスタ 9の内容はレジスタ 5に転送される。
図 62と比較すると転送回路 1001の動作が理解できる。すなわち、図 62では LUT 9に入力されていた値は列カウンタ 0の値である。そして、次の時刻では、図 62 (B)の ように、列カウンタ 0の値は LUT5に転送されるようスィッチの接続が変更される。 これに対して、図 70では、はじめの状態ではレジスタ 9には LUT9に入力すべき値 として列カウンタ 0に相当する値を保持していた。この値は、次の時刻に LUT5で使 われるので、転送回路はレジスタ 5に転送するよう接続がなされる。 状態 3 (三角印)においては、レジスタ 9に入力される値に 1を加算するとともに、レジ スタ 5に入力される値から 1を減ずる。これは、図 62において列カウンタ 707がインクリ メント /デクリメントする動作に相当する。
図 69の制御部 1002は、転送回路 1001の 4状態を制御する。それと同時に、上位 アドレス生成部 1004及び出力側スィッチの制御を行う。
[0181] (2)ターボデコーダへの適用例 1
実施の形態 3においては、実施の形態 1、 2の並列インターリーバに対応する並列 ターボデコーダの構成例(図 41、図 42)を示した。図 71に、実施の形態 4のインター リーバ 700 (図 43)に対応する並列ターボデコーダの構成例を示す。
[0182] 図 71の並列ターボデコーダは、大きく分けて、並列インターリーバ 1100と、並列デ インタージーノ 1200と、 SISOデコーダ 1300と、遅延回路 1400と、 SISOデコーダ 1 500とを有する。
並列インターリーバ 1100は、メモリ 1101と、 natural orderアドレス生成部 1102と、 スィッチ 1103と、 interleave orderアドレス生成部 1104と、プルーニング判定部 110 3とを有する。また並歹 IJディンターリーノ 1200は、スィッチ 1201と、メモリ 1202と、 na tural orderアドレス生成部 1203とを有する。
[0183] 図 71の並列ターボデコーダの特徴的な動作は、次の点である。(0プル一ユング判 定部 1105により、無効アドレスが検出された場合には、該当する SISOデコーダのみ をウェイト (一時停止)する。 (ii)並列インターリーバ 1100のインターリーブオーダーァ ドレスは、遅延回路 1400でタイミング調整すればそのまま並列ディンターリーバ 120 0で使うことができるので、インターリーブオーダーアドレス生成部 1104は 1つでよい 。同時に、スィッチの制御信号も受け渡す。これにより、同じアドレスを (単に遅延させ ただけの)同じタイミングで渡すので、アクセス競合がないことが保証される。因みに、 SISOデコーダ 1300の入力と出力でデータの並び順が同じ場合は、遅延回路 1400 として FIFO (先入れ先出し)バッファを用いる。入力と出力でデータの並び順が逆に なる場合は LIFO (後入れ先出し)バッファを用いる。
[0184] なお、(i)については、プルーニング判定に基づき SISOデコーダをウェイトするとい う構成は従来も行われていた。本発明はこれを並列構成で行うことに特徴がある。 [0185] 因みに、従来の構成例として次の 2つのものがあった。
[従来構成 1]逐次(並列でな 、)ターボデコーダが前提。(アドレステーブルは大き 、 ので)テーブル引きではなぐ 1つずつアドレスを計算する。このとき、無効アドレスま で生成されてしまうのでその場合は SISOデコーダをウェイトする。ウェイトが発生しな いように、アドレスを 2個ずつ生成して 1個だけ使うなどの方法も考案されている。この 場合、連続した 2個カ^、ずれも無効であることはな!/、。
[従来構成 2]並列インターリーバでは、テーブル引きでアドレス生成する。なお、テー ブル引き以外でもできる力もしれないが、たいていテーブル引きでやっている。どうせ テーブルを作るのであれば、無効アドレスは除去しておこうというのが常識になってい る。
[0186] これに対して、本発明では、並列ターボデコーダで、わざわざプルーニングによるゥ エイトを発生させている。換言すれば、無効アドレスを残してテーブルを作っている。 これにより、競合が発生しない状態を維持することができる。
[0187] (3)ターボデコーダへの適用例 2
図 72に、実施の形態 6のハイブリッド型のインターリーバ 900に対応するターボデコ ーダの構成例を示す。
[0188] 図 72のターボデコーダは、大きく分けて、並列インターリーバ 2100と、並列ディン ターリーノ 2200と、 Radix— 4 SISOデコーダ 2300と、遅延回路 2400と、 Radix—
4 SISOデコーダ 2500とを有する。
並列インターリーバ 2100は、スィッチ 2101と、メモリ 2102と、 natural orderアドレス 生成部 2103と、スィッチ 2104と、 interleave orderアドレス生成部 2105、プル一ニン グ判定部 2106とを有する。
[0189] ここで、 natural order (並列インターリーバの書込み時)においても 10シンボル/サイ クルの書き込みができるように、メモリバンクをさらに偶数アドレスと奇数アドレスの 2つ に分割する。末尾に eが付く RAMには偶数アドレスのデータ、 0が付く RAMには奇 数アドレスのデータを保存する。
natural orderにおいては、 RAMlOeに書き込むときには同時に RAMlOoにもデー タを書き込む。 Interleave orderにおいては、 RAMlOeと RAMlOoのいずれか一方 に対してのみ読出しを行う。
[0190] 以上説明したように、本発明の並列インターリーバの一つの態様は、例えば図 21、 図 31、図 36、図 43、図 54、図 63を用いて説明したように、複数のメモリバンク力もな るメモリに入力データを書き込み、書き込まれたデータを書き込みと異なる順序で読 み出すことにより、 2次元配列型のデータ構造に対して行方向優先でデータを書き込 み、各行ごとに規定される行内並び替えパターンに基づき行内並び替えを行い、行 同士を並び替え、列方向優先でデータを読み出すインターリーブアルゴリズムを実現 する並列インターリーバであって、複数のメモリバンク力 なり、各バンクが前記 2次元 配列の 1または複数の行番号と対応付けられているメモリと、それぞれ前記 2次元配 列のデータ構造における別の行において規定される複数の行内並び替えパターン を生成するパターン生成部手段と、前記パターン生成部手段を内部に持ち、前記複 数の行内並び替えパターンに基づき複数の読み出しアドレスを生成する読み出し制 御手段アドレス生成部と、を具備し、前記メモリから複数のデータを同時に読み出す 構成を採る。
[0191] この構成によれば、複数のアドレスを用いて、アクセス競合なく並列に処理すること ができ、インターリーバの高速ィ匕を図ることができる。
[0192] 本発明の並列インターリーバの一つの態様は、前記読み出し制御手段は、前記メ モリバンク間で同時に読み出す 2つ以上のデータについて、いずれの 2つ以上につ いても、インターリーブ後のデータ順位の差を行数で除した余りが 1以上となるように 、前記複数のメモリバンク力 データを読み出す構成を採る。
[0193] この構成によれば、読み出し時に、メモリバンク間で同時に読み出すデータのイン ターリーブ後の順位の差を行数で除した余りが 1以上となるように、各メモリバンクの データを読み出すようにしたので、どのような行内および行間並び替えパターンを採 用したとしても、同一のメモリバンクに 2つ以上の読み出しアドレスが生成されることが なくなる。つまり、どのようなインターリーブパターンを採用したとしても、メモリバンクへ のメモリアクセス競合を回避できるようになる。この結果、調停回路等の付加的な回路 を設けなくても、良好に高速なインターリーブ処理を行うことができる並列インターリー バを実現できる。 [0194] 本発明の並列インターリーバの一つの態様は、前記インターリーブアルゴリズムは、 入力データのデータサイズが前記 2次元配列より小さ 、場合、前記入力データにダミ 一データを付加してインターリーブ処理を行った後、ダミーデータを取り除くインター リーブアルゴリズムであり、さらに、前記複数のアドレスのうち、前記ダミーデータに対 応する 0ないし複数個の無効アドレスを判別する無効アドレス判定部を具備する構成 を採る。
[0195] 本発明の並列インターリーバの一つの態様は、前記読み出し制御手段は、前記メ モリバンク間で読み出す 2つ以上のデータにっ 、て、 、ずれの 2つ以上にっ 、ても、 ダミーデータ除去前の順位の差を行数で除した余りが 1以上となるように、前記複数 のメモリからデータを読み出す、構成を採る。
[0196] この構成によれば、ダミーデータの除去処理(プル一ユング処理)を行っても同一の メモリバンクに 2つ以上の読み出しアドレスが生成されることがなくなるため、任意のデ ータサイズのインターリーブを行う場合でもメモリバンクへのメモリアクセス競合を回避 でさるよう〖こなる。
[0197] 本発明の並列インターリーバの一つの態様は、前記 2次元配列のデータ構造にお ける各行の入力データを、同じ行のデータはその行番号に対応するメモリバンクに書 き込むようにして、定められたメモリバンクに書き込むための書き込みアドレスを生成 する書き込み制御手段を具備し、書き込み制御手段は、 2次元配列のデータ構造に おける各行と、書き込み先バンクとの対応が、一対一の対応となる書き込みアドレスを 生成する、構成を採る。
[0198] この構成によれば、メモリバンクへのアクセス競合を回避しつつ、並列度をメモリバ ンク数と等しくできるので、メモリバンクを最大限に利用して高速なインターリーブ処 理を行うことができるようになる。
[0199] 本発明の並列インターリーバの一つの態様は、前記 2次元配列のデータ構造にお ける各行の入力データを、同じ行のデータはその行番号に対応するメモリバンクに書 き込むようにして、定められたメモリバンクに書き込むための書き込みアドレスを生成 する書き込み制御手段を具備し、 2次元配列のデータ構造における行に対する書き 込み先のメモリバンクの対応を一意に定め、かつ、インターリーブ後の順位の差と行 数との最大公約数を越えな 、 1な 、し複数の行を 1つのメモリバンクに対応付ける書 き込みアドレスを生成する、構成を採る。
[0200] この構成によれば、同時に読み出すデータ数が行数より少ない場合に、バンクメモ リ数を少なくできるので、並列インターリーバを、より小規模な回路で実現することが でさるよう〖こなる。
[0201] 本発明の並列インターリーバの一つの態様は、前記書き込み制御手段は、前記同 時に読み出すデータと同数の第 1の行番号の組を生成する行カウンタと、前記同時 に読み出すデータと同数の第 1の列番号の組を生成する列カウンタとを備え、前記 第 1の行番号の組により書き込み先バンクを決定すると共に、前記第 1の列番号の組 より書き込みアドレスを算出し、前記読み出し制御手段は、いずれの 2つについても、 差を行数で除した余りが 1以上となるような複数のデータ順位に対するインターリーブ アドレスを複数生成するインターリーブアドレス生成手段と、前記インターリーブァドレ スに対し第 2の行番号の組及び第 2の列番号の組を一意に算出する行列番号決定 手段と、前記第 2の列番号の組を読み出しアドレスとし、前記第 2の行番号の組により 読み出し元バンクを決定すると共に前記読み出しアドレスを該当する読み出し元バン クに送出するアドレス転送手段と、を具備する構成を採る。
[0202] 本発明の並列インターリーバの一つの態様は、前記読み出し制御手段は、前記ィ ンターリーブ後の順位の差を行数で除した余りを行オフセットとして求め、当該行オフ セットぶんずつオフセットした、前記メモリバンク分の行番号力 なる行番号セットを、 行間並び替えパターンに基づいて変換し、変換後の行番号セットを前記メモリの出 力側に設けられた出力選択手段にバンク選択信号として送出するバンク選択信号生 成手段と、列番号セットと、前記バンク選択信号生成手段により求められた変換後の 行番号セットとを用いて、行内並べ替えパターンを生成して、そのパターンを読み出 しアドレスとして前記メモリの該当するメモリバンクに送出する読み出しアドレス生成手 段と、を具備する構成を採る。
[0203] この構成によれば、読み出しアドレス生成手段とバンク選択信号生成手段とによつ て、メモリバンク間で同時に読み出す 2つ以上のデータについて、いずれの 2つ以上 につ 、ても、インターリーブ後のデータ順位の差を行数で除した余りが 1以上となるよ うにデータを読み出すと ヽつた処理を実現できるようになる。
[0204] 本発明の並列インターリーバの一つの態様は、前記並列インターリーバは、前記 2 次元配列のデータ構造における各行の入力データを、所定のサブブロック単位で異 なるメモリバンクに書き込むための書き込みアドレスを生成する書き込み制御手段を 有するサブブロック分割型のインターリーバであり、前記読み出し制御手段は、前記 インターリーブ後の順位の差を行数で除した余りを行オフセットとして求め、当該行ォ フセットぶんずつオフセットした、前記メモリバンク分の行番号力 なる行番号セットを 、行間並び替えパターンに基づいて変換し、変換後の行番号セットを前記メモリの出 力側に設けられた出力選択手段にバンク選択信号として送出するバンク選択信号生 成手段と、列番号セットと、前記バンク選択信号生成手段により求められた変換後の 行番号セットとを用いて、インターリーブ後の順位の差がサブブロックサイズとなる行 内並べ替えパターンを生成し、そのパターンを読み出しアドレスとして前記メモリの該 当するメモリバンクに送出する読み出しアドレス生成手段と、を具備する構成を採る。
[0205] この構成によれば、サブブロック分割型のインターリーバにおいて、読み出しァドレ ス生成手段とバンク選択信号生成手段とによって、メモリバンク間で同時に読み出す 2つ以上のデータについて、いずれの 2つ以上についても、インターリーブ後のデー タ順位の差を行数で除した余りが 1以上となるようにデータを読み出す、といった処理 を実現できるようになる。
[0206] 本発明の並列インターリーバの一つの態様は、前記書き込み制御手段は、前記各 メモリバンクに書き込む入力データのサブブロックサイズを前記 2次元配列のデータ 構造における列数以上とする、書き込みアドレスを生成する、構成を採る。
[0207] この構成によれば、サブブロック型のインターリーバにおいて、 2次元配列のデータ 構造における各行の入力データを、同じ行のデータはその行番号に対応するメモリ バンクに書き込むといった処理を、メモリアクセス競合を起こすことなく行うことができ るよつになる。
[0208] 本発明の並列インターリーバの一つの態様は、前記書き込み制御手段は、前記各 メモリバンクに書き込む入力データのサブブロックサイズを前記 2次元配列のデータ 構造の列数に等しくする、書き込みアドレスを生成する、構成を採る。 [0209] この構成によれば、書き込み、読み出しともに、同一のサブブロック単位で処理を行 うことがでさるよう〖こなる。
[0210] 本発明の並列ディンターリーバの一つの態様は、上記いずれかの並列インターリ ーバの書き込みアドレスと読み出しアドレスを入れ替え、さらに入力選択手段と出力 選択手段を入れ替えることにより、インターリーブアルゴリズムの逆処理を実現する構 成を採る。
[0211] この構成によれば、上記いずれかの並列インターリーバによってインターリーブされ たデータを、メモリアクセス競合無しに、元の配列に戻すことができるようになる。
[0212] 本発明のターボデコーダの一つの態様は、上記いずれかの並列インターリーバを 具備する構成を採る。
[0213] 本発明のインターリーブ方法の一つの態様は、複数のメモリバンク力もなるメモリに 入力データを書き込み、書き込まれたデータを書き込みと異なる順序で読み出すこと により、 2次元配列型のデータ構造に対して行方向優先でデータを書き込み、各行ご とに規定される行内並び替えパターンに基づき行内並び替えを行い、行同士を並び 替え、列方向優先でデータを読み出すインターリーブアルゴリズムを実現する並列ィ ンターリーブ方法であって、それぞれ前記 2次元配列のデータ構造における別の行 において規定される複数の行内並び替えパターンを生成するパターン生成ステップ と、前記パターン生成ステップで生成した前記複数の行内並び替えパターンに基づ き、複数のメモリバンク力もなり各バンクが前記 2次元配列の 1または複数の行番号と 対応付けられて 、るメモリにつ 、ての複数のアドレスを生成するアドレス生成ステップ と、を含み、前記メモリから複数のデータを同時に読み出すようにする。
[0214] 本明糸田書 ίま、 2005年 2月 3日出願の特願 2005— 28314に基づく。その内容 ίま、 全てここに含めておく。
産業上の利用可能性
[0215] 本発明の並列インターリーノ 、並列ディンターリーバ及びインターリーブ方法は、例 えば無線通信機器のターボデコーダに適用して好適である。

Claims

請求の範囲
[1] 複数のメモリバンク力 なるメモリに入力データを書き込み、書き込まれたデータを 書き込みと異なる順序で読み出すことにより、 2次元配列型のデータ構造に対して行 方向優先でデータを書き込み、各行ごとに規定される行内並び替えパターンに基づ き行内並び替えを行い、行同士を並び替え、列方向優先でデータを読み出すインタ 一リーブアルゴリズムを実現する並列インターリーバであって、
複数のメモリバンク力 なり、各バンクが前記 2次元配列の 1または複数の行番号と 対応付けられているメモリと、
それぞれ前記 2次元配列のデータ構造における別の行において規定される複数の 行内並び替えパターンを生成するパターン生成手段と、
前記パターン生成手段を内部に持ち、前記複数の行内並び替えパターンに基づき 複数の読み出しアドレスを生成する読み出し制御手段と、
を具備し、前記メモリから複数のデータを同時に読み出す
並列インターリーバ。
[2] 前記読み出し制御手段は、前記メモリバンク間で同時に読み出す 2つ以上のデー タについて、いずれの 2つ以上についても、インターリーブ後のデータ順位の差を行 数で除した余りが 1以上となるように、前記複数のメモリバンク力 データを読み出す 請求項 1に記載の並列インターリーバ。
[3] 前記インターリーブアルゴリズムは、入力データのデータサイズが前記 2次元配列よ り小さ 、場合、前記入力データにダミーデータを付加してインターリーブ処理を行つ た後、ダミーデータを取り除くインターリーブアルゴリズムであり、
前記並列インターリーバは、さらに、前記複数のアドレスのうち、前記ダミーデータ に対応する 0ないし複数個の無効アドレスを判別する無効アドレス判定部を具備する 請求項 1に記載の並列インターリーバ。
[4] 前記読み出し制御手段は、前記メモリバンク間で読み出す 2つ以上のデータにつ いて、いずれの 2つ以上についても、ダミーデータ除去前の順位の差を行数で除した 余りが 1以上となるように、前記複数のメモリバンク力 データを読み出す
請求項 3に記載の並列インターリーバ。
[5] 前記 2次元配列のデータ構造における各行の入力データを、同じ行のデータはそ の行番号に対応するメモリバンクに書き込むようにして、定められたメモリバンクに書 き込むための書き込みアドレスを生成する書き込み制御手段を具備し、
当該書き込み制御手段は、 2次元配列のデータ構造における各行と、書き込み先 バンクとの対応が、一対一の対応となる書き込みアドレスを生成する
請求項 1に記載の並列インターリーバ。
[6] 前記 2次元配列のデータ構造における各行の入力データを、同じ行のデータはそ の行番号に対応するメモリバンクに書き込むようにして、定められたメモリバンクに書 き込むための書き込みアドレスを生成する書き込み制御手段を具備し、
当該書き込み制御手段は、 2次元配列のデータ構造における行に対する書き込み 先のメモリバンクの対応を一意に定め、かつ、インターリーブ後の順位の差と行数と の最大公約数を越えない 1ないし複数の行を 1つのメモリバンクに対応付ける書き込 みアドレスを生成する
請求項 1に記載の並列インターリーバ。
[7] 前記 2次元配列のデータ構造における各行の入力データを、同じ行のデータはそ の行番号に対応するメモリバンクに書き込むようにして、定められたメモリバンクに書 き込むための書き込みアドレスを生成する書き込み制御手段を具備し、
当該書き込み制御手段は、
前記同時に読み出すデータと同数の第 1の行番号の組を生成する行カウンタと、前 記同時に読み出すデータと同数の第 1の列番号の組を生成する列カウンタとを備え 、前記第 1の行番号の組により書き込み先バンクを決定すると共に、前記第 1の列番 号の組より書き込みアドレスを算出し、
前記読み出し制御手段は、
いずれの 2つについても、差を行数で除した余りが 1以上となるような複数のデータ 順位に対するインターリーブアドレスを複数生成するインターリーブアドレス生成手段 と、前記インターリーブアドレスに対し第 2の行番号の組及び第 2の列番号の組を一 意に算出する行列番号決定手段と、前記第 2の列番号の組を読み出しアドレスとし、 前記第 2の行番号の組により読み出し元バンクを決定すると共に前記読み出しァドレ スを該当する読み出し元バンクに送出するアドレス転送手段と、を具備する 請求項 1に記載の並列インターリーバ。
[8] 前記読み出し制御手段は、
前記インターリーブ後の順位の差を行数で除した余りを行オフセットとして求め、当 該行オフセットぶんずつオフセットした、前記メモリバンク分の行番号力 なる行番号 セットを、行間並び替えパターンに基づいて変換し、変換後の行番号セットを前記メ モリの出力側に設けられた出力選択手段にバンク選択信号として送出するバンク選 択信号生成手段と、
列番号セットと、前記バンク選択信号生成手段により求められた変換後の行番号セ ットとを用いて、行内並べ替えパターンを生成して、そのパターンを読み出しアドレス として前記メモリの該当するメモリバンクに送出する読み出しアドレス生成手段と を具備する請求項 1に記載の並列インターリーバ。
[9] 前記並列インターリーバは、前記 2次元配列のデータ構造における各行の入力デ ータを、所定のサブブロック単位で異なるメモリバンクに書き込むための書き込みアド レスを生成する書き込み制御手段を有するサブブロック分割型のインターリーバであ り、
前記読み出し制御手段は、
前記インターリーブ後の順位の差を行数で除した余りを行オフセットとして求め、当 該行オフセットぶんずつオフセットした、前記メモリバンク分の行番号力 なる行番号 セットを、行間並び替えパターンに基づいて変換し、変換後の行番号セットを前記メ モリの出力側に設けられた出力選択手段にバンク選択信号として送出するバンク選 択信号生成手段と、
列番号セットと、前記バンク選択信号生成手段により求められた変換後の行番号セ ットとを用いて、インターリーブ後の順位の差がサブブロックサイズとなる行内並べ替 えパターンを生成し、そのパターンを読み出しアドレスとして前記メモリの該当するメ モリバンクに送出する読み出しアドレス生成手段と
を具備する請求項 1に記載の並列インターリーバ。
[10] 前記書き込み制御手段は、前記各メモリバンクに書き込む入力データのサブブロッ クサイズを前記 2次元配列のデータ構造における列数以上とする、書き込みアドレス を生成する
請求項 9に記載の並列インターリーバ。
[11] 前記書き込み制御手段は、前記各メモリバンクに書き込む入力データのサブブロッ クサイズを前記 2次元配列のデータ構造の列数に等しくする、書き込みアドレスを生 成する
請求項 8に記載の並列インターリーバ。
[12] 請求項 1に記載の並列インターリーバの書き込みアドレスと読み出しアドレスを入れ 替え、さらに入力選択手段と出力選択手段を入れ替えることにより、インターリーブァ ルゴリズムの逆処理を実現する
並列ディンターリーバ。
[13] 請求項 1に記載の並列インターリーバを具備するターボデコーダ。
[14] 複数のメモリバンク力 なるメモリに入力データを書き込み、書き込まれたデータを 書き込みと異なる順序で読み出すことにより、 2次元配列型のデータ構造に対して行 方向優先でデータを書き込み、各行ごとに規定される行内並び替えパターンに基づ き行内並び替えを行い、行同士を並び替え、列方向優先でデータを読み出すインタ 一リーブアルゴリズムを実現する並列インターリーブ方法であって、
前記 2次元配列のデータ構造における別の行において規定される複数の行内並び 替えパターンを生成するパターン生成ステップと、
前記パターン生成ステップで生成した前記複数の行内並び替えパターンに基づき 、複数のメモリバンク力 なり各バンクが前記 2次元配列の 1または複数の行番号と対 応付けられているメモリについての複数の読み出しアドレスを生成する読み出し制御 ステップと、
を含み、前記メモリから複数のデータを同時に読み出す
インターリーブ方法。
PCT/JP2006/301864 2005-02-03 2006-02-03 並列インターリーバ、並列デインターリーバ及びインターリーブ方法 WO2006082923A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN2006800040360A CN101116249B (zh) 2005-02-03 2006-02-03 并行交织器、并行解交织器以及交织方法
JP2007501644A JP4848359B2 (ja) 2005-02-03 2006-02-03 並列インターリーバ、並列デインターリーバ及びインターリーブ方法
EP06713007A EP1850486A4 (en) 2005-02-03 2006-02-03 PARALLEL INTERLACER, PARALLEL DISINTERLACER AND INTERLACING METHOD

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005028314 2005-02-03
JP2005-028314 2005-02-03

Publications (1)

Publication Number Publication Date
WO2006082923A1 true WO2006082923A1 (ja) 2006-08-10

Family

ID=36777305

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/301864 WO2006082923A1 (ja) 2005-02-03 2006-02-03 並列インターリーバ、並列デインターリーバ及びインターリーブ方法

Country Status (5)

Country Link
EP (1) EP1850486A4 (ja)
JP (1) JP4848359B2 (ja)
KR (1) KR100912156B1 (ja)
CN (1) CN101116249B (ja)
WO (1) WO2006082923A1 (ja)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007150686A (ja) * 2005-11-28 2007-06-14 Nec Corp ターボ復号器及びそれを備えた通信システム
JP2008092571A (ja) * 2006-10-03 2008-04-17 Motorola Inc データを符号化および復号する方法ならびに装置
JP2008118628A (ja) * 2006-10-12 2008-05-22 Nec Electronics Corp 誤り訂正符号復号回路
JP2008135813A (ja) * 2006-11-27 2008-06-12 Fujitsu Ltd ターボ復号器及びターボ復号方法
JP2008141756A (ja) * 2006-11-30 2008-06-19 Motorola Inc データを符号化および復号するための方法および装置
JP2009176409A (ja) * 2008-01-22 2009-08-06 Agere Systems Inc 複雑さを減らされたmap検出の方法および装置
JP2010508790A (ja) * 2006-11-01 2010-03-18 クゥアルコム・インコーポレイテッド 高データレートのためのターボインターリーバ
JP2011504704A (ja) * 2007-11-26 2011-02-10 モトローラ・インコーポレイテッド ベクトル化されたターボ復号器のためのデータ・インターリーブ回路および方法
EP2306654A2 (en) 2009-09-30 2011-04-06 Fujitsu Limited Turbo decoding device and communication device
JP2011515994A (ja) * 2008-03-28 2011-05-19 クゥアルコム・インコーポレイテッド マルチバンクllrバッファを含むデインターリーブ機構
US8010867B2 (en) 2006-10-12 2011-08-30 Renesas Electronics Corporation Error correction code decoding device
CN102170333A (zh) * 2011-05-17 2011-08-31 中兴通讯股份有限公司 一种交织地址的并行计算方法及系统
JP2012191668A (ja) * 2007-06-19 2012-10-04 Panasonic Corp 集積回路
JP2013509824A (ja) * 2009-10-29 2013-03-14 クゥアルコム・インコーポレイテッド 2次置換多項式インタリーバを備えたlteターボ・デコーダのためのapp(aprioriprobability:先験確率)ストレージ設計
KR101290472B1 (ko) 2006-11-22 2013-07-26 삼성전자주식회사 이동 통신 시스템에서 병렬 복호 방법 및 장치
JP2013532924A (ja) * 2010-09-25 2013-08-19 中▲興▼通▲訊▼股▲フン▼有限公司 Turbo符号並行インターリーバ及びその並行インターリーブ方法
US8614977B2 (en) 2010-05-11 2013-12-24 Qualcomm Incorporated Method and apparatus for parallel de-interleaving of LTE interleaved data
WO2014097531A1 (ja) * 2012-12-19 2014-06-26 日本電気株式会社 アクセス競合解決処理回路、データ処理装置及びアクセス競合解決方法
US9086959B2 (en) 2009-10-13 2015-07-21 Samsung Electronics Co., Ltd. Apparatus to access multi-bank memory
EP2097983B1 (en) * 2007-10-15 2016-01-06 Cisco Technology, Inc. Receiver, interleaving and deinterleaving circuit and method
JP2018207386A (ja) * 2017-06-08 2018-12-27 三菱電機株式会社 レートデマッチング及びデインターリーブ回路
CN111478750A (zh) * 2020-03-12 2020-07-31 普联技术有限公司 一种数据并行交织方法、终端设备及计算机存储介质
US11290130B2 (en) 2018-11-07 2022-03-29 Telefonaktiebolaget Lm Ericsson (Publ) Optimized implementation of (de-)interleaving and rate (de-)matching for 3GPP new radio

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8356232B2 (en) 2006-10-06 2013-01-15 Motorola Mobility Llc Method and apparatus for encoding and decoding data
KR101297563B1 (ko) 2007-11-15 2013-08-19 삼성전자주식회사 스토리지 관리 방법 및 관리 시스템
CN101345604B (zh) * 2008-08-15 2012-03-21 北京理工大学 一种行列式分组交织器的并行实现方法
CN101882970A (zh) * 2009-05-06 2010-11-10 中国科学院微电子研究所 多模式的交织与解交织地址生成方法及装置
JP5477465B2 (ja) 2009-09-16 2014-04-23 日本電気株式会社 インタリーバ及びインタリーブ方法
CN102064910A (zh) * 2009-11-13 2011-05-18 傲世通科技(苏州)有限公司 混合自动重传请求比特收集和交织的方法和装置
CN102316059A (zh) * 2010-07-05 2012-01-11 中国科学院微电子研究所 一种ofdm系统的交织方法和装置
FR2987527B1 (fr) * 2012-02-23 2014-02-21 Univ Bretagne Sud Dispositif auto-configurable d'entrelacement/desentrelacement de trames de donnees
CN103780341B (zh) * 2013-12-31 2017-02-08 上海无线通信研究中心 基于并行编码与并行交织的无线通信传输方法
KR101558172B1 (ko) 2014-10-14 2015-10-08 숭실대학교산학협력단 오류 분산을 위한 인터리빙 방법 및 장치, 이를 수행하기 위한 기록매체
CN105790776A (zh) * 2014-12-18 2016-07-20 深圳市中兴微电子技术有限公司 3G协议的turbo码并行译码方法及装置
CN109842461B (zh) * 2017-11-24 2022-08-26 山东协力合智通信科技有限公司 数据交织方法和装置、交织数据解交织方法和装置
KR102445674B1 (ko) 2017-12-18 2022-09-22 삼성전자주식회사 선택적으로 메모리를 부팅시키도록 구성되는 램 컨트롤러 및 그 동작 방법
WO2020077640A1 (zh) * 2018-10-19 2020-04-23 华为技术有限公司 一种存储方法及极化码接收设备
CN109889311B (zh) * 2019-03-25 2020-06-12 西安电子科技大学 基于组合编码的间隙信道通信方法
CN111628787B (zh) * 2020-05-25 2022-03-22 武汉高德红外股份有限公司 一种无冗余数据的卷积交织与解交织fpga实现方法和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003500885A (ja) * 1999-05-19 2003-01-07 サムスン エレクトロニクス カンパニー リミテッド ターボインターリービング装置及び方法
JP2004129240A (ja) * 2002-09-30 2004-04-22 Lucent Technol Inc インタリーブド・アドレスを生成するための方法および装置
JP2004164641A (ja) * 2002-11-12 2004-06-10 Hewlett-Packard Development Co Lp メモリバンクへのアドレスのマッピングをするメモリコントローラ
US6775800B2 (en) 2000-01-03 2004-08-10 Icoding Technology, Inc. System and method for high speed processing of turbo codes
JP2004531138A (ja) * 2001-05-11 2004-10-07 クゥアルコム・インコーポレイテッド ターボ復号器のためのバッファアーキテクチャ

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1601109B1 (en) * 1997-07-30 2010-04-21 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
JP3399904B2 (ja) * 2000-03-17 2003-04-28 松下電器産業株式会社 インタリーブアドレス生成装置
US6845482B2 (en) * 2001-02-28 2005-01-18 Qualcomm Incorporated Interleaver for 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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003500885A (ja) * 1999-05-19 2003-01-07 サムスン エレクトロニクス カンパニー リミテッド ターボインターリービング装置及び方法
US6775800B2 (en) 2000-01-03 2004-08-10 Icoding Technology, Inc. System and method for high speed processing of turbo codes
JP2004531138A (ja) * 2001-05-11 2004-10-07 クゥアルコム・インコーポレイテッド ターボ復号器のためのバッファアーキテクチャ
JP2004129240A (ja) * 2002-09-30 2004-04-22 Lucent Technol Inc インタリーブド・アドレスを生成するための方法および装置
JP2004164641A (ja) * 2002-11-12 2004-06-10 Hewlett-Packard Development Co Lp メモリバンクへのアドレスのマッピングをするメモリコントローラ

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CHARLES THOMAS ET AL.: "Integrated Circuits for Channel Coding in 3G Cellular Mobile Wireless Systems", IEEE COMMUNICATIONS MAGAZINE, August 2003 (2003-08-01), pages 150 - 159
GIULIETTI, A. ET AL.: "A 8OMb/s low-power scalable turbo codec core", CUSTOM INTEGRATED CIRCUITS CONFERENCE, 2002. PROCEEDINGS OF THE IEEE, 2002, pages 389 - 392, XP002229240
See also references of EP1850486A4 *
TARABLE, A.; BENEDETTO, S.: "Mapping interleaving laws to parallel turbo decoder architectures", COMMUNICATIONS LETTERS, IEEE, vol. 8, no. 3, March 2004 (2004-03-01), pages 162 - 164

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007150686A (ja) * 2005-11-28 2007-06-14 Nec Corp ターボ復号器及びそれを備えた通信システム
JP2008092571A (ja) * 2006-10-03 2008-04-17 Motorola Inc データを符号化および復号する方法ならびに装置
US8010867B2 (en) 2006-10-12 2011-08-30 Renesas Electronics Corporation Error correction code decoding device
JP2008118628A (ja) * 2006-10-12 2008-05-22 Nec Electronics Corp 誤り訂正符号復号回路
US8370713B2 (en) 2006-10-12 2013-02-05 Renesas Electronics Corporation Error correction code decoding device
JP2010508790A (ja) * 2006-11-01 2010-03-18 クゥアルコム・インコーポレイテッド 高データレートのためのターボインターリーバ
US8583983B2 (en) 2006-11-01 2013-11-12 Qualcomm Incorporated Turbo interleaver for high data rates
KR101290472B1 (ko) 2006-11-22 2013-07-26 삼성전자주식회사 이동 통신 시스템에서 병렬 복호 방법 및 장치
JP2008135813A (ja) * 2006-11-27 2008-06-12 Fujitsu Ltd ターボ復号器及びターボ復号方法
JP2008141756A (ja) * 2006-11-30 2008-06-19 Motorola Inc データを符号化および復号するための方法および装置
US10512081B2 (en) 2007-06-19 2019-12-17 Panasonic Corporation Receiving method and apparatus
US11438891B2 (en) 2007-06-19 2022-09-06 Panasonic Holdings Corporation Receiving apparatus and method thereof
JP2012191668A (ja) * 2007-06-19 2012-10-04 Panasonic Corp 集積回路
US11943752B2 (en) 2007-06-19 2024-03-26 Panasonic Holdings Corporation Receiving apparatus and method thereof
US10952211B2 (en) 2007-06-19 2021-03-16 Panasonic Corporation Transmitting apparatus and method thereof
JP2014064311A (ja) * 2007-06-19 2014-04-10 Panasonic Corp 送信装置、データ送信方法及び集積回路
EP2097983B1 (en) * 2007-10-15 2016-01-06 Cisco Technology, Inc. Receiver, interleaving and deinterleaving circuit and method
JP2011504704A (ja) * 2007-11-26 2011-02-10 モトローラ・インコーポレイテッド ベクトル化されたターボ復号器のためのデータ・インターリーブ回路および方法
JP2013150365A (ja) * 2007-11-26 2013-08-01 Motorola Mobility Llc ベクトル化されたターボ復号器のためのデータ・インターリーブ回路および方法
JP2009176409A (ja) * 2008-01-22 2009-08-06 Agere Systems Inc 複雑さを減らされたmap検出の方法および装置
US8908812B2 (en) 2008-01-22 2014-12-09 Agere Systems Llc Methods and apparatus for map detection with reduced complexity
JP2011515994A (ja) * 2008-03-28 2011-05-19 クゥアルコム・インコーポレイテッド マルチバンクllrバッファを含むデインターリーブ機構
US8572332B2 (en) 2008-03-28 2013-10-29 Qualcomm Incorporated De-interleaving mechanism involving a multi-banked LLR buffer
JP2013128301A (ja) * 2008-03-28 2013-06-27 Qualcomm Inc マルチバンクllrバッファを含むデインターリーブ機構
JP2013255244A (ja) * 2008-03-28 2013-12-19 Qualcomm Inc マルチバンクllrバッファを含むデインターリーブ機構
US8443253B2 (en) 2009-09-30 2013-05-14 Fujitsu Limited Turbo decoding device and communication device
EP2306654A2 (en) 2009-09-30 2011-04-06 Fujitsu Limited Turbo decoding device and communication device
US9086959B2 (en) 2009-10-13 2015-07-21 Samsung Electronics Co., Ltd. Apparatus to access multi-bank memory
JP2013509824A (ja) * 2009-10-29 2013-03-14 クゥアルコム・インコーポレイテッド 2次置換多項式インタリーバを備えたlteターボ・デコーダのためのapp(aprioriprobability:先験確率)ストレージ設計
US8614977B2 (en) 2010-05-11 2013-12-24 Qualcomm Incorporated Method and apparatus for parallel de-interleaving of LTE interleaved data
JP2013532924A (ja) * 2010-09-25 2013-08-19 中▲興▼通▲訊▼股▲フン▼有限公司 Turbo符号並行インターリーバ及びその並行インターリーブ方法
CN102170333A (zh) * 2011-05-17 2011-08-31 中兴通讯股份有限公司 一种交织地址的并行计算方法及系统
CN102170333B (zh) * 2011-05-17 2016-01-20 中兴通讯股份有限公司 一种交织地址的并行计算方法及系统
WO2014097531A1 (ja) * 2012-12-19 2014-06-26 日本電気株式会社 アクセス競合解決処理回路、データ処理装置及びアクセス競合解決方法
JP2018207386A (ja) * 2017-06-08 2018-12-27 三菱電機株式会社 レートデマッチング及びデインターリーブ回路
US11290130B2 (en) 2018-11-07 2022-03-29 Telefonaktiebolaget Lm Ericsson (Publ) Optimized implementation of (de-)interleaving and rate (de-)matching for 3GPP new radio
US11811423B2 (en) 2018-11-07 2023-11-07 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 普联技术有限公司 一种数据并行交织方法、终端设备及计算机存储介质
CN111478750A (zh) * 2020-03-12 2020-07-31 普联技术有限公司 一种数据并行交织方法、终端设备及计算机存储介质

Also Published As

Publication number Publication date
KR20070093447A (ko) 2007-09-18
CN101116249A (zh) 2008-01-30
KR100912156B1 (ko) 2009-08-14
EP1850486A4 (en) 2008-05-07
EP1850486A1 (en) 2007-10-31
CN101116249B (zh) 2010-10-13
JPWO2006082923A1 (ja) 2008-06-26
JP4848359B2 (ja) 2011-12-28

Similar Documents

Publication Publication Date Title
WO2006082923A1 (ja) 並列インターリーバ、並列デインターリーバ及びインターリーブ方法
TWI406509B (zh) 渦輪解碼器及解碼渦輪編碼信號的方法
EP1450494B1 (en) Interleaving method and apparatus with parallel access in linear and interleaved addressing order
US20100318878A1 (en) Communications channel parallel interleaver and de-interleaver
US8438434B2 (en) N-way parallel turbo decoder architecture
KR20120014905A (ko) Lte에서 병렬 터보 디코딩의 방법 및 장치
WO2003044965A1 (fr) Generateur d&#39;ordre d&#39;entrelacement, entrelaceur, turbo codeur et turbo decodeur
Dobkin et al. Parallel interleaver design and VLSI architecture for low-latency MAP turbo decoders
US6625762B1 (en) Interleaving device and method for turbocoding and turbodecoding
AU2003256099B2 (en) Turbo decoding apparatus and method
WO2012083714A1 (zh) Turbo码数据交织处理方法和用于交织turbo码数据的交织器
Chang A low-cost dual-mode deinterleaver design
Upadhyaya et al. Design of a novel FSM based reconfigurable multimode interleaver for WLAN application
Wang et al. High-throughput Contention-Free concurrent interleaver architecture for multi-standard turbo decoder
US8843807B1 (en) Circular pipeline processing system
US8923315B2 (en) Packet router having a hierarchical buffer structure
KR100884098B1 (ko) 다중 대역 직교 주파수 분할 다중 접속 통신 시스템에서혼합 기수 시스템을 이용한 블록 인터리빙 장치 및 방법
Wang et al. Parallel interleaver architecture with new scheduling scheme for high throughput configurable turbo decoder
Karim et al. High-throughput turbo decoder using pipelined parallel architecture and collision-free interleaver
EP2323302A1 (en) Improved HARQ
US9015551B2 (en) Decoding apparatus with de-interleaving efforts distributed to different decoding phases and related decoding method thereof
KR100519335B1 (ko) 채널 인터리빙 방법
Kim et al. Low-complexity parallel QPP interleaver based on permutation patterns
KR101614482B1 (ko) 터보 인터리버의 인터리빙 주소 결정 장치 및 방법
KR101073636B1 (ko) 저밀도 패리티 검사 부호를 이용한 복호화 장치

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2007501644

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2006713007

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 200680004036.0

Country of ref document: CN

Ref document number: 1020077018009

Country of ref document: KR

NENP Non-entry into the national phase

Ref country code: DE

WWP Wipo information: published in national office

Ref document number: 2006713007

Country of ref document: EP