US20040255217A1 - Low power operation of an address interleaver - Google Patents
Low power operation of an address interleaver Download PDFInfo
- Publication number
- US20040255217A1 US20040255217A1 US10/447,113 US44711303A US2004255217A1 US 20040255217 A1 US20040255217 A1 US 20040255217A1 US 44711303 A US44711303 A US 44711303A US 2004255217 A1 US2004255217 A1 US 2004255217A1
- Authority
- US
- United States
- Prior art keywords
- interleaved address
- interleaved
- address
- generated
- cycle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2789—Interleaver providing variable interleaving, e.g. variable block sizes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2703—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
- H03M13/271—Row-column interleaver with permutations, e.g. block interleaving with inter-row, inter-column, intra-row or intra-column permutations
- H03M13/2714—Turbo interleaver for 3rd generation partnership project [3GPP] universal mobile telecommunications systems [UMTS], e.g. as defined in technical specification TS 25.212
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/276—Interleaving address generation
- H03M13/2764—Circuits therefore
Definitions
- the present invention relates to the field of turbo coding, and more particularly, a low power operation of address interleaving in the turbo coding process.
- Turbo coding is one of the most important components for data transmission in the third generation (3G) wireless standards such as the Universal mobile telephone standard (UMTS).
- 3G Third generation
- UMTS Universal mobile telephone standard
- Turbo coding provides forward error correction with exceptional coding gain, and provides for almost error-free data transmissions for all but the lowest signal-to-noise ratio (SNR) environments.
- SNR signal-to-noise ratio
- the key component of the turbo coding structure is the interleaver which permutes the data sequence between the two constituent decoders. Research has shown that the overall performance of turbo codes are directly related to the “randomness” of the interleaver between the blocks.
- the 3GPP standard defines the interleaver for turbo codes as a function based on the block sizes in the range of 40 to 5114 bits.
- the 3GPP interleaver uses a basic block interleaver structure with a complex inter-row and intra-row permutation to generate a pseudo-random interleaving pattern. While these permutations provide excellent algorithmic performance, they severely complicate the hardware implementation of the interleaver.
- An alternative to using a large memory based hardware address interleaver in a turbo decoder is to generate an interleaved address on the fly.
- an invalid address is generated, a discontinuous stream of interleaved addresses is created. Namely, there will be a cycle of operation in which no valid address is generated.
- the present invention provides a method and apparatus for generating interleaved addresses on the fly in which a continuous stream of interleaved addresses is produced. Furthermore, the present invention provides a low power consumption method and apparatus for producing the continuous stream of interleaved address.
- the low power interleaved address generation architecture of the present invention includes a first interleaved address generator and a second interleaved address generator operating concurrently.
- a controller controls a selector to selectively output the first and second interleaved addresses such that for each cycle of operation, a valid interleaved address is output.
- the controller also disables the second interleaved address generator when the second interleaved address is not needed to produce a continuous stream of interleaved addresses. In this manner, power consumption is reduced while still producing a continuous stream of interleaved addresses.
- FIG. 1 shows an overall architecture for the address interleaver structure
- FIG. 2 shows an architecture for implementing the mod decomposition according to the present invention
- FIG. 3 illustrates the modulo summation block of FIG. 2 in greater detail
- FIG. 4 illustrates an embodiment of a modulo adder in FIG. 2
- FIG. 5 shows a simple example of the interleaving process and how invalid addresses are generated
- FIG. 6 shows the address interleaver architecture that generates both the current and next address at the same time
- FIG. 7 illustrates a low power address interleaver architecture according to an embodiment of the present invention that provides a continuous stream of valid interleaved addresses
- FIG. 8 illustrates an exemplary operation of the architecture of FIG. 7.
- a method for producing an interleaved address may include several steps.
- An exemplary method includes the steps of formatting the input data bits into a rectangular matrix, performing intra-row and inter-row permutations on the rectangular matrix, and outputting the bits from the rectangular matrix with pruning.
- the number of columns in the block interleaver is determined by calculating the minimum prime number that can solve equation (2).
- p ⁇ 53 , K ⁇ [ 481 , 530 ] min ⁇ ⁇ p ⁇ ( p + 1 ) - K R ⁇ 0 , others ( 2 )
- C ⁇ p - 1 , ( p - K R ⁇ 0 ) ⁇ ⁇ and ⁇ ⁇ ( p - 1 - K R ⁇ 0 ) p , ( p - K R ⁇ 0 ) ⁇ ⁇ and ⁇ ⁇ ( p - 1 - K R ⁇ 0 ) p + 1 , others ⁇ ( 3 )
- R, p and C the data can be written into a block interleaver table in sequential order, row by row. Note that the last row written may only be partially filled, so the rest of the row is loaded with zeroes.
- the next step is to compute the intra-row sequence.
- the primitive root associated with the precalculated value of p is selected from Table 1 below based on the value of p. TABLE 1 Prime numbers p and the associated primitive root v p v p v p v p v p v 7 3 4 5 10 2 15 5 22 3 11 2 5 2 10 5 16 2 22 2 13 2 5 2 10 2 16 5 22 6 17 3 6 2 10 6 17 2 23 3 19 2 6 2 11 3 17 2 23 7 23 5 7 7 12 3 18 2 24 7 29 2 7 5 13 2 19 19 25 6 31 3 7 3 13 3 19 5 25 3 37 2 8 2 13 2 19 2 41 6 8 3 14 2 19 3 43 3 9 5 15 6 21 2
- Pat 1 19, 9, 14, 4, 0, 2, 5, 7, 12 18, 10, 8, 13, 17, 3, 1, 16, 6, 15,
- Pat 2 19, 9, 14, 4, 0, 2, 5, 7, 12, 18, 16, 13, 17, 15, 3, 1, 6, 11,
- Pat 4 3, 2, 1, 0
- U j (i) is the input bit position of the i-th output after the permutation of the j-th row.
- U j (i) is the input bit position of the i-th output after the permutation of the j-th row.
- U j (i) is the input bit position of the i-th output after the permutation of the j-th row.
- the final step concerns the pruning of addresses that resulted from the partially filled row mentioned previously. If the generated address is larger than the current block length then the generated address is discarded.
- FIG. 1 shows an overall architecture for the address interleaver structure.
- the other components forming the turbo decoder have not been show for the sake of clarity, and are well-known in the art. Accordingly, it will be appreciated, particularly from the description of the general methodology above and the following description, that the generation of the various inputs to this overall architecture are well-known.
- the architecture is partitioned into several sections, and follows closely from the 3GPP algorithm.
- a first look-up table 10 stores the inter-row sequence numbers, and outputs one of the inter-row sequence numbers using a received row index j as an address.
- a mod computation device 12 generates an intra-row permutation address by computing (i*r j ) mod (p ⁇ 1).
- the intra-row permutation address, zero and p are supplied to a selector 14 .
- the selector 14 normally outputs the intra-row permutation address, but when the number of rows and columns equals the block size, the first and last column are swapped by the selector 14 when the last row is being processed to maintain relative ordering of the number patterns from block size to block size.
- a second look-up table 16 stores the intra-row permutation sequences S (see equation 4), and outputs one of the intra-row permutation sequences using the output from the selector 14 as an address.
- a multiplier 18 receives the intra-row permutation sequence from the second look-up table 16 and an inter-row permutation pattern from a third look-up table 20 .
- the third look-up table 20 stores the inter-row permutation patterns discussed above, and outputs one of the inter-row permutation patterns based on the block size K.
- the product generated by the multiplier 18 is a generated interleaved address.
- a comparator 22 makes sure the resulting address is within the range of K, the block size, and outputs a valid address signal if the interleaved address is in the range of K. If the address is outside the range, the interleaver architecture must wait another cycle to provide the next valid address.
- the generated interleaved address is stored in a register 24 that is clocked by a clock of the turbo decoder.
- the components forming the architecture of FIG. 1 are straightforward, consisting of either memories, registers, or simple arithmetic units. Of these components, the mod computation device 12 tends to have the greatest complexity and non-deterministic computation time. A methodology of performing the mod operation that reduces complexity and computation time will now be described.
- Equation (7) shows that the mod of a number can be broken down into a summation of mod operations onto the individual components that make up the number.
- equation (7) breaks up the dividend into its binary components and computes the mod of each power of two number. Each of the individual results are summed together, and then a final mod operation is performed.
- FIG. 2 shows an architecture for implementing the mod decomposition of equation (7).
- a multiplier 28 multiplies the column index and the inter-row sequence number to produce a binary product y.
- the power of two mod calculations are pre-computed and stored into registers 30 . These values are only changed when the block size changes, and only have to be downloaded at the beginning of the block.
- the binary product y represents the dividend of the mod operation.
- Each binary component i.e., bit
- the least significant binary component y 0 and the zeroth order power of two mod value are input by one of the AND gates 32
- the next significant binary component y 1 and the first order power of two mod value are input by the next AND gate 32 , etc.
- the AND gates 32 logically AND the inputs to generate intermediate mod values a 0 , a 1 , . . . a x ⁇ 1 , which are passed to a modulo summation block 34 .
- FIG. 3 illustrates the modulo summation block 34 in greater detail.
- the modulo summation block 34 has a tree structure to minimize the propagation delay.
- the modulo summation block 34 has a base level 34 , a number of intermediate levels 42 and a final level 44 .
- Each level includes one or more modulo adders 36 .
- Each modulo adder adds two input numbers together and generates the mod p ⁇ 1 result of the sum.
- the base level 40 includes a modulo adder 36 for every two intermediate mod values a
- the intermediate levels 42 include a modulo adder 36 for every two modulo adders 36 in the previous level
- the final level 44 includes a single modulo adder 36 .
- the number of intermediate levels 42 is a number necessary to generate two outputs to the final level 44 .
- the modulo adders 36 perform two functions. First, they add the two input numbers together. Second, they check the sum and determines if the sum lies outside of the mod field. If so, the output value is wrapped around relative to the mod field.
- FIG. 4 illustrates an embodiment of a modulo adder 36 . As shown, the modulo adder 36 includes an adder 50 adding inputs a and b, and a subtractor 52 subtracting the mod operand (e.g., p ⁇ 1) from the sum of a+b. A selector 54 selectively outputs one of a+b and (a+b) ⁇ (p ⁇ 1).
- a comparator 56 compares the value (p ⁇ 1) to the sum a+b, and controls the selector 54 to output the sum a+b if the sum a+b is less than or equal to the value (p ⁇ 1). Otherwise, the comparator 56 instructs the selector 54 to select the output of the subtractor 52 .
- a problem with interleaved address generators is that occasionally they generate addresses that are outside the valid range of the block size. When an address is generated outside of the range, the architecture produces a flag which identifies if the output is invalid, and then the architecture must wait another clock cycle before the next sequential interleaved address is valid. Over a large block size, this can create a large overhead in the turbo decoding process.
- FIG. 5 shows a simple example of the interleaving process and how invalid addresses are generated. Since the ranges of block sizes are continuous between 40 and 5114, the exact number of elements do not always fit exactly into the rectangular array defined by R and C. The values fill the array row by row, but the last row has some elements that are empty.
- both the rows and columns are permutated based on the interleaving equations, and the empty cells are spread across a row.
- the interleaver starts to retrieve source addresses, occasionally it will generate an access to an empty cell.
- the interleaver With puncturing, the interleaver does not know that it has an invalid address until it has actually calculated the final address and compared the final address with the valid range of values.
- One solution is to make sure that the address generator is actually calculating both the current address and the next address at the same time. With both addresses available, the address interleaver first checks if the current generated address is valid. If the address is valid, the current address is used, but if the current address is not valid, the architecture can immediately substitute the next address. Because the interleaver proceeds in row-by-row basis, if the current address is invalid, the next address is guaranteed to be a valid address because all of the empty spaces come from the same row.
- FIG. 6 shows the address interleaver architecture that generates both the current and next address at the same time.
- selector 14 has been deleted for the sake of clarity.
- the first look-up table 10 generates the current inter-row sequence number using the current row index j as an address and a duplicate first look-up table 10 ′ generates the next inter-row sequence number using the next row index j+1.
- the mod computation device 12 generates the current intra-row permutation address by computing (i*r j ) mod (p ⁇ 1).
- another mod computation device 12 ′ generates the next intra-row permutation address by computing (i*r j+1 ) mod (p ⁇ 1).
- the mod computation devices 12 and 12 ′ employ the methodology and architecture discussed above with respect to FIGS. 2 and 3.
- a second look-up table 16 ′ stores the intra-row permutation sequences S (see equation 4).
- the second look-up table 16 ′ is a two input port (A and B), two output port (A and B) memory, and outputs the current and next intra-row permutation sequences using the current and next intra-row permutation addresses, respectively. If a dual-port memory is not available a single memory can be used provided a double-rate clock is used to access the memory twice for every symbol required on the output, or two separate single port memories can be used.
- Multipliers 18 and 18 ′ respectively receive the current and next intra-row permutation sequences from the second look-up table 16 ′ and also receive an inter-row permutation pattern from the third look-up table 20 .
- the products generated by the multipliers 18 and 18 ′ are current and next interleaved addresses, respectively.
- the architecture of FIG. 6 represents first and second interleaved address generators 80 and 82 that, in the embodiment of FIG. 6, share a dual port memory; but as described above, the first and second interleaved address generators can be structurally independent.
- a multiplexer or selector 60 receives the current and next interleaved addresses, and selectively outputs one of the current and next interleaved addresses based on output from the comparator 22 .
- the comparator 22 makes sure the current interleaved address is within the range of K, the block size, and outputs a valid address signal if the interleaved address is in the range of K. If valid, the output from the comparator 22 causes the multiplexer 60 to output the current interleaved address. If invalid, the output from the comparator 60 causes the multiplexer 60 to select the next interleaved address. Accordingly, processing time is reduced by not having to wait for the next valid interleaved address to be generated.
- FIG. 7 illustrates a low power address interleaver architecture according to an embodiment of the present invention that provides a continuous stream of valid interleaved addresses.
- the embodiment of FIG. 7 is the same as the embodiment of FIG. 6 except that the mod computation devices 12 and 12 ′ and the second look-up table 16 ′ have enable ports; a first register 72 and a second register 74 store outputs from the multipliers 18 and 18 ′, respectively; the multiplexer 60 has been replaced with a multiplexer 70 ; and a controller 76 receives the output from the multipliers 18 and 18 ′ and controls operation of the multiplexer 70 , enablement of the first and second mod computation devices 12 and 12 ′ and enablement of the second look-up table 16 ′. Accordingly, for the sake of brevity, only these differences will be described in detail.
- the controller 76 may enable and disable operation of the either or both of the mod computation devices 12 and 12 ′ by sending control signals to the enable ports of the mod computation devices 12 and 12 ′.
- the controller 76 may also enable and disable generation of the intra-row permutation sequences for output at either or both of the output ports of the second look-up table 16 ′.
- the controller 76 disables generation of the second or next interleaved address output from the second multiplier 18 ′.
- the controller 76 may selectively enable and disable generation of the first and second interleaved addresses. Stated another way, the controller 76 may selectively enable and disable the first and second interleaved address generators 80 and 82 generating the first and second interleaved addresses, respectively.
- the components forming the disabled interleaved address generator do not operate and consume power. Accordingly, power consumption may be reduced by disabling the first and/or second interleaved address generators 80 and 82 when their operations is not required.
- the multiplexer 70 receives the generated first interleaved address at its port B, the stored first interleaved address (which is a previous interleaved address with respect to the generated first interleaved address) at its port A, and the stored second interleaved address at its port C.
- the controller 76 controls whether the multiplexer 70 outputs the interleaved address at port A, port B or port C.
- the controller 76 enables operation of both the first and second interleaved address generators 80 and 82 .
- the first and second interleaved addresses A 0 and A 1 are generated, where the second interleaved address A 1 is a next or subsequent interleaved address with respect to the first interleaved address A 0 .
- the order of the interleaved addresses is denoted by the numeral following the letter ‘A’ (for address).
- the controller 76 controls the multiplexer 70 to output the generated first interleaved address A 0 if the address is valid.
- the interleaved addresses A 0 and A 1 are also stored by the first and second registers 72 and 74 , respectively.
- the controller 76 disables the second interleaved address generator 82 . Accordingly, in the second cycle (cycle 1 ), the second interleaved address generator 82 is disabled and does not generate an interleaved address or consume power.
- the first interleaved address generator 80 is enabled and generates interleaved address A 2 .
- the controller 76 controls the multiplexer 70 to output the interleaved address A 1 at its port C, which is the stored second interleaved address A 1 . Also in cycle 1 , the controller 76 , which incorporates the comparator 22 , determines if the interleaved address A 2 is valid.
- interleaved address A 0 -A 6 are assumed valid, and the first invalid interleaved address is interleaved address A 7 . Because the interleaved address generated in cycle 2 by the first interleaved address is valid, in the next cycle (cycle 3 ), the second interleaved address generator 82 remains disabled and the first interleaved address generator 80 remains enabled. As a result, the first interleaved address generator 80 generates the interleaved address A 3 . Also, the controller 76 controls the multiplexer 70 to output the interleaved address at its port A, which is the stored first interleaved address A 2 . The operation of cycle 3 then repeats for cycles 4 - 7 .
- the controller 76 enables the second interleaved address generator 82 .
- the first and second interleaved addresses are A 8 and A 9 , respectively, are generated.
- the controller 76 controls the multiplexer 70 to output the generated first interleaved address A 8 at its port B.
- cycle 9 the operation of cycle 1 repeats.
- the controller 76 disables the second interleaved address generator 82 and controls the multiplexer 70 to output the stored second interleaved address A 9 at its port C.
- the controller 76 enables the second interleaved address generator 82 for one cycle. Because of the limited number of invalid addresses, the second interleaved address generator 82 remains idle and does not consume power for a large portion of the continuous on-the-fly interleaved address generation process. For the whole range of 3GPP block sizes of 40 to 5114, only 1.4% of the generated interleaved addresses are invalid. Consequently, the present invention achieves a great savings in power consumption by disabling the operation of the second interleaved address generator 82 when its operation is not needed to maintain a continuous stream of interleaved addresses.
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
Description
- 1. Field of the Invention
- The present invention relates to the field of turbo coding, and more particularly, a low power operation of address interleaving in the turbo coding process.
- 2. Description of Related Art
- Turbo coding is one of the most important components for data transmission in the third generation (3G) wireless standards such as the Universal mobile telephone standard (UMTS). Turbo coding provides forward error correction with exceptional coding gain, and provides for almost error-free data transmissions for all but the lowest signal-to-noise ratio (SNR) environments. The key component of the turbo coding structure is the interleaver which permutes the data sequence between the two constituent decoders. Research has shown that the overall performance of turbo codes are directly related to the “randomness” of the interleaver between the blocks.
- The 3GPP standard defines the interleaver for turbo codes as a function based on the block sizes in the range of 40 to 5114 bits. The 3GPP interleaver uses a basic block interleaver structure with a complex inter-row and intra-row permutation to generate a pseudo-random interleaving pattern. While these permutations provide excellent algorithmic performance, they severely complicate the hardware implementation of the interleaver.
- One possible architecture for a hardware address interleaver is to use a large memory which contains the entire address interleaving sequence. Thus the turbo components simply access the memory to retrieve the next interleaved address. This is the most straightforward implementation, but the entire table must be recalculated when the block size changes. While the overhead in loading the table may be acceptable for a mobile terminal, infrastructure turbo decoders may need to deal with multiple block sizes, one right after another.
- An alternative to using a large memory based hardware address interleaver in a turbo decoder, is to generate an interleaved address on the fly. However, when an invalid address is generated, a discontinuous stream of interleaved addresses is created. Namely, there will be a cycle of operation in which no valid address is generated.
- The present invention provides a method and apparatus for generating interleaved addresses on the fly in which a continuous stream of interleaved addresses is produced. Furthermore, the present invention provides a low power consumption method and apparatus for producing the continuous stream of interleaved address.
- The low power interleaved address generation architecture of the present invention includes a first interleaved address generator and a second interleaved address generator operating concurrently. A controller controls a selector to selectively output the first and second interleaved addresses such that for each cycle of operation, a valid interleaved address is output. The controller also disables the second interleaved address generator when the second interleaved address is not needed to produce a continuous stream of interleaved addresses. In this manner, power consumption is reduced while still producing a continuous stream of interleaved addresses.
- The present invention will become more fully understood from the detailed description given herein below and the accompanying drawings, wherein like elements are represented by like reference numerals, which are given by way of illustration only and thus are not limiting of the present invention and wherein:
- FIG. 1 shows an overall architecture for the address interleaver structure;
- FIG. 2 shows an architecture for implementing the mod decomposition according to the present invention;
- FIG. 3 illustrates the modulo summation block of FIG. 2 in greater detail;
- FIG. 4 illustrates an embodiment of a modulo adder in FIG. 2;
- FIG. 5 shows a simple example of the interleaving process and how invalid addresses are generated;
- FIG. 6 shows the address interleaver architecture that generates both the current and next address at the same time;
- FIG. 7 illustrates a low power address interleaver architecture according to an embodiment of the present invention that provides a continuous stream of valid interleaved addresses; and
- FIG. 8 illustrates an exemplary operation of the architecture of FIG. 7.
- Initially, the general methodology of generating an interleaved address will be described followed by a description of the general architecture for generating the interleaved address. Next, a description of the methodology for generating an interleaved address will be described. Further, an embodiment for implementing the methodology will be described. Another architecture, one for generating both a current and a next interleaved address will then be described. Afterwards, a low power interleaver architecture for generating a continuous stream of valid interleaved addresses will be described, followed by a description of a general architecture for providing a continuous stream of valid addresses.
- A method for producing an interleaved address may include several steps. An exemplary method includes the steps of formatting the input data bits into a rectangular matrix, performing intra-row and inter-row permutations on the rectangular matrix, and outputting the bits from the rectangular matrix with pruning.
- The first step is to format the input bits into a rectangular matrix. If K is the number of inputs bits in the data block to encode (i.e., the block size), the first item that needs to be found is the number of rows, R, in the basic block interleaver structure. Equation (1) demonstrates the selection process for R, wherein one of three values, 5, 10 or 20 is selected.
-
-
- Once these three variables are known, R, p and C, the data can be written into a block interleaver table in sequential order, row by row. Note that the last row written may only be partially filled, so the rest of the row is loaded with zeroes.
- The next step is to compute the intra-row sequence. To do this, the primitive root associated with the precalculated value of p is selected from Table 1 below based on the value of p.
TABLE 1 Prime numbers p and the associated primitive root v p v p v p v p v p v 7 3 4 5 10 2 15 5 22 3 11 2 5 2 10 5 16 2 22 2 13 2 5 2 10 2 16 5 22 6 17 3 6 2 10 6 17 2 23 3 19 2 6 2 11 3 17 2 23 7 23 5 7 7 12 3 18 2 24 7 29 2 7 5 13 2 19 19 25 6 31 3 7 3 13 3 19 5 25 3 37 2 8 2 13 2 19 2 41 6 8 3 14 2 19 3 43 3 9 5 15 6 21 2 - The values of p and ν serve to generate the intra-row permutation sequence s(i).
- s(i)=[ν×s(i−1)]mod p,i=1,2, . . . , (p−2),s(0)=1 (4)
- Let q0be the 1st prime integer in the sequence {qj}. {qj} is generated as follows:
- g.c.d.{q j ,p−1}=1,q j>6,q j >q (j−1), (5)
- where g.c.d. is the greatest common denominator
- {qj} is permuted to the inter-row sequence {rj} such that
- r T(j) =q j , j=0,1, . . . , R−1, (6)
- where T(j) (j=0,1,2, . . . , R−1) is the inter-row permutation pattern defined by one of the four sequences
-
Pat -
Pat -
Pat -
Pat -
- Intra-row permutations are performed as follows:
- if (C=p) then
- U j(i)=s([i×r j]mod(p−1),i=0,1,2, . . . , (p−2)., U j(p−1)=0,
- where Uj(i) is the input bit position of the i-th output after the permutation of the j-th row.
- end if
- if (C=p+1) then
- U j(i)=s([i×r j]mod(p−1),i=0,1,2, . . . , (p−2).,U j(p−1)=0 and U j(p)=p,
- where Uj(i) is the input bit position of the i-th output after the permutation of the j-th row.
- end if
- if (C=p−1) then
- U j(i)=s([i×r j]mod(p−1), i=0,1,2, . . . , (p−2).
- where Uj(i) is the input bit position of the i-th output after the permutation of the j-th row.
- end if
- The inter-row permutation based upon the pattern T(j) (j=0,1,2, . . . , R−1) is performed, where T(1) is the original row position of the j-th permuted row.
- The final step concerns the pruning of addresses that resulted from the partially filled row mentioned previously. If the generated address is larger than the current block length then the generated address is discarded.
- FIG. 1 shows an overall architecture for the address interleaver structure. The other components forming the turbo decoder have not been show for the sake of clarity, and are well-known in the art. Accordingly, it will be appreciated, particularly from the description of the general methodology above and the following description, that the generation of the various inputs to this overall architecture are well-known. The architecture is partitioned into several sections, and follows closely from the 3GPP algorithm.
- As shown, a first look-up table10 stores the inter-row sequence numbers, and outputs one of the inter-row sequence numbers using a received row index j as an address. A
mod computation device 12 generates an intra-row permutation address by computing (i*rj) mod (p−1). The intra-row permutation address, zero and p are supplied to aselector 14. Theselector 14 normally outputs the intra-row permutation address, but when the number of rows and columns equals the block size, the first and last column are swapped by theselector 14 when the last row is being processed to maintain relative ordering of the number patterns from block size to block size. - A second look-up table16 stores the intra-row permutation sequences S (see equation 4), and outputs one of the intra-row permutation sequences using the output from the
selector 14 as an address. Amultiplier 18 receives the intra-row permutation sequence from the second look-up table 16 and an inter-row permutation pattern from a third look-up table 20. The third look-up table 20 stores the inter-row permutation patterns discussed above, and outputs one of the inter-row permutation patterns based on the block size K. - The product generated by the
multiplier 18 is a generated interleaved address. Acomparator 22 makes sure the resulting address is within the range of K, the block size, and outputs a valid address signal if the interleaved address is in the range of K. If the address is outside the range, the interleaver architecture must wait another cycle to provide the next valid address. During the comparison operation, the generated interleaved address is stored in aregister 24 that is clocked by a clock of the turbo decoder. - As will be appreciated, the components forming the architecture of FIG. 1 are straightforward, consisting of either memories, registers, or simple arithmetic units. Of these components, the
mod computation device 12 tends to have the greatest complexity and non-deterministic computation time. A methodology of performing the mod operation that reduces complexity and computation time will now be described. - For a given block size K, the mod divisor p−1 is fixed. Given this pseudo-static value for p−1, the properties of mod can be taken advantage of to provide a much simpler solution. Consider equation (7) below which shows that the mod of a number can be broken down into a summation of mod operations onto the individual components that make up the number. In this case, equation (7), breaks up the dividend into its binary components and computes the mod of each power of two number. Each of the individual results are summed together, and then a final mod operation is performed.
- FIG. 2 shows an architecture for implementing the mod decomposition of equation (7). As shown, a
multiplier 28 multiplies the column index and the inter-row sequence number to produce a binary product y. As further shown, the power of two mod calculations are pre-computed and stored intoregisters 30. These values are only changed when the block size changes, and only have to be downloaded at the beginning of the block. The binary product y represents the dividend of the mod operation. Each binary component (i.e., bit) is input along with a corresponding power of two mod value by an ANDgate 32. For example, the least significant binary component y0 and the zeroth order power of two mod value are input by one of the ANDgates 32, the next significant binary component y1 and the first order power of two mod value are input by the next ANDgate 32, etc. The ANDgates 32 logically AND the inputs to generate intermediate mod values a0, a1, . . . ax−1, which are passed to amodulo summation block 34. - FIG. 3 illustrates the
modulo summation block 34 in greater detail. As shown, themodulo summation block 34 has a tree structure to minimize the propagation delay. Namely, themodulo summation block 34 has abase level 34, a number ofintermediate levels 42 and afinal level 44. Each level includes one or more moduloadders 36. Each modulo adder adds two input numbers together and generates the mod p−1 result of the sum. Accordingly, thebase level 40 includes a moduloadder 36 for every two intermediate mod values a, theintermediate levels 42 include a moduloadder 36 for every two moduloadders 36 in the previous level, and thefinal level 44 includes a single moduloadder 36. As will be appreciated, the number ofintermediate levels 42 is a number necessary to generate two outputs to thefinal level 44. When themodulo summation block 34 is used specifically with the 3GPP standard, the smallest possible value of p−1 is 6. Therefore, the first two intermediate mod values from FIG. 2 are at most 1 and 2 regardless of p−1 (i.e., 1 MOD 6=1, 2 MOD 6=2) so asimple adder 38 can be used in place of a modulo adder 36 because the value is guaranteed to be in modulo p−1 arithmetic. For the purposes of example only, this has been illustrated in FIG. 3. - As discussed above, the modulo
adders 36 perform two functions. First, they add the two input numbers together. Second, they check the sum and determines if the sum lies outside of the mod field. If so, the output value is wrapped around relative to the mod field. FIG. 4 illustrates an embodiment of amodulo adder 36. As shown, the modulo adder 36 includes anadder 50 adding inputs a and b, and asubtractor 52 subtracting the mod operand (e.g., p−1) from the sum of a+b. Aselector 54 selectively outputs one of a+b and (a+b)−(p−1). Acomparator 56 compares the value (p−1) to the sum a+b, and controls theselector 54 to output the sum a+b if the sum a+b is less than or equal to the value (p−1). Otherwise, thecomparator 56 instructs theselector 54 to select the output of thesubtractor 52. - A problem with interleaved address generators is that occasionally they generate addresses that are outside the valid range of the block size. When an address is generated outside of the range, the architecture produces a flag which identifies if the output is invalid, and then the architecture must wait another clock cycle before the next sequential interleaved address is valid. Over a large block size, this can create a large overhead in the turbo decoding process. FIG. 5 shows a simple example of the interleaving process and how invalid addresses are generated. Since the ranges of block sizes are continuous between 40 and 5114, the exact number of elements do not always fit exactly into the rectangular array defined by R and C. The values fill the array row by row, but the last row has some elements that are empty. In the process of interleaving, both the rows and columns are permutated based on the interleaving equations, and the empty cells are spread across a row. Thus when the interleaver starts to retrieve source addresses, occasionally it will generate an access to an empty cell.
- With puncturing, the interleaver does not know that it has an invalid address until it has actually calculated the final address and compared the final address with the valid range of values. One solution is to make sure that the address generator is actually calculating both the current address and the next address at the same time. With both addresses available, the address interleaver first checks if the current generated address is valid. If the address is valid, the current address is used, but if the current address is not valid, the architecture can immediately substitute the next address. Because the interleaver proceeds in row-by-row basis, if the current address is invalid, the next address is guaranteed to be a valid address because all of the empty spaces come from the same row.
- FIG. 6 shows the address interleaver architecture that generates both the current and next address at the same time. In FIG. 6,
selector 14 has been deleted for the sake of clarity. As shown, the first look-up table 10 generates the current inter-row sequence number using the current row index j as an address and a duplicate first look-up table 10′ generates the next inter-row sequence number using the next rowindex j+ 1. Themod computation device 12 generates the current intra-row permutation address by computing (i*rj) mod (p−1). And, anothermod computation device 12′ generates the next intra-row permutation address by computing (i*rj+1) mod (p−1). Themod computation devices - A second look-up table16′ stores the intra-row permutation sequences S (see equation 4). The second look-up table 16′ is a two input port (A and B), two output port (A and B) memory, and outputs the current and next intra-row permutation sequences using the current and next intra-row permutation addresses, respectively. If a dual-port memory is not available a single memory can be used provided a double-rate clock is used to access the memory twice for every symbol required on the output, or two separate single port memories can be used.
Multipliers multipliers address generators - A multiplexer or
selector 60 receives the current and next interleaved addresses, and selectively outputs one of the current and next interleaved addresses based on output from thecomparator 22. Thecomparator 22 makes sure the current interleaved address is within the range of K, the block size, and outputs a valid address signal if the interleaved address is in the range of K. If valid, the output from thecomparator 22 causes themultiplexer 60 to output the current interleaved address. If invalid, the output from thecomparator 60 causes themultiplexer 60 to select the next interleaved address. Accordingly, processing time is reduced by not having to wait for the next valid interleaved address to be generated. - FIG. 7 illustrates a low power address interleaver architecture according to an embodiment of the present invention that provides a continuous stream of valid interleaved addresses. As shown, the embodiment of FIG. 7 is the same as the embodiment of FIG. 6 except that the
mod computation devices first register 72 and asecond register 74 store outputs from themultipliers multiplexer 60 has been replaced with amultiplexer 70; and acontroller 76 receives the output from themultipliers multiplexer 70, enablement of the first and secondmod computation devices - The
controller 76 may enable and disable operation of the either or both of themod computation devices mod computation devices controller 76 may also enable and disable generation of the intra-row permutation sequences for output at either or both of the output ports of the second look-up table 16′. By disabling, for example, the secondmod computation device 12′ and generation of the intra-row permutation sequence at port B of the second look-up table 16′, thecontroller 76 disables generation of the second or next interleaved address output from thesecond multiplier 18′. Accordingly, thecontroller 76 may selectively enable and disable generation of the first and second interleaved addresses. Stated another way, thecontroller 76 may selectively enable and disable the first and second interleavedaddress generators - When the first and/or second interleaved
address generators address generators - The
multiplexer 70 receives the generated first interleaved address at its port B, the stored first interleaved address (which is a previous interleaved address with respect to the generated first interleaved address) at its port A, and the stored second interleaved address at its port C. Thecontroller 76 controls whether themultiplexer 70 outputs the interleaved address at port A, port B or port C. - Next, an exemplary operation of the architecture of FIG. 7 for producing a continuous stream of interleaved address while reducing power consumption will be described with respect to table1 illustrated in FIG. 8. During a first cycle of operation, the
controller 76 enables operation of both the first and second interleavedaddress generators controller 76 controls themultiplexer 70 to output the generated first interleaved address A0 if the address is valid. As will be appreciated by those skilled in the art, because of the method of interleaved address generation described in detail above, at least the first two interleaved addresses A0 and A1 will be valid. The interleaved addresses A0 and A1 are also stored by the first andsecond registers - As a general rule, after the second interleaved
address generator 82 generates one interleaved address, thecontroller 76 disables the second interleavedaddress generator 82. Accordingly, in the second cycle (cycle 1), the second interleavedaddress generator 82 is disabled and does not generate an interleaved address or consume power. The first interleavedaddress generator 80, however, is enabled and generates interleaved address A2. Thecontroller 76 controls themultiplexer 70 to output the interleaved address A1 at its port C, which is the stored second interleaved address A1. Also incycle 1, thecontroller 76, which incorporates thecomparator 22, determines if the interleaved address A2 is valid. - In this exemplary embodiment, interleaved address A0-A6 are assumed valid, and the first invalid interleaved address is interleaved address A7. Because the interleaved address generated in
cycle 2 by the first interleaved address is valid, in the next cycle (cycle 3), the second interleavedaddress generator 82 remains disabled and the first interleavedaddress generator 80 remains enabled. As a result, the first interleavedaddress generator 80 generates the interleaved address A3. Also, thecontroller 76 controls themultiplexer 70 to output the interleaved address at its port A, which is the stored first interleaved address A2. The operation ofcycle 3 then repeats for cycles 4-7. - However, in
cycle 7, the generated first interleaved address A7 is invalid (the address A7 is greater than the block size K). As a result, incycle 8 thecontroller 76 enables the second interleavedaddress generator 82. Namely, in the cycle subsequent to a cycle in which an invalid address was generated, thecontroller 76 enables the second interleavedaddress generator 82. Incycle 8, the first and second interleaved addresses are A8 and A9, respectively, are generated. Thecontroller 76 controls themultiplexer 70 to output the generated first interleaved address A8 at its port B. - In the next cycle,
cycle 9, the operation ofcycle 1 repeats. Namely, thecontroller 76 disables the second interleavedaddress generator 82 and controls themultiplexer 70 to output the stored second interleaved address A9 at its port C. As will be appreciated, when an invalid address is determined, thecontroller 76 enables the second interleavedaddress generator 82 for one cycle. Because of the limited number of invalid addresses, the second interleavedaddress generator 82 remains idle and does not consume power for a large portion of the continuous on-the-fly interleaved address generation process. For the whole range of 3GPP block sizes of 40 to 5114, only 1.4% of the generated interleaved addresses are invalid. Consequently, the present invention achieves a great savings in power consumption by disabling the operation of the second interleavedaddress generator 82 when its operation is not needed to maintain a continuous stream of interleaved addresses. - The operation during
cycle 10 is the same as described above with respect tocycle 3. As will be appreciated, when an invalid address is generated by the first address generated in a given cycle, the operation will proceed as described above with respect to cycles 8-10. - While the exemplary operation was described as selectively enabling and disabling the operation of the second interleaved
address generator 82, it will be appreciated that a similar operation may be conducted by enabling and disabling the first interleavedaddress generator 80 instead, or flipping between selectively enabling and disabling the first and second interleavedaddress generators - The invention being thus described, it will be obvious that the same may be varied in many ways. For example, by inserting additional registers into the embodiment of FIG. 7 (e.g., between the
mod computation devices second address generator 82 will then remain enabled for additional cycles depending on the length of the pipeline. Such variations are not to be regarded as a departure from the spirit and scope of the invention, and all such modifications as would be obvious to one skilled in the art are intended to be included within the scope of the following claims.
Claims (19)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/447,113 US7398446B2 (en) | 2003-05-29 | 2003-05-29 | Low power operation of an address interleaver |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/447,113 US7398446B2 (en) | 2003-05-29 | 2003-05-29 | Low power operation of an address interleaver |
Publications (2)
Publication Number | Publication Date |
---|---|
US20040255217A1 true US20040255217A1 (en) | 2004-12-16 |
US7398446B2 US7398446B2 (en) | 2008-07-08 |
Family
ID=33510325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/447,113 Active 2025-12-06 US7398446B2 (en) | 2003-05-29 | 2003-05-29 | Low power operation of an address interleaver |
Country Status (1)
Country | Link |
---|---|
US (1) | US7398446B2 (en) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040221223A1 (en) * | 2003-04-29 | 2004-11-04 | Nam-Yul Yu | Apparatus and method for encoding a low density parity check code |
US20050193308A1 (en) * | 2004-02-10 | 2005-09-01 | Myeong-Cheol Shin | Turbo decoder and turbo interleaver |
US20060265634A1 (en) * | 2005-05-18 | 2006-11-23 | Seagate Technology Llc | Iterative detector with ECC in channel domain |
US20060282753A1 (en) * | 2005-05-18 | 2006-12-14 | Seagate Technology Llc | Second stage SOVA detector |
US20070101231A1 (en) * | 2003-12-11 | 2007-05-03 | Freescale Semiconductor, Inc. | Multi-standard turbo interleaver using tables |
US7395461B2 (en) | 2005-05-18 | 2008-07-01 | Seagate Technology Llc | Low complexity pseudo-random interleaver |
US20090100311A1 (en) * | 2006-04-29 | 2009-04-16 | Timi Technologies Co., Ltd. | Method of Constructing Low Density Parity Check Code, Method of Decoding the Same and Transmission System For the Same |
EP2089975A2 (en) * | 2006-10-24 | 2009-08-19 | LG Electronics Inc. | Method for interleaving continuous length sequence |
US20100115227A1 (en) * | 2008-11-04 | 2010-05-06 | Qualcomm Incorporated | Parallel pruned bit-reversal interleaver |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101614482B1 (en) * | 2009-08-11 | 2016-04-21 | 삼성전자주식회사 | Apparatus and method for determining interleaved address of turbo interleaver |
US10270473B2 (en) | 2014-11-26 | 2019-04-23 | Nxp Usa, Inc. | Turbo decoders with stored column indexes for interleaver address generation and out-of-bounds detection and associated methods |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6748560B2 (en) * | 1998-04-07 | 2004-06-08 | Sony Corporation | Address generator, interleave unit, deinterleaver unit, and transmission unit |
US6910110B2 (en) * | 2002-01-09 | 2005-06-21 | Samsung Electronics Co., Ltd. | Interleaving apparatus and method for a communication system |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4045781A (en) * | 1976-02-13 | 1977-08-30 | Digital Equipment Corporation | Memory module with selectable byte addressing for digital data processing system |
US5392328A (en) * | 1993-02-04 | 1995-02-21 | Bell Communications Research, Inc. | System and method for automatically detecting root causes of switching connection failures in a telephone network |
US5535333A (en) * | 1993-03-30 | 1996-07-09 | International Business Machines Corporation | Adapter for interleaving second data with first data already transferred between first device and second device without having to arbitrate for ownership of communications channel |
US5737337A (en) * | 1996-09-30 | 1998-04-07 | Motorola, Inc. | Method and apparatus for interleaving data in an asymmetric digital subscriber line (ADSL) transmitter |
US5966729A (en) * | 1997-06-30 | 1999-10-12 | Sun Microsystems, Inc. | Snoop filter for use in multiprocessor computer systems |
US6067646A (en) * | 1998-04-17 | 2000-05-23 | Ameritech Corporation | Method and system for adaptive interleaving |
US6549998B1 (en) * | 2000-01-14 | 2003-04-15 | Agere Systems Inc. | Address generator for interleaving data |
KR100474682B1 (en) * | 2001-10-31 | 2005-03-08 | 삼성전자주식회사 | Method and apparatus for transmitting/receiving for re-transmission of packet in wireless communication system |
-
2003
- 2003-05-29 US US10/447,113 patent/US7398446B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6748560B2 (en) * | 1998-04-07 | 2004-06-08 | Sony Corporation | Address generator, interleave unit, deinterleaver unit, and transmission unit |
US6910110B2 (en) * | 2002-01-09 | 2005-06-21 | Samsung Electronics Co., Ltd. | Interleaving apparatus and method for a communication system |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7178082B2 (en) * | 2003-04-29 | 2007-02-13 | Samsung Electronics Co., Ltd. | Apparatus and method for encoding a low density parity check code |
US20040221223A1 (en) * | 2003-04-29 | 2004-11-04 | Nam-Yul Yu | Apparatus and method for encoding a low density parity check code |
US7734989B2 (en) * | 2003-12-11 | 2010-06-08 | Freescale Semiconductor, Inc. | Multi-standard turbo interleaver using tables |
US20070101231A1 (en) * | 2003-12-11 | 2007-05-03 | Freescale Semiconductor, Inc. | Multi-standard turbo interleaver using tables |
US7343530B2 (en) * | 2004-02-10 | 2008-03-11 | Samsung Electronics Co., Ltd. | Turbo decoder and turbo interleaver |
US20050193308A1 (en) * | 2004-02-10 | 2005-09-01 | Myeong-Cheol Shin | Turbo decoder and turbo interleaver |
US7360147B2 (en) | 2005-05-18 | 2008-04-15 | Seagate Technology Llc | Second stage SOVA detector |
US7788560B2 (en) | 2005-05-18 | 2010-08-31 | Seagate Technology Llc | Interleaver with linear feedback shift register |
US7395461B2 (en) | 2005-05-18 | 2008-07-01 | Seagate Technology Llc | Low complexity pseudo-random interleaver |
US20080215831A1 (en) * | 2005-05-18 | 2008-09-04 | Seagate Technology Llc | Interleaver With Linear Feedback Shift Register |
US7502982B2 (en) | 2005-05-18 | 2009-03-10 | Seagate Technology Llc | Iterative detector with ECC in channel domain |
US20060282753A1 (en) * | 2005-05-18 | 2006-12-14 | Seagate Technology Llc | Second stage SOVA detector |
US20060265634A1 (en) * | 2005-05-18 | 2006-11-23 | Seagate Technology Llc | Iterative detector with ECC in channel domain |
US20090100311A1 (en) * | 2006-04-29 | 2009-04-16 | Timi Technologies Co., Ltd. | Method of Constructing Low Density Parity Check Code, Method of Decoding the Same and Transmission System For the Same |
US8176383B2 (en) * | 2006-04-29 | 2012-05-08 | Timi Technologies Co., Ltd. | Method of constructing low density parity check code, method of decoding the same and transmission system for the same |
US20100023844A1 (en) * | 2006-10-24 | 2010-01-28 | Lg Electronics Inc. | Method for interleaving continuous length sequence |
EP2089975A2 (en) * | 2006-10-24 | 2009-08-19 | LG Electronics Inc. | Method for interleaving continuous length sequence |
EP2089975A4 (en) * | 2006-10-24 | 2012-08-29 | Lg Electronics Inc | Method for interleaving continuous length sequence |
US8533542B2 (en) | 2006-10-24 | 2013-09-10 | Lg Electronics Inc. | Method for interleaving continuous length sequence |
US20100115227A1 (en) * | 2008-11-04 | 2010-05-06 | Qualcomm Incorporated | Parallel pruned bit-reversal interleaver |
US8127105B2 (en) * | 2008-11-04 | 2012-02-28 | Qualcomm Incorporated | Parallel pruned bit-reversal interleaver |
Also Published As
Publication number | Publication date |
---|---|
US7398446B2 (en) | 2008-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2235424C2 (en) | Turbo-code interleaving device using linear congruent sequences | |
US7178085B2 (en) | Encoder using low density parity check codes and encoding method thereof | |
US6314534B1 (en) | Generalized address generation for bit reversed random interleaving | |
US6851039B2 (en) | Method and apparatus for generating an interleaved address | |
US7058874B2 (en) | Interleaver address generator and method of generating an interleaver address | |
Giard et al. | Multi-mode unrolled architectures for polar decoders | |
US20020091900A1 (en) | Interleaver for a turbo encoder in an UMTS and method for performing interleaving | |
US7398446B2 (en) | Low power operation of an address interleaver | |
US8332701B2 (en) | Address generation apparatus and method for quadratic permutation polynomial interleaver de-interleaver | |
US6199088B1 (en) | Circuit for determining multiplicative inverses in certain galois fields | |
US7170432B2 (en) | Addresses generation for interleavers in turbo encoders and decoders | |
US7590917B2 (en) | Parameter generation for interleavers | |
US10833704B1 (en) | Low-density parity check decoder using encoded no-operation instructions | |
US7552377B1 (en) | Method of and circuit for interleaving data in a data coder | |
US20020083391A1 (en) | Method and apparatus for encoding a product code | |
US20060010363A1 (en) | Method and system for correcting low latency errors in read and write non volatile memories, particularly of the flash type | |
KR100499467B1 (en) | Block interleaving method, and apparatus for the same | |
US7318184B2 (en) | Mobile telephone, apparatus, method, and program for calculating an interleave parameter | |
US5448510A (en) | Method and apparatus for producing the reciprocal of an arbitrary element in a finite field | |
JP3812983B2 (en) | Error evaluation polynomial coefficient calculator | |
US7225306B2 (en) | Efficient address generation for Forney's modular periodic interleavers | |
US7904761B1 (en) | Method and apparatus for a discrete power series generator | |
US7702706B2 (en) | Configurable multi-step linear feedback shift register | |
US6704901B1 (en) | Runtime programmable Reed-Solomon decoder | |
KR100192792B1 (en) | Polynomial evaluator of rs decoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: LUCENT TECHNOLOGIES INC., NEW JERSEY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GARRETT, DAVID;NICOL, CHRIS;REEL/FRAME:014339/0451;SIGNING DATES FROM 20030702 TO 20030715 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: OMEGA CREDIT OPPORTUNITIES MASTER FUND, LP, NEW YORK Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:043966/0574 Effective date: 20170822 Owner name: OMEGA CREDIT OPPORTUNITIES MASTER FUND, LP, NEW YO Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:043966/0574 Effective date: 20170822 |
|
AS | Assignment |
Owner name: WSOU INVESTMENTS, LLC, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ALCATEL LUCENT;REEL/FRAME:044000/0053 Effective date: 20170722 |
|
AS | Assignment |
Owner name: ALCATEL-LUCENT USA INC., NEW JERSEY Free format text: MERGER;ASSIGNOR:LUCENT TECHNOLOGIES INC.;REEL/FRAME:049074/0251 Effective date: 20081101 |
|
AS | Assignment |
Owner name: BP FUNDING TRUST, SERIES SPL-VI, NEW YORK Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:049235/0068 Effective date: 20190516 |
|
AS | Assignment |
Owner name: WSOU INVESTMENTS, LLC, CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:OCO OPPORTUNITIES MASTER FUND, L.P. (F/K/A OMEGA CREDIT OPPORTUNITIES MASTER FUND LP;REEL/FRAME:049246/0405 Effective date: 20190516 |
|
AS | Assignment |
Owner name: ALCATEL LUCENT, FRANCE Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NOKIA OF AMERICA CORPORATION (FORMERLY ALCATEL-LUCENT USA INC.);REEL/FRAME:049637/0201 Effective date: 20170721 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |
|
AS | Assignment |
Owner name: OT WSOU TERRIER HOLDINGS, LLC, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:056990/0081 Effective date: 20210528 |
|
AS | Assignment |
Owner name: WSOU INVESTMENTS, LLC, CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:TERRIER SSC, LLC;REEL/FRAME:056526/0093 Effective date: 20210528 |