IP Library Granted Patent US 8,051,239
Granted Patent B2
US 8,051,239 · App. 11/810,199 · Granted Nov 1, 2011

Multiple access for parallel turbo decoder

Assignee: Nokia Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,051,239
App. No.
11/810,199
Granted
Nov 1, 2011
Kind
B2
Abstract

A memory bank contains a plurality of memories, a first Butterfly network is configured to apply memory addresses to the memory bank, and a second Butterfly network is configured to pass data to or from the memory bank. A control signal is generated for the first and second Butterfly networks in accordance with a multiple access rule to enable parallel access to the memory bank, without memory access conflict, for one of a linear order and an interleaved order. The method and apparatus is particularly advantageous for use in turbo decoding.

Claims (153)

1. A method comprising:

providing a memory bank comprised of a plurality of memories, a first Butterfly network configured to apply memory addresses to the memory bank, and a second Butterfly network configured to pass data to or from the memory bank; and

generating control signals for the first and second Butterfly networks in accordance with a multiple access rule to enable 2 m -tuple parallel access to the memory bank, without memory access conflict, for a linear order and for an interleaved order, where m is an integer at least one.

2. The method of claim 1 , where the linear order has a parallel n-tuple access rule, n=2 m , {a 0 (k), a 1 (k), a 2 (k), . . . , a n−1 (k)}, and the interleaved order has a parallel n-tuple access rule {T(a 0 (k)), T(a 1 (k)), T(a 2 (k)), . . . , T(a n−1 (k))} for k=0, 1, . . . , N/n−1, where N is a length of an address space of the memory bank.

3. The method of claim 2 , where the multiple access rule is expressed as:

divide the address space into odd and even addresses: a 0 (k)=2*k runs thru all even addresses and a 1 (k)=2*k+1 runs through all odd addresses.

4. The method of claim 2 , where the multiple access rule is expressed as:

data is processed as pairs {a 0 (k), a 1 (k)} from the beginning and end of the memory bank: a 0 (k)=k, and a 1 (k)=N−1−k for k=0, 1, 2, . . . , N/2−1, and m=1.

5. The method of claim 2 , where the multiple access rule is expressed as:

data is processed as pairs {a 0 (k), a 1 (k)} from the beginning and the middle of the memory bank: a 0 (k)=k, and a 1 (k)=N/2+k for k=0, 1, 2, . . . N/2−1, and m=1.

6. The method of claim 2 , where the multiple access rule is expressed as:

data is processed four consecutive data values in parallel {a 0 (k), a 1 (k), a 2 (k), a 3 (k)}, a 0 (k)=4*k, a 1 (k)=4*k+1, a 2 (k)=4*k+2, and a 3 (k)=4*k+3 for k=0, 1, 2, . . . , N/4−1, and m=2.

7. The method of claim 2 , where the multiple access rule is expressed as:

data is processed four data values in parallel such that two value are consecutive from the beginning and end of the memory, a 0 (k)=2*k, a 1 (k)=2*k+1, a 2 (k)=N−2−2*k, and a 3 (k)=N−1−2*k for k=0, 1, 2, . . . , N/4−1, and m=2.

8. The method of claim 2 , where the multiple access rule is expressed as:

data is processed four data values in parallel such that a data frame is split into four equal size sub frames, a 0 (k)=k, a 1 (k)=N/4+k, a 2 (k)=N/2+k, and a 3 (k)=3*N/4+k for k=0, 1, 2, . . . , N/4−1, and m=2.

9. The method of claim 2 , where the multiple access rule is expressed as:

data is processed 2 m consecutive data values in parallel a p (k)=k*2 m +p for p=0, 1, . . . 2 m −1, where k=0, 1, 2, . . . , N/2 m −1.

10. The method of claim 2 , where the multiple access rule is expressed as:

data is processed 2 m data values in parallel such that 2 m /2 values are consecutive from the beginning and end of the memory, a p (k)=k*2 m−1 +p for p=0, 1, . . . 2 m−1 −1 and a p (k)=N−k*2 m−1 −(2 m −p) for p=2 m−1 , 2 m−1 +1, . . . 2 m −1, where k=0, 1, 2, . . . , N/2 m −1.

11. The method of claim 2 , where the multiple access rule is expressed as:

data is processed 2 m data values in parallel such that a data frame is split into 2 m equal size sub frames, a p (k)=p*N*2 −m +k for p=0, 1, . . . 2 m −1, where k=0, 1, 2, . . . , N/2 m −1.

12. The method of claim 1 , where an interleaver is denoted by T, where the inverse of T is denoted by T −1 , where the multiple access rule is denoted by P 2 (k)={a 0 (k), a 1 (k)} and a{T(a 0 (k)), T(a 1 (k))} for k=0, 1, . . . N/2−1 and input pins a 0 and a 1 of the memory bank, where N represents a length of an address space of the memory bank, where a function F which gives output pins of the memory bank from an address space 0, 1, . . . N−1 to two memory components 0 and 1 has initial values F(j)=0 for j=0, 1,2, . . . , N−1 so that all data stay in memory component 0 initially, and where the control signals are generated as a result of execution of:

assign k = 0;

Repeat

If F(a 0 (k)) = 0 and F(a 1 (k)) = 0 then

start = a 1 (k);

j = a 1 (k);

Repeat

 assign F(j) = 1;

 If T −1 (j) = a 0 (n) for some n then

a = a 1 (n);

 else

a = a 0 (n);

 endif

 if T(a) = a 0 (m) for some m then

next j = a 1 (m)

 else

next j = a 0 (m)

 endif

 j = next j

Until j = start;

endif

k = next k;

Until all k's have been treated,

where the control signals are X k =F(a 0 (k)) and Y k =F(T(a 0 (k))) for the linear access order and the interleaved access order, respectively.

13. The method of claim 1 , further comprising deriving higher order 2 m -parallel processing from a lower order 2 m−1 -counterpart by dividing an address space of a sub memory t, t=0, 1, 2, . . . , 2 m−1 −1, into two equal size subsets of the address space of which one of the subsets is associated with a sub memory t and another of the subsets is associated with a sub memory (t+2 m−1 ).

14. The method of claim 1 , where generating comprises identifying a linear access order and an interleaved access order, identifying a degree of parallel processing and a type of parallel processing, constructing a function that associates each address to one memory, and deriving the control signal from the function.

15. The method of claim 1 , where the method is for data decoding and the data that is decoded is turbo coded data.

16. The method of claim 1 , in which each of the said butterfly networks comprises a plurality of switches, each switch comprising two inputs and two outputs and controlled by a single control bit.

17. A program of machine-readable instructions, embodied on a tangible memory and executable by a digital data processor, to perform actions directed toward controlling memory access, the actions comprising:

generating a control signal for a first Butterfly network and for a second Butterfly network in accordance with a multiple access rule to enable 2 m -tuple parallel access to a memory bank, without memory access conflict, for a linear order and for an interleaved order, where m is an interger at least one; and

sending the control signals to the first and second Butterfly networks for respective linear order and interleaved order accesses;

wherein the memory bank comprises a plurality of memories, the first Butterfly network is configured to apply memory addresses to the memory bank, and the second Butterfly network is configured to pass data to and from the memory bank.

18. The program of claim 17 , where the linear order has a parallel n-tuple access n=2 m , {a 0 (k), a 1 (k), a 2 (k), . . . , a n−1 (k)}, and the interleaved order has a parallel n-tuple access rule {T(a 0 (k)), T(a 1 (k)), T(a 2 (k)), . . . , T(a n−1 (k))} for k=0, 1, . . . N/n−1, where N is a length of an address space of the memory bank.

19. The program of claim 18 , where the multiple access rule is expressed as:

divide the address space into odd and even addresses: a 0 (k)=2*k runs thru all even addresses and a 1 (k)=2*k+1 runs through all odd addresses.

20. The program of claim 18 , where the multiple access rule is expressed as:

data is processed as pairs {a 0 (k), a 1 (k)} from the beginning and end of the memory bank: a 0 (k)=k, and a 1 (k)=N−1−k for k=0,1,2, . . . , N/2−1, and m=1.

21. The program of claim 18 , where the multiple access rule is expressed as:

data is processed from the beginning and the middle of the memory bank: a 0 (k)=k, and a 1 (k)=N/2+k for k=0, 1, 2, . . . N/2−1, and m=1.

22. The program of claim 18 , where the multiple access rule is expressed as:

data is processed four consecutive data values in parallel {a 0 (k), a 1 (k), a 2 (k), a 3 (k)}, a 0 (k)=4*k, a 1 (k)=4*k+1, a 2 (k)=4*k+2, and a 3 (k)=4*k+3 for k=0, 1, 2, . . . , N/4−1, and m=2.

23. The program of claim 18 , where the multiple access rule is expressed as:

data is processed four data values in parallel such that two value are consecutive from the beginning and end of the memory, a 0 (k)=2*k, a 1 (k)=2*k+1, a 2 (k)=N−2−2*k, and a 3 (k)=N−1−2*k for k=0, 1, 2, . . . , N/4−1, and m=2.

24. The program of claim 18 , where the multiple access rule is expressed as:

data is processed four data values in parallel such that a data frame is split into four equal size sub frames, a 0 (k)=k, a 1 (k)=N/4+k, a 2 (k)=N/2+k, and a 3 (k)=3*N/4+k for k=0, 1, 2, . . . , N/4−1, and m=2.

25. The program of claim 18 , where the multiple access rule is expressed as:

data is processed 2 m consecutive data values in parallel a p (k)=k*2 m +p for p=0, 1, . . . 2 m −1, where k=0, 1, 2, . . . , N/2 m −1.

26. The program of claim 18 , where the multiple access rule is expressed as:

data is processed 2 m data values in parallel such that 2 m /2 values are consecutive from the beginning and end of the memory, a p (k)=k*2 m−1 +p for p=0, 1, . . . 2 m−1 −1 and a p (k)=N−k*2 m−1 −(2 m −p) for p=2 m−1 , 2 m−1 +1, . . . 2 m −1, where k=0, 1, 2, . . . , N/2 m −1.

27. The program of claim 18 , where the multiple access rule is expressed as:

data is processed 2 m data values in parallel such that a data frame is split into 2 m equal size sub frames, a p (k)=p*N*2 −m +k for p=0, 1, . . . 2 m −1, where k=0, 1, 2, . . . , N/2 m −1.

28. The program of claim 17 , where an interleaver is denoted by T, where the inverse of T is denoted by T −1 , where the multiple access rule is denoted by P 2 (k)={a 0 (k), a 1 (k)} and {T(a 0 (k)), T(a 1 (k))} for k=0, 1, . . . N/2−1, and input pins a 0 and a 1 of the memory bank, where N represents a length of an address space of the memory bank, where a function F which gives output pins of the memory bank from an address space 0, 1, . . . N−1 to two memory components 0 and 1 has initial values F(j)=0 for j=0, 1, 2, . . . , N−1 so that all data stay in memory component 0 initially, and where the control signals are generated as a result of execution of:

assign k = 0;

Repeat

If F(a 0 (k)) = 0 and F (a 1 (k)) = 0 then

start = a 1 (k);

j = a,(k);

Repeat

 assign F(j) = 1;

 If T −1 (j) = a 0 (n) for some n then

a = a 1 (n);

 else

a = a 0 (n);

 endif

 if T(a) = a 0 (m) for some m then

next j = a 1 (m)

 else

next j = a 0 (m)

 endif

 j = next j

Until j = start;

endif

k = next k;

Until all k's have been treated,

where the control signals are X k =F(a 0 (k)) and Y k =F(T(a 0 (k))) for the linear access order and the interleaved access order, respectively.

29. The program of claim 17 , the actions further comprising deriving higher order 2 m -parallel processing from a lower order 2 m−1 counterpart by dividing an address space of a sub memory t, t=0, 1, 2, . . . 2 m−1 −1, into two equal size subsets of the address space of which one of the subsets is associated with a sub memory t and another of the subsets is associated with a sub memory (t+2 m−1 ).

30. The program of claim 17 , where generating comprises identifying a linear access order and an interleaved access order, identifying a degree of parallel processing and a type of parallel processing, constructing a function that associates each address to one memory, and deriving the control signals from the function.

31. The program of claim 17 , where the data actions are directed toward controlling memory access during data decoding, and the data that is decoded is turbo coded data.

32. The program of claim 17 , in which each of the said butterfly networks comprises a plurality of switches, each switch comprising two inputs and two outputs and controlled by a single control bit.

33. An apparatus comprising:

a memory bank comprising a plurality of memories;

a first Butterfly network coupled to the memory bank and configured to apply memory addresses to the memory bank;

a second Butterfly network coupled to the memory bank and configured to pass data to or from the memory bank; and

a processor having a control output coupled to the first and the second Butterfly networks, configured to generate control signals for the first and second Butterfly networks in accordance with a multiple access rule to enable 2 m -tuple parallel access to the memory bank, without memory access conflict, for a linear order and for an interleaved order, where m is an interger at least one.

34. The apparatus of claim 33 , where the linear order has a parallel n-tuple access rule, n=2 m , {a 0 (k), a 1 (k), a 2 (k), . . . , a n−1 (k)}, and the interleaved order has a parallel n-tuple access rule {T(a 0 (k)), T(a 1 (k)), T(a 2 (k)), . . . , T(a n−1 (k))} for k=0, 1, . . . N/n−1, where and N is a length of an address space of the memory bank.

35. The apparatus of claim 34 , where the multiple access rule is expressed as:

divide the address space into odd and even addresses: a 0 (k)=2*k runs thru all even addresses and a 1 (k)=2*k+1 runs through all odd addresses.

36. The apparatus of claim 34 , where the multiple access rule is expressed as:

data is processed from the beginning and end of the memory bank: a 0 (k)=k, and a 1 (k)=N−1−k for k=0, 1, 2, . . . , N/2−1, and m=1.

37. The apparatus of claim 34 , where the multiple access rule is expressed as:

data is processed from the beginning and the middle of the memory bank: a 0 (k)=k, and a 1 (k)=N/2+k for k=0, 1, 2, . . . N/2−1, and m=1.

38. The apparatus of claim 34 , where the multiple access rule is expressed as:

data is processed four consecutive data values in parallel {a 0 (k), a 1 (k), a 2 (k), a 3 (k)}, a 0 (k)=4*k, a 1 (k)=4*k+1, a 2 (k)=4*k+2, and a 3 (k)=4*k+3 for k=0, 1, 2, . . . , N/4−1, and m=2.

39. The apparatus of claim 34 , where the multiple access rule is expressed as:

data is processed four data values in parallel such that two value are consecutive from the beginning and end of the memory, a 0 (k)=2*k, a 1 (k)=2*k+1, a 2 (k)=N−2−2*k, and a 3 (k)=N−1−2*k for k=0, 1, 2, . . . , N/4−1, and m=2.

40. The apparatus of claim 34 , where the multiple access rule is expressed as:

data is processed four data values in parallel such that a data frame is split into four equal size sub frames, a 0 (k)=k, a 1 (k)=N/4+k, a 2 (k)=N/2+k, and a 3 (k)=3*N/4+k for k=0, 1, 2, . . . , N/4−1, and m=2.

41. The apparatus of claim 34 , where the multiple access rule is expressed as:

data is processed 2 m consecutive data values in parallel a p (k)=k*2 m +p for p=0, 1, . . . 2 m −1, where k=0, 1, 2, . . . , N/2 m −1.

42. The apparatus of claim 34 , where the multiple access rule is expressed as:

data is processed 2 m data values in parallel such that 2 m /2 values are consecutive from the beginning and end of the memory, a p (k)=k*2 m−1 +p for p=0, 1, . . . 2 m−1 −1 and a p (k)=N−k*2 m−1 −(2 m −p) for p=2 m−1 , 2 m−1 +1, . . . 2 m −1, where k=0, 1, 2, . . . , N/2 m −1.

43. The apparatus of claim 34 , where the multiple access rule is expressed as:

data is processed 2 m data values in parallel such that a data frame is split into 2 m equal size sub frames, a p (k)=p*N*2 −m +k for p=0, 1, . . . 2 m −1, where k=0, 1, 2, . . . , N/2 m −1.

44. The apparatus of claim 33 , where an interleaver is denoted by T, where the inverse of T is denoted by T −1 , where the multiple access rule is denoted by P 2 (k)={a 0 (k), a 1 (k)} and {T(a 0 (k)), T(a 1 (k))} for k=0, 1, . . . N/2−1, and input pins a 0 and a 1 of the memory bank, where N represents a length of an address space of the memory bank, where a function F which gives output pins of the memory bank from an address space 0, 1, . . . N−1 to two memory components 0 and 1 has initial values F(j)=0 for j=0, 1, 2, . . . , N−1 so that all data stay in memory component 0 initially, and where the control signals are generated as a result of execution of:

assign k = 0;

Repeat

If F(a 0 (k)) = 0 and F(a 1 (k)) = 0 then

start = a 1 (k);

j = a 1 (k);

Repeat

 assign F(j) = 1;

 If T −1 (j) = a 0 (n) for some n then

a = a 1 (n);

 else

a = a 0 (n);

 endif

 if T(a) = a 0 (m) for some m then

next j = a 1 (m)

 else

next j = a 0 (m)

 endif

 j = next j

Until j = start;

endif

k = next k;

Until all k's have been treated,

where the control signals are X k =F(a 0 (k)) and Y k =F(T(a 0 (k))) for k=0, 1, 2, . . . , N/2−1, for the linear access order and the interleaved access order, respectively.

45. The apparatus of claim 33 , wherein the processor is configured to generate the control signal by deriving higher order 2 m -parallel processing from a lower order 2 m−1 counterpart by dividing an address space of a sub memory t, t=0, 1, 2, . . . 2 m−1 −1, into two equal size subsets of the address space of which one subset is associated with a sub memory t and another of the subsets is associated with a sub memory (t+2 m−1 ).

46. The apparatus of claim 33 , wherein the processor is configured to generate the control signals by identifying a linear access order and an interleaved access order, identifying a degree of parallel processing and a type of parallel processing, constructing a function that associates each address to one memory, and deriving the control signals from the function.

47. The apparatus of claim 33 , where the data that is passed is turbo coded data for decoding.

48. The apparatus of claim 33 , in which each of the said butterfly networks comprises a plurality of switches, each switch comprising two inputs and two outputs and controlled by a single control bit.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 1, 2015
From: NOKIA CORPORATION
To: NOKIA TECHNOLOGIES OY
Reel/Frame 035561/0545 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 4, 2007
From: NIEMINEN, ESKO
To: NOKIA CORPORATION
Reel/Frame 019438/0492 →
Continuity (1)
Related Publication 20080301383A1 · Dec 4, 2008