Coding system having state machine based interleaver
AssigneeQUALCOMM Incorporated
InventorsNagabhushana T. Sindhushayana, Jeremy Stein, Rajiv Vijayan, Fuyun Ling
Life of this patent
Estimating the term…
Abstract
The present invention is a novel and improved technique for performing coding with particular application to turbo, or iterative, coding techniques. In accordance with one embodiment of the invention, interleaving is performed by generating the address of a memory using a PN state generator. Data is written into a memory in sequential order, and then read out using addresses specified by the PN state generator. To deinterleave, the interleaved data is written into a memory using addresses specified by the PN state generator, and then read out in sequential order. A set of PN state generators that provide excellent coding performance is provided.
Claims20
A method for decoding encoded data, comprising the steps of:
- (a) writing the encoded data into a memory using a first address generation unit:
- (b) reading the encoded data from said memory using a second address generation unit, wherein said reading step comprises the step of generating a set of addresses by incrementing a PN state machine;
- and
- (c) removing an address from said set of addresses, if said address is greater than a number N, where N is an amount of encoded data to be interleaved.
A method for decoding encoded data, comprising the steps of:
- (a) writing the encoded data into a memory using a first address generation unit;
- and
- (b) reading the encoded data from said memory using a second address generation unit;
- wherein said second address unit comprises a state machine using the following polynomials:
- 1+D{circumflex over ( )}4+D{circumflex over ( )}9 when memory size is >256 and <=511;
- 1+D{circumflex over ( )}3+D{circumflex over ( )}10 when memory size is >511 and <=1023;
- 1+D{circumflex over ( )}2+D{circumflex over ( )}11 when memory size is >1024 and <=2047;
- 1+D+D{circumflex over ( )}4+D{circumflex over ( )}6+D{circumflex over ( )}12 when memory size is >2047 and <=4095;
- 1+D+D{circumflex over ( )}3+D{circumflex over ( )}4+D{circumflex over ( )}13 when memory size is >4095 and <=8191;
- 1+D+D{circumflex over ( )}3+D{circumflex over ( )}5+D{circumflex over ( )}14 when memory size is >8191 and <=16383;
- 1+D+D{circumflex over ( )}15 when memory size is >16383 and <=32767.
A system for coding data, comprising:
- (a) a memory of size N, having an address input and a data input;
- (b) a counter means for controlling said address input when data is written into said memory;
- and
- (c) a PN state machine for controlling said address input when data is read out of said memory.
A system for coding data, comprising:
- (a) a memory of size N, having an address input and a data input;
- (b) a counter means for controlling said address input when data is written into said memory;
- (c) a PN state machine for controlling said address input when data is read out of said memory;
- and
- (d) an address filter for removing values greater than N generated by said PN state machine.
A method for decoding data, comprising the steps of:
- (a) writing said data using a first set of addresses defined by a PN state machine;
- (b) reading said data using a second set of addresses defined by a counter.
A method for decoding data, comprising the steps of:
- (a) writing said data using a first set of addresses defined by a PN state machine;
- (b) reading said data using a second set of addresses defined by a counter;
- and
- (c) removing an address from said set first of addresses, if said address is greater than a number N, where N is an amount of encoded data to be interleaved.
A method for decoding data, comprising the steps of:
- (a) writing said data using a first set of addresses defined by a PN state machine;
- and
- (b) reading said data using a second set of addresses defined by a counter,
- wherein said PN state machine uses the following polynomials:
- 1+D{circumflex over ( )}4+D{circumflex over ( )}9 when memory size is >256 and <=511;
- 1+D{circumflex over ( )}3+D{circumflex over ( )}10 when memory size is >511 and <=1023;
- 1+D{circumflex over ( )}2+D{circumflex over ( )}11 when memory size is >1024 and <=2047;
- 1+D+D{circumflex over ( )}4+D{circumflex over ( )}6+D{circumflex over ( )}12 when memory size is >2047 and <=4095;
- 1+D+D{circumflex over ( )}3+D{circumflex over ( )}4+D{circumflex over ( )}13 when memory size is >4095 and <=8191;
- 1+D+D{circumflex over ( )}3+D{circumflex over ( )}5+D{circumflex over ( )}14 when memory size is >8191 and <=16383;
- 1+D+D{circumflex over ( )}15 when memory size is >16383 and <=32767.
A decoder, comprising:
- (a) a memory of size N, having an address input and a data input;
- (b) a PN state machine for controlling said address input when data is written into said memory;
- and
- (c) a counter means for controlling said address input when data is read out of said memory.
A decoder, comprising:
- (a) a memory of size N, having an address input and a data input;
- (b) a PN state machine for controlling said address input when data is written into said memory;
- (c) a counter means for controlling said address input when data is read out of said memory;
- and
- (d) an address filter for removing values greater than N generated by said PN state machine.
A method for performing interleaving in a turbo coder, comprising the steps of:
- (a) generating a first set of PN based addresses;
- (b) writing data into a memory using said first set of PN based addresses as row addresses;
- and
- (c) reading out said data using a counter for row addresses.
A method for performing interleaving in a turbo coder, comprising the steps of:
- (a) generating a first set of PN based addresses;
- (b) writing data into a memory using said first set of PN based addresses as row addresses;
- (c) reading out said data using a counter for row addresses;
- (d) generating column addresses using a counter during said writing step;
- and
- (e) generating row addresses using a counter during said read step.
A method for performing interleaving in a turbo coder, comprising the steps of:
- (a) generating a first set of PN based addresses;
- (b) writing data into a memory using said first set of PN based addresses as column addresses;
- and
- (c) reading out said data using a counter for column addresses.
A method for performing interleaving in a turbo coder, comprising the steps of:
- (a) generating a first set of PN based addresses;
- (b) writing data into a memory using said first set of PN based addresses as column addresses;
- (c) reading out said data using a counter for column addresses;
- (d) generating column addresses using a counter during said writing step;
- and
- (e) generating row addresses using a counter during said read step.
Dependencies are inferred from the claim text.