Title of Invention

METHOD AND APPARATUS FOR ENCODING AND DECODING DATA

Abstract A method and apparatus for turbo coding and decoding is provided herein. During operation, a concatenated transport block (CTB) of length X is received and a forward error correction (FEC) block size KI is determined from a group of available non-contiguous FEC block sizes between Kmin and Kmax , and wherein Kmin <=KI< Kmax and wherein KI is additionally based on X. The concatenated transport block of length X is segmented into C segments each of size substantially equal KI. An FEC codeword for each of the C segments is determined using FEC block size KI; and the C FEC codewords are transmitted over the channel.
Full Text METHOD AND APPARATUS FOR ENCODING AND DECODING DATA
Field of the Invention
The present invention relates generally to encoding and decoding data and in
particular, to a method and apparatus for turbo coding and decoding data.
Background of the Invention
Digital data transmissions over wired and wireless links sometimes may be
corrupted, for instance, by noise in the link or channel, by interference from other
transmissions, or by other environmental factors. To combat the errors introduced by
the channel, many communication systems employ error-correction techniques to aid
in communication.
One technique utilized for error correction is turbo coding of an information
block to be transmitted. Utilizing such a technique, an encoder within the transmitter
of a communication system will encode an input block u of length K bits into a
codeword block x of N bits. The codeword block x is then transmitted over the
channel, possibly after further processing such as channel interleaving as defined in
the IEEE 802.16e specifications. At the receiver, the turbo decoder takes the received
signal vector y of length N as input, and generates an estimate ŭ of vector u.
Typically the turbo encoder is composed of two constituent convolutional
encoders. The first constituent encoder takes the input block u as input in its original
order, and the second constituent encoder takes the input block u in its interleaved
order after passing u through a turbo interleaver π. The turbo encoder output x is
composed of the systematic bits (equal to the input block u), the parity bits from the
first constituent encoder, and the parity bits from the second constituent encoder.
Correspondingly the turbo decoder within the receiver of the communication
system is composed of two constituent convolutional decoders, one for each
constituent code. The constituent decoders are separated by the interleaver Π and the
corresponding deinterleaver π-1. Messages in the format of log-likelihood ratios
(LLRs) arc passed between the constituent decoders iteratively. The decision u is
made after several iterations.
The turbo interleaver n is the key component in the turbo code design. It is
responsible for scrambling the input block u in a pseudo-random fashion, thus

providing the codewords x with good weight distribution, hence good error-correcting
capabilities, in addition to decoding performance, the turbo interleaver π has
significant impact on the implementation of the turbo decoder within the receiver.
Usually, turbo codes performance improves with increasing interleaver length.
However, there is a diminishing return in increasing the interleaver size. In practice,
the maximum Forward Error Correction (FEC) block size (i.e., interleaver size) of a
turbo code is limited to a certain value due to complexity and delay reasons. Hence, if
the size of the input block (concatenated transport block or CTB) is larger than the
maximum FEC block size supported by the turbo code, the CTB is segmented (e.g.,
using code block segmentation rule) into several small segments, each of which is
processed separately by the turbo encoder at the transmitter and correspondingly by
the turbo decoder at the receiver.
In some systems, the turbo code may be designed to support only a small
number of FEC block sizes for various reasons (e.g., high speed decoding, reduced
storage, etc). Therefore, a need exists for a method and apparatus for turbo coding and
decoding that appropriately matches the CTB to available FEC block sizes.
Brief Description of the Drawings
FIG. 1 is a block diagram of a transmitter.
FIG. 2 is a block diagram of a receiver.
FIG. 3 is a block diagram of the turbo encoder of FIG. 1.
FIG. 4 is a block diagram of transport block former on the transmitter side.
FTG. 5 is a block diagram of a transport block assembler on the receiver side.
FIG. 6 is a flow chart showing operation of the transmitter of FIG. 1.
FIG. 7 is a flow chart showing operation of the receiver of FIG. 2.
Detailed Description of the Drawings
In order to address the above-mentioned need, a method and apparatus for
turbo coding and decoding is provided herein. During operation, a concatenated
transport block (CTB) of length X is received and a forward error correction (FEC)
block size KI is determined from a group of available non-contiguous FEC block sizes
between Kmin and Kmax, and wherein Kmin based on X. The concatenated transport block of length X is segmented into C

segments each of size substantially equal to KI. An FEC codeword for each of the C
segments is determined using FEC block size KI and the C FEC codewords are
transmitted over the channel.
In an alternate embodiment, a concatenated transport block (CTB) of length X
is received and two FEC block sizes KI-1 and KI are determined from a group of non-
contiguous FEC block sizes, wherein the available non-contiguous FEC block sizes
are between Kmin and Kmax, and wherein Kmin wherein K1-1 and KI are additionally based on X. The concatenated transport block of
length X is segmented into C segments each of size substantially equal to
An FEC codeword for each of the C segments is determined using FEC block sizes AT/
or and the C FFC codewords are transmitted over the channel.
The benefit of the above methods is that they reduce the padding of filler bits
required to encode the CTB, while using the fewest number of segments allowed by
the available non-contiguous FEC block sizes. In particular, the second method uses
two different (but adjacent) FEC block sizes to minimize the number of filler bits
while using the fewest number of segments as allowed by the available non-
contiguous FEC block sizes. Moreover, the FEC block sizes for the segment sizes and
the number of segments for the two embodiments may be determined using simple
logic circuitry.
Prior to describing encoding and decoding data, the following definitions are
provided to set the necessary background:
■ For ease of notation, a concatenated transport block refers to the result of
concatenating one or more transport blocks, after adding overhead such as
CRC bits to each transport block.
■ X denotes the concatenated transport block size (e.g., length of the
concatenated transport block in bits).
■ Y denotes the total number of filler bits added to a concatenated transport
block.
■ C denotes the number of segments a concatenated transport block gets
segmented into.
■ CBSSt denotes the size of the ith segment of a concatenated transport block (i =
1,.... C), where C is the segment size. CBSS stands for code block segment
size.
■ denote FEC block sizes (e.g., sizes for which turbo code internal
interleaver arc defined) that may be used to FEC encode the segments of a
concatenated transport block.

■ denotes a set of available non-contiguous FEC block sizes (sizes for
which a turbo code internal interleaver is defined).
■ denotes the number of filler bits added to a segment.
■ R denotes the mother code rate of the turbo coder (e.g., R = 1/3 for the 3GPP
Turbo Code).
■ R-1 is the inverse of mother code rate of turbo coder (e.g., R-1 = 3 for the 3GPP
Turbo Code).
■ Ntb is the number of tail bits in the FEC codeword at the output of FEC
encoder. In particular,
o Ntb = 12 for 3GPP turbo code with tail bits.
o Ntb, = 0 for a 3GPP turbo code with tail-biting.
■ π denotes the turbo code internal interleaver.
■ The flooring operation |_x_| denotes the largest integer smaller than or equal to x
and the ceiling operation |x| denotes the smallest integer larger than or equal
to x.
Turning now to the drawings, wherein like numerals designate like
components, FIG. 1 is a block diagram of transmitter 100. As shown, transmitter 100
comprises code block segmentation circuitry 102, filler circuitry 103, turbo encoder
104, filler discard circuitry 105, transmitter 108, logic circuitry 106, and table/storage
107. Transmitter 100 additionally comprises of receiving circuitry (not shown in FIG.
1) that receives a concatenated transport block of length X. Logic circuitry 106
determines an available FEC block size K1 from a group of non-contiguous FEC block
sizes 107, wherein the available non-contiguous FEC block sizes are between Kmin and
Kmax, and wherein . and wherein K1 is additionally based on X. Code
block segmentation circuitry 102 segments the concatenated transport block of length
X into C segments of sizes substantially equal to K1, and encoding circuitry 104
determines an FEC codeword for each of the C segments using FEC block size AT/.
Finally transmission circuitry 108 transmits the C FEC codewords over a channel.
In another embodiment, the transmitter 100 comprises receiving circuitry (not
shown in the FIG. 1) that receives a concatenated transport block of length X, logic
circuitry 106 that determines two available FEC block sizes K1-1 and K1 from a group
of non-contiguous FEC block sizes 107, wherein the available non-contiguous FEC
block sizes are between , and wherein
and wherein and are additionally based on X. Transmitter 100 comprises
code block segmentation circuitry 102 that segments the concatenated transport block
of length X into C segments of sizes substantially equal to and encoding

circuitry 104 that determines an FEC codeword for each of the C segments using FEC
block size K1 or K1-1 Finally transmission circuitry 108 is provided that transmits the
C FEC codewords over a channel.
Encoding circuitry 104 is preceded by filler circuitry 103 that inserts filler bits
into the segments to form an FEC input block. FEC encoder 104 encodes the FEC
input block, and filler discard circuitry 105 discards bits related to the filler bits.
During operation of transmitter 100, data in the form of a concatenated
transport block is received by circuitry 102. Circuitry 102 prepares the concatenated
transport block before Forward Error Correction (FEC) encoding.
In general, the range of the CTB sizes (i.e., X) may be different from the range
of the FEC block sizes supported by the underlying FEC scheme in the physical layer
for a communication system. Therefore, it is necessary to define a rule that divides a
CTB into segments that can be efficiently handled by the FEC. In particular, CTB
sizes (i.e., X) are often much larger than the maximum FEC block size that FEC
encoder 104 can handle. Therefore, the CTB needs to be segmented by circuitry 102
into a number of smaller-sized segments and each segment needs to be encoded by
FEC encoder 104 into a separate FEC codeword.
Circuitry 102 uses a code block segmentation rule that is designed to achieve
good performance (i.e., the aggregate performance of the segments for a given CTB)
with the underlying FEC. It involves the following aspects for any given CTB size:
■ Choosing the number of segments C;
■ Choosing the sizes of each segment;
■ Inserting the filler bits before FEC encoding and the removing of filler bits
after FEC encoding, if the segment size cannot be handled directly by the
FEC.
The proposed segmentation rules arc particularly useful for Evolved-UMTS
Terrestrial Radio Access (EUTRA) system where a turbo coder may be defined for
only a limited set of FEC block sizes (interleaver sizes). Unlike the Release 6 3GPP
Turbo coder that defines 5075 interleavers of contiguous sizes, one for each
interleaver size K1 between 40 bits and 5114 bits, an EUTRA turbo coder may define
a limited number of FEC block sizes K.table (e.g., 40-50 interleavers with non-
contiguous sizes ranging from 128 bits to 6144 bits) to cover a large number of
segment sizes (e.g., 6144-128+1 = 6017 sizes). When the segment size is equal to an
available FEC block size, then the segment can be taken as an FEC input block
directly (thus no need of filler bit insertion). However, when the segment size is not
equal to any available FEC block sizes, filler bit padding may be applied, and the next

larger available FEC block size (i.e., interleaver size) chosen from Ktable 107 may be
used.
Number of segments :
The segmentation rules take the following properties of turbo coding into
account.
(a) Turbo code performance improves as the FEC block size increases.
(b) Turbo code performance improvement via increasing FEC block sizes has
diminishing returns beyond a few thousand bits.
(c) A CTB is received correctly only if all the segments arc received correctly.
Properties' (a) and (c) indicate that the overall performance is likely to be
dominated by the segment having the worst performance. Thus, it is preferable to
have segments that arc approximately of equal sizes so that they are FEC encoded
with approximately equal FEC block sizes (and hence accorded approximately equal
error protection from FEC perspective).
Property (b) suggests that it is not necessary to include interleavers for very
large sizes in the table (Ktable). However, the FEC block sizes defined in Ktable may
depend on other factors. For example, i) for reduced storage/complexity, a small
number of interleavers in Ktable may be desirable, and ii) the maximum interleaver size
defined in Ktable may be chosen to limit the number of segments per CTB, thus
limiting the segmentation penalty of a CTB. The segmentation penalty is the
performance loss due to dividing a CTB into several segments instead of encoding the
entire CTB into one FEC codeword.
Property (c) suggests that the minimum number of segments should be used to
reduce segmentation penalty.
Considering all the above, the number of segments is where
Kmax is the maximum FEC block size defined in Ktable. Assuming that CBSSi denote
the segment size of the th segment (z = 1,...Q of the concatenated transport block, the
sum of all segments is equal to the concatenated transport block size X, i.e., the
segment sizes are constrained by the following equation.

The next section describes the determination of the FEC block size used for
FEC encoding, one for each of the C segment size.

FEC block size determination
Given that a CTB of length X is the input to the code block segmentation
function, the rule for determining the FEC block size (interleaver size) for turbo coder
as described in Release 6 of the 3GPP standard is as follows

where K max=5114 is the maximum interleaver size for Rel 6 Turbo code, C is the
number of segments (or code blocks), KI is the interleaver size, and Y is the total
number of filler bits inserted for the CTB of size X when C FEC input blocks of size
KI is used. In essence, a CTB of size X is segmented into C segments of
approximately equal size, and each segment is encoded using a turbo code with a KI-
bit interleaver. IT Y> 0, Y known bits are padded to the beginning of the first segment
before encoding. Since the FEC block sizes (i.e., interleavers) are defined for all sizes
between Kmin = 40 and Kmax = 5114 in Release 6 3GPP turbo code, the number of
filler bits is bounded by C, the number of segments used for code block segmentation.
However, in other systems such as the one being considered for EUTRA, the
FEC block sizes (interleaver sizes) may be defined only for non-contiguous sizes (a
coarser set of interleaver sizes) Ktable. In such cases, segment sizes that are not equal
to any available FEC block sizes (i.e., not defined in Ktable) need to be handled using
filler bits before FEC encoding (and puncturing after encoding to arrive at a desired
code rate).
Assuming that a turbo coder supports only a limited number of FEC block
sizes distributed between K,„i„ and Kmax, both inclusive, two simple methods of code
block segmentation of a concatenated transport block of length X using Ktable are
described next. These methods use as few segments as possible while they also reduce
the number of filler bits that are required for encoding,
Allow one FEC block size only
One method is to modify (1) and let all segments be encoded with a single
interleaver size KI, where



as follows (for easy understanding, all involved computations are repeated below). In
this case, logic circuitry 106 performs the following operations to find the number of
segments,

and C1-1 and CI are the number of segments that arc encoded using FEC block sizes KI.
i and KI, respectively, where KI is the smallest size from available FEC block sizes
that is greater than or equal to |X/C|, and D1 denotes the difference between the
adjacent interleaver sizes KI-1 and KI.
Note that in (4) Y does not indicate the number of filler bits required if
allowing two adjacent sizes; but indicates the number of filler bits required had only
one size of KI is used for all C segments.
Thus, the code block segmentation forms C segments, of which CI-I segments
arc FEC-encoded with a FEC block size KI-I. Note that when Y and this method degenerates to using one FEC block size of KI.(i.e., KI-I size is
allowed but not actually used.) On the other hand, when Y>= DI, this method requires
fewer filler bits than padding all C segments to the larger FEC block size KI. This
method is optimal in that the number of filler bits Y" added per CTB is guaranteed to
be least while using the fewest segments as possible. Y" is determined as follows

It can be proven that Y" is bounded by DI, regardless of C,

[n this case, the segment sizes obtained after code block segmentation have the
following constraints, assuming (without loss of generality that the first C1 segments
are encoded with KI and rest with KI-).


Returning to FIG. 1, as discussed above, a proper FEC block size needs to be
chosen from table 107 of non-contiguous FEC block sizes. Logic circuitry 106
performs the task of choosing the appropriate FEC block size/sizes as discussed
above. An example of table 107 is given in Table 1. For example, in first case, logic
circuitry 106 chooses FEC block size from the available non-contiguous FEC block
sizes between and wherein and wherein KI is
additionally based on X. Particularly, if a single FEC block size KI is to be used, logic
circuitry 106 chooses the smallest K, (from Ktable) that is not smaller than , i.e.,
, where and If, however, two FEC block sizes
are to be used, and are determined with equation (4) giving the number of
segments that are encoded using FEC block sizes

The underlying FEC coder 104 supports only a limited set of FEC block sizes
(or input sizes). Without loss of generality, it is assumed that FEC coder 104 is a turbo
coder, and the set of FEC block sizes supported by the turbo coder is the set of
interleaver sizes for which the turbo code internal interleaver is defined. However,
one of ordinary skill in the art will recognize that other FEC schemes may be used in
104, including low-density parity check (LDPC) codes, convolutional codes, block
turbo codes, Reed-Solomon codes, etc.
Once the number of segments C and the FEC block size for each segment is
determined, this information is passed to code block segmentation circuitry 102 where
the CTB (X bits) is segmented into C segments which are encoded with FEC block
size K[, if only one FEC block size is allowed. Alternatively, if two adjacent FEC
block sizes are allowed, the code block segmentation circuitry 102 may output O

segments which arc to be encoded with FEC block sizesegments which
arc to be encoded FEC block size
Filler Bit Insertion
The number of filler bits (padded for each segment) may be determined based
on the segment size and the FEC block size being used for FEC encoding of the
segment. There are at least two ways to distribute the overall filler bits into the C
segments.
• Concentrated-filler. Put the filler bits into as few segments as possible
without making the segment sizes too small. In one example, all filler bits may appear
in the beginning of the first segment. The advantage is that only one segment
(containing all the filler bits) needs to be handled separately. Moreover, the filler bits
can be padded to the segment that is encoded with the larger FEC block size KI rather
than smaller FEC block size when two FEC block sizes are used for a CTB. This
method is particularly attractive when allowing two adjacent FEC block sizes for
encoding.
• Disrributcd-filler. Distribute the filler bits evenly (as much as possible)
into a plural of segments. The filler bits can be distributed to as many as all C
segments.
For efficient implementation of the transmitter and the receiver, concentrated-
filler is preferred. A preferred embodiment is to append Y" (if allowing two adjacent
FEC block sizes; Y if allowing one FEC block size only) consecutive filler bits to the
front of the one of the segments (e.g., the first or the last) using FEC block size KI
before sending it to the encoder. In terms of performance, it is equivalent to
appending the Y" consecutive filler bits to the end of a segment having FEC block size
KI.
Returning to FIG. 1, for each segment (produced by circuitry 102), an FEC
codeword is determined using the steps of inserting filler bits into the segment to form
an FEC input block; FEC encoding the FEC input block; and discarding bits related to
the filler bits.
Each segment produced by circuitry 102 is passed to filler circuitry 103 where
filler bit insertion takes place. If no filler bits are required, then filler circuitry is
transparent, i.e., no filler bits are added (Kfilter=0). The segments (along with filler
bits) are then passed to turbo encoder 104 where turbo encoding of the C segments
leads to C FEC codewords. The filler bits are then discarded by circuitry 105 and the

resulting C codewords are appropriately transmitted by transmission circuitry 108. If
no filler bits are added by circuitry 103, then filler discard circuitry 105 is transparent,
i.e., no filler bits are removed Note that it is possible that circuitry 105 may
not discard any bits corresponding to the filler bits.
FIG. 2 is a block diagram of a receiver. During operation the received signal
vector goes through the code block de-segmentation circuitry 202 which organizes
portions of received signal vector according to the segment they are associated with.
The segment size, number of segments, FEC block size used to turbo-decode each
segment, number of filler bits may be determined using logic circuitry 213 and
available FEC block size table 215 in a fashion similar to that at the encoder. The
filler handling circuitry 204 uses the knowledge of the location of filler bits to benefit
turbo decoder 206, for e.g., by setting the LLRs corresponding to filler bits to a high
magnitude. After turbo decoding, circuitry 208 discards the filler bits to obtain
estimate of a segment. The code block assembler 211 assembles the estimated
transport by suitably collecting and arranging the estimates of the segments obtained
from circuitry 208.
Removal of parity bits of constituent coder
This section provides a specific way of determining the FEC codeword. The
method takes advantage of the knowledge of filler bits insertion at the transmitter is
described. In particular, the method determines which bits (both systematic and parity
bits) can be discarded from the turbo encoder output with no or negligible significant
performance degradation. In general, the filler bits arc known, and hence the
systematic bits of these bits (equal to the known bits) can be discarded prior to
transmission. However, it is not clear if any parity bits can be discarded.
FIG. 3 is a block diagram of turbo encoder 104 of FIG. 1. During operation,
input block of length KI bits enters both interleaver 301 and constituent encoder 302.
Interleaver 301 interleaves the input block and passes the input block in interleaved
order to constituent encoder 303. Constituent encoder 303 then encodes the
interleaved input block. In a similar manner, constituent encoder 302 encodes the
original input block. The codeword block x is composed of systematic block (equal to
the FEC input block), output of constituent encoder 302, and output of constituent
encoder 303. The codeword block x is then sent to circuitry 105.
In a conventional turbo encoder such as e.g., tailed turbo codes, the initial state
of the constituent encoders (shift register contents) is assumed to be all-zero. In such
case, when filler bits (usually 0's) are inserted at the beginning of the turbo code

input block, the systematic bits and the parity bits of the constituent encoder 302
corresponding to the Kfiller bit positions are all zeros. Therefore, these bits may be
discarded at the transmitter and the receiver can utilize this knowledge while
performing turbo decoding. However, in the constituent encoder 303, the Kfiller bits are
scrambled due to the turbo code interleaver and hence the parity bits of constituent
encoder 303 corresponding to the filler bits are not known and thus cannot be
discarded simply.
When the turbo coder has tail-biting constituent encoders, the initial state of
the constituent encoders may not be always zero. For tail-biting codes, the initial state
and the final state for a constituent encoder are equal and they depend on the input
block. Therefore, when Kfiller consecutive filler bits (i.e., zeros) arc inserted at the
beginning of the turbo code input block, the parity bits of constituent encoder 302
corresponding to the Kfiller bit positions are not always zeros. However, it can be
proven that most of these Kfiller parity bits of the constituent encoder 302 carry no
information.
In general, groups of consecutive filler bits are inserted into a segment to form
an FEC input block wherein the group length is a multiple of 2m-l (=7 for the
constituent convolutional codes within the 3GPP turbo coder). Then, the FEC input
block is FEC encoded and parity bits related to the filler bits are discarded. The FEC
encoder can be a tail-biting convolutional code used alone, or a tail-biting
convolutional code used as a constituent code of a turbo coder.
In particular, when used for turbo codes with tail-biting constituent codes,
groups of systematic bits corresponding to the filler bits may be discarded; and the
parity bits corresponding to the groups of filler bits at the output of a constituent
encoder may be discarded, wherein the constituent encoder takes the FEC input block
without interleaving for tail-biting turbo coders. This can be shown as follows.
Let the state of the shift register of constituent encoder 302 at step i be S(i), let
m be the number of elements in the shift register, and let g be any integer greater than
0. When (2m-l)xg zeros are input to the constituent encoder from step i+1 to step
i+(2m-l)xg, the following is a property of recursive convolutional encoder (such as
the one used in Rel. 6 3GPP turbo code),

Note that S(i) may not be a constant. In addition, the states S(J) in between may not be
a constant or equal to state
Therefore, the state of the constituent encoder remains unchanged between
step Therefore, the transmitter can take advantage of (7) by
discarding the constituent encoder output during those steps, as these filler bits do not

change the shift register state and thus providing no information for the decoder. The
decoder within the receiver can also take advantage of (7) similarly based on the
knowledge of filler bit positions and values. Next, the above method is described with
an example where Kfiller filler bits (zeros) are inserted in consecutive positions in the
input of a tail-biting turbo code.
Since Kfiller consecutive filler bits (zeros) are inserted in the turbo code input
block, and therefore parity bits of constituent
encoder 302 may be discarded, where p is the number parity bits at the output of the
constituent encoder 302 that are generated for each bit in the FEC input block.
Therefore, only the parity bits corresponding to the groups of filler bits at the output
of constituent encoder 302 are discarded, wherein constituent encoder 302 takes the
FEC input block without interleaving for tail-biting turbo coders.
For a tail-biting 3GPP turbo coder, p=\ in constituent encoder 1, m=3. Thus
parity bits can be discarded from constituent encoder 302 for Kfiller
consecutive filler bits. Since m=3, at most only 6 parity bits corresponding to the Kfiller
filler bits of constituent encoder 302 may need to be kept at the output of constituent
encoder 302.
In constituent encoder 303, the Kfiller filler bits may get dispersed due to the
turbo code interleaver. Therefore, it may not be possible to discard the parity bits from
the constituent encoder 303 without affecting performance.
The following section describes some example scenarios in which the code
block segmentation rule may be used, e.g., hybrid-Automatic Repeat reQuest
(HARQ), Multiple Tnput Multi Output (MIMO), etc.
Transport Block (TB) Former
The code block segmentation rule described above is applied to a concatenated
transport block (CTB) on a hybrid ARQ (HARQ) channel. Before code block
segmentation, the information bits than needs to be sent to a single user from the base
station within a transmission time interval (TTI) may need to be divided into at least
one transport block, thus going through at least one HARQ channel. For example FIG.
4 shows an example wherein the information bits are transmitted using two HARQ
channels (corresponding to HARQ1, and HARQ2), and two transport blocks TBI and
TB2. During operation, information bits of length A are received by TB formation
circuitry 402 to be transmitted on one or more spatial streams. Circuitry 402
designates X' bits as a transport block TBI, where processor 404
attaches CRC bits to the X' bits to form the concatenated transport block of length X;

the concatenated transport block of length X is mapped to a first HARQ channel. The
concatenated transport block is sent to the code block segmentation circuitry 102.
Circuitry 402 designates W'=A- A' bits from the information bits as a second
transport block TB2; HARQ2 processor 406 attaches CRC bits to Y bits form a second
concatenated transport block; the concatenated transport block is mapped to a second
HARQ channel. The concatenated transport block is sent to the code block
segmentation circuitry 102.
Note that circuitry 404 and 406 may perform additional functions such as
other functionalities related to HARQ, adding control information, etc.
Though the concepts in FIG 4 arc illustrated using two HARQ channels, they
can be easily extended to a plurality of HARQ channels. If more than one HARQ
channel is supported to a user within a Transmission Time Interval (TTI), the code
block segmentation rule may be applied to each TB.
Multiple HARQ channels may occur due to having too many FEC codewords
(or segments) per TIT per user, such as from large bandwidth (e.g., 20MHz), higher
order modulation (e.g., 64QAM), multistream MIMO, etc. Multiple HARQ channels
may also be used for TBs that have different QoS, such as VoIP and best-effort data.
A MIMO codeword comprises the bits that are sent to a single user within a
TTI on one MIMO stream. Thus a MIMO codeword may comprise one or more FEC
codewords. Sometimes a MIMO codeword is used to refer to the bits on a MIMO
stream.
Rules may be defined for the creation of a TB. In one embodiment, a TB shall
comprise no more than x (e.g., x=8) FEC codewords (value of x determined by the
cNodeB scheduler in EUTRA). In another embodiment, if more than x FEC
codewords are needed for a TB, then two TBs are created as follows. The packet is
divided approximately evenly between two TBs, each TB having nearly the same
number of FEC codewords of approximately the same size. In yet another
embodiment, for FEC codewords that are to be sent to two MIMO streams, each
belongs to a separate TB. In yet another embodiment, for FEC codewords that are to
be sent to three MIMO streams while using 2 simultaneous HARQ channels, the first
(on average, best quality stream) belongs to one TB and the second and third stream
belong to a second TB. In yet another embodiment, four MIMO codewords to be sent
using two HARQ channels, several combinations are possible. For example, (a)
TB1=1,2 TB2=3,4 (b) TB1=1,3 TB2=2,4 (c) TB1=1,2 TB2=2,3 (d) TB1=1,
TB2=2,3,4. Here TBi refers to TB of i-th HARQ channel; numbers 1 through 4
indicates the MIMO codeword (or stream) number.

FIG. 5 is a block diagram of receiver processing when information bits arc
received over at least one HARQ channel. The received bits from the code block
assembler 211 are input to the appropriate channel processors 504 and 506. The
output of the channel processors are the estimated transports blocks TBI and TB2
which are input to the TB assembler circuitry 502 which combines the TBs and
outputs estimated information bits.
FIG. 6 is a flow chart showing operation of the transmitter of FIG. 1. The logic
flow begins at step 601 where segmentation circuitry receives a concatenated
transport block of length X. At step 603 logic circuitry accesses table 107 and chooses
an appropriate FEC block size. As discussed above, in a first embodiment of the
present invention the FEC block size KI is determined from a group of non-contiguous
FEC block sizes located in table 107, where the available non-contiguous FEC block
sizes in table 107 are between Kmin and Kmax, and wherein Kmin discussed above, KI is based on X. X is determined by logic circuitry 106 from the
concatenated transport block. Once X is determined, and
C = |X/Kmax| are determined. In a second embodiment of the present invention FEC
block sizes KI and KI-I are determined, where KI=|X/C|+δ
Continuing, at step 605 the number of segments C and the FEC lock sizes are
passed to segmentation circuitry 102 and at step 607 segmentation circuitry segments
the concatenated transport block of length X into C segments of size substantially
equal to KI (or alternatively KI and KI-I. Filler bits are added (if necessary) at step 609
via circuitry 103 and at step 611 each of the C segments are encoded (i.e., an FEC
codeword is determined for each of the C segments). Finally, at step 613 the FEC
codewords are transmitted via transmission circuitry 108.
As discussed above, the step of determining an FEC codeword comprises the
steps of inserting filler bits into the segment to form an FEC input block, FEC
encoding the FEC input block, and discarding bits related to the filler bits. This step
may entail inserting groups of consecutive filler bits into a segment to form an FEC
input block where the group length is a multiple of 7, FEC encoding the FEC input
block, and discarding bits related to the filler bits. Discarding filler bits comprises the
steps of discarding groups of systematic bits corresponding to the filler bits and
discarding the parity bits corresponding to the groups of filler bits at the output of
constituent encoder 1, where constituent encoder takes the FEC input block without
interleaving for tail-biting turbo coders.
FIG. 7 is a flow chart showing operation of the receiver of FIG. 2. The logic
flow begins at step 701 where the segment size, number of segments, FEC block size
used to turbo-decode each segment, and the number of filler bits are determined using

logic circuitry 213 and table 215. As discussed above, in a first embodiment of the
present invention the FEC block size KI is determined from a group of non-contiguous
FEC block sizes located in table 215, where the available non-contiguous FEC block
sizes in table 215 arc between Kmin and Kmax, and wherein As
discussed above, KI is based on X. X is determined by logic circuitry 213 from the
received signal vector. Logic circuitry 213 then determines and
. In a second embodiment of the present invention FEC block sizes Ki
and KI-1 are determined, where
At step 703 a received signal vector goes through code block de-segmentation
circuitry 202 which organizes portions of received signal vector according to the C
segment they are associated with. At step 705 filler handling circuitry 204 uses the
knowledge of the location of filler bits to benefit turbo decoder 206, for e.g., by
setting the LLRs corresponding to filler bits to a high magnitude. Each of the C
segments is decoded at step 707. After turbo decoding, circuitry 208 discards the filler
bits to obtain estimate of a segment (step 709). Code block assembler 211 assembles
the estimated transport by suitably collecting and arranging the estimates of the
segments obtained from circuitry 208 (step 711).
While the invention has been particularly shown and described with reference to
a particular embodiment, it will be understood by those skilled in the art that various
changes in form and details may be made therein without departing from the spirit and
scope of the invention. It is intended that such changes come within the scope of the
following claims.

Claims
1. A method of operating a transmitter, the method comprising the steps of:
receiving a concatenated transport block of length X;
determining an available FEC block size KI from a group of non-contiguous
FEC block sizes, wherein the available non-contiguous FEC block sizes are between
Kmin and Kmax, and wherein Kmin X,
segmenting the concatenated transport block of length X into C segments of
sizes substantially equal to KI;
determining an FEC codeword for each of the C segments using FEC block
size KI; and
transmitting the C FEC codewords over the channel.
2. The method of claim 1 wherein
3. The method of claim 1 wherein the step of determining an FEC codeword further
comprises the steps of:
inserting filler bits into the segment to form an FEC input block;
FEC encoding the FEC input block; and
discarding bits related to the filler bits.
4. The method of claim 1 further comprising the steps of:
receiving information bits of length A to be transmitted on one or more spatial
streams;
designating X' bits as a transport block, where X' attaching CRC bits to the X' bits to form the concatenated transport block of
length X; and
wherein the concatenated transport block of length X is mapped to a first
HARQ channel.5. The method of claim 4 further comprising the steps of:
designating bits from the information bits as a second transport
block;
attaching CRC bits to form a second concatenated transport block; and
wherein the concatenated transport block is mapped to a second HARQ
channel.

6. The method of claim 1 wherein the step of determining an FEC codeword further
comprises the steps of
inserting groups of consecutive filler bits into a segment to form an FEC input
block wherein the group length is a multiple of 7;
FEC encoding the FEC input block; and
discarding bits related to the filler bits.
7. The method of claim 6 wherein the method of discarding bits further comprises the
steps of
discarding groups of systematic bits corresponding to the filler bits; and
discarding the parity bits corresponding to the groups of filler bits at the output
of constituent encoder 1, wherein constituent encoder takes the FEC input block
without interleaving for tail-biting turbo coders.
8. An apparatus comprising:
receiving circuitry receiving a concatenated transport block of length X;
logic circuitry determining an available FEC block size KI from a group of
non-contiguous FEC block sizes, wherein the available non-contiguous FEC block
sizes are between Kmin and Kmax, and wherein Kmin additionally based on X;
code block segmentation circuitry segmenting the concatenated transport
block of length X into C segments of sizes substantially equal to KI;
encoding circuitry determining an FEC codeword for each of the C segments
using FEC block size KI, and
transmission circuitry transmitting the C FEC codewords over a channel.
9. The apparatus of claim 8 wherein
10. The apparatus of claim 8 further comprising:
filler circuitry inserting filler bits into at least one segment to form an FEC
input block.

A method and apparatus for turbo coding and decoding is provided herein. During operation, a concatenated transport
block (CTB) of length X is received and a forward error correction (FEC) block size KI is determined from a group of available
non-contiguous FEC block sizes between Kmin and Kmax , and wherein Kmin The concatenated transport block of length X is segmented into C segments each of size substantially equal KI. An FEC codeword
for each of the C segments is determined using FEC block size KI; and the C FEC codewords are transmitted over the channel.

Documents:

1037-KOLNP-2009-(17-04-2014)-CORRESPONDENCE.pdf

1037-KOLNP-2009-(17-04-2014)-OTHERS.pdf

1037-KOLNP-2009-(23-04-2012)-ASSIGNMENT.pdf

1037-KOLNP-2009-(23-04-2012)-CORRESPONDENCE.pdf

1037-KOLNP-2009-(23-04-2012)-FORM-1.pdf

1037-KOLNP-2009-(23-04-2012)-FORM-2.pdf

1037-KOLNP-2009-(23-04-2012)-FORM-3.pdf

1037-KOLNP-2009-(23-04-2012)-FORM-5.pdf

1037-KOLNP-2009-(23-04-2012)-FORM-6.pdf

1037-KOLNP-2009-(23-04-2012)-PA-CERTIFIED COPIES.pdf

1037-kolnp-2009-abstract.pdf

1037-kolnp-2009-claims.pdf

1037-kolnp-2009-correspondence.pdf

1037-kolnp-2009-description (complete).pdf

1037-kolnp-2009-drawings.pdf

1037-kolnp-2009-form 1.pdf

1037-kolnp-2009-form 18.pdf

1037-kolnp-2009-form 3.pdf

1037-kolnp-2009-form 5.pdf

1037-kolnp-2009-gpa.pdf

1037-KOLNP-2009-GRANTED-SPECIFICATION-COMPLETE.pdf

1037-kolnp-2009-international publication.pdf

1037-kolnp-2009-international search report.pdf

1037-kolnp-2009-pct priority document notification.pdf

1037-kolnp-2009-pct request form.pdf

1037-kolnp-2009-specification.pdf

abstract-1037-kolnp-2009.jpg


Patent Number 262705
Indian Patent Application Number 1037/KOLNP/2009
PG Journal Number 37/2014
Publication Date 12-Sep-2014
Grant Date 08-Sep-2014
Date of Filing 18-Mar-2009
Name of Patentee MOTOROLA, INC.
Applicant Address 1303 EAST ALGONQUIN ROAD, SCHAUMBURG, ILLINOIS 60196
Inventors:
# Inventor's Name Inventor's Address
1 BLANKENSHIP, T. KEITH 21910 PINE LAKE CIRCLE, KILDEER, ILLINOIS 60047
2 BLANKENSHIP, YUFEI W. 21910 PINE LAKE CIRCLE, KILDEER, ILLINOIS 60047
3 CLASSON, BRIAN K. 756 BLOOMFIELD COURT, PALATINE, ILLINOIS 60067
4 NIMBALKER, AJIT 2609 BRIAR TRAIL ROAD, SCHAUMBURG, ILLINOIS 60173
PCT International Classification Number H03M 13/29
PCT International Application Number PCT/US2007/078676
PCT International Filing date 2007-09-17
PCT Conventions:
# PCT Application Number Date of Convention Priority Country
1 11/539,404 2006-10-06 U.S.A.
2 60/828,213 2006-10-04 U.S.A.