HK1068033B - Method for a general turbo code trellis termination - Google Patents
Method for a general turbo code trellis termination Download PDFInfo
- Publication number
- HK1068033B HK1068033B HK05101538.2A HK05101538A HK1068033B HK 1068033 B HK1068033 B HK 1068033B HK 05101538 A HK05101538 A HK 05101538A HK 1068033 B HK1068033 B HK 1068033B
- Authority
- HK
- Hong Kong
- Prior art keywords
- output
- tail
- bits
- branch
- input
- Prior art date
Links
Description
The present invention relates to methods for terminating both of the constituent encoders of a turbo code and developing puncturing patterns applicable at a trellis termination stage that ensures the same number of transmitted bits for each trellis stage during the information bit transmission and trellis termination stages.
In a convolutional encoding scheme, tail bits are inserted after information bits, to zero out all shift registers of an encoder. For feed forward encoders, tail bits are equal to zero. For feedback encoders the value of tail bits depend on the contents of the shift register current values.
A turbo encoder consists of a parallel concatenation of two (2) or more recursive (feedback) convolutional encoders. Because each constituent encoder processes the information bits in a different order due to a turbo interleaver, it is not possible to terminate all constituent encoders by the same tail bits as shown in prior art DE 19520987 .
A trellis termination method general enough to be used for a set of turbo codes with different code rates as in the third generation CDMA systems is desirable. Included in the desirable general method is a method of puncturing tail bit sequences.
The present invention advantageously addresses the needs above as well as other needs by providing a method and apparatus for a general Turbo Code trellis termination which may be employed when a turbo encoder operates within a wide range of turbo code rates when transmitting information bits.
In its most general form, the invention can be characterized as a method of terminating two constituent encoders of a turbo encoder as defined in the claims.
The above and other aspects, features and advantages of the present invention will be more apparent from the following more particular description thereof, presented in conjunction with the following drawings wherein:
- FIG.1 is a block diagram of a turbo encoder with interleaved bits entering a second encoder, for use in accordance with one embodiment of the present invention.
Corresponding reference characters indicate corresponding components throughout the several views of the drawings.
The following description of the presently contemplated best mode of practicing the invention is not to be taken in a limiting sense, but is made merely for the purpose of describing the general principles of the invention. The scope of the invention should be determined with reference to the claims.
Referring to FIG. 1 , an exemplary turbo code encoder is shown wherein one embodiment of a Turbo Code trellis termination design terminates one encoder 10 (a first encoder) while disabling another encoder 10' (a second encoder) and at a different time terminates the other encoder 10' (second encoder) while disabling the encoder 10 (first encoder).
The encoders (first and second encoders) 10, 10' of the turbo code encoder of FIG.1 are constituent encoders configured in a parallel concatenation. It is well known in the art that a constituent encoder employ a configuration of modular adders 17, 20, 26, 28, 30, 24, and 25, and shift registers 18, 21, 22, coupled through nodes (such as node 32) to produce output bits, including tail output bits, X(t), Yo(t), Y1(t), for example, depending upon the encoding scheme. FIG. 1 is just one example of such a parallel concatenation of constituent encoders, wherein an interleaver device (Interleaver) 16 is employed between an input for X(t) and the second encoder 10', and wherein additionally, a puncturer 36 is employed, switchably coupled to respective encoder outputs for each of the encoders (first and second encoders) 10, 10'. As described herein, tail input bits will mean the bits X, and X' in FIG. 1 , and tail output bits will mean the bits X, X', Y0, Y0', Y1 or Y1'. In other turbo encoders, there may be more than two constituent encoders. Each of the constituent encoders may utilize a fewer or greater number of shift registers than in FIG. 1 .
In FIG. 1 , after message bits X(t) are encoded, a switch 12 is moved to a feedback position to allow the generation of three (3) consecutive tail input bits, in this example, generated from the contents of each of three shift registers 18, 21, and 22 (also referred to herein as a first shift register 18, a second shift register 21, and a third shift register 22). In general, a number of tail input bits X(t), X' (t) for terminating a constituent encoder is equal to a number of shift registers in that encoder.
At the end of each clock cycle, new tail input bits X(t), X' (t) are generated for zeroing out each respective shift register of the three shift registers, 18, 21 and 22.
For instance the encoders 10, 10' are terminated simultaneously within three clock cycles, each with its own tail input bit X(t), X' (t). Alternatively, the first encoder 10 is first terminated while the second encoder 10' is disabled, followed by the second encoder 10' being terminated while the first encoder 10 is disabled according to an embodiment of the invention.
In the variation with the encoders 10, 10' terminated at different times the encoders 10, 10' can be terminated in consecutive clock cycles, wherein six (6) consecutive clock cycle tail input bits X(t), X' (t), consecutively terminate both the encoders 10, 10'.
As can be seen from FIG. 1 , a second tail input bit sequence 34' for terminating the second encoder 10' is fed back into the second encoder 10' through a switch 12' and circuit 14'. Tail input bits X(t), X' (t) are not interleaved by the turbo interleaver 16. Similarly, a tail input bit sequence 34 for terminating the first encoder 10 is fed back into the first encoder 10 through another switch 12 and another circuit 14.
The zeroing of the shift registers 18, 21, 22, prior to implementing a puncturing scheme per an embodiment of the invention, is triggered by a beginning and an ending tail input bit sequence X(t), X' (t), each sequence having a number n of tail input bits X(t), X' (t) equal to the number n of shift registers 18, 21, 22 or 18', 21, 22 coupled to each one of the encoders 10, 10'.
As with information and coded bits, tail output bits X, Yo, Y1, X', Yo, Y1' are also punctured by the puncturer 36.
Table 1 indicates associated tail output bit puncturing patterns having indicator sequences (e.g., "111 000") identifying which bits to puncture and which bits to transmit. The indicator sequence, comprising "1"'s or "0"'s is selected in accordance with an encoder rate. In this notation, "1" indicates the tail output bit should be transmitted and "0" indicates that the tail output should be punctured. Certain entries in Table 1 are labeled "repeat", which means that transmitted bits are transmitted twice.
The tail input bit sequences 34, 34', which comprise tail input bits X, and X', are generated after the encoders 10, 10' encode the information bits with the switches 12, 12' (FIG. 1 ), while the switches 12, 12' are in an up position. The first n/R tail output bits X1, Y0, Y1, wherein n is the number of shift registers 18, 21, 22 or 18', 21', 22' per constituent encoder (n=3 in FIG.1 ), and wherein R is a turbo code rate being employed, are generated by clocking the first encoder 10 n times with its switch 12 in the down position while the second encoder 10' is not clocked, and puncturing or repeating the resulting tail output bits X1, Y0, Y1, X', Y0', Y1' according to Table 1 below. The last n/R tail output bits X', Y0', Y1' are generated by clocking the second encoder 10' n timer with its switch 12' in the down position while the first encoder 10 is not clocked, and puncturing or repeating the resulting tail output bits according to Table 1. These final output bits are denoted by X', Y0' or Y1'.
For rate 1/2 turbo codes, the tail output bits for each of a first n tail input bit (also referred to herein as "the beginning tail bit sequence X(t)") are XY0. and the tail output bits for each of a last n tail bit periods (also referred to herein as "the ending tail bit sequence X'(t)") are X'Y0'. For rate 1/3 turbo codes, the tail output bits for each of the first n tail input bits are XXY0Y1, and the tail output bits for each of the last n tail bits are X'X'Y0'. For a rate 1/4 turbo code, the tail output bits for each of the first n tail input bits are XXY0Y1 and the tail output bits for each of the last n tail input bits periods are X'X'Y0'Y1'.
Tail inputs bits are not interleaved by the interleaver 16. They are added after the encoding of the information bits.
TABLE 1: Puncturing Patterns for Tail Output Bits
| Rate | 1/2 | 1/3 | 1/4 |
| X(t) | 111 000 | 111 000 Repeat | 111 000 Repeat |
| 111 000 | 111 000 | 111 000 | |
| 000 000 | 000 000 | 111 000 | |
| X'(t) | 000 111 | 000 111 Repeat | 000 111 Repeat |
| 000 111 | 000 111 | 000 111 | |
| 000 000 | 000 000 | 000 111 |
When employing Table 1 to design puncturing patterns for tail output bits, the row designation "repeat" means that for a rate 1/3 or a rate 1/4 turbo code, when transmitted, the bits X and X' are transmitted twice.
For a rate 1/2 turbo code, the puncturing table is read first from top to bottom, and then from left to right. For a rate 1/3 turbo code and a rate 1/4 turbo code, the puncturing table is read first from top to bottom, repeating X(t) and X'(t), and then from left to right.
The puncturing patterns in Table 1 are chosen so that:
- (1) A number of transmitted tail output bits during trellis termination is 1/R for each trellis branch wherein R is the turbo code rate employed during information bit transmission. Advantageously, this condition ensures that the same turbo code rate is used for trellis termination as for information bit transmission.
- (2) Only output branches of the encoders 10, 10' used during information bit transmission are used for trellis termination. For example, for rate 1/2 and rate 1/3 turbo coders, only X(t), X' (t), Y0(t) and Y'0(t) are transmitted during information bit transmission; Y1(t) and Y'1(t) are always punctured. Therefore, only X(t), X'(t), Y0(t) and Y'0(t) are transmitted during the trellis termination stage, as well. Advantageously, therefore, if a manufacturer only wanted to implement a rate 1/2 and encoder, such a manufacturer would only have to implement transmissions of bits from branches X, Y0 or X', Y0'.
- (3) In order to meet conditions (1) and (2), it may require repetition of some tail output bits during trellis termination. That is, to both keep the turbo code rate the same, and to only use output branches used in information bit transmission, it may be necessary to repeat one or more of the tail bits for each encoder 10, 100 in order to keep the turbo code rate the same.
In the preferred embodiment illustrated by Table 1, X(t) and X'(t) are selected to be repeated in both the turbo code rate 1/3 and rate 1/4 cases. Table 1 may also be employed irrespective of whether the encoders 10, 10' are terminated concurrently or non-concurrently.
Alternative embodiments are envisioned, in keeping within the spirit of the invention wherein another tail output bit is selected to be repeated, such as, for example that corresponding to Y0(t) and Y0'(t).
Alternatively, where a code rate lower than 1/4 is employed it may be necessary to repeat more than one tail output bit per encoder 10, 10', in which case an additional tail bit besides X(t) may be repeated, such as repeating X(t) and Y0(t) or repeating X(t) twice or any combination whatsoever.
While the invention herein disclosed has been described by means of specific embodiments and applications thereof, numerous modifications and variations could be made thereto by those skilled in the art without departing from the scope of the invention set forth in the claims.
Claims (28)
- A method for terminating two constituent encoders of a turbo encoder employing a turbo code, the method comprising:encoding information bits input to a first one of the constituent encoders and encoding the information bits input to a second one of the constituent encoders,after encoding, generating tail output bits; andoutputting tail output bits from the constituent encoders during trellis termination of the constituent encoders,wherein the information bits input into the second constituent encoder are interleaved,when the turbo encoder is employed as a coding rate R turbo encoder, the outputting step comprises:outputting tail output bits from the first constituent encoder during trellis termination; andoutputting tail output bits from the second constituent encoder, during trellis termination,characterized in that a first set of tail output bits is generated in the first constituent encoder while the second constituent encoder is disabled, and in that a second set of the tail output bits is generated in the second constituent encoder while the first constituent encoder is disabled.
- The method of claim 1, wherein outputting the tail output bits further comprises:outputting at least one tail output bit from the first constituent encoder more than once; andoutputting at least one tail output bit from the second constituent encoder more than once.
- The method of claim 1, wherein when R is 1/2 and outputting the tail output bits comprises:outputting tail output bits from a first output branch, X(t), and a second output branch, Y0(t), of the first constituent encoder; andoutputting tail output bits from a third output branch, X'(t), and a fourth output branch, Y0'(t), of the second constituent encoder.
- The method of claim 3, wherein outputting the tail output bits comprises:outputting a first tail output bit from the first output branch, X(t); thenoutputting a second tail output bit from the second output branch, Y0(t); thenoutputting a third tail output bit from the third output branch, X'(t); and thenoutputting a fourth tail output bit from the fourth output branch, Y0'(t).
- The method of claim 3, wherein:tail input bits are input consecutively at each of the two constituent encoders such tat tail input bits are input to the first constituent encoder in different clock cycles than tail input bits input to the second constituent encoder.
- The method of claim 1, further comprising:puncturing one or more tail output bits output from each of the constituent encoders.
- The method of claim 1, wherein when R is 1/3 and outputting the tail output bits comprises:outputting tail output bits from a first output branch, X(t), and a second output branch, Y0(t), of the first constituent encoder; andoutputting tail output bits from a third output branch, X'(t), and a fourth output branch, Y0'(t), of the second constituent encoder.
- The method of claim 7, wherein outputting the tail output bits comprises:outputting a first tail output bit from the first output branch, X(t); thenoutputting a second tail output bit from the first output branch, X(t); thenoutputting a third tail output bit from the second output branch, Y0(t); thenoutputting a fourth tail output bit from the third output branch, X'(t); thenoutputting a fifth tail output bit from the third output branch, X'(t); and then outputting a sixth tail output bit from the fourth output branch, Y0'(t).
- The method of claim 7, wherein:tail input bits are input consecutively at each of the two or more constituent encoders such that tail input bits are input to the first constituent encoder different clock cycles than tail input bits input to the second constituent encoder.
- The method of claim 7, further comprising:puncturing one or more tail output bits from each of the constituent encoders.
- The method of claim 1, wherein when R is 1/4 and outputting the tail output bits comprises:outputting tail output bits from a first output branch, X(t), a second output branch, Y0(t), and a third output branch, Y1(t), of the first constituent encoder;outputting tail output bits from a fourth X'(t) output branch, a fifth Y0'(t) output branch, and a sixth Y1'(t) output branch of the second constituent encoder during trellis termination.
- The method of claim 11, wherein outputting the tail output bits comprise:outputting a first tail output bit From the first output branch, X(t); thenoutputting a second tail output bit from the first output branch, X(t); thenoutputting a third tail output bit from the second output branch, Y0(t); thenoutputting a fourth tail output bit from the third output branch, Y1(t); thenoutputting a fifth tail output bit from the fourth output branch, X'(t); thenoutputting a sixth tail output bit from the fourth output branch, X'(t); thenoutputting a seventh tail output bit from the fifth output branch, Y0'(t); and thenoutputting a eighth tail output bit from the sixth output branch, Y1'(t).
- The method of claim 11, wherein:tail input bits are input consecutively at each of the two or more constituent encoders such that tail input bits are input to the first constituent encoder different clock cycles than tail input bits input to the second constituent encoder.
- The method of claim 11, further comprising:puncturing one or more tail output bits from each of the constituent encoders.
- A system for terminating two constituent encoders of a turbo encoder, the system comprising:input means for generating tail input bits at each of the two constituent encoders, the tail input bits from each of the two constituent encoders being derived separately in each constituent encoder after an encoding of information bits by the each constituent encoder; and interleaving means for interleaving the information bits input into the second constituent encoder; andoutput means for outputting tail output bits from output branches of the two constituent encoders during trellis termination,wherein a first set of tail output bits is generated in a first one of the constituent encoders while the second one of the constituent encoders is disabled, andwherein a second set of tail output bits is generated in the second constituent encoder while the first constituent encoder is disabled,wherein:when the turbo encoder is employed as a coding rate R turbo encoder, the output means:outputs tail output bits from the first constituent encoder during trellis termination; andoutputs tail output bits from the second constituent encoder, during trellis termination.
- The system of claim 15, wherein the output means:outputs at least one tail output bit from at least one of the plurality of output branches of the first of the two or more constituent encoders more than once; andoutputs at least one tail output bit from at least one of the plurality of output branches of the second of the two or more constituent encoders more than once.
- The system of claim 15, wherein the turbo encoder has a coding rate of1/2 and the output means:outputs tail output bits from a first output branch, X(t), and a second output branch, Y0(t), of the first constituent encoder; andoutputs tail output bits from a third output branch, X'(t), and from a fourth output branch, Y0'(t), of the second constituent encoder.
- The system of claim 17, wherein the output means is adapted to:output a first tail output bit from the first output branch, X(t); thenoutput a second tail output bit from the second output branch, Y0(t); thenoutput a third tail output bit from the third output branch, X'(t); and thenoutput a fourth tail output bit from the fourth output branch, Y0'(t).
- The system of claim 17, wherein:the input means is adapted to input the tail input bits consecutively at each of the two constituent encoders such that tail input bits are input to the first constituent encoder in different clock cycles than tail input bits input to the second constituent encoder.
- The system of claim 17, further comprising a puncturer for puncturing one or more tail output bits output from each of the constituent encoders.
- The system of claim 15, wherein the turbo encoder has a coding rate of1/3 and the output means:outputs tail output bits from a first output branch, X(t), and a second Y0(t) output branch of the first constituent encoder;outputs tail output bits from a third output branch, X'(t), and a fourth output branch, Y0'(t), of the second constituent encoder.
- The system of claim 21, wherein the output means is adapted to:output a first tail output bit from the first output branch, X(t); thenoutput a second tail output bit from the first output branch, X(t); thenoutput a third tail output bit from the second output branch, Y0(t); thenoutput a fourth tail output bit from the third output branch, X'(t); thenoutput a fifth tail output bit from the third output branch, X'(t); and thenoutput a sixth tail output bit from the fourth output branch, Y0'(t).
- The system of claim 21, wherein the input means is adapted to input tail input bits consecutively at each of the constituent encoders such that tail input bits are input to the first constituent encoder in different clock cycles than tail input bits input to the second constituent encoder.
- The system of claim 21, further comprising a puncturer for puncturing one or more tail output bits output from each constituent encoder.
- The system of claim 15, wherein the turbo encoder has a coding rate of1/4 and the output means:outputs tail output bits from a first output branch, X(t), a second output branch, Y0(t), and a third output branch, Y1(t), of the first constituent encoder;outputs tail output bits from a fourth output branch, X'(t), a fifth output branch, Y0'(t), and a sixth output branch, Y1'(t), of the second constituent encoder.
- The system of claim 25, wherein the output means, is adapted to:output a first tail output bit from the first output branch, X(t); thenoutput a second tail output bit from the first output branch, X(t); thenoutput a third tail output bit from the second output branch, Y0(t); thenoutput a fourth tail output bit from the third output branch, Y1 (t); thenoutput a fifth tail output bit from the fourth output branch, X'(t); thenoutput a sixth tail output bit from the fourth output branch, X'(t); thenoutput a seventh tail output bit from the fifth output branch, Y0'(t) and thenoutput an eighth tail output bit from the sixth output branch, Y1'(t).
- The system of claim 25, wherein the input means is adapted to input tail input bits consecutively at each of the constituent encoders such that tail input bits are input to the first constituent encoder in different clock cycles than tail input bits input to the second constituent encoder.
- The system of claim 25, further comprising a puncturer for puncturing one or more tail output bits output from each of the constituent encoders.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US9811198P | 1998-08-27 | 1998-08-27 | |
| US98111 | 1998-08-27 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK1068033A1 HK1068033A1 (en) | 2005-04-22 |
| HK1068033B true HK1068033B (en) | 2012-01-20 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP1475894B1 (en) | Method for a general turbo code trellis termination | |
| JP3359911B2 (en) | Apparatus and method for puncturing turbo encoder in mobile communication system | |
| JP2002532938A (en) | Encoding and decoding apparatus having a serial chain structure in a communication system | |
| RU98100768A (en) | PARALLEL CASCADE CONVOLUTION CODE WITH FINITE SEQUENCE OF BITS AND DECODER FOR SUCH CODE | |
| EP1195911B1 (en) | Apparatus and method for generating and decoding (n,3) codes and (n,4) codes using simplex codes | |
| HK1068033B (en) | Method for a general turbo code trellis termination | |
| Perry et al. | SECO: A self-regulating error correcting coder-decoder | |
| HK1130961B (en) | Method for a general turbo code trellis termination | |
| KR100547832B1 (en) | Channel Encoding and Decoding Device for Communication Systems | |
| KR100332805B1 (en) | Serially concatenated convolutional encoding apparatus and encoding/decoding method |