QPP interleaver/de-interleaver for turbo codes
A quadratic permutation polynomial (QPP) interleaver is described for turbo coding and decoding. The QPP interleaver has the form: Π( n )= f 1 n−f n n 2 mod K, where the QPP coefficients f 1 and f 2 are designed to provide good error performance for a given block length K.
1. An apparatus comprising:
a quadratic permutation polynomial (QPP) interleaver configured to map values in an input sequence to corresponding values in an output sequence,
wherein the nth value in said output sequence is determined according to the QPP function Π(n)=f 1 n+f 2 n 2 mod K, where Π(n) is the input index of a corresponding value in the input sequence, f 1 and f 2 are QPP coefficients, and K is the block length of the input sequence, and
wherein the block length K and QPP coefficients f 1 and f 2 comprise one of the QPP parameter sets listed in Table 5.
2. The apparatus of claim 1 , wherein the QPP interleaver comprises:
memory configured to store a sequence of values;
an address generator configured to interleave said sequence of values as said values are read into or read out of said memory.
3. The apparatus of claim 2 , wherein said sequence of values comprises said input sequence and wherein said address generator is configured to interleave said values as said values are being read out of said memory.
4. The apparatus of claim 2 , wherein said sequence of values comprises said output sequence and wherein said address generator is configured to interleave said values as said values are being read into said memory.
5. A method for interleaving a sequence of values, said method comprising:
mapping values in an input sequence to corresponding values in an output sequence according to the function Π(n)=f 1 n+f 2 n 2 mod K, where n is the output index of a value in said output sequence, Π(n) is the input index of a corresponding value in the input sequence, f 1 and f 2 are QPP coefficients, and K is the block length of the input sequence; and
wherein the block length K and QPP coefficients f 1 and f 2 comprise one of the QPP parameter sets listed in Table 5.
6. The method of claim 5 , wherein mapping values in an input sequence to corresponding values in an output sequence comprises storing said values in memory; and interleaving said values as said values are read into or read out of said memory.
7. The method of claim 6 , wherein said values are read into said memory in non-interleaved order and read out in interleaved order.
8. The method of claim 6 , wherein said values are read into said memory in interleaved order.
9. A turbo coder comprising:
a first encoder configured to encode an input sequence;
an interleaver configured to reorder said input sequence to generate a corresponding output sequence; and
a second encoder configured to encode said output sequence,
wherein said interleaver is configured to map input bits in said input sequence to corresponding output bits in said output sequence according to the function Π(n)+f 1 n+f 2 n 2 mod K, where n is the output index of a value in said output sequence, Π(n) is the input index of a corresponding value in said input sequence, f 1 and f 2 are QPP coefficients, and K is the block length of the input sequence, and
wherein the block length K and QPP coefficients f 1 and f 2 comprise one of the QPP parameter sets listed in Table 5.