The present invention generally relates to an address generation apparatus and method for a quadratic permutation polynomial (QPP) interleaver.
In recent years, most of the mobile communication (3GPP LTE) systems have replaced the turbo code interleaver of the physical layer in 3G mobile communication system with the QPP interleaver to improve the decoding speed of the decoders. QPP interleaver, in addition to the advantage of memory contention free, shows promising results in both hardware complexity and decoding capability. QPP interleaver allows the turbo decoding to avoid the memory contention problem after the maximum A posterior probability (MAP) algorithm computing the MAP, while in the mean time, using a plurality of sliding windows to achieve the parallelism to accelerate the computation of decoder.
The common design for turbo code interleaver is to store the computed interleaver address in a memory or an address table in advance, as the serial and parallel structure shown in
In the parallel structure of
Take LTE turbo code as example. The decoding length may range from 40 to 6144 bits. In other words, the number of bits in each code segment may range from 40 to 6144 bits. For 188 types of decoding length specifications, the memory must be able to store 188 interleaver addresses of length ranging from 40 to 6144 bits. This is a considerable demand on the memory capacity.
For example, U.S. Pat. No. 6,845,482 disclosed an element for generating prime number index information and a technology of five lookup tables, as shown in
U.S. Patent Publication No. US2008/0115034 disclosed a QPP interleaver, applicable to an encoder for turbo code. In
Π(n)=(f1n+f2n2)mod k, n=0, 1, . . . , k−1,
Where Π(n) is the n-th interleaved output position, f1 and f2 are QPP coefficients, k is the information block length of the input sequence, and mod is the modulus computation. The computed Π(n) is stored in interleaver memory 310, and is serially read out from interleaver memory 310 when needed.
The disclosed exemplary embodiments may provide an address generation apparatus and method for a QPP interleaver.
In an exemplary embodiment, the disclosed relates to an address generation apparatus for a QPP interleaver. The apparatus comprises a basic recursive unit, and L recursive units represented as the first to the L-th recursive units, where L≧2. Based on a QPP function Π(i)=(f1i+f2i2) mod k, the apparatus inputs a plurality of configurable parameters, serially generates a plurality of interleaver addresses by using the basic recursive unit, and parallel generates L sets of corresponding interleaver addresses by using the first to L-th recursive units, wherein whenever the basic recursive unit or the j-th recursive unit generates an interleaver address, the interleaver address generated by the basic recursive unit is outputted to the first recursive unit, while the interleaver address generated by the j-th recursive unit is outputted to the (j+1)-th recursive unit, Π(i) is the i-th interleaved address generated by the apparatus, f1 and f2 are QPP coefficients, k is information block length of an input sequence, 1≦i≦k−1, 1≦j≦L−1, and mod is modulus computation.
In another exemplary embodiment, the disclosed relates to an address generation method for QPP interleaver, applicable to an encoder/decoder of communication systems. The method comprises: based on a QPP function Π(i)=(f1i+f2i2) mod k, inputting a plurality of configurable parameters; serially generating a plurality of interleaver addresses by using a basic recursive unit; and parallel generating L sets of corresponding interleaver addresses by using L recursive units represented as the first to L-th recursive units, L≧2, wherein whenever the basic recursive unit or the j-th recursive unit generates an interleaver address, the interleaver address generated by the basic recursive unit is outputted to the first recursive unit, while the interleaver address generated by the j-th recursive unit is outputted to the (j+1)-th recursive unit, Π(i) is the i-th interleaved address generated by the apparatus, f1 and f2 are QPP coefficients, k is information block length of an input sequence, 0≦i≦k−1, 1≦j≦L−1, and mod is modulus computation, so that the information of the input sequence is stored in a plurality of corresponding memory addresses.
The foregoing and other features, aspects and advantages of the exemplary embodiments will become better understood from a careful reading of a detailed description provided herein below with appropriate reference to the accompanying drawings.
The disclosed exemplary embodiments may provide an address generation apparatus and method for a QPP interleaver. The address generation technology for QPP interleaver utilizes hardware design able to directly compute the interleaver address and able to output the computation result of the interleaver address serially or in parallel.
Address generation apparatus 400 for a QPP interleaver may be used as both an interleaver and a de-interleaver. When used as an address generation apparatus for de-interleaver, the outputting of interleaver address is treated as reading a memory address.
The theory behind the ability of address generation apparatus 400 for a QPP interleaver to output the interleaver addresses serially or in parallel is described as follows:
Because QPP function Π(i)=(f1i+f2i2) mod k, i=0, 1, . . . , k−1,
hence, Π(i+m)=(f1(i+m)+f2(i+m)2) mod k=(Π(i)+f1m+f2 m2+2 mf2i) mod k
When m=1,
Π(i+1)=(Π(i)+f1m+f2+2f2i)mod k, i=0, 1, . . . , k−1 (1)
hence, address generation apparatus 400 for a QPP interleaver may directly compute the interleaver addresses Π(0), Π(1), Π(2), etc., serially according to the recursive formula (1).
When m=M, 2M, 3M, . . . ,
Π(i+M)=(Π(i)+f1M+f2M2+2f2i)mod k, i=0, 1, . . . , k−1 (2)
hence, address generation apparatus 400 for a QPP interleaver may directly compute the interleaver addresses Π(i), Π(i+M), Π(i+2M), etc., in parallel according to the recursive formula (2). Take M=32 as example, address generation apparatus 400 for QPP interleaver may output a plurality of sequences in parallel, where
the first sequence {Π(i+M)} includes Π(32), Π(33), Π(34), . . . ;
the second sequence {Π(i+2M)} includes Π(64), Π(65), Π(66), . . . ;
the third sequence Π(i+3M)}, the fourth sequence {Π(i+4M)}, and so on. M is the number of the elements in each sequence, i.e., the width of the sliding window.
Accordingly, shows an exemplary schematic view of the structure of an address generation apparatus 400 for a QPP interleaver, consistent with certain disclosed embodiments. Referring to
First sequence: Π(M), Π(M+1), . . . , Π(2M−1);
Second sequence: Π(2M), Π(2M+1), . . . , Π(3M−1); up to
L-th sequence: Π(LM), Π(LM+1), . . . , Π((L+1)M−1)
Basic recursive unit 520 and j-th recursive unit also output respectively to first recursive unit 511 and (j+1)-th recursive unit when generating each interleaver address. For example, whenever basic recursive unit 520 generates an interleaver address, basic recursive unit 520 outputs the interleaver address to first recursive unit 511. And, whenever first recursive unit 511 generates an interleaver address, first recursive unit 511 outputs the interleaver address to second recursive unit 512. Whenever second recursive unit 512 generates an interleaver address, second recursive unit 512 outputs the interleaver address to third recursive unit 513, and so on. The value L is the number of the sliding windows.
If the width M of sliding window is a power of 2, such as, M=2n, the n least significant bits (LSB) of the computed interleaver address may be used as the memory address for storing the input information.
Basic recursive unit 520 inputs configurable parameters, such as, {Π(0), f1+f2, 2f2} or {f1+f2, 2f2}, and generates output sequence Π(0), Π(1), Π(2), and so on. Each i-th recursive unit inputs respectively configurable parameters, such as, {Π(i+m1), h(i), 2m2f2} or {k, 2Mf2, f1M+f2M2}, 1≦i≦L, m1 and m2 are pre-defined integers, h(i) is a pre-defined recursive function, m1, m2 and h(i) will be described in details later. The L recursive units may generate L sequences {Π(i+M)}, {Π(i+2M)}, . . . , {Π(i+LM)} in parallel. In other words, with basic recursive unit, it is possible to realize a serial interleaver address generator, and with first to L-th recursive units, it is possible to realize a parallel interleaver address generator. The following two exemplary embodiments show the address generation apparatus and method for a QPP interleaver.
In the first exemplary embodiment, the basic recursive unit is designed in accordance with recursive formula (1), and using a recursive function g(i), i=0, 1, . . . , k−1, where
Π(i+1)=(Π(i)+g(i))mod k,
g(i)=(f1+f2+2f2i)mod k, and g(i+1)=g(i)+2f2.
Hence, basic recursive unit may input a set of configurable parameters, such as, {Π(0), f1+f2, 2f2}, to generate interleaver addresses Π(0), Π(1), Π(2), and so on, where the hardware structure of basic recursive unit and timing sequence control may be described as in
In the exemplary embodiment of
The 2-input add-then-modulus circuit is a general modulus circuit, such as, addition of two operands A, B. After addition, the remainder is obtained after a modulus K computation, i.e., (A+B) mod K. The circuit may be realized with two adders and a multiplexer. The following refers to
In
Then, the two operands of 2-input add-then-modulus circuit 632, i.e., Π(0) and g(0), after modulus computation, generate an interleaver address Π(1), while the two operands of 2-input add-then-modulus circuit 631, i.e., f1+f2 and 2f2, after modulus computation, generate f1+f2+2f2, i.e., g(1), and outputs to register 621. Interleaver address Π(1), through multiplexer 613, is outputted to first recursive unit 511 and register 622 respectively. In other words, when Π(1) is outputted to first recursive unit 511, register 622 stores Π(1) and register 611 stores g(1).
Then, when Π(1) in register 622 is outputted, Π(1) is fed back to 2-input add-then-modulus circuit 632. When g(1) in register is fed back to multiplexer 611, g(1) is also outputted through multiplexer 612 to 2-input add-then-modulus circuit 632. Multiplexer 611 outputs g(1) to 2-input add-then-modulus circuit 631. Therefore, the two operands of 2-input add-then-modulus circuit 632, i.e., g(1) and Π(1), after modulus computation, generate the next interleaver address Π(2). The two operands of 2-input add-then-modulus circuit 631, i.e., g(1) and 2f2, after modulus computation, generate g(2) and output to register 621. Interleaver address Π(2) is then outputted through multiplexer 613 to first recursive unit 511 and register 622. In other words, when Π(2) is outputted to first recursive unit 511, register 622 stores Π(2) and register 621 stores g(2).
Similarly, for each i, i=0, 1, 2, . . . , M−1, after Π(i) in register 622 is outputted, the two operands of 2-input add-then-modulus circuit 632, i.e., g(i) and Π(i), after the modulus computation, generate the next interleaver address Π(i+1). The two operands of 2-input add-then-modulus circuit 631, i.e., g(i) and 2f2, after the modulus computation, generate the next interleaver address g(i+1), and output to register 621. Interleaver address Π(i+1), through multiplexer 631, is outputted to first recursive unit 511 and register 622.
In the first exemplary embodiment, first recursive 511 to L-th recursive unit 51L are designed according to recursive formula (2) and another recursive function h(i), as follows:
Let m=m1+m2, and from recursive formula (2), i.e.
Π(i+M)=(Π(i)+f1M+f2M2+2f2i)mod k, it may be obtained that
Π(i+m1+m2)=(Π(i+m1)+f1m2+2m1m2f2+f2m22+2m2f2i)mod k,
Let h(i)=(f1m2+2m1m2f2+f2m22+2m2f2i) mod k, it may be obtained that
h(i+1)=(h(i)+2m2f2)mod k.
Take m1=0, M, 2M, . . . ; and m2=M=32, as example, it may be obtained that
Π(i+m1+m2)=Π(i+0+M), that is, Π(32), Π(33), Π(34), . . . .
Π(i+m1+m2)=Π(i+M+M), that is, Π(64), Π(65), Π(66), . . . .
Π(i+m1+m2)=Π(i+2M+M), that is, Π(96), Π(97), Π(98), . . . .
Hence, a set of input parameters of each recursive unit 51j of first recursive unit 511 to L-th recursive unit 51L may be designed as {Π(i+m1), h(0), 2m2f2}, h(0)=f1 m2+2m1 m2f2+f2 m22, and the internal structure is shown as
In
Then, the two operands of 2-input add-then-modulus circuit 732, i.e., Π(i+m1) and h(0), after modulus computation, generate an interleaver address Π(i+m). And the interleaver address Π(i+m) is outputted to register 722.
The two operands of 2-input add-then-modulus circuit 731, i.e., h(0) and 2m2f2, after modulus computation, generate h(1). And h(1) is outputted to register 721.
After Π(i+m) in register 722 is outputted, when i≧1, h(i) in register 721 is fed back to multiplexer 711, h(i) is also outputted to multiplexer 712. Multiplexer 712 outputs h(i) to 2-input add-then-modulus circuit 732. Therefore, the two operands of 2-input add-then-modulus circuit 732, i.e., h(i) and Π(i+m1), after modulus computation, generate the next interleaver address Π(i+1+m). Interleaver address Π(i+1+m) is then outputted to the next recursive unit 51(j+1) and register 722 simultaneously.
In other words, after recursive unit 51j outputs interleaver address Π(i+m), the two operands of 2-input add-then-modulus circuit 731, i.e., h(i) and 2m2f2, after modulus computation, generate h(i+1) and output h(i+1) to register 721. The two operands of 2-input add-then-modulus circuit 732, i.e., h(i+1) and Π(i+1+m1), after modulus computation, generate the next interleaver address Π(i+1+m). Interleaver address Π(i+1+m) is then outputted to the next recursive unit and register 722 stores interleaver address Π(i+1+m).
In the exemplary second embodiment, the basic recursive unit is designed according to recursive formula (1) to input configurable parameters, such as, {f1+f2, 2f2}. The structure is shown in
In the second exemplary embodiment, first to L-th recursive units are designed according to recursive formula (2), with hardware structure as shown in
Take k=40, M=8=23 as example.
In other words, when M=2n, as shown in the exemplary embodiment of
When i=0, based on recursive formula (2), recursive unit 1 computes Π(8)=24=(011000)2 and the MSB 3 bits of Π(8) are (011)2=3, then the data multiplexer transmits the data outputted from sliding window 1 to memory 3 accordingly. Based on recursive formula (2), recursive unit 2 computes Π(16)=8=(001000)2 and the MSB 3 bits of Π(16) are (001)2=1, then the data multiplexer transmits the data outputted from sliding window 2 to memory 1 accordingly. Based on recursive formula (2), recursive unit 3 computes Π(24)=32=(100000)2 and the MSB 3 bits of Π(24) are (100)2=4, then the data multiplexer transmits the data outputted from sliding window 3 to memory 4 accordingly. Based on recursive formula (2), recursive unit 4 computes Π(32)=16=(010000)2 and the MSB 3 bits of Π(32) are (010)2=2, then the data multiplexer transmits the data outputted from sliding window 4 to memory 2 accordingly.
Similarly, when i=1, Π(1)=13=(001101)2, and its LSB 3 bits are (101)2 provided to memories 0-4 as address. And its MSB 3 bits are (001)2, hence, the data multiplexer transmits the data outputted from sliding window 0 to memory 1 accordingly. Recursive units 1-4 compute, in parallel, Π(9)=(100101)2, Π(17)=(010101)2, Π(25)=(000101)2, Π(33)=(011101)2, and data multiplexer outputs, in parallel, the data outputted from sliding windows 1-4 to memory 4, 2, 0, 3, respectively. Hence, when i=7, the last five data are transmitted in parallel to memory 0-4. Each memory has 8 addresses, and 8 data outputted from sliding window are written into the memory.
In comparison with the conventional technique using a structure of large amount of memory, the disclosed exemplary embodiments may reduce the amount of hardware area. For example, when applied to 3GPP LTE system, the disclosed exemplary embodiments may reduce the chip area. Because the low complexity of hardware, the values of M and L may also be designed and adjusted to fit the output order of the sliding windows.
Accordingly,
In step 1520, based on recursive formula (1), basic recursive unit may directly compute Π(0), Π(1), Π(2), and so on, while in step 1530, first recursive unit to L-th recursive unit, based on recursive formula (2), may compute in parallel L sets of corresponding sequences. The j-th interleaver address is also the j-th sequence {Π(i+jM)}, as aforementioned exemplary embodiment of
When M=2n, as shown in
In summary, the disclosed address generation apparatus and method for a QPP interleaver of the exemplary embodiments may compute the interleaver address directly and output, in series or in parallel, the computed interleaver addresses. Based on the computed interleaver addresses, with a data multiplexer, each data of the input sequence may be written to a corresponding memory address. This design neither requires complex hardware, such as, a multiplier, nor requires the memory capacity for storing interleaver addresses. The disclosed exemplary embodiments may reduce the hardware complexity, and may be designed to fit the output order of the sliding windows. The disclosed exemplary embodiment may be applicable to the encoder/decoder of the mobile communication systems.
Although the disclosed has been described with reference to the exemplary embodiments, it will be understood that the invention is not limited to the details described thereof. Various substitutions and modifications have been suggested in the foregoing description, and others will occur to those of ordinary skill in the art. Therefore, all such substitutions and modifications are intended to be embraced within the scope of the invention as defined in the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
98130766 A | Sep 2009 | TW | national |
Number | Name | Date | Kind |
---|---|---|---|
6202178 | Spruyt | Mar 2001 | B1 |
6845482 | Yao et al. | Jan 2005 | B2 |
7210076 | Maru | Apr 2007 | B2 |
8140932 | Blankenship | Mar 2012 | B2 |
20080115034 | Cheng | May 2008 | A1 |
20080172591 | Shen et al. | Jul 2008 | A1 |
20100005221 | Nieminen | Jan 2010 | A1 |
Number | Date | Country |
---|---|---|
1246991 | Mar 2000 | CN |
200833039 | Aug 2008 | TW |
200845594 | Nov 2008 | TW |
200929892 | Jul 2009 | TW |
Number | Date | Country | |
---|---|---|---|
20110066914 A1 | Mar 2011 | US |