Addressing scheme for convolutional interleaver/de-interleaver
First Claim
1. A method of generating successive addresses suitable for carrying out data interleaving or de-interleaving in a data stream using a random access memory (RAM), comprising:
- configuring a number of memory branches in a given interleaving or de-interleaving RAM wherein the branches have different numbers of memory locations for reading out and for storing bytes of a data stream, thus defining memory branches of different lengths in the given RAM;
determining the length of a given memory branch by using a first adder;
determining a start address for a given memory branch in the RAM corresponding to a first memory location of the given branch, by using a second adder that adds the length and the start address of a previous branch;
determining for each memory branch corresponding offset values, and storing the offset values in an offset RAM;
addressing a memory location in a given memory branch by using a third adder that adds the start address for the given branch to a current offset value stored in the offset RAM for the given branch; and
if the current offset value does not exceed the length of the given memory branch, generating an address corresponding to the sum of the branch start address and the current offset value for addressing a successive memory location of the branch, and incrementing the offset value for the branch by one; and
when the current offset value equals the length of the given memory branch, generating an address corresponding to a last memory location of the branch, and resetting the offset value for the branch to zero.
6 Assignments
0 Petitions
Accused Products
Abstract
A memory addressing scheme suitable for use for either interleaving or de-interleaving data bytes of, e.g., a broadcast digital television (DTV) data stream. A number of memory branches are configured in a random access memory (RAM), wherein at least some of the branches have different numbers of memory locations for reading out and for storing data bytes, thus defining memory branches of different lengths in the RAM. A start address is determined for each of the memory branches in the RAM, corresponding to a first memory location of each branch. An offset value is determined for each memory branch, to be added to the start address for the branch for addressing a memory location of the branch. If an offset value does not exceed the length of a corresponding branch, an address corresponding to the sum of the branch start address and the offset value is generated for addressing a successive memory location of the branch, and the offset value for the branch is incremented by one. When an offset value equals the length of a corresponding branch, an address corresponding to a last memory location of the branch is generated, and the offset value for the branch is reset to zero.
42 Citations
12 Claims
-
1. A method of generating successive addresses suitable for carrying out data interleaving or de-interleaving in a data stream using a random access memory (RAM), comprising:
-
configuring a number of memory branches in a given interleaving or de-interleaving RAM wherein the branches have different numbers of memory locations for reading out and for storing bytes of a data stream, thus defining memory branches of different lengths in the given RAM;
determining the length of a given memory branch by using a first adder;
determining a start address for a given memory branch in the RAM corresponding to a first memory location of the given branch, by using a second adder that adds the length and the start address of a previous branch;
determining for each memory branch corresponding offset values, and storing the offset values in an offset RAM;
addressing a memory location in a given memory branch by using a third adder that adds the start address for the given branch to a current offset value stored in the offset RAM for the given branch; and
if the current offset value does not exceed the length of the given memory branch, generating an address corresponding to the sum of the branch start address and the current offset value for addressing a successive memory location of the branch, and incrementing the offset value for the branch by one; and
when the current offset value equals the length of the given memory branch, generating an address corresponding to a last memory location of the branch, and resetting the offset value for the branch to zero. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A convolutional interleaver/de-interleaver circuit for interleaving/de-interleaving data bytes of a data stream, comprising:
-
a processor configured to exchange control signals with other components of the circuit;
a random access memory (RAM) configured to have a number of memory branches, wherein the branches have different numbers of memory locations for reading out and for storing bytes of a data stream applied to an input of the circuit, thus defining memory branches of different lengths in the RAM;
a memory branch length determination stage including a first adder configured to determine the number of memory locations in each of the memory branches in the RAM;
a start address determination stage including a second adder configured to determine a start address corresponding to a first memory location of a given memory branch in the RAM by adding the length and the start address of a previous branch; and
an offset value determination stage configured to determine for each memory branch corresponding offset values, and an offset RAM arranged to store a current offset value for each branch; and
an address generation stage including a third adder and coupled to the memory branch length, the start address, and the offset value determination stages, and configured to address a memory location in a given memory branch in the RAM by adding the start address for the given branch to a current offset value stored in the offset RAM for the given branch wherein, if the current offset value determined for the given branch does not exceed the length of the branch, an address is generated which corresponds to the sum of the branch start address the current offset value, and, when the current offset value determined for the given branch equals the length of the branch, an address is generated which corresponds to a last memory location of the branch, and the current offset value for the branch is reset to zero. - View Dependent Claims (9, 10, 11, 12)
-
Specification