|
(11) | EP 1 095 461 B1 |
| (12) | EUROPEAN PATENT SPECIFICATION |
|
|
| (54) |
SEGMENTATION MECHANISM FOR A BLOCK ENCODER SEGMENTIERUNGSVORRICHTUNG FÜR EINE BLOCKKODIERUNG MECANISME DE SEGMENTATION POUR CODEUR DE BLOCS |
|
|
|||||||||||||||||||||||||||||||||||||
| Note: Within nine months from the publication of the mention of the grant of the European patent, any person may give notice to the European Patent Office of opposition to the European patent granted. Notice of opposition shall be filed in a written reasoned statement. It shall not be deemed to have been filed until the opposition fee has been paid. (Art. 99(1) European Patent Convention). |
Background of the invention
Disclosure of the invention
Brief description of the drawings
Figure 1 is a block chart of a turbo encoder; and
Figure 2 illustrates dividing an input data block to a number of segments for the turbo encoder.
Detailed description of the invention
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
NEXTRA = 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:Algorithm A
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
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
Let NS = round_up((RDATA* TDELAY + NEXTRA) / (LCB - NTAIL))
Let NTB = round_up((RDATA * TDELAY + NEXTRA) l NS) + NTAIL;
Let NREM = remainder of (RDATA * TDELAY + NEXTRA) / NS;
If NREM is not equal to zero then NLAST_TB = NTB - NS + NREM else NLAST_TB = NTB. End.
Algorithm B
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
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
Let NS = round_up((RDATA * TDELAY + NEXTRA) / (LCB - NTAlL))
Let NTB = round_up ((RDATA * TDELAY + NEXTRA) / NS) + NTAlL
Let NREM = remainder of (RDATA * TDELAY + NEXTRA) / NS
If NREM # 0 then insert NFILL = (NS - NREM) zero bits to the end of the input data else NFILL = 0.
Modification to algorithms A and B
Let ns = round_up ((RDATA * TDELAY + NEXTRA) / (LCB - NTAIL));
Let m = round_up (log2ns);
Let Ns = 2m.
References:
- determining the length of the input data block (IDB) before encoding any of its data with said block encoder (TE);
- calculating the size for a plurality of segments (S1 ... SN), wherein no segment is larger than said upper limit (LCB) ;
- dividing the input data block (IDB) to the plurality of segments (S1 ... SN); and
- applying each segment (S1 ... SN) to said block encoder (TE);
- wherein the calculation of the size uses the following inputs:
RDATA = user data rate in bits per second;
TDELAY =encoding user data block length in seconds;
NEXTRA = extra data bits to be appended to the user data block before encoding;
NTAIL = number of tail bits to be appended to the encoding blocks
- and wherein the calculation of the size produces the following outputs:
NS = number of segments;
NTB = number of bits in each segment;
NFILL = number of fill bits for padding the input data block or the last segment;
- and wherein the following computations are performed:
NS = round_up ((RDATA * TDELAY + NEXTRA) / (LCB - NTAIL)) ;
NTB round_up ((RDATA * TDELAY + NEXTRA) / NS) + NTAIL ;
NFILL = (NS - NREM) if NREM ≠ 0; else NFILL = 0,
wherein
NREM = remainder of (RDATA * TDELAY + NEXTRA) / NS.
- determine the length of the input data block (IDB) before applying any of its data to said block encoder (TE);
- calculate the size for a plurality of segments (S1 ... SN), wherein no segment is larger than said upper limit (LCB);
- divide the input data block (IDB) to the plurality of segments (S1 ... SN) ; and to
- apply each segment (S1 ... SN) to said block encoder (TE);
- wherein the calculation of the size uses the following inputs:
RDATA = user data rate in bits per second;
TDELAY = encoding user data block length in seconds;
NEXTRA = extra data bits to be appended to the user data block before encoding;
NTAIL = number of tail bits to be appended to the encoding blocks
- and wherein the calculation of the size produces the following outputs:
NS = number of segments;
NTB = number of bits in each segment;
NFILL = number of fill bits for padding the input data block or the last segment;
- and wherein the following computations are performed:
NS = round_up ((RDATA TDELAY + NEXTRA) / (LCB - NTAIL));
NTB = round_up ((RDATA * TDELAY + NEXTRA) / NS) + NTAIL ;
NFILL = (N - NREM) if NREM ≠ 0; else NFILL = 0,
wherein
NREM = remainder of (RDATA * TDELAY + NEXTRA) / NS.
- Bestimmen der Länge des Eingangsdatenblocks (IDB) vor dem Codieren beliebiger seiner Daten mit dem Blockcodierer (TE);
- Berechnen der Größe für mehrere Segmente (S1 ... SN), wobei kein Segment größer ist als die Obergrenze (LCB);
- Unterteilen des Eingangsdatenblocks (IDB) in die mehreren Segmente (S1 ... SN) und
- Anwenden jedes Segments (S1 ... SN) auf den Blockcodierer (TE);
- wobei die Berechnung der Größe die folgenden Eingaben verwendet:
RDATA = Benutzerdatenrate in Bits pro Sekunde;
TDELAY = codierende Länge des Benutzerdatenblocks in Sekunden;
NEXTRA = Extradatenbits zum Anhängen an den Benutzerdatenblock vor dem Codieren;
NTAIL = Anzahl von Tail-Bits zum Anhängen an die codierenden Blöcke
- und wobei die Berechnung der Größe die folgenden Ausgaben erzeugt:
NS = Anzahl von Segmenten;
NTB = Anzahl von Bits in jedem Segment;
NFILL = Anzahl von Füllbits zum Stopfen des Eingangsdatenblocks oder des letzten Segments;
- und wobei die folgenden Berechnungen durchgeführt werden:
NS = round_up ((RDATA * TDELAY + NEXTRA) / (LCB - NTAIL)) ;
NTB = round_up ((RDATA * TDELAY + NEXTRA) / NS) + NTAIL;
NFILL = (NS - NREM), falls NREM ≠ 0; sonst NFILL = 0,
wobei
NREM = remainder of (RDATA * TDELAY + NEXTRA) / Ns.
- Bestimmen der Länge des Eingangsdatenblocks (IDB) vor dem Codieren beliebiger seiner Daten mit dem Blockcodierer (TE);
- Berechnen der Größe für mehrere Segmente (S1 ... SN), wobei kein Segment größer ist als die Obergrenze (LCB);
- Unterteilen des Eingangsdatenblocks (IDB) in die mehreren Segmente (S1 ... SN) und
- Anwenden jedes Segments (S1 ... SN) auf den Blockcodierer (TE);
- wobei die Berechnung der Größe die folgenden Eingaben verwendet:
RDATA = Benutzerdatenrate in Bits pro Sekunde;
TDELAY = codierende Länge des Benutzerdatenblocks in Sekunden;
NEXTRA = Extradatenbits zum Anhängen an den Benutzerdatenblock vor dem Codieren;
NTAIL = Anzahl von Tail-Bits zum Anhängen an die codierenden Blöcke
- und wobei die Berechnung der Größe die folgenden Ausgaben erzeugt:
NS = Anzahl von Segmenten;
NTB = Anzahl von Bits in jedem Segment;
NFILL = Anzahl von Füllbits zum Stopfen des Eingangsdatenblocks oder des letzten Segments;
- und wobei die folgenden Berechnungen durchgeführt werden:
NS = round_up((RDATA * TDELAY + NEXTRA) / (LCB - NTAIL)) ;
NTB = round_up((RDATA * TDELAY + NEXTRA) / NS) + NTAIL;
NFILL = (NS - NREM), falls NREM ≠ 0; sonst NFILL = 0,
wobei
NREM = remainder of (RDATA * TDELAY + NEXTRA) / Ns.
- la détermination de la longueur du bloc de données d'entrée (IDB) avant le codage de l'une quelconque de ses données avec ledit codeur de blocs (TE),
- le calcul de la taille d'une pluralité de segments (S1 ... SN), dans lequel aucun segment n'est plus grand que ladite limite supérieure (LCB),
- la division du bloc de données d'entrée (IDB) en la pluralité de segments (S1 ... SN), et
- l'application de chaque segment (S1 ... SN) audit codeur de blocs (TE),
- dans lequel le calcul de la taille utilise les entrées suivantes :
RDATA = débit de données de l'utilisateur en bits par seconde,
TDELAY = longueur du bloc de données de l'utilisateur codant en secondes,
NEXTRA = bits de données supplémentaires à annexer au bloc de données de l'utilisateur avant le codage
NTAIL = nombre de bits d'extrémité à annexer aux blocs de codage
- et dans lequel le calcul de la taille produit les sorties suivantes :
NS = nombre de segments,
NTB = nombre de bits dans chaque segment,
NFILL = nombre de bits de remplissage destinés à remplir le bloc de données d'entrée ou le dernier segment,
- et dans lequel les calculs suivants sont exécutés :
NS = arrondi_vers_le_haut ((RDATA * TDELAY + NEXTRA) / (LCB - NTAIL)),
NTB = arrondi_vers_le_haut ((RDATA * TDELAY + NEXTRA) / NS) + NTAIL,
NFILL = (NS - NREM) si NREM # 0, sinon NFILL = 0,
dans lequel
NREM = reste de (RDATA * TDELAY + NEXTRA) / NS.
- déterminer la longueur du bloc de données d'entrée (IDB) avant l'application de l'une quelconque de ses données audit codeur de blocs (TE),
- calculer la taille d'une pluralité de segments (S1 ... SN), dans lequel aucun segment n'est plus grand que ladite limite supérieure (LCB),
- diviser le bloc de données d'entrée (IDB) en la pluralité de segments (S1 ... SN), et
- appliquer chaque segment (S1 ... SN) audit codeur de blocs (TE),
- dans lequel le calcul de la taille utilise les entrées suivantes :
RDATA = débit de données de l'utilisateur en bits par seconde,
TDELAY =longueur du bloc de données de l'utilisateur codant en secondes,
NEXTRA = bits de données supplémentaires à annexer au bloc de données de l'utilisateur avant le codage,
NTAIL = nombre de bits d'extrémité à annexer aux blocs de codage
- et dans lequel le calcul de la taille produit les sorties suivantes :
NS = nombre de segments,
NTB = nombre de bits dans chaque segment,
NFILL = nombre de bits de remplissage destinés à remplir le bloc de données d'entrée ou le dernière segment,
- et dans lequel les calculs suivants sont exécutés :
NS = arrondi_vers_le_haut ((RDATA * TDELAY + NEXTRA) / (LCB - NTAIL)),
NTB = arrondi_vers_le_haut ((RDATA * TDELAY + NEXTRA) / NS) + NTAIL,
NFILL = (NS - NREM) si NREM ≠ 0, sinon NFILL = 0,
dans lequel
NREM = reste de (RDATA * TDELAY + NEXTRA) / NS.
REFERENCES CITED IN THE DESCRIPTION
Non-patent literature cited in the description