DE69532949T2 - Verfahren und gerät zur dekoderoptimierung - Google Patents

Verfahren und gerät zur dekoderoptimierung Download PDF

Info

Publication number
DE69532949T2
DE69532949T2 DE69532949T DE69532949T DE69532949T2 DE 69532949 T2 DE69532949 T2 DE 69532949T2 DE 69532949 T DE69532949 T DE 69532949T DE 69532949 T DE69532949 T DE 69532949T DE 69532949 T2 DE69532949 T2 DE 69532949T2
Authority
DE
Germany
Prior art keywords
bits
bit
message
candidate
error detection
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
DE69532949T
Other languages
English (en)
Other versions
DE69532949D1 (de
Inventor
W. Paul DENT
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.)
Ericsson Inc
Original Assignee
Ericsson Inc
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
Application filed by Ericsson Inc filed Critical Ericsson Inc
Publication of DE69532949D1 publication Critical patent/DE69532949D1/de
Application granted granted Critical
Publication of DE69532949T2 publication Critical patent/DE69532949T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block 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
    • 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/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Semiconductor Lasers (AREA)

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft ein Decodiersystem zur Verwendung bei einer Kommunikationen von Signalen und insbesondere ein Dekodiersystem zum Decodieren von Datennachrichten, die unter Verwendung von sowohl einer Fehlererfassungscodierung als auch einer Fehlerkorrekturcodierung übertragen werden.
  • Bei einer Datenübertragung über fehlbehaftete Kommunikationskanäle, wie beispielsweise Funkkanäle, kann eine Fehlererfassungskodierung und/oder Fehlerkorrekturcodierung verwendet werden, um die Fehler in den übertragenen Daten zu reduzieren. Die übertragenen Daten sind oft digitale Information, was am einfachsten im Hinblick auf Nachrichten vorzustellen ist, die aus binären Informationsbits bestehen, wobei jedes Bit entweder eine EINS oder NULL sein kann. Eine beliebige gegebene Nachricht ist dann lediglich eine Abfolge mit einer Anzahl von EINSEN und einer Anzahl von zwischengelagerten NULLEN. Es versteht sich, dass eine beliebige Abfolge von L-Bits eine von 2L eindeutigen Nachrichten darstellen kann.
  • Eine Fehlererfassungscodierung und Fehlerkorrekturcodierung für digitale Information stellen unterschiedlichen Arten dar, und sind beide wichtig. Ein einfaches Beispiel für eine Fehlererfassungskodierung ist ein Hinzufügen einer identischen Kopie einer Nachricht zu dieser Nachricht, und ein Übertragen beider und Durchführen eines Bit-um-Bit Vergleichs der empfangenen Nachricht mit der empfangenen Kopie. Für jede Bitposition ist eine Nichtübereinstimmung zwischen der Nachrichten und der Kopie ein Hinweis auf einen Übertragungsfehler. Die Gesamtanzahl von Nichtübereinstimmungen für eine Nachricht ist ein quantitatives Maß für die Zuverlässigkeit der Datenübertragung. Es versteht sich, dass die Gesamtanzahl von Nichtübereinstimmungen ein ungenaues Maß einer Zuverlässigkeit ist, da an der gleichen Bitposition gleichzeitig auftretende Fehler in sowohl der Nachricht als auch der Kopie nicht als Nichtübereinstimmungen erkannt werden.
  • Ein gewöhnliches Fehlererfassungsverfahren ist das Cyclic Redundancy Check (CRC) Verfahren (zyklische Redundanzprüfung), das basierend auf den Bits der Datennachricht bestimmte "Check" (Überprüfungsbits) erzeugt und der Nachricht hinzufügt. Die Prüfbits liefern ein "Prüfwort", das für eine gegebene Nachricht kennzeichnend ist. Das Prüfwort kann an die Nachricht angefügt werden, so dass beide den gleichen Encoder verarbeitet werden, beide über den Kommunikationskanal gemeinsam übertragen werden, und beide durch den gleichen Decoder im Empfänger verarbeitet werden. Ein CRC-Kalkulator im Empfänger kann dann Prüfbits erzeugen, entsprechend den dekodierten Nachrichtenbits, die empfangenen wurden, und dieses empfängerberechnete Prüfwort kann mit dem dekodierten Prüfwort verglichen werden, das mit der Nachricht empfangen wurde. Irgend ein Nichtübereinstimmen zeigt einen in der Übertragung erfassten Fehler an, und der Grad einer Übereinstimmung kann als ein quantitatives Maß für die Zuverlässigkeit der Datenübertragung verwendet werden.
  • Im Gegensatz dazu ist es ein einfaches Beispiel einer Fehlerkorrekturcodierung, mehrere identische Kopien einer gegebenen Nachricht zu übertragen, und einen Bit-um-Bit Vergleich aller empfangenen Nachrichten am Empfänger durchzuführen. Es kann auf Grundlage einer "Bitdemokratie" entschieden werden, ob ein Bit der Nachrichtenausgabe von dem Empfänger eine EINS oder eine NULL sein sollte, d. h., die Mehrzahl der Bitwerte, die für diese Bitposition empfangen wurden, bestimmt die Ausgabe. Es kann angenommen werden, dass Übertragungsfehler zufällig unter den Nachrichtenkopien verteilt sind, und somit weniger wahrscheinlich in einem Großteil der Kopien an der gleichen Bitposition auftreten werden.
  • Ein bekanntes Fehlerkorrekturverfahren ist ein Faltungscodieren, bei dem die übertragenen Bits, als Paritätsbits bekannt, basierend auf den Nachrichtenbits bestimmt werden. Die Nachrichtenbits werden als L-Bits aufeinanderfolgend betrachtet, und r-Paritätsbits werden für jede L-Nachrichtenbits übertragen. Beispielsweise können die Paritätsbits als bestimmte Boolsche Kombinationen verschiedener Bits der Nachricht berechnet werden.
  • Die Übertragung von faltungscodierten Paritätsbits unterscheidet eine Faltungscodierung allgemein von alternativen Kodierungsverfahren wie beispielweise Blockcodierung, bei der eine kleine Anzahl von Nachrichtenbits in ein redundantes Blockcodewort umgewandelt wird, und mehrere solche Blockcodeworte übertragen werden, um die Gesamtnachricht zu übermitteln.
  • Die vorliegende Erfindung wird unterhalb hauptsächlich im Kontext einer Faltungskodierung beschrieben, obwohl sie auch auf andere Arten einer Codierung angewendet werden kann, wie dies erwähnt wird. Eine allgemeine Beschreibung bekannter Faltungscodierungsverfahren wird daher unterhalb als Hilfestellung für ein Verständnis des Hintergrunds der vorliegenden Erfindung dargestellt.
  • In 1 ist ein Transmitter 20 mit einem Faltungs-Encoder 22 veranschaulicht, bestehend aus einem Schieberegister 24, durch das zu codierende Informationsbits geschoben werden. Das Schieberegister hält eine begrenzte Anzahl L von Bits, wobei die Anzahl L als die Beschränkungslänge des Codes bekannt ist, da der Code darin beschränkt ist, dass L-Bits auf einmal betrachtet werden. In jedem Fall werden die in dem Schieberegister 24 befindlichen Bits, die als B1, B2, B3, B4, ..., BL, bezeichnet werden können, an ein kombinatorisches logisches Netz 26 gegeben, das zwei oder mehr unterschiedliche Boolsche Kombinationen der Bits erzeugt. Wie in 1 veranschaulicht, können die Bits des Schieberegisters 24 durch einen CRC-Fehlererfassungsgenerator 28 bereitgestellt werden, der zu übertragende Nachrichteninformation empfängt und die Nachrichtenprüfbits erzeugt und anfügt, wie oben beschrieben.
  • Die durch das Netz 26 erzeugten Kombinationen sind Paritätsbits, die oben beschrieben sind, und die als P1, P2, ..., Pr bezeichnet werden können. Die Paritätsbits werden über einen Kommunikationskanal zu einem Empfänger 30 mit einem Decoder 32 übertragen, der diese zurück in die Datenbits B1, B2, B3, ... BL umwandelt, und letztendlich in die Nachrichteninformation, die übertragen wurde.
  • Eine alternative Ausführungsform des Kommunikationssystems, das in 1 veranschaulicht ist, ist in 2 gezeigt. Anstelle des in 1 gezeigten kombinatorischen logischen Netzes 26 enthält der Transmitter 20 eine Nachschlagtabelle 27 mit 2L-Einträgen, die in einem herkömmlichen Speicher gespeichert sind. Die Muster der L-Bitschieberegister 24 Inhalte B1, B2, ..., BL adressieren jeweilige Einträge in der Nachschlagtabelle 27, die den charakteristischen Satz von Paritätsbits P1, P2, ..., Pr ergibt. Die Boolschen Kombinationen der Muster der Bits in dem Schieberegister 24 werden somit in der Nachschlagtabelle 27 gespeichert, anstatt dass sie durch das logische Netz 26 erzeugt werden.
  • Falls zwei Paritätsbits für jede Verschiebung der Bits durch das Schieberegister 24 erzeugt werden, ist der Code als ein Code mit Rate 1/2 bekannt, mit zwei mal so vielen Paritätsbits wie ursprünglichen Datenbits zur Übertragung. Falls die Rate einer Übertragung festgelegt ist, ist die für eine Übertragung solcher Paritätsbits erforderliche Zeit zweimal so lang wie die für eine Übertragung der ursprünglichen Datenbits erforderliche Zeit. Allgemeiner gesagt, falls r-Paritätsbits für jede Verschiebung erzeugt werden, ist der Code als ein Code mit Rate 1/r bekannt. Typischerweise ist die Paritätsübertragungsrate so festgelegt, dass sie r mal die der Nachrichteninformationsbitrate ist.
  • Beispielsweise könnten die Boolschen Kombinationsgleichungen zur Erzeugung der Paritätsbits eines Codes mit Rate 1/2 mit einer Beschränkungslänge von fünf wie folgt sein: P1 = B1 + B2 + B3 + B5 P2 = B1 + B4 + B5 wobei "+" eine Modulo-2 Addition darstellt. Es ergibt sich, dass eine Modulo-2 Addition logisch äquivalent zur Exklusiv-ODER Operation ist, da 0 + 0 = 0; 0 + 1 = 1 + 0 = 1; und 1 + 1 = 0.
  • Wie oben bemerkt, werden r mal so viele Paritätsbits als Eingangsdatenbits für einen Code mit Rate 1/2 erzeugt, und, falls alle Paritätsbits übertragen werden, wurde eine r-fache Redundanz bereitgestellt, um Fehler zu bekämpfen. Es versteht sich jedoch, dass es nicht notwendig ist, alle Paritätsbits zu übertragen. Falls der Transmitter und Empfänger sich vorhergehend auf ein reguläres Verfahren geeinigt haben, zur Bestimmung, welche Paritätsbits nicht übertragen werden, ist der Code dann als punktierter Faltungscode bekannt. Punktierte Codes liefern typischerweise Codierraten m/r, wie beispielsweise 13/29, wobei eine Adaption an eine Übertragungsrate erforderlich ist, was r/m mal die Nachrichteninformationsbitrate ist.
  • Tabellen von Paritätsgleichungen für verschiedene Coderaten und Beschränkungslängen, die optimale Codes zur Folge haben, sind in der technischen Literatur veröffentlicht. Man siehe beispielsweise G. Clarke, Jr., und J. Cain, Error-Correction Coding for Digital Communications, Appendix B, Plenum Press, New York (1981).
  • Die allgemein bekannten Verfahren zur Decodierung von Faltungscodes sind ein Schwellwertdecodieren, eine Sequential Maximum Likelihood Sequence Estimation (SMLSE, sequentielle maximale Wahrscheinlichkeitssequenzschätzung) und der Stapel Algorithmus. Das SMLSE-Verfahren ist allgemein als der Viterbi-Algorithmus bekannt, und ist in der Literatur beschrieben, einschließlich in D. Forney, "The Viterbi Algorithm", Proc. IEEE, Vol. 61, pp 268–278 (März 1973). Eine Beschreibung von Decodierverfahren kann in dem oben zitierten Clarke und Cain Text gefunden werden.
  • Die Verwendung eines Viterbi-Decoders zur Decodierung von Daten, die einer zyklischen Redundanzprüfcodierung und einer Fehlerkorrekturcodierung unterzogen wurden, ist auch im Patent US-4,967,413 beschrieben.
  • Der Betrieb eines SMLSE-Faltungsdecodieralgorithmus ist in 3 für einen Code mit Rate 1/2 veranschaulicht, und mit einer Beschränkungslänge von fünf. Beim SMLSE-Decoder ist eine Vielzahl von elektronischen Speicherelementen 33, 34, 35 in Gruppen, Zustände genannt, angeordnet, und die Anzahl von Zuständen ist 2L–1, wobei L die Beschränkungslänge des zu decodierenden Codes ist. Die Speicherelemente halten mindestens zwei unterschiedliche Typen von Information, d. h. Bithistorien in Elementen 33 und Pfadmetren in Elementen 35, die den Zuständen zugeordnet sind. Zusätzlich sind Zustandszahlen mit den Zuständen verknüpft, die in Elementen 34 als binäre Bitmuster für jeweils L – 1 Bits gespeichert werden können.
  • Ein Pfadmetrum kann als Gewissheitsfaktor bzw. Konfidenzfaktor betrachtet werden, der den Grad einer Korrelation zwischen einer postulierten Bitsequenz und einer tatsächlichen (z. b. empfangenen) Bitsequenz darstellt. In dem Ausmaß, in dem die postulierte und tatsächliche Bitsequenz miteinander übereinstimmt, ist das Pfadmetrum kleiner und die mit der postulierten Bitsequenz verbundene Gewissheit ist größer. Es versteht sich, dass "postulierte Sequenz" oder einfach "Postulation" allgemein irgendeine hypothetische Bitsequenz bezeichnet, die eine gewisse Wahrscheinlichkeit aufweist, dass sie die tatsächliche interessierende Bitsequenz ist. Eine Postulation kann daher Nachrichteninformationsbits, Paritätsbits oder Codeworte darstellen.
  • Ein wichtiger Teil der meisten SMLSE Decoder ist eine "Kopie" 38 des Codierungsalgorithmus. Für das beispielhafte Kommunikationssystem, das in 1 dargestellt ist, könnte die Kopie 38 ein L-Bitschieberegister mit einem kombinatorischen logischen Netz sein, das die Gleichungen implementiert, die in dem Encoder 22 verwendet werden, um die Paritätsbits P1, P2, ..., Pr zu erzeugen. Alternativ könnte die Kopie 38 ein L-Bitschieberegister und eine Nachschlagtabelle mit 2L Einträgen sein, gespeichert in einem elektronischen Speicher, wie im in 2 gezeigten System. In beiden Fällen werden 2L Postulationen durch die Kopie 38 erzeugt und direkt mit dem empfangenen Paritätsstrom durch einen Komparator 39 verglichen.
  • Die (L – 1)-Bitzustandszahlen in Speicherelementen 34 repräsentieren alle bis auf ein Bit der möglichen Inhalte des Codierungsschieberegisters 24. Das L-te Bit stellt das nächste zu decodierende Bit dar, und kann entweder NULL oder EINS sein. Beide Möglichkeiten werden in Verbindung mit allen möglichen Kombinationen der anderen durch die Zustandszahlen repräsentierten Bits getestet. Somit werden alle 2L möglichen Bitkombinationen durch den Decoder getestet, und ein laufender Gewissheitsfaktor, das Pfadmetrum 35, wird für ein Bewerten der Korrelation zwischen der postulierten Bitsequenz und der empfangenen Paritätsbitsequenz gespeichert.
  • Die Schritte des SMLSE Algorithmus sind für den Code mit der Rate 1/2 und einer Beschränkungslänge von fünf wie folgt.
  • Schritt 1. Für den ersten Zustand, nummeriert mit 0000, wird postuliert, dass das neue Bit auch eine NULL ist. Das Postulat 00000 wird somit an die Kopie 38 angelegt, um zwei Paritätsbits P1 (00000) und P2 (00000) zu erhalten, die zu erwarten sind. Auf diese Weise wird die postulierte Information unter Verwendung der gleichen Paritätsgleichungen codiert, die im Encoder 22, gezeigt in 1 und 2, verwendet wurden.
  • Schritt 2. Die tatsächlichen empfangenen Paritätsbits P1 (tatsächlich) und P2 (tatsächlich) werden mit dem postulierten Paritätsbits P1 (00000) und P2 (00000) durch den Komparator 39 verglichen. Der Vergleich ergibt eines der folgenden Ergebnisse: Eine Übereinstimmung für beide Bits; eine Übereinstimmung für eins der zwei Bits und eine Nichtübereinstimmung für das andere der zwei Bits; oder eine Nichtübereinstimmung für beide Bits. Falls sowohl P1 (00000) und P2 (00000) mit den tatsächlichen empfangenen Paritätsbits P1 (tatsächlich) und P2 (tatsächlich) übereinstimmen, wird der Wert null durch einen Addierer 36 zum Pfadmetrum hinzuaddiert, das mit dem Zustand 0000 assoziiert ist, und das durch Gpm (0000) dargestellt werden kann. Ähnlich, falls es nur eine einzelne Übereinstimmung gibt, wird der Wert eins zu Gpm (0000) addiert. Falls weder P1 (00000) noch P2 (00000) mit den tatsächlichen empfangenen Paritätsbits P1 (tatsächlich und P2 (tatsächlich) übereinstimmen, wird der Wert zwei zu Gpm (0000) addiert. Auf diese Weise repräsentiert der Pfadmetrenwert für irgendeinen gegebenen Zustand die kumulative Nichtübereinstimmung zwischen der postulierten und tatsächlichen Bitsequenz für den bestimmten Zustand. Je größer die kumulative Nichtübereinstimmung für einen Zustand ist, um so größer ist der Pfadmetrenwert und um so kleiner ist der laufende Gewissheitsfaktor für diesen Zustand.
  • Schritt 3. Die Schritte 1 und 2 werden für den Zustand 1000 wiederholt. Mit dem neuen fünften Bit, postuliert als eine NULL, wird das Muster 10000 an die Kopie 38 angelegt, und die Ausgabebits P1 (10000) und P2 (10000) werden mit den tatsächlichen empfangenen P1 (tatsächlich) und P2 (tatsächlich) verglichen. Das Pfadmetrum für den Zustand 1000, mit Gpm (1000) bezeichnet, wird basierend auf Vergleichen von P1 (tatsächlich) und P2 (tatsächlich) mit P1 (10000) und P2 (10000) wie im Schritt 2 aktualisiert.
  • Schritt 4. Die aktualisierten Pfadmetren für die Zustände 0000 und 1000, d. h. Gpm (0000) und Gpm (1000), werden durch den einen Komparator 37 verglichen. Der Zustand mit dem niedrigeren Pfadmetrum und somit mit der niedrigeren Nichtübereinstimmung, wird zum neuen Zustand 0000, wenn die Bitmuster 10000 und 00000, erzeugt durch die Kopie 38, um eine Bitposition nach links verschoben werden, und das am weitesten links befindliche Bit hinüber in die jeweilige Bithistorie in Speicherelementen 33 verschoben wird, was in beiden Fällen 0000 belässt. Somit kann irgendeiner der Zustände 1000 oder 0000 der Vorgänger für den nächsten Zustand 0000 sein, im Falle dass das neue Bit eine 0 ist. In Abhängigkeit davon, welcher Zustand aufgrund des niedrigsten Pfadmetrums überlebt, wird das am weitesten links befindliche Bit, das aus dem Muster der Encoderkopie 38 herausfällt, um das am weitesten rechts befindliche Bit der Bithistorie 33 für den nächsten Zustand 0000 zu werden, entweder eine 0 oder eine 1 sein. Darüber hinaus werden die anderen entsprechenden Bits in dem neuen Bithistorienspeicher 33 von dem überlebenden ausgewählten Zustand hinüberkopiert, und überschreiben die Bits des nicht überlebenden Zustands, den Zustand, der nicht ausgewählt wurde. Beispielsweise, wie in 3 gezeigt, falls das Pfadmetrum Gpm (1000) 1,8 und das Pfadmetrum Gpm (0000) 9,5 ist, wird der Zustand 1000 ausgewählt, um zu überleben, und die links geschobenen Bits 10110111 werden in die Bithistorie 33 für den neuen Zustand 0000 überschrieben.
  • Schritt 5. Die Schritte 1 bis 4 werden wiederholt mit dem Postulat, daß das neue Bit eine EINS ist. Die Postulate 0001 und 10001 für die tatsächlich empfangenen Bits werden somit jeweilig an die Kopie 38 angelegt, um die Paare von Paritätsbits, P1 (00001), P2 (00001) und P1 (10001), P2 (10001) zu erlangen, die erwartet würden. Diese Paritätsbitpaare werden mit den tatsächlich empfangenen Paritätsbits P1 (tatsächlich) und P2 (tatsächlich) verglichen, was zu aktualisierten Pfadmetren Gpm (0000) und Gpm (1000) führt, die dann verglichen werden. Dieses ergibt einen neuen Zustand 0001, der ebenso mögliche Vorgängerzustände 0000 und 1000 aufweist.
  • Schritt 6. Die Schritte 1–5 werden für jedes andere Paar von Vorgängerzuständen wiederholt: 0001 und 1001 (was Neuzustände 0010 und 0011 ergibt); 0010 und 1010 (was Neuzustände 0100 und 0101 ergibt); 0011 und 1011 (was Neuzustände 0110 und 0111 ergibt); 0100 und 1100 (was Neuzustände 1000 und 1001 ergibt); 0101 und 1101 (was Neuzustände 1010 und 1011 ergibt); 0110 und 1110 (was Neuzustände 1100 und 1101 ergibt); und 0111 und 1111 (was Neuzustände 1110 und 1111 ergibt).
  • Am Ende der obigen sechs Schritte wurden zwei tatsächliche empfangene Paritätsbits verarbeitet und ein neues decodiertes Bit wurde in alle Bithistorienspeicherelemente 33 geschoben. Diese gespeicherten Muster sind Kandidaten für die letztendliche SMLSE Sequenz. Aufgrund der Art, mit der Bithistorien andere Bithistorien überschreiben, wenn ein Paar von Zuständen als überlebender ausgewählt wird, neigen die älteren Bits in den Speicherelementen 33 zu einer Übereinstimmung. Falls die ältesten Bits in allen Bithistorien übereinstimmen, können sie als letztendliche Entscheidung entfernt werden, und die Bithistorienspeicherelemente 33 um ein Bit verkürzt werden.
  • Der Algorithmus für andere Codes mit anderen Raten, wie beispielsweise der Rate 1/4 laufen ähnlich ab, obwohl vier Paritätsbits für jedes Postulat erzeugt würden, und mit vier empfangenen Bits verglichen würden, was mögliche Inkremente für die kumulativen Pfadmetren von null, eins, zwei, drei oder vier Nichtübereinstimmungen erzeugt.
  • Bei einer anderen Variation des bekannten Algorithmus sind die empfangenen Paritätsbits nicht nur durch ihre Bitpolaritäten gekennzeichnet, sondern auch durch eine Größe oder Qualitätsmaß, was einen Grad einer "Eins-Artigkeit" oder "Null-Artigkeit" darstellt. Wenn eine Nichtübereinstimmung mit einem lokal vorhergesagten Postulat Paritätsbit erfasst wird, wird das Pfadmetrum mit einem größeren Wert bestraft, wenn die empfangene Bitqualität hoch ist, und es daher geringeren Zweifel daran gibt, dass das Vorzeichen in der Tat richtig war, im Vergleich dazu, wenn die Qualität niedrig ist, und die empfangene Bitpolarität zweifelhaft ist. Diese "weiche" Decodierung verwendet im Gegensatz zu einer "harten" Decodierung idealerweise ein "weiches" Bitqualitätsmaß das mit der –LOG (Wahrscheinlichkeit) in Verbindung steht, wobei "Wahrscheinlichkeit" die Wahrscheinlichkeit ist, dass die Bitpolarität richtig ist. Wenn dieses logarithmische Maß verwendet wird, repräsentiert das kumulative Metrum dann den Minuslogarithmus des Produktes aller Bitwahrscheinlichkeiten. Der Zustand und die Bithistoriensequenz mit dem kleinsten kumulativen Metrum repräsentiert dann die Sequenz mit der höchsten Wahrscheinlichkeit dafür, dass sie richtig ist. Normalerweise wird Rauschen als Gauss-verteilt angenommen, wobei in diesem Fall der Bestrafungsausdruck als proportional zum Quadrat der Bitamplitude gezeigt werden kann. Die Bestrafung für eine Nichtübereinstimmung zwischen einem lokal vorhergesagten postulierten Bit und einem empfangenen hochqualitativen Bit kann durch ein Addieren eines Terms bewirkt werden, der proportional zu 1/(–LOG(Wahrscheinlichkeit)) ist, zum kumulativen logarithmischen Maß, wenn die Nichtübereinstimmung erfasst wird. Solch eine Addition kann nur dann wesentlich das Maß beeinflussen, wenn die Wahrscheinlichkeit hoch ist, dass die empfangenen Bitpolarität richtig ist, und nichtsdestoweniger eine Nichtüberstimmung erfasst wird.
  • Solche Faltungs-Encoder und Decoder können auch ausgebildet werden, um mit nicht binären Symbolen wie beispielsweise ternären oder quaternären Symbolen zu arbeiten.
  • Drei Bereiche, in denen der Betrieb eines Faltungs-Encoders verbessert werden kann, umfassen eine Trunkierung bzw. ein Abschneiden von decodierten Bitsequenzen, eine Beendigung einer Decodierung, wenn alle empfangenen Bits verarbeitet wurden, und eine Bestimmung der global zweitbesten decodierten Bitsequenz. Beispielsweise kann eine vorgezogene Trunkierung decodierter Bitsequenzen zum Verlust von Information führen, und eine bekannte Beendigung von Decodierungsverfahren können unkorrigierte Nachrichtenbitfehler in der einzeln verbleibenden decodierten Kandidatendatennachricht belassen. Die vorliegende Erfindung löst diese lästigen Probleme durch eine Vermeidung der Notwendigkeit, vorgezogene Datenbitentscheidungen durchzuführen, um decodierte Bitsequenzen zu trunkieren bzw. abzuschneiden, und durch eine Beendigung einer Decodierung, während eine Vielzahl von variablen decodierten Kandidatdatennachrichten immer noch bewahrt wird.
  • Bekannte Verfahren zur Trunkierung (zum Abschneiden) und zur Terminierung werden unterhalb zum Zwecke einer Bereitstellung von Gegensätzen mit den Verbesserungen durch die vorliegende Erfindung, wie unterhalb beschrieben, zusammengefasst.
  • Bekannte Verfahren zum Trunkieren eines Historienwachstums.
  • Ein erstes bekanntes Verfahren zum Trunkieren der Länge eines benötigten Bithistorienspeichers ist es, eine Entscheidung bezüglich dem ältesten Bit durchzuführen, sobald der Speicher voll ist. Das älteste Bit wird vom Historienspeicher genommen, der mit dem Zustand verknüpft ist, der das niedrigste kumulative Metrum aufweist. Die ältesten Bits von den anderen Zuständen werden dann verworfen, was den Speicher um ein Bit kürzt, und ein Fortschreiten des Decodierens um eine weitere Stufe erlaubt. Wenn alle Paritätsbits empfangen wurden und verarbeitet wurden, ist das Ergebnis einer Decodierung eine einzelne Datensequenz entsprechend den extrahierten Bits, gefolgt durch 2(L–1) Kandidaten für den letzten Teil der Nachricht, entsprechend den immer noch in den Historienspeichern befindlichen Bits.
  • Ein zweites bekanntes Verfahren zur Trunkierung ist die Bildung der Mehrheitswahl über die ältesten Bits aller Zustände als entschiedenes Bit, und dann die Entfernung der ältesten Bits vor einem Voranschreiten.
  • Beide obige bekannten Verfahren verlieren Information durch Tätigen einer vorgezogenen Entscheidung bezüglich der ältesten Bits.
  • Bekanntes Verfahren zum Terminieren einer Codierung
  • Wenn das letzte Datenbit in das Codierungsschieberegister geführt wird, muss es den gesamten Weg so geschoben werden, dass es eine Anzahl von erzeugten Paritätsbits beeinflusst, die übertragen werden. Dieses erfordert, dass weitere Bits, Anhangbits genannt, nachgeführt werden müssen, um das letzte Datenbit durchzuspülen.
  • Bei einem bekannten Verfahren zur Terminierung sind die Anhangbits ein bekanntes Bitmuster, wie beispielsweise alle Nulls. Das Decodierverfahren des Standes der Technik in diesem Fall ist die Beschränkung der Postulate für jedes neue Bit entsprechend einem Anhangbit auf den bekannten Wert. Somit würden nach einer Verarbeitung der Paritätsbits entsprechend aller Null gesetzten Anhangbits nur Zustandszahlen erzeugt werden, die mit Null enden, was die Anzahl von Zuständen halbiert. Jedes nachfolgend bekannte Anhangbit halbiert die Anzahl von Zuständen, so dass letztendlich nur ein Zustand verbleibt, der die decodierte Datennachricht ist. Es ist natürlich möglich, dass diese einzelne verbleibende Kandidatennachricht unkorrigierte Bitfehler enthält.
  • Bekannte Bestimmung der wahren zweiten besten Sequenz
  • Die 2(L–1) überlebenden Kandidatensequenzen in einem normalen Viterbi-Decoder enthalten nicht notwendigerweise die global zweitbeste Sequenz, obwohl garantiert wird, dass sie die global beste Sequenz enthalten. Eine veröffentlichte Modifikation eines Faltungsdecoders durch N. Seshadri und C. W. Sundberg mit dem Titel "Generalized Viterbi Detection with Convolutional Codes", Proc. IEEE Globecom. '89, pp. 1534–1538, Nov. 1989, erlaubt, dass die global zweitbeste Sequenz berechnet wird, wie auch die global beste. Dieses erfordert, dass die Anzahl von Zuständen verdoppelt wird. Dann werden für jeden Zustand das bis dato beste und zweitbeste Pfadmetrum gehalten. Bei jeder Iteration werden die besten aus vier und die zweitbesten aus vier gewählt, um für einen neuen Zustand zu überleben.
  • Die global drittbeste Sequenz kann auch durch das obige Verfahren berechnet werden, falls drei mal die Anzahl von Zuständen verwendet wird. Allgemein wird die Bestimmung der wirklich zweit und drittbesten Sequenz durch dieses Verfahren nur auf Kosten einer erhöhten Komplexität erzielt. Allgemein kann die global N-te beste Sequenz durch das obige Verfahren berechnet werden, falls n mal die Anzahl von Zuständen verwendet wird. Dann werden für jeden Zustand die bis dato N besten Pfadmetren gehalten. Bei jeder Iteration werden die N besten der zwei N gewählt, um in neue Zustände zu überleben.
  • ZUSAMMENFASSUNG
  • Ein Kommunikationssystem und Verfahren wird bereitgestellt, für eine Reduktion von Fehlern bei der Übertragung eines Kommunikationsverkehrsignals, wie in den Ansprüchen 1 und 11 offenbart. Eine zu übermittelnde Datennachricht wird dazu verwendet, ein Fehlererfassungskontrollwort zu erzeugen. Sowohl die Datennachricht als auch ihr entsprechendes Fehlererfassungskontrollwort werden in ein Kommunikationsverkehrssignal unter Verwendung eines Fehlerkorrekturcodes codiert. Ein Fehlerkorrekturdecoder decodiert ein empfangenes Verkehrssignal, unter der Erzeugung einer Vielzahl von decodierten Kandidatsignalen. Ein quantitatives Maß der Zuverlässigkeit jedes Kandidaten wird durch den Decoder erzeugt. Ein Fehlererfassungskalkulator testet den zuverlässigsten Kandidaten hinsichtlich einer Übereinstimmung zwischen dessen decodierter Datennachricht und dessen entsprechendem decodiertem Fehlererfassungskontrollwort. Falls eine Übereinstimmung besteht, wird dieser Kandidat und dessen decodierte Datennachricht ausgewählt. Falls keine Übereinstimmung besteht, wird der nächst wahrscheinliche Kandidat für eine Übereinstimmung getestet, und der Auswahlprozess wird fortgeführt, bis eine Übereinstimmung gefunden wird. Falls keine Übereinstimmung unter allen Kandidaten aufgefunden wird, untersucht ein Fehlerkorrigierer den zuverlässigsten Kandidaten hinsichtlich des Vorhandenseins eines korrigierbaren Fehlers, und der korrigierte Kandidat wird erneut für eine Übereinstimmung getestet. Falls immer noch keine Übereinstimmung vorliegt, wird der nächst wahrscheinliche Kandidat hinsichtlich des Vorhandenseins eines korrigierbaren Fehlers untersucht, und der korrigierte Kandidat wird für eine Übereinstimmung erneute getestet, wobei der Prozess fortgeführt, bis eine Übereinstimmung gefunden wird, bis an die Grenzen der Fehlerkorrekturfähigkeiten des Fehlerkorrigierers.
  • Das bevorzugte Fehlerkorrekturcodierverfahren für Datennachrichten für eine Verwendung mit der vorliegenden Erfindung ist eine Faltungscodierung, wie oben erläutert. Die vorliegende Erfindung verwendet auch eine Fehlererfassung zur Überprüfung, ob decodierte Datennachrichten unkorrigierte Fehler enthalten. Die bevorzugte Fehlererfassungscodierung wird erzielt durch ein Anfügen eines zyklischen Redundanzprüf-(CRC, Cyclic Redundancy Check)Wortes and die Datennachricht, vor einer Fehlerkorrekturcodierung, so dass das CRC-Wort selbst auch durch die Fehlerkorrekturcodierung geschützt ist.
  • Die vorliegende Erfindung verwendet einen Viterbi SMLSE Decoder, wie unterhalb beschrieben modifiziert, um die Fehlerkorrekturcodierung zu decodieren, was zu einer Vielzahl von Kandidat-Bitsequenzen für die Datennachricht und ihr angefügtes CRC-Wort führt. Die Kandidat-Bitsequenz mit dem niedrigsten kumulativen Pfadmetrum wird dann hinsichtlich einer Übereinstimmung zwischen ihrer Datennachricht und ihrer CRC-Bits getestet. Falls der CRC erfolgreich ist, wird die Kandidatennachricht für eine Verwendung ausgewählt. Falls der CRC fehlschlägt, wird die Kandidat-Bitsequenz mit dem nächst höheren Metrum geprüft, usw., bis eine der Bitsequenzen als ein übereinstimmendes CRC aufgefunden wird, und diese Kandidatnachricht wird für eine Verwendung ausgewählt.
  • Falls keine mit übereinstimmendem CRC aufgefunden wird, dann wird entweder die gesamte Nachricht als fehlerhaft zurückgewiesen oder andere Prozeduren können definiert werden für eine Auswahl einer Kandidatnachricht, basierend darauf, ob der CRC die Fähigkeit aufweist, auch eine beschränkte Anzahl von Fehlern zu korrigieren. Beispielsweise wird die Kandidat-Bitsequenz mit dem niedrigsten Metrum wiederum überprüft, und falls ihr CRC-Syndrom einem einzelnen Bitfehler entspricht, der identifiziert und korrigiert werden kann, dann wird diese Kandidatnachricht für eine Verwendung ausgewählt. Falls das CRC-Syncdrom nicht einem einzelnen Bitfehler entspricht, der identifiziert und korrigiert werden kann, dann wird die Kandidat-Bitsequenz mit wiederum dem nächst höheren Metrum überprüft. Falls die Kandidat-Bitsequenz mit dem nächst höheren Metrum ein CRC-Syncdrom aufweist, das einem einzeln Bitfehler entspricht, der identifiziert und korrigiert werden kann, dann wird diese Kandidatnachricht für eine Verwendung ausgewählt, usw., bis eine der Kandidat-Bitsequenzen mit einem CRC-Syndrom aufgefunden wird, das einem einzelnen Bitfehler entspricht, der identifiziert und korrigiert werden kann, und diese Kandidatnachricht wird für eine Verwendung ausgewählt.
  • Ein Decodiersystem in Übereinstimmung mit der vorliegenden Erfindung kann vorteilhafterweise mit einem Decodiersystem zur Unterscheidung zwischen unterschiedlichen Arten von faltungscodierten Signalen verwendet werden, beschrieben in der mit anhängigen Anmeldung mit der Seriennummer 07/652,544, eingereicht am 8. Februar 1991, veröffentlicht am 20. Juli 1993 mit der Veröffentlichungsnummer US 5,230,003 .
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird nunmehr detaillierter mit Bezug auf die bevorzugten Ausführungsbeispiele der Erfindung beschrieben auf dem Wege eines Beispiels und in den begleitenden Zeichnungen veranschaulicht:
  • 1 veranschaulicht ein Kommunikationssystem, das einen Faltungs-Encoder enthält, der in der vorliegenden Erfindung verwendet werden kann;
  • 2 veranschaulicht ein Kommunikationssystem, das einen zu dem in 1 gezeigten alternativen Faltungs- Encoder enthält, der ebenso in der vorliegenden Erfindung angewendet werden kann;
  • 3 veranschaulicht ein Beispiel eines Faltungsdecodieralgorithmus, der in der vorliegenden Erfindung angewendet werden kann;
  • 4 veranschaulicht ein Speichersystem für ein Trunkierverfahren, das in der vorliegenden Erfindung angewendet werden kann;
  • 5 veranschaulicht ein Beispiel eines Trunkierverfahrens, das in der vorliegenden Erfindung angewendet werden kann;
  • die 6, 6a und 6b veranschaulichen Beispiele von Bitsequenzen für Decodierungsterminierungsstrategien, die in der vorliegenden Erfindung verwendet werden können;
  • 7 zeigt ein funktionales Blockdiagramm eines Encoders zur Implementierung eines Ausführungsbeispiels der vorliegenden Erfindung;
  • 8 zeigt ein funktionales Blockdiagramm eines Encoders zur Implementierung eines weiteren Ausführungsbeispiels der vorliegenden Erfindung;
  • 9 zeigt ein funktionales Blockdiagramm eines Decoders in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung; und
  • 10 zeigt ein funktionales Blockdiagramm eines Decoders in Übereinstimmung mit einem weiteren Ausführungsbeispiel der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • Die vorliegende Erfindung wendet vorzugsweise das SMLSE Verfahren an, da dieses Verfahren eine theoretisch optimale Leistung bereitstellt. Die anderen Verfahren neigen zu einem Kompromiss zwischen Leistung und Komplexität, insbesondere für Codes mit langen Beschränkungslängen, da die Komplexität von SMLSE sich exponentiell mit einer Erhöhung einer Beschränkungslänge erhöht. Somit, während die vorliegende Erfindung auf ein beliebiges Decodierverfahren angewendet werden kann, wie beispielsweise ein Mehrheitswahlverfahren, wird eine Implementierung eines bevorzugten Ausführungsbeispiels der vorliegenden Erfindung im Kontext des SMLSE Verfahrens beschrieben. Diese Implementierung ist jedoch lediglich zum Zwecke der Beschreibung ausgeführt.
  • Die vorliegende Erfindung verwendet in bevorzugten Ausführungsbeispielen ein bevorzugtes Verfahren einer Bithistorientrunkierung, und eines der bevorzugten Verfahren einer Decodierungsterminierung.
  • Verfahren für eine Bithistorientrunkierung
  • Die vorliegende Erfindung vermeidet ein Durchführen von vorgezogenen Datenbitentscheidungen, um Bithistorien zu trunkieren. Der Hauptgrund für ein normalerweise verwendetes Trunkieren ist die Vermeidung der Unbequemlichkeit eines Kopierens noch längerer Bitsequenzen von einem Zustand zu einem weiteren, wenn einer eines Paars von Vorgängerzuständen als Überlebender ausgewählt wird. Es ist bequemer, wenn die Größe einer gehaltenen Bithistorie passend zu der festen Wortlänge einer digitalen Signalverarbeitungsmaschine ist, wie beispielsweise 16 oder 32 Bits. Das bevorzugte Verfahren, das mit einem Speichersystem implementiert werden kann, das schematisch in 4 veranschaulicht ist, liefert den Vorteil fester Historienlängen zum Kopieren zwischen Zuständen ohne die Notwendigkeit einer Durchführung von harten Entscheidungen bezüglich des ältesten Bits.
  • Wenn die Bithistorie auf die maximale geeignete Wortlänge M gewachsen ist, werden alle 2(L–1) Bithistorien zu einem ersten Speicher 46 abgelagert, wie durch 40 bezeichnet, von dem aus auf sie zugegriffen werden kann, durch eine (L – 1)-Bitadresse 42. Die (L – 1)-Bitadresse 42 entsprechend der zugeordneten Bithistorie 40 wird dann in jeden Zustand anstelle der ursprünglichen Bits gesetzt, wie durch 43 bezeichnet. Es versteht sich, dass angenommen wird, dass L – 1 weniger als M ist, so dass M – L + 1 Bitpositionen für jedes Wort für eine weitere Decodierung verfügbar gemacht wurden. Der Decodieralgorithmus kann dann weitere M – L + 1 male ausgeführt werden, bis ein jedes Bithistorienwort wiederum voll ist, und die Inhalte werden noch einmal abgeladen, dieses Mal zu einem zweiten Speicher 46, wie durch 41 bezeichnet, unter Ersetzung der M-Bits in jeder Bithistorie mit deren (L – 1)-Bitadressen 42 in dem zweiten Speicher 46. Dieser Prozess wird wiederholt, bis alle Bits verarbeitet wurden. Dann werden im K-ten Speicher 46 2(L–1)-Bithistorieworte der Länge M mit ihren jeweiligen (L – 1)-Bitadressen 42 versehen. Ein jedes der M-Bitworte enthält M – L + 1 decodierte Bits 41, und die (L – 1)-Bitadresse 43 entsprechen der (L – 1)-Bitadresse 42 in dem (K – 1)ten Speicher 46, an dem die unmittelbar vorhergehenden decodierten Bits 41 befindlich sind. Nach einer Verarbeitung aller Bits enthält der Decodierspeicher 48 2(L–1) Bithistorienworte mit Länge M, höchstens, und bezeichnet durch ihre jeweiligen (L – 1) Bitadressen 42. Ein jedes der Bit-Historienworte enthält die letzten Q decodierten Bits 44, wobei Q geringer oder gleich M – L + 1 ist, und die (L – 1)-Bitadressen 43 entsprechend der (L – 1)-Bitadresse 42 im letzten Speicher 46, wo die unmittelbar vorhergehenden decodierten Bits 41 angeordnet sind. Der Decodierspeicher 48 enthält auch kumulative Pfadmetren 45, in Verbindung mit ihren jeweiligen 2(L–1) Kandidaten für die gesamte Nachricht.
  • Ein jeder der 2(L–1) Kandidaten für die gesamte Nachricht, am Ende der Verarbeitung existierend, kann durch ein Verketten der Inhalte der externen Speicher 46 unter Verwendung der Adressbits 43 als Kettenpointer aufgebaut werden.
  • Um den Kandidaten für die Datennachricht vom finalen Zustand 0 aufzubauen sind die Schritte wie folgt:
    • 1) Extrahieren der Q decodierten Datenbits 44 aus der M-Bit Bithistorie für den letzten Zustand 0 im Decodierspeicher 48 als die zuletzt decodierten Datenbits.
    • 2) Extrahieren der (L – 1) Adressbits 43 aus der M-Bit Bithistorie für den letzten Zustand 0 und Abrufen des M-Bitwortes aus dem externen Speicher 46 entsprechend dieser extrahierten (L – 1) Bitadresse 43.
    • 3) Extrahieren der M – L + 1 decodierten Datenbits 41 aus dem abgerufenen Wort und Anfügen an die Q decodierten Datenbits 44, extrahiert aus dem Decoderspeicher 48.
    • 4) Extrahieren der L – 1 Adressbits 43 aus dem abgerufenen Wort und Verwendung dieser dann für ein Adressieren des vorhergehend verwendeten externen Speichers 46, zum Abrufen des vorhergehenden M-Bitwortes entsprechend der (L – 1)-Bitadresse 43.
    • 5) Extrahieren der M – L + 1 decodierten Datenbits 41 aus dem abgerufenen Wort und Anfügen an die bereits extrahierten verknüpften Datenbits.
    • 6) Wiederholung der Schritte 4)–5), bis das Ende der Kette erreicht ist.
  • Die extrahierten verknüpften Datenbits bilden dann den decodierten Nachrichtenkandidaten, der zum finalen Zustand 0 gehört. Die zu anderen finalen Zuständen gehörenden Kandidaten können entsprechend durch ein Beginnen mit dem geeigneten Zustand und einem Rück-Verketten aufgebaut werden.
  • In Verbindung mit 5 wird ein Beispiel der Verknüpfungsoperation beschrieben, unter der Annahme einer Beschränkungslänge L = 3. Der finale Zustand im Decodierspeicher 48 mit dem niedrigsten kumulativen Pfadmetrum 45 ist der finale Zustand 10 (Gpm(10) = 2,0), dessen letzte decodierte Datenbits 44 01 (Q = 2) sind. Die extrahierte 2-Bitadresse 43 ist 00, und die 3 decodierten Datenbits 41, extrahiert aus der entsprechenden 00 Adresse 42 in dem vierten Speicher 46 sind 110, was an 01, die letzten decodierten Datenbits 44 angefügt wird, was zu 110-01 führt. Die nächste extrahierte 2-Bitadresse 43 ist 10 und die nächsten 3 codierten Datenbits 41, extrahiert aus der entsprechenden 10 Adresse 42 im dritten Speicher 46, sind 110, was, wenn angefügt an die wachsende Kette, 110-110-01 ergibt. Die nächste extrahierte 2-Bitadresse 43 ist 01, und die nächsten 3 decodierten Datenbits 41, extrahiert aus der entsprechenden 01-Adresse 42 im zweiten Speicher 46, sind 001, was, wenn an die wachsende Kette angefügt, 011-110-110-01 ergibt. Die letzte extrahierte 2-Bitadresse 43 ist 11, und die verbleibenden 5 decodierten Datenbits 40, extrahiert aus der entsprechenden 11 Adresse 42 im ersten Speicher 46 sind 11101, was, wenn angefügt an die wachsende Kette, letztendlich 11101-011-110-110-01 ergibt, den decodierten Nachrichtenkandidaten, der zum finalen Zustand 10 gehört. Die zu anderen finalen Zuständen gehörenden Kandidaten können entsprechend aufgebaut werden, durch ein Beginnen mit dem geeigneten Zustand und einem Rück-Verketten, mit den Ergebnissen, wie sie in 5 gegeben sind.
  • Bevorzugte Verfahren für eine Decodierungsterminierung
  • Die bevorzugten Verfahren für ein Terminieren einer Decodierung bewahren eine Vielzahl von Kandidaten, beispielsweise 2(L–1).
  • Ein bevorzugtes Verfahren verwendet Anschlussbits, vermindert jedoch nicht die Anzahl von Zuständen gegen Ende. Die bekannten Anschlussbits werden in dem Decoder verwendet, zur Vorhersage für jeden Zustand, welche Paritätsbits empfangen werden sollten, und die Zustandsmetren werden einfach ohne ein Überschreiben aktualisiert. Dann verbleiben somit 2(L–1) Kandidatdatensequenzen am Ende. Die bekannten Anschlussbits können, wie im Beispiel der Bitsequenz 50 in 6 gezeigt, eine Sequenz von L – 1 Nullen 54 sein, angefügt an die Sequenz von N1 + N2 Bits 52 (umfassend N1 Nachrichtendatenbits und N2 Fehlerprüfbits).
  • In Verbindung mit 3 wird ein Beispiel des bevorzugten Verfahrens zur Terminierung einer Decodierung unter Verwendung von Anschlussbits, dem Decoder 32 in 1 und 2 vorab bekannt, beschrieben, unter Annahme einer Beschränkungslänge L = 5, und einem Code mit Rate 1/r = 1/2. Unter der Annahme, dass das letzte der Bits, das in das 5-Bitschieberegister in der Encoderkopie 38 eingegeben wird, die erste der bekannten 4-Bitanschlussbit Nullen 54 ist, sind die Schritte für eine Decodierungsterminierung wie folgt:
    • 1) Für den ersten Zustand, 0000 nummeriert, wird "postuliert", dass das neue Bit auch 0 ist. Das Postulat 00000 für die empfangenen Informationsbits würde somit an eine Kopie 38 des Encoders 32 angelegt, um die zwei Paritätsbits P1 (00000) und P2 (00000) zu erlangen, die erwartet würden.
    • 2) Die tatsächlich empfangenen Paritätsbits P1 (tatsächlich) und P2 (tatsächlich) werden mit den postulierten Paritätsbits P1 (00000) und P2 (00000) verglichen. Die Vergleichsergebnisse ergeben entweder eine komplette Übereinstimmung für beide Bits, oder eine einfache Übereinstimmung für eines der zwei Bits und eine einfache Nichtübereinstimmung für das andere der zwei Bits, oder eine vollständige Nichtübereinstimmung für beide Bits. Falls sowohl P1 (00000) und P2 (00000) mit den tatsächlichen empfangenen Paritätsbits P1 (tatsächlich) und P2 (tatsächlich) übereinstimmen, wird die Zahl 0 an das dem Zustand 0000 zugehörige Pfadmetrum Gpm (0000) hinzuaddiert. Auf ähnliche Weise, wenn nur eine einfache Übereinstimmung vorliegt, wird die Zahl 1 zu dem 0000 Pfadmetrum Gpm(0000) hinzuaddiert. Falls weder P1 (00000) noch P2 (00000) mit den tatsächlich empfangenen Paritätsbits P1 (tatsächlich) und P2 (tatsächlich) übereinstimmen, wird die Zahl 2 zum 0000 Pfadmetrum Gpm (0000) hinzuaddiert. Die neue Bithistorie 33 für den Zustand 0000 ist dann 00100110, wobei das am weitesten rechts befindliche Bit dem am weitesten links befindlichen Bit Encoderkopie 38 Musters 00000 entspricht.
    • 3) Die Schritte 1) und 2) werden nun für den Zustand 1000 wiederholt. Mit dem neuen 5-ten Bit "postuliert" als eine 0, wird das Muster 10000 an die Encoderkopie 38 angelegt, und deren Ausgabe P1 (10000) und P2 (10000) werden mit den empfangenen Daten P1 (tatsächlich) und P2 (tatsächlich) verglichen. Das Pfadmetrum für den Zustand 1000, Gpm (1000) wird dann aktualisiert wie im Schritt 2), basierend auf Vergleichungen der tatsächlichen empfangenen Paritätsbits P1 (tatsächlich und P2 (tatsächlich) mit den postulierten Paritätsbits P1 (10000) und P2 (10000). Die neue Bithistorie 33 für Zustand 1000 ist dann 10110111, wobei das am weitesten rechts befindliche Bit dem am weitesten links befindlichen Bit des 5-Bit Encoderkopie 38 Muster 10000 entspricht.
    • 4) Die Schritte 1)–3) werden für jedes andere Paar von Vorgängerzuständen 0001 und 1001, 0010 und 1010, 0011 und 1011, 0100 und 1100, 0101 und 1101, 0110 und 1110, und 0111 und 1111, wiederholt.
  • Am Ende einer der obigen Iterationen wurden zwei empfangene Paritätsbits verarbeitet und ein neues decodiertes Bit wurde in alle Bithistorienspeicher 33 hineingeschoben. Die Schritte 1)–4) werden dann noch dreimal für die drei verbleibenden Anschlussbit Nullen 54 wiederholt.
  • Ein zweites bevorzugtes Verfahren für eine Terminierung verwendet etwas, was als "Tail-Biting" bekannt ist. Bei diesem Verfahren verwendet der Encoder die ersten codierten Datenbits erneut, um das letzte Datenbit hindurch zu spülen. Der Decoder verwendet entsprechend die ersten decodierten Bits einer jeden Kandidatdatennachricht in Verbindung mit Postulaten des letzten Datenbits, um empfangene Paritätsbits vorherzusagen, und aktualisiert die Metren dementsprechend ohne ein Überschreiben, wodurch alle 2(L–1) Kandidaten am Ende bewahrt werden. In 6a ist ein Beispiel einer Bitsequenz 52 gezeigt, die mit einer Tail-Biting Terminierung verwendet werden kann. Die Bitsequenz 52 enthält N1 + N2 Bits, wobei die ersten L – 1 Bits 56 als "Anschlussbits" dienen, die vorab dem Decoder 32 in den 1 und 2 nicht bekannt sind, und die dazu verwendet werden, das letzte Bit der zu codierenden Bitsequenz 52 durch das L-Bitschieberegister 24 im Transmitter 20 Encoder 22 hindurch zu spülen.
  • In Verbindung mit Figur wird ein Beispiel eines bevorzugten Verfahrens zur Terminierung einer Decodierung unter Verwendung eines Tail-Biting beschrieben, unter Annahme einer Beschränkungslange L = 5, und einem Code mit Rate 1/r = 1/2. Es wird angenommen, dass das letzte der in das 5-Bitschieberegister in der Encoderkopie 38 eingeführten Bits das erste der unbekannten 4-Bit "Anschlussbits" 56 ist, mit anderen Worten das erste zu decodierende Bit. Es wird weiter angenommen, dass zufälligerweise das erste zu decodierende Bit eine 1. Die Schritte für eine Decodierungsterminierung sind wie folgt:
    • 1) Für den ersten Zustand, mit der Nummer 0000 wird "postuliert", dass das neue Bit eine 1 ist. Das Postulat 00001 für die empfangenen Informationsbits wird dann an eine Kopie 38 des Encoders 22 angelegt, um die zwei Paritätsbits P1 (00001) und P2 (00001), die erwartet werden würden, zu erlangen.
    • 2) Die tatsächlichen empfangenen Paritätsbits P1 (tatsächlich) und P2 (tatsächlich) werden mit den postulierten Paritätsbits P1 (00001) und P2 (00001) verglichen. Die Vergleichsergebnisse liefern entweder eine komplette Übereinstimmung für beide Bits, oder eine einfache Übereinstimmung für eines der zwei Bits, und eine einzelne Nichtübereinstimmung für das andere der zwei Bits, oder eine vollständige Nichtübereinstimmung für beide Bits. Falls sowohl P1 (00001) und P2 (00001) mit den empfangenen tatsächlichen Paritätsbits P1 (tatsächlich) und P2 (tatsächlich) übereinstimmen, wird die Zahl 0 mit dem Zustand 0000 verknüpften Pfadmetrum Gpm (0000) hinzuaddiert. Ähnlich, wenn es nur eine einzelne Übereinstimmung gibt, wird die Zahl 1 zum 0000 Pfadmetrum Gpm (0000) addiert. Falls weder P1 (00001) noch P2 (00001) mit den empfangenen tatsächlichen Paritätsbits P1 (tatsächlich) und P2 (tatsächlich) übereinstimmen, wird die Zahl 2 zum 0000 Pfadmetrum Gpm (0000) addiert. Die neue Bithistorie 33 für den Zustand 0000 ist dann 00100110, wobei das am weitesten rechts befindliche Bit dem am weitesten links befindlichen Bit des 5-Bit Encoderkopie 38 Musters 0001 entspricht.
    • 3) Die Schritte 1) und 2) werden nun für den Zustand 1000 wiederholt. Mit dem neuen fünften Bit als eine 1 "postuliert" wird das Muster 10001 an die Encoderkopie 38 angelegt und deren Ausgabe P1 (10001) und P2 (10001) werden mit den empfangenen Daten P1 (tatsächlich) und P2 (tatsächlich) verglichen. Das Pfadmetrum für den Zustand 1000, Gpm (1000) wird dann aktualisiert wie im Schritt 2), basierend auf Vergleichen der empfangenen tatsächlichen Paritätsbits P1 (tatsächlich) und P2 (tatsächlich) mit den postulierten Paritätsbits P1 (10001) und P2 (10001). Die neue Bithistorie 33 für den Zustand 1000 ist dann 10110111, wobei das am weitesten rechts befindliche Bit dem am weitesten links befindlichen Bit des 5-Bitencoderkopie 38 Musters 10001 entspricht.
    • 4) Die Schritte 1)–3) werden für jedes andere Paar von Vorgängerzuständen 0001 und 1001, 0010 und 1010, 0011 und 1011, 0100 und 1100, 0101 und 1101, 0110 und 1110, und 0111 und 1111, wiederholt.
  • Am Ende einer der obigen Iterationen wurden zwei empfangene Paritätsbits verarbeitet und ein neues decodiertes Bit wurde in alle Bithistorienspeicher 33 hineingeschoben. Die Schritte 1)–4) werden dann noch dreimal für die drei verbleibenden "Anschlussbits" 56 wiederholte, in jedem Schritt unter der "Postulation", dass das neue fünfte Bit das ist, was auch immer das entsprechende bereits empfangene Bit war. Falls beispielsweise das zweite, dritte und vierte decodierte Bit als 0, 1, bzw. 1 angenommen werden, wird das neue Bit als eine 0 "postuliert", in der dritten Wiederholung wird das neue Bit als eine 1 "postuliert" und bei der vierten Wiederholung wird das neue Bit als eine 1 "postuliert".
  • Eine alternative Terminierung eines Tail-Biting Decoders ist es, mit einem Decodieren in einem Kreis fortzufahren, bis eine Anzahl von letzten decodierten Bits mit den gleichen Bits, wenn das erstemal decodiert, übereinstimmen, entweder in einem Zustand mit dem niedrigsten Metrum, einer Zahl Z von Zuständen mit den Z niedrigsten Metren, oder in der Tat in allen Zuständen in Abhängigkeit davon, wie viele Kandidatsequenzen aus dem Decoder erforderlich sind. Ein Beispiel in 6b gezeigt, wobei K Bits 58 innerhalb der (N1 + N2) Bitsequenz 52 eine Anzahl von Bits darstellen, die übereinstimmen, wenn während der kontinuierlichen Decodierung der Bitsequenz 52 zweimal decodiert, woraufhin eine Decodierung beendet wird. Um bei einem Spülen des letzten Bits durch das L-Bitschieberegister 24 im Transmitter 20 Encoder 22 effektiv zu sein, muss entweder die Zahl K mindestens so groß wie L – 1 sein, oder, falls K weniger als L – 1 ist, muss die K-Bitsequenz 58 geeignet innerhalb der Bitsequenz 52 positioniert werden. Falls beispielsweise K weniger als L – 1 ist, muss das am weitesten rechts befindliche der K-Bits 58 mindestens L – K – 2 Bits nach links vom am weitesten rechts befindlichen Bits in der Bitsequenz 52 positioniert werden.
  • Ein bekanntes Verfahren zum Wählen der finalen Datennachricht aus diesen Kandidaten ist ein einfaches Auswählen des Zustands mit dem niedrigsten kumulativen, Metrum.
  • Implementierung bevorzugter Ausführungsbeispiele
  • Blockdiagramme der bevorzugten Anordnungen für eine Implementierung der Erfindung sind in den 1, 2, 7, 8, 9 und 10 gezeigt.
  • Unter Bezugnahme auf die 7 und 8 wird eine Datennachricht 60 bestehend aus N1 Nachrichtenbits die von einem Transmitter 20 zu übertragen sind, in einen Fehlererfassungscodegenerator 28 eingegeben, der einen Cyclic Redundancy Check (CRC) bildet, durch ein Berechnen des Restes bei einer Polynom Division der Datennachricht 60 durch das gewählte CRC Polynom (nicht gezeigt). Beispielsweise ist das einfachste mögliche Polynom 1 und der Rest einer Division einer beliebigen Datenbitsequenz durch 1 ist genau diese Datenbitsequenz, was eine einfache Redundanz erzeugt. Kompliziertere Polynome erzeugen kompliziertere Reste, wie dies allgemein wohlbekannt ist. Man siehe beispielsweise Line und Costello "Error Control Coding", Prentice-Hall (1983) Kapitel 4.5 (ISBN 0-13-283796-X). Der CRC Rest 64, bestehend aus N2 Prüfbits, wird dann an die N1 Nachrichtenbits 60 angefügt, was eine Gesamtzeit von N1 + N2 Bits 66 ergibt, die dann in den Faltungsfehlerkorrekturencoder 22 eingegeben werden. In Abhängigkeit davon, ob das oben beschriebene Tail-Biting Verfahren verwendet wird oder nicht, können weitere L – 1 Nullen angefügt werden, wobei L die Beschränkungslänge des Faltungscodes ist, was L – 1 + N1 + N2 Bits insgesamt ergibt. Falls ein Tail-Biting verwendet wird, werden die ersten L – 1 + N1 + N2 Bits 66 in das Codierungsschieberegister 24 geladen, wohingegen, falls kein Tail-Biting verwendet wird, die L – 1 Nullen plus die ersten der N1 Datennachrichtenbits 60 in das Codierungsschieberegister 24 geladen werden.
  • Abgriffe an dem Schieberegister 24 sind mit den Eingängen eines kombinatorischen logischen Netzes 26 verbunden, das die zu übertragenden Paritätsbits 74 bildet. Eine Alternative, wie in 8 gezeigt, ist es, die L-Bits im Schieberegister zur Adressierung einer Nachschlagtabelle 27 mit 2L Elementen in einem elektronischen Speicher zu verwenden, wobei die geeignete Paritätsbitkombination für jedes mögliche Schieberegisterbitmuster gespeichert ist. In beiden Fällen wird eine Anzahl von Paritätsbits 74 proportional zum Reziproken der Coderate 1/r, für jede Verschiebung des Schieberegisters 24 erzeugt. Nach der Einführung des letzten der N2 CRC Bits 64 wird dieses durch ein Wiederholen der ersten codierten Bits durchgespült, was im Falle eines Tail-Bitings bedeutet, dass die ersten L – 1 der N1 + N2 Bits 66 wiederum eingeführt werden, oder ohne ein Tail-Biting, dass die L – 1 anfänglichen Nullen wiederum eingeführt werden. Es ist festzustellen, dass dann, wenn die Anordnung von N1 + N2 Bits 66 oder L – 1 + N1 + N2 Bits als einen Kreis bildend betrachtet wird, kein prinzipieller Unterschied in der Funktion des Encoders 22 in beiden Fällen vorliegt.
  • Die Anzahl von vom Transmitter 20 zu übertragenden Paritätsbits ist entweder (N1 + N2)r oder (L – 1 + N1 + N2)r, und diese werden sequentiell zu einem Modulator 76 geführt, für eine Umwandlung in eine Form, die geeignet ist für eine Übertragung über das Kommunikationsübertragungsmedium 78, beispielsweise einem Funkkanal.
  • Nunmehr unter weiterer Bezugnahme auf die 9 und 10 verarbeitet ein Demodulator 82 im Empfänger 30 das über das Kommunikationsübertragungsmedium 78 (beispielsweise einem Funkkanal) empfangene Signal 80, um Schätzungen der übertragenen Paritätsbits 74 zu rekonstruieren. Dieses können "harte" Entscheidungen 84 (binäre 1-en oder 0-en) oder "weiche" Entscheidungen 85 sein wie in 10 gezeigt, wobei dieses idealerweise Schätzungen des Logarithmus der Wahrscheinlichkeit sind, dass ein Paritätsbit jeweilig eine 1 oder eine 0 ist. Die harte 84 (oder weiche 85) Paritätsbitinformation wird dann zu einem Viterbi-SMLSE Faltungsdecoder 86 geführt, der in Übereinstimmung mit den bevorzugten Prinzipien arbeitet, wie oben beschrieben.
  • Falls ein Tail-Biting verwendet wird, dann entsprechen die 2(L–1) Zustände allen Möglichkeiten für die bis jetzt unbekannten ersten L – 1 der N1 + N2 Bits 66, und deren Pfadmetren werden initialisiert auf Startwerte, beispielsweise Null. Ein Decodieren schreitet dann voran, wie beschrieben. Falls kein Tail-Biting verwendet wird, kann nur der Zustand 0, entsprechend den L – 1 anfänglichen Nullen, die in das Encoder 22 Schieberegister 24 geführt wurden, existieren, und das Pfadmetrum wird auf Null initialisiert. Nach einer Decodierungsiterationen werden zwei Zustände erzeugt, entsprechend dem ersten unbekannten Datennachrichtenbit, sei es eine 0 oder eine 1. Nach L – 1 Decodieriterationen sind alle 2(L–1) Zustände aktiv und ein Decodieren schreitet dann normal voran.
  • Nach einer Beendigung der Viterbi-Decodierung ist eine Anzahl 2(L–1) Kandidaten (N1 + N2)-Bitsequenzen im Speicher 94 verfügbar, eine jede mit einem zugehörigen Pfadmetrenwert. Die finalen Zustandspfadmetren 88 werden zu einem Pfadmetrensortierer 90 geführt, der die finalen Zustandspfadmetren 88 in absteigender Reihenfolge nach ihrem Wert ordnet. Die Kandidaten (N1 + N2)-Bitsequenzen werden dann unter Verwendung der sortierten Adressreihenfolge 92 geordnet, und eine Kandidaten (N1 + N2)-Bitsequenz wird vom Speicher 94 abgerufen, und dann zum CRC Kalkulator 98 geführt. Der CRC Kalkulator 98 bestimmt, ob die angefügten N2-Bit CRC Worte den N1 Datennachrichtenbits entsprechen. Die erste Kandidat (N1 + N2)-Bitsequenz mit einem gültigen CRC wird dann für ihre N1 Kandidatendatennachrichtenbits für eine Ausgabe 100 ausgewählt. Falls kein gültiger CRC aufgefunden wird, und wenn der CRC auch eine begrenzte Fehlerkorrekturfähigkeit aufweist, werden die Kandidaten (N1 + N2)-Bitsequenzen wiederum in sortierter Metrenreihenfolge nach einem einzelnen korrigierbaren Fehler abgesucht. Die erste Kandidat (N1 + N2)-Bitsequenz mit einem einzelnen korrigierbaren Fehler wird dann ausgewählt, und der Fehler wird korrigiert. Diese Prozedur kann bis zur maximal erlaubten Fehlerkorrekturfähigkeit des CRC Codes wiederholt werden.
  • Die vorliegende Erfindung, in einem Gesichtspunkt durch die Auswahl der N-ten besten Ausgabe eines Fehlerkorrekturdecoders in Übereinstimmung mit dem Ergebnis einer Fehlererfassungsüberprüfungsprozedur gekennzeichnet, kann auch mit Codierungsarten angewendet werden, die sich von einem Faltungs-Encoder unterscheiden, wie beispielsweise einem Blockcodieren. Beispielsweise kann eine kleine Anzahl von Nachrichtendatenbits nacheinander in einen redundanten Blockcode gewandelt werden, und mehrere solche Blockcodes können übertragen werden, um die Gesamtnachricht einschließlich dem CRC Wort zu übermitteln. Falls bei einem Durchführen der CRC Überprüfung nach einer Decodierung irgendwelche unerkannten Fehler verbleiben, kann die Qualität der Blockcodierung untersucht werden, und der am wenigstens zuverlässige Block identifiziert werden. Das am wenigsten zuverlässige übertragene Bit innerhalb des am wenigsten zuverlässigen Blocks kann dann invertiert werden, und der Block erneut decodiert werden, und das CRC erneut geprüft werden. Falls dies fehlschlägt, kann das am zweitwenigsten zuverlässige Bit oder Block modifiziert werden, usw. Solche Anwendungen der vorliegenden Erfindung auf den Fall einer Blockcodierung können detailliert durch einen normal mit einer Codierung und Decodierungstheorie befassten Fachmann ausgelegt werden.
  • Während bestimmter Ausführungsbeispiele der vorliegenden Erfindung beschrieben und veranschaulicht wurden, versteht es sich, dass die Erfindung nicht darauf beschränkt ist, da Abwandlungen durch den zugehörigen Fachmann getätigt werden können. Die vorliegende Erfindung erwägt beliebige und alle Abwandlungen, die innerhalb des Umfangs der vorliegenden Erfindung liegen, hierin offenbart und beansprucht.

Claims (17)

  1. Ein Kommunikationssystem zur Bereitstellung einer Reduktion von Fehlern bei einer Übertragung von Kommunikationsverkehrssignalen, umfassend: einen Transmitter, einschließlich: eines Fehlererfassungssignalgenerators zur Erzeugung eines Fehlererfassungskontrollworts entsprechend der zu übermittelnden Datennachricht; eines Fehlerkorrektur-Encoders zur Codierung der Datennachricht und des Fehlererfassungskontrollworts; einen Empfänger, einschließlich: eines Fehlerkorrektur-Decoders zum Empfangen und Decodieren der codierten Datennachricht und des Fehlererfassungskontrollworts, wobei der Decoder umfasst: eine Einrichtung zur Erzeugung einer Vielzahl von Kandidat-Bitsequenzen entsprechend den N wahrscheinlichsten Kandidat-Nachrichtendaten und von Kandidat-Erstfehlererfassungsbitsequenzen, die übertragen wären; eine Einrichtung zur Berechnung zweiter Fehlererfassungsbits als eine Funktion von decodierten Nachrichtendatenbits für jede der Kandidat-Bitsequenzen; eine Einrichtung zum Vergleichen der zweiten Fehlererfassungsbits der Kandidat-Bitsequenzen mit den ersten Fehlererfassungsbitschätzungen der Kandidat-Bitsequenzen, um ein Fehlererfassungssyndrom zu bilden; und eine Einrichtung zum Auswählen einer ersten Kandidat-Nachricht aus der Kandidat-Bitsequenz mit der höchsten Wahrscheinlichkeit und einem Fehlererfassungssyndrom, das keine Fehler anzeigt, und, wenn ein solcher Kandidat nicht existiert, Auswählen einer zweiten Kandidat-Nachricht aus der Kandidat-Bitsequenz mit der höchsten Wahrscheinlichkeit und einem Syndrom, das eine korrigierbare Anzahl von Fehlern anzeigt, und Korrigieren der Bitfehler in der zweiten ausgewählten Kandidat-Nachricht.
  2. Das System nach Anspruch 1, wobei die Datennachricht und das Fehlererfassungskontrollwort unter Verwendung von Faltungscodes codiert sind.
  3. Das System nach Anspruch 1, wobei der Decoder eine sequenzielle Maximum-Likelihood Sequenzschätztechnik anwendet, um die codierte Datennachricht und das codierte Fehlererfassungskontrollwort zu decodieren.
  4. Das System nach Anspruch 1, wobei der Decoder einen Speicher umfasst, zum Speichern von postulierten Bitzuständen, einer Historie ausgewählter Bits für einen jeden der geforderten Bitzustände, und eines Konfidenzfaktors für jeden der postulierten Bitzustände.
  5. Das System nach Anspruch 1, weiter umfassend: einen Transmitter mit einem Faltungs-Encoder, einschließlich: einem L-Bit-Schieberegister zum Speichern von L-Bits von Datennachrichtsinformation und Fehlererfassungskontrollwortinformation, wobei L die Begrenzungslänge des Faltungscodes ist; eine Logikschaltung zum logischen Kombinieren bestimmter der L-Bits, um Paritätsbits zu erzeugen; und eine Einrichtung zum Übermitteln der Paritätsbits.
  6. Das System nach Anspruch 1, wobei die codierte Datennachricht und das codierte Fehlererfassungskontrollwort Paritätsbits sind.
  7. Das System nach Anspruch 1, wobei die Datennachricht N1 zu übermittelnde Nachrichtenbits und N2 Fehlererfassungsbits des Fehlererfassungskontrollworts enthält.
  8. Das System nach Anspruch 7, wobei die N2 Fehlererfassungsbits der Rest einer Polynomialdivision der N1 Nachrichtenbits durch ein zyklisches Redundanzprüfpolynom sind.
  9. Das System nach Anspruch 1, wobei der Fehlerkorrekturencoder durch dem Decoder unbekannte Codierbits initialisiert und terminiert wird.
  10. Das System nach Anspruch 1, wobei der Fehlerkorrekturencoder durch dem Decoder bekannte Codierbits initialisiert und terminiert wird.
  11. Ein Verfahren zum Kommunizieren von Daten, angepasst an ein Reduzieren des Auftretens von Datenbitfehlern, die sich aus einer Übertragung ergeben, die Schritte umfassend: Zusammenstellen einer Anzahl von Nachrichtendatenbits in eine zu übermittelnde Nachricht; Berechnen erster Fehlererfassungsbits als eine Funktion der Nachrichtendatenbits; Anfügen der Fehlererfassungsbits an die Nachricht; Codieren der Nachricht und der angefügten Fehlererfassungsbits in einem Fehlerkorrekturencoder, um Codierbits von dem Encoder für eine Übertragung zu erzeugen; Modulieren der Codierbits; Übertragen der modulierten Codierbits über ein Kommunikationsmedium; Empfangen von Schätzwerten der übertragenen Bits; Demodulieren der empfangenen Schätzwerte; Decodieren der demodulierten Schätzwerte in einem Fehlerkorrekturdecoder; Erzeugen einer Vielzahl von Kandidat-Bitsequenzen, entsprechend den N wahrscheinlichsten Kandidat-Nachrichtendaten und von ersten Kandidat-Fehlererfassungs-Bitsequenzen, die übermittelt wären; Berechnen zweiter Fehlererfassungsbits als eine Funktion decodierter Nachrichtendatenbits für jede der Kandidat-Bitsequenzen; Vergleichen der zweiten Fehlererfassungsbits der Kandidat-Bitsequenzen mit den ersten Fehlererfassungsbitschätzwerten der Kandidat- Bitsequenzen, um ein Fehlererfassungssyndrom zu bilden; und Auswählen einer ersten Kandidat-Nachricht aus der Kandidat-Bitsequenz mit der höchsten Wahrscheinlichkeit und einem Fehlererfassungssyndrom, das keine Fehler anzeigt, und, wenn kein solcher Kandidat existiert, Auswählen einer zweiten Kandidat-Nachricht aus der Kandidat-Bitsequenz mit der höchsten Wahrscheinlichkeit, und einem Syndrom, das eine korrigierbare Anzahl von Fehlern anzeigt, und Korrigieren der Bitfehler in der zweiten ausgewählten Kandidat-Nachricht.
  12. Ein Verfahren zum Kommunizieren von Daten nach Anspruch 11, wobei die ersten und zweiten Fehlererfassungsbits der Rest einer Polynomialdivision der Nachrichtendatenbits durch ein zyklisches Redundanzprüfpolynom sind.
  13. Ein Verfahren zum Kommunizieren von Daten nach Anspruch 11, wobei die Fehlerkorrekturcodierung eine Faltungscodierung ist.
  14. Ein Verfahren zum Kommunizieren von Daten nach Anspruch 13, wobei die Fehlerkorrekturcodierung eine Faltungscodierung unter Verwendung von Tail-Biting ist, weiter die Schritte umfassend: Initialisieren des Encoders durch Zuführen von Datenbits, die dem Empfangsdecoder vor der Übertragung nicht bekannt sind; und Terminieren des Encoders durch erneutes Zuführen der Datenbits.
  15. Ein Verfahren zum Kommunizieren von Daten nach Anspruch 13, wobei die Fehlerkorrekturcodierung eine Faltungscodierung ist, weiter die Schritte umfassend: Initialisieren des Encoders durch Zuführen eines Bitmusters, das dem empfangenden Decoder vor der Übertragung bekannt ist; und Terminieren des Encoders durch erneutes Zuführen des Bitmusters.
  16. Ein Verfahren zum Kommunizieren von Daten nach Anspruch 11, wobei die Fehlerkorrekturdecodierung einen sequentiellen Maximum-Likelihood Sequenzschätz-Viterbialgorithmus verwendet.
  17. Ein Verfahren zum Kommunizieren von Daten nach Anspruch 11, weiter die Schritte umfassend: Sortieren der Kandidat-Bitsequenzen in aufsteigender Reihenfolge jeweiliger Pfadmetren von Endzuständen des Decoders, nachfolgend der Decodierung einer kompletten Eingabesignalsequenz, zum Bestimmen der Reihenfolge der Fehlererfassungsbitvergleiche.
DE69532949T 1994-09-14 1995-09-13 Verfahren und gerät zur dekoderoptimierung Expired - Lifetime DE69532949T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US305730 1994-09-14
US08/305,730 US5577053A (en) 1994-09-14 1994-09-14 Method and apparatus for decoder optimization
PCT/US1995/011687 WO1996008895A1 (en) 1994-09-14 1995-09-13 Method and apparatus for decoder optimization

Publications (2)

Publication Number Publication Date
DE69532949D1 DE69532949D1 (de) 2004-06-03
DE69532949T2 true DE69532949T2 (de) 2005-05-25

Family

ID=23182088

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69532949T Expired - Lifetime DE69532949T2 (de) 1994-09-14 1995-09-13 Verfahren und gerät zur dekoderoptimierung

Country Status (9)

Country Link
US (1) US5577053A (de)
EP (1) EP0728390B1 (de)
JP (1) JP3652701B2 (de)
CN (1) CN1083189C (de)
AT (1) ATE265770T1 (de)
AU (1) AU3676295A (de)
DE (1) DE69532949T2 (de)
FI (1) FI114515B (de)
WO (1) WO1996008895A1 (de)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784392A (en) * 1995-06-26 1998-07-21 Nokia Mobile Phones Ltd. Viterbi decoder with l=2 best decoding paths
US5721745A (en) * 1996-04-19 1998-02-24 General Electric Company Parallel concatenated tail-biting convolutional code and decoder therefor
US5721746A (en) * 1996-04-19 1998-02-24 General Electric Company Optimal soft-output decoder for tail-biting trellis codes
US5910182A (en) * 1996-05-03 1999-06-08 Ericsson Inc. Data communications systems and methods using interspersed error detection bits
US5917837A (en) * 1996-09-11 1999-06-29 Qualcomm, Incorporated Method and apparatus for performing decoding of codes with the use of side information associated with the encoded data
US5745502A (en) * 1996-09-27 1998-04-28 Ericsson, Inc. Error detection scheme for ARQ systems
UA53669C2 (uk) * 1996-11-18 2003-02-17 Сіменс Акцієнгезельшафт Спосіб та система базової станції для конфігурування радіоінтерфейсу між мобільною станцією та базовою станцією мобільної радіосистеми пакетної передачі даних з часовим мультиплексуванням
US6208655B1 (en) 1996-11-27 2001-03-27 Sony Europa, B.V., Method and apparatus for serving data
US6094465A (en) * 1997-03-21 2000-07-25 Qualcomm Incorporated Method and apparatus for performing decoding of CRC outer concatenated codes
US5938787A (en) * 1997-03-27 1999-08-17 Ericsson Inc. Communications systems and methods employing code rate partitioning with nonorthogonal modulation
JP3239795B2 (ja) * 1997-04-23 2001-12-17 三菱電機株式会社 誤り訂正復号装置および誤り訂正復号方式
US6085349A (en) * 1997-08-27 2000-07-04 Qualcomm Incorporated Method for selecting cyclic redundancy check polynomials for linear coded systems
US6581170B1 (en) 1997-10-23 2003-06-17 Sony Corporation Source coding to provide for robust error recovery during transmission losses
US6282684B1 (en) * 1997-10-23 2001-08-28 Sony Corporation Apparatus and method for recovery of data in a lossy transmission environment
US6298085B1 (en) 1997-10-23 2001-10-02 Sony Corporation Source encoding using shuffling of data to provide robust error recovery in a burst error-environment
FI104769B (fi) * 1997-12-01 2000-03-31 Nokia Networks Oy Menetelmä ja laitteisto loogisen kanavan tunnistamiseksi
US6141388A (en) * 1998-03-11 2000-10-31 Ericsson Inc. Received signal quality determination method and systems for convolutionally encoded communication channels
US6347125B1 (en) 1999-01-11 2002-02-12 Ericsson Inc. Reduced complexity demodulator for multi-bit symbols
US6307979B1 (en) 1999-02-12 2001-10-23 Sony Corporation Classified adaptive error recovery method and apparatus
US6307560B1 (en) 1999-02-12 2001-10-23 Sony Corporation Classified adaptive spatio-temporal format conversion method and apparatus
US6519369B1 (en) 1999-02-12 2003-02-11 Sony Corporation Method and apparatus for filter tap expansion
US7010737B2 (en) * 1999-02-12 2006-03-07 Sony Corporation Method and apparatus for error data recovery
US6418548B1 (en) 1999-02-12 2002-07-09 Sony Corporation Method and apparatus for preprocessing for peripheral erroneous data
US6535148B1 (en) 1999-02-12 2003-03-18 Sony Corporation Method and apparatus for truncated decoding
US6363118B1 (en) 1999-02-12 2002-03-26 Sony Corporation Apparatus and method for the recovery of compression constants in the encoded domain
US6170074B1 (en) 1999-02-12 2001-01-02 Sony Corporation Source coding to provide for robust error recovery
US6591398B1 (en) 1999-02-12 2003-07-08 Sony Corporation Multiple processing system
US6621936B1 (en) 1999-02-12 2003-09-16 Sony Corporation Method and apparatus for spatial class reduction
US6389562B1 (en) 1999-06-29 2002-05-14 Sony Corporation Source code shuffling to provide for robust error recovery
US6493842B1 (en) 1999-06-29 2002-12-10 Sony Corporation Time-varying randomization for data synchronization and implicit information transmission
US6473876B1 (en) 1999-06-29 2002-10-29 Sony Corporation Method and apparatus for encoding of bitstreams using rotation
US6549672B1 (en) 1999-06-29 2003-04-15 Sony Corporation Method and apparatus for recovery of encoded data using central value
US6351494B1 (en) 1999-09-24 2002-02-26 Sony Corporation Classified adaptive error recovery method and apparatus
US6522785B1 (en) 1999-09-24 2003-02-18 Sony Corporation Classified adaptive error recovery method and apparatus
US6539517B1 (en) 1999-11-09 2003-03-25 Sony Corporation Data transformation for explicit transmission of control information
US6754371B1 (en) 1999-12-07 2004-06-22 Sony Corporation Method and apparatus for past and future motion classification
JP3286289B2 (ja) * 1999-12-28 2002-05-27 松下電器産業株式会社 Cdma受信装置及び誤り訂正方法
US6484285B1 (en) 2000-02-07 2002-11-19 Ericsson, Inc. Tailbiting decoder and method
US7080307B2 (en) * 2000-03-02 2006-07-18 Kawasaki Steel Corporation Error correction decoder with correction of lowest soft decisions
US6542559B1 (en) * 2000-05-15 2003-04-01 Qualcomm, Incorporated Decoding method and apparatus
US6606726B1 (en) * 2000-06-13 2003-08-12 Telefonaktiebolaget L M Ericsson (Publ) Optimization of acceptance of erroneous codewords and throughput
JP2002247025A (ja) * 2001-02-22 2002-08-30 Hitachi Ltd 情報処理装置
GB2377142A (en) * 2001-06-29 2002-12-31 Motorola Inc Encoder for generating an error checkword
AU2002363786B2 (en) * 2001-10-17 2007-10-04 General Electric Company Signal error detection in railroad communication system
GB2387302B (en) * 2002-04-05 2005-11-30 Phyworks Ltd Error correcting decoder
US7278128B1 (en) * 2003-04-11 2007-10-02 Xilinx, Inc. Method of altering a bitstream
US7191385B2 (en) * 2003-04-24 2007-03-13 Locus Location Systems, Llc Error correction in a locating method and system
SG113465A1 (en) * 2003-05-30 2005-08-29 Oki Techno Ct Singapore Pte Method of estimating reliability of decoded message bits
US7392459B2 (en) * 2004-04-14 2008-06-24 Lucent Technologies Inc. Method and apparatus for preventing a false pass of a cyclic redundancy check at a receiver during weak receiving conditions in a wireless communications system
US7646829B2 (en) * 2004-12-23 2010-01-12 Agere Systems, Inc. Composite data detector and a method for detecting data
US7469373B2 (en) * 2005-02-17 2008-12-23 Broadcom Corporation Application of a Meta-Viterbi algorithm for communication systems without intersymbol interference
JP4597700B2 (ja) 2005-02-21 2010-12-15 株式会社リコー 画像形成装置
US7712013B2 (en) * 2005-03-18 2010-05-04 Intel Corporation Block decoding methods and apparatus
KR100734307B1 (ko) * 2006-01-23 2007-07-02 삼성전자주식회사 포스트 비터비 에러 정정 방법 및 이에 적합한 장치
JP5251000B2 (ja) * 2006-11-01 2013-07-31 富士通株式会社 誤り訂正回路及び媒体記憶装置
EP1973256A1 (de) 2007-03-22 2008-09-24 Nxp B.V. Fehlererkennung
CN102299778B (zh) * 2007-08-21 2014-02-19 华为技术有限公司 反馈方法、反馈信息的区分方法及装置
US8000411B2 (en) * 2008-01-04 2011-08-16 Qualcomm Incorporated Decoding scheme using multiple hypotheses about transmitted messages
JP4922242B2 (ja) * 2008-06-05 2012-04-25 パナソニック株式会社 符号化装置、符号化方法、及びビタビ復号装置
US8181098B2 (en) * 2008-06-11 2012-05-15 Freescale Semiconductor, Inc. Error correcting Viterbi decoder
US8099657B2 (en) * 2008-07-11 2012-01-17 Freescale Semiconductor, Inc. Error correcting Viterbi decoder
US20120079349A1 (en) * 2010-09-24 2012-03-29 Arkady Bramnik Method and apparatus for multi-bit upset protection
RU2706171C1 (ru) * 2019-01-25 2019-11-14 Федеральное государственное казенное военное образовательное учреждение высшего образования Академия Федеральной службы охраны Российской Федерации Способ декодирования блочных помехоустойчивых кодов по критерию минимального среднего риска
CN116722954B (zh) * 2023-08-08 2023-10-20 珠海星云智联科技有限公司 一种编解码验证系统、方法、设备以及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4134071A (en) * 1971-07-19 1979-01-09 Licentia Patent-Verwaltungs-G.M.B.H. SSMA Data transmission system
US4108359A (en) * 1977-03-30 1978-08-22 The United States Of America As Represented By The Secretary Of The Army Apparatus for verifying the execution of a sequence of coded instructions
GB2033699B (en) * 1978-11-01 1982-11-10 Philips Electronic Associated Error detection
US4368534A (en) * 1979-01-29 1983-01-11 General Signal Corporation Keyboard controlled vital digital communication system
US4307463A (en) * 1980-02-08 1981-12-22 General Signal Corporation Vital rate decoder
JPS5710558A (en) * 1980-06-20 1982-01-20 Sony Corp Error correcting method
JPS6333028A (ja) * 1986-07-26 1988-02-12 Nec Corp 信号検出方式
US4949273A (en) * 1988-11-04 1990-08-14 General Signal Corporation Vital processing system including a vital power controller with forgiveness feature
US5208816A (en) * 1989-08-18 1993-05-04 At&T Bell Laboratories Generalized viterbi decoding algorithms
FI84866C (fi) * 1990-03-12 1992-01-27 Nokia Mobile Phones Ltd Foerbaettring av en viterbi-algoritm.
US5230003A (en) * 1991-02-08 1993-07-20 Ericsson-Ge Mobile Communications Holding, Inc. Decoding system for distinguishing different types of convolutionally-encoded signals
US5349589A (en) * 1991-07-01 1994-09-20 Ericsson Ge Mobile Communications Inc. Generalized viterbi algorithm with tail-biting
JPH05199124A (ja) * 1992-01-21 1993-08-06 Nec Corp 音声通信方式
EP0609934B1 (de) * 1993-02-01 1999-04-07 Koninklijke Philips Electronics N.V. Fernsehempfänger mit Teletextdecoder
US5355376A (en) * 1993-02-11 1994-10-11 At&T Bell Laboratories Circular viterbi decoder

Also Published As

Publication number Publication date
JPH09509808A (ja) 1997-09-30
AU3676295A (en) 1996-03-29
CN1138396A (zh) 1996-12-18
JP3652701B2 (ja) 2005-05-25
DE69532949D1 (de) 2004-06-03
ATE265770T1 (de) 2004-05-15
CN1083189C (zh) 2002-04-17
WO1996008895A1 (en) 1996-03-21
EP0728390A1 (de) 1996-08-28
FI114515B (fi) 2004-10-29
US5577053A (en) 1996-11-19
FI962030A0 (fi) 1996-05-13
FI962030A (fi) 1996-07-11
EP0728390B1 (de) 2004-04-28

Similar Documents

Publication Publication Date Title
DE69532949T2 (de) Verfahren und gerät zur dekoderoptimierung
DE69024282T2 (de) Verallgemeinernder Viterbi-Dekodier-Algorithmus
EP0391354B1 (de) Verfahren zum Verallgemeinern des Viterbi-Algorithmus und Einrichtungen zur Durchführung des Verfahrens
DE69721028T2 (de) Fehlerkorrektur mit zwei blockcodes
DE69634155T2 (de) Erfassung einer Konfidenz und eines Rahmen-Qualitäts-Signals in einem "soft decision"-Faltungs-Dekoder
DE69810485T2 (de) Kommunikationssysteme und verfahren mit paralleler verschachtelungsloser kodierung
DE69412570T2 (de) Iteratives Dekodierverfahren verketteter Blockkodes
DE69712492T2 (de) Zuverlässigkeitsinformation benutzender dekoder zur verringerung der fehlerhäufigkeit
DE60309007T2 (de) Fehlererkennungsverfahren in drahtlosen Kommunikationssystemen
DE69717472T2 (de) Verfahren zur fehlererkennung für system mit automatischer wiederholungsaufforderung
DE69029484T2 (de) Verfahren und Anordnung zur Fehlerkorrektur
WO1996008895A9 (en) Method and apparatus for decoder optimization
EP0392603B1 (de) Übertragungssystem
DE69929652T2 (de) Datenfehlerkorrektursystem
DE19827815B4 (de) Empfänger
DE10238841B4 (de) Parallelverarbeitung der Decodierung und der zyklischen Redundanzüberprüfung beim Empfang von Mobilfunksignalen
DE69719024T2 (de) Verfahren zur dekodierung von datensignalen mittels eines festlängenentscheidungsfensters
DE69930911T2 (de) Übertragungssystem mit adaptivem kanalkodierer und -dekoder
DE19959409A1 (de) Turbo-Code-Decoder und Turbo-Code-Decodierverfahren mit iterativer Kanalparameterschätzung
DE19539343C2 (de) Verfahren zur Fehlererkennung eines digitalen Bitdatenstroms, der von einem Sender zu einem Empfänger übertragen wird
DE69130717T2 (de) Maximalwahrscheinlichkeitssequenzdetektor
DE69621103T2 (de) Informationsbitfolgeübertragungsverfahren mit selektivem Schutz gegen Übertragungsfehler sowie Übertragungsverfahren damit
DE69327212T2 (de) System für Übertragung von Informationsbitfolgen
DE69328636T2 (de) Bitfehler zählverfahren und zähler
EP1252716B1 (de) Verfahren und anordnung zur dekodierung von informationen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition