US 6339834 B1 Abstract Interleavers based on golden-section increments are disclosed for use with Turbo and Turbo-like error-correcting codes. The interleavers have a tendency to maximally spread the error-bursts generated by an error-burst channel or decoder, independent of the error-burst length. The code block size uniquely defines a golden section increment without having to perform a time consuming search for the best increment value. The disclosed embodiments include golden relative prime interleavers, golden vector interleavers and dithered golden vector interleavers. Also disclosed are methods to reduce the size of memory required for storing the interleaving indexes.
Claims(45) 1. An interleaving method for rearranging a stream of N input elements into a stream of N output elements, said interleaving method comprising the steps of:
(a) generating a sequence of input indexes and a sequence of output indexes, wherein at least one of said sequences of indexes is defined in terms of a golden section g equal to ({square root over (5−1)})/2;
(b) writing said stream of N input elements into an element memory according to said sequence of input indexes; and
(c) reading said stream of N output elements from said element memory according to said sequence of output indexes.
2. An interleaving method as defined in
3. An interleaving method as defined in
(i) generating a sequence of nominal indexes defined in terms of g;
(ii) reading a sequence of index offsets from index memory; and
(iii) combining said sequence of nominal indexes with said sequence of index offsets to generate the at least one of said sequences of indexes.
4. An interleaving method as defined in
s is a pre-selected integer starting index,
p is an integer index increment which is prime relative to N, defined in terms of g, and
n is an integer progressively rising from 0 to N−1.
5. An interleaving method as defined in
6. An interleaving method as defined in
p has a value close to a real value c=N(g
^{m}+j)/r, where m is a pre-selected non-zero integer,
r is a non-zero integer defining a distance between any pair of input elements that are to be maximally spread, and
j is a pre-selected integer modulo r.
7. An interleaving method as defined in
8. An interleaving method as defined in
9. An interleaving method as defined in
10. An interleaving method as defined in
11. An interleaving method as defined in
(i) generating a golden vector v with elements defined as v(n)=s+nc, modulo N, where
s is a pre-selected real starting value,
c is a real increment value defined in terms of g, and
n is an integer progressively rising from 0 to N−1;
(ii) finding a sort vector z determined from a(n)=v(z(n)), for n=0 . . . N−1, where a contains the elements of v sorted in one of rising and descending orders; and
(iii) assigning one of said sequences of indexes a sequence i with elements defined by one of i(n)=z(n) and i(z(n))=n, for n=0 . . . N−1.
12. An interleaving method as defined in
^{m}+j)/r, wherem is a pre-selected non-zero integer,
r is a non-zero integer defining a distance between any pair of input elements that are to be maximally spread, and
j is a pre-selected integer modulo r.
13. An interleaving method as defined in
14. An interleaving method as defined in
15. An interleaving method as defined in
16. An interleaving method as defined in
17. An interleaving method as defined in
18. An interleaving method as defined in
^{m}+j)/r, wherem is a pre-selected non-zero integer,
r is a non-zero integer defining a distance between any pair of input elements that are to be maximally spread, and
j is a pre-selected integer modulo r.
19. An interleaving method as defined in
^{m}+j)/r, wherem is a pre-selected non-zero integer,
j is a pre-selected integer modulo r.
20. An interleaving method as defined in
21. An interleaving system for rearranging a stream of N input elements into a stream of N output elements, said interleaving system comprising:
(a) an element memory;
(b) an indexer for generating a sequence of input indexes and a sequence of output indexes, wherein at least one of said sequences of indexes is defined in terms of a golden section g equal to ({square root over (5−1)})/2;
(c) an input module coupled to said indexer for writing said stream of N input elements into said element memory according to said sequence of input indexes; and
(d) an output module coupled to said indexer for reading said stream of N output elements from said element memory according to said sequence of output indexes.
22. At least one interleaving system as defined in
23. An interleaving system as defined in
24. An interleaving system as defined in
25. An interleaving system as defined in
(i) an index memory for storing a sequence of input index offsets; and
(ii) a nominal index generator coupled to said index memory for generating a sequence of nominal input indexes;
wherein the indexer generates the sequence of input indexes by adding said sequence of input index offsets to said sequence of nominal input indexes.
26. An interleaving system as defined in
(i) an index memory for storing a sequence of output index offsets; and
(ii) a nominal index generator coupled to said index memory for generating a sequence of nominal output indexes;
wherein the indexer generates the sequence of output indexes by adding said sequence of output index offsets to said sequence of nominal output indexes.
27. An interleaving system as defined in
s is a pre-selected integer starting index,
p is an integer index increment which is prime relative to N, defined in terms of g, and
n is an integer progressively rising from 0 to N−1.
28. An interleaving system as defined in
29. An interleaving system as defined in
^{m}+j)/r, wherem is a pre-selected non-zero integer,
j is a pre-selected integer modulo r.
30. An interleaving system as defined in
31. An interleaving system as defined in
32. An interleaving system as defined in
33. An interleaving system as defined in
34. An interleaving system as defined in
(i) a vector generator for generating a golden vector v with elements defined as v(n)=s+nc, modulo N, where
s is a pre-selected real starting value,
c is a real increment value defined in terms of g, and
n is an integer progressively rising from 0 to N−1;
(ii) sorting means responsive to said vector generator for finding a sort vector z determined from a(n)=v(z(n)), for n=0 . . . N−1, where a contains the elements of v sorted in one of rising and descending orders; and
(iii) assigning means responsive to said sorting means for assigning the at least one of said sequences of indexes a sequence i with elements defined by one of i(n)=z(n) and i(z(n))=n, for n=0 . . . N−1.
35. An interleaving system as defined in
36. An interleaving system as defined in
c=N(g
^{m}+j)/r, where m is a pre-selected non-zero integer,
j is a pre-selected integer modulo r.
37. An interleaving system as defined in
38. An interleaving system as defined in
39. An interleaving system as defined in
40. An interleaving system as defined in
41. An interleaving system as defined in
42. An interleaving system as defined in
^{m}+j)/r, wherem is a pre-selected non-zero integer,
j is a pre-selected integer modulo r.
43. At least one interleaving system as defined in
44. An interleaving system as defined in
^{m}+j)/r, wherem is a pre-selected non-zero integer,
j is a pre-selected integer modulo r.
45. An interleaving system as defined in
Description This application claims benefit to Provisional Application No. 60/087,591 filed Jun. 6, 1998. This invention relates to interleaving and is particularly concerned with interleaving systems and methods suited for Turbo and Turbo-like forward-error-correcting codes, by using golden section increments. Interleaving is a key component of many digital communications systems involving forward error correction (FEC) coding. This is especially true for channels characterized by fading, multipath, and impulse noise, for example. A second example is the class of magnetic recording channels where bursts of errors are caused by defects in the recording media. Interleaving, or permuting, of the transmitted elements, provides time diversity for the FEC scheme being employed. An element is used herein to refer to any symbol, sample, digit, or a binary digit (bit). Interleaving spreads out the corrupted portions of the signal and makes it easier for the FEC scheme to correct the associated errors. Conventionally, the interleaving strategy is only weakly linked to the FEC scheme being employed. An exception is the case of concatenated FEC schemes using concatenated Viterbi and Reed-Solomon decoders. The interleaver is placed between the two FEC encoders to help spread out error bursts and the depth of interleaving is directly linked to the error correction capability of the inner (Viterbi) decoder. More recently, however, interleavers have become a more integral part of the coding and decoding strategy itself. Such is the case for Turbo and Turbo-like codes, where the interleaver forms an integral part of the coding scheme. The problem of finding optimal interleavers for such schemes is really a code design problem, and is an on-going area of research. Claude Berrou obtained U.S. Pat. No. 4,446,747 entitled: “Error-correction coding method with at least two systematic convolutional codings in parallel, corresponding iterative decoding method, decoding module and decoder”. This patent describes essentially the same Turbo-code presented by Berrou et al. in their paper “Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes”, published in the Proceedings of ICC'93, Geneva, Switzerland, pp. 1064-1070, May, 1993. The Turbo code presented, is a rate ˝ binary code that provided performance within 0.5 dB of the BPSK capacity limit at a BER of 10 More recently Berrou, and Glavieux provided more discussion of the coding and decoding of Turbo codes in their paper “Near Optimum Error Correcting Coding and Decoding: Turbo-Codes”, published in the IEEE Trans. on Conm., Vol. 44, No. 10, October 1996. FIG. 2 illustrates one approach to Turbo decoding, based on maximum a posteriori (MAP) decoding algorithm derived by Bahl et al their paper “Optimal Decoding of Linear Codes for Minimizing Symbol Error Rate”, published in IEEE Trans. on Inform. Theory, Vol. IT-20, pp. 284-287, March 1974. The MAP decoder is implemented in the log domain, so the log-MAP algorithm is used. The Turbo decoder uses an iterative process where the de-interleaved output vector of the second log-MAP decoder L Interleaving is a key component of any Turbo encoder and decoder, as already shown in FIGS. 1 and 2. Although some form of random or pseudo-random interleaving is usually recommended for Turbo-codes, it has been found that simple structured interleavers can also offer excellent performance, especially for short data blocks on the order of a few hundred bits. Examples of structured prior art interleavers include relative prime interleavers, convolutional interleavers, helical interleaver and L×M matrix (or block) interleavers using L rows and M columns. L×M matrix interleavers are usually implemented by writing into the rows and reading out of the columns, or vice versa. The rows and/or columns are sometimes read in and/or out in a permuted order. This permuted order is often implemented using a relative prime number. That is, the row or column index can be generated using modulo arithmetic where the index increment and row or column lengths are relative prime numbers. With L or M equal to 1, this type of interleaver simply becomes a one-dimensional relative prime interleaver. In U.S. Pat. No. 5,056,105, Darmon et al refer to relative prime interleavers which seem to offer some advantages over conventional L×M matrix interleavers. In a relative prime interleaver, the n'th digit (element) of the interleaved vector is read out of the original vector using the index s+np, modulo N, where s is an integer starting index and p is an integer index increment. The starting index s is usually set to 0 but can be any index. The increment p must be relative prime to the block size N to ensure that each element is read out once and only once. One problem with prior art interleavers is that they are usually designed to provide a specific interleaving depth. This is fine if each burst of errors never exceeds the interleaver depth, but it is wasteful if the interleaver is over-designed (too long) and error bursts are much shorter than the interleaver depth. For example, a simple 10×10 matrix interleaver has an interleaving depth of 10 elements. If a burst of 10 errors occurs, the de-interleaver will optimally spread these 10 errors throughout the block of 100 elements. If the error burst is 11 elements long, however, then two errors will again be adjacent. If the error burst is only 2-elements long then these 2 errors will only be spaced 10 elements apart after de-interleaving, but they could have been spaced much farther apart if it was known that only two errors were present. For example, a 2×50 matrix interleaver would have spaced these two errors 50 elements apart. Of course this interleaver is not good for longer bursts of errors. In practice, most channels usually generate error events of random length, and the average length can be time varying, as well as unknown. This makes it very difficult to design optimum interleaving strategies using the above-mentioned prior art methods. It is also desirable for an interleaving strategy for Turbo-codes to spread “error bursts” from one component decoder throughout the data block for the other component decoder. One measure of how good a particular burst of elements has been spread by an interleaver is the minimum difference between the interleaved indexes of the original burst of elements considered. The problem is that error bursts can start anywhere and are random in length. The best interleaver for one burst length is not necessarily the best interleaver for another burst length. What is sought is an interleaving strategy that is good for any error burst length. An object of this invention is to provide an improved interleaver with a tendency to maximally spread the error-bursts generated by an error-burst channel or decoder, independent of the error-burst length. It is another object of this invention to use golden section increments to achieve desirable spreading properties. In addressing these objects, the invention makes use of the golden section, which is easy to compute for any block size, and is unique for that block size. In other words, the block size uniquely defines a golden section increment in accordance with this invention, without having to perform a time consuming search for the best increment value. A number of interleaver embodiments, based on this golden section increment, are provided by this invention. The term interleaver is also used to refer to a de-interleaver. With this invention, there is no concept of interleaver depth and no need to design the interleaver for a particular channel type or for a worst case error-burst length. For Turbo-codes it is also beneficial to obtain good spreading for elements r apart, where r is the repetition period of the feedback polynomial in the RSC encoder, as well as for adjacent elements. As an example, a good binary, rate ˝, RSC encoder has a repetition period of r=2 In accordance with an aspect of this invention there is provided an interleaving system for rearranging a stream of N input elements into a stream of N output elements, said interleaving system comprising: (a) an element memory; (b) an indexer for generating a sequence of input indexes and a sequence of output indexes, wherein at least one of said sequences of indexes is defined in terms of a golden section g equal to ({square root over (5−1)})/2; (c) an input module coupled to said indexer for writing said stream of N input elements into said element memory according to said sequence of input indexes; and (d) an output module coupled to said indexer for reading said stream of N output element from said element memory according to said sequence of output indexes. The interleaving system can further comprise an index memory for storing a sequence of index offsets corresponding to the at least one of said sequences of indexes. Alternatively, the indexer comprises an index memory for storing the at least one of said sequences of indexes. Another alternative is for the indexer to comprise: (i) an index memory for storing a sequence of input index offsets; and (ii) a nominal index generator coupled to said index memory for generating a sequence of nominal input indexes; wherein the indexer generates the sequence of input indexes by adding said sequence of input index offsets to said sequence of nominal input indexes. Yet another alternative is for the indexer to comprise: (i) an index memory for storing a sequence of output index offsets; (ii) a nominal index generator coupled to said index memory for generating a sequence of nominal output indexes; wherein the indexer generates the sequence of output indexes by adding said sequence of output index offsets to said sequence of nominal output indexes. In a first embodiment of this invention, a golden relative prime interleaver is provided wherein the indexer generates the at least one of said sequences of indexes as a sequence i with elements defined as i(n)=s+np, modulo N, where s is a pre-selected integer starting index, p is an integer index increment which is prime relative to N, defined in terms of g, and n is an integer progressively rising from 0 to N−1. The indexer gives p a value close to a real value c=N(g In a second embodiment of this invention, a golden vector interleaver is provided, wherein the indexer comprises: (i) a vector generator for generating a golden vector v with elements defined as v(n)=s+nc, modulo N, where s is a pre-selected real starting value, c is a real increment value defined in terms of g, and n is an integer progressively rising from 0 to N−1; (ii) sorting means responsive to said vector generator for finding a sort vector z determined from a(n)=v(z(n)), for n=0 . . . N−1, where a contains the elements of v sorted in one of rising and descending orders; and (iii) assigning means responsive to said sorting means for assigning the at least one of said sequences of indexes i with elements defined by one of i(n)=z(n) and i(z(n))=n, for n=0 . . . N−1. In one aspect of this second embodiment, a dithered golden vector interleaver is provided, wherein the vector generator uses a dither vector d with an n'th real dithering component d(n) of a prescribed distribution D for generating said golden vector such that v(n)=s+nc+d(n), modulo N. Preferably, c=N(g In a practical embodiment of this invention, at least one interleaving system forms part of a tail-biting Turbo-code encoder comprising a plurality of tail-biting systematic convolutional encoders operating in parallel, wherein each of said at least one interleaving system is positioned at an input of at least one of said plurality of tail-biting systematic convolutional encoders. In another practical embodiment of this invention, at least one interleaving system forms part of a Turbo-code encoder comprising a plurality of systematic convolutional encoders operating in parallel, wherein each of said at least one interleaving system is positioned at an input of at least one of said plurality of systematic convolutional encoders. In another aspect of the present invention, there is provided an interleaving method for rearranging a stream of N input elements into a stream of N output elements, said interleaving method comprising the steps of: (a) generating a sequence of input indexes and a sequence of output indexes, wherein at least one of said sequences of indexes is defined in terms of a golden section g equal to ({square root over (5−1)})/2; (b) writing said stream of N input elements into an element memory according to said sequence of input indexes; and (c) reading said stream of N output element from said element memory according to said sequence of output indexes. Alternative embodiments of this method are provided bearing similar limitations as those provided for the interleaving system defined above. Exemplary embodiments of the invention will now be further described with references to the drawings in which same reference numerals designate similar parts throughout the figures thereof, and wherein: FIG. 1 illustrates, in a block diagram, a Turbo-code encoder using two RSC codes with puncturing according to prior art; FIG. 2 illustrates, in a block diagram, a Turbo-code decoder using two log-MAP component decoders according to prior art; FIG. 3 gives an illustration of the golden section principle; FIG. 4 illustrates, in a block diagram, an interleaver (or a de-interleaver) where the input and output indexes are generated in terms of the golden section value g, in accordance with a first embodiment of this invention; FIG. 5 illustrates, in a block diagram, an interleaver (or a de-interleaver) where the input and output indexes are generated in terms of the golden section value g, and index offsets stored in memory, in accordance with a second embodiment of this invention; FIG. 6 illustrates, in a flow diagram, a method used to generate the indexes for a golden relative prime interleaver embodiment based on the interleaver shown in FIG. 4; FIG. 7 illustrates, in a flow diagram, a method used to generate the indexes for a golden vector interleaver embodiment based on the interleaver shown in FIG. 5; FIG. 8 illustrates, in a flow diagram, a method used to generate the indexes for a dithered golden vector interleaver embodiment based on the interleaver shown in FIG. 5; FIG. 9 shows in a graph minimum distances between points versus number of points with a golden section increment, as shown in FIG. 3; FIG. 10 shows in a graph minimum differences between interleaver indexes versus number of elements considered with a golden relative prime interleaver, as shown in FIG. 6, where N=1028, p=393, area under curve=4620; and FIG. 11 shows in a graph minimum differences between interleaver indexes versus number of elements considered with a golden vector interleaver, as shown in FIG. 6, where N=1028, area under curve=5250. The golden section arises in many interesting mathematical problems. FIG. 3 illustrates the golden section principle in relation to the interleaving problem of interest. The term interleaving is also used herein to refer to de-interleaving. Given a line segment of length l, the problem is to divide it into a long segment of length g and a shorter segment of length 1−g, such that the ratio of the longer segment to the entire segment is the same as the ratio of the shorter segment to the longer segment. That is, Solving this simple quadratic equation for g gives the golden section value Now consider points generated by starting at 0 and adding increments of g, using modulo-1 arithmetic. After the first increment there are two points at 0 and g that are 1−g apart, using modulo-1 arithmetic. Modulo distances are used to allow for the option of having the first point start anywhere along the line segment. From equation (1), the distance of 1−g is the same as g FIG. 9 shows a plot of minimum distances versus the number of points considered, as points are added using an increment of g with modulo-1 arithmetic. FIG. 9 also shows an upper bound for each specific number of points. That is, given n points, but only n points, they could be uniformly spaced with a minimum distance of 1/n. Of course, the golden section increment results are valid for all numbers of points at the same time. The upper bound is not. Even so, the golden section increment results are seen to track the upper bound quite closely. Note that even when the minimum distance drops, most points will still be at the previous minimum distance from their neighbours, with the average distance between points equal to the upper bound. The properties illustrated in FIG. 9 are desirable for interleavers in general, but in particular are desirable for Turbo-code interleavers. It is now shown how this property of the golden section increment can be used in practical interleavers according to alternative embodiments of this invention. FIG. 4 illustrates, in a block diagram, an interleaving system (also called an interleaver) using golden section increments, in accordance with a first embodiment of this invention. The same system is alternatively useable for de-interleaving, as will be evident from the discussion further below. In the first embodiment, a stream of N input elements s In yet another alternative embodiment of the invention, both i FIG. 5 illustrates, in a block diagram, an interleaving system using golden section increments, in accordance with a second embodiment of this invention. The same system is alternatively useable for de-interleaving, as will be evident from the discussion further below. In the second embodiment, the interleaver has a similar structure, and operates in a similar way, to that of the first embodiment as shown in FIG. 4, but with the addition of an index memory FIGS. 4 and 5 also represent de-interleavers. The de-interleaver corresponding to a specific interleaver can be implemented in a number of alternative embodiments. For example, the de-interleaver can be implemented using the same index sequences, i FIG. 6 shows a method used to generate the indexes for a golden relative prime interleaver embodiment based on the interleaver shown in FIG. The elements of the interleaving index sequence i are calculated as follows: where s is an integer starting index, and n has an integer value progressively rising from 0 to N−1. The starting index s is preferably set to 0. However, other integer values of s can be selected in alternative embodiments. The integer relative prime increment p, is chosen “close” (as further defined below) to one of the non-integer values of
where g is the golden section value, m is any positive integer greater than zero, r is the index spacing (distance) between nearby elements to be maximally spread, and j is any integer modulo r. The preferred values for m are 1 and 2. Alternatively, m has one of other relatively small integer values. In a simplified implementation of this embodiment, j is set to 0 and r is set to 1. Preferably for Turbo-codes, greater values of j and r are used to obtain the best spreading for elements spaced apart by r, where r is the repetition period of the RSC encoder, rather than simply for adjacent elements. With this in mind, the preferred choices for j and r are values that result in spreading by approximate golden section spacing for adjacent elements, as well as those spaced by r. For example, j=9 and r=15 are preferred for a memory-4 Turbo-code with an RSC code repetition period of r=15. Being “close” is defined as falling within a narrow window surrounding the exact real value of c, derived as above from the golden section value g. In the simplest implementation the relative prime p is selected to have the closest value to c, for predetermined values of N, m, j, and r. In those embodiments having j=0 and r=1, the relative prime p is selected to be closest to Ng In the golden relative prime interleaver described above, the storage vector x is not physically interleaved, but is simply read out in an interleaved order when required, without necessarily requiring a memory to store either the interleaver indexes or any interleaved results. In other words, the n'th element of the interleaved output s FIG. 10 shows the spreading properties for an interleaving method as shown in FIG. 6, having a size N=1028 (used in a Turbo-code encoder with 1024 information bits and 4 flush bits per block), j=0, r=1, m=2 and a relative prime increment of p=393. The value of c=Ng The corresponding golden relative prime de-interleaver, also represented by FIG. 4, performs de-interleaving by writing into x (instead of reading from x) using the same interleaver indexes as described above. Alternatively, the de-interleaver writes the elements with an index increment of 1 and reads out the de-interleaved elements using an index increment of q, where pq=1, modulo N. Note that golden relative prime interleavers (and de-interleavers) do not necessarily require any memory to store the interleaver indexes, as the indexes are easily calculated as required, in either hardware or software. This is why FIG. 4 does not show any index memory. Alternatively, the indexes are stored in index memory FIG. 7 shows a method used to generate the indexes for a golden vector interleaver embodiment based on the interleaver shown in FIG.
where s is any real starting value. The fourth step The starting value s is preferably set to 0. However, other real values of s can be selected in alternative embodiments. The preferred values for m are 1 and 2. Alternatively, m has one of other relatively small integer values. In a simplified implementation of this embodiment, j is set to 0 and r is set to 1. Preferably for Turbo-codes, greater values of j and r are used to obtain the best spreading for elements spaced apart by r, where r is the repetition period of the RSC encoder, rather than simply for adjacent elements. With this in mind, the preferred choices for j and r are values that result in spreading by approximate golden section spacing for adjacent elements, as well as those spaced by r. For example, j=9 and r=15 are preferred for a memory-4 Turbo-code with an RSC code repetition period of r=15. The golden vector interleaver illustrated by FIGS. 5 and 7 does not suffer from accumulating quantization errors, as does the golden relative prime interleaver illustrated by FIGS. 4 and 6. In the golden vector interleaver case, a quantization error only occurs in the final assignment of the indexes. On the other hand, the golden vector interleaver cannot be implemented using the simple modulo-increment indexing method described above for the golden relative prime embodiment. In contrast, the golden vector interleaver indexes must be pre-computed and stored in index memory The required size of the index memory FIG. 11 shows the spreading properties for a golden vector interleaver having a size N=1028 (used in a Turbo encoder with 1024 data bits and 4 flush bits per block), j=0, r=1, and m=2. The value of real increment c=Ng It has been found for Turbo-codes that interleavers with some randomness tend to perform better than completely structured interleavers, especially for large block sizes on the order of 1000 or more bits. However, the spreading properties of the golden vector interleaver are still very desirable, both to maintain a good minimum distance (a steep error curve) and to ensure rapid convergence by efficiently spreading error-bursts throughout the block. These two features are encompassed in the dithered golden vector indexing method of FIG.
where d(n) is the n'th dither component. The distribution *D of d has prescribed parameters (e.g. width and standard deviation) with its parameters being scalable with N. In one embodiment, the added dither belongs to a uniform random distribution confined between 0 and NW Based on experimental findings for Turbo-codes, a crude rule of thumb for any block size is to use W As for the golden vector interleaver, the required amount of index memory can be significantly reduced by only storing index offsets. As an example, the n'th index is readily calculated as required using i(n)=floor [v(n)]+o(n), where the floor function extracts the integer part, also called the nominal index, v(n) is calculated using real modulo N arithmetic as in (6), and by definition o(n) is the required index offset stored in the index memory The dithered golden vector interleaver is found to maintain most of the desirable spreading properties of the golden vector embodiment, but is also capable of adding randomness to the interleaver to improve Turbo-code performance for large blocks, in the order of 1000 or more bits. In contrast, the golden relative prime embodiment is suitable for smaller blocks in the order of 1000 or fewer bits because it requires relatively less processing and smaller memory to implement, and provides close to the same performance as the dithered golden embodiment for those block sizes. A modification to the dithered golden vector interleaver, illustrated by FIGS. 5 and 8, is to round c, as defined in (4), either up or down to the nearest integer value. This constraint ensures that N times c, modulo N, is equal to zero, which in turn ensures that the resulting spreading properties are valid, in a modulo sense, for both the interleaver and the corresponding de-interleaver. Without this constraint, the spreading properties of the de-interleaver, measured using modulo-N arithmetic, are subject to degradation due to edge effects. This is a desirable constraint for tail-biting Turbo-codes, where the modulo-N spreading properties of the de-interleaver are just as important as the modulo-N spreading properties of the interleaver. Note that this constraint is not as severe as selecting the closest relative prime, as is the case for the golden relative prime interleaver. The dither step Although the description above concerning Turbo-codes is directed to Turbo-codes with two constituent RSC encoders and one interleaver, the same described interleaving techniques are also applicable to generalized Turbo-codes with two or more different interleavers. In the latter case, the interaction between the different interleavers becomes important. A solution that provides good relative spreading between all interleaved sequences is to use different small values of m (i.e. different powers of g) for each of the different interleavers. It is to be understood that most of the discussion above applied to the term “interleaver” applies equally to the term “de-interleaver”, and that interleaving and de-interleaving are symmetrical and inter-dependent processes. Thus, the term “interleaver” is used to refer to either an interleaver or a de-interleaver. Of course, numerous variations and adaptations may be made to the particular embodiments of the invention described above, without departing from the spirit and scope of the invention, which is defined in the claims. Patent Citations
Non-Patent Citations
Referenced by
Classifications
Legal Events
Rotate |