Claims
- 1. A method of interleaving and deinterleaving, the method comprising:
executing a first process, thereby producing a first output array; writing the first output array into a first memory structure; reading an input array from the first memory structure; executing a second process, thereby consuming the input array and producing a second output array; writing the second output array into a second memory structure; wherein writing to the first memory structure is in an order different than the reading from the first memory structure; wherein the input array is a first permutation of the first output array; wherein writing to the second memory structure is in a different order than the writing to the first memory structure and is in a different order than the reading from the first memory structure; wherein the second output array is a second permutation of the input array, and wherein the second permutation is the inverse of the first permutation.
- 2. The method of claim 1, wherein the first memory structure and the second memory structure comprise a single memory structure.
- 3. The method of claim 1, wherein the memory structures, being adapted for storing at least an array of the size of the input and output arrays, comprise separate submemories, each of the separate sub-memories being adapted for storing at least parts of the input arrays and output arrays.
- 4. The method of claim 3, wherein each of the separate sub-memories is adapted for storing at most an array of the size of the input array and output arrays divided by N−1, N being the amount of different sub-memories in a memory structure.
- 5. The method of claim 1, wherein at least one of the first and second processes comprises sub-processes, consuming and producing respectively part of the related input and output array.
- 6. The method of claim 5, wherein the sub-processes of a process are executed substantially simultaneously.
- 7. The method of claim 6, wherein writing of the parts of the output array, each part being produced by one of the sub-processes of the first or second process is executed substantially simultaneously.
- 8. The method of claim 6, wherein reading of the parts of the input array, each part being consumed by one of the sub-processes of the first or second process is executed substantially simultaneously.
- 9. An interleaving and deinterleaving apparatus, comprising:
a first computing device, capable of executing a first process, and producing a first output array; a first memory, wherein the first output array is written; a second computing device, capable of executing a second process, consuming an input array read from the first memory, and producing a second output array; a second memory wherein the second output array is written; means for writing to the first memory in a different order than the reading from the first memory, such that the input array is a first permutation of the first output array; and means for writing to the second memory in a different order than the writing to the first memory and in a different order than the reading from the first memory, such that the second output array is a second permutation of the input array, the second permutation being the inverse of the first permutation.
- 10. The apparatus of claim 9, wherein the first and second memory comprise a single memory.
- 11. The apparatus of claim 9, wherein the first and second memories comprise a plurality of sub-memories.
- 12. The apparatus of claim 9, wherein the computing devices are adapted for substantially simultaneously executing a plurality of sub-processes, the subprocesses together defining the first and second process.
- 13. The apparatus of claim 9, wherein the first and second computing device comprise a single computing device.
- 14. The method of claim 3, wherein the addresses for writing data elements to or for reading data elements from the sub-memories is determined by the method:
determining an output order of matrix elements of a matrix by reading serial elements into the matrix according to a first direction of the matrix; reading the elements from the matrix in a second direction of the matrix, the second direction being different from the first direction; and wherein the order of reading out of the matrix elements determines the storage locations of the data elements in the sub-memories.
- 15. The method of claim 14, wherein the dimensions of the matrix are selected such that the writing and reading results in a collision-free reading or writing to the submemories.
- 16. The method of claim 14, wherein the matrix has dimensions and the dimensions of the matrix are selected such that one of the dimensions does not divide the other of the dimensions.
- 17. The method of claim 14, further comprising a shifting operation on the matrix elements read out of the matrix in the first or second directions.
- 18. An apparatus adapted to perform iterative decoding on a serial data stream, the apparatus comprising:
a plurality of memories; a plurality of decoders, each decoder at least partially decoding a portion of the serial data stream in parallel with the remaining decoders; an address generation circuit configured to generate addresses for the plurality of memories; a first data router configured to route data from the plurality of memories to the plurality of decoders; and a second data router configured to route data from the plurality of decoders to the plurality of memories.
- 19. The apparatus of claim 18, wherein the first and second data routers, the plurality of memories and decoders and the address generator co-operate to provide:
a first decoder configured to execute a first process, thereby producing a first output array; means for writing the first output array into a first memory; means for reading from the first memory an input array; a second decoder configured to execute a second process, thereby consuming the input array and producing a second output array; means for writing the second output array into a second memory, wherein the input array is a first permutation of the first output array, and wherein the second output array is a second permutation of the input array, the second permutation being the inverse of the first permutation.
- 20. The apparatus of claim 18, wherein the address generator comprises means for generating the addresses for writing data elements to or for reading data elements from the memories, the means for generating the addresses comprising:
means for reading serial elements into the matrix according to a first direction of the matrix; means for reading the elements from the matrix in a second direction of the matrix, the second direction being different from the first direction; and wherein the order of reading elements out of the matrix determines the storage locations of the data elements in the sub-memories.
RELATED APPLICATIONS
[0001] This application claims the benefit of, and incorporates by reference in its entirety, U.S. Provisional Application No. 60/292,155, filed May 18, 2001 entitled “Method and Apparatus for Interleaving and Deinterleaving”, and this application is a continuation-in-part of U.S. patent application Ser. No. 09/507,545, filed Feb. 18, 2000, entitled “System and Method of Turbo Decoding”, which in turn claims priority to U.S. Provisional Application No. 60/120,738, filed Feb. 18, 1999, entitled “Methods and System Architectures for Turbo Decoding”, and U.S. Provisional Application No. 60/152,514, filed Sep. 2, 1999, entitled “Methods and System Architectures for Turbo Decoding”, both of which Provisional Applications are incorporated by reference.
Provisional Applications (3)
|
Number |
Date |
Country |
|
60292155 |
May 2001 |
US |
|
60120738 |
Feb 1999 |
US |
|
60152514 |
Sep 1999 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09507545 |
Feb 2000 |
US |
Child |
10151700 |
May 2002 |
US |