The disclosure generally relates to an address generation apparatus and method for quadrate permutation polynomial (QPP) interleaver, capable for generating increasing or decreasing interleaver addresses.
The design of the popular turbo code interleaver is usually achieved by storing a pre-calculated interleaver addresses in a memory or an address look-up table. When an interleaver address is needed, the address may be read from the memory or the address look-up table. This approach consumes both a large circuitry area and much power. Take LTE turbo code as example. The decoding length may range from 40 to 6144 bits. For the 188 types of decoding length, the memory is required to store 188 sets of interleaver addresses of length between 40 and 6144 bits. The maximum of the storage required for 6144-bit interleaver is up to 6144×13=79872 bits.
U.S. Publication No. US2008/0115034 disclosed a QPP interleaver, applicable to a coder/decoder for turbo code. The prior art describes the algorithm for serially generating interleaver addresses. The n-th value, Π(n), of the sequence outputted by the address generator may be expressed as:
Π(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 operation.
As shown in
U.S. Publication No. US2002/0159423 disclosed a technique to efficiently generate memory addresses for a turbo code interleaver using a number of look-up tables. U.S. Pat. No. 6,845,482 disclosed a technique to automatically generate interleaver addresses. The turbo code interleaver uses an element for generating prime-number index information and five look-up tables to generate memory addresses of the turbo code interleaver.
The above techniques describe the theory of the algorithm, architecture and process for serially generating interleaver addresses. Most of the parallel operation techniques emphasize more on improving the performance of the parallel processing of log-Maximum a Posteriori (MAP) processor, and less on the efficient design for executing the parallel interleaving of the output from the parallel computing and storing to a memory. However, in actual hardware or circuit design, if an architecture based on parallel address generator used for decoder architecture, such as, parallel turbo decoder using a plurality of log-MAP for parallel operation, the parallel address generator may improve the output rate of the decoder.
U.S. patent application Ser. No. 12/647,394 (filed by the applicant on Dec. 25, 2009) disclosed an address generating apparatus for QPP interleaver. The apparatus is based on a QPP function Π(i)=(f1i+f2i2) mod k, inputs several configurable parameters generates a plurality of interleaver addresses sequentially via a basic recursive unit, and generates a plurality of corresponding groups of interleaver addresses in parallel via a plurality of recursive units. Based on the computation result of the interleaver address, each sequentially inputted data may be written to a corresponding memory address via a data multiplexer.
The exemplary embodiments may provide an address generation apparatus and method for QPP interleaver.
In an exemplary embodiment, the disclosed relates to an address generation apparatus for QPP interleaver addresses. The apparatus comprises L QPP units, represented as QPP unit 1 to QPP unit L, L≧2. The apparatus is according to a QPP function Π(i)=(f1i+f2i2) mod k, where f1 and f2 are QPP coefficients, k is information block length of an input sequence, 0≦i≦k−1. The apparatus uses the L QPP units to compute and output a plurality of interleaver addresses, where Π(i) is an ith interleaving address generated by the apparatus and each QPP unit j, 1≦j≦L, is a parallel computation unit and outputs in parallel a corresponding group of interleaver addresses.
In another exemplary embodiment, the disclosed relates to an address generation method for QPP interleaver addresses, applicable to a coder/decoder of a communication system. The method comprises: inputting several configurable parameters according to a QPP function Π(i)=(f1i+f2i2) mod k; and computing and outputting a plurality of interleaver addresses by using L QPP units, where L≧2, each QPP unit j, 1≦j≦L, being a parallel computation unit and outputting in parallel a corresponding group of interleaver addresses, where Π(i) being an ith interleaving address generated by the method, f1 and f2 are QPP coefficients, k is information block length of an input sequence. In this manner, the input sequence of information is stored into a plurality of corresponding memory addresses.
The foregoing and other features, aspects and advantages of the present disclosure will become better understood from a careful reading of a detailed description provided herein below with appropriate reference to the accompanying drawings.
The exemplary embodiments of the present disclosure provide an address generation apparatus and method for QPP interleaver. The QPP address generation technology uses the design of a plurality of parallel computation circuits to compute the increasing or decreasing interleaver addresses, and is able to output the computation results in parallel. The QPP interleaver address generation apparatus may also be used as interleaver or de-interleaver address generator. When used as de-interleaver address generator, the output interleaver address is treated as reading a memory address.
As shown in the example in
A group of interleaver addresses outputted in parallel by each QPP unit j may be a group of increasing interleaver addresses 31j or a group of decreasing interleaver addresses 32j. The group of increasing interleaver addresses 31j or decreasing interleaver addresses 32j may be applied to a parallel decoder architecture of MAP processor of different radix architecture to correspond to the increasing or decreasing metrics computation of MAP processor.
For 2≦j≦L, QPP unit j receives the computation result from the previous QPP unit j−1 respectively, and simultaneously computes in parallel a corresponding group of increasing interleaver addresses 31j or decreasing interleaver addresses 32j. The group of increasing interleaver addresses 31j and the group of decreasing interleaver addresses 32j may be expressed as following, respectively:
Π(i+(j−1)M),Π(i+(j−1)M+1), . . . , Π(i+(j−1)M+(r−1)), and
Π(jM−i−1),Π(jM−i−2), . . . ; Π(jM−i−r),
where M is the width of the sliding window of the outputted information of the inputted sequence.
For a MAP processor j with radix-2r, 1≦j≦L, the corresponding QPP interleaver addresses generated by QPP unit j are described as follows. Because QPP function Π(i)=(f1i+f2i2) mod k, i=0, 1, . . . , k−1; therefore, for j=1, a group of increasing interleaver addresses 311 corresponding to QPP unit 1 is arranged as:
Π(i+1)=(f1(i+1)+f2(i+1)2)mod k=(Π(i)+f2+f1+2f2i)mod k, i=0,1, . . . , k−1 (1),
and a group of decreasing interleaver addresses 321 corresponding to QPP unit 1 is arranged as:
Π(i−1)=(f1(i−1)+f2(i−1)2)mod k=(Π(i)+f2−f1−2f2i)mod k, i=0,1, . . . , k−1 (2)
In this manner, QPP unit 1 may compute in parallel the increasing interleaver addresses Π(i), Π(i+1), . . . , Π(i+(r−1)) according to equation (1), and compute in parallel the decreasing interleaver addresses Π(M−i−1), Π(M−i−2), . . . , Π(M−r−1) according to equation (2).
Because Π(i+M)=(Π(i)+f1M+f2M2+2f2Mi) mod k, i=0, 1, . . . , k−1, thus, for 2≦j≦L, the first group of addresses 31j of QPP unit j is arranged as:
Π(i+(j−1)M)=(Π(i+(j−2)M)+f1M+(2j−3)f2M2+2f2Mi)mod k (3),
Π(i+(j−1)M+1)=(Π(i+(j−2)M+1)+f1M+(2j−3)f2M2+2f2M(i+1))mod k (4),
Π(i+(j−1)M+(r−1))=(Π(i+(j−2)M+(r−1)+f1M+(2j−3)f2M2+2f2M(i+(r−1))mod k (5)
According to equations (3), (4), (5), for 2≦j=L, QPP unit j may compute in parallel the increasing interleaver addresses Π(i+(j−1)M), Π(i+(j−1)M+1), . . . , Π(i+(j−1), M+(r−1)); similarly, for 2≦j≦L, QPP unit j may compute in parallel the decreasing interleaver addresses Π(jM−i−1), Π(jM−i−2), . . . , Π(jM−i−r). For MAP a processor with radix-2r, M may be the memory length for the MAP processor to write to or read from. Hence, the original interleaving length k may be configured to the k/M interleaving lengths of M without the need to change the original decoder or processor circuit or structure.
Accordingly, for a MAP processor with radix-2r r,
According to the timing control in
The other input to 2-input-add-mod circuit 511 is increasing parameter 2(r−1)f2 or decreasing parameter −2(M−r)f2. After 2-input-add-mod circuit 511 computes, the generated modulus result R1 is outputted to multiplexer 511 and 2-input-add-mod 531 and 542-54r, respectively. After 2-input-add-mod circuit 542 computes, the generated modulus result is outputted to multiplexer 513 and 2-input-add-mod 532, respectively. After 2-input-add-mod circuit 532 computes, the generated modulus result is outputted to register 522 and 2-input-add-mod 533 (not shown), respectively. After 2-input-add-mod circuit 54r computes, the generated modulus result is outputted to register 52r.
Accordingly, when init1 is HIGH, the r increasing interleaver addresses Π(0)−Π(r−1), or the r decreasing interleaver addresses Π(M−1)−Π(M−r) computed in parallel by the embodiment 500 of QPP unit 1 are stored into r registers 521-52r respectively. When the value stored in register 52r, i.e., Π(r−1) or Π(M−r), is outputted, the value is also outputted to 2-input-add-mod circuit 531.
Then, when the triggering edge of control signal init1 becomes LOW, QPP unit 1 in the embodiment 500 outputs the r interleaver addresses in registers 521-52r, i.e., Π(0)-Π(r−1) or Π(M−1)−Π(M−r). Because control signal init1 is LOW, multiplexer 510 outputs the computation result of 2-input-add-mod circuit 531, i.e., Π(r) or Π(M−r−1), to register 521. The computation result is also outputted to 2-input-add-mod circuit 532.
After the triggering edge of control signal init1 becomes LOW, the generated modulus result of 2-input-add-mod circuit 511 is the modulus result of the previous modulus result R1 and increasing parameter 2(r−1)f2 or decreasing parameter −2(M−r)f2, and the new R1 result is outputted to multiplexer 511 and 2-input-add-mod 531 and 542-54r, respectively. Multiplexer 512 outputs parameter 2f2 to 2-input-add-mod circuit 542. After 2-input-add-mod circuit 542 computes, the generated modulus result is outputted to multiplexer 513 and 2-input-add-mod 532, respectively. After 2-input-add-mod circuit 532 computes, the generated modulus result, i.e., Π(r+1)−Π(M−r−2) is outputted to register 522 and 2-input-add-mod 533, respectively. Multiplexer 51r outputs parameter (2r−2)f2 to 2-input-add-mod circuit 54r. After 2-input-add-mod circuit 54r computes, the generated modulus result is outputted to 2-input-add-mod circuit 53r. After 2-input-add-mod circuit 532 computes, the generated modulus result, i.e., Π(2r−1)−Π(M−2r) is outputted to register 52r. QPP unit 1 of embodiment 500 outputs the r interleaver addresses, i.e., Π(r)−Π(2r−1) or Π(M−r−1)−Π(M−2r), stored in r registers 521-52r. When the value stored in register 52r, i.e., Π(2r−1) or Π(M−2r), is outputted, the value is also outputted to 2-input-add-mod circuit 531.
In this manner, as shown in the embodiment of
In the embodiment of
According to the aforementioned equations for interleaver address computation, the hardware structure of QPP unit 1 may be designed according to the input increasing or decreasing parameter, in combination with different control signals, and outputs in parallel the corresponding group of increasing interleaver addresses 311 or decreasing interleaver addresses 321, as described by the following two working examples.
The other inputs to 2-input-add-mod circuits 702-704 are all parameter 2f2×3. After 2-input-add-mod circuit 702 computes, the generated modulus result R1 is outputted to multiplexer 712 and 2-input-add-mod 701, respectively. After 2-input-add-mod circuit 703 computes, the generated modulus result R2 is outputted to multiplexer 713 and multiplexer 715, respectively. After 2-input-add-mod circuit 703 computes, the generated modulus result R2 is outputted to multiplexer 713 and multiplexer 715, respectively. After 2-input-add-mod circuit 704 computes, the generated modulus result R3 is outputted to multiplexer 714 and multiplexer 716, respectively.
When init1=HIGH, multiplexer 715 outputs the input parameter 2f2×3 to 2-input-add-mod circuit 705 and multiplexer 716 outputs the input parameter 2f2×3 to 2-input-add-mod circuit 706. After 2-input-add-mod circuit 705 computes, the generated modulus result, i.e., Π(1) or Π(M−2), will be outputted to register 722 and 2-input-add-mod circuit 706, respectively. After 2-input-add-mod circuit 706 computes, the generated modulus result, i.e., Π(2) or Π(M−3), will be outputted to register 723 and 2-input-add-mod circuit 701, respectively.
Accordingly, when init1 is HIGH, the three increasing interleaver addresses Π(0)−Π(2), or the three decreasing interleaver addresses Π(M−1)−Π(M−3) computed in parallel by the QPP unit 1 of working example 700 are stored into three registers 721-723, respectively.
Then, when the triggering edge of control signal init1 becomes LOW, multiplexer 711 outputs the modulus result generated by 2-input-add-mod circuit 701 to register 721, where one input of 2-input-add-mod circuit 701 is increasing parameter Π(2) or decreasing parameter Π(M−3), and the other input of 2-input-add-mod circuit 701 is the modulus result generated by 2-input-add-mod circuit 702. The modulus result generated by 2-input-add-mod circuit 702 is the modulus result of the previous modulus result R1 and input parameter 2f2×3. After 2-input-add-mod circuit 701 computes, the generated modulus result, i.e., increasing parameter Π(3) or decreasing parameter Π(M−4), is outputted to 2-input-add-mod circuit 705 as well as register 721.
Similarly, the modulus result generated by 2-input-add-mod circuit 703 is the modulus result of the previous modulus result R2 and input parameter 2f2×3, and is outputted by multiplexer 715 to 2-input-add-mod circuit 705; the modulus result generated by 2-input-add-mod circuit 704 is the modulus result of the previous modulus result R3 and input parameter 2f2×3, and is outputted by multiplexer 716 to 2-input-add-mod circuit 706.
After 2-input-add-mod circuit 705 computes, the generated modulus result, i.e., Π(4) or decreasing parameter Π(M−5), is outputted to register 722 and 2-input-add-mod circuit 706, respectively. After 2-input-add-mod circuit 706 computes, the generated modulus result, i.e., Π(5) or decreasing parameter Π(M−6), is outputted to register 723 and 2-input-add-mod circuit 701, respectively.
Accordingly, as shown in the example of
In comparison with the working example in
In the aforementioned hardware structure designs of QPP unit 1 of
If the data length processed by each MAP processor is M, i.e., the sliding window width, and M is the 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 to be written with data processed by MAP processor.
Referring to
Take k=40, M=8=23 as example.
When QPP interleaver address generation apparatus 300 computes in parallel interleaver addresses Π(i), Π(i+8), Π(i+16), Π(i+24), Π(i+32), QPP interleaver address generation apparatus 300 also outputs information 1020 on the MSB 3 bits of Π(i), Π(i+8), Π(i+16), Π(i+24), Π(i+32) to data multiplexer 1010 at the same time. After data multiplexer 1010 simultaneously receives the five data outputted by MAP processor 1-MAP process 5 using the same Radix-8 (=23), and information 1020 on the MSB 3 bits of Π(i+8), Π(i+16), Π(i+32), data multiplexer 1010 outputs the five data in parallel to the memory addresses of five different memories, such as memory 0 to memory 4. The five memories are determined by information 1020 on the MSB 3 bits of Π(i), Π(i+8), Π(i+16), Π(i+24), Π(i+32), and the memory addresses to be written into are determined by information 1050 on the LSB 3 bits of Π(i), Π(i+8), Π(i+16), Π(i+24), Π(i+32). In other words, the five data are outputted in parallel to five different memories and the five memories use the same memory address to store the data respectively. In this manner, from i=0 to i=7, MAP processor 1-MAP processor 5 output 40 data in parallel totally, and the data are stored into the memory addresses of the five different memories.
In other words, when M=21, as shown in the exemplary embodiment of QPP interleaver address generation apparatus of
Π(0)=0=(000000)2,Π(8)=24=(011000)2,
Π(16)=8=(001000)2,Π(24)=32=(100000)2,
Π(32)=16=(010000)2.
Because the MSB 3 bits of Π(0), Π(8), Π(16), Π(24), Π(32) are 000, 011, 001, 100, 010, respectively, and the LSB 3 bits of Π(0) is 000, therefore, for the first time, the five data (i.e., data 0, data 8, data 16, data 24, data 32) outputted in parallel by five MAP processors (MAP processor 1-MAP processor 5) are written to the address 0 of memory 0, address 0 of memory 3, address 0 of memory 1, address 0 of memory 4 and address 0 of memory 2, respectively.
When i=1, QPP unit 1 to QPP unit 5 compute the following interleaver addresses respectively:
Π(1)=13=(001101)2,Π(9)=37=(100101)2,
Π(17)=21=(010101)2,Π(25)=5=(000101)2,
Π(33)=29=(011101)2.
Because the MSB 3 bits of Π(1), Π(9), Π(17), Π(25), Π(33) are 001, 100, 010, 000, 011, respectively, and the LSB 3 bits of Π(1) is 101, therefore, for the second time, the five data (i.e., data 1, data 9, data 17, data 25, data 33) outputted in parallel by five MAP processors (MAP processor 1 to MAP processor 5) are written to the address 5 of memory 1, address 5 of memory 4, address 5 of memory 2, address 5 of memory 0 and address 5 of memory 3, respectively; and so on.
When i=7, Π(7)=31=(011111)2, for the last time, the five data outputted in parallel by five MAP processors (MAP processor 1 to MAP processor 5) are written to the address 7 of the five memories according to the MSB 3 bits of the interleaver address computed by MAP processor 1-MAP processor. In this example, each memory includes 8 addresses, i.e., address 0 to address 7, so that 8 data outputted by each of Map processors may be written into the 8 addresses of a corresponding memory.
As seen in the exemplary table of
The above exemplar shows that when the radix used by MAP processor is R(=2r), the r interleaver addresses computed by each QPP unit j are mapped to the radix-R(=2r) architecture used by each MAP processor. In addition, assume that the data length processed by each MAP processor is M=2n, the LSB n bits of the interleaver addresses computed by QPP unit 1 may be used as the memory address to write into.
Furthermore, for a MAP processor using different radix, QPP interleaver address generation apparatus 300 may generate corresponding increasing or decreasing interleaver addresses to correspond to the increasing or decreasing metric computation of the MAP processor, as shown in the example of
Accordingly,
In step 1420, each QPP unit j may compute a corresponding group of increasing interleaver addresses or a group of decreasing interleaver addresses in parallel according to the aforementioned equations (1)-(5), and the description is omitted here.
When M=2n, as shown in exemplars of
In summary, the disclosed exemplary embodiments provide an address generation apparatus and method for QPP interleaver. A plurality of QPP units may directly compute increasing interleaver addresses or decreasing interleaver address. Each QPP unit may compute and output a corresponding group of interleaver addresses or decreasing interleaver addresses in parallel. For MAP processors with radix-R(=2r), each original parallel output of interleaver address may be expanded to r parallel interleaver addresses for output. For a MAP processor with different radix-R, the corresponding increasing interleaver address or decreasing address may be generated to correspond to the increasing or decreasing metric computation of the MAP processor. The QPP interleaver address generation apparatus of the disclosed exemplary embodiments may configure the original interleaver length K into KIM interleaver lengths of M without changing the original circuit. The disclosed exemplary embodiments use low complexity circuits, and need no memory space to store interleaver addresses, so that the hardware area is greatly reduced and the computation speed for interleaver address is improved. The disclosed exemplary embodiments may be applicable to mobile communication systems, such as, 3GPPLTE and LTE-A.
Although the present disclosure has been described with reference to the exemplary embodiments, it will be understood that the disclosure 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 |
---|---|---|---|
099127734 | Aug 2010 | TW | national |