DE69914767T2 - Verfahren und vorrichtung zur fehlerkorrektur- codierung und decodierung - Google Patents

Verfahren und vorrichtung zur fehlerkorrektur- codierung und decodierung Download PDF

Info

Publication number
DE69914767T2
DE69914767T2 DE69914767T DE69914767T DE69914767T2 DE 69914767 T2 DE69914767 T2 DE 69914767T2 DE 69914767 T DE69914767 T DE 69914767T DE 69914767 T DE69914767 T DE 69914767T DE 69914767 T2 DE69914767 T2 DE 69914767T2
Authority
DE
Germany
Prior art keywords
coding
decoding
data
basic
modules
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69914767T
Other languages
English (en)
Other versions
DE69914767D1 (de
Inventor
Jean-Claude Carlac'h
Cyril Vervoux
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telediffusion de France ets Public de Diffusion
Orange SA
Original Assignee
Telediffusion de France ets Public de Diffusion
France Telecom SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from FR9810089A external-priority patent/FR2782423A1/fr
Priority claimed from FR9810316A external-priority patent/FR2782424A1/fr
Application filed by Telediffusion de France ets Public de Diffusion, France Telecom SA filed Critical Telediffusion de France ets Public de Diffusion
Application granted granted Critical
Publication of DE69914767D1 publication Critical patent/DE69914767D1/de
Publication of DE69914767T2 publication Critical patent/DE69914767T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/136Reed-Muller [RM] codes

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Description

  • Die Erfindung betrifft das Kodieren digitaler Daten. Genauer betrifft die Erfindung Fehler korrigierende Codes. Die Erfindung wird insbesondere aber nicht ausschließlich auf die Kodierung von Quellendaten angewandt, die als voneinander unabhängige Datenblöcke organisiert sind und somit einheitlich kodiert und dekodiert werden müssen, sowie auf die Kodierung von Datenflüssen (Faltungskodierung).
  • Es ist bereits eine Vielzahl von Kodierungstechniken bekannt, die das Korrigieren von Sendefehlern ermöglichen. So kann man insbesondere auf die Dokumente F. J. McWilliams und N. J. A. Sloane [1], S. B. Wicker [2] und V. Pless et al. [3] Bezug nehmen (alle in dieser Anmeldung erwähnten Referenzen wurden im Anhang zusammengefügt, um das Lesen zu vereinfachen). Die Fehler korrigierenden Codes ermöglichen das Korrigieren von Sendefehlern, wie sie jedem Sendekanal inhärent sind. So werden sie in großem Umfang bei Telekommunikationen, bei Funk- und Fernsehübertragungen und beim Speichern von Informationen, beispielsweise auf Laserscheiben und auf magnetischen Scheiben, eingesetzt.
  • Diese Fehler werden beispielsweise durch das Wärmerauschen der elektronischen Bauteile des Empfängers, durch (beabsichtigte oder nicht beabsichtigte) elektromagnetische Verzerrungen, durch Echos oder Mehrfachfortpflanzungen im Falle der Funkübertragung (beispielsweise im Rahmen von Funktelefonverbindungen wie GSM, digitale Funkverbindungen wie DAB oder digitales Fernsehen wie DVB) oder in einem Stromnetz (beispielsweise im Falle von Telekommunikationen über das Stromnetz) ... verursacht.
  • Die ersten Untersuchungen bezüglich Fehler korrigierender Codes wurden 1940 durchgeführt. In seinen Artikeln von 1948 hat Claude Shannon [4] die Grundlagen der Informationstheorie festgelegt, nach der immer noch (und möglicherweise für immer?) digitale Kommunikationssysteme konzipiert werden.
  • Eines der von Shannon erzielten Ergebnisse ist sein Satz bezüglich der Kapazitätsbegrenzung eines Kommunikationskanals, der in der berühmten Formel:
    Figure 00020001
    zum Ausdruck kommt,
    wobei die Kapazität C des Kanals ein in Bits/s ausgedrückter Informationsdurchfluss, B die Bandbreite des Kanals in Hz und S/N das Signal-Rausch-Verhältnis innerhalb dieser Bandbreite sind.
  • Dieser Satz kann folgendermaßen ausgesprochen werden: „jedem Kanal ist eine Sendekapazität C (in Bits/s) zugeordnet. Es gibt Codes zur Korrektur von Fehlern, so dass die Information über den Kanal mit einem geringeren Durchsatz als die Kapazität C gesendet werden kann, mit einer beliebig geringen binären Fehlerrate, wenn man einen ausreichend langen Fehlerkorrektur-Code nimmt".
  • Leider ist der Satz von Shannon nur der Beweis der Existenz. Seine Veröffentlichung hat die Forschung bezüglich der „guten" Codes in Gang gesetzt, die seit nun 50 Jahren betrieben wird. Die Aufmerksamkeit der Telekommunikationsgemeinschaft wurde zuerst hauptsächlich von den Block-Codes zum Senden von Bitpaketen erregt: die Hamming-Codes, die Golay-Codes, die Reed-Müller-Codes, die BCH-Codes, die Reed-Solomon-Codes usw.
  • Das Prinzip der Fehler korrigierenden Codes wurde 1950 von R. W. Hamming erfunden: ausgehend von k Bits Nutzinformation berechnet man (n – k) Redundanzbits mittels der Addition Modulo 2 der k Informationsbits. Somit beträgt die Gesamtlänge eines jeden, auch Codewort genannten, Blocks bereits n Bits. Sind beim Empfang Fehler in einem empfangenen n Bitwort vorhanden, ermöglicht das Vorhandensein von (n – k) Redundanzbits neben den k Informationsnutzbits, die Korrektur einiger der vorhandenen Fehler.
  • Übersteigt das Signal/Rausch-Verhältnis der Leistungen einen bestimmten Wert, so werden die Kosten für den Datenfluss der Redundanzbits der Kodierung durch das Verringern, wenn nicht gar die quasi vollständige Eliminierung, der binären Fehlerrate (TEB) nach dem Dekodieren mehr als kompensiert. Dieser Leistungsgewinn wird Kodierungsgewinn für eine gegebene TEB genannt und wird in Dezibel (dB) ausgedrückt. Ein Kodierungsgewinn von 3 dB bedeutet, dass man die Leistung des gesendeten Signals mit der Kodierung durch 2 teilen kann, um die gleiche TEB wie ohne Kodierung zu erzielen (3 dB ≈ 10·Log10(2)).
  • Eine andere, neuere große Kodierfamilie ist die der von P. Elias [5] im Jahre 1955 eingeführten Faltungscodes. Diese Codes wandeln eine unendliche Folge von Symbolen in mehrere andere unendliche Folgen von Informationssymbolen um. Diese Codes wurden erfunden, um kontinuierliche Informationsflüsse zu übertragen. A. J. Viterbi [6] (im Jahre 1967) und G. D. Forney [7] (im Jahre 1973) haben die Möglichkeit bewiesen, die „kleinen" Faltungscodes effektiv mit Hilfe des Viterbi-Algorithmus zu dekodieren (ein Algorithmus, der aus der Theorie der dynamischen Programmierungstheorie stammt (s. Bellmann [8] (1957)).
  • Die (Fehler korrigierenden) Blockcodes und die Faltungscodes lassen sich mit den gleichen theoretischen Werkzeugen und den gleichen Dekodierungsmethoden verarbeiten. Man kann die Blockcodes und die Faltungscodes durch „Trellisgitter" genannte, etwas besondere Grafiken, darstellen, aus denen sich die Wichtungsverteilungen berechnen und eine Dekodierung nach dem Viterbi-Algorithmus durchführen lassen (s. Forney [7] und McEliece [9]).
  • Jedes Codewort wird durch einen verschiedenen Pfad im Trellisgitter dargestellt, und eine Dekodierung nach dem Viterbi-Algorithmus ermöglicht das Finden des besten Pfades, d. h., des am dichtesten am empfangenen Wort liegenden Codewortes. Jedoch „explodiert", für einen Blockcode sowie für einen Faltungscode, die Komplexität der Dekodierung exponentiell mit 2(n–k) für einen Blockcode und mit 2ν für einen Faltungscode (ν ist die Speichertiefe des Faltungscodes). Das Dilemma besteht darin, dass je länger und leistungsfähiger ein Code ist, je mehr Fehler er korrigiert, aber desto mehr kostet er an Zeit oder an zu dekodierendem Material.
  • In neurer Zeit haben, 1993, C. Berrou und A. Glavieux [10] ein neues, derzeit „Turbo-Code" genanntes, Kodierungsschema vorgestellt. Es lassen sich vier in den Turbo-Codes vorhandene Gedanken hervorheben:
    • 1) Verwendung einer rekursiven Faltungskodierung, d. h., die eine unendliche Impulsantwort aufweist (und nicht, wie klassischerweise, eine endliche Impulsantwort).
    • 2) Einmaliges Kodieren der Informationsnutzbits in ihrer Ausgangsreihenfolge, gefolgt von einer 2. Kodierung dieser selben Nutzdaten in einer anderen Reihenfolge, d. h., in umgeordneter Reihenfolge. Die Nutzbits werden nur einmal gesandt, und die Coder senden nur ihre Redundanzen. Die auch Verschachtelung genannte Permutation ist „magisch", weil, je größer sie ist, desto mehr Fehler kann der Code korrigieren. In der Tat ermöglicht die Verschachtelung das Dekorrelieren der vom Sendekanal herrührenden Fehler.
    • 3) Verwenden von rauscharmen Kodiertechniken (in Englisch: „soft decoding"), die von Bahl et al. (BCJR Algorithmus) [11], G. Battail [12] oder Hagenauer (SOVA-Algorithmus („Soft Output Viterbi Algorithm")) [13] usw. eingeführt wurden.
    • 4) Feststellen, nach Definition, dass der Ausgang Λi (eines jeden elementaren rauscharmen Decoders i, der die „Information" Λi (0) bei der Iteration i empfängt) die Summe der empfangenen ursprünglichen „Information" Λ0 und einer extrahierten oder außenstehenden Information Wi ist, so dass: Λi = Λ0 + Wi. Bei der nachfolgenden Iteration (i + 1) wird nur ein Teil der außenstehenden Information wieder eingegeben, wie: Λi+1 (0) = Λ0 + αi+1Wi, wobei die Koeffizienten αi ab 0 bei der ersten Iteration variieren und 1,0 bei der letzten erreichen können. Diese Koeffizienten αi werden optimiert, um die TEB ab einem gegebenen Signal/Rausch Verhältnis zu minimieren. Streng genommen sind die Größen Λ und W Logarithmen von Wahrscheinlichkeitsverhältnissen und keine Informationsgrößen.
  • Die ersten Turbo-Codes von Berrou und Glavieux waren auf einer großen Permutationsmatrix (256 × 256 = 65536) beruhende Faltungscodes, die Leistungen in der Nähe der Shannon-Grenze erbrachten, bei geringen Signal/Rausch Verhältnissen. Aber einige der neuesten Telekommunikations- und Übertragungssysteme benötigen das Senden kleiner Informationspakete (zum Beispiel: Funkrückstreuung, Mobiltelefonsysteme, drahtlose ATM, Internet usw.).
  • Ferner bietet eine Permutation den Nachteil einer nicht kompressiblen Verarbeitungsverzögerung, die bei einer Echtzeitdienstleistung wie beispielsweise einem Telefongespräch sehr störend sein kann. Deshalb wurden Forschungsanstrengungen unternommen, um gute Block „Turbocodes" zu finden. Insbesondere haben R. Pyndiah et al. [14] das Konzept der iterativen Dekodierung den Produktcodes von Elias [5] für kleine Blockcodes (n < 1024) angepasst. Und in neuerer Zeit, nämlich im Jahre 1997, haben Berrou et al. [17] ihre Turbocodes der Konstruktion von FOTC (Englisch: „Frame Oriented Turbo Codes") genannten, leistungsfähigen Blockcodes dieser Größenordnung (n < 2048) (durch Schließen der Trellisgitter) angepasst.
  • Die von Berrou und Pyndiah vorgestellten Blockcodes sind unter den besten bekannten Codes innerhalb ihrer Größen- und Leistungsklasse (0.5 < r < 1), bei einer Dekodierungskomplexität, die eine materielle Ausführung mit ausgezeichnetem Preis/Leistungsverhältnis ermöglichen.
  • Für eine gegebene Blocklänge n und bei einer gegebenen Korrekturkapazität: t = ⌊(d – 1)/2⌋(wobei d der geringste Hamming-Abstand zwischen zwei Worten des Codes ist), gibt es (mehr oder weniger strenge) obere Leistungsgrenzen, die man zu erreichen hoffen kann. Die beste bekannte obere Grenze ist die von McEliece et al. [1, 2], die in 1 in vollem Strich dargestellt ist (11). Es erscheint ebenfalls in Punktstrich die Gilbert-Varshamov-Grenze 12.
  • Für einen festgelegten relativen Abstand d/n lässt sich kein Code mit einer Leistung k/n finden, die höher ist als die McEliece-Grenze. Ferner wird eine Code-Familie als gut angesehen, wenn:
  • Figure 00060001
  • So ist beispielsweise, bei einer Leistung von k/n = 0,5, die McEliece-Grenze über den relativen Mindestabstand d/n ≤ 0,18. Wenn n = 1024 Bits kann man sich höchstens die Korrektur von 91 Fehlern erhoffen.
  • Derzeit sind die „Turbo-Codes" die leistungsfähigsten Korrekturcodes bei einer TEB in der Größenordnung von 10–4. Ist diese TEB sehr schwach, beispielsweise in der Größenordnung von 10–10, so ist der Gewinn im Verhältnis zu anderen Techniken geringer.
  • Andererseits erscheinen die erzielten Leistungen (klassischerweise 1/2) nicht als optimal.
  • Die Erfindung soll insbesondere diese verschiedenen Nachteile des Standes der Technik ausräumen.
  • Genauer gesagt besteht ein Zweck der Erfindung im Bereitstellen eines Fehler korrigierenden Kodierverfahrens, das bessere Leistungen als die bekannten Codes liefern soll. Insbesondere soll die Erfindung ein Verfahren bereitstellen, mit dem man sich der McEliece-Grenze stark nähern kann.
  • Ein weiterer Zweck der Erfindung ist das Bereitstellen eines Kodierverfahrens, das einen sehr starken Gewinn ermöglicht, insbesondere, wenn die Fehlerraten sehr gering sind, nämlich in der Größenordnung von 10–10.
  • Ebenfalls soll die Erfindung ein Verfahren bereitstellen, das, für eine gegebene Fehlerrate, einen Leistungsgewinn im Verhältnis zu den bekannten Kodiertechniken ergeben soll (beispielsweise, einen Übergang von 1/2 auf 1/4 oder 1/8).
  • Ein weiterer Zweck der Erfindung ist das Bereitstellen eines Kodierverfahrens, das der Blockkodierung von Daten mittlerer Länge n angepasst sein soll, beispielsweise solche, die zwischen 128 und 2048 Bits liegen.
  • Noch ein Zweck der Erfindung ist das Bereitstellen eines Kodierverfahrens, das sich leicht in VLSI einsetzen lässt.
  • Die Erfindung soll ebenfalls ein entsprechendes Dekodierverfahren liefern, dessen Komplexität vernünftig sein soll und das insbesondere ein konkurrenzfähiges Leistungs-/Komplexitätsverhältnis im Vergleich zu den besten bekannten Codes liefern soll.
  • Die internationale Patentanmeldung WO98/12820 beschreibt eine Kodierkette, die einen ersten CRC-Kodierschritt über einen Teil der Quelleninformation, einen Durchmischungsschritt und einen zwei parallel Faltungscoder umfassenden Kodierungsschritt aufweist. Die Norm ITU-T J.83, Anhang B, 04/1997, bezüglich digitalem Kabelfernsehen, spezifiziert eine Übertragungskette, die einen Reed-Solomon Kodierungsschritt, einen Durchmischungsschritt (Verschachtelung und Umrechnung auf Zufallszeichen) sowie einen zwei identische parallel Faltungscoder aufweisenden, durch Trellisgitter kodierten Modulationsschritt umfasst. Zweck diese Kodierketten ist es nicht, sich der theoretischen Shannon-Grenze zu nähern.
  • Diese Ziele sowie andere, die im Nachhinein ersichtlich werden, erreicht die Erfindung mit Hilfe eines Kodierverfahrens zur Fehlerkorrektur, das einer Quellendatenreihe einen Block kodierter Daten zuordnet, der zu mindestens einem Empfänger gesendet werden soll und das folgendes umfasst:
    • – mindestens zwei Kodierschritte, die mindestens zwei Grundkodierungsmodule umfassen, wobei jeder dieser Kodierschritte eine Reihe von zu verarbeitenden Daten empfängt, die zwischen den Grundkodierungsmodulen verteilt sind und eine Reihe von aus den Grundkodierungsmodulen stammenden verarbeiteten Daten liefern, und
    • – mindestens einen Durchmischungsschritt, wobei dieser Schritt zwischen zwei aufeinander folgenden Kodierungsschritten, nämlich einen ersten und einen zweiten Kodierungsschritt, eingefügt ist und die aus einem jeden Grundkodierungsmodul des ersten Kodierungsschrittes kommenden verarbeiteten Daten zwischen mindestens zwei Grundkodierungsmodulen des zweiten Schrittes verteilt.
  • Ein derartiges Kodierverfahren ermöglicht es, für eine gegebene Leistung, einen großen Minimalabstand zu erzielen. Ein derartiger Code (192, 96) mit der Leistung 1/2, der auf der Grundlage des weiter unten beschriebenen Beispiels aufgebaut ist, weist somit einen Minimalabstand in der Nähe von 30 auf. Ferner liegt die Verteilung der Gewichte in der Nähe des optimalen Wertes.
  • Jeder Schritt entspricht vorteilhafterweise einer Ebene der Struktur einer entsprechenden Kodiereinrichtung. Diese Struktur ermöglicht ein leichteres Verständnis der Erfindung. Dennoch kann diese Einrichtung das Verfahren der Erfindung unter jeder anderen passenden Form anwenden und insbesondere in einer Form, die im Wesentlichen eine Software darstellt, wobei ein Prozessor (oder mehrere Prozessoren) die entsprechende Verarbeitung ausführt (ausführen).
  • Unter Durchmischung versteht man hier jede Art von Verteilung, Permutation, Rotation sowie allgemeiner Funktionen des Durchmischungsschrittes mit mehreren Eingängen (Additionen, Multiplikationen, Wichtungen usw.).
  • Wie im Nachhinein ersichtlich wird, kann dieses Verfahren leicht in Form einer „Pipelinemaschine", insbesondere in einem VLSI, eingesetzt werden.
  • Vorteilhafterweise ist der angewandte Code systematisch oder pseudosystematisch.
  • So umfasst vorteilhafterweise der zu sendende Block kodierter Daten mindestens einige der Quellendaten und mindestens einige der aus dem letzten Kodierungsschritt stammenden verarbeiteten Daten, bevorzugterweise die Menge der Quellendaten.
  • Nach einer vorteilhaften Ausführung der Erfindung umfasst der Block kodierter Daten aus mindestens zwei Kodierschritten stammende verarbeitete Daten. So kann man beispielsweise die beim letzten Schritt sowie bei mindestens einem vorhergehenden Schritt berechneten Daten berücksichtigen. Der geeignete Kompromiss wird als Funktion der Erfordernisse zwischen der Qualität der Dekodierung (Berücksichtigung der größtmöglichen Zahl möglicher Informationen) und der Leistung gewählt.
  • Bei einer besonderen Ausführung umfasst mindestens einer der Durchmischungsschritte mindestens eine Permutationsmatrix. Es kann ebenfalls vorgesehen werden, dass mindestens einer der Durchmischungsschritte verarbeitete Daten zu mindestens zwei verschiedenen Kodierschritten hin verteilt. Die zwei Aspekte können selbstverständlich in einer selben Vorrichtung zusammengefügt werden.
  • In gleicher Weise wird (werden) mindestens eine der Quellendaten und/oder mindestens eine der zu verarbeitenden Daten mindestens einmal dupliziert, um mindestens zwei zu verarbeitende Daten zu bilden.
  • Man kann ferner vorsehen, dass mindestens eines der Quellendaten direkt einem anderen Kodierschritt als dem ersten Kodierschritt zugeführt wird.
  • Diese verschiedenen Aspekte lassen sich selbstverständlich kumulieren und werden bevorzugterweise in derartiger Weise gewählt, dass man die beste Kodierung erzielt, wobei die Dekodierung ausreichend einfach und leistungsfähig bleibt.
  • Nach einer besonderen Ausführung der Erfindung umfasst das Kodierverfahren mindestens zwei Kodiereinheiten, die jeweils mindestens zwei der erwähnten Kodierschritte und mindestens einen zwischen die zwei aufeinander folgenden Kodierungsschritte eingefügten Durchmischungsschritt umfassen, wobei die Quellendaten jeder der Kodiereinheiten in verschiedenen Reihenfolgen zugeführt werden.
  • Das Kodierverfahren kann insbesondere mindestens eine Durchmischungseinheit aufweisen, die eine Änderung der Zuführungsreihenfolge der Quellendaten in einer der Kodierungseinheiten sicherstellt.
  • So erhält man zwei (oder mehr) verschiedene Sätze von Redundanzdaten.
  • Nach einer vorteilhaften Ausführung verfügt das Kodierungsverfahren über Mittel zum Kennzeichnen, die auf mindestens einige der zu verarbeitenden Daten und/oder auf mindestens einige der bereits verarbeiteten Daten angewandt werden.
  • Vorteilhafterweise setzen die Kodierungsmodule einen Code ein, dessen Redundanz eine Länge n – k kleiner oder gleich 12 ist.
  • Wie bereits erwähnt betrifft die Erfindung insbesondere das Kodieren von Datenblöcken relativ begrenzter Größe.
  • Nach einer ersten besonders einfach zu realisierenden Ausführung sind alle die erwähnten Kodierungsmodule identisch. So können diese Kodierungsmodule beispielsweise einen Reed-Müller-Code einsetzen.
  • In diesem Falle setzt vorteilhafterweise mindestens einer der Durchmischungsschritte eine „paritätisch" genannte Permutation ein, die am Ausgang einerseits die Eingaben mit geradem Index und andererseits die Eingaben mit ungeradem Index umgruppiert.
  • Für eine Permutationslänge k, stellt die Permutation, bei einer bevorzugten Ausführung, die folgenden Operationen sicher:
    • – Eingaben mit geradem Index i = 2p werden an die Ausgänge j = p gesendet, mit p = 0, 1, ... Int[k/2] – 1;
    • – Eingaben mit ungeradem Index i = 2p + 1 werden an die Ausgänge j = p + Int[k/2] gesendet,
    wobei Int[x] den ganzzahligen Teil von x darstellt.
  • Nach einem vorteilhaften Aspekt der Erfindung bringt das Kodierverfahren Durchmischungsschritte zum Einsatz, welche eine paritätische Permutation einsetzen, wobei es folgendes umfasst:
    • – drei Kodierschritte, die jeweils drei Grundkodierungsmodule umfassen;
    • – drei Kodierschritte, die jeweils vier Grundkodierungsmodule umfassen;
    • – fünf Kodierschritte, die jeweils neun Grundkodierungsmodule umfassen,
    wobei die Grundkodierungsmodule einen ausgedehnten Hamming-Code [8, 4] anwenden.
  • Nach einer vorteilhaften Ausführung werden die Grundkodierungsmodule mit Hilfe von elementaren Kodierungsblocks zusammengesetzt, welche dem Paar (x0, x0 ⊕ x1) das Paar (x0, x1) zuordnen.
  • Bei diesem Ansatz unterscheidet man somit zwischen zwei Konstruktions- oder Verschachtelungsebenen für den Endcode.
  • Ein weiterer vorteilhafter Code ist, aufgrund seiner großen Einfachheit, ein Code (4, 2), der dem Paar (x0, x1) beispielsweise die Werfe (x0, x1, x0, x0 + x1) zuordnet. Der Trivialcode, der systematisch x0 zu x0 zuordnet, kann ebenfalls benutzt werden, kombiniert mit anderen Grundcodes, wie bereits oben erwähnt.
  • Derartige Codes ermöglichen sehr einfache Ausführungen, beispielsweise auf der Grundlage von Wertetabellen, aufgrund der kleinen Zahl möglicher Zustände. Sie ermöglichen beispielsweise den Aufbau des Hamming-Codes H [8, 4, 4].
  • Nach einer weiteren Ausführung sind mindestens zwei der Kodierungsmodule verschieden.
  • In ebenfalls vorteilhafter Weise kann vorgesehen werden, dass mindestens eines der Grundkodierungsmodule ein Trellisgitter einsetzt, das eine Menge von Pfaden definiert, die bijektiv einer Menge von Codewörtern zugeordnet sind und optimale Pfadmetriken nach einem vorgegebenen Kriterium liefern.
  • Die nach diesem Prinzip aufgebauten Codes werden „Cortex II Codes" und die nach der vorherigen Technik erzielten Codes „Cortex I Codes" genannt.
  • Vorteilhafterweise liefert mindestens einer der Durchmischungsschritte mindestens eine Ausgabe, die Funktion von mindestens zwei Eingaben des Durchmischungsschrittes ist.
  • Anders ausgedrückt wird mindestens eine Ausgabe (klassischerweise alle Ausgaben) des Coders zu mehreren Kodiereingängen der nachfolgenden Stufe verteilt.
  • Diese Funktion kann insbesondere mindestens eine Summe, eine Multiplikation und/oder eine Wichtung einsetzen.
  • Nach einem vorteilhaften Aspekt der Erfindung sind die Eingaben, die Gegenstand der erwähnten Funktion sind, Pfadmetriken.
  • Andererseits wird vorteilhafterweise eine erneute Schleifenbildung der Struktur vorgesehen. Die erwähnten Kodierungs- und Durchmischungsschritte werden demnach mindestens zweimal wiederholt, wobei der erste und der letzte Durchmischungsschritt einen einzigen Schritt bilden.
  • Vorteilhafterweise umfasst das Verfahren einen Schritt zum Steuern und/oder Einstellen von mindestens einem der folgenden Elemente:
    • – Typ und/oder Eigenschaft der von mindestens einem der Grundkodierungsmodule eingesetzten Kodierung;
    • – von mindestens einem der Durchmischungsschritte bewirkte Durchmischung;
    • – auf mindestens einige der zu verarbeitenden Daten und/oder mindestens einige der verarbeiteten Daten angewendete Kennzeichnung;
    • – Anzahl der Kodierungsschritte.
  • Die besagte Steuerung und/oder Einstellung können systematisch über einen gegebenen Zeitraum und/oder als Funktion von mindestens einer Information wirken, die für mindestens einen der Aspekte aus der Gruppe repräsentativ ist, die folgendes umfasst:
    • – mindestens eine Eigenschaft des Sendekanals;
    • – mindestens eine Eigenschaft des Empfängers;
    • – mindestens eine Eigenschaft des Quellensignals.
  • Die Erfindung betrifft ebenfalls Kodierverfahren zur Fehlerkorrektur, die das oben beschriebene Verfahren anwenden. In einer derartigen Vorrichtung wird einer Reihe von Quellendaten einem Block kodierter Daten zugeordnet, die mit Hilfe der folgenden Vorrichtungen an mindestens einen Empfänger gesendet werden sollen:
    • – mindestens zwei Kodierebenen, die jeweils mindestens zwei Grundkodierungen einsetzen, wobei jede dieser Kodierungsebenen eine Reihe von zu verarbeitenden Daten empfängt, die zwischen den Grundkodierungen verteilt sind und eine den Grundkodierungen entsprechende Reihe verarbeiteter Daten liefert,
    • – und mindestens eine Durchmischungsebene, wobei diese zwischen zwei aufeinander folgenden Kodierungsebenen eingesetzt wird, nämlich eine erste Kodierungsebene und eine zweite Kodierungsebene, und die einer jeden Grundkodierung der ersten Kodierungsebene entsprechenden verarbeiteten Daten zwischen mindestens zwei Grundkodierungen der zweiten Ebene verteilt.
  • Wie bereits oben erwähnt kann jede dieser Ebenen tatsächlich einer Komponente (oder einer Komponentenmenge) entsprechen oder durch einen Prozessor oder mehrere Prozessoren eingesetzt werden, der/die von einem entsprechenden Programm gesteuert wird/werden.
  • Die Erfindung betrifft ebenfalls die entsprechenden Dekodierverfahren und -vorrichtungen. Vorteilhafterweise ist eine derartige Dekodiervorrichtung iterativ.
  • Bevorzugterweise wendet das Dekodierverfahren mindestens eine der Techniken aus der folgenden Gruppe an:
    • – Dekodierung mit Hilfe einer zu der beim Kodieren eingesetzten symmetrischen Struktur;
    • – erschöpfendes Dekodieren, demnach man alle möglichen Codewörter berücksichtigt und das beste nach einem vorgegebenen Auswahlkriterium wählt;
    • – Viterbi-Dekodierung, bei der ein Dekodiergitter angewandt wird;
    • – Chase-Dekodierung.
  • Vorteilhafterweise setzt ein derartiges Dekodierverfahren mindestens zwei Dekodierungsschritte ein, die mindestens zwei Dekodiermodule sowie mindestens einen zwischen zwei aufeinander folgende Dekodierungsschritte eingefügten Permutationsschritt umfassen, wobei diese Schritte symmetrisch zu denen der entsprechenden Kodierung sind und jedes der Dekodierungsmodule die doppelte Menge von Ein- und Ausgängen wie das entsprechende Kodierungsmodul aufweist, um die Ausbreitung von Wahrscheinlichkeitswerten einerseits von oberhalb bzw. datenstromaufwärts nach unterhalb bzw. datenstromabwärts des Decoders und andererseits von unterhalb bzw. datenstromabwärts nach oberhalb bzw. datenstromaufwärts dieses Decoders sicherzustellen.
  • Somit erhält man allmählich eine Konvergenz der dekodierten Daten in beide Dekodierrichtungen.
  • Wie im Falle der Kodierung ist der Begriff des Schrittes dem Begriff der Ebene der entsprechenden Vorrichtung näher zu bringen, wie weiter unten beschrieben.
  • Vorteilhafterweise setzt das Dekodierverfahren der Erfindung mindestens eine Iteration der folgenden Operationen ein:
    • – vollständige Ausbreitung nach oberhalb bzw. datenstromaufwärts des Decoders der erwähnten Wahrscheinlichkeitswerte, die einen ersten Satz von geschätzten Werten liefert;
    • – vollständige Ausbreitung nach unterhalb bzw. datenstromabwärts des Decoders der erwähnten Wahrscheinlichkeitswerte, die einen zweiten Satz von geschätzten Werten liefert.
  • Bevorzugterweise stellt diese Dekodierung Pfadwahrscheinlichkeiten fest. So kann jede elementare Dekodierung bei jeder Iteration für den möglichen Zustand der entsprechenden Kodierung eine Zustandswahrscheinlichkeit berechnen und den Zustand wählen, der die höchste Wahrscheinlichkeit aufweist.
  • Vorteilhafterweise entspricht die Zustandswahrscheinlichkeit der Summe eines ersten, aus den Informationsbits gewonnenen Wahrscheinlichkeitswertes sowie eines zweiten, aus den Redundanzbits gewonnen Wahrscheinlichkeitswertes.
  • Bevorzugterweise werden diese Wahrscheinlichkeiten auf der Grundlage der Gesetze der Wahrscheinlichkeitsrechnung festgelegt.
  • Insbesondere kann diese erste (bzw. zweite), mit einem gegebenen Ausgang eines der erwähnten elementaren Dekodierungen assoziierte Wahrscheinlichkeit durch Ermittlung des Logarithmus der Summe der Wahrscheinlichkeitsexponentiellen der mit dem erwähnten Ausgang zusammenhängenden Zustände, von der man den Logarithmus der Summe der Wahrscheinlichkeitsexponentiellen abzieht, die am Eingang als Informationsbits (bzw. als Redundanzbits) der mit dem besagten Ausgang zusammenhängenden Zustände empfangen wurden, ermittelt werden.
  • Anders ausgedrückt werden somit nicht zugehörige Pfadwahrscheinlichkeiten ermittelt.
  • Nach einer besonderen Ausführung der Erfindung umfasst das Dekodierverfahren die folgenden Schritte:
    • – Berechnung der Zustandswahrscheinlichkeiten:
    • – „vor": Fi, auf der Grundlage der Informationsbits;
    • – „hinter": Bi, auf der Grundlage der Redundanzbits;
    • – Berechnung der globalen Zustandswahrscheinlichkeiten: Ei = Fi + Bi
    • – Feststellen der maximalen Zustandswahrscheinlichkeit Ei;
    • – Berechnung der folgenden Zustandswahrscheinlichkeiten: V'(xj) = 2Log[Σexp(Ei/xj → Ei)] – Log[Σexp(Ei + Fi/xj → Ei)](nach hinten ausgebreitete Werte, von wo die Informationsbits xj stammen) V'(rj) = 2Log[Σexp(Ei/rj → Ei)] – Log[Σexp(Ei + Bi/rj → Ei)](nach vorne ausgebreitete Werte, von wo die Redundanzbits rj stammen), wobei (Ei/xj → Ei) die Wahrscheinlichkeit des mit dem Ausgang xj verbundenen Zustand Ei darstellt;
    • – Abgabe dieser Werte an die nachfolgende elementare Dekodierung.
  • Dieser Berechnungsschritt der Wahrscheinlichkeitswerte kann möglicherweise vereinfacht werden, indem man in jeder der Summen der Exponentiellen nur den Zustand berücksichtigt, der die größte Wahrscheinlichkeit aufweist. Diese Vereinfachung ändert nicht in bedeutender Weise die Effektivität der Dekodierung.
  • Bevorzugterweise assoziiert man, wenn die Dekodierung ein vorgegebenes Konvergenzkriterium erreicht hat, eventuell in unabhängiger Weise für jedes Dekodiermodul, jedem Wahrscheinlichkeitsbit, jedem Bit eine nachträgliche Wahrscheinlichkeit nach Erreichen des Gleichgewichtes: V''(xj) = Log(Σexp(Ei/(xj = 0) → Ei) – Log(Σexp(Ei/(xj = 1) → Ei))
  • Nach einer vorteilhaften Eigenschaft der Erfindung ist das Dekodierverfahren auch als Kodierverfahren einsetzbar, wobei die Redundanzeingaben auf den Wert 0 gezwungen werden und die Informationseingaben den zu kodierenden Daten entsprechen.
  • In diesem Falle kann es in alternativer Weise einerseits zum Kodieren und andererseits zum Dekodieren von Daten eingesetzt werden, beispielsweise bei Anwendungen des Duplex-Typs.
  • Nach einem bevorzugten Aspekt der Erfindung setzen die Grunddekodiermodule Trellisgitter ein, welche Knoten aufweisen, in denen Addition-, Vergleichs- und/oder Auswahloperationen durchgeführt werden, die optimale Pfadmetriken liefern. In mindestens einem der Durchmischungsschritte werden Additionen, Multiplikationen und/oder Wichtungen von mindestens zwei dieser optimalen Pfadmetriken durchgeführt.
  • Ob es sich um die Kodierung und/oder die Dekodierung nach der Erfindung handelt, ist mindestens eine der elementaren Kodierungen und/oder mindestens eine der elementaren Dekodierungen und/oder mindestens eine der Permutation vorteilhafterweise programmierbar.
  • Die programmierbaren Elemente der Dekodierung können beispielsweise nach mindestens einer der nachfolgenden Vorgehensweisen programmiert werden:
    • – als Funktion eines von der Kodierung erzeugten, vorgegebenen Befehls;
    • – als Funktion einer mittels der Kodierung kodierten Referenzfolge;
    • – durch blindes Lernen, ausgehend von den empfangenen Daten.
  • Es sei darauf hingewiesen, dass die Effektivität der Dekodierung das Durchführen einer Dekodierung ohne vorherige Kenntnis der genau verwendeten Kodierung ermöglicht (blindes Lernen).
  • Nach einer vorteilhaften Ausführung der Erfindung stellt die erwähnte Kodierung eine kombinierte Quellen- und Kanalkodierung und die Dekodierung eine kombinierte Kanal- und Quellenkodierung sicher.
  • Vorteilhafterweise sichert diese Dekodierung auch zumindest teilweise den Ausgleich der Effekte des Sendekanals.
  • Nach der Erfindung ist es möglich, dass mindestens einige der Berechnungen mit Hilfe vorprogrammierter Tabellen erfolgen (aufgrund der Einfachheit eines jeden Kodier- und/oder Dekodiermoduls).
  • Nach einer vorteilhaften Ausführung der Erfindung werden mindestens einige der Berechnungen mit Hilfe analoger Komponenten eingesetzt. Der Algorithmus ist nämlich aufgrund seines Aufbaus stabil und somit den analogen Berechnungen gut angepasst. Dies kann insbesondere der Fall für Berechnungen von Exponentiellen und Logarithmen sein, für welche diese Komponenten gut geeignet sind. Diese Berechnungen können selbstverständlich auch digital erfolgen.
  • Nach einer vorteilhaften Ausführung der Erfindung setzen die Grundkodierungs- und -dekodierungsmodule Trellisgitter ein, wobei die Strukturen dieser Kodier- und Durchmischungsschritte für das Kodieren einerseits sowie andererseits der Kodier- und Durchmischungsschritte für das Dekodieren identisch sind.
  • In diesem Falle kann die gleiche Struktur zum Kodieren und zum Dekodieren genutzt werden (Duplex).
  • Die Erfindung betrifft noch Dekodiereinrichtungen, bei denen das oben beschriebene Dekodierverfahren sowie jede Sende- und/oder Empfangsvorrichtung von mindestens einem nach dem oben beschriebenen Verfahren kodierten und/oder dekodierten Signal zum Einsatz kommt.
  • Eine derartige Sende- und/oder Empfangsvorrichtung umfasst Sende- und/oder Empfangsmittel für Signale, wobei mindestens einige dieser Signale nach der Erfindung kodiert sind, sowie Mittel zum Verarbeiten der entsprechenden Kodierung und/oder Dekodierung.
  • Die Effektivität der Erfindung ermöglicht nämlich die Realisation von Sende- sowie von Empfangsvorrichtungen und somit einer kompletten Übertragungskette, die einfacher und/oder effektiver sind und sehr viel stärker gestörte Kanäle und/oder höhere Durchsätze als klassische Techniken annehmen können.
  • Demnach ist die Erfindung in einer Vielzahl von Gebieten einsetzbar. Sie ist insbesondere für eine der Techniken aus der folgenden Gruppe verwendbar:
    • – das Senden und/oder Ausbreiten von digitalen Signalen; (beispielsweise für unter dem Projekt ITU „IMT 2000" zusammengefasste Anwendungen);
    • – das Erkennen und/oder Verarbeiten gesprochener Wörter.
  • Weitere Eigenschaften werden deutlicher beim Lesen der nachfolgenden Beschreibung einer bevorzugten Ausführung, die lediglich als Beispiel zur Anschauung und ohne einschränkende Wirkung vorgestellt wird sowie beim Betrachten der beigefügten Zeichnungen, wobei:
  • 1 die Grenzen von McEliece und von Gilben-Varsharnov zeigt;
  • 2 das allgemeine Prinzip einer Kodiervorrichtung nach der Erfindung darstellt;
  • 3 ein besonderes Beispiel einer Kodiervorrichtung nach 2 darstellt;
  • 4 weitere Aspekte darstellt, die bei einer Kodiervorrichtung nach der Erfindung eingesetzt werden können;
  • 5A ein Kodierungsmodul zeigt, das eine Reed-Müller-Kodierung (8, 4, 4) einsetzt und 5B ein entsprechendes Dekodiermodul zeigt;
  • 6 die interne Grafik des Dekodiermoduls der 5B darstellt;
  • 7 ein Beispiel einer vorteilhaften Permutation zeigt, welche die Realisierung optimaler Kodierungen ermöglicht;
  • 8 ein Kodierungsbeispiel zeigt, bei dem die Permutation der 7 zum Einsatz kommt, einem Golay-Code entsprechend;
  • die 9, 10 und 11 Trellisgitter darstellen, die bei Kodierungen nach der Erfindung einsetzbar sind;
  • 12 ein Beispiel für einen Coder zeigt, bei dem ein Trellisgitter aus 9 zum Einsatz kommt;
  • die 13 und 14 ein Beispiel für die Konstruktion eines Hamming-Codes [8, 4, 4] zeigen (der als Grundmodul für die Konstruktion komplexerer Codes nach der Erfindung einsetzbar ist). 13 zeigt das im Diagramm der 14 eingesetzte Grundkodierungsmodul;
  • 15 eine schematische Darstellung einer Übertragungskette zeigt, bei der die Technik der Erfindung zum Einsatz kommt.
  • Die Technik der Erfindung ermöglicht somit die Konstruktion von quasi-optimalen Codes (die mit dem Ausdruck „cortex Codes" bezeichnet werden), denen eine spezifische, rauscharme Dekodierungsmethode vorteilhafterweise assoziiert wird.
  • Die erzielten Ergebnisse sind besser als die der „Turbo-Codes", weil der Minimalabstand d der derzeitigen Turbo-Codes relativ gering ist. So ist beispielsweise ein Block-Turbo-Code von Pyndiah, bei dem es sich um einen Produktcode (32,26,4) × (32,26,4) = (1024,676,16) handelt, ein Code der Länge n = 1024 für k = 676 Nutzbits und einem Minimalabstand d = 16. Mit diesem Block-Code kann man demnach höchstens t = [(d – 1)/2] = 7 Fehler mit Rauschen korrigieren.
  • Als weiteres Beispiel weist ein Block-Turbo-Code nach Berrou mit einer Länge von 192 Bits (s. Jung et al. [19]) und einer Leistung von 1/3, mit einer optimierten Verschachtelungsvorrichtung, einen auf 8 geschätzten Minimalabstand auf. Dagegen weist ein „cortex" Code (192,96) mit der Leistung 1/2 einen Minimalabstand in der Nähe von 30 auf. Die Gewichtsverteilung der cortex" Codes scheint ebenfalls in Richtung auf die binomische Verteilung zu tendieren, welche die der optimalen aleatorischen Kodierung ist (s. G. Battail [16]).
  • Das allgemeine Prinzip der Erfindung beruht auf dem Einsatz mehrerer Kodiermodule, die nach dem Prinzipdiagramm der 2 zusammengestellt sind. Diese Kodiermodule sind in mindestens zwei Ebenen 211 bis 21n gruppiert. Jede Kodierebene 21i umfasst mindestens zwei unanbhängig voneinander funktionierende Kodiermodule 22i,j auf.
  • Zwischen je zwei Kodierebenen 21i und 21i+1 ist eine Durchmischungsebene 231 bis 23n–1 eingefügt. Die aus einem jeden Kodiermodul der Ebene 22i kommenden Daten werden somit zwischen mehreren Kodiermodulen der Ebene 22i+1 verteilt.
  • Diese Verteilung erfolgt bevorzugterweise so, dass die bestmögliche Verteilung der aus einem Kodiermodul empfangenen Bits sichergestellt wird.
  • Bei der beschriebenen Ausführung ist der eingesetzte Code ein Code nach systematischen Blöcken. Das übertragene Bitpaket umfasst somit die aus dem Coder kommenden Nutzbits 24, oder Quellenbits, und Redundanzbits 25. Es kann selbstverständlich eine Kennzeichnung eingesetzt werden.
  • Nach einer in 3 dargestellten besonderen Ausführung der Erfindung sind die Kodiermodule 22i,j alle identisch und setzen einen Reed-Müller-Code (8, 4, 4) ein. Somit erhält man einen „cortex" Code (48, 24).
  • Die Matrix, welche den eingesetzten Reed-Müller-Code erzeugt, ist folgende:
  • Figure 00210001
  • Sind die vier einkommenden Nutzbits (x0, x1, x2, x3), so sind die vier Redundanzbits (x4, x5, x6, x7), wobei:
  • Figure 00210002
  • Jede Kodierebene 211 , 212 und 213 umfasst sechs Grundkodiermodule (8, 4, 4) 221,1 bis 223,6 . Die Redundanzbits der ersten Kodierebene 211 unterliegen einer Permutation Π1 (231). Diese Permutation kann als „Drahtdschungel" angesehen werden, mit der eine gute Korrekturkapazität erzielbar ist, wenn sie in angemessener Form gewählt wird (beispielsweise durch aufeinander folgende Versuche und Simulation).
  • Die zweite Kodierebene 212 führt eine neue Berechnung von 24 neuen Zwischen-Redundanzbits durch, die jeweils erneut durch die Durchmischungsebene Π2 (232 ) umgeordnet werden. Somit kann das Verfahren mehrere Kodierebenen zum Einsatz bringen.
  • Ein weiterer einsetzbarer Grundcode, der noch einfacher ist aber dennoch zu guten Ergebnissen führt, ist ein Code (4, 2), der beispielsweise (x0, x1) die Daten (c0, c1, c2, c3) = (x0, x1, x0, x0 + x1) assoziiert. Ein derartiger Grundcode ermöglicht in einfacher Weise die Ausführung von Dekodierzellen in Form vorgerechneter Tabellen, die beispielsweise in ROM-Speichern gespeichert werden.
  • Es können selbstverständlich alle berechneten Bits mit den Nutzbits übertragen werden. Der so erhaltene Code weist jedoch dann eine geringe Leistung auf. Man kann es vorziehen, nur die anfänglichen Nutzbits 24 und die Redundanzbits 25 der letzten Ebene zu senden.
  • Es wurde festgestellt, dass diese Codes sehr gute Minimalabstände sowie Wichtungsverteilungen mit „binomischen Verteilungsschwänzen" aufweisen, d. h., eine sehr geringe Zahl von Nachbarn, nach diesem Minimalabstand.
  • Es ist eine Vielzahl von Varianten und Anpassungen dieses Prinzips denkbar. 4 gibt eine schematische und fiktive Darstellung (d. h., vereinfacht zum Zweck der Veranschaulichung) von einigen unter ihnen. Sie können selbstverständlich unabhängig voneinander oder in jeder geeigneten Kombination eingesetzt werden.
  • Es wurde auf dieser 4 eine erste Kodierebene 41 dargestellt, die mehrere identische Coder C1 411 umfasst. Diesen Codern werden die Quellendaten 42 zugeführt. Sie können ebenfalls Zwischendaten 43 berücksichtigen, die von einer beliebigen Stellung in der Verarbeitungskette aus „erneut injiziert" wurden.
  • Die von diesen Kodiermodulen 411 kodierten Daten werden einer Permutationsmatrix 44 zugeführt, welche die Daten zwischen einer Vielzahl von Codern einer zweiten Kodierungsebene 45 verteilt. Im Gegensatz zur ersten Kodierungsebene 41 setzt diese zweite Kodierungsebene 45 mehrere verschiedene Coder C2, C3, C4, 452 bis 454 ein. Diese verschiedenen Codes können von jeder geeigneten Art sein. Sie werden beispielsweise aufgrund ihrer Kodiereffizienz und/oder der Einfachheit der entsprechenden Dekodierung gewählt.
  • Die nachfolgende Permutationsebene besteht aus mehreren Durchmischungsmodulen 461, 462, in denen die Verteilung der von der Kodierungsebene 45 empfangene Zwischendaten in variabler Weise zu den verschiedenen Kodiermodulen 471 der nachfolgenden Kodierebene 47 hin verteilt werden. Diese Durchmischung 461, 462 kann regelmäßig, aleatorisch oder kontrolliert sein, in Abhängigkeit einer Information 481.
  • Die Übertragungskette kann noch eine oder mehrere Kodierungen C6 49 umfassen (die beispielsweise eine Kodierung und/oder eine Verschlüsselung sicherstellen), die auf die Menge der Daten wirkt, welche sie aus den vorherigen Kodiermodulen empfängt.
  • Eine Kennzeichnung 410 kann an verschiedenen Stellen der Kette und an verschiedenen Daten erfolgen. Beim vorgestellten Beispiel erfolgt die Kennzeichnung 410 über eine Datenmenge, die folgendes umfasst:
    • – die Quellendaten 42;
    • – die aus der letzten Kodierungsebene 491 kommenden Daten;
    • – mindestens einige Zwischendaten 4101.
  • Allgemeiner können die Daten, ob es sich um Quellendaten 42 oder um Zwischendaten 4101 handelt, in sehr variierter Weise innerhalb der Verarbeitungskette verteilt werden.
  • Es wurden als Beispiel die verschiedenen Fälle dargestellt:
    • – es wird ein Zwischendatenelement 51 gleichzeitig zu zwei verschiedenen Kodierungsebenen 45 und 47 geleitet;
    • – ein Quellendatenelement 52 unterliegt derselben „Entkoppelung" zwischen einem Kodiermodul der ersten Kodierebene 41 und einem Kodiermodul der Kodierebene 45;
    • – ein Datenelement 53 wird gleichzeitig zwei (oder mehr) Kodiermodulen 453 und 454 der gleichen Kodierebene 45 zugeführt;
    • – ein aus der Permutationsebene 44 stammendes Datenelement 54 wird direkt der Kodierebene 47 (und nicht der nächstliegenden Ebene 45) zugeführt;
    • – ein Datenelement 55 wird selektiv zu einem ersten Kodiermodul 452 oder zu einem zweiten Kodiermodul 453 geleitet;
    • – ein von einem Kodiermodul 454 empfangenes Datenelement 56 entspricht in selektiver Weise zwei (oder mehreren) Zwischen-Datenelementen;
    • – es werden Quellendaten 57 in eine Kodierebene 45 eingeführt, die verschieden ist von der ersten Kodierebene 41 der Kette.
  • Es kann ebenfalls vorgesehen werden, dass die Quellendaten insgesamt oder teilweise einer ersten, aus mindestens zwei Kodierebenen und mindestens einer zwischengeschobenen Durchmischungsstufe gebildeten Kodiereinheit und, andererseits, nach der Durchmischung (beispielsweise eine Permutation), einer zweiten, ebenfalls aus mindestens zwei Kodierebenen und mindestens einer zwischengeschobenen Durchmischungsstufe gebildeten Kodiereinheit direkt zugeführt werden. So erhält man zwei Redundanzdatensätze (an denen eine Kennzeichnung selbstverständlich möglich ist).
  • Hierbei handelt es sich selbstverständlich nur um Beispiele, die angepasst und verallgemeinert werden können.
  • Andererseits können eine Vielzahl von Aspekten der Verarbeitung in Abhängigkeit vielfältiger Informationen der nachfolgenden Art variabel sein oder gesteuert werden:
    • – Informationen über den Sendekanal (Rauschpegel, Arten von Rauschen, usw.);
    • – Informationen bezüglich des Decoders (Verarbeitungskapazität, Speicherkapazität usw.)
    • – eine Information bezüglich der Art der gesendeten Daten (Struktur und/oder Eigenschaften der Datenblöcke, Informationsarten (Bilder, Ton, Daten usw.), geforderte Kodierungsqualität usw.);
    • – eine von einem Anwender erteilte Anweisung;
  • So kann das Steuermodul 48 folgendes steuern:
    • – die ausgeführten Permutationen oder Durchmischungen (481);
    • – die angewandten Kodierungen (Art der Codes und/oder Codeeigenschaften)(482);
    • – die Kennzeichnung (483).
  • Die Wahl der in den Kodiermodulen eingesetzten Codes berücksichtigt insbesondere die Effektivität und Einfachheit der Dekodierung. Klassischerweise wird ein Grundcode, für den der n – k Wert klein ist, gewählt. Die Wahl der Permutationen (oder der Durchmischungen) erfolgt in bevorzugter Weise derart, dass eine große Vielfalt zwischen den Boole'schen Funktionen eines jeden Ausgangs gewährleistet wird. Es wird genauer gesagt dafür gesorgt, dass im Endeffekt die Boole'sche Funktion eines jeden Ausgangs-Redundanzbits sich aus einer Menge von Informationsbits zusammensetzt, die so verschieden wie möglich von den anderen Ausgangs-Redundanzbits sein sollen.
  • Es können beispielsweise Grundmatrizen und -codes gesucht werden, mit denen sich ein bekannter Code wiederherstellen lässt, beispielsweise der Golay-Code (24, 12, 8). Insbesondere zu diesem Zweck kann man die Anwendung eines trivialen Grundcodes (der x0 zu x0 assoziiert) in Betracht ziehen, der beispielsweise mit dem bereits erwähnten Grundcode assoziiert ist.
  • Es wird nun eine Ausführung vorgestellt, die das Verwirklichen von Optimalcodes ermöglicht.
  • Dazu wird, zum Konstruieren von Codes nach der Erfindung, eine gleichzeitig sehr einfache und sehr effektive Permutation von Bits eingesetzt, die so geartet ist, dass die Bits mit geradem Index i = 2p für eine Permutationslänge k auf die Indizes j = p, p = 0, 1 ..., int[k/2] – 1 gesendet werden (wobei int[x] die Funktion „ganzer Teil von x" ist), während die Bits mit ungeradem Index i = 2p + 1 auf die Indizes j = p + int[k/2] gesendet werden.
  • Für eine Länge von k = 12, int[k/2] = 6, ist die Permutation folgende:
  • Figure 00260001
  • Diese Schreibweise bedeutet, dass das Bit mit Index 0 am Eingang der Permutation, zum Ausgang mit dem Index 0 gesendet wird, dass Eingang 1 zu Ausgang 2, Eingang 2 zu Ausgang 4 usw. gesendet werden. Das Prinzip dieser Permutation ist in 7 dargestellt.
  • Selbstverständlich ergeben identische Permutationen bis auf eine feststehende Verschiebung, das gleiche Ergebnis.
  • Verwendet man diese Permutation 82 für einen Code der Größe [n24, k = 12] wie in 8 dargestellt, deren Grundcode 81 der erweiterte Hamming-Code [8, 4] mit 3 Ebenen ist, so erhält man den Golay-Code [24, 12] mit dem Mindestabstand 8, der als optimal bekannt ist.
  • Für eine Umordnung dieser gleichen Art, der Länge k = 16 und mit 3 Ebenen, findet man den Code mit quadratischem Residuum QR [32, 16] und mit Minimalabstand 8 wieder, der ebenfalls als optimal bekannt ist. In gleicher Weise findet man für k = 36 Codes QR [72, 36, 12] mit 5 Ebenen wieder, wobei der letzte Code bereits als optimal angenommen wird.
  • Das gleiche Prinzip ermöglicht das Konstruieren aller Extremalcodes, unabhängig vom festgelegten Minimalabstand (genauer gesagt kann man mindestens einen entsprechenden Optimalcode konstruieren).
  • So wird ein Beispiel für die Konstruktion des Grundcodes 81 mit Bezug zu den 13 und 14 beschrieben. Man stellt somit fest, dass das Prinzip der Erfindung sich auf mehrere Ebenen verschachteln kann.
  • 13 zeigt den in jeder Ebene eingesetzten Elementarcode. Er ordnet dem Paar (x0, x0 ⊕ x1) das Paar (x0, x1) zu. Er wird in sehr einfacher Weise mit Hilfe eines einfachen Summationsglieds 131 konstruiert. Sein Aufbau auf Silizium ist somit von besonderem Interesse und lässt die Konstruktion eines komplexen Codes von der oben beschriebenen Art sehr einfach werden.
  • Der Hamming-Code [8, 4, 4] lässt sich, wie in 14 dargestellt, mit Hilfe von drei Kodierebenen 1411 bis 1413 sowie von zwei Permutationsebenen 1421 bis 1422 realisieren. Jede Kodierebene 1411 , bis 1413 umfasst zwei Kodiermodule 143, wie in 13 dargestellt.
  • Die Permutationsebenen 1421 bis 1422 führen jeweils dieselbe Permutation durch, wobei die mit 0, 1, 2, 3 indizierten Ausgänge jeweils den mit 1, 2, 3, 0 indizierten Eingängen der nachfolgenden Ebene zugeordnet werden. Die die Eingänge 3, 0, 1, 2 zuordnende symmetrische Verschiebung kann ebenfalls eingesetzt werden.
  • Die vorhergehenden Code-Typen werden „cortex-I Codes" genannt. Es wird nun eine andere, „Cortex-II Codes" genannte Ausführung beschrieben, bei denen die GrundCoder ein Trellisgitter einsetzen.
  • Man verwendet demnach immer eine Struktur, die aus einer Schicht oder aus mehreren Schichten (Ebenen) von Permutationen (oder Verschachtelungsvorrichtungen) verbundenen Grundzellen (oder -blöcken) gebildet wird. Die Grundblöcke sind nicht kleine Codes zur Fehlerkorrektur wie die Cortex-I, sondern kleine Trellisgitter, die eine Menge von Pfaden bilden, die bijektiv einer Menge von kleinen Codewörtern zugeordnet werden können. Ein sehr einfacher Trellisgitter-Block wird beispielsweise in 9 gezeigt.
  • Ein anderer einfacher Trellisgitter-Block, der auf der Grundlage eines Hamming-Codes [8, 4] konzipiert und angepasst wurde, ist in den 10 und 11 zu sehen. Es sei darauf hingewiesen, dass dieses Trellisgitter sich vom klassischen Trellisgitter durch die Umkehr der mit den zwei Ausgangszweigen 113 („01") und 114 („10") assoziierten Werte unterscheidet. Diese Änderung ist wesentlich, um einen Hamming-Code zu erzielen, und ist keineswegs selbstverständlich.
  • 12 zeigt die Architektur eines derartigen Coders (24, 12) mit drei Ebenen 121, 122 und 123. Im Falle des letzten Block-Trellisgitters sieht man, dass man ein klassisches Trellisgitter des erweiterten Hamming-Codes [8, 4] erhält, indem man die „Verspleißung" der 4 Eingangszweige 111 und der 4 Ausgangszweige 112 des Block-Trellisgitters realisiert, wie in 11 dargestellt.
  • Die Informationsbits xi und die Redundanzbits ri „etikettieren" die Zweige des Trellisgitters eines jeden Trellisgitters 124. Ein Zweigetikett wird mit xi/ri notiert.
  • Ein weiterer Unterschied zwischen den Cortex-I und Cortex-II Codern ist auch die ringförmige oder „als Schleife zurückgeführte" Struktur: die Ausgänge der letzten Ebene sind mit den Eingängen der ersten Ebene über eine gleich „Permutation" 125 verbunden (es kann ebenfalls andere Zurückführungen als Schleifen geben). Im Beispiel der 12 sind die Ebene 123 und die Ebene 121 durch eine und dieselbe Permutation (Π0 = Π3) verbunden.
  • Was die Codes Cortex-I und Cortex-II ebenfalls untereinander unterscheidet, ist die Struktur der „Permutation" 126 zwischen Ebenen, die mehrfach mehrere Male (λ1 (i)) denselben Ausgang einer Ebene 121 über mehrere Eingänge einer Ebene (oder mehrerer Ebenen) verteilt, die auf 122 folgen. Ferner empfängt jeder Eingang nicht nur einen einzigen Ausgang, sondern mehrere (λ2 (i)) Ausgänge.
  • Die Koeffizienten λ1 (i) und λ2 (i) stellen somit jeweils die Zahl der Eingangs- bzw. der Ausgangszweige der „Permutationen" dar, die man ebenfalls „Verteiler" nennen kann. Bei jedem dieser Konvergenzpunkte wird die Summe der Metriken der dort ankommenden Pfade gebildet.
  • Es wird zuerst der Dekodierungsalgorithmus beschrieben, weil diese Cortex-II Codes auf der Grundlage ihres Dekodieralgorithmus konzipiert werden, um eine minimal Dekodierungskomplexität zu erzielen. Die den gesendeten Bits xi/ri entsprechenden empfangenen Wahrscheinlichkeiten dienen im Block-Trellisgitter als Zweigmetrik. An den Knoten der Block-Trellisgitter werden Additionen-Vergleiche-Selektionen (ACS), beispielsweise wie in einem Algorithmus des Viterbi-Typs (rauscharm oder mit starkem Rauschen) durchgeführt. Es werden dann am Ausgang Permutation-Verteilungen durchgeführt, wobei die Addierung der Pfadmetriken auf einem Eingang konvergiert. Das Verfahren wird iterativ von Ebene zu Ebene im Gitter wiederholt, bis zur Konvergenz oder bis zu einer maximalen Berechnungszahl.
  • Die dekodierten Ausgänge sind die Etiketten der besten im Gitter überlebenden Pfade.
  • Die Kodierung erfolgt demnach auf der Grundlage derselben Struktur wie die Dekodierung, wobei die Bits xi auf ihren Sendewert bi gezwungen werden. Beim Senden werden nur die mit einem Etikett gekennzeichneten Zweige mit ihren Werten bi erhalten, während die anderen unnützen Zweige in diesem Falle „gelichtet" werden.
  • Die Kodierung besteht im Konvergieren, indem der Coder mehrere Male durchlaufen wird, im Zusammensetzen der Menge der möglichen Pfade und im Beibehalten eines einzigen Pfades mit maximaler Metrik, der durch jedes Block-Trellisgitter geht. Die Kodierung, die im Berechnen der Redundanzbits besteht, erfolgt demnach dank einer „speziellen" Dekodierung, für die es keine vorgegebene Kenntnis der Werte der Redundanzbits gibt.
  • Selbstverständlich führen identische Permutationen zum selben Ergebnis, bis auf eine feststehende Verschiebung.
  • Das gleiche Prinzip ermöglicht die Konstruktion aller Extremalcodes, unabhängig von der festgelegten Minimalentfernung (genauer gesagt, kann man mindestens einen entsprechenden Optimalcode konstruieren).
  • Nach dieser, „Cortex-II" genannten Technik, werden insbesondere die folgenden Eigenschaften genutzt:
    • – Verwendung einfacher „Block-Trellisgitter", demnach die Grundcodes ein Trelliscode mit vorgegebenem Verhältnis sind (es werden nach einer angepassten Technik, wie eine Viterbi-Dekodierung, Pfade berücksichtigt); mehrfache (λ1 (i)) Verteilung eines jeden Ausgangszweiges von den Block-Trellisgittern;
    • – Kombinierung mehrerer (λ2 (i)) Ausgänge aus dem vorhergehenden Schritt an den Eingängen des „Block-Trellisgitters", um die entsprechenden Metriken (reelle Zahlen) zu addieren;
    • – Ausführung der Kodierung, ausgehend von der Dekodierung (die Kodierung ist nicht im Voraus bekannt). Beim Kodieren wird die Dekodierung mit maximalem Vertrauen auf die zu sendenden Bits x; angewandt (da sie nach Definition bekannt sind) und mit null Vertrauen für die Redundanzbits ri;
    • – Zurückführen als Schleife der letzten Durchmischungsebene auf der ersten Ebene (um das Konvergieren von Kodierung und Dekodierung zu bewirken, wobei mehrere Male Coder bzw. Decoder durchlaufen werden).
  • Die Erfindung betrifft ebenfalls das Verfahren und die Dekodiervorrichtung der mit dem oben beschriebenen Kodierverfahren erzeugten Daten. Diese Dekodierung ist relativ einfach und von kostengünstiger Anwendung. Sie ist vorteilhafterweise iterativ, was ihre einfache Ausführung und Anpassung gewährleistet.
  • Es können die meisten konventionellen Dekodiertechniken angewandt werden. So kann man eine ausschöpfende Kodierung einsetzen, demnach alle möglichen Codewörter betrachtet werden und das beste nach einem vorgegebenen Auswahlkriterium gewählt wird. Man kann ebenfalls eine Dekodierung des Typs Viterbi verwenden, bei der ein Dekodierungs-Trellisgitter eingesetzt wird (beispielsweise nach den SOVA oder BJCR Algorithmen). Eine weitere möglicherweise einsetzbare Technik ist das Anwenden einer auf dem Chase-Algorithmus basierenden Dekodierung.
  • Vorteilhafterweise wird eine Dekodierung eingesetzt, deren Struktur der Struktur des vorher beschriebenen Coders entspricht. Anders gesagt, umfasst der Decoder mehrere Dekodierebenen, die jeweils mehrere Dekodiermodule aufweisen und durch Permutationsebenen getrennt sind.
  • Diese Struktur ist leicht in der Form einer Pipelinemaschine in VLSI einzusetzen.
  • 5B zeigt ein Dekodiermodul, das dem in 5A entsprechenden Kodiermodul entspricht (das eine Reed-Müller-Kodierung einsetzt (8, 4, 4)).
  • Dieses Dekodiermodul ist ein Decoder mit gewichteten Eingängen und mit gewichteten Ausgängen, das beispielsweise auf der Grundlage von bekannten Techniken, wie die SOVA-Technik, verwirklicht wurde. Dabei kommen Additionen und Subtraktionen zum Einsatz.
  • Jeder Draht (Ein- oder Ausgang) des Kodiermoduls der 5A, der einem Bit des Coders entspricht, ist in zwei Drähte im Dekodierungsmodul der 5B verdoppelt. Diese Drähte ermöglichen das Mitteilen bzw. das Übertragen der Wahrscheinlichkeitswerte von oberhalb bzw. datenstromaufwärts nach unterhalb bzw. datenstromabwärts des Decoders oder von unterhalb bzw. datenstromabwärts nach oberhalb bzw. datenstromaufwärts dieses Decoders.
  • Die Berechnungen im Decoder können nach einer besonderen Sequenz erfolgen, um sie zu minimieren. Es werden zuerst die über die Eingangsdrähte empfangenen Werte der Datenwahrscheinlichkeit und der Redundanzbits eingegeben. Der Wahrscheinlichkeitswert ist gleich dem Verhältnis log (Wahrscheinlichkeit (Bit = 0)/Wahrscheinlichkeit (Bit = 1)), der bzw. das im Falle eines Gauss'schen Kanals proportional zum empfangenen Wert ist, für den Fall einer (+1, –1) assoziierenden, zwei Zustände-Modulation (0, 1).
  • Die beim Initialisieren des Gitters nicht definierten Werte werden standardmäßig auf einen vorgegebenen Wert, vorteilhafterweise Null, eingestellt.
  • Bezugnehmend auf die Struktur des Coders der 2, die ähnlich zu der des Decoders ist, verläuft das Dekodieren folgendermaßen:
    • – es werden die zu verarbeitenden, empfangenen Wahrscheinlichkeitswerte in die Enddekodierebenen (erste und letzte Ebene) eingegeben;
    • – die neuen berechneten Wahrscheinlichkeitswerte werden in die benachbarten Ebenen eingegeben und so weiter, bis zur zentralen Ebene (wenn die Zahl der Dekodierebenen ungerade ist) oder zu den zentralen Ebenen (wenn die Zahl der Dekodierebenen gerade ist);
    • – das Verfahren folgt danach dem umgekehrten Weg, von den zentralen Ebenen zu den Endebenen, bis zur ersten und letzten Ebene.
  • Diese Schritte entsprechen einer Iteration der Verarbeitung. Sie werden wiederholt, entweder bis zu einer gegebenen Zahl von Wiederholungen oder bei Anhalten der Wiederholungen als Funktion eines Minimierungskriteriums der Summe der Absolutwerte oder der Quadratwurzel der Quadrate der Variationen zwischen der einkommenden und ausgehenden Wahrscheinlichkeit eines jeden Drahtes von einer Wiederholung zur nächsten, für mindestens eine Ebene. Das Anhalten der Wiederholungen kann getrennt auf der Höhe einer jeden Zelle erfolgen, um die Zahl der Berechnungen zu minimieren.
  • Es wird in der Tat bei fortschreitenden Wiederholungen eine Tendenz zur Stabilität der einkommenden und ausgehenden Wahrscheinlichkeiten eines einzelnen Bits in einem Dekodiermodul festgestellt.
  • Eine bevorzugte Ausführung der Dekodierung, die immer noch auf einer ähnlichen Struktur wie die des Decoders der 2 beruht, besteht in einem vollständigen Fortschreiten der Daten mit den durch jede Zelle (oder Modul) berechneten Pfadwahrscheinlichkeiten von oberhalb bzw. datenstromaufwärts des Coders (vom Anfang bis zum Ende, Ebene für Ebene) und dann nach unterhalb bzw. datenstromabwärts, nach einem Prinzip des Typs „forward-backward" („vorwärts-rückwärts").
  • Vorteilhafterweise beruht die Dekodierung demnach auf der Pfadwahrscheinlichkeit. Es wird nun ein Beispiel einer auf diesem Ansatz beruhenden Dekodierung vorgestellt.
  • Man berücksichtigt einen mit einem einzigen Grundcode konstruierten „Cortex-Code", den bereits erwähnten erweiterten Hamming-Code (8, 4, 4). Die entsprechenden Codewörter c lassen sich somit wie folgt schreiben:
    [c0 c1 c2 c3 c4 c5 c6 c7]
  • Sie werden auf der Grundlage von zu sendenden Informationsbits x: [x0 x1 x2 x3] durch das Vektor-Matrix-Produkt: c = x·G berechnet.
  • Der Grundcode wird demnach durch 16 Wörter gebildet, die als Zustände angesehen werden können. Der Decoder beruht teilweise auf der Grafik dieses Grundcoders und seiner Zustände, wie in 6 dargestellt.
  • Die Zustände E0 bis E15 stellen die Codewörter (x0, x1, x2, x3, r0, r1, r2, r3) dar, so dass:
    E0 = 0000 0000, E15 = 1111 1111,
    E1 = 0001 1110, E14 = 1110 0001,
    E2 = 0010 1101, E13 = 1101 0010,
    E3 = 0011 0011, E12 = 1100 1100,
    E4 = 0100 1011, E11 = 1011 0100
    E5 = 0101 0101, E10 = 1010 1010
    E6 = 0110 0110, E9 = 1001 1001
    E7 = 0111 1000, E8 = 1000 0111
  • Eine einfach zu behaltende Regel für diesen Grundcode lautet: wenn die Zahl der Informationsbits ungerade ist, dann ist das Redundanzwort gleich dem Komplement des Informationswortes. Andernfalls gleicht es dem Informationswort.
  • Nach einem anderen Ansatz wird der Grundcode durch ein Trellisgitter dargestellt, dessen Etiketten die Form (Informationsbit, Redundanzbit) aufweisen, wie nachfolgend besprochen. Man assoziiert dann dem Paar (Informationseingang, Redundanzeingang) das Paar (außenstehender Eingang, außenstehende Redundanz).
  • Es wird angenommen, dass der eingesetzte Coder derjenige der 3 ist, der 3 Kodierebenen umfasst, welche jeweils sechs Kodiermodule aufweisen.
  • Für diesen Hamming-Grundcode (8, 4) umfasst jede Ebene demnach 6 Grundcoder/GrundDecoder Zellen. Zwischen je zwei Kodier-/Dekodierebenen befindet sich eine mit Π bezeichnete Permutationsmatrix.
  • Die graphische Beschreibung des Decoders entspricht der des Coders, bis auf die verdoppelten Drähte (s. 5A und 5B) zum Ausbreiten der Wahrscheinlichkeiten der durch die inneren Zustände verlaufenden Pfade sowie der Zustände der Informations- und Redundanzbits, welche die Eingaben und die Ausgaben der GrundDecoder bilden.
  • Der Dekodiervorgang beginnt mit der Initialisierung der Vektoren der Wahrscheinlichkeitswerte der Informationsbits X = (x0, ..., x23) und der empfangenen Redundanzbits R = (r0, r1, ..., r23) (24 Eingänge und 24 Ausgänge je Ebene) über die Anfangs- und Endebene (Ebenen 1 und 3 im besprochenen Beispiel).
  • Jeder ElementarDecoder berechnet „vorwärts" („Forward" in Englisch) Wahrscheinlichkeiten Fi und „rückwärts" („Backwards" in Englisch) Wahrscheinlichkeiten Bi, und dann die Wahrscheinlichkeit Ei = Fi + Bi für jeden Zustand (hier i = 0, 1, ..., 15).
  • Die Wahrscheinlichkeiten Fi werden mit den Wahrscheinlichkeiten der Informationsbits berechnet, während die Wahrscheinlichkeiten Bi mit den Wahrscheinlichkeiten der Redundanzbits berechnet werden. So gleicht beispielsweise für den Zustand 0 = 0000 0000 die „vorwärts" Wahrscheinlichkeit F0 den Wahrscheinlichkeiten der von den Informationsbits kommenden Pfade, die den Zustand bilden: F0 = V(x0 = 0) + V(x1 = 0) + V(x2 = 0) + V(x3 = 0)
  • Die „rückwärts" Wahrscheinlichkeit wird in ähnlicher Weise ermittelt: B0 = V(r0 = 0) + V(r1 = 0) + V(r2 = 0) + V(r3 = 0)und dann die Summe: E0 = F0 + B0
  • Um die Schreibweise zu vereinfachen, wird Zustand Ei seiner Wahrscheinlichkeit gleichgesetzt.
  • Der Dekodierungsalgorithmus setzt somit Wechselwirkungen (Kodierungszwänge) ein, als Funktion der Eingänge V(xi) (Wahrscheinlichkeit des „vorwärts"-Pfades) und V(ri) (Wahrscheinlichkeit des „rückwärts"-Pfades), um die entsprechenden Ausgänge V'(xi) und V'(ri) zu liefern.
  • Die von vorne und die von hinten kommenden Pfade treffen sich (treten miteinander in Wechselwirkung) über einige Zustände einer GrundDecoderzelle. Diese Wechselwirkung erzeugt Information, die durch einen außenstehenden (oder „a posteriori") Wahrscheinlichkeitswert der durch diese Knoten der Dekodierzelle laufenden Pfade zum Ausdruck kommt. Der Teil der von derselben Seite kommenden Pfadwahrscheinlichkeit, in diesem Falle die rückwärtige Seite, wird jedoch nicht nach rückwärts fortgepflanzt, und der von der vorwärtigen Seite kommende Teil wird nicht nach vorwärts fortgepflanzt. Diese Wahrscheinlichkeit, die nach rückwärts (bzw. vorwärts) dieses Knotens fortgepflanzt wird, bildet die außenstehende Wahrscheinlichkeit des Teils des Vorwärtspfades (bzw. des Rückwärtspfades) dieses Knotens.
  • Die Wahrscheinlichkeitswerte der Redundanz- (bzw. Informations-) -Ausgänge werden durch Subtrahieren des Logarithmus der Summe Ei + Bi von den Exponentiellen der Zustandswahrscheinlichkeiten und ihrer mit dem Ausgang xj zusammenhängenden „rückwärts"-Zustandswahrscheinlichkeiten (bzw. „vorwärts" Ei + Fi) vom doppelten des Logarithmus der Summe der Exponentiellen der mit diesem Ausgang xj zusammenhängenden Zustandswahrscheinlichkeiten Ei berechnet.
  • In mehr synthetischer Weise werden die vorwärts (forward) fortgeplanzten Pfadwahrscheinlichkeiten ermittelt:
    Figure 00350001
    was in gekürzt werden kann zu: V'(xj) = 2Log[Σexp(Ei/xj → Ei)] – Log[Σexp(Ei + Fi/xj → Ei)]
  • In symmetrischer Weise werden die rückwärts (backward) fortgepflanzten Pfadwahrscheinlichkeiten folgendermaßen ausgedrückt: V'(rj) = 2Log[Σexp(Ei/rj → Ei)] – Log[Σexp(Ei + Bi/rj → Ei)]wobei Ei/xj → Ei die Wahrscheinlichkeit des mit dem Ausgangsknoten xj zusammenhängenden Zustand Ei darstellt.
  • Beispielsweise hat man, für die Knoten (x0 = 0) und (r0 = 0) der 6: V'(x0) = 2Log[eE0 + eE1 + eE2 + eE3 + eE4 + eE5 + eE6 + eE7] – Log[eE0+F0 + eE1+F1 + eE2+F2 + eE3+F3 + eE4+F4 + eE5+F5 + eE6+F6 + eE7+F7]weil der Knoten (x0 = 0) mit den inneren Zuständen des Coders verbunden ist, der die Nummer {0, 1, 2, 3, 4, 5, 6, 7} trägt, und V'(r0) = 2Log[eE0 + eE1 + eE2 + eE3 + eE4 + eE5 + eE6 + eE7] – Log[eE0+B0 + eE1+B1 + eE2+B2 + eE3+B3 + eE4+B4 + eE5+B5 + eE6+B6 + eE7+B7]weil der Knoten (r0 = 0) mit den inneren Zuständen des Coders verbunden ist, der die Nummer {0, 3, 5, 6, 8, 11, 13, 14} trägt.
  • Die obigen Berechnungen lassen sich vereinfachen, wenn man die folgenden Näherungen einsetzt, wenn Ek ≫ Ei für i ≠ k: V'(xj) = (Ek = Max(Ei/xj → Ei) – Fk V'(rj) = (Ek = Max(Ei/rj → Ei) – Bk
  • Diese Berechnungen lassen sich digital mit Hilfe eines Mikroprozessors durchführen, oder analog, beispielsweise mit bipolaren oder CMOS Transistoren, die durch Konstruktion die Logarithmus- und Exponentiellfunktionen realisieren (s. beispielsweise die Referenzen [20] und [21]).
  • Es werden dann diese berechneten Werte V' als neue Eingänge der Decoderzellen (oder Decodermodule) der benachbarten Zustände genommen, und es werden die Berechnungen für alle Zellen wiederholt, wobei die Wahrscheinlichkeiten der empfangenen Bits unverändert bleiben.
  • Es wird, unabhängig von der Anordnung (Englisch „scheduling") der Berechnungen, festgestellt, dass das Zellengitter des Decoders immer schnell auf ein globales Gleichgewicht hin konvergiert.
  • Aus diesem Gleichgewicht kann man die außenstehenden Wahrscheinlichkeiten V" eines jeden Bits extrahieren, durch Ausführung, auf der Grundlage der Wahrscheinlichkeiten der Gleichgewichtszustände der Zellen der Ebenen 1 und 3, nach Eintreten dieses Gleichgewichtes, der Berechnung: V''(xj) = Log(Σexp(Ei/(xj = 0) → Ei) – Log(Σexp(Ei/(xj = 1) → Ei))was durch Anwendung der oben angegebenen Näherung wie folgt gekürzt wird: V''(xj) = (Ek0 = Max(Ei/(xj = 0) → Ei)) – Ek0 = Max(Ei/(xj = 1) → Ei))
  • Die Komplexität der Berechnungen des Algorithmus liegt in der Größenordnung O(NLog(N)) und die Konvergenz ist schnell, aufgrund der Mischungseigenschaften der Grafik. Der Decoder der Erfindung gewährleistet eine sehr gute Fehlerkorrektur (insbesondere aufgrund der sich aus den Permutationsmatrizen ergebenden Streuung) und eine sehr gute Konvergenz (Dekodiergeschwindigkeit).
  • Es sind viele Varianten der Erfindung denkbar, sowie eine Vielzahl verschiedener Anwendungen, insbesondere auf dem Gebiet der Übertragung (Übertragung von Multimediasignalen, digitales Fernsehen, Funktelefonverbindungen usw.), beispielsweise im Rahmen des „IMT 2000" genannten Projektes ITU oder auch bei Erkennung, Kodierung und Verständnis von Sprache (beispielsweise im Rahmen der Manipulation von Markov-Feldern).
  • Wenn die Erfindung für das Senden oder Fortpflanzen von Signalen eingesetzt wird, so wird festgestellt, dass der Coder vorteilhafterweise in einer einzigen Operation die Quellen- und die Kanalkodierung durchführen kann. In diesem Falle führt der Decoder auch gleichzeitig eine Kanaldekodierung und eine Quellendekodierung durch. Vorteilhafterweise gewährleistet der Decoder ebenfalls (zumindest zum Teil) den Ausgleich des Sendekanals.
  • Die spezifische Struktur des Coders und des Decoders bietet ein hohes Maß an Flexibilität, wobei es insbesondere möglich ist, den verwendeten „Cortex Code" zu ändern, durch Ändern der Grundcodes und/oder der eingesetzten Permutationen. Es ist denkbar, eine Anpassung des Decoders zum eingesetzten Code als Funktion einer ihm übertragenen spezifischen Information oder aufgrund eines an einer ihm im Voraus bekannten Referenzfolge ausgeführten Lernvorgang oder auch durch blindes Lernen, direkt an den empfangenen Daten, zu erzielen.
  • Diese Flexibilität des Decoders bietet andererseits eine Toleranz gegenüber Pannen: beispielsweise verhindert das Versagen eines Dekodiermoduls nicht die Konvergenz der Dekodierung.
  • Andererseits kann ein Decoder ebenfalls zum Durchführen einer Kodierung verwendet werden, wobei die Redundanzeingänge dann zwangsweise auf 0 gesetzt werden und die Informationseingänge den zu kodierenden Daten entsprechen. Man sucht dann das Gleichgewicht, wie im Rahmen der Dekodierung.
  • In diesem Falle kann er alternativ einerseits zum Kodieren und andererseits zum Dekodieren von Daten eingesetzt werden, beispielsweise für Duplex-Typ-Anwendungen. Es reicht dann eine Einrichtung, um beide Funktionen, nämlich Kodierung und Dekodierung, sicherzustellen.
  • Die Erfindung betrifft nicht nur das Kodieren von Signalen, sondern auch deren Übertragung und Empfang.
  • 15 zeigt eine Übertragungskette, bei der die Erfindung genutzt wird.
  • Die Sendevorrichtung 151 umfasst Kodierungsmittel 1511 nach der Erfindung, die gegebenenfalls die Quellenkodierung und die Kanalkodierung sicherstellen können (es wurde bereits gezeigt, dass mehrere Operationen an den Signalen kumulierbar sind) sowie Sendemittel 1512, die einfacher sein können (insbesondere Leistung und/oder Filterung) und somit weniger kostspielig als die bei den bekannten Vorrichtungen eingesetzten, wobei ansonsten alles weitere gleich bleibt.
  • Ebenfalls weist die Empfangsvorrichtung 152 einfachere und somit preiswertere Empfangsmittel 1521 auf, wobei die Effektivität der Kodierung das Kompensieren der Sendefehler in den Dekodierungsmitteln 1522 erlaubt.
  • In dualer Weise lässt die Erfindung das Senden in stärker gestörten Kanälen 153 denkbar erscheinen, als die üblicherweise zulässigen, wodurch weitere Anwendungen und/oder höhere Sendedurchsätze denkbar werden.
  • ANHANG
    • [1] F. J. MacWilliams, N. J. A. Sloane, "The Theory of Error-Correcting Codes", North-Holland, 3. Ausgabe, 1981.
    • [2] S. B. Wicker, "Error Control Systems for Digital Communication and Storage", Prentice Hall, 1995.
    • [3] V. Press et al. "The Handbook of Coding Theory", Elsevier, 1998.
    • [4] C. E. Shannon, "A Mathematical Theory of Communication", Bell System Technical Journal, Seiten 379–423 und 623–656, Nr. 27, 1948.
    • [5] P. Elias, "Coding for Noisy Channels", IRE Conv. Record, Teil 4, Seiten 37– 47, 1955.
    • [6] A. J. Viterbi, "Error bounds for convolutional codes and an asymptotically optimum decoding algorithm", IEEE, IT13, Seiten 260–269, 1967.
    • [7] G. D. Forney Jr., "The Viterbi algorithm", Proceedings of the IEEE, Band 61, Seiten 268–276, März 1969.
    • [8] R. E. Bellman, „Dynamic programming", Princeton University Press, 1965.
    • [9] R. J. McEliece, „On the BCJR Trellis for linear block codes", IEEE, IT, Band 42, Seiten 1072–1092, Juli 1996.
    • [10] C. Berrou, A. Glavieux, P. Thitimajshima, "Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes", Proceedings of the ICC'93, Genf, Schweiz, Mai 1993, Seiten 1064–1070.
    • [11] L. R. Bahl, J. Cocke, F. Jelinek, J. Raviv: „Optimal decoding of linear codes for minimizing symbol error rate", IEEE, Band IT20, Seiten 284–287, März 1974.
    • [12] G. Battail, „Pondération des symboles décodés par l'algorithme de Viterbi", Annales des télécommunications, Band 31, Nr. 1–2, Seiten 31–38, Januar– Februar 1987.
    • [13] J. Hagenauer, P. Robertson, L. Papke, „Iterative turbo decoding of systematic convolutional codes with the MAP and the SOVA algorithms", in Proc.ITG'94, 1994.
    • [14] R. Pyndiah, A. Glavieux, A. Picart, S. Jacq, „Near optimum decoding of products codes", Proc. GLOBECOM'94, San Francisco, CA, Dez. 94, Seiten 339– 343.
    • [15] C. Berrou, A. Glavieux, „Near Optimum Error Correcting Coding and Decoding: turbo-Codes", IEEE, Band IT44, Nr. 10, Oktober 1996, Seiten 1261– 1271.
    • [16] G. Battail, „A conceptual framework for understanding turbo-codes", International Symposium on turbo-codes, ENST-Brest, September 1997, Seiten 55–62.
    • [17] C. Berrou, M. Jézéquel, „Frame-oriented convolutional turbo-codes", Electronics letters, 18. Juli 1996, Band 32, Nr. 15, Seiten 1362–1364.
    • [18] P. Adde, R. Pyndiah, C. Berrou, „Performance of hybrid turbo codes", Electronics letters, 21. November 1996, Band 32, Nr. 24, Seiten 2209–2210.
    • [19] P. Jung, M. Naßan „Performance evaluation of turbo codes for short frame transmission systems", Electronics letters, 20. Januar 1994, Band 30, Nr. 2, Seiten 111–113.
    • [20] Hagenauer, M. Winklhofer, „the analog decoder" ISIT'98, Seite 145, 21. August 1998, Cambridge, MA, USA.
    • [21] H. A. Loeliger, F. Lustenberger, M. Helfenstein, F. Tarkoy „Probability propagation and decoding in analog VLSI", ISIT'98, Seite 146, 21. August 1998, Cambridge, MA; USA.

Claims (58)

  1. Kodierverfahren zur Fehlerkorrektur, das einer Quellendatenreihe einen Block kodierter Daten zuordnet, der zu mindestens einem Empfänger gesendet werden soll, dadurch gekennzeichnet, dass es folgendes umfasst: – mindestens zwei Kodierschritte (21i), die mindestens zwei Grundkodierungsmodule (22i,j) umfassen, wobei jeder dieser Kodierschritte eine Reihe von zu verarbeitenden Daten empfängt, die zwischen den Grundkodierungsmodulen verteilt sind und eine Reihe von aus den Grundkodierungsmodulen stammenden verarbeiteten Daten liefern, und – mindestens einen Durchmischungsschritt (23i), wobei dieser Schritt zwischen zwei aufeinander folgenden Kodierungsschritten, nämlich einen ersten und einen zweiten Kodierungsschritt, eingefügt ist und die aus einem jeden Grundkodierungsmodul des ersten Kodierungsschrittes kommenden verarbeiteten Daten zwischen mindestens zwei Grundkodierungsmodulen des zweiten Schrittes verteilt.
  2. Kodierverfahren nach Anspruch 1, dadurch gekennzeichnet, dass der zu sendende Block kodierter Daten mindestens einige der Quellendaten und mindestens einige der aus dem ersten Kodierungsschritt stammenden verarbeiteten Daten umfasst.
  3. Kodierverfahren nach Anspruch 2, dadurch gekennzeichnet, dass der zu sendende Block kodierter Daten die Menge der erwähnten Quellendaten umfasst.
  4. Kodierverfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass der Block kodierter Daten aus mindestens zwei Kodierschritten stammende verarbeitete Daten umfasst.
  5. Kodierverfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass mindestens einer der Durchmischungsschritte mindestens eine Umordnungsmatrix umfasst.
  6. Kodierverfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass mindestens einer der Durchmischungsschritte verarbeitete Daten zu mindestens zwei verschiedenen Kodierschritten hin verteilt.
  7. Kodierverfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass mindestens eine der Quellendaten und/oder mindestens eine der zu verarbeitenden Daten mindestens einmal dupliziert (51) wird, um mindestens zwei zu verarbeitende Daten zu bilden.
  8. Kodierverfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass mindestens eines der Quellendaten direkt einem anderen Kodierschritt als dem ersten Kodierschnitt zugeführt wird (52, 57).
  9. Kodierverfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass mindestens zwei Kodiereinheiten zum Einsatz kommen, die jeweils mindestens zwei der erwähnten Kodierschritte und mindestens einen zwischen zwei aufeinander folgenden Kodierschritten eingefügten Durchmischungsschritt umfassen und dadurch, dass die Quellendaten jeweils den Kodiereinheiten nach unterschiedlichen Reihenfolgen zugeführt werden.
  10. Kodierverfahren nach Anspruch 9, dadurch gekennzeichnet, dass mindestens ein Durchmischungsschritt zum Einsatz kommt, der eine Änderung der Zuführreihenfolge der Quellendaten in einer der Kodierungseinheiten sicherstellt.
  11. Kodierverfahren nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, dass es über Mittel zum Kennzeichnen verfügt, die auf mindestens einigen der zu verarbeitenden Daten und/oder auf mindestens einigen der bereits verarbeiteten Daten angewandt werden.
  12. Kodierverfahren nach einem der Ansprüche 1 bis 11, dadurch gekennzeichnet, dass die Kodierungsmodule (22i,j ) einen Code einsetzen, dessen Redundanz eine Länge n – k kleiner oder gleich 12 ist.
  13. Kodierverfahren nach einem der Ansprüche 1 bis 12, dadurch gekennzeichnet, dass alle Kodierungsmodule (22i,j ) identisch sind.
  14. Kodierverfahren nach Anspruch 13, dadurch gekennzeichnet, dass die Kodierungsmodule (22i,j ) einen Reed-Müller-Code einsetzen.
  15. Kodierverfahren nach einem der Ansprüche 1 bis 14, dadurch gekennzeichnet, dass mindestens einer der Durchmischungsschritte eine „paritätisch" genannte Umordnung einsetzt, die am Ausgang einerseits die Eingaben mit geradem Index und andererseits die Eingaben mit ungeradem Index umgruppiert.
  16. Kodierverfahren nach Anspruch 15, dadurch gekennzeichnet, dass für eine Umordnungslänge k, die Umordnung die folgenden Operationen sicherstellt: – Eingaben mit geradem Index I = 2p werden an die Ausgänge j = p gesendet, mit p = 0, 1, ... Int[k/2] – 1; – Eingaben mit ungeradem Index I= 2p + 1 werden an die Ausgänge j = p + Int[k/2] gesendet, wobei Int[x] den ganzzahligen Teil von x darstellt.
  17. Kodierverfahren nach einem der Ansprüche 15 oder 16, dadurch gekennzeichnet, dass es Durchmischungsschritte zum Einsatz bringt, welche eine paritätische Umordnung einsetzen und, dass es folgendes umfasst: – drei Kodierschritte, die jeweils drei Grundkodierungsmodule umfassen; – drei Kodierschritte, die jeweils vier Grundkodierungsmodule umfassen; – fünf Kodierschritte, die jeweils neun Grundkodierungsmodule umfassen, wobei die Grundkodierungsmodule einen ausgedehnten Hamming-Code [8, 4] anwenden.
  18. Kodierverfahren nach einem der Ansprüche 1 bis 17, dadurch gekennzeichnet, dass die Grundkodierungsmodule mit Hilfe von elementaren Kodierungsblocks zusammengesetzt werden, welche dem Paar (x0, x0 ⊕ x1) das Paar (x0, x1) zuordnen.
  19. Kodierverfahren nach einem der Ansprüche 1 bis 12 oder 15 bis 18, dadurch gekennzeichnet, dass mindestens zwei der Kodierungsmodule (411, 452, 453, 454, 471) verschieden sind.
  20. Kodierverfahren nach einem der Ansprüche 1 bis 18, dadurch gekennzeichnet, dass mindestens einige der Kodierungsmodule (22i,j ) mindestens einen Code aus der Gruppe einsetzen, die folgendes umfasst: – einen Code (4, 2), der beispielsweise dem Paar (x0, x1) die Werte (x0, x1, x0, x0 + x1) zuordnet; – einen Trivialcode, der x0 x0 zuordnet.
  21. Kodierverfahren nach einem der Ansprüche 1 bis 20, dadurch gekennzeichnet, dass mindestens eines der Grundkodierungsmodule (22i,j ) ein Trellisgitter einsetzt, das eine Menge von Pfaden definiert, die bijektiv einer Menge von Codewörtern zugeordnet sind und optimale Pfadmetriken nach einem vorgegebenen Kriterium liefern.
  22. Kodierverfahren nach einem der Ansprüche 1 bis 21, dadurch gekennzeichnet, dass mindestens einer der Durchmischungsschritte mindestens eine Ausgabe liefert, die Funktion von mindestens zwei Eingaben des Durchmischungsschrittes ist.
  23. Kodierverfahren nach Anspruch 22, dadurch gekennzeichnet, dass die erwähnte Funktion mindestens eine Summe, eine Multiplikation und/oder eine Wichtung einsetzt.
  24. Kodierverfahren nach einem der Ansprüche 21 und 22 oder 23, dadurch gekennzeichnet, dass die Eingaben, die Gegenstand der erwähnten Funktion sind, Pfadmetriken sind.
  25. Kodierverfahren nach einem der Ansprüche 21 bis 24, dadurch gekennzeichnet, dass die Kodierungs- und Durchmischungsschritte mindestens zweimal wiederholt werden, wobei der erste und der letzte Durchmischungsschritt einen einzigen Schritt bilden.
  26. Kodierverfahren nach einem der Ansprüche 21 bis 25, dadurch gekennzeichnet, dass die Kodierungs- und Durchmischungsschritte identisch zu den beim Dekodieren eingesetzten Kodierungs- und Durchmischungsschritte sind, wobei die Initialisierung der Kodierung dadurch sichergestellt wird, dass die Redundanzbits auf den Wert 0 gezwungen werden und die Kodierung darin besteht, nur die maximale Wegemetrik eines jeden Kodierungsmoduls zu behalten.
  27. Kodierverfahren nach einem der Ansprüche 1 bis 26, dadurch gekennzeichnet, dass es einen Schritt (48) zum Steuern und/oder Einstellen von mindestens einem der folgenden Elemente umfasst: – Typ und/oder Eigenschaft der von mindestens einem der Grundkodierungsmodule eingesetzten Kodierung; – von mindestens einem der Durchmischungsschritte bewirkte Durchmischung; – auf mindestens einige der zu verarbeitenden Daten und/oder mindestens einige der verarbeiteten Daten angewendete Kennzeichnung; – Anzahl der Kodierungsschritte.
  28. Kodierverfahren nach Anspruch 27, dadurch gekennzeichnet, dass die Steuerung und/oder Einstellung systematisch über einen gegebenen Zeitraum und/oder als Funktion von mindestens einer Information wirkt, die für mindestens einen der Aspekte aus der Gruppe repräsentativ ist, die folgendes umfasst: – mindestens eine Eigenschaft des Sendekanals; – mindestens eine Eigenschaft des Empfängers; – mindestens eine Eigenschaft des Quellensignals.
  29. Kodierverfahren zur Fehlerkorrektur, von der Art, die einer Reihe von Quellendaten einen Block kodierter Daten zuordnen, die an mindestens einen Empfänger gesendet werden sollen, dadurch gekennzeichnet, dass es folgendes umfasst: – mindestens zwei Kodierebenen, die jeweils mindestens zwei Grundkodierungen einsetzen, wobei jede dieser Kodierungsebenen eine Reihe von zu verarbeitenden Daten empfängt, die zwischen den Grundkodierungen verteilt sind und eine den Grundkodierungen entsprechende Reihe verarbeiteter Daten liefert; – sowie mindestens eine Durchmischungsebene, wobei diese zwischen zwei aufeinander folgende Kodierungsebenen eingesetzt wird, nämlich eine erste Kodierungsebene und eine zweite Kodierungsebene, und die einer jeden Grundkodierung der ersten Kodierungsebene entsprechenden verarbeiteten Daten zwischen mindestens zwei Grundkodierungen der zweiten Ebene verteilt.
  30. Kodierverfahren eines Datenblocks, wobei die Daten nach einem Kodierverfahren nach einem der Ansprüche 1 bis 28 kodiert werden, dadurch gekennzeichnet, dass es eine zu der beim Kodieren eingesetzten symmetrischen Struktur einsetzt, wobei das Verfahren mindestens zwei Kodiermodule und mindestens einen zwischen zwei aufeinander folgende Dekodierungsschritte eingefügten Umordnungsschritt umfasst, wobei diese Schritte symmetrisch zu denen der entsprechenden Kodierung sind und, dadurch, dass jedes der Dekodierungsmodule die doppelte Menge von Ein- und Ausgängen wie das entsprechende Kodierungsmodul aufweist, um die Ausbreitung von Wahrscheinlichkeitswerten einerseits von oberhalb bzw. datenstromaufwärts nach unterhalb bzw. datenstromabwärts des Decoders und andererseits von unterhalb bzw. datenstromabwärts nach oberhalb bzw. datenstromaufwärts dieses Decoders sicherzustellen.
  31. Dekodierverfahren nach Anspruch 30, dadurch gekennzeichnet, dass es iterativ ist.
  32. Dekodierverfahren nach einem der Ansprüche 30 oder 31, dadurch gekennzeichnet, dass es mindestens eine Iteration der folgenden Operationen einsetzt: – vollständige Ausbreitung nach oberhalb bzw. datenstromaufwärts des Decoders der erwähnten Wahrscheinlichkeitswerte, die einen ersten Satz von geschätzten Werten liefert; – vollständige Ausbreitung nach unterhalb bzw. datenstromabwärts der Decoders der erwähnten Wahrscheinlichkeitswerte, die einen zweiten Satz von geschätzten Werten liefert.
  33. Dekodierverfahren nach Anspruch 32, dadurch gekennzeichnet, dass es die Summe der geschätzten Werte aus einem jeden Satz von geschätzten Werten bildet, wobei die nachfolgende Iteration über das Ergebnis dieser Summe erfolgt.
  34. Dekodierverfahren nach Anspruch 33, dadurch gekennzeichnet, dass es für jeden Ausgang eines der Dekodierungsmodule eine boolesche Funktion berücksichtigt, die mindestens zwei Eingänge des entsprechenden Kodierungsmoduls voraussetzt und dadurch, dass ein Dekodierungszwang erfordert, dass ein unterhalb bzw. datenstromabwärts einer gegebenen Dekodierungsebene liegender Ausgang dem entsprechenden oberhalb bzw. datenstromaufwärts der nachfolgenden Dekodierungsebene liegenden Ausgang gleicht.
  35. Dekodierverfahren nach einem der Ansprüche 31 bis 34, dadurch gekennzeichnet, dass es Pfadwahrscheinlichkeiten definiert.
  36. Dekodierverfahren nach Anspruch 35, dadurch gekennzeichnet, dass jede der elementaren Dekodierungen bei jeder Iteration eine Zustandswahrscheinlichkeit eines jeden der möglichen Zustände der entsprechenden Kodierung berechnet und den Zustand höchster Wahrscheinlichkeit auswählt.
  37. Dekodierverfahren nach Anspruch 36, dadurch gekennzeichnet, dass die Zustandswahrscheinlichkeit der Summe eines ersten, aus den Informationsbits sich ergebenden Wahrscheinlichkeitswertes und eines zweiten, aus den Redundanzbits sich ergebenden Wahrscheinlichkeitswertes entspricht.
  38. Dekodierverfahren nach einem der Ansprüche 35 bis 37, dadurch gekennzeichnet, dass die erwähnten Wahrscheinlichkeiten sich aus Wahrscheinlichkeitsgesetzen ergeben.
  39. Dekodierverfahren nach den Ansprüchen 37 und 38, dadurch gekennzeichnet, dass die erste (bzw. zweite) einem gegebenen Ausgang einer der elementaren Dekodierungen zugeordnete Wahrscheinlichkeit dadurch erhalten wird, dass der Logarithmus der Summe der Wahrscheinlichkeitsexponentiale der diesem Ausgang zugeordneten Zustände gebildet wird, und von diesem der Logarithmus der Summe der am Eingang als Informationsbits (bzw. Redundanzbits) der dem besagten Ausgang zugeordneten Zustände empfangenen Wahrscheinlichkeitsexponentiale abgezogen wird.
  40. Dekodierverfahren nach Anspruch 39, dadurch gekennzeichnet, dass es die folgenden Schritte umfasst: – Berechnung der Zustandswahrscheinlichkeiten: – „vor": Fi, auf der Grundlage der Informationsbits; – „hinter": Bi, auf der Grundlage der Redundanzbits; – Berechnung der globalen Zustandswahrscheinlichkeiten: Ei = Fi + Bi; – Feststellen der maximalen Zustandswahrscheinlichkeit Ei; – Berechnung der folgenden Zustandswahrscheinlichkeiten: V'(xj) = 2Log[Σexp(Ei/xj → Ei)] – Log[Σexp(Ei + Fi/xj → Ei)] (nach hinten ausgebreitete Werte, von wo die Informationsbits xj stammen) V'(rj) = 2Log[Σexp(Ei/rj → Ei)] – Log[Σexp(Ei + Bi/rj → Ei)](nach vorne ausgebreitete Werte, von wo die Redundanzbits rj stammen) wobei (Ei/xj Ei) die Wahrscheinlichkeit des mit dem Ausgang xj verbundenen Zustand Ei darstellt.
  41. Dekodierverfahren nach Anspruch 40, dadurch gekennzeichnet, dass der Schritt zum Berechnen der Wahrscheinlichkeitswerte dadurch vereinfacht wird, dass in jeder der Summen von Exponentialen nur der wahrscheinlichste Zustand berücksichtigt wird.
  42. Dekodierverfahren nach einem der Ansprüche 39 bis 41, dadurch gekennzeichnet, dass wenn das Dekodieren ein vorgegebenes Konvergenzkriterium erreicht hat, eventuell in unabhängiger Weise für jedes Kodierungsmodul, jedem Bit eine nachträgliche Wahrscheinlichkeit zugeordnet wird: V''(xj) = Log[Σexp((xj = 0) → Ei)] – Log[Σexp(Ei/(xj = 1) → Ei)]
  43. Dekodierverfahren nach einem der Ansprüche 31 bis 42, dadurch gekennzeichnet, dass es auch als Kodierverfahren einsetzbar ist, wobei die Redundanzeingaben auf den Wert 0 gezwungen werden und die Informationseingaben den zu kodierenden Daten entsprechen.
  44. Dekodierverfahren nach Anspruch 43, dadurch gekennzeichnet, dass es alternativ die selbe Struktur einerseits zum Kodieren und andererseits zum Dekodieren der Daten verwendet.
  45. Dekodierverfahren nach einem der Ansprüche 35 bis 44, dadurch gekennzeichnet, dass die Grunddekodiermodule Trellisgitter einsetzen, welche Knoten aufweisen, in denen Additions-, Vergleichs- und/oder Auswahloperationen durchgeführt werden, die optimale Pfadmetriken liefern und dadurch, dass in mindestens einem der Durchmischungsschritte Additionen, Multiplikationen und/oder Wichtungen von mindestens zwei dieser optimalen Pfadmetriken erfolgen.
  46. Dekodierverfahren nach Anspruch 45, dadurch gekennzeichnet, dass es das symmetrische Dekodieren der nach der vorhergehenden Kodierung gemäß Anspruch 25 kodierten Daten gewährleistet.
  47. Zum Kodieren und Dekodieren von Daten einsetzbares Datenverarbeitungsverfahren, dadurch gekennzeichnet, dass es dieselben Mittel für das selektive Kodieren und Dekodieren steuert und dass es folgendes umfasst: – mindestens zwei Kodier-/Dekodierschritte (21j ), die jeweils mindestens zwei Grundkodierungsmodule (22i,j ) umfassen, wobei jeder dieser Kodier-/Dekodierschritte eine Reihe von zu verarbeitenden Daten empfängt, die zwischen den Grundkodierungsmodulen verteilt sind und eine Reihe von aus jedem der Grundkodierungsmodule kommenden verarbeiteten Daten liefern, und – mindestens einen Durchmischungsschritt (23i ), wobei dieser Durchmischungsschritt zwischen zwei aufeinander folgende Kodier-/Dekodierschritte eingefügt wird, nämlich einen ersten Kodier-/Dekodierschritt und einen zweiten Kodier-/Dekodierschritt, und wobei die aus einem jeden Grundkodier-/Grunddekodiermodul des ersten Kodierungsschrittes stammende verarbeiteten Daten zwischen mindestens zwei Grundkodiermodulen des zweiten Schrittes verteilt werden.
  48. Datenverarbeitungsverfahren nach Anspruch 47, dadurch gekennzeichnet, dass mindestens eines der elementaren Kodierverfahren und/oder mindestens eines der elementaren Dekodierverfahren und/oder mindestens einer der Durchmischungsschritte programmierbar sind.
  49. Datenverarbeitungsverfahren nach Anspruch 48, dadurch gekennzeichnet, dass die programmierbaren Elemente aus der Dekodierung nach mindestens einer der nachfolgenden Vorgehensweisen programmiert werden: – als Funktion eines von der Kodierung erzeugten, vorgegebenen Befehls; – als Funktion einer mittels der Kodierung kodierten Referenzfolge; – durch blindes Lernen, ausgehend von den empfangenen Daten.
  50. Datenverarbeitungsverfahren nach einem der Ansprüche 47 bis 49, dadurch gekennzeichnet, dass die Kodierung eine kombinierte Quellen- und Kanalkodierung sicherstellt und, dass die Dekodierung eine kombinierte Kanal- und Quellenkodierung sicherstellt.
  51. Datenverarbeitungsverfahren nach Anspruch 50, dadurch gekennzeichnet, dass die Dekodierung auch zumindest teilweise die Effekte des Sendekanals ausgleicht.
  52. Datenverarbeitungsverfahren nach einem der Ansprüche 47 bis 51, dadurch gekennzeichnet, dass mindestens einige der Berechnungen mit Hilfe vorprogrammierter Tabellen erfolgen.
  53. Datenverarbeitungsverfahren nach einem der Ansprüche 47 bis 52, dadurch gekennzeichnet, dass mindestens einige der Berechnungen mit Hilfe analoger Komponenten eingesetzt werden.
  54. Datenverarbeitungsverfahren nach einem der Ansprüche 47 bis 53, dadurch gekennzeichnet, dass die Grundkodierungs- und -dekodierungsmodule ein Gitter einsetzen und, dass die Strukturen dieser Kodier- und Durchmischungsschritte für das Kodieren einerseits sowie andererseits der Kodier- und Durchmischungsschritte für das Dekodieren identisch sind.
  55. Datenverarbeitungsverfahren nach Anspruch 54, dadurch gekennzeichnet, dass die gleiche Struktur zum Kodieren und zum Dekodieren genutzt wird.
  56. Datenverarbeitungsverfahren nach einem der Ansprüche 54 oder 55, dadurch gekennzeichnet, dass mindestens eines der Gitter von der in 11 dargestellten Art ist, deren Ein- und Ausgangskennzeichen „01" und „10" invertiert sind.
  57. Dekodierverfahren eines kodierten Datenblocks, wobei das kodierte Signal mindestens einige der Quellendaten und mindestens einige der verarbeiteten Daten umfasst, die von der letzten Kodierungsebene geliefert werden, dadurch gekennzeichnet, dass es folgendes umfasst: – mindestens zwei Kodierebenen, die jeweils mindestens zwei Grunddekodierungen einsetzen, wobei jede der Dekodierebenen eine Reihe von zwischen den Grunddekodierungen verteilten, zu verarbeitenden Daten empfängt und eine Reihe von den Grunddekodierungen entsprechenden verarbeiteten Daten liefert – und mindestens eine Durchmischungsebene, wobei diese zwischen zwei aufeinander folgende Dekodierebenen eingefügt wird, nämlich eine erste Dekodierebene und eine zweite Dekodierebene, und wobei die einer jeden Grunddekodierung der ersten Dekodierungsebene entsprechenden verarbeiteten Daten zwischen mindestens zwei Grunddekodierungen der zweiten Ebene verteilt werden.
  58. Anwendung des Kodier- und/oder Dekodierverfahrens nach einem der Ansprüche 1 bis 57 auf mindestens eine der Techniken aus der folgenden Gruppe: – das Senden und/oder Ausbreiten von digitalen Signalen; – das Erkennen und/oder Verarbeiten gesprochener Wörter.
DE69914767T 1998-07-31 1999-08-02 Verfahren und vorrichtung zur fehlerkorrektur- codierung und decodierung Expired - Lifetime DE69914767T2 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
FR9810089 1998-07-31
FR9810089A FR2782423A1 (fr) 1998-07-31 1998-07-31 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondant
FR9810316 1998-08-07
FR9810316A FR2782424A1 (fr) 1998-07-31 1998-08-07 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondant
FR9816788A FR2782425B1 (fr) 1998-07-31 1998-12-31 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondant
FR9816788 1998-12-31
PCT/FR1999/001912 WO2000008766A1 (fr) 1998-07-31 1999-08-02 Procede et dispositif de codage correcteur d'erreurs et procede et dispositif de decodage correspondants

Publications (2)

Publication Number Publication Date
DE69914767D1 DE69914767D1 (de) 2004-03-18
DE69914767T2 true DE69914767T2 (de) 2004-12-02

Family

ID=27253459

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69914767T Expired - Lifetime DE69914767T2 (de) 1998-07-31 1999-08-02 Verfahren und vorrichtung zur fehlerkorrektur- codierung und decodierung

Country Status (6)

Country Link
US (1) US6745362B1 (de)
EP (1) EP1101288B1 (de)
AU (1) AU5168499A (de)
DE (1) DE69914767T2 (de)
FR (1) FR2782425B1 (de)
WO (1) WO2000008766A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107505B2 (en) * 2001-03-27 2006-09-12 Comtech Aha Corporation Concatenated turbo product codes for high performance satellite and terrestrial communications
US7596570B1 (en) 2003-11-04 2009-09-29 Emigh Aaron T Data sharing
FR2880483A1 (fr) * 2004-12-31 2006-07-07 France Telecom Procede et dispositif d'entrelacement
US20060259603A1 (en) * 2005-05-16 2006-11-16 Shrader Anthony G User based - workflow and business process management
US7856579B2 (en) * 2006-04-28 2010-12-21 Industrial Technology Research Institute Network for permutation or de-permutation utilized by channel coding algorithm
US7797615B2 (en) * 2005-07-07 2010-09-14 Acer Incorporated Utilizing variable-length inputs in an inter-sequence permutation turbo code system
US20070011557A1 (en) * 2005-07-07 2007-01-11 Highdimension Ltd. Inter-sequence permutation turbo code system and operation methods thereof
US7734982B2 (en) * 2006-11-30 2010-06-08 Motorola, Inc. Method and apparatus for indicating uncorrectable errors to a target
US8060798B2 (en) 2007-07-19 2011-11-15 Micron Technology, Inc. Refresh of non-volatile memory cells based on fatigue conditions
FR2941829B1 (fr) 2009-01-30 2012-06-01 Get Enst Bretagne Groupe Des Ecoles Des Telecomm Ecole Nationale Superieure Des Telecomm Bretagne Procede de codage de donnees a au moins deux etapes d'encodage a et au moins une etape de permutation, dispositif de codage, programme d'ordinateur et signal correspondants.
FR2941828A1 (fr) * 2009-01-30 2010-08-06 France Telecom Procede et dispositif de codage correcteur d'erreurs flexible et performant et programme d'ordinateur correspondant.
DE102013001740B3 (de) * 2013-02-01 2014-01-09 Eberhard Karls Universität Tübingen Anordnung und Verfahren zur Decodierung eines Datenworts mit Hilfe eines Reed-Muller-Codes
FR3022651A1 (fr) 2014-06-24 2015-12-25 Orange Procedes et dispositifs de codage et de decodage correcteur d'erreurs, et programme d'ordinateur correspondant.
CN106059596B (zh) * 2016-06-24 2019-05-14 中山大学 以二元bch码为成份码的分组马尔可夫叠加编码方法及其译码方法
RU2711035C1 (ru) * 2019-05-08 2020-01-14 федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" Модифицированное устройство коррекции ошибок с учетом сигнала стирания
CN110350924B (zh) * 2019-08-06 2022-08-30 江西理工大学 一种(72,36,14)线性准循环码的构造

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4933956A (en) * 1983-04-14 1990-06-12 Codex Corporation Simplified decoding of lattices and codes
US5218619A (en) * 1990-12-17 1993-06-08 Ericsson Ge Mobile Communications Holding, Inc. CDMA subtractive demodulation
US5594742A (en) * 1990-12-20 1997-01-14 Communications Satellite Corporation Bidirectional trellis coding
US5293434A (en) * 1991-04-10 1994-03-08 International Business Machines Corporation Technique for use in a transform coder for imparting robustness to compressed image data through use of global block transformations
US5357454A (en) * 1991-07-25 1994-10-18 Ericsson Ge Mobile Communications Holding, Inc. Fast walsh transform processor
US5465269A (en) * 1994-02-02 1995-11-07 Motorola, Inc. Method and apparatus for encoding and decoding a supplementary signal
US5771244A (en) * 1994-03-09 1998-06-23 University Of Southern California Universal Reed-Solomon coder/encoder
US5784293A (en) * 1994-11-03 1998-07-21 Motorola, Inc. Apparatus and method for determining transmitted modulation symbols
US5757767A (en) * 1995-04-18 1998-05-26 Qualcomm Incorporated Method and apparatus for joint transmission of multiple data signals in spread spectrum communication systems
US5881073A (en) * 1996-09-20 1999-03-09 Ericsson Inc. Convolutional decoding with the ending state decided by CRC bits placed inside multiple coding bursts
US6308295B1 (en) * 1996-10-08 2001-10-23 Arizona Board Of Regents Parallel spectral reed-solomon encoder and decoder

Also Published As

Publication number Publication date
US6745362B1 (en) 2004-06-01
FR2782425A1 (fr) 2000-02-18
EP1101288B1 (de) 2004-02-11
AU5168499A (en) 2000-02-28
FR2782425B1 (fr) 2000-10-13
DE69914767D1 (de) 2004-03-18
EP1101288A1 (de) 2001-05-23
WO2000008766A1 (fr) 2000-02-17

Similar Documents

Publication Publication Date Title
DE69914767T2 (de) Verfahren und vorrichtung zur fehlerkorrektur- codierung und decodierung
DE60122200T2 (de) Stopkriterien für interative dekodierung
DE3910739C2 (de)
DE60219435T2 (de) Verfahren und system zum iterativen kodieren/dekodieren eines stroms von durch raumzeitkodierte kombinierungen digitaler daten, für mehrfaches senden und empfangen
DE69722331T2 (de) Informationsbits-Übertragungsverfahren mit Fehlerkorrektur-Kodierung, Kodier- und Dekodiervorrichtung dafür
DE60214061T2 (de) Turbo-Empfänger und das entsprechende Verfahren für ein MIMO System
DE69736881T2 (de) Parallel verketteter tail-biting-faltungskode und dekoder dafür
DE60033320T2 (de) Verkettete raum-zeit-kodierung
DE602005000595T2 (de) Iterative Demodulation und Decodierung von multi-level Turbo oder LDPC (low-density parity-check) codierten Modulationssignalen
DE69836120T2 (de) Verfahren zur Kodierung und Modulation, sowie Einrichtung zur dessen Ausführung
DE60313832T2 (de) Verfahren und System für die Generierung von Low Density Parity Check (LDPC) Codes
DE69936908T2 (de) Iterative dekodierung von produktkoden
DE60033198T2 (de) Verfahren und vorrichtung für turbo raum-zeit trelliskodierung
DE602004001548T2 (de) Verfahren und Vorrichtung zur Decodierung eines Low Density Partity Check (LDPC) Codes in einem Kommunikationssystem
DE102007035210A1 (de) Verfahren und Vorrichtung zur LDPC-Dekodierung mit gemeinsamer Hardwarenutzung und serieller Summe-Produkt-Architektur
DE60003071T2 (de) Verfahren zur dekodierung von mit einem entropie-code kodierten daten, entsprechende dekodierungsvorrichtung und übertragungssystem
EP1374467B1 (de) Verfahren zum betreiben eines digitalen mobilfunknetzes mit raum-zeit-block-codes
DE60111974T2 (de) Abbruchkriterium für einen Turbodekoder
DE69932001T2 (de) Faltungsdekodierung , Durchführungsverfahren und Anordnung
EP1269633B1 (de) Optimierter turbo-decodierer
DE69908629T2 (de) Hybrid verschachteler für turbo-kodierer
DE60118716T2 (de) Log-MAP Dekodierung
DE19725275C2 (de) Verfahren zur Decodierung von block- oder faltungscodierten digitalen Signalen
EP0843444B1 (de) Digitales Übertragungssystem mit trellisbasiertem, zustandsreduziertem Schätzverfahren
EP1249074A1 (de) Verfahren zur decodierung eines datensignals

Legal Events

Date Code Title Description
8364 No opposition during term of opposition