Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SEGMENTATION MECHANISM FOR A BLOCK ENCODER
Document Type and Number:
WIPO Patent Application WO/2000/064057
Kind Code:
A1
Abstract:
A method for encoding an input data block (IDB) with a block encoder (TE). The block encoder is capable of processing consecutive coding blocks (CB) whose size has an upper limit (L¿CB?) which is smaller than the size of the input data block (IDB). The method comprises: (1) determining the length of the input data block (IDB) before encoding any of its data with the block encoder (TE); (2) dividing the input data block (IDB) to a plurality of segments (S¿1? ... S¿N?) wherein all segments are of substantially equal size and no segment is larger than the upper limit (L¿CB?); and (3) processing each segment (S¿1? ... S¿N?) with the block encoder (TE). If the last segment (S¿N?) is shorter than the remaining segments (S¿1?, S¿2?...), fill bits (N¿FILL?) can be added to the last segment (S¿N?) such that its length equals that of the remaining segments (S¿1?, S¿2?...).

Inventors:
NIEMINEN ESKO (FI)
PIRTTIAHO LAURI (FI)
Application Number:
PCT/FI2000/000322
Publication Date:
October 26, 2000
Filing Date:
April 14, 2000
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
NOKIA NETWORKS OY (FI)
NIEMINEN ESKO (FI)
PIRTTIAHO LAURI (FI)
International Classes:
H03M13/05; H03M13/29; H03M13/41; H04L1/00; (IPC1-7): H03M13/05
Domestic Patent References:
WO1999009724A21999-02-25
Foreign References:
US5889791A1999-03-30
US5790569A1998-08-04
US4929946A1990-05-29
Other References:
See also references of EP 1095461A1
Attorney, Agent or Firm:
KOLSTER OY AB (Iso Roobertinkatu 23 P.O. Box 148 Helsinki, FI)
Download PDF:
Claims:
Claims
1. A method for encoding an input data block (IDB) with a block en coder (TE), said block encoder being capable of processing consecutive cod ing blocks (CB) whose size has an upper limit (Lea) which is smaller than the size of the input data block (IDB); c h a r a c t e r i z e d in that the method comprises the steps of: determining the length of the input data block (IDB) before encoding any of its data with said block encoder (TE); dividing the input data block (IDB) to a plurality of segments (S,... SN) wherein all segments are of substantially equal size and no segment is larger than said upper limit (Lee); and processing each segment (S,... SN) with said block encoder (TE).
2. A method according to claim 1, c h a r a c t e r i z e d in that if the last segment (SN) is shorter than the remaining segments (S,, S2...), fill bits (NFILL) are added to the last segment (SN) such that its length equals that of the remaining segments (S"S2...).
3. A method according to claim 1, c h a r a c t e r i z e d in that if the length of the input data block (IDB) is not an exact multiple of said upper limit (LCB), fill bits (NFILL) are added to the input data block (IDB) such that its length is an exact multiple of said upper limit (Lee).
4. A method according to any one of the preceding claims, c h a r a c t e r i z e d in that the number of segments is 2"where n is a positive inte ger.
5. A segmentation device for segmenting an input data block (IDB) for processing with a block encoder (TE), said block encoder being capable of processing consecutive coding blocks (CB) whose size has an upper limit (LCB) which is smaller than the size of the input data block (IDB); c h a r a c t e r i z e d in that the segmentation device is arranged to: determine the length of the input data block (IDB) before applying any of its data to said block encoder (TE); divide the input data block (IDB) to a plurality of segments (S,...
6. SN) wherein all segments are of substantially equal size and no segment is larger than said upper limit (LCB); and to apply each segment (S1... SN) to said block encoder (TE).
Description:
Segmentation mechanism for a block encoder Background of the invention The invention relates to methods and equipment for block encod- ers. As is well known, block encoders are frequently used for error correction.

An example of a block encoder is a so-called turbo (en) coder, as disclosed in reference 1.

Figure 1 is a block chart of a turbo encoder TE which is connected to a corresponding turbo decoder TD via a (transmission) channel. A typical turbo encoder conveys the original information directly to the channel. These bits are called systematic bits. Additionally, the turbo encoder adds redun- dancy (parity) with simple encoders 1 and 2, the latter of which is preceded by an interleaver P, which permutes the bits of the original information. However, details of the block encoder are not relevant for understanding the invention, and reference is made to relevant literature.

Unlike streaming encoders, block encoders process one or more data blocks at a time. An input data block whose size exceeds the block size of the block encoder must be divided into smaller segments such that no seg- ment is larger than the block size of the block encoder. This is why block en- coders are particularly suitable for applications with a fixed input block size. A problem with block encoders is that they do not easily lend themselves to ap- plications having a variable (dynamic) input block size. In other words, what to do with the last few segments of the input data block, remains an open ques- tion.

Disclosure of the invention An object of the invention is to provide a mechanism for using block encoders with applications having a variable (dynamic) input block size. The mechanism should be generic in order to be applicable to a wide variety of block encoders.

This object is achieved with a method and equipment which are characterized by what is disclosed in the attached independent claims. Pre- ferred embodiments of the invention are disclosed in the attached dependent claims.

A straightforward solution would be to fill the segment of the input data block to the block size of the block encoder. Assuming a block size of 8 kilobits (kb), a 14-kb input data block would be divided into a first segment of 8

kb and second (last) segment with a net size of 6 kb and 2 kb of fill (padding) bits. A benefit of this straightforward solution is that the block encoder does not have to adapt to varying input block sizes.

The invention is based on the idea that for an input data block whose size exceeds the block size of the block encoder: 1) before coding is started, the size of the input data block is deter- mined; and 2) the input data block is divided into segments of approximately equal size such that no segment is larger than the block size of the block en- coder.

According to a preferred embodiment of the invention, the input data block is divided into the least possible number of segments. In other words, the segments are as large as possible.

According to an alternative embodiment, the input data block is di- vided into 2"segments where n is a positive integer.

According to yet another preferred embodiment of the invention, if dividing the input data block produces a last segment which is shorter than the remaining segments, the input data block or the last segment is padded with a few fill bits until the length of the last segment equals that of the remaining segments. However, in contrast to the straightforward solution, the last seg- ment is not padded to the full block size of the block encoder (unless the re- maining segments happen to be of that size too).

Brief description of the drawings The invention will be described in more detail by means of preferred embodiments with reference to the appended drawing wherein: Figure 1 is a block chart of a turbo encoder; and Figure 2 illustrates dividing an input data block to a number of seg- ments for the turbo encoder.

Detailed description of the invention Various embodiments of the invention will be described in connec- tion with a turbo encoder, an example of which is disclosed in reference 1.

However, details of the turbo encoder, or any other encoder, are not relevant for understanding the invention.

Implementing a turbo encoder (and the corresponding decoder) can be facilitated by limiting the length of the coding block. A reasonable value for

the length of the coding block is 8192 bits including the user data, a possible error detection field (CRC) and the termination. The following naming conven- tions will be used: NTAIL = the number of termination bits TDELAY (seconds) = the length of the user data block RDATA (bits per second) = the user data rate of the service NEXTF\A = the number of other bits added to the original user data (CRC etc.) LCB = max length of the coding block.

The following condition has to be satisfied: RDATA*DELAYEXTRA*TA!L-CB[1] If this condition is not satisfied the data to be encoded must be segmented so that each separate segment satisfies the condition. The number of segments NS has to satisfy the condition: <BR> <BR> <BR> <BR> <BR> <BR> round ((RDATA*ToEUW+EXTRA)S)+LLcs[2] It is preferable to choose the smallest NS satisfying the inequality [2]. NS can be calculated from: NS = rOUndUp ((RoATA*ToELAY+7'EXTRA)(LcB-ML))[3] It may happen that all the encoding blocks do not end up being of the same length, i. e. that (RDATA * TDELAY + NExTRANs is not an integer. In such a case, there are at least two possible solutions, which will be called algo- rithms A and B. In algorithm A, the last segment is allowed to have a different length than the other segments. In algorithm B, a number NFILL of fill bits (e. g. zeroes) are added to the input data so that (RDATA* TDELAY+ NEXTM+NFILL)/Ns is the smallest possible integer. (Alternatively, the fill bits can be appended to the last segment after segmentation.) Algorithm A Algorithm A allows the last segment to be shorter than the other segments. Algorithm A uses the following Inputs: RDATA = the user data rate (bits per second) TDELAY= encoding user data block length (seconds) EXTpA = extra data to be appended to the user data before encoding (bits)

NTAIL = number of tail bits to be appended to the encoding blocks Algorithm A produces the following outputs: NS = number of segments NTB= number of bits in the turbo encoder input blocks except the last one NLAST_TB = number of bits in the last turbo encoder input block In algorithm A the following computations will be performed: Let NS = rOUndUp up((RDATA * TDELAY + NEXTRA) / (LCB - NTAIL)) Let A/TB=rOUndUp((RDATA*ELAY+EXTRA)/Ms)+TAiL; Let remainderof(RDAT*TDELAY+NEXTRA)/Ns;= If NREM IS not equal to zero then A/sTjB NIB-NU + NREM else NLAST_TB = NTB.

End.

If algorithm A is used, an adaptive turbo interleaver is needed since the last input segment to the turbo encoder may be shorter than the others.

The number of systematic bits in the output of the encoder is <BR> <BR> <BR> <BR> <BR> <BR> <BR> DATA*7-LAY+TRA+S*[4] Thus there are no additional bits other than the ones due to the termination of each segment.

Algorithm B As shown in Figure 2, in algorithm B all input segments to the turbo encoder will be of equal size. The inputs to algorithm B are: RDATA = the user data rate (bits per second) TDELAY= encoding user data block length (seconds) NEXTRA = extra data to be appended to the user data before encoding (bits) NTAIL = number of tail bits to be appended to the encoding blocks The outputs from algorithm B are: NS = number of segments NTB = number of bits in the turbo encoder input blocks NFILL = number of fill bits (e. g. zero) in the last turbo encoder input block In algorithm B, the following computations will be performed: Let NS = roundup up((RDATA * TDELY + NEXTRA) / (LCB - NTAIL)) Let A/TB=rOUndUp((RoATA*7'DELAY+EXTRA)Mg)+A/,L Let NREM = remainder Of (RDATA TDELAY + NEXTRA)/NS

If NREM X 0 then insert NFILL = (Ns-NREM) zero bits to the end of the input data else NFILL = All input segments to the turbo encoder are of equal size and therefore the same turbo interleaver can be used for all segments. In this case the number of systematic bits over an entire channel interleaving block at the output of the turbo encoder is: NS*(roundup((RDATA*7-+ExrpA)/Ms)+A)[5] Thus there may be some additional bits other than the termination bits.

Modification to algorithms A and B In the above algorithms A and B, the length of input segment to the turbo encoder is maximised by choosing the smallest possible number of segments NS. In some cases it may be preferable to use a number of seg- ments NS which is a power of 2, but this will shorten the input segments to the turbo encoder. In this case, the first step of the above algorithms A and B would be replace by the following three steps: Let ns =rOUndUp((ATA*7'DELAY+TRA)/(LcB-MTAtL)): Let m =roundup(togsg); Let NS = 2"'.

References: 1. C. Berrou, A. Glavieux, P. Thitimajshima: Near Shannon limit error- correcting coding and decoding : Turbo-codes, IEEE International Conference on Communications, ICC 1993, Geneva, Switzerland 23-26 May, 1993, Vol. 2, pp.

1064-1070.

All references are incorporated herein by reference.