WO2002023340A1 - Optimized ram representation of convolutional interleaver/de-interleaver data structure - Google Patents

Optimized ram representation of convolutional interleaver/de-interleaver data structure Download PDF

Info

Publication number
WO2002023340A1
WO2002023340A1 PCT/US2001/041922 US0141922W WO0223340A1 WO 2002023340 A1 WO2002023340 A1 WO 2002023340A1 US 0141922 W US0141922 W US 0141922W WO 0223340 A1 WO0223340 A1 WO 0223340A1
Authority
WO
Grant status
Application
Patent type
Prior art keywords
interleaver
de
pointer
plurality
modulo
Prior art date
Application number
PCT/US2001/041922
Other languages
French (fr)
Inventor
David B. Isaksen
Richard W. Koralek
James P. Flynn
Boris G. Tankhilevich
Original Assignee
Wideband Computers, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date

Links

Classifications

    • HELECTRICITY
    • H03BASIC ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2732Convolutional interleaver; Interleavers using shift-registers or delay lines like, e.g. Ramsey type interleaver

Abstract

An optimized RAM representation of convolutional interleaver and/or de-interleaver data structure (460) for Digital Video Broadcast channel that includes an efficiently organized RAM memory. RAM includes an L number of M byte long delay lines, with L and M being integers. Each delay line is repesented by a row (462-484) including a base value and a current step value. The base value and the current step value for each row are read out of RAM. In the preferred embodiment, the RAM memory includes 12 rows, wherein each row includes a base value and a current step value, and wherein each row includes at least one block including 17 bytes. Each block having a block counter value is addressed by a pointer.

Description

Description

OPTIMIZED RAM REPRESENTATION OF CONVOLUTIONA INTER EAVER/DE-INTER EAVER DATA STRUCTURE

TECHNICAL FIELD

This invention relates to the art of electronic data transmission, and more specifically, to a method and apparatus for convolutional interleaving and de-inter- leaving of data for correcting bursts of errors in transmitted data.

BACKGROUND ART

Error correction and error detection codes have been used extensively in data communication and data storage applications. In a data communication application, data is encoded prior to transmission, and decoded at the receiver. In a data storage application, data is encoded when stored in a storage device, e.g. in a disk drive, and decoded when retrieved from the storage device. The principles discussed herein are equally applicable to a data communication system and to a data storage-retrieval system, although the remainder of this description deals with a data communication application. In a typical application of error detection and correction codes, data symbols are stored in blocks, wherein each block of data symbols includes a selected number of special symbols, called check symbols. A symbol may consist of a single bit or multiple bits . The check symbols in each block represent redundant information concerning the data stored in the block. When decoding the blocks of data, the check symbols are used to detect both the presence and the locations of errors and, in some instances, to correct these errors. The theory and applications of error correction codes are well-known to those skilled in the art. For reference, please see "Error Control Coding: Fundamentals and Applications", by Shu Lin and Daniel J. Costello, Jr., Prentice-Hall, 1983. In a typical application of error correction codes, the input data is divided into fixed-length blocks ("code words") . For a linear block (n, k) code, each code word consists of n symbols, of which a fixed number k are data symbols, and the remaining (n-k) symbols are check symbols. The linear block code can be defined in terms of generator and parity-check matrices. As mentioned above, the check symbols represent redundant information about the code word and can be used to provide error correction and detection capabilities. Each data or check symbol of such a code word can be represented by a coefficient of a polynomial of order (n-1) . For the linear error correcting and detecting (n, k) code, the check symbols are the coefficients of the remainder poly- nomial generated by dividing the order (n-1) polynomial by an order (n-k) "generator" polynomial over a Galois field. For an order (n-1) polynomial divided by an order (n-k) polynomial, the remainder polynomial is of order (n-k-1) . The construction and basic properties of Galois field can be found in "Error Control Coding: Fundamentals and Applications", by Shu Lin and Daniel J. Costello, Jr., Prentice-Hall, 1983.

The decoding of linear block codes is based on a set of "syndromes" computed from a remainder polyno- mial. The set of "syndromes" is obtained by dividing the code word by the generator polynomial. Ideally, if no error is encountered during the decoding process, all computed syndromes are zero. A non-zero syndrome indicates that one or more errors exist in the code word. Depending on the nature of the generator polynomial, the encountered error may or may not be correctable. If the generator polynomial can be factorized, a syndrome computed from the remainder polynomial obtained by dividing the received code word by one of the factors of the gen- erator polynomial is called a "partial syndrome".

One can view the code words as occupying the vertices of a cube in an n-dimensional space. Choosing a good set of code words for a code consists of choosing a set of vertices which have good distance properties in the n-dimensional space. The probability of error between two blocks of binary digits is reduced by increasing the Hamming distance between the code words, which is defined as the number of symbol positions at which two code words differ. In such an error correction code, two code words differ by a distance of one, if they differ at one symbol position, regardless of the number of bit positions these code words differ within the correspond- ing symbols at that symbol position.

The capability of an error correction or detection code is sometimes characterized by the size of the maximum error burst the code can correct or detect . For example, a convenient capability measure is the "single error burst correction" capability, which characterizes the code by the maximum length of consecutive error bits the code can correct, as measured from the first error bit to the last error bit, if a single burst of error occurs within a code word. Another example of a capabil- ity measure would be the "double error burst detection" capability, which characterizes the error correction or error detection code by the maximum length of each error burst the error correction code can detect, given that two or less bursts of error occur within a code word. Because errors often occur in bursts in some types of channels (for instance, in the Rayleigh fading channel), a technique, called "interleaving", is often used to spread the consecutive error bits or symbols into different "interleaves", which can each be corrected individually. Interleaving is achieved by creating a code word of length nw from w code words of length n. In one method for forming the new code word, the first w symbols of the new code word are provided by the first symbols of the w code words taken in a predetermined order. In the same predetermined order, the next symbol in each of the w code words is selected to be the next symbol in the new code word. This process is repeated until the last symbol of each of the w code words is selected in the predetermined order into the new code word. Another method to create a w-way interleaved code is to replace a generator polynomial G(X) of an (n, k) code by the generator polynomial G(XW). This technique is applicable, for example to the Reed-Solomon codes. Using this new generator polynomial G(XW), the resulting (nw, kw) code has the error correcting and detecting capability of the original (n, k) code in each of the w interleaves so formed. There are two basic types of prior art interleavers : a block interleaver and a convolutional interleaver. The block interleaver has a rectangular configuration and is represented by a matrix having N number of columns and M number of rows, that is the block interleaver includes two interleaving parameters: (N, M) . The input data in written into the block interleaver by column , and is read out by row. On the receiving end, after the data is transmitted over a channel generating bursts of errors, the block de-interleaver writes the received data by row, and reads the data out by column, thus randomly spreading the bursts of errors in time.

A convolutional prior art interleaver has two interleaving parameters: a number of branches L, and a delay D: (L, D) . The first branch of the convolutional interleaver includes a minimum delay zero, wherein the last L-th branch includes the maximum delay: (L-l)D. A convolutional de-interleaver includes the matching parameters: the L number of branches, and the same D delay. However, the last L-th branch of the convolutional de- interleaver includes a minimum delay zero, wherein the first branch includes the maximum delay: (L-l)D. For a digital video broadcast channel (DVB channel) , the parameters of the convolutional interleaver are such: there are L = 12 branches, and the delay D =17. The prior art implementation of a convolutional interleaver for a digital video broadcast channel (DVB channel) is a RAM with an addition of a READ/WRITE signal. The prior art implementation of a convolutional interleaver (de-interleaver) for the digital video broadcast channel (DVB channel) is a relatively expensive and ineffective one because it utilizes only about 50% of RAM thus leaving a lot of unused space on an Application

Specific Integrated Circuit (ASIC) chip. In addition, the prior art implementation of a convolutional interleaver (de-interleaver) for the digital video broadcast channel (DVB) channel utilizes too much circuitry to generate the RAM addresses (for example, it takes about 6 gates to implement a single register) .

What is needed is to optimize the architecture of RAM that is used for implementation of the convolutional interleaver (de-interleaver) that (1) does not leave unused space on the ASIC, and (2) significantly reduces the amount of circuitry required to generate the RAM addresses.

SUMMARY OF THE INVENTION To address the shortcomings of the available art, the present invention provides an optimized convolutional interleaver (de-interleaver) for DVB channel that includes an efficiently organized RAM memory that does not leave unused space in the Application Spe- cific Integration Circuit (ASIC) , and that reduces the amount of circuitry required for RAM addresses generation.

One aspect of the present invention is directed to a system for data transmission comprising: (a) an interleaver configured to interleave an original data stream by at least one interleaving parameter so that the original data stream is divided in a plurality of data blocks, each of the data blocks comprising a plurality of data units; and (b) a de-interleaver configured to re- cover the original data stream by use of at least one interleaving parameter.

In one embodiment, the interleaver further includes an interleaver memory unit configured for writ- ing and reading the plurality of data units into a plurality of the interleaver memory locations identified by a single interleaver pointer and an interleaver pointer generator. The interleaver pointer generator is config- ured to generate the interleaver pointer during the interleaving procedure, wherein the interleaver pointer generator is cyclically modulo modifying the interleaver pointer up (or down) to (or from) an interleaver modulo value . In one embodiment, the de-interleaver further comprises a de-interleaver memory unit configured for writing and reading the plurality of data units into a plurality of the de-interleaver memory locations identified by a single de-interleaver pointer and a de- interleaver pointer generator. The de-interleaver pointer generator is configured to generate the de-interleaver pointer during the de-interleaving procedure, wherein the de-interleaver pointer generator is cyclically modulo modifying the de-interleaver pointer up (or down) to (or from) a de-interleaver modulo value. The interleaver pointer generator and the de-interleaver pointer generator are synchronized.

In one embodiment, the interleaver memory unit further comprises a plurality of interleaver branches, wherein the interleaver branch further comprises a plurality of interleaver blocks, and wherein the interleaver block further includes a plurality of interleaver addresses . The de-interleaver memory unit further comprises a plurality of de-interleaver branches, wherein the de-interleaver branch further comprises a plurality of de-interleaver blocks, and wherein the de-interleaver block further includes a plurality of de-interleaver addresses. The interleaver memory unit and the de- interleaver memory unit can be implemented using: a RAM memory unit, a hard drive memory unit, or an external memory unit. In one embodiment, the interleaver memory unit further includes an interleaver algorithmic encryption means configured to encrypt the transmitted data by selecting at which points the interleaver pointer takes value, and the de-interleaver memory unit further includes a de-interleaver algorithmic decryption means configured to decrypt the received data by selecting select at which points the de-interleaver pointer takes value . In one embodiment, the present invention includes system for data transmission comprising: (a) a convolutional interleaver configured to interleave an original data stream so that the original data stream is divided in a plurality of data blocks, and (b) a convolutional de-interleaver configured to recover the original data stream. In the preferred embodiment, the convolutional interleaver includes two interleaving parameters : a number of interleaver branches and an interleaver delay. In one embodiment, the number of interleaver branches N is equal to 12, and the interleaver delay D is equal to 17 time units.

Another aspect of the present invention is directed to a method for data transmission comprising the steps of: (a) using an interleaver to communicate with a channel; (b) interleaving an original data stream by at least one interleaving parameter so that the original data stream is divided in a plurality of data blocks, wherein each data block comprises a plurality of data units; (c) using a de-interleaver to communicate with the channel; (d) using the de-interleaver to recover the original data stream by using at least one interleaving parameter; and (e) synchronizing the interleaver pointer generator and the de-interleaver pointer generator.

In one embodiment, the step (a) of interleaving the original data stream by at least one interleaving parameter further includes the step (al) of configuring an interleaver memory unit for writing and reading the plurality of data units into a plurality of the

Figure imgf000010_0001

en ø PJ P. μ- μ- μ- £ rr μ- μ- rt μ- TJ μ- TJ TJ rt CQ CQ rt M Ω μ- en < Ω H 3 Ω PJ H μ- μ- rr CO P) en ø ø μ- if en ø O ø O ø O O if φ if φ o ø rt J PJ 0 0 rt φ if ø ø i H- Qi rt rt rr rt φ rr rt μ- rt μ- μ- Φ 0 φ φ PJ 0 PJ φ Pi Ω O P> Φ rt rt φ 0 Φ 0) α. Φ Φ P4 Pi Φ r Φ ø Φ ø ø φ Pi Hi T ø P> ø Hi <J φ Φ

PJ Q 1 μ- h Hi en μ- Hi if Hi rr Hi rt rt Pi Hi P. Pi μ- μ- Φ • 0 μ- • μ- μ- Hi Hi

3 μ- tr < M H-1 P> rt ii H-1 Φ Φ H Φ Φ φ PJ Φ Φ ø CQ Pi -—- o 0 Ω ø ø H H rr ø H-1 μ- Φ Φ Φ Φ Φ Φ Hi φ Hi 1 ft CQ ø PJ Pi if 3 rt ) CQ rr Φ Φ if if rt 0 P. 0) PJ Ω TJ Ω *5 Pi PJ PJ μ- 0 μ- μ- M rt O if <J H Φ PJ PJ

Φ Φ Ω φ <! if en rt <! Φ < CQ < μ- CQ ø Hi ø ø rr μ- J Pi Φ PJ 0 TJ Hi < <

Hi ? Pi μ- μ- P Φ Φ 1 φ Φ φ en Φ rr . rt rt if ø 0 ø 0 Hi H <; Hi H-1 Φ Φ

0 & I-1 ø ø 0 O Pi O Hi μ- Hi 0 Hi 0 Φ φ Φ Φ Q en Mi H en ø O O Φ Hi Hi en Φ Φ Ω μ- CQ CQ 0 ø ø Φ Ω Φ Hi ι-3 Hi h rt 0 μ- O Φ Φ 3 0 Ω PJ

H- 1 PJ O ø φ ft Φ TJ rt TJ Hi ^ Hi if H-1 TJ PJ Hi 0 ø s o Φ Φ < TJ 3 ø μ- 3 TJ rt H O O Φ O PJ 3 Ω PJ Φ Φ Φ Φ H Φ en O cQ Pi o4 if Pi Pi Φ o φ

CQ ø Φ TJ PJ PJ " — . PJ μ- Hi μ- rt O rt PJ PJ PJ ø Pi PJ μ- 0 φ 0 <; 0 Φ ø Hi μ- 3 rt ϋ Hi Hi Φ PJ PJ Pi ø ø O & μ- 0 < Pi < < Hi Φ 3 ø Φ rt Ω Pa H-1 3 Hi ø 0

0) φ μ- TJ 0J ^~ 1 — ' Pi rt Φ rt Hi ø Ω H{ μ- φ φ Φ J 1 CQ if Hi μ- 0 O Q1 φ TJ rt Hi rt H rt en 3 O o; 3 μ- φ PJ Φ • H PJ • ø 1 Hi Hi μ- Mi Φ Φ Φ 3 en O 0 Φ ^

0 φ ø φ Hi ø φ rt Hi <! O CQ μ- μ- ø 0 rt 3 PJ φ μ- μ- P. t/ μ- Hi

Φ en Hi rt μ- en rt μ- Φ H H H 0 TJ 3 rt rt Hi if μ- en ø ø ø μ- ø

Φ PJ Ω PJ Φ iQ φ μ- if O tQ Hi μ- 0 <J •<; 0 TJ rt O φ ^ Φ rt Φ O ø μ- rr cQ Ω 3 rt PJ o

PJ <! 0 PJ Hi μ- 0 ø O ø φ en PJ Hi Φ μ- 3 Hi if Pi rt ø - Hi φ ø Φ 0 Ω to φ £3 μ- ø Ω CQ Pi PJ 0 3 PJ 3 O o Hi ø o o φ Pi μ- Φ Q rt Φ ø en Hi Pi J rt Hj 3 T rt en PJ Hi φ o Ω 0 0 O 0 Ω rt Hi Mi φ Hi Φ 3 HJ rr if J rr μ- rt ø •<; O P Ml Hi Pi O Φ Pi Φ φ Φ Φ <: J 1 φ Pi if Φ en ^ ø μ- PJ μ-

0 rt ø ø τ ø 0 PJ PJ ø Ω rr 0 Pi J H{ P. < μ- μ- ø Φ o Φ μ- CQ en 0 O

0 O μ- Hi o rt P. rt Hi en rt 4 if Φ ø <! J Φ ø ø rr P ^ μ- ø rt ø

Φ Ω 0) 1-h 4 PJ μ- μ- TJ O O μ- Φ O 3 Hi Φ P o rt Hi Ω rt <! 0 μ- ø Q if rr CQ μ- en

Hi PJ H-1 PJ rt ø ø Pi Φ Hi Ω Hi 4 Φ Hi 0 Ω PJ H Φ O Φ 0 rt φ if Φ ø μ- φ rt μ- Pi rt J tQ rt J Ω < PJ μ- O Pi P) 3 ø Hi Hi Hi rt rt Φ ø Φ ø rt μ-

3 Ω Φ rt PJ Φ rt rt PJ μi φ en ø Pi tf TJ rt ø φ Pi _ o Φ Hi TJ μ- Φ Φ P. rr O * rt rt CQ PJ Hi J H-1 μ- Ω μ- *< O PJ μ- 0 3 φ φ rt TJ ' h μ-1 ø μ- Hi Hi Φ

Φ < S PJ ø4 rt ø H-1 O ø *< & ø Hi 3 μ- 0 μ- 0 en J if O rt H-1 Φ rt rt ø PJ H-1 0

Φ μ- O Φ Hi φ Φ Mi Φ O iQ φ φ 0 ø Pi 0 rt Hi < Φ μ- if Φ J O Φ rr rt Φ rt

Hi rt Hi ij1 Φ O PJ 0 3 Pi PJ ø en rr Φ en en ^ Φ ø Φ J < Hi Φ Φ J μ-

Φ 4 O PJ Hi <J Ω rt if O μ- rr en rt μ- Φ 1 rt Hi TJ rt < Φ rr Hi P. <! Ml

PJ rt P. O Hi 3 μ- φ Hi if Pi 3 if μ- ø Hi μ- μ- μ- 0 if Φ μ- Φ Hi if Φ H Φ μ-

<! if rt PJ Ω μ- cQ Hi 3 φ ø φ Φ ø CQ ø P. ø 0 Φ ft Φ Hi ø Hi Φ J Φ Pi H Φ

H- Φ øJ rt Λ4 Q if μ- 0 ø (Q rt μ- rt φ rt μ- 0 en rt TJ < J ø Pi

P Φ PJ fl μ- ^ ø rt rt TJ en 0 rt P. if rt cn Φ 0 O rt en Φ CQ Φ TJ O μ- Φ < Hi T

CQ 0 ø J O μ- Hi μ- «• Φ ø Φ if Hi rt rt Hi ø Φ Hi 0 μ- ø H Φ μ- O if

Hi Ω ø PJ J μ-1 0 φ ø Pi TJ Φ cQ μ- PJ Ml φ Φ rt ø μ- ø rt H; 0 μ- <<

TJ μ- P1 0 rt Ω ø en tQ φ rt μ- Pi φ Φ H o TJ Ω Φ φ ø rt Φ TJ CQ ø

PJ CQ P> μ- if Pi O Φ Ω if ø rt Φ Pi ø PJ μ- TJ Hi O μ- Hi PJ rt Φ Hi O TJ rt J

Hj μ- 0 rt φ Pi P H Ω ø rt Hi Φ rt O 1 Φ φ <! φ H-1 o <! ø PJ < Φ Hi μ- O rt Φ

0) 3 0 Q Hi PJ Φ rt 3 0 rt if Φ Φ μ- 1 Hi Φ i ø $ Mi Φ < rt φ Hi Φ ø μ- if H en

3 0) Φ -• Φ rt J PJ Φ PJ Pi Hi rt φ μ-1 μ- PJ n ø TJ ø μ- PJ Hi H{ Hi Φ O Hi CQ PJ rt Φ μ- μ- en ø

Φ if rt ø rt if J μ- ^-^ ø H μ- Φ <! Φ rr Q ø rt ^. ~ - ø rr en μ- Hi ø Pi μ- 1 Φ φ Φ rr Φ T rr Pi rt rt • en ø Φ M φ μ- φ (Q

Φ Pi Ω en rt Ω μ- <! φ ø PJ Hi Φ Pi o μ- μ- ø1 μ- 3 Φ Hi H ø ø

Hi J PJ φ rt O Hi PJ cn Φ I tQ < Pi Hi μ- PJ rt ø Φ O o Ω Hi μ- rt Φ φ ft ø P) Hi ø φ rt μ- ø Φ Φ φ & ø <; cQ ø P. J en CQ Φ Hi

PJ . £ Ω Φ Φ P Φ ø rt Pi Hi 1 PJ Φ ø rt en O N- 0 Ω rt Φ Hi PJ

CQ 4 PJ 3 CQ μ- O <! J Hi φ μ- 0 J Hi 0 0 1 rt

,—. μ- 3 O g! Φ < μ- Hi ø Ml ø μ- rt 0 μ- h Φ O

S ø i ø 0 Hi Φ 0 1 Pi CQ if 1 • Hi Hi tQ "<; Hi CQ 1 Φ 1 •

In one embodiment of the present invention, the step (b) of encrypting the original data stream by interleaving the original data stream by at least one interleaving parameter further includes the steps of: (bl) configuring an interleaver memory unit for writing and reading the plurality of data units into a plurality of the interleaver memory locations identified by a single interleaver pointer and an interleaver pointer generator; (b2) generating the interleaver pointer during the inter- leaving procedure by using the interleaver pointer generator; (b3) cyclically modulo modifying the interleaver pointer up (or down) to (or from) an interleaver modulo value by using the interleaver pointer; and (b4) selecting an algorithm that determines at which points the interleaver pointer takes value.

BRIEF DESCRIPTION OF THE DRAWINGS

The aforementioned advantages of the present invention as well as additional advantages thereof will be more clearly understood hereinafter as a result of a detailed description of a preferred embodiment of the invention when taken in conjunction with the following drawings .

FIG. 1 shows a prior art general bit interleaver device that groups input into kl blocks of k2 bits.

FIG. 2 depicts a prior art interleaving process, wherein an original data stream and an interleaved data stream are shown in reference to index axes. FIG. 3 illustrates a prior art specific interleaver that comprises a number of (J-l) delay lines, a write switch, and a read switch.

FIG. 4 shows a simplified block diagram of a prior art data transmission system comprising interleaver, communication channel, and de-interleaver.

FIG. 5 illustrates a simplified prior art block diagram of interleaver /de-interleaver of FIG. 4. FIG. 6 depicts a conceptual diagram of the prior art data transmission system comprising a convolutional digital video broadcast channel (DVB channel) interleaver, a convolutional DVB de-interleaver, and a bursty communication channel .

FIG. 7A illustrates a RAM representation of interleaver data structure of the present invention.

FIG. 7B depicts how two parameters are used to address a particular location in the RAM data structure of the present invention: (a) the current step value as the index of the 17-byte segment presently used by the row, and (b) the block counter value that counts from 0 to 16 and represents how many bytes into a given segment the pointer is. FIG. 8 is a flow chart of the method of the present invention for data transmission using an interleaver to spread out the bursts of errors caused by a bursty error channel.

FIG. 9 depicts a flow chart of the method of the present invention for using a de-interleaver to recover the original data stream transmitted over a bursty error channel .

BEST MODE FOR CARRYING OUT THE INVENTION As was stated above, in a number of data transmission systems (for instance, a data transmission system that utilizes a Rayleigh fading channel) , the errors occur in bursts rather than at random. In a burst-error situation the occurrence of a bit in error means that the likelihood of the next bit being also in error is increased. A rare burst of errors can cause output errors even though the overall probability of bit error is low. This stands in contrast to random errors, which are independent of one another and are modeled by the Binary Symmetric Channel (BSC) . The prior art bit interleaver device 10 that causes the burst errors to be randomized over a sequence is shown in FIG. 1 (according to "Data Communications Principles" by Richard D. Gitlin, Jeremiah F. Hayes, and Stephen B. Weinstein, published by Plenum Press, in New York, in 1992) .

Suppose, for example, that data is segmented in kl successive blocks each including k2 bits. This is a block interleaver having interleaving parameters (Nl,

N2 ) , wherein Nl = kl , and N2 = k2. The drawback to the interleaving method is delay. Indeed, up to kl *k2 bits should be buffered at the transmitter side of the communication channel before transmission. The maximum permis- sible delay depends on the type of information to be transmitted. The integrity constraints of computer data transmission are at least three orders of magnitude higher than those of digital speech transmission. However, the data channels can accept longer interleaving delays which allows effective randomization of the bursty error statistics of a channel generating bursts of errors, thus increasing the ability of the forward error correction (FEC) decoder to decrease the bit error rate (BER) . There is a minimum interleaving delay to trans- form the BER statistics of a channel generating bursts of errors (for instance, the Rayleigh fading channel) into a good approximation of those BER encountered in a Gaussian channel .

The general principle of convolutional interleaving/de-interleaving method using pointer incrementing is described in U. S. Patent No. 6,014,761, incorporated in the present patent application in its entirety.

According to 761 patent, FIG. 2 depicts a prior art interleaving process, by the way of example 100, wherein an original data stream 110 and an interleaved data stream 120 are shown in reference to index axes 105 and 105'. The original data stream 110, also {ORIGINAL_DATA_STREAM} , comprises a first plurality of code blocks 140-146, with a block index increasing from b=0 to b=B=6. The "length" of the block is defined as a number of data units in each block. Each code block 140-146 {ORIGINAL_BLOCK b} has a length J =3 of data units 112. Each data unit in each block is assigned a pair of index coordinates (b, j), wherein unit index j goes cyclically from j = 0 to j =J - 1=2.

An original data unit 112, which can be written in the following notation: {ORIGINAL_DATA_UNIT [ (b, j)

=(0, 0)]} = [(X (b, j)= X(0,0)] includes, preferably, one byte of information. For convenience, index axis 105 counts data units 112 (also, X (i) ) inside {ORIGINAL_DATA_STREAM} 110 by index pair (b, j), and by single index i. Index i starts from i=0. Index i which is assumed to be indefinite is only limited here by the size of {ORIGINAL_DATA_STREAM} 110 measured in bytes. As depicted in FIG. 2, index i runs from 0 to M-l=20 Counting with single index i and double index (b, j) is equiv- alent. For example: X (0)=X (0,0), X (1)=X (0,1), X (2)=X (0,2), X (3)=X (1,0), and so on. In general, indices i, b, and j are related by

b=integer (i/J) ; and (1)

j=modj(i/J); (2)

wherein the slash "/" stands for division, "integer" for the non-broken result and "mod" for modulo operation to the base J.

Index i can be calculated from (b,j) according to:

i=b*J+ j (3)

Interleaved data stream

{INTERLEAVED_DATA_STREAM} 120 comprises a second plurality of code blocks 150-156, as shown in FIG. 2 with a primed block index b'=0 to B'=6. Each code block 150-156 { INTERLEAVED_BLOCK b' } has a length of J'=J, wherein the length J' is the number of interleaved data units 113 inside each {INTERLEAVED_BLOCK b'}. Similarly, index axis 105' counts data units 113 in data stream 120 with single index i' and double index (b',j'). Equations (1), (2) and (3) are applicable in the same way. Data units Y (i') = Y (b, j') 113 of interleaved data stream 120 have single index i' numbers in a new order obtained by interleaving. Inside interleaved data stream 120, un-specified data units 123 identified with e.g., Z1-Z6, preferably, do not come from original data stream 110. Data units X (i)=X (b, j) of original data stream 610 are interleaved to a depth (D-l) =6, and become data units Y (i')=Y (b, j') of interleaved data stream 120. Here, de-interleaver parameter D is the number of blocks in the { INTERLEAVED_DATA_STREAM} 120. Therefore, indices i and i' of X (i)=Y (i') are related by a difference d (j) :

i'=i+ d (j) ; (4)

and

d(j)=j*(D-l); (5)

wherein (*) stands for multiplication, d (j) is commonly referred to as "Delay". For example, d (j) is a time shift required in a prior art interleaving/ de-interleaving application.

Double indices of X (b, j ) =Y (b, j') are also related by

b'=b+ d(j) ; (6)

:'=:; (7)

wherein d ( j ) =j * (D- l ) ( 8 )

EXAMPLE 1

The following data units go from original data stream 110 to interleaved data stream 120 without delay:

X (0)=X (0,0)=0,

X (3)=X (1,0)=3

X (6)=X (2,0)=6; X (9)=X (3,0)=9,

X (12)=X (4,0)=12;

X (15) =X (5,0) =15; and

X (18) = X(6,0) =18.

Here b is incrementing, j=0, and delay (d(0)=0, as indicated e.g., by line 170.

EXAMPLE 2.

The following data units go from original data stream 110 to interleaved data stream 120 with delay d (1)=1 * 6=6:

X (1)=X (0,1)=1;

X (4)=X (1,1)=4, X (7)=X (3,1)=7,

X (10)=X (4,1)=10; and

X (13)=X (5,1)=13;

as indicated by, e.g., line 171 for data unit X (1)=X (0,1)=1 at i=l going to Y (7)=Y (2,1)=1 at i'=d(l)+ 7.

EXAMPLE 3.

The following data units go from original data stream 110 to interleaved data stream 120 with delay d (2)=2 * 6=12: X (2)=X (0,2) =2

X (5)=X (1,2) =5

X (8)=X (2/2)=8

X (11) =X (3,2)=11

X (14)=X (4,2)=14

X (17)=X (5,2)=17 and

X (20)=X (6,2)=20

as indicated by, e.g., line 172 for data unit X (2)=X (0,2)=2 at i=2 goes to i'=14 (Y (14)=Y (4,2)=2).

In general, data units X (i)=X (b, j) in {ORIGINAL_DATA_STREAM} 110 are distributed to data units Y (i')=Y (b', j') in {INTERLEAVED_DATA_STRE M} by parameter (D-l) as follows:

X (i+ 0) to Y (i') ; e.g. , X(0)=0 to Y (0)=0; (9)

X (i+ 1) to Y (i'+(D-l) ) ; e.g. , X (1)=1 to Y (7)=1; (10)

X (i+j) to Y (i' +(D-1) *j) ;

X (i+ (J-1)) to Y (i'+ (D-1)*J); e.g. , X (2)=2 to Y (14)=2 . (11)

FIG. 3 illustrates a prior art interleaver 200 that comprises a number of (J-1) (here: (J-1) =2) delay lines: 231, 232 and zero-delay line 230, a write switch 215, and a read switch 225. Interleaver 200 receives original data stream 110 (of FIG. 2) with data units 112 on input line 210. Arrow 216 in write switch 215 (which has J=3 positions) symbolizes how in every time point Ti write switch 215 couples input line 210 to zero-delay line 230 (position "0" or "j=0"), to delay line 231 (position "1" or "j=l"), to delay line 232 (position "2" or position "J-1") and again to zero-delay line 130 (position "0"), and so forth. Accordingly, arrow 226 shows how read switch 226 couples lines 230-232 to output line 220 (positions "0", "1", and "2"). Thus, switches 215 and 225 couple an input line 110 and an output line 120 via one of delay lines 230-232.

In one prior art embodiment, the delay lines 231 and 232 are implemented using shift registers of the type first-in-first-out (FIFO) . Delay line 231 has a number of Dl=2 storage cells 241, 243 (in short: cells) to store data units, wherein the delay line 232 has a number of D2=4 storage cells 242, 244, 245, and 246. The numbers Dl and D2 depend on the depth parameter (D-1) . In general, a delay line at position "j" has Dj=j * (D-l)/J storage cells. Dj is also referred to as "FIFO-size".

Thus, a prior art interleaving method includes the following steps of: (1) moving (216, 226) switches 215 and 226 in order to select a delay line 230, 231, or 232; (2) shifting out data units from selected line (230, 231, or 232) to output line 220; (3) shifting data units inside selected line (230, 231, or 232) ; (4) shifting in data units from input line 210 to selected line (230, 231, or 232); (5) preferably repeating steps (1 -4).

It is understood to a skillful artisan, that delay lines 231 and 232 with storage cells 241, 243, 242, 244, 245, 246 can be implemented (mapped) by memory cells of e.g., a random access memory (RAM), wherein multiple pointers are calculated by a computing unit.

According to *761 patent, an interleaving/ de-interleaving apparatus can be implemented by using a plurality of first-in-first-out memory registers (FIFOs) (or "delay lines") mapped into memory (e.g., RAM). Each of the FIFOs is formed by memory cells virtually moving through the memory. The interleaver (or de-interleaver) of 761 patent uses only one pointer variable p for any number of delay lines mapped into the memory. The pointer comprises an offset parameter depending only on (D-1) and J. This gives the interleaver (de-interleaver) flexibility. The calculation time for p is minimized by having the interleaver (de-interleaver) to read data from memory locations and uses the same location for consecutively writing data.

In the prior art, the variable pointer p is used as an index for storage cells and includes an ele- ment of a set {P}={0, 1, 2, 3, . . . (P-l) } comprising P positive integers (pI{P}). For A, B being positive integers and CI{P}, a modulo addition mod (A+ B) =C is defined as follows :

C=(A+B) for A + B <(P-1); (12)

and

C=(A+B) - P for A+B >(P-1). (13)

A prior art modulo subtraction is defined as follows:

C=(A-B) for A-B >0 (14)

and

C=(A-B)+ P for A-B < 0. (15)

EXAMPLE 4. In a set {P} ={0, 1, 2, 3} of P=4 elements, and

A=2 and B=3 , C is calculated as follows: C=mod (A+B)= mod (2+3) =1; C=mod (A-B) =mod (2-3)= -1 +4=3.

For convenience, the number P of elements in set {P}, also called "base", can be indicated as sub- script, such as in e.g., modp (A+B) .

FIG. 4 illustrates a simplified block diagram of a prior art data transmission system 300 comprising interleaver 301', channel 304, and de-interleaver 200 (of FIG. 3). Interleaver 301' receives original data stream 110 (of FIG. 2) and provides interleaved data stream 120 to channel 304. Channel 304 transmits stream 120 to de-interleaver 200 which de-interleaves stream 120 to original data stream 110'. A preferred data stream flow is indicated in FIG. 4 by arrows 310 going to the right, however, the transmission system 300 can operate also in the opposite direction shown by dashed arrows 320 going to the left. FIG. 5 illustrates a simplified block diagram of interleaver 301' /de-interleaver 200 of FIG. 4. Though the following description is focused on the function of interleaver 301', it is believed that a skillful artisan is able, based on the description herein, to implement de-interleaver 200 accordingly.

Interleaver 301' comprises memory 345, pointer generator 308, and memory controller 311. Interleaver 301' receives input stream 101 at input line 310 and provides output stream 102 at output line 320. Lines 310 and 320 are, preferably, implemented by data bus 309. Data bus 309 can carry data, for example, parallel or serially. Data bus 309 with input line 310 and output line 320 is coupled to memory controller 311. Memory controller 311 is coupled to memory 345. Pointer generator 308 supplies pointer 313

(hereinafter pointer p) to memory controller 311. Memory 345 comprises a plurality of K or more storage cells 340-k (e.g., k=0 to K-l) , wherein "cells", "memory locations", or "memory cells" are used interchangeably. Cells 340-k and 340- (k+ 1) or 340- (k-l) are, preferably, not coupled to each other for the purpose of shifting data. It is assumed that one cell 340-k can store one data unit X (b, j) (112 of FIG. 2) or Y (b', j'), for instance, one byte. It is understood, that a person skillful in the art, based on the description herein, can organize memory 345 in a different way. Cell (340-p) includes a cell (340-k) which is addressed by pointer p. Pointer p is an element of the set {P}={0, 1, 2, 3, . . . (P-l) } wherein (P-1)=(K-1). In other words, pointer p identifies cell (340-p) and activates cell (340-p) for the data exchange.

Referring still to FIG. 5, in one prior art embodiment, interleaver 301' puts one data unit X (b,j) from input stream 101 to input line 310. Memory control- ler 311 stores X (b,j) from input line 310 in cell 340-p. Data previously stored in cell 340-p is thereby overwritten. After that, memory controller 311 copies the data stored in cell 340-p as data unit Y (b', j') to output line 320. During reading, data in cell 340-p can remain unchanged or can be deleted. Next, interleaver 301' puts one data byte from output line 320 to output stream 102. Memory controller 311 can also send data unit X (b,j) into memory 345 for storage. In one prior art embodiment, pointer generator

308 initially sets pointer p to a value 0 (zero) and changes pointer's p value, by summation or subtraction, by a predefined value. The pointer's p value can be incremented by a value of 1, 2, and so on, up to a modulo value, or decremented by a value of -1, -2, and so on, down to a modulo value.

Interleaver 301' can use its memory 345 as a delay line. Pointer generator 308 knows values Dj , also called "FIFO-size" . The values Dj are calculated once and stored in pointer generator 308 or calculated by pointer generator 308 at the time they are required. For example, when convolutional interleaving as shown in FIG. 2 is performed, values Dj are:

Dj=j* (D-1) /J, for j=l to J-1; (16)

but other values can also be used. Values D ' with a primed index j' are calculated in the same way. For example, to perform interleaving procedure 100 of FIG. 2, with parameters (D-1) =6 and J=3 , Dj includes two values:

Dl=2 and D2=4. Dj correspond to the sizes of delay lines 231 and 232 (of FIG. 3) . Interleaver 301' writes/reads data units X and Y to/from cells which are at Dj distance located in memory 345 (of FIG. 5) . The number K of cells 340-k of memory 345 is equal or larger than the sum of Dj for j=l to (J-1) . Preferably, memory 345 temporarily stores data units X (bj ) with 0<j<J -1 and data units Y (b40, j') with 0<j<J'-l.

It is convenient for calculating pointer p, that pointer generator 308 knows partial sums, further referred to as offset (j):

offset (j)=Dl+ D2+... D(j-1)+ Dj . (17)

The offset (j) can be equal to the number K of cells 340-k. The offset (j) can be stored in pointer generator 308. When offset (j) is added to p (or subtracted from p) (pϊ{P}) then modulo addition or subtraction is applicable .

The present invention can be best understood by focusing on conceptual diagram 400, as depicted on FIG. 6, that shows a prior art data transmission system comprising a convolutional digital video broadcast channel (DVB channel) interleaver 402, and a convolutional DVB de-interleaver 422 that are configured to mitigate the effect of a bursty communication channel 420.

The prior art DVB interleaver and DVB de- interleaver have been typically implemented using a plurality of first-in-first-out memory registers (FIFOs) 418 (or "delay lines") mapped into memory (e.g., a RAM memory unit, a hard drive memory unit, or an external memory unit) . For example, see memory 345 of FIG. 5 including a number of memory cells (for example, please, see memory cells 340-0 through 340- (k-l) of FIG. 5). Each of the FIFOs is formed by memory cells virtually moving through the memory.

The prior art DVB interleaver 402 (of FIG. 6) interleaves an original data stream 406 by using two interleaving parameters: L=12, and M=17, wherein L is the number of M byte long delay lines (410, 412, and so on) so that the original data stream 406 is divided into a plurality of data blocks (for example, please, see a plurality of data blocks 140, 141, ... 146 of FIG. 2), wherein each data block comprises a plurality of data units (for example, please, see a plurality of data units

0, 1, and 2 within block 140 of FIG. 2) . Each delay line has a WRITE address pointer and READ address pointer generated by a pointer generator (for example, please, see 308 of FIG. 5) . Pointer generator can generate a variable pointer p to be used as an index for memory cells. In general, the interleaver pointer generator is cyclically modulo modifying the interleaver pointer p up or down to or from an interleaver P modulo value, that is variable pointer p includes an element of a set {P}={0,

1, 2, 3, . . . (P-l) } comprising P positive integers

(pϊ{P>) •

Similarly, the prior art DVB de-interleaver 422 (of FIG. 6) de-interleaves a received data stream 426 by using two de-interleaving parameters: L'=L =12, and

M'=M=17, wherein L' is the number of M' byte long delay lines (424, 428, 430, and so on), so that the received data stream 426 is divided into a plurality of data blocks ( for example, please, see a plurality of data blocks 150, 151, ... 156 of FIG. 2), wherein each data block comprises a plurality of data units (for example, please, see a plurality of data units 0, Zl, ands Z2 within block 150 of FIG. 2) . Each delay line has a WRITE address pointer and READ address pointer generated by a de-interleaver pointer generator (for example, please, see de-interleaver pointer generator 308 of FIG. 5) . Again, in general, the de-interleaver pointer generator is cyclically modulo modifying the de-interleaver pointer p' up or down to or from an de-interleaver P' modulo value, that is variable pointer p' includes an element of a set {P'} = {0, 1, 2, 3, . . . (P'-l) } comprising P' positive integers (p'l{P'}). Preferably, the interleaver pointer generator and the de-interleaver pointer generator are synchronized by using the sync word route (404-420-425 of FIG.6).

More specifically, the conventional (prior art) method of interleaving procedure using the convolutional interleaver 402 of FIG. 6 uses a variable pointer p as an index for memory cell.

The pointer #1 (used for the interleaver memory cell 410 including 17 bytes, or for the de-interleaver memory cell 432 including 17 bytes) increments from 0 up to a module value 16, or decrements from modulo value 16 down to 0, to cover all 17 bytes in the memory cell, then recycles. That is variable pointer (p = row 1 for interleaver, or p => row 10 for de-interleaver) includes an element of a set {17}={0, 1, 2, 3, . . . 16} comprising 17 positive integers.

Similarly, the pointer #2 (used for the interleaver memory cell 412 including 17 bytes, or for the de-interleaver memory cell 432 including 17x2 =34 bytes) increments from 17 up to a module value 50, or decrements from modulo value 50 down to 17, to cover all 34 bytes in the memory cell, then recycles. That is variable pointer (p = row 2 for interleaver, or p => row 9 for de-interleaver) includes an element of a set {34}={17, 18, 19, . . . 50} comprising 34 positive integers.

The variable pointer (p => row 3 for interleaver, or p => row 8 for de-interleaver) includes an element of a set {51} ={51-100} comprising 51 positive integers; the variable pointer (p = row 4 for interleaver, or p =» row 7 for de-interleaver) includes an element of a set {68} ={101-167} comprising 68 positive integers; and so on. The last variable pointer (p => row 11 for interleaver, or p = row 0 for de-interleaver) includes an element of a set {11*17 = 187}={940-1127} comprising 68 positive integers One 10-bit register is insufficient to store the pointer data for each row because it includes only 1024 bytes, and we need to store 1127 bytes. The RAM memory comes only in 2N bytes, wherein N is an integer, so that the minimum RAM memory that can be used to store all necessary bytes for each row requires N = 11. Thus, a prior art interleaver having 11 rows uses 2048 bytes total. Even if READ and WRITE pointers are combined, each row requires current pointer, maximum address (where it wraps around) , and base address (where it wraps to) . In addition to an 11-bit pointer register, for each row we need also an upper limit 11-bit address register, and a lower limit 11 -bit address register, for a total of 3 11-bits registers per row. Thus, a circuit including 11 rows requires 11 * 33 = 330 bit registers. One bit register requires 6 gates, so that an 11 rows circuit requires (330) *6 gates= 1980 gates for registers only, plus a number of multiplexers and modulo adders, resulting in a rather large and complex circuit. This leaves about half of RAM unused in the prior art implementation of interleaver 402 (or de-interleaver 422) of FIG. 6, thus significantly increasing the cost of the prior art implementation of interleaver 402 (or de-interleaver 422) of FIG. 6.

Thus, a prior art interleaver requires a fairly large amount of RAM, wherein a substantial amount of RAM memory is left over and is available for other uses. It is an object of the present invention to make use of these available bytes of RAM to simplify the interleaver and/or de-interleaver circuit design and to avoid the need for numerous unused storage registers, multiplexers, and computation circuits.

The present invention makes the most efficient use of the RAM memory itself instead of using the prior art 11- bit registers. In one embodiment of the present invention, at first the data is read out, and than the new data is written in. In alternative embodiment of the present invention, at first the new data is written in, and than the previous data is read out.

FIG. 7A depicts a RAM representation of a DVB interleaver data structure 460 of the present invention that processes an input data stream by using two interleaving parameters: L =12, and M=17, wherein L is the number of M byte long delay lines. Each delay line is represented by a row (462 through 484) that has a base value and a current step value, both stored in RAM. The base value for a row is the starting base address for that row, divided by 17. As shown in FIG. 7B, the current step value is the index of the 17-byte segment presently used by the row (the step value is 0 for 17-byte segment 498) , wherein the block counter 504 counts from 0 to 16 and represents how many bytes into a given segment 498 the pointer is. The base value and current step value for the present row are read out of RAM. In the preferred embodiment of the present invention, the pointer address is computed as follows:

Pointer address=

[ (base_value + current_step_value) * 17] + block_counter_value . (18)

At the pointer address as computed according to Eq. (18) , the output byte is read, and the input byte is written. If block counter wraps around to 0, current step value is incremented, modulo (row number -1) and written to RAM.

In the alternative embodiment of the present invention, the block counter wraps around to 16, current step value is decremented down to modulo (16-row number) and written to RAM.

It is understood by those skillful in the art, that as the pointer address is computed according to Eq. (18) , the output byte is read, and the input byte is written. If block counter wraps around to 0, current step value is incremented, modulo (row number -1) and written to RAM. If block counter wraps around to 16, current step value is decremented, modulo (16 -row number) and written to RAM. Preferably, the RAM bytes that contain the base values should be initialized to 0, 1, 3, 6, ... and the RAM bytes that contain the current step values should be initialized to 0. In the preferred embodiment of the present invention, the RAM representation of de-interleaver data structure is substantially the same as the given above the RAM representation of interleaver data structure (460 of FIG. 7A, and 560 of FIG. 7B) .

The present invention usage of the RAM memory is optimum as compared with the prior art (as shown in FIG. 6) because all bytes of RAM memory are used for RAM representation of interleaver data structure of the pres- ent invention, wherein only about 50% of RAM memory are used for register representation in the prior art interleaver (402 of FIG. 6) .

One aspect of the present invention is directed to a method for data transmission using an interleaver to spread out the bursts of errors caused by a bursty error channel, as depicted in the flow chart 600 of FIG. 8.

An original data stream is intreleaved (step 602 of FIG. 8) by at least one interleaving parameter so that the original data stream (for instance, the data stream 105 of FIG. 2) is divided in a plurality of data blocks (for instance, blocks 140, 141, ...1456 of FIG. 2), wherein each data block comprises a plurality of data units. As shown in FIG. 2, data block 140 comprises data units {0, 1, 2}. In one embodiment of the present invention, the original data stream is interleaved by configuring an interleaver memory unit (step 604 of FIG. 8) for writing and reading the plurality of data units into a plurality of the interleaver memory locations identified by a sin- gle interleaver pointer and an interleaver pointer generator. The interleaver pointer is generated (step 608) by using the interleaver pointer generator (for instance, the pointer generator 308 as shown in FIG. 5) .

In one embodiment of the present invention, the user selects an algorithm (step 610 of FIG. 8) that determines at which points the interleaver pointer takes value. More specifically, one can use a password to determine at which points the pointer should take value. As a result, the password takes only certain predetermined values according to password up or down to the pointer modulo value. The password can be transmitted to the recipient of information on the de-interleaver side of the transmission channel, so that the recipient of data can use the same algorithm to recover the transmitted data in the right order.

EXAMPLE 5. The variable pointer p takes values according to password H = { p2/ p3/ p4/ p5> .. pk} , that is variable pointer p includes an element of a subset {Pk} = {p1( p2> p3; P4, P5, • • } comprising k positive integers.

Finally (step 612 of FIG. 8) , the interleaver pointer is cyclically modulo modified up (or down) to (or from) an interleaver modulo value P. In one embodiment, the interleaver pointer is increased up to the interleaver modulo value according to the algorithm:

{pk} = {Pi. P2, P3, P4, P5, • Pk>' wherein {p-_ < p2 < p3 <p4 <p5 <P ) ■ In an alternative embodiment, the interleaver pointer is decreased down to the interleaver modulo value according to the algorithm: {Pk} = {pX/ p2| p3f p4r p.. pk} , and wherein {px > p2 > p3 >p4

>P5 >Pk>- FIG. 9 is a flow chart 620 that depicts the method of the present invention for using a de- interleaver to recover the original data stream transmitted over a bursty error channel .

An original data stream (for instance, the data stream 105 of FIG. 2) is recovered (step 626 of FIG. 9) by using the de-interleaver (as data stream 105' of FIG. 2) .

In one embodiment of the present invention, the received data stream is de-interleaved by configuring a de-interleaver memory unit (step 628 of FIG. 9) for writing and reading the plurality of data units into a plurality of the de-interleaver memory locations identified by a single de-interleaver pointer and de-interleaver pointer generator. The de-interleaver pointer is generated (step 632) by using the de-interleaver pointer generator after the interleaver pointer generator and the de-interleaver pointer generator are synchronized (step 630) .

In one embodiment of the present invention, the encrypted original data stream is decrypted by using the same algorithm that was used for encryption (634). The selected algorithm is transmitted to the recipient as a part of the transmitted data.

EXAMPLE 6.

The variable de-interleaver pointer p takes values according to transmitted selected password Nk, that is variable de-interleaver pointer p includes an element of a subset {Pk} = {p1; p2, p3, p p5 . - pk} comprising k positive integers according to password Kk, wherein

Nk = (Pi, P2, P3, P., Ps, • • Pk> •

Finally (step 636 of FIG. 9), the de- interleaver pointer is cyclically modulo modified up (or down) to (or from) a de-interleaver modulo value P. In one embodiment, the de-interleaver pointer is increased up to the de-interleaver modulo value according to the algorithm: {Pk} ={p1 P2, P3, P4, Ps, • • Pk ' wherein {p-L < p2 < p3 <p <p5 ^k^ • ^n an alternative embodiment, the de-interleaver pointer is decreased down to the interleaver modulo value according to the algorithm: {Pk}={p1( ρ2( p3> p p.. pk}, and wherein {px > p2 > p3 >p4

Figure imgf000029_0001
In one embodiment, the interleaver pointer and de-interleaver pointers go in the same direction. In an alternative embodiment, the interleaver pointer and de- interleaver pointers go in different direction. For instance, the interleaver pointer is increasing, and the de- interleaver pointer is decreasing, or vice versa.

The description of the preferred embodiment of this invention is given for purposes of explaining the principles thereof, and is not to be considered as limit- ing or restricting the invention since many modifications may be made by the exercise of skill in the art without departing from the scope of the invention.

Claims

Clai s
1. A system for data transmission comprising: an interleaver adapted to communicate with a channel ; wherein said interleaver interleaves an original data stream by at least one interleaving parameter so that said original data stream is divided in a plurality of data blocks, each said data block comprising a plurality of data units; said interleaver further including: an interleaver memory unit configured for writing and reading said plurality of data units into a plurality of said interleaver memory locations identified by a single interleaver pointer and an interleaver pointer generator; and wherein said interleaver pointer generator is configured to generate said interleaver pointer during said interleaving procedure; and wherein said interleaver pointer generator is cyclically modulo modifying said interleaver pointer up (or down) to (or from) an interleaver modulo value; and a de-interleaver adapted to communicate with said channel; wherein said de-interleaver recovers said original data stream by use of said at least one interleaving parameter; said de-interleaver further comprising: a de-interleaver memory unit configured for writing and reading said plurality of data units into a plurality of said de-interleaver memory locations identified by a single de-interleaver pointer and a de- interleaver pointer generator; and wherein said de-interleaver pointer generator is configured to generate said de-interleaver pointer during said de-interleaving procedure; and wherein said de- interleaver pointer generator is cyclically modulo modifying said de-interleaver pointer up (or down) to (or from) a de-interleaver modulo value; and wherein said interleaver pointer generator and said de-interleaver pointer generator are synchronized.
2. The system of claim 1, said interleaver memory unit further comprising: a plurality of interleaver branches; each said interleaver branch further comprising a plurality of interleaver blocks, each said interleaver block further including a plurality of interleaver addresses.
3. The system of claim 1, said de-interleaver memory unit further comprising: a plurality of de-interleaver branches; each said de-interleaver branch further comprising a plurality of de-interleaver blocks, each said de-interleaver block further including a plurality of de-interleaver addresses .
4. The system of claim 1, wherein said interleaver memory unit further comprises: a RAM memory unit .
5. The system of claim 1, wherein said interleaver memory unit further comprises: a hard drive memory unit.
6. The system of claim 1, wherein said interleaver memory unit further comprises: an external memory unit.
7. The system of claim 1, wherein said de-interleaver memory unit further comprises: a RAM memory unit.
8. The system of claim 1, wherein said de-interleaver memory unit further comprises: a hard drive memory unit.
9. The system of claim 1, wherein said de-interleaver memory unit further comprises: an external memory unit .
10. A system for data transmission comprising: an interleaver adapted to communicate with a channel ; wherein said interleaver interleaves an original data stream by at least one interleaving parameter so that said original data stream is divided in a plurality of data blocks, each said data block comprising a plurality of data units; said interleaver further including: an interleaver memory unit configured for writing and reading said plurality of data units into a plurality of said interleaver memory locations identified by a single interleaver pointer and an interleaver pointer generator; and wherein said interleaver pointer generator is configured to generate said interleaver pointer during said interleaving procedure; and wherein said interleaver pointer generator is cyclically modulo modifying said interleaver pointer up (or down) to (or from) an interleaver modulo value; and wherein a de-interleaver is adapted to communicate with said channel; and wherein said de-interleaver recovers said original data stream by use of said at least one interleaving parameter; and wherein a de-interleaving procedure includes writing and reading said plurality of data units into a plurality of a de-interleaver memory locations identified by a single de-interleaver pointer and by a de- interleaver pointer generator; and wherein said de-interleaver pointer generator is configured to generate said de-interleaver pointer during said de-interleaving procedure; and wherein said de-interleaver pointer generator is cyclically modulo modifying said de-interleaver pointer up (or down) to (or from) a de-interleaver modulo value; and wherein said interleaver pointer generator and said de-interleaver pointer generator are synchronized.
11. A system for data transmission comprising: a de-interleaver adapted to communicate with a channel ; wherein an interleaver adapted to communicate with said channel is configured to interleave an original data stream by at least one interleaving parameter so that said original data stream is divided in a plurality of data blocks, each said data block comprising a plurality of data units; and wherein an interleaver memory unit is configured for writing and reading said plurality of data units into a plurality of said interleaver memory locations identified by a single interleaver pointer and an interleaver pointer generator; and wherein said interleaver pointer generator is configured to generate said interleaver pointer during said interleaving procedure; and wherein said interleaver pointer generator is cyclically modulo modifying said interleaver pointer up (or down) to (or from) an interleaver modulo value; and wherein said de-interleaver recovers said original data stream by use of said at least one interleaving parameter; said de-interleaver further comprising: a de-interleaver memory unit configured for writing and reading said plurality of data units into a plurality of said de-interleaver memory locations identified by a single de-interleaver pointer and a de- interleaver pointer generator; and wherein said de-interleaver pointer generator is configured to generate said de-interleaver pointer during said de-interleaving procedure; and wherein said de- interleaver pointer generator is cyclically modulo modifying said de-interleaver pointer up (or down) to (or from) a de-interleaver modulo value; and wherein said interleaver pointer generator and said de-interleaver pointer generator are synchronized.
12. A method for data transmission comprising the steps of: using an interleaver to communicate with a channel; interleaving an original data stream by at least one interleaving parameter so that said original data stream is divided in a plurality of data blocks, each said data block comprising a plurality of data units; using a de-interleaver to communicate with said channel ; and using said de-interleaver to recover said original data stream by use of said at least one interleaving parameter.
13. The method of claim 12, wherein said step of interleaving said original data stream by said at least one interleaving parameter further includes the step of: configuring an interleaver memory unit for writing and reading said plurality of data units into a plurality of said interleaver memory locations identified by a single interleaver pointer and an interleaver pointer generator.
14. The method of claim 13 further including the step of: generating said interleaver pointer during said interleaving procedure by using said interleaver pointer generator .
15. The method of claim 14, wherein said step of generating said interleaver pointer during said interleaving procedure by using said interleaver pointer generator further includes the step of: cyclically modulo modifying said interleaver pointer up (or down) to (or from) an interleaver modulo value by using said interleaver pointer generator.
16. The method of claim 15, wherein said step of cyclically modulo modifying said interleaver pointer further includes the step of: cyclically modulo increasing said interleaver pointer up to said interleaver modulo value by using said interleaver pointer generator.
17. The method of claim 16, wherein said step of cyclically modulo increasing said interleaver pointer up to said interleaver modulo value by using said > interleaver pointer generator further includes the steps of: selecting an algorithm that determines at which points said interleaver pointer takes value; and increasing said interleaver pointer up to said interleaver modulo value according to said algorithm.
18. The method of claim 15, wherein said step of cyclically modulo modifying said interleaver pointer further includes the step of: cyclically modulo decreasing said interleaver pointer down to said interleaver modulo value by using said interleaver pointer generator.
19. The method of claim 18, wherein said step of cyclically modulo decreasing said interleaver pointer down to said interleaver modulo value by using said interleaver pointer generator further includes the steps of: selecting an algorithm that determines at which points said interleaver pointer takes value; and decreasing said interleaver pointer down to said interleaver modulo value according to said algorithm.
20. The method of claim 12, wherein said step of using said de-interleaver to recover said original data stream by use of said at least one interleaving parameter further includes the step of: configuring a de-interleaver memory unit for writing and reading said plurality of data units into a plurality of said de-interleaver memory locations identified by a single de-interleaver pointer and a de-interleaver pointer generator .
21. The method of claim 20, wherein said step of configuring said de-interleaver memory unit further includes the step of: generating said de-interleaver pointer during said de-interleaving procedure by using said de-interleaver pointer generator.
22. The method of claim 21, wherein said step of generating said de-interleaver pointer during said de- interleaving procedure by using said de-interleaver pointer generator further includes the step of: cyclically modulo modifying said de-interleaver pointer up (or down) to (or from) a de-interleaver modulo value .
23. The method of claim 22, wherein said step of cyclically modulo modifying said de-interleaver pointer further includes the step of: cyclically modulo increasing said de-interleaver pointer up to said de-interleaver modulo value.
24. The method of claim 23, wherein said step of cyclically modulo increasing said de-interleaver pointer up to said de-interleaver modulo value by using said de- interleaver pointer generator further includes the steps of: selecting an algorithm that determines at which points said de-interleaver pointer takes value; and increasing said de-interleaver pointer up to said de-interleaver modulo value according to said algorithm.
25. The method of claim 22, wherein said step of cyclically modulo modifying said de-interleaver pointer further includes the step of: cyclically modulo decreasing said de-interleaver pointer down to said de-interleaver modulo value.
26. The method of claim 25, wherein said step of cyclically modulo decreasing said de-interleaver pointer down to said de-interleaver modulo value by using said de-interleaver pointer generator further includes the steps of: selecting an algorithm that determines at which points said de-interleaver pointer takes value; and decreasing said de-interleaver pointer down to said de-interleaver modulo value according to said algorithm.
27. The method of claim 12 further including the step of: synchronizing said interleaver pointer generator and said de-interleaver pointer generator.
28. A method for data transmission comprising the steps of: using an interleaver to communicate with a channel; and interleaving an original data stream by at least one interleaving parameter so that said original data stream is divided in a plurality of data blocks, each said data block comprising a plurality of data units; wherein a de-interleaver is used to communicate with said channel ; and wherein said de-interleaver is used to recover said original data stream by use of said at least one interleaving parameter.
29. A method for data transmission; wherein an interleaver is used to communicate with a channel; and wherein an original data stream is interleaved by at least one interleaving parameter so that said original data stream is divided in a plurality of data blocks, each said data block comprising a plurality of data units; said method further comprising the steps of: using a de-interleaver to communicate with said channel ; and using said de-interleaver to recover said original data stream by use of said at least one interleaving parameter .
30. A method for data encryption comprising the steps of: using an interleaver to communicate with a channel; encrypting an original data stream by interleaving said original data stream by at least one interleaving parameter so that said original data stream is divided in a plurality of data blocks, each said data block comprising a plurality of data units; using a de-interleaver to communicate with said channel ; and using said de-interleaver to recover said original data stream by use of said at least one interleaving parameter.
31. The method of claim 30, wherein said step of encrypting said original data stream by interleaving said original data stream by said at least one interleaving parameter further includes the steps of: configuring an interleaver memory unit for writing and reading said plurality of data units into a plurality of said interleaver memory locations identified by a single interleaver pointer and an interleaver pointer generator; generating said interleaver pointer during said interleaving procedure by using said interleaver pointer generator; cyclically modulo modifying said interleaver pointer up (or down) to (or from) an interleaver modulo value by using said interleaver pointer; and selecting an algorithm that determines at which points said interleaver pointer takes value.
32. The method of claim 31, wherein said step of cyclically modulo modifying said interleaver pointer further includes the step of: cyclically modulo increasing said interleaver pointer up to said interleaver modulo value by using said interleaver pointer generator.
33. The method of claim 31, wherein said step of cyclically modulo modifying said interleaver pointer further includes the step of: cyclically modulo decreasing said interleaver pointer down to said interleaver modulo value by using said interleaver pointer generator.
34. A system for data transmission comprising the steps of: means for interleaving an original data stream by at least one interleaving parameter so that said original data stream is divided in a plurality of data blocks, each said data block comprising a plurality of data units; and means for recovering said original data stream by use of said at least one interleaving parameter.
35. The system of claim 34, wherein said means for interleaving said original data stream by at least one interleaving parameter further includes : means for writing and reading said plurality of data units an interleaver pointer.
36. The system of claim 35, wherein said means for writing and reading said plurality of data units using said interleaver pointer further includes: means for cyclically modulo modifying said interleaver pointer up (or down) to (or from) an interleaver modulo value.
37. The system of claim 36, wherein said means for cyclically modulo modifying said interleaver pointer further includes: algorithmic means for selecting at which points said interleaver pointer takes value .
38. The system of claim 34, wherein said means for recovering said original data stream by use of said at least one interleaving parameter further includes: means for writing and reading said plurality of data units using a de-interleaver pointer.
39. The system of claim 38, wherein said means for writing and reading said plurality of data units using said de-interleaver pointer further includes: means for cyclically modulo modifying said de- interleaver pointer up (or down) to (or from) a de- interleaver modulo value.
40. The system of claim 39, wherein said means for cyclically modulo modifying said de-interleaver pointer further includes : algorithmic means for selecting at which points said de-interleaver pointer takes value.
41. The system of claim 34 further including: means for synchronizing said interleaver pointer and said de-interleaver pointer.
42. The system for data encryption comprising: means for encrypting an original data stream by interleaving said original data stream by at least one interleaving parameter so that said original data stream is divided in a plurality of data blocks, each said data block comprising a plurality of data units; and means for recovering said original data stream by use of said at least one interleaving parameter.
43. A system for data transmission comprising: a convolutional interleaver including at least one interleaving parameter, said convolutional interleaver is configured to interleave an original data stream so that said original data stream is divided in a plurality of data blocks, each said data block comprising a plurality of data units; and a convolutional de-interleaver including at least one de-interleaving parameter, said convolutional de- interleaver is configured to recover said original data stream, wherein said at least one interleaving parameter and said at least one de-interleaving parameter are matched, and wherein said convolutional interleaver and said convolutional de-interleaver are synchronized.
44. The system of claim 43, wherein said convolutional interleaver includes two interleaving parameters: a number of interleaver branches and an interleaver delay, and wherein said convolutional de-interleaver includes two de-interleaving parameters: a number of de- interleaver branches and a de- interleaver delay, and wherein said number of interleaver branches matches said number of de-interleaver branches, and wherein said interleaver delay matches said de-interleaver delay.
45. The system of claim 44, wherein said number of interleaver branches N is equal to 12, and wherein said interleaver delay D is equal to 17 time units.
46. The system of claim 44, wherein said convolutional interleaver further includes : a RAM memory including an L number of M byte long delay lines, L and M being integers; and wherein each said delay line is represented by a row including a base value and a current step value, and wherein said base value and said current step value for said row are read out of said RAM.
47. The system of claim 46, wherein said RAM memory includes :
12 rows, each said row including a base value and a current step value, each said row including at least one block including 17 bytes; each said block having a block counter value, each said block being addressed by a pointer.
48. The system of claim 47, wherein said pointer address is equal to:
[ (base_value + current_step_value) * 17] + block counter value .
PCT/US2001/041922 2000-09-18 2001-08-29 Optimized ram representation of convolutional interleaver/de-interleaver data structure WO2002023340A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US66327300 true 2000-09-18 2000-09-18
US09/663,273 2000-09-18

Publications (1)

Publication Number Publication Date
WO2002023340A1 true true WO2002023340A1 (en) 2002-03-21

Family

ID=24661132

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/041922 WO2002023340A1 (en) 2000-09-18 2001-08-29 Optimized ram representation of convolutional interleaver/de-interleaver data structure

Country Status (1)

Country Link
WO (1) WO2002023340A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2512601B (en) * 2013-04-02 2016-02-10 Sony Corp Transmitters and methods for transmitting signals

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592492A (en) * 1994-05-13 1997-01-07 Lsi Logic Corporation Convolutional interleaving/de-interleaving method and apparatus for data transmission
US5600653A (en) * 1994-09-30 1997-02-04 Comsat Corporation Technique for improving asynchronous transfer mode operation over a communications link with bursty bit errors
US5636224A (en) * 1995-04-28 1997-06-03 Motorola Inc. Method and apparatus for interleave/de-interleave addressing in data communication circuits
US5675585A (en) * 1994-07-29 1997-10-07 Alcatel Telspace Method and system for interleaving and deinterleaving SDH frames
US5946707A (en) * 1997-02-28 1999-08-31 Adaptec, Inc. Interleaved burst XOR using a single memory pointer
US6014761A (en) * 1997-10-06 2000-01-11 Motorola, Inc. Convolutional interleaving/de-interleaving method using pointer incrementing across predetermined distances and apparatus for data transmission

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592492A (en) * 1994-05-13 1997-01-07 Lsi Logic Corporation Convolutional interleaving/de-interleaving method and apparatus for data transmission
US5745497A (en) * 1994-05-13 1998-04-28 Lsi Logic Corporation Convolutional interleaving/DE-interleaving method and apparatus for data transmission
US5675585A (en) * 1994-07-29 1997-10-07 Alcatel Telspace Method and system for interleaving and deinterleaving SDH frames
US5600653A (en) * 1994-09-30 1997-02-04 Comsat Corporation Technique for improving asynchronous transfer mode operation over a communications link with bursty bit errors
US5636224A (en) * 1995-04-28 1997-06-03 Motorola Inc. Method and apparatus for interleave/de-interleave addressing in data communication circuits
US5886998A (en) * 1995-04-28 1999-03-23 Motorola, Inc. Method and apparatus for interleave/de-interleave addressing in data communication circuits
US5946707A (en) * 1997-02-28 1999-08-31 Adaptec, Inc. Interleaved burst XOR using a single memory pointer
US6014761A (en) * 1997-10-06 2000-01-11 Motorola, Inc. Convolutional interleaving/de-interleaving method using pointer incrementing across predetermined distances and apparatus for data transmission

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2512601B (en) * 2013-04-02 2016-02-10 Sony Corp Transmitters and methods for transmitting signals

Similar Documents

Publication Publication Date Title
Purser Introduction to error-correcting codes
US4849974A (en) PASM and TASM forward error correction and detection code method and apparatus
US4849976A (en) PASM and TASM forward error correction and detection code method and apparatus
Adamek Foundations of coding: Theory and applications of error-correcting codes with an introduction to cryptography and information theory
US6360348B1 (en) Method and apparatus for coding and decoding data
US5392299A (en) Triple orthogonally interleaed error correction system
US5983388A (en) Forward error correction arrangement (FEC) for multipoint to single point communication systems
US6738942B1 (en) Product code based forward error correction system
US6574774B1 (en) Physical block address recovery apparatus system and method for cyclic error correction codes
US5974580A (en) Concurrent row/column syndrome generator for a product code
US7069492B2 (en) Method of interleaving a binary sequence
Ling et al. Coding theory: a first course
US5983383A (en) Method and apparatus for transmitting and receiving concatenated code data
US6438724B1 (en) Method and apparatus for deterministically altering cyclic redundancy check information for data storage
US6446234B1 (en) Method and apparatus for updating cyclic redundancy check information for data storage
US7278085B1 (en) Simple error-correction codes for data buffers
US6578171B1 (en) Method of correcting residual errors at the output of a turbodecoder
US4796260A (en) Schilling-Manela forward error correction and detection code method and apparatus
US7284184B2 (en) Forward error correction scheme compatible with the bit error spreading of a scrambler
US5898710A (en) Implied interleaving, a family of systematic interleavers and deinterleavers
US6658605B1 (en) Multiple coding method and apparatus, multiple decoding method and apparatus, and information transmission system
US5727003A (en) Method and apparatus for flash burst error correction
US6047395A (en) Error correction processor for correcting a multi-dimensional code by generating an erasure polynomial over one dimension for correcting multiple codewords in another dimension
US4856003A (en) Error correction code encoder
US6272659B1 (en) Error correction code processor employing adjustable correction power for miscorrection minimization

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase in:

Ref country code: JP