DE3750583T2 - Viterbidekodierer mit verringerter zahl von datentransportoperationen. - Google Patents

Viterbidekodierer mit verringerter zahl von datentransportoperationen.

Info

Publication number
DE3750583T2
DE3750583T2 DE3750583T DE3750583T DE3750583T2 DE 3750583 T2 DE3750583 T2 DE 3750583T2 DE 3750583 T DE3750583 T DE 3750583T DE 3750583 T DE3750583 T DE 3750583T DE 3750583 T2 DE3750583 T2 DE 3750583T2
Authority
DE
Germany
Prior art keywords
states
path
state
addressable
time unit
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 - Fee Related
Application number
DE3750583T
Other languages
English (en)
Other versions
DE3750583D1 (de
Inventor
Chin-Pan Wong
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.)
Racal Data Communications Inc
Original Assignee
Racal Data Communications 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 Racal Data Communications Inc filed Critical Racal Data Communications Inc
Application granted granted Critical
Publication of DE3750583D1 publication Critical patent/DE3750583D1/de
Publication of DE3750583T2 publication Critical patent/DE3750583T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • 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
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/32Carrier systems characterised by combinations of two or more of the types covered by groups H04L27/02, H04L27/10, H04L27/18 or H04L27/26
    • H04L27/34Amplitude- and phase-modulated carrier systems, e.g. quadrature-amplitude modulated carrier systems
    • H04L27/3405Modifications of the signal space to increase the efficiency of transmission, e.g. reduction of the bit error rate, bandwidth, or average power
    • H04L27/3416Modifications of the signal space to increase the efficiency of transmission, e.g. reduction of the bit error rate, bandwidth, or average power in which the information is carried by both the individual signal points and the subset to which the individual points belong, e.g. using coset coding, lattice coding, or related schemes
    • H04L27/3427Modifications of the signal space to increase the efficiency of transmission, e.g. reduction of the bit error rate, bandwidth, or average power in which the information is carried by both the individual signal points and the subset to which the individual points belong, e.g. using coset coding, lattice coding, or related schemes in which the constellation is the n - fold Cartesian product of a single underlying two-dimensional constellation
    • H04L27/3438Modifications of the signal space to increase the efficiency of transmission, e.g. reduction of the bit error rate, bandwidth, or average power in which the information is carried by both the individual signal points and the subset to which the individual points belong, e.g. using coset coding, lattice coding, or related schemes in which the constellation is the n - fold Cartesian product of a single underlying two-dimensional constellation using an underlying generalised cross constellation

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Description

    HINTERGRUND 1. Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf Viterbi-Decoder zur Bestimmung eines Weges größter Wahrscheinlichkeit durch ein von einem Faltungscode erzeugtes Gitter.
  • 2. Beschreibung des Standes der Technik
  • Ein Viterbi-Decoder wird zur Decodierung von Faltungscodes verwendet, welche zur Reduzierung der Fehlerhäufigkeit und zur Verbesserung des Signal-Rausch-Verhältnisses eines Übertragungssystems über bandbegrenzte Übertragungskanäle verwendet werden. Der Viterbi-Decoder ist im einzelnen in dem Artikel "The Viterbi Algorithm" in den Proceedings of the IEEE, Vol 61, Nr. 3, März 1973 beschrieben.
  • Je nach Auslegung des Codierers kann ein zweidimensionaler Faltungscode verwendet werden, wie es in dem US-Patent 4,601,044 von Kromer III et al dargestellt ist oder aber eine multidimensionale Codierung (bei der die Anzahl der Dimensionen zwei übersteigt), wie sie in der europäischen Patentanmeldung 85300803.5 von Gallager beschrieben ist. Der Viterbi-Decoder in dem Empfänger verwendet die empfangenen zwei- oder multidimensionalen Signale zur Abschätzung des ursprünglichen Weges des Codierers durch das Gitter. Der Weg größter Wahrscheinlichkeit wird dadurch bestimmt, daß die wahrscheinliche Abfolge zweidimensionaler Symbolmengen (welcher Gitterweg) herausgefunden wird, die den geringsten Abstand zu der Sequenz der empfangenen Signale aufweist. Der Empfänger berechnet den Minimalweg und aus der Geschichte des Weges bestimmt er ein abgeschätztes empfangenes Symbol.
  • Was die spezifische Ausführungsform betrifft, in welcher der Viterbi-Decoder in den Computerprogrammen der Modems nach dem Stand der Technik implementiert war, wird auf die folgende Beschreibung verwiesen. In den Fig. 1A bis 1C wird die Implementierung des Viterbi-Decoders nach dem Stand der Technik an einem einfachen Beispiel dargestellt. Bei dieser Ausführungsform wird der Viterbi- Algorithmus in Verbindung mit einem einfachen Faltungscodierer verwendet, der vier Zustände aufweist, welche in dem Gitter gemäß Fig. 1A mit 0, 1, 2 und 3 bezeichnet sind. Ein Faltungscodierer ist eine Vorrichtung mit einer begrenzten Anzahl von Zuständen, welcher eine Abfolge dieser Zustände durchläuft, wobei jeder Zustand durch eine Zeiteinheit j zeitlich getrennt ist. Das Gitter wird zur Darstellung aller zulässigen Übergänge zwischen dem gegenwärtigen Zustand und dem nächsten Zustand des Codierers verwendet, wobei jede der Verzweigungen zwischen Zuständen durch einen einzigen Binärausgang des Codierers identifiziert wird, bezeichnet als Untermengenauswahlbits und in Fig. 1A mit a, b, c oder d benannt. Jedes dieser Untermengenauswahlbits (in diesem Fall ein Paar Bits) zeigt auf eine gegebene Untermenge von Symbolen.
  • Beginnend bei der Zeiteinheit j = m + 1 wird der Verzweigungswert über die einzelnen Wege berechnet, das heißt für Verzweigungen welche jeden Zustand 0, 1, 2 und 3 annehmen, wie es in Fig. 1A dargestellt ist. Für den Zustand bei der Zeiteinheit m + 1 wird der verbleibende Weg mit dem geringsten Wert w' bestimmt, wie es in Fig. 1B dargestellt ist. Die Wege werden abgespeichert, und zwar entweder durch Abspeicherung der Untermengenidentifizierungsbits oder der Zustände und die Werte w' für die Wege werden ebenfalls abgespeichert. In Fig. 1C wird die Einheitszeit j um 1 erhöht. Die Werte w'' für sämtliche Wege, welche die Zustände bei j = m + 2 einnehmen, werden berechnet, indem die berechneten Verzweigungswerte der Verzweigungen j = m + 1 bis j = m + 2 zu den verbleibenden Werten w' der verbindenden verbleibenden Wege der vorangehenden Einheit addiert werden. An diesem Punkt umfaßt jeder verbleibende Wert w' nur den vorher berechneten Verzweigungswert, wenn jedoch mehrere Zeiteinheiten überschritten werden, stellt jeder verbleibende Wert w' für einen gegebenen Weg die Summe aller Verzweigungswerte des Weges bis zu dieser Zeit dar. Wiederum wird für jeden Zustand der Weg mit dem geringsten Wert (der verbleibende Weg) ausgewählt, alle anderen Wege eliminiert und das Gitter auf das in Fig. 1C dargestellte reduziert. Für jeden Zustand wird der verbleibende Weg abgespeichert, und zwar zusammen mit seinem Wert.
  • Die Geschichten der Wege werden, wie oben beschrieben, bei jeder Zeiteinheit länger. Sobald die abgespeicherten Geschichten der Wege verlängert wurde, so daß j = m + L - 1 ist (worin L die Abschneidelänge ist), findet der Decoder den Minimalweg (kleinster Wert) unter den verbleibenden Wegen heraus. Aus diesem verbleibenden Weg bestimmt der Decoder die beste Abschätzung der Untermenge oder des Zustands bei j = m. Dies wird zu jeder Zeiteinheit wiederholt, so daß beispielsweise bei j = m + L die Entscheidung für den Zustand oder die Untermenge von j + m + 1 getroffen wird.
  • In dem Gitter gibt es 2k Zustände (k = 2 in diesem Beispiel). Demzufolge werden für jede Zeiteinheit 2k Speicherworte für die verbleibenden Wege benötigt und zur Abspeicherung der Geschichten der Wege muß eine Informationssequenz der Länge 2k · L abgespeichert werden. Wie in Fig. 2A dargestellt ist, umfaßte das Verfahren zur Abspeicherung dieser Informationssequenzen in einem Speicher nach dem Stand der Technik ein Speicherfeld. Für jede Zeiteinheit werden die Untermengenauswahlbits (ohne Zustände) eines gegebenen verbleibenden Weges in einer Reihe abgespeichert. Wenn bei Betrachtung von Fig. 2A bei jedem Zeitintervall j - 1 angenommen wird, daß die Untermengenauswahlbits in dem Gitter als a, b, c und d geordnet sind und daß die Verlängerung des Weges dazu führt, daß die Untermengenauswahlbits zu der Abfolge a, c, b und d bei der Zeiteinheit j reorganisiert werden, muß jede der dargestellten Reihen, welche die Weggeschichte repräsentiert, verschoben werden, wie es durch die in Fig. 2A eingezeichneten Pfeile dargestellt ist, um einen neu arrangierten Speicher gemäß Fig. 2B zu erhalten. Um dies zu erreichen, wird angenommen, daß die Zustände sequenziell auf den neuesten Stand gebracht werden. Beim Zustand 0 wird das Register 3 in Fig. 2A in die erste Reihe in Fig. 2B geschrieben. Demzufolge wird das Register 0 durch das Register 3 zerstört. Wenn also der Zustand 1 auf den neuesten Stand gebracht wird, ist der verbleibende Weg im Register 0 verloren. Eine Methode zur Lösung dieses Problems besteht darin, das Register 3 in einem (nicht dargestellten) Puffer abzuspeichern und sodann das Register 2 in Fig. 2A in die Reihe 3 in Fig. 2B zu kopieren, das Register 1 in Fig. 2A in die Reihe 2 in Fig. 2B zu kopieren, das Register 0 in Fig. 2A in die Reihe 1 in Fig. 2B zu kopieren und die in dem Puffer abgespeicherte Reihe sodann in der Reihe 0 abzuspeichern. Für einen Faltungscode mit vielen Zuständen ist dieser Algorithmus sehr komplex.
  • Demzufolge kann, aus der Betrachtungsweise der Implementierung, jedesmal wenn j auf den neuesten Stand gebracht wird, jeder Zustand aus einer Vielzahl von Zuständen von Zeiten j - 1 herrühren. Es müssen also sämtliche Wege entsprechend der neuen Anordnung der Untermengenauswahlbits zur Zeit j neu angelegt werden. Um die Wege eines bestimmten Zustands neu anzuordnen, wenn die verbleibenden Wege aller anderen Zustände nicht bestimmt wurden, ist es zusätzlich notwendig, temporäre Speicher vorzusehen, um ein Überschreiben der Geschichte der Wege zu verhindern. Eine Alternative bestünde darin, zwei Tabellen vorzusehen.
  • Im Ergebnis müssen bei diesen bekannten Verfahren zu jedem Augenblick j die vergangenen Wege gelesen und an neue Stellen geschrieben werden. Für einen Faltungscode mit vielen Zuständen ist daher eine große Anzahl an Datenbewegungen erforderlich. Beispielsweise benötigt ein Faltungscode mit 64 Zuständen mit einer Abschneidelänge von 20 insgesamt 64 · 20 Schreib- und Leseoperationen.
  • In vorbekannten Schemata wurden die Zustände anstelle der Untermengenauswahlbits abgespeichert und eine Zuordnungstabelle wurde zur Erzeugung der Untermengenauswahlbits herangezogen, wenn diese benötigt wurden. Mit anderen Worten können bei dem genannten Beispiel die Untermengenauswahlbits bestimmt werden, wenn zwei aufeinanderfolgende Eingänge an den Codierer, beispielsweise der alte und der neue Zustand und ein Ausgang des Codierers, bekannt sind oder umgekehrt. Weil der Codierer bei jeder Zeiteinheit ein Bit Redundanz hinzufügt, konnte das bekannte Schema dies ausnutzen, indem der Eingang des Codierers anstelle des benötigten Ausgangs abgespeichert wurde, wodurch die Speicheranforderungen reduziert wurden, jedoch eine Zuordnungstabelle zur Wiedererzeugung der Untermengenauswahlbits notwendig wurde.
  • Das oben genannte Beispiel gilt für zweidimensional codierte Modulation, wobei der Ausgang des Codierers aus Untermengenauswahlbits besteht, welche auf zweidimensionale Untermengen von Signalpunkten abbildbar sind. Die Zeiteinheit ist ein Baud, also ein Symbolintervall oder eine Modulationsperiode. Das oben genannte Beispiel ist auch auf N-dimensional codierte Modulationssysteme (N > 2) anwendbar, wobei die untermengendefinierenden Bits auf eine multidimensionale Untermenge abbildbar sind. In diesem Fall ist die Einheitszeit ein Gruppenintervall, welches eine Vielzahl von Bauds umfaßt und das Gitter weist Parallelverzweigungen zwischen den Zuständen auf.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung besteht in einem Viterbi-Decoder zur Bestimmung eines Weges größter Wahrscheinlichkeit aus einer Vielzahl verbleibender Wege durch ein Gitter, welches eine Vielzahl von Zuständen aufweist, die für jede aus einer Vielzahl von Zeiteinheiten wiederholt werden, wobei die Anzahl der verbleibenden Wege gleich der Anzahl der Zustände in dem Gitter ist, der Viterbi-Decoder eine Vorrichtung zur Speicherung und zum Abrufen der Vielzahl verbleibender Wege aufweist und diese Vorrichtung zur Speicherung und zum Abrufen der Vielzahl verbleibender Wege gekennzeichnet ist durch:
  • ein Speichermittel mit einer Vielzahl von Gruppen adressierbarer Speicherstellen,
  • wobei die Anzahl der Gruppen gleich der Anzahl der Zustände in dem Gitter ist und jede dieser Gruppen zu einem einzigen dieser Zustände indexiert ist;
  • wobei in den Speichermitteln zusätzlich jede der adressierbaren Speicherstellen in jeder Gruppe zu einer einzigen Zeiteinheit aus der Vielzahl von Zeiteinheiten indexiert ist;
  • Abspeicherungsmittel zur Abspeicherung des vorangegangenen Zustandes des einen verbleibenden Wegs in jeder adressierbaren Speicherstelle, welche zu einem der Zustände dieses einen verbleibenden Weges indexiert ist;
  • Abrufmittel zum Abrufen des Weges größter Wahrscheinlichkeit durch wiederholtes Lesen einer der adressierbaren Speicherstellen, welche dem Weg größter Wahrscheinlichkeit zugeordnet ist zum Erhalten des vorangegangenen Zustandes des Weges größter Wahrscheinlichkeit und hierdurch zur Bestimmung, welche der adressierbaren Speicherstellen für die vorangegangene Zeiteinheit zu lesen ist;
  • wobei diese Abrufmittel Bestimmungsmittel umfassen, welche nach einer vorbestimmten Anzahl von Lesevorgängen der adressierbaren Speicherstellen ein letztes Paar benachbarter abgerufener Zustände des Weges größter Wahrscheinlichkeit dazu benutzen, um eine bestabgeschätzte untermengendefinierende Bitgruppe zu bestimmen.
  • Die Erfindung beinhaltet auch ein Verfahren zur Verwendung eines Viterbi-Decodierungsprozesses zur Bestimmung eines Weges größter Wahrscheinlichkeit aus einer Vielzahl verbleibender Wege durch ein Gitter, welches eine Vielzahl von Zuständen aufweist, die für jede aus einer Vielzahl an Zeiteinheiten wiederholt werden, wobei die Anzahl der verbleibenden Wege gleich der Anzahl der Zustände in dem Gitter ist, und das Verfahren durch folgende Schritte gekennzeichnet ist:
  • Bereitstellung eines Speichers mit einer Vielzahl von Gruppen adressierbarer Speicherstellen, wobei die Anzahl dieser Gruppen gleich der Anzahl der Zustände in dem Gitter ist;
  • Indexierung jeder dieser Gruppen zu einem einzigen dieser Zustände;
  • Indexierung jeder der adressierbaren Speicherstellen jeder Gruppe zu einer einzigen Zeiteinheit aus der Vielzahl an Zeiteinheiten;
  • Abspeicherung des vorangegangenen Zustandes des einen der verbleibenden Wege in jeder adressierbaren Speicherstelle, welche zu einem dieser Zustände der verbleibenden Wege indexiert ist;
  • Abrufen des Weges größter Wahrscheinlichkeit durch wiederholtes Lesen einer der adressierbaren Speicherstellen, welche dem Weg größter Wahrscheinlichkeit zugeordnet ist, um den vorangegangenen Zustand des Weges größter Wahrscheinlichkeit zu erhalten, um zu bestimmten, welche der adressierbaren Speicherstellen für die vorangegangene Zeiteinheit als nächstes zu lesen ist; und
  • Verwendung eines letzten Paares benachbarter, abgerufener Zustände des Weges größter Wahrscheinlichkeit zur Bestimmung einer bestabgeschätzten untermengendefinierenden Bitgruppe nach einer vorbestimmten Anzahl von Lesevorgängen der adressierbaren Speicherstellen.
  • Die Erfindung macht Gebrauch von einer Eigenschaft des Gitters, wobei bei einer gegebenen Zeiteinheit jeder neue Zustand des Gitters über den verbleibenden Weg mit nur einem vorangegangenen Zustand verbunden ist, obwohl entweder kein Weg, ein Weg oder eine Vielzahl von Wegen zu dem nächsten, darauffolgenden Zustand führen können.
  • Die Erfindung wird durch Verwendung eines Überlagerungsspeichers implementiert, welcher die Vielzahl der Gruppen der adressierbaren Speicherstellen abspeichert, wobei die neuesten Zustände für die neueste Zeiteinheit in der Gruppe adressierbarer Speicherstellen abgespeichert werden, welche vorher die ältesten Zustände für die älteste Zeiteinheit enthielten. Die Position der Gruppe adressierbarer Speicherstellen wird durch Verwendung eines Offset-Zeigers verfolgt, welcher nach Modulo-Art umläuft, wodurch keine Verschiebung der Gruppen adressierbarer Speicherstellen benötigt wird.
  • Die vorliegende Erfindung vermeidet die bekannten Schemata, welche einen ungeheuren Aufwand an Datenbewegungen verursachen. Beispielsweise benötigt die Erfindung nur L indirekte Lesevorgänge des Speichers (L ist die Abschneidelänge des Viterbi-Decoders). Demzufolge erspart die Erfindung für einen Faltungscode mit 64 Zuständen und L = 20 bis zu 90% der Rechenzeit eines TMS 32020 Prozessors. Darüberhinaus weist sie andere Vorteile auf, weil sie in der Lage ist, die Abschneidelänge zu variieren und eine Huckepack-Anordnung für parallele Übergangsabzweigungen aufweist.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Weitere Ziele und Vorteile der vorliegenden Erfindung werden durch die folgende Beschreibung unter Bezugnahme auf die begleitenden Zeichnungen ersichtlich, welche zeigen:
  • Fig. 1A ein Diagramm eines Gitters für ein faltungscodiertes Signal, welches sämtliche von den Zuständen bei der Zeiteinheit j = m bis j = m + 1 verlaufenden Verzweigungen zeigt, und zwar vor der Auswahl des verbleibenden Weges.
  • Fig. 1B das Gitter nachdem die verbleibenden Wege ausgewählt wurden.
  • Fig. 1C die verbleibenden Wege von der Zeiteinheit j = m + 1 bis j = m + 2.
  • Fig. 2A ein bekanntes Schema zur Abspeicherung einer Vielzahl verbleibender Wege.
  • Fig. 2B die in den Registern verschobenen Wege wie es in Fig. 2A durch die Pfeile dargestellt ist.
  • Fig. 3 ein vereinfachtes Blockdiagramm der Umgebung, in welcher die vorliegende Erfindung implementierbar ist.
  • Fig. 4A einen Faltungscodierer mit vier Zuständen, welcher in Kombination mit einer ersten Ausführungsform der vorliegenden Erfindung verwendet wird.
  • Fig. 4B ein Gitter für den Faltungscodierer mit vier Zuständen gemäß Fig. 4A.
  • Fig. 5 eine Zuordnungstabelle, in welcher der neue Zustand in Verbindung mit dem alten Zustand den Zugang zu einem untermengendefinierenden Bitpaar erlaubt.
  • Fig. 6 eine Zuordnungstabelle einer ersten Ausführungsform der vorliegenden Erfindung, welche in einem Computerspeicher implementiert ist, in dem die verbleibenden Wege abgespeichert sind.
  • Fig. 7 ein Blockdiagramm eines Übertragers eines Modems für eine andere Implementierung der vorliegenden Erfindung.
  • Fig. 8A die oberen beiden Quadranten der komplexen Ebene, der Signalkonstellation der vorliegenden Erfindung.
  • Fig. 8B die unteren beiden Quadranten der komplexen Ebene der Signalkonstellation der vorliegenden Erfindung.
  • Fig. 9 einen Teilbereich des oberen, rechten Quadranten der Signalkonstellation zur Illustration die Abstandseigenschaften dieser Konstellation.
  • Fig. 10 ein mit der vorliegenden Erfindung verwendetes Datenpaket.
  • Fig. 11 ein schematisches Diagramm eines Teilbereichs des Faltungscodierers, welcher die Untermengenauswahlbits erzeugt.
  • Fig. 12 einen Rahmen der Untermengenauswahlbits, welcher von dem Faltungscodierer erzeugt wurde.
  • Fig. 13 die Struktur des Faltungscodierers.
  • Fig. 14 zwei Zustände des Gitters, wobei die Verzweigungen zwischen dem gegenwärtigen Zustand Null und dem nächsten Zustand Null verlaufen.
  • Fig. 15 ein Blockdiagramm des Empfängers der vorliegenden Erfindung.
  • Fig. 16A die Speicheranordnung einer zweiten Ausführungsform der vorliegenden Erfindung.
  • Fig. 16B die Speicheranordnung ein Gruppenintervall nach Fig. 16A.
  • Fig. 16C die Speicheranordnung ein Gruppenintervall nach Fig. 16B.
  • Fig. 17 ein Flußdiagramm der Schreiboperation des in den Fig. 16A bis 16C dargestellten Speichers.
  • Fig. 18 ein Flußdiagramm der Abrufoperation für den in den Fig. 16A bis C dargestellten Speicher.
  • Fig. 19 die Modulo-Charakteristik der Schreib- und Wiederauffindungsoperationen.
  • Beschreibung bevorzugter Ausführungsformen
  • Zum Zwecke der Darstellung der vorliegenden Erfindung auf eine einfache und klare Weise ist in Fig. 3 der verbesserte Viterbi-Decoder mit einem zweidimensionalen Faltungscode in einem Übertrager 1 eines Modems 2 dargestellt. Der zweidimensionale Faltungscode wird von einem Faltungscodierer 3 mit vier Zuständen erzeugt. In Fig. 4A ist der Faltungscodierer 3a dargestellt, welcher zwei Verzögerungselemente 3b und 3c und ein exclusives Odergatter 3d umfaßt. Dieser Faltungscodierer 3a ist in Fig. 6 dargestellt und im einzelnen in dem hier in Bezug genommenen US- Patent 4,601,044 von Kromer et al beschrieben. Nach der Beschreibung einer ersten Ausführungsform wird der verbesserte Viterbi-Decoder im einzelnen in Verbindung mit seiner Implementierung in einer zweiten Ausführungsform für N-dimensional codierte modulierte Systeme beschrieben, wobei N größer als 2 ist.
  • Fig. 4B zeigt ein Gitter 4 des Faltungscodierers 3a gemäß Fig. 4A. In dem Gitter werden die vier Zustände für jede Zeiteinheit j - i (worin 0 ≤ i ≤ 7 ist) wiederholt und als 0, 1, 2 und 3 identifiziert. In der ersten dargestellten Ausführungsform beträgt die Zeiteinheit ein Band, also ein Symbolintervall oder eine Modulationsperiode. Jede Verzweigung 5 des Gitters 1 repräsentiert einen zulässigen Übergang des Codierers 3a von einem Zustand zu einem anderen. Demzufolge wird das Gitter als Diagramm sämtlicher zulässiger Übergänge zwischen dem gegenwärtigen Zustand und dem nächsten Zustand des Codierers verwendet. Weil der Codierer eine Abfolge von Zuständen durchläuft, wird durch die Verbindung der Verzweigungen 5 eine Vielzahl von Wegen 6 definiert. Obwohl eine Vielzahl von Wegen von einem gegebenen Zustand zeitlich vorwärts verlaufen können, gibt es, wie bei der Zeiteinheit j - 2 dargestellt ist, nur einen Weg, welcher von jedem gegebenen Zustand zeitlich rückwärts verlaufen kann. Der Zustand 1 hat beispielsweise bei j - 2 zwei von ihm zeitlich vorwärts verlaufende Wege, jedoch nur einen zeitlich rückwärts verlaufenden Weg.
  • Für jeden zulässigen Übergang von einem Zustand zu einem anderen erzeugt der Codierer 3a einen zwei-Bit-Ausgang (identifiziert als untermengendefinierende Bitgruppe), welcher auf eine von vier möglichen Untermengen von Signalsymbolen (Punkten) in einer zweidimensionalen Signalkonstellation abgebildet wird, wie sie in dem genannten US-Patent 4,601,044 beschrieben ist. Aus Fig. 5 ist ersichtlich, daß für jeden zulässigen Übergang von einem älteren Zustand zu einem neueren Zustand die untermengendefinierenden Bits des Codierers 3a in Dezimalschreibweise dargestellt sind, wodurch die Intervall-Logik des Faltungscodierers 3a definiert wird. Die Symbole "x" repräsentieren einen unzulässigen Übergang.
  • Auf herkömmliche Weise, wie es im US-Patent 4,601,044 beschrieben ist, wird das faltungscodierte Signal in dem Übertrager 1 moduliert und über ein bandbegrenztes Übertragungsmedium 7, beispielsweise eine Telefonleitung, wie in Fig. 3 dargestellt, übertragen. In einem Empfänger 8 eines Modems 9 wird das empfangene Signal demoduliert und ergibt empfangene, zweidimensionale, untermengendefinierende Bitgruppen. Auf an sich bekannte Weise wird innerhalb eines Viterbi-Decoders 9a über eine Abschätzungsmethode für die Sequenz größter Wahrscheinlichkeit mit Hilfe des Viterbi-Algorithmus der Weg größter Wahrscheinlichkeit bestimmt.
  • Der Viterbi-Decoder 9a verlängert in wohlbekannter Weise während jedes Symbolintervalls, das heißt während jeder Modulationsperiode oder jedes Bauds jeden der verbleibenden Wege zu ihren nächsten nachfolgenden Zuständen. Der Wert des verlängerten Weges wird erhalten, indem der Wert des verbleibenden Weges zu dem Verzweigungswert des verlängernden Weges addiert wird. Der verbleibende Weg im nächsten Block und bei einem gegebenen Zustand wird durch Vergleich der Werte aller verlängerten Wege herausgefunden, welche zu einem gegebenen Zustand führen und durch die Auswahl des Minimums hieraus. Auf diese Weise wird die Geschichte des verbleibenden Weges verlängert. Nachdem die Geschichte des Weges verlängert wurde, findet der Viterbi-Decoder den minimalen Weg unter den verbleibenden Wegen heraus und aus der Geschichte des Weges die beste Abschätzung für die untermengendefinierende Bitgruppe für das Symbolintervall, welches eine vorbestimmte Anzahl an Symbolintervallen in der Vergangenheit ist. Beispielsweise ist in Fig. 6 der Weg mit dem minimalen kumulativen Wert durch Sterne dargestellt, welche von der Zeiteinheit j zeitlich zurück zu Zeiteinheit j - 7 verlaufen. In der Zeiteinheit j würde der Decoder die beste Abschätzung des Zustandes des Codierers bei j - 7 als Zustand 1 bestimmen.
  • Bis zu diesem Punkt ist die beschriebene Struktur aus dem Stand der Technik wohlbekannt. Die Neuheit der Erfindung liegt in der Art, auf welche die Geschichte des Weges des Gitters abgespeichert wird zur Verwendung für die Berechnung der besten Abschätzungen der untermengendefinierenden Bitgruppen. Die Erfindung macht hierbei Gebrauch von den folgenden Eigenschaften des Gitters:
  • 1. Zu einer gegebenen Zeiteinheit j - i ist jeder neue Zustand in dem Gitter durch einen der verbleibenden Wege mit nur einem vorangehenden Zustand verbunden. In einem Gitter für ein zweidimensional codiertes moduliertes System, wie es in Fig. 4B dargestellt ist, ist jeder neue Zustand mit nur einem alten Zustand über eine einzelne Verzweigung verbunden. Wie später dargelegt wird, existieren in einem N-dimensionalen modulierten System (N > 2) eine Vielzahl paralleler Verzweigungen, welche von dem neuen Zustand zu einem einzelnen alten Zustand zurückreichen.
  • 2. Wenn die Zustände bei j - i und j - i - 1 bekannt sind, können die untermengendefinierenden Bitgruppen, welche auf die Übergänge von j - i bis j - i - 1 indexiert sind, bestimmt werden, indem beispielsweise die Zuordnungstabelle aus Fig. 5 verwendet wird. In der bevorzugten Ausführungsform wird diese Tabelle in dem Speicher eines Microcomputers in dem Empfänger 8 aus Figur 3 gespeichert. Für die Zwecke der Ansprüche werden bei dieser Ausführungsform Übergangsbits als untermengendefinierende Bits herangezogen, wobei für jedes Band eine untermengendefinierende Bitgruppe steht.
  • Als Ergebnis dieser beiden Eigenschaften wird der wahrscheinlichste Weg rekonstruiert und mit Hilfe der Zuordnungstabelle gemäß Fig. 6 abgerufen. Eine derartige Zuordnungstabelle ist in einem Speicher abgespeichert. Die Spalten des Speichers aus Fig. 6 sind zugeordnet (indexiert) einer Zeiteinheit j - i, wobei 0 ≤ i ≤ L - 1 ist (hierbei ist L die Abschneidelänge des Viterbi-Decoders). Weil bei der Zeiteinheit j eine Entscheidung zur Bestimmung des besten Schätzwertes des Zustandes bei j - L - 1 für jeden der verbleibenden Wege gefällt werden muß, müssen L Zustände abgespeichert werden und der kumulative Wert des Weges. Bei dieser einfachen Ausführungsform umfaßt jeder abgespeicherte Zustand ein Wort von zwei Bit Länge. Aufgrund der vereinfachten Darstellung ist L mit sieben Zeiteinheiten in Fig. 6 dargestellt, typischerweise beträgt L 16 bis 20 Zeiteinheiten.
  • Zusätzlich zur Indexierung jeder Zeiteinheit ist jede Reihe (Gruppe) des Speichers aus Fig. 6 einem einzigen der vier Zustände des Gitters zugeordnet (zu diesem indexiert). Demzufolge ist bei einer gegebenen Zeiteinheit j - i jede adressierbare Speicherstelle einer einzigen Verzweigung zugeordnet. Wie vorher erläutert, erstreckt sich von jedem gegenwärtigen Zustand eine einzige Verzweigung rückwärts zu dem vorhergehenden Zustand, auch wenn keine Verzweigung, eine Verzweigung oder eine Vielzahl von Verzweigungen sich von diesem gegenwärtigen Zustand zeitlich nach vorn erstrecken. Demzufolge ist jede adressierbare Speicherstelle nicht nur einem einzigen Zustand zugeordnet, sondern auch jeder einzelnen, von diesem Zustand nach hinten reichenden Verzweigung. Zu diesem Zeitpunkt (Zeiteinheit j) bildet jede einzelne Verzweigung (deren Anzahl vier beträgt), welche von den gegenwärtigen Zuständen nach hinten reicht, einen Teil von einem von vier einzelnen verbleibenden Wegen, während jedoch bei späteren Zeiteinheiten diese Verzweigung nicht mehr Teil der verbleibenden Verzweigungen sein kann, wie es durch die Verzweigung 5a in Fig. 4A dargestellt ist.
  • Die Speicherstellen sind vorzugsweise, jedoch nicht notwendigerweise, von oben nach unten zu den daneben, in der äußeren rechten Spalte gezeigten Zuständen indexiert. Jeder der vier verbleibenden Wege endet mit seinem gegenwärtigen Zustand bei j in einer der adressierbaren Speicherstellen in der Speicherspalte für j. Es gibt nur einen verbleibenden Weg, der in jeder dieser Speicherstellen endet. Zusammenfassend bedeutet dies, daß für jede Geschichte eines Weges (und damit für jede Reihe) L adressierbare Speicherstellen vorhanden sein müssen, wobei jede Speicherstelle ein Wort von N Bit Länge aufweist wobei in der ersten Ausführungsform N = 2 ist (L und n sind natürliche Zahlen). Nur eine Reihe ist jedem Zustand zugeordnet und jede adressierbare Speicherstelle darin ist einer gegebenen Zeiteinheit aus einer Sequenz aufeinanderfolgender Zeiteinheiten zugeordnet. In Fig. 6 sind die Spalten in der Tabelle von 1 bis 7 durchnumeriert.
  • In der Spalte der Zeiteinheit j - i ist in jeder adressierbaren Speicherstelle, welche die Beendigung einer Verzweigung bei einem dieser Speicherstelle indexierten Zustand repräsentiert, die Speicherstelle bei der Zeiteinheit j - i - 1 des Startzustandes dieser Verzweigung abgespeichert. Wenn man beispielsweise annimmt, daß der im Zustand 1 (Reihe 2) endende Weg den geringsten Wert aufweist, kann dessen Geschichte bis zur Zeiteinheit j - 6 wiedergefunden werden, wie es durch die mit Sternen markierten Werte dargestellt ist. Die Geschichte dieses Weges größter Wahrscheinlichkeit wird für jede Verzweigung zu einer Zeit extrahiert. Im einzelnen indiziert bei j der gespeicherte Wert in Reihe 2, daß der vorhergehende Zustand bei j - 1 gleich 2 ist. Dies definiert eine Verzweigung, welche sich vom Zustand 1 bei der Zeiteinheit j zum Zustand 2 bei der Zeiteinheit j - 1 erstreckt. Bei j - 1 indiziert die Tafel, wenn man zum Zustand 2 (Reihe 3) geht, daß der vorhergehende Zustand bei j - 2 gleich 1 ist. Bei der Zeiteinheit j - 3 indiziert die Tabelle, wenn man zum Zustand 3 (Reihe 4) geht, daß der vorhergehende Zustand bei j - 4 gleich 2 ist und so weiter bis j - 6. Bei jeder Zuordnung wird der Weg durch eine weitere Verzweigung verlängert. Es sei angemerkt, daß das Muster der mit Sternen versehenen Werte in Fig. 6 etwa dem in Fig. 4 dargestellten Minimalweg entspricht.
  • Zur Auffindung der Geschichte des minimalen Weges (Weg größter Wahrscheinlichkeit), welcher in den Fig. 4 bis 6 gekennzeichnet ist, wäre der adressierbare Speicher aus Fig. 6 wie folgt zugänglich. Ein Speicherfeld L(n) wird definiert, wobei n ein Index für die Zeiteinheiten der Geschichte des Weges ist. Demzufolge ist es, wenn einmal der Minimalwert des verbleibendes Weges bestimmt wurde, bekannt, daß seine erste Speicherstelle der Zustand 1 bei der Zeiteinheit j ist, wodurch mit Hilfe der Tabelle (table) Zuordnungen wie folgt getroffen werden können: Zeiteinheit vorangehender Zustand table
  • Es ist zu beachten, daß jeder bestimmte, vorangehende Zustand in der Zuordnungsoperation die Speicherstelle zur Auffindung des nächsten vorangehenden Zustandes definiert. Der aufgefundene Weg lautet: 2, 1, 3, 2, 1, 2 und 1. Die ältesten beiden Zustände bei den Zeiteinheiten j - 5 und j - 6 definieren den neuen Zustand bzw. den alten Zustand in der Nonversionstabelle aus Fig. 5, wobei die benötigte untermengendefinierende Bitgruppe für j - 5 bereitgestellt wird, also das Bitpaar, welches in Dezimalform als 0 dargestellt wird.
  • Im Ergebnis wird die Zuordnungstabelle in dem Speicher gebildet, wobei eine Gruppe von mindestens L adressierbaren Speicherstellen (eine für jede Zeiteinheit) zu jedem der Zustände des Gitters indexiert wird. Bei einer gegebenen Zeiteinheit hat ein verbleibender Weg mit einem gegebenen momentanen Zustand bei der zu ihm indexierten adressierbaren Speicherstelle den vorangegangenen Zustand dieses verbleibenden Weges abgespeichert. Für die vorhergehende Zeiteinheit definiert der vorangehende Zustand die adressierbare Speicherstelle, welche dem nächsten momentanen Zustand zugeordnet ist, woraus der nächste vorangegangene Zustand herausgefunden werden kann und so weiter, bis die gesamte Geschichte des Weges aus einem (L) · (M) Speicherfeld wiedergefunden wurde, worin M die Anzahl der Zustände bedeutet. Für die Zwecke dieser Beschreibung und der Ansprüche wird jede adressierbare Speicherstelle als einem "gegenwärtigen" Zustand indexiert betrachtet, während der Inhalt dieser Speicherstelle einen "vorangehenden" Zustand des Weges mit diesem besonderen gegenwärtigen Zustand bedeutet.
  • Bei der Darstellung gemäß Fig. 6 ist die Erfindung auf eine Weise in einem zyklischen Computerspeicher implementiert, die es unnötig macht, die Zustandsspalten jedesmal zu verschieben, wenn eine neue Gruppe gegenwärtiger Zustände empfangen und die älteste Gruppe von Zuständen nicht mehr benötigt wird. Wie weiter unten bei der Beschreibung der Implementation des 19,2 K Modems näher beschrieben wird, wird ein Offset-Zeiger 9b zur Markierung der gegenwärtigen Spalte für die Zeiteinheit j verwendet. Zu Zwecken der besseren Erläuterung sind die Spalten der Zuordnungstabelle von 1 bis 7 numeriert. Unter der Annahme, daß die anfänglichen Zeiteinheiten, wie in Fig. 6 dargestellt, den Spalten zugeordnet sind, zeigt der Zeiger anfänglich auf die Spalte 1, weil sie die gegenwärtigste Gruppe an Zuständen beinhaltet. Nach der nächsten Zeiteinheit wird der Inhalt der Spalte 7 (und der der Spalten davor, welche nicht dargestellt sind) nicht mehr benötigt und der gegenwärtigste Zustand wird in der der ältesten Zeiteinheit zugeordneten Spalte abgespeichert, wobei der Zeiger 9b auf diese Zeiteinheit zeigt. Aus Gründen der einfacheren Darstellung wird, wie in Fig. 6 dargestellt, angenommen, daß die Anzahl der Spalten im Speicher gleich der Abschneidelänge L ist. Die älteste noch benötigte Zustandsgruppe wäre dann in Spalte 6, wobei die den Spalten 7 bis 1 zugeordneten Zeiteinheiten entlang der Tabellenoberseite neu geordnet werden zu j, j - 6, j - 5, j - 4, j - 3, j - 2, j - 1. Nachdem die nächste Zustandsgruppe empfangen wurde, würde diese in Spalte 6 abgespeichert (wobei der Zeiger das gleiche anzeigen würde) und die Zeiteinheiten würden umgeordnet zu j - 1, j, j - 6, j - 5, j - 4, j - 3 und j - 2. Dieser Fortschritt des Zeigers würde sich für jede Zeiteinheit fortsetzen, und zwar in der Richtung von Spalte 7 nach Spalte 1, dann wieder zu Spalte 7 und so weiter. Für den Fall, daß die Abschneidelänge geringer als die Anzahl der möglichen Spalten ist (L < 7 in dem vereinfachten Beispiel), werden die gegenwärtigen Zustände immer noch in der der ältesten Zeiteinheit zugeordneten Spalte gespeichert. Demzufolge indiziert dieser Offset-Zeiger den gegenwärtigen Zeitabschnitt mit den gegenwärtigen Zuständen. Der Zeiger wird mithilfe einer Modulo-Arithmetik auf den neuesten Stand gebracht, so daß durch die zyklische Natur der Datenspeicherung die Notwendigkeit des Verschiebens der Daten von einer Spalte zu der nächsten vermieden wird.
  • Ein Vorteil der Erfindung ist, daß es durch dieses Verfahren mit der Geschichte von Zuständen nicht nötig ist, den gegenwärtigen Weg innerhalb des gleichen Registers mit dem korrekten alten Weg zu verbinden. Zur Zeit j - i ist es lediglich notwendig, den Zustand zu speichern, zu dem der Weg bei der Zeit j - i - 1 führt. Nachdem der Minimalwert bestimmt wurde, werden die untermengendefinierenden Bits durch Absuchen der Zustandsgeschichtstabelle gemäß Fig. 6 und anschließend der Umwandlungstabelle gemäß Fig. 5 erhalten. Dies erfordert lediglich L indirekte Lesevorgänge (L ist die Abschneidelänge). Beispielsweise kann bei einem Faltungscodierer mit 64 Zuständen und L = 20, wie er in einer anderen Ausführungsform später beschrieben wird, bis zu 90% der Prozessorzeit des TMS 32020 eingespart werden.
  • Wie aus der genauen Beschreibung der Ausführungsform für das multidimensional codierte System ersichtlich wird, weist die Erfindung auch andere Vorteile auf. Wenn die Zuordnungstabelle groß genug ist, kann die Abschneidelänge dadurch variiert werden, daß lediglich der Schleifenzähler in der oben genannten Methode geändert wird. Hierdurch wird Programmflexibilität erreicht und es werden keine besonderen Speicher- und Neuanordnungen benötigt. Falls parallele Übergangsverzweigungen von dem alten Zustand zu dem neuen Zustand existieren, wie bei multidimensional codierten Systemen, kann ein Index im Huckepack-Verfahren mitgeführt werden, um anzuzeigen, welche der Parallelverzweigungen den Zustand einnimmt. Um dies zu erreichen, kann ein zusätzlicher Lesevorgang stattfinden oder die Übergangsverzweigung kann durch Verwendung des Huckepack-Index erhalten werden.
  • Im folgenden wird der verbesserte Viterbi-Decoder der vorliegenden Erfindung in einem 19,2 K Bit pro Sekunde - Modem unter Verwendung eines N-dimensionalen Faltungscodes beschrieben. In Fig. 7 ist ein Blockdiagramm der verallgemeinerten Struktur eines Übertragers 10 eines Modems 12 dargestellt, in welchem die vorliegende Erfindung implementiert ist. In dem Übertrager 10 wird aus seriellen Digitaldaten von einer (nicht dargestellten) Datenquelle ein Informationsfluß 14 aus Bits hergestellt. Aus dem Informationsfluß 14 werden Bitsequenzen fester Länge von einem Seriell-Parallel-Konverter 16 herausgenommen, wodurch Bitpakete gebildet werden, welche einem Faltungscodierer 18 zugeführt werden. Ein Teil der Bits jedes einzelnen Pakets, symbolauswählende Bits, werden durch den Faltungscodierer 18 einem Symbolgenerator 22 zugeführt. Der verbleibende Anteil 24 der Bits des Pakets wird dem Faltungscodierer 18 zugeführt. Der Faltungscodierer 18 ist vorzugsweise, jedoch nicht notwendig, ein Codierer, der eine 2n-dimensional codierte Modulation erlaubt. Bei der bevorzugten Ausführungsform bildet ein Anteil des Ausgangs des Faltungscodierers 18, beispielsweise die untermengendefinierenden Bits 26, einen Block mit einer geraden Anzahl von Bits, beispielsweise bestehen die untermengenauswählenden Bits innerhalb eines Blockes aus zwei 2n Bits. Bei anderen Implementationen kann der Block eine ungerade Anzahl an Bits aufweisen. Die untermengenauswählenden Bits 26 werden dem Symbolgenerator 22 zugeführt. Für jedes empfangene Paket bilden die untermengenauswählenden Bits 26 und die symbolauswählenden Bits 20 einen Ausgang des Codierers 18, welcher als expandierte Bitsequenz identifiziert wird. Der Symbolgenerator 22 verwendet üblicherweise ein Paar (z. B. Bitgruppe) der 2n untermengenauswählenden Bits pro Baud (z. B. Symbolintervall/Modulationsperiode) zur Spezifizierung einer der vier Untermengen, in welche eine Symbolkonstellation aufgeteilt wird. Die symbolauswählenden Bits 20 werden von dem Symbolgenerator 22 verwendet, um ein Symbol (z. B. Signalpunkt in der Konstellation) von jeder Untermenge auszuwählen. Demzufolge wird jedes Paket von dem Konverter 16 auf eine Gruppe aus n 2-dimensionalen Symbolen in n Bauds (ein Gruppenintervall) abgebildet, wobei n > 1 einen multidimensionalen Punkt (Symbol) 28 definiert. Die multidimensionalen Symbole 28 werden auf herkömmliche Weise durch bandbreitenbegrenzende Filter gefiltert und zur Modulation eines Trägers in einer Modulations-Filter-Vorrichtung 30 verwendet, um einem bandbegrenzten Kanal 34 ein moduliertes Trägersignal 32 zuzuführen. Der Symbolgenerator 22 und die Modulations-Filter-Vorrichtung 30 definieren eine multidimensional codierte Modulationsvorrichtung 35.
  • Die spezifische Struktur des Übertragers 10 wird im folgenden beschrieben. Das Modem 12, in welchem die vorliegende Erfindung vorzugsweise, aber nicht notwendigerweise, implementiert ist, überträgt Daten bei einer Rate von 19200 Bit pro Sekunde. Die Symbolkonstellation 36, wie sie von dem Symbolgenerator 22 aus Figur 7 verwendet wird, ist in den Fig. 8A und 8B dargestellt, wobei die oberen beiden Quadranten und die unteren beiden Quadranten der komplexen Ebene der Konstellation 36 in den Fig. 8A bzw. 8B gezeigt sind. Zum Zwecke der Darstellung verwendet der Übertrager 10 eine achtdimensional codierte Modulation. Die Baudrate beträgt 2742,86 Symbole pro Sekunde bei 7 Bit pro Band. Die Konstellation 36 hat 160 komplexe zweidimensionale Symbole, z. B. Signalpunkte, wobei jedes Symbol einen spezifischen alphanumerischen Identifizierer besitzt. Die Symbole werden in äußere und innere Punkte aufgeteilt, wobei uni jeden äußeren Signalpunkt ein Kreis gezeichnet ist. Die Symbolkonstellation 36 ist in vier Untermengen A0, A1, B0 und B1 aufgeteilt, welche den ersten Teil des Symbolidentifizierers bilden. Nach dem Untermengenidentifizierer werden die Symbole innerhalb jeder Untermenge, getrennt für die inneren und äußeren Symbolgruppen, in dem Symbolidentifizierer durch die Nummer nach dem Bindestrich bezeichnet. Beispielsweise indiziert der Symbolidentifzierer "A0-5" für einen eingekreisten Punkt einen äußeren Punkt aus der Untermenge A0, wobei dieser spezielle Punkt mit der Nummer 5 innerhalb der äußeren Punkte der Untermenge A0 bezeichnet ist. Zusammenfassend ist die Konstellation nicht nur in vier Untermengen A0, A1, B0 und B1 unterteilt, sondern auch in einen Anteil innerer Punkte und einen Anteil äußerer Punkte. Obwohl die bevorzugte Ausführungsform vier Untermengen aufweist, sind auch andere Anzahlen von Anordnungen und Untermengen möglich. Die Einheiten der Graphen der Fig. 8A und 8B sind Volt.
  • Jede Untermenge wird durch eine in der folgenden Tabelle 1 dargestellte Zweibitzahl repräsentiert. Untermenge Untermengenindex
  • Auf diese Weise bilden die untermengenauswählenden Bits 26 einen Ausgang des (m, m - 1) Faltungscodierers 18 aus Fig. 7, welcher durch n zweidimensionale Untermengen der in Tabelle 1 dargestellten Form repräsentierbar ist. Die ganze Zahl m ist gleich 2n plus der Anzahl der symbolauswählenden Bits. MSB und LSB stehen für das signifikanteste bzw. am wenigsten signifikante Bit.
  • Zur besseren Darstellung der Abbildung von Untermenge zu Symbol durch den Symbolgenerator 22 wird ein Teilbereich des ersten Quadranten der Symbolkonstellation 36 gemäß Fig. 8A vergrößert und ist in Fig. 9 dargestellt. Die Symbole der Konstellation 36 befinden sich auf einem quadratischen Gitter der komplexen Ebene. Aus Fig. 9 ist ersichtlich, daß der maximale euklidische Abstand von 21/2(d) sowohl zwischen A0 und A1 als auch zwischen B0 und B1 auftritt. Der minimale Abstand von d liegt zwischen A0 und B0, A0 und B1, A1 und B0 und A1 und B1. Der maximale Hamming-Abstand tritt ebenfalls zwischen A0 und A1 als auch zwischen B0 und B1 auf.
  • In Fig. 10 ist ein Datenpaket dargestellt, welches von dem Seriell-Parallel-Konverter 16 aus Fig. 7 erzeugt wurde und 28 Bit enthält, welche dem Faltungscodierer 18 zugeführt werden. Die Bits x&sub8; - x&sub2;&sub8; sind die symbolauswählenden Bits 20. Wie in Fig. 11 dargestellte bilden die Bits x&sub1;, x&sub2;, x&sub3;, x&sub4;, x&sub5;, x&sub6; und x&sub7; die Eingangsbits 24 für den Faltungscodierer 18. Wie aus den Fig. 11 und 12 hervorgeht, sind die Ausgangsbits y&sub7;, y&sub6;, y&sub5;, y&sub4;, y&sub3;, y&sub2;, y&sub1; und y&sub0; des Codierers 18 in vier Bitgruppen (y&sub7; y&sub6;), (y&sub5; y&sub4;), (y&sub3; y&sub2;) und (y&sub1; y&sub0;) gruppiert, welche einen Block 48 aus Bits definieren. Wie im folgenden erläutert wird, bilden die Bits x&sub1; - x&sub7; nur einen Teilbereich des expandierten Bitsequenzausgangs des Codierers 18. Die Figuren 11 und 12 zeigen die Zuordnung der Bitgruppen für jedes Baud in dem Block 48, wobei jede Bitgruppe 50 in der bevorzugten Ausführungsform ein Bitpaar definiert. Jeder Block 48 hat die Dauer eines Gruppenintervalls (Zeitintervalls) und dauert vier Baud. Über Tabelle 1 korrespondiert jede Bitgruppe 50 mit einer der vier zweidimensionalen Untermengen A0, A1, B0 und B1. Ein Symbol wird von einer der zweidimensionalen Untermengen in jedem der vier Bauds übertragen. Bei Betrachtung auf einem multidimensionalen Niveau korrespondiert jeder Block 48 eines acht Bit Ausgangs des Codierers 18 mit einer aus 256 achtdimensionalen Symboluntermengen, wobei jede multidimensionale Symboluntermenge zu einer anderen Kombination aus vier zweidimensionalen Symboluntermengen korrespondiert. Beispielsweise korrespondiert die multidimensionale Symboluntermenge A1 B0 A0 B0 (11100010) zu den zweidimensionalen Symboluntermengen (11), (10), (00) und (10).
  • Von diesem Punkt an werden hochgestellte Zahlen zur Indizierung der Ordnung der Bits innerhalb des Blocks und tiefgestellte Za.hlen zum Bezug auf die Blocknummer, in welcher die Bits vorkommen verwendet. Beispielsweise wird das Bit x&sub7;, welches im Block 48 aus Fig. 12 in dem n-ten Block vorkommt, als xn&sup7; bezeichnet. Tabelle 2 zeigt die Zuordnung der Punkte von inneren und äußeren Punkten der Konstellation 36 in den Fig. 8A und 8B für verschiedene Werte von xn&sup8;, xn&sup9; und xn¹&sup0;. Das Bit xn&sup8; indizieit, ob der Block 48 äußere Punkte besitzt oder nicht. Falls der Block 48 (z. B. eines der Bauds des Blockes) einen äußeren Punkt aufweist, würde das Doppelbit xn&sup9; xn¹&sup0; indizieren, in welchem Baud (und daher in welcher Bitgruppe) der äußere Punkt vorkäme. In der folgenden Tabelle 2 bedeutet "Inner" einen inneren Punkt und "Outer" einen äußeren Punkt. baud Inner Outer
  • Tabelle 3 zeigt, wie die symbolauswählenden Bits 20 der Fig. 7 und 10 jeder Gruppe aus xn&sup8;, xn&sup9; und xn¹&sup0; zugeordnet werden. baud
  • Fig. 13 zeigt den Faltungscodierer 18 der Fig. 7 und 11 im Detail. Der Codierer 18 ist ein Codierer mit 64 Zuständen (8, 7). Wie vorher beschrieben, sind die Eingangsbits für den Codierer xni worin i = 1 bis 28 und die Ausgangsbits yni worin i = 0 bis 28 ist. In wohlbekannter Weise addiert der Codierer ein Redundanzbit; in der bevorzugten Ausführungsform addiert der Codierer jedoch weniger als 1 Bit pro Baud an Redundanz in das System. Codierer mit Redundanzen, welcher größer sind als 1 Bit (und damit Redundanzen von 1 oder mehr pro Baud) können in Verbindung mit der vorliegenden Erfindung verwendet werden. Eingangsbits xn&sup8; bis xn²&sup8; werden unverändert und unbenutzt durchgelassen und werden zu Ausgangsbits yn&sup8; bis yn²&sup8;. Eingänge xn&sup4; - xn&sup7; werden verwendet, durchlaufen den Codierer 18 jedoch ohne Änderung und werden zu Ausgangsbits yn&sup4; - yn&sup7;. Die Eingangsbits xn¹ - xn³ werden expandiert und bilden die Ausgangsbits yn&sup0; - yn³. Die Ausgangsbits von yn&sup0; bis yn²&sup8; werden als expandierte Bitsequenz identifiziert, welche die Untermengenauswahlbits yn&sup0; - yn&sup7; und die symbolauswählenden Bits yn&sup8; - yn²&sup8; umfaßt. Der Faltungscodierer 18 umfaßt vier Modulo-Zwei-Addierer 52, 54. 56 und 58, von denen jeder zum Empfang von mindestens einigen der Bits xn³, xn² und xn¹ geschaltet ist. Der Codierer 18 umfaßt sechs Verzögerungselemente 60, 62, 64, 66, 68 und 70, wobei jedes Element eine Verzögerung eines Gruppenintervalls (vier Baud) erzeugt.
  • Unter Bezugnahme auf Fig. 13 sind die Eingangs-Ausgangs-Beziehungen der untermengenauswählenden Bits 26 des Codierers 18 wie folgt (Gleichungen 1):
  • Darin ist D ein Verzögerungselement und bedeutet eine exklusive ODER-Operation.
  • Der Faltungscodierer 18 ist eine Vorrichtung mit finitem Zustand, welche eine Abfolge von Zuständen durchläuft, wobei jeder Zustand in der Zeit durch ein Gruppenintervall getrennt ist. Bezugnehmend auf die Gitterdiagramme gemäß Fig. 14 hat der Codierer 18 64 mögliche Zustände (von denen nicht alle dargestellt sind). Weil der Codierer 18 für einen gegebenen gegenwärtigen Zustand drei binäre Eingänge aufweist, sind nur acht der nächsten Zustände erlaubt. Welcher nächster Zustand eingenommen wird, ist eine Funktion des gegenwärtigen Zustands und der Kombination der xn¹, xn² und xn³ - Bits, welche in jedem Gruppenintervall empfangen werden. Jeder Übergang von einem Zustand zu einem anderen Zustand wird als Verzweigung identifiziert. Im allgemeinen kann das Gitter dazu verwendet werden, sämtliche möglichen Übergänge zwischen dem gegenwärtigen Zustand zu dem nächsten Zustand des Codieiers aufzuzeigen, obwohl nur die Verzweigungen 74 zwischen dem gegenwärtigen Zustand 0 und dem nächsten Zustand 0 in Fig. 14 dargestellt sind. Es gibt 256 mögliche Verzweigungen, welche in dem Gitter existieren können. Diese 256 Verzweigungen werden in zwei Gruppen von jeweils 128 Verzweigungen unterteilt. Die Verzweigungen von einem gegenwärtigen Zustand zu einem nächsten Zustand können entweder von einer oder von der nächsten Gruppe sein. Ausgehend von dem gegenwärtigen Zustand 0 existieren 128 Verzweigungen in dem Gitter 72 wobei 16 Verzweigungen zu jedem der 8 erlaubten nächsten Zustände verlaufen (nur ein Satz dieser 16 ist dargestellt). Auf ähnliche Weise können 128 Verzweigungen von jedem gegenwärtigen Zustand abzweigen und dies wird zwischen benachbarten Zuständen, welche durch Gruppenintervalle voneinander getrennt sind, kontinuierlich weitergeführt. In der bevorzugten Ausführungsform alterniert die von den beiden Gruppen mit 128 Verzweigungen verwendete Gruppe mit den Zuständen, z. B. der Zustand 0 bei Verwendung einer Gruppe und der Zustand 1 bei Verwendung der anderen Gruppe und so weiter.
  • Aus Fig. 13 und den Gleichungen 1 für den Codierer 18 ist ersichtlich, daß xn&sup7;, xn&sup6;, xn&sup5; und xn&sup4; die Zustände nicht beeinflussen. Mit anderen Worten führt eine Veränderung eines oder sämtlicher dieser Bits nicht zu einer Änderung des Zustands. Zwischen irgendwelchen zwei gegebenen Zuständen bei aufeinanderfolgenden Gruppenintervallen gibt es also die oben beschriebenen 16 parallelen Verzweigungen, wobei jeder der 16 Verzweigungen eine andere multidimensionale Symboluntermenge zugeordnet ist, wie es in Fig. 14 dargestellt ist. Dieser Satz von 16 parallelen Verzweigungen wird im folgenden als Nebensatz bezeichnet. Die 256 Verzweigungen können in 16 Nebensätze zerlegt werden. Zwischen einem gegenwärtigen Zustand und jedem der acht nächsten zulässigen Zustände gibt es also 16 Verzweigungen, wobei jede Verzweigung mit einer der 16 multidimensionalen Symboluntermengen eines gegebenen Nebensatzes markiert wird. Aus Fig. 14 ist ersichtlich, daß in der bevorzugten Ausführungsform 8 der Nebensätze geradzahligen Zuständen und 8 ungeradzahligen Zuständen zugeordnet sind. Aus Gründen der Darstellung sind in Fig. 14 nur die multidimensionalen Symboluntermengen des Nebensatzes dargestellt, welche den Verzweigungen zugeordnet ist, die von dem gegenwärtigen Zustand 0 zu dem nächsten Zustand 0 verlaufen. Die multidimensionalen Symboluntermengen, welche jeder Verzweigung zugeordnet sind, können durch ganze Zahlen von 0 bis 255 indexiert werden. Der Index kann wie folgt ausgedrückt werden:
  • Index aus 8-dimensionaler Untermenge = 64 (Index der Untermenge für Baud 4) + 16 (Index der Untermenge für Baud 3) + 4 (Index der Untermenge für Baud 2) + Index der Untermenge für Baud 1.
  • Wie bei den jeder Verzweigung zugeordneten multidimensionalen Symboluntermengen sind die zweidimensionalen Untermengen darin vorzugsweise, jedoch nicht notwendig, als Block von Untermengen für die Bauds 4, 3, 2, 1, in dieser Reihenfolge, angeordnet. Der Codierer 18 überträgt 29 Bits in 4 Bauds oder 7,25 Bit pro Baud.
  • Ein Empfänger 80 des Modems 10 ist allgemein in dem Blockdiagramm gemäß Fig. 15 dargestellt und umfaßt einen Demodulator 82. Das durch Rauschen beeinflußte modulierte Trägersignal wird über den Kanal 34 empfangen und auf herkömmliche Weise, welche hier nicht näher beschrieben wird, durch den Demodulator 82 geführt, was ein Basisbandsignal ergibt, welches aus einem Fluß empfangener zweidimensionaler Symbolsignale besteht. Wie im folgenden beschrieben wird, verarbeitet der Rest der Schaltung diesen Fluß empfangener zweidimensionaler Symbolsignale und entscheidet, welche der multidimensionalen Symbole mit Hilfe des Abschätzungsverfahrens der Sequenz der höchsten Wahrscheinlichkeit unter Verwendung des Viterbi- Algorithmus abgesendet wurden. Der Weg höchster Wahrscheinlichkeit wird bestimmt, indem festgelegt wird, welche zulässige multidimensionale Symbolsequenz bezüglich des quadrierten euklidischen Abstands (wie es im folgenden beschrieben wird) am nächsten an der empfangenen multidimensionalen Symbolsequenz liegt.
  • Ein Verzweigungswert ist der Abstand zwischen einem empfangenen multidimensionalen Signal und möglichen multidimensionalen Symbolen von der multidimensionalen Symboluntermenge, welche mit der Verzweigung des Gitters korrespondiert. Ein Viterbi-Decoder (wie er im folgenden beschrieben wird) berechnet einen kumulativen Wegwert für jeden der verbleibenden Wege während jedes Blocks. Dieser kumulative Wegwert ist die arithmetische Summe der Werte der einzelnen Verzweigungen, welche den Weg bilden. Es ist also notwendig, zunächst den Verzweigungswert für jede der vorher beschriebenen 256 Verzweigungen zu bestimmen. Wie weiter oben beschrieben, sind die Indices der idealen multidimensionalen Symbole in Eins-zu-eins-Korrespondenz mit der Sequenz der Baud-basierten zweidimensionalen Symbolmengen. Um den Abstand einer empfangenen Verzweigung und einer idealen Verzweigung mit einem bestimmten Indexwert herauszufinden, ist es daher notwendig zu wissen, wann der Empfängerblock beginnt.
  • Unter Bezugnahme auf Fig. 15 wird der Betrieb des Doppelbegrenzers 102 näher erläutert. Jedes empfangene multidimensionale Signal liefert Information in Form multidimensionaler Teilmenge der gesendeten multidimensionalen Punkte. Wie vorher beschrieben, kann das empfangene achtdimensionale Signal in vier zweidimensionale Signale zerlegt werden, welche aufeinanderfolgen. Im einzelnen kann jeder Block des empfangenen multidimensionalen Signals als R(1), R(2), R(3) bzw. R(4) dargestellt werden, wobei:
  • R(J) = [RX(J), RY(J)], 1 < J < 4 (Gleichung 2)
  • Ein Symbol (idealer Punkt) in der Signalkonstellation kann dargestellt werden als:
  • IDL(L, N) = [IDLX (L, N), JDLY (L, N)] (Gleichung 3)
  • Darin bedeuten:
  • L = 1 der Punkt gehört zur Teilmenge A0
  • L = 2 der Punkt gehört zur Teilmenge B1
  • L = 3 der Punkt gehört zur Teilmenge B0
  • L = 4 der Punkt gehört zur Teilinenge A1, und
  • N = Index des Punktes in der Teilmenge.
  • Für jedes L und J findet der Doppelbegrenzer 102 das N = Nmin, so daß
  • R(J) - IDL (L, Nmin) < R(J) - IDL (L, N) worin
  • R(J) - IDL (L, N) ² = RX(J) - IDLX (L, n) ² + RY(J) - IDLY(L, N) ² (Gleichung 4)
  • Der Doppelbegrenzer 102 findet also vier nächste Punkte für das empfangene Signal jedes Bauds. Für jedes Baud der vier Baudblöcke läßt sich der Abstand (Wert) zwischen jedem der idealen Punkte und dem empfangenen Punkt als d[J, L(J), Nmin (J)] beschreiben. Daher gilt
  • [d [J, L(J), Nmin(J)] = R(J) - IDL [L(J), Nmin(J)] (Gleichung 5)
  • Wie oben beschrieben, entspricht jede Verzweigung des Gitters einer möglichen multidimensionalen Symboluntermenge (und damit einem 4-Baud-Signal in dem Block), wobei in dieser Ausführungsform 256 Verzweigungen existieren, nämlich A0 A0 A0 A0 bis A&sub1; A&sub1; A&sub1; A&sub1;. Der Verzweigungswertrechner 100 berechnet den Verzweigungswert, welcher gleich oder proportional zu dVERZWEIGUNG(I) ist, worin dVERZWEIGUNG (I) definiert ist durch:
  • dVERZWEIGUNG(I) = [d²(1, L(1), Nmin(1)) + d²(2, L(2), Nmin(&sub2;)) + d²(3, L(3), Nmin(&sub3;)) + d²(4, L(4), Nmin(&sub4;))] (Gleichung 6)
  • Der Index I identifiziert die Verzweigung und läuft von 0 bis 255, die Berechnung wird also für jede Verzweigung wiederholt. Demzufolge bestehen an diesem Punkt 256 d²-Werte, einer für jede der 256 Verzweigungen, wobei jeder quadrierte Abstandswert d² die quiadrierten Abstände zwischen dem empfangenen zweidimensionalen Signal und den zweidimensionalen Symboluntermengen repräsentiert.
  • Daraufhin wählt der Verzweigungswertrechner 100 für jeden Teilsatz jeweils Gruppe aus 16 Verzweigungen) die Verzweigung aus, welche den geringsten Verzweigungswert hat, wodurch die Anzahl der konkurrierenden Verzweigungen (multidimensionale Symboluntermenge) von 256 auf 16 reduziert wird. Nur eine Verzweigung jedes Nebensatzes kann einen Teil des Weges größter Wahrscheinlichkeit bilden. Die beschriebene Reduktion um einen Faktor 16 der konkurrierenden Verzweigungen basiert darauf, welche Verzweigung dieses Nebensatzes die multidimensionale Symboluntermenge repräsentiert, welche am nächsten an dem empfangenen multidimensionalen Signal liegt.
  • Im allgemeinen verwendet der Viterbi-Decoder 104 in dem Empfänger 80 die empfangenen multidimensionalen Signale zur Abschätzung des ursprünglichen Wegs des Codierers 18 durch das Gitter, welches in Bezug auf Fig. 14 beschrieben wurde. Während jedes Blocks berechnet der Empfänger den Minimalweg und aus der Geschichte des Weges bestimmt er das abgeschätzte multidimensionale Symbol. Der Viterbi-Decoder 1,04 verlängert in wohlbekannter Weise während jedes Blocks (Gruppenintervalls) jeden der verbleibenden Wege zu seinem Nachfolgezustand beim nächsten Block. Der Wert des verlängerten Wegs wird erhalten, indem der Wert des Verbleiben den zu dem Verzweigungswert der entsprechenden Verzweigung, welche den Weg verlängert, addiert wird. Der Verbleibende beim nächsten Block bei einem gegebenen Zustand wird durch Vergleich der Werte aller verlängerten Wege herausgefunden, welche zu einem gegebenen Zustand führen und anschließende Auswahl des Minimums. Die Verlängerung der Weggeschichten kann mathematisch durch folgende Rechnung charakterisiert werden:
  • c(i, n) = Minimumj {c(j, n - 1) + r(i,j)} (Gleichung 7)
  • Darin ist c(j, n-1) der verbleibende Wert des j-ten Zustandes zur Zeit t = (n - 1) TBlock und r(i,j) ist der Verzweigungswert der Ausgangsverzweigung, welche den j-ten Zustand zur Zeit t = (n - 1 )Tf mit dem i-ten Zustand zur Zeit t = nTf verbindet. c(i, n), der Aufwand beim i-ten Zustandes zur Zeit t = nTf wird durch Minimierung über sämtliche j-Werte erhalten, welche mit dem Zustand i verbunden sind. Auf diese Weise wird die Weggeschichte des verbleibenden Wegs verlängert. Nachdem die Weggeschichte verlängert wurde, findet der Decoder 104 den Minimalweg unter den verbleibenden Wegen heraus und aus der Weggeschichte führt er die beste Abschätzung der multidimensionalen Symboluntermenge für das Gruppenintervall einem herkömmlichen Decoder 106 zu. Die Verzögerung zwischen dem gegenwärtigen Block und der gegenwärtigen Abschätzung (des letzten Symbols) kann 3v Blöcke betragen, worin v die Abhängigkeitslänge des Faltungscodierers 18 ist und in diesem Falle 6 beträgt.
  • Aus dem erhaltenen Wissen über die empfangene multidimensionale Sequenz und aus dem Wissen über die nächstliegende multidimensionale Symboluntermenge des Weges größter Wahrscheinlichkeit kann die beste Abschätzung für das übertragene multidimensionale Symbol (Punkt) erhalten werden. Aus dem abgeschätzten, übertragenen multidimensionalen Signal erzeugt der Faltungsdecoder 106 die Paketdaten. Schließlich wandelt ein Seriell-Parallel-Konverter 108 dieses Paket in serielle Daten um.
  • Das Modem, in welchem die vorliegende Erfindung implementiert wird, ist ein mikroprozessorbasiertes Modem. Der Fachmann erkennt, daß die Steuerungs- und Datenverarbeitungsschaltungen des mikroprozessorbasierten Modems typischerweise auch gebräuchliche Datenspeicherungselemente umfassen (z. B. ein ROM zur Programmspeicherung und zu ähnlichen Zwecken und ein RAM für veränderliche Eingangs- /Ausgangs-/Zwischenergebnisdaten, usw.), welche in herkömmlicher Weise einem Mikroprozessor CPU zugeordnet sind, wodurch die gewünschten Manipulationen digitaler Signale gemäß eines gespeicherten Programmes vorgenommen werden können. In der gegenwärtigen bevorzugten Ausführungsform werden die ohnehin vorhandenen Elemente Mikroprozessor-CPU, ROM und RAM auch zur Ausführung der Funktionen der vorliegenden Erfindung verwendet. Bei der vorliegenden Erfindung sind die Modemfunktionen in einem TMS 32020 Prozessor von Texas Instrument's implementiert. Unter Bezugnahme auf Fig. 7 werden alle darin dargestellten Übertrager-Modem-Funktionen vorzugsweise, jedoch nicht notwendig, von dem digitalen Signalprozessor ausgeführt. Nach der Filterung im Block 30 werden in herkömmlicher Weise ein Digital-Analog-Konverter und entzerrende Filter verwendet. Sämtliche Empfänger-Modem-Funktionen gemäß Fig. 15 werden vorzugsweise, aber nicht notwendig, durch den digitalen Signalprozessor ausgeführt. Vor der Demodulation wird das empfangene Signal in an sich bekannter Weise von einem Analog-Digital-Konverter und Filtern verarbeitet.
  • In Fig. 16A ist ein Speicherfeld 130 dargestellt, welches sich in einem RAM befindet und aus einer Vielzahl von Speicherblöcken 132 (nur teilweise dargestellt) besteht, wobei jeder Speicherblock aus einer Vielzahl adressierbarer Speicherstellen 134 (welche nur teilweise dargestellt sind) besteht. Die Anzahl der Speicherblöcke 132 ist gleich der maximal möglichen Tiefe (max. Tiefe) des Viterbi-Algorithmus. Die Abschneidelänge (L) des Viterbi-Algorithmus kann von dem Benutzer selektiv geändert werden, jedoch nicht die maximale Tiefe überschreiten. In der dargestellten Ausführungsform beträgt die maximale Tiefe 32 Gruppenintervalle, also 128 Baud. Typischerweise wird die Abschneidelänge zu 20 oder mehr Gruppenintervallen ausgewählt, was von dem Zustand der Übertragungsleitung abhängt. Wenn beispielsweise die Abschneidelänge 20 Gruppenintervalle beträgt bedeutet dies, daß die von 1 bis 20 durchnumerierten Speicherblöcke 132 verwendet werden. Jeder Block dieser Blocksequenz ist einer Vielzahl von Zeiteinheiten (Gruppenintervallen) j - i zugeordnet (zu diesen indexiert), wobei 0 &le; i &le; 31 aber nur die den Zeiteinheiten j - i zugeordneten Blöcke, bei welchen 0 &le; i &le; L - 1 ist, enthalten Zustandsmengen, welche gegenwärtig bei der Auffindung des Wegs verwendet werden. Die Abschneidelänge kann in an sich bekannter Weise nach Wunsch variiert werden. Die Anzahl der adressierbaren Speicherstellen in jedem Speicherblock 132 ist gleich der Anzahl der Zustände (P) des Gitters und beträgt bei der dargestellten Ausführungsform 64. Demzufolge ist die Größe des Speicherfeldes 130 gleich der maximalen Tiefe mal der Anzahl der Zustände P und das Abbilden des Speichers erfolgt durch Teilung des Speichers in Gruppen adressierbarer Speicherstellen, von denen jede einem gegebenen Zustand zugeordnet ist (zu diesem indexiert ist), wobei jede der adressierbaren Speicherstellen 134 in einer gegebenen Gruppe einer bestimmten Zeiteinheit und einem bestimmten Block 132 zugeordnet ist. Die in dem Speicherfeld 130 enthaltene Information kann in einen vorhergehenden Zustand, einer Zuordnungstabelle, wie sie in Fig. 6 dargestellt ist, formatiert werden. Jeder Speicherblock 134 korreliert mit einer Spalte und die adressierbaren Adressen für den gleichen Zustand der Spalten korrelieren mit einer Reihe. Wenn die Zuordnungstabelle in einem Speicher implementiert ist, bilden die adressierbaren Speicherstellen jedoch aus praktischen Gründen eine lange Sequenz.
  • Jede adressierbare Speicherstelle 134, welche einem gegenwärtigen Zustand eines der verbleibenden Wege (wie es oben im Detail beschrieben ist) zugeordnet ist (zu diesem indexiert ist), enthält einen vorhergehenden Zustand dieses verbleibenden Wegs. Mit dem Verstreichen jeder Zeiteinheit werden die in einem gegebenen Block 132 enthaltenen Zustände einer immer älteren Zeiteinheit zugeordnet bis der Inhalt dieses Blocks dadurch aufgegeben wird, daß der Block für die Speicherung des neuesten Zustandes verwendet wird, wie es im folgenden beschrieben wird.
  • Das Speicherfeld 130 wird wie folgt auf den neuesten Stand gebracht. Wenn in Fig. 16A L = 20 ist, repräsentieren die Speicherblockzahlen 1 bis 20 Blöcke adressierbarer Speicherstellen mit den Zuständen der verbleibenden Wege bei diesen Zeiteinheiten, welche anfänglich mit der Blocknummer immer älter werden. Zur besseren Erklärbarkeit wird anfänglich angenommen, daß in Fig. 16A Block 1 zu der neuesten Zeiteinheit j indexiert ist und daß Block 20 zu der Zeiteinheit j - L - 1 indexiert ist. Zu jedem Gruppenintervall, wenn die Zustände für eine neue Zeiteinheit für die gegenwärtige Zeiteinheit j empfangen werden, werden die vorher zu den Zeiteinheiten j - i indexierten Zustände zu den Zeiteinheiten j - i - 1 indexiert. Obwohl die Inhalte jedes Blocks nach unten verschoben werden könnten, um Platz für die neuesten Zustände zu schaffen (jeder Block immer zu der gleichen Zeiteinheit indexiert), werden erfindungsgemäß die neuesten Zustände in den vorher der ältesten Zeiteinheit zugeordneten Block gegeben, wie es in Fig. 16B dargestellt ist. Anfänglich ist dies der Block 32. Jeder Block 132 ist in den Zeichnungen durch seine Blocknummer identifiziert, gefolgt von der zugeordneten Zeiteinheit relativ zu der gegenwärtigen Zeiteinheit j. In der Folge rotieren, wie es in Fig. 16C dargestellt ist, die positionsindexierten Zeiteinheiten auf einer Modulo-Basis. Wie in den Fig. 16A bis 16C dargestellt verwendet ein in einem ROM abgespeichertes Programm um dieser Rotation zu folgen einen Dafensdreßzeiger 136 (genannt "Offset-Zeiger") zur Indizierung, in welchem Speicherblock 132 der Ort der Zustände, welche zu der neuesten Zeiteinheit indexiert sind ist und, nachdem dies bekannt ist, sind die Positionen der Zustände für die anderen Zeiteinheiten auch bekannt. Der Zeiger 136 springt von Block 1 zu Block 32 und dann zu jeder Zeiteinheit progressiv zu Blöcken mit abnehmenden Blocknummern bis er wieder Block 1 erreicht, worauf er wieder zu Block 32 springt.
  • Der Offset-Zeiger 136 wird durch eine Modulo-Arithmetik auf den neuesten Stand gebracht, nachdem jeder Dateneingang beendet ist. Aufgrund der zyklischen Natur der Modulo-Arithmetik werden keine Einschiebe- und Ausschiebeoperationen benötigt. Bei der dargestellten Ausführungsform wird eine Modulo-Q-Arithmetik verwendet, wobei die Basis Q gleich der Anzahl der Blöcke ist (und daher der Anzahl der indexierten Zeiteinheiten), und in diesem Fall 32 beträgt (identifiziert als max. Tiefe). Wenn L = Q beträgt wird der zu j - 31 indexierte Block, der vorher die ältesten verwendeten Zustände während der vorangegangenen Zeiteinheit enthielt, dazu verwendet, die neuesten Zustände während der darauffolgenden Zeiteinheit zu speichern. Wenn L = 20 beträgt, ersetzen die neuesten Zustände diejenigen Zustände, welche bei der Auffindung des Wegs über mehrere Zeiteinheiten nicht verwendet wurden.
  • Aus dem Flußdiagramm gemäß Fig. 17, welches bei Block 138 beginnt, ist ersichtlich, daß bei Block 140 die Startadresse für die Schreiboperation berechnet wird und gleich dem Tabellenursprung plus dem Offset (Anzahl der Blöcke von dem Tabellenursprung bis - ausschließlich - zu dem gegenwärtigen Speicherblock, welcher durch den Offset-Zeiger bezeichnet ist) mal die Anzahl der Zustände (P) in dem Block. Der Zähler bei Block 142 wird auf 1 gesetzt und bei Block 144 wird jede der 64 adressierbaren Speicherstellen beschrieben und durchläuft die Schleife 144, 146 und 148, und das Programm beendet diese Schleife bei Block 150, wenn KK = n Zustand (64 Zustände bei der dargestellten Ausführungsform) bei Block 146.
  • Bezugnehmend auf das Flußdiagramm gemäß Fig. 18 und die folgende Darstellung eines Computerprogramms werden die Daten von dem Speicherfeld auf folgende Weise abgerufen. In dem Programm werden die folgenden Symbole definiert:
  • < . . . > Inhalt der Adresse
  • mod (n, m) Modulo-Basis m von n
  • min. Knoten minimaler Knoten (erste und jüngste adressierbare Speicherstelle des Weges maximaler Wahrscheinlichkeit)
  • Tabelle (a, b) Zuordnungstabelle für die Übergangsbits, worin a & b Reihe & Spalte bedeutet
  • pstate vorhergehender Zustand
  • tptr Tabellenzeiger
  • newstat gegenwärtiger Zustand
  • trans bits Übergangsbits
  • Wie vorab beschrieben, wird der Weg mit dem geringsten Aufwand ausgewählt und die gegenwärtige adressierbare Speicherstelle (min. Knoten) des Weges ist daher bekannt. Das Programm weist die folgenden Schritte auf. Die Blöcke des Flußdiagramms gemäß Fig. 18 sind mit den Programmschritten durch Darstellung der Blöcke in eckigen Klammern neben den entsprechenden Schritten in dem Programm korreliert.
  • tptr = Tabellenursprung + Q · mod (offset, max. Tiefe)
  • tmin = tptr + min. Knoten ! Tabelleneingang [siehe Block 152]
  • pstate = < tmin> ! Zustand betritt minimalen Knoten
  • C Schleife zur Gewinnung von Daten L Blöcke zurück
  • C Beachte, daß die Tiefe sich entsprechend ändern kann.
  • C Diese ist abhängig von der maximalen Tiefe.
  • C Beachte, daß L - 1 indirekte Lesevorgänge stattfinden
  • do for kk = 1, L - 1 [siehe Blöcke 154 und 156]
  • newstat = pstate ! Speichere pstate
  • tptr = Tabellenursprung + Q x mod (offset + kk, max. Tiefe) + pstate
  • pstate = < tptr> ! Zustand kk Blöcke vorher end do
  • C Zuordnungstabelle für Übergangsbits [siehe Block 158]
  • C update offset
  • trans bits = table (pstate, newstat) z. B. Übergangsbits sind die zu gewinnenden Daten
  • offset = mod (offset - 1, max. Tiefe)
  • C Ende der Routine, Warten auf die nächste Erneuerung
  • Der Pfeil auf der Linie A-A in Fig. 19 zeigt in die Rotationsrichtung des Offset- Zeigers, welcher sich zyklisch um jede maximale Tiefe bewegt und der Pfeil auf der Linie B - B zeigt in die Richtung des tptr-Zeigers, welcher sich zyklisch um jede maximale Tiefe in der Gegenrichtung des Offset-Zeigers bewegt.
  • Für jeden in den Fig. 14 und 15 in Bezug genommenen Nebensatz wird in dem Verzweigungswertrechner 100 eine der 16 Parallelverzweigungen von jedem Nebensatz aufwandsbasiert ausgewählt. Diese Verzweigung wird durch die untermengendefinierenden Bits yn&sup0; bis yn&sup7; aus Fig. 13 definiert. Wie vorab beschrieben, bilden diese ausgewählten Verzweigungen einen Teil der verbleibenden Wege. Bei dieser einfachsten Implementierung können die untermengendefinierenden Bits, welche eine gegebene, ausgewählte Verzweigung bilden, in adressierbaren Speicherstellen für den gegenwärtigen Zustand dieses Übergangs abgespeichert werden. Aufgrund praktischer Größen der Speicherstellen in der tatsächlichen Implementierung der vorliegenden Erfindung ist jedoch eine aufwendigere Anordnung wünschenswert. Im einzelnen ist in einer adressierbaren Speicherstelle für einen gegebenen gegenwärtigen Zustand eine Verzweigungsindexnummer von 1 bis 16 abgespeichert, welche die Verzweigung (untermengendefinierenden Bits) innerhalb eines gegebenen Nebensatzes identifiziert, der aufwandsbasiert ausgewählt wurde für den Übergang von einem vorhergehenden Zustand zu diesem speziellen gegenwärtigen Zustand. Dies erfordert lediglich 4 Bit anstelle von 8 Bit, welche zur Abspeicherung der Verzweigung zur Abspeicherung der untermengendefinierenden Bits benötigt würden. Zusätzlich werden der gegenwärtige Zustand und der vorhergehende Zustand zum Zugang zu der oben unter Bezugnahme auf das Computerprogramm zur Erhaltung der Übergangsbits beschriebenen Zuordnungstabelle verwendet. In diesem Fall sind die Übergangsbits gemäß Fig. 13 ein Teil der untermengendefinierenden Bits, und zwar die Bits yn&sup0;- yn³, wenn die Ausgangsbits yn&sup4; bis yn sämtlich 0 sind. Mit anderen Worten heißt das, daß diese letzteren Bits den Ausgang der Bits yn&sup0; bis yn&sup4; nicht ändern, wenn sie 0 betragen. Jedoch sind die Übergangsbits im Gegensatz zu der zweidimensionalen modulierten Ausführungsform für die anderen 15 Möglichkeiten in dem Nebensatz nicht die gleichen wie die untermengendefinierenden Bits. Ein Teil der Übergangsbits, welche für jeden Nebensatz einzigartig sind, wird jedoch zur Identifizierung des Nebensatzes verwendet. Mit dem durch die Übergangsbits identifizierten Nebensatz und der Abzweigungsindexnummer wird eine zweite Operation der Zuordnungstabelle ausgeführt. Die Inhalte, welche als Funktion der Nebensatznummer adressierbar sind und die Indexnummer sind unten in Tabelle 4 dargestellt und jeder der erhaltenen Werte ist ein untermengendefinierendes Bit (wie durch die Untermengenbezeichnungen dargestellt) für eine gegebene Abzweigung innerhalb einer gegebenen Untermenge. Es sei angemerkt, daß die letzten beiden Untermengenbezeichnungen in der ersten Verzweigung jedes Nebensatzes (wobei yn&sup4; - yn&sup7; Null betragen) die Binäräquivalente der dezimalen Nebensatznummer sind, beispielsweise entspricht für den Nebensatz 7 B1A1 der Zahl 7. Verzweigungsindex Nummer Nebensatz Nebensatz
  • Anstelle der Speicherung des vorangegangenen Zustands in der adressierbaren Speicherstelle, welche dem gegenwärtigen Zustand zugeordnet ist, wie bei der bevorzugten Implentierung, besteht eine Alternative darin, die untermengendefinierende Bitgruppe (z. B. ausgewählte Verzweigung wie in Tabelle 4 dargestellt) abzuspeichern, welche mit dem Übergang von dem vorangehenden Zustand zu dem bestimmten gegenwärtigen Zustand in der diesem gegenwärtigen Zustand zugeordneten adressierbaren Speicherstelle korreliert. Beim Auffinden des Weges kann der gegenwärtige Zustand mit seiner zugeordneten abgespeicherten untermengendefinierenden Bitgruppe zum Zugang auf eine Zuordnungstabelle verwendet werden, um den vorangehenden Zustand zu erhalten, welcher bei der bevorzugten Ausführungsform zur Lokalisierung der nächsten adressierbaren Speicherstelle in der vorangegangenen zu lesenden Zeiteinheit verwendet wird. Demzufolge erfordert eine derartige Implentierung einen zusätzlichen Schritt zum Erhalten des vorangegangenen Zustands. Wenn in den Ansprüchen steht, daß die adressierbare Speicherstelle den "vorangehenden Zustand" des Weges enthält, bezeichnet dieser Ausdruck nicht nur abgespeicherte Information, welche direkt den vorangehenden Zustand spezifiziert, sondern auch die Speicherung der entsprechenden untermengendefinierenden Bitgruppe, welche wiederum zur Bestimmung des vorangegangenen Zustands führt. Bei dieser letzteren Implementierung wird nach Zuordnung des vorangegangenen Zustands keine weitere Zuordnungsoperation mehr benötigt wie bei der bevorzugten Ausführungsform, um die untermengendefinierende Bitgruppe zu erhalten, weil diese Information bereits erhalten wurde. Für Faltungscodierer mit einer großen Anzahl von Zuständen wie in dieser 19,2 K Modem Implementierung ist diese letztere Technik aufgrund der großen Größe der Zuordnungstabelle nicht bevorzugt.
  • Obwohl bestimmte Ausführungsformen der Erfindung hier gezeigt und beschrieben wurden, stellt dies keine Begrenzung der Erfindung auf die Details dieser Ausführungsformen dar. Im Gegenteil deckt die Erfindung sämtliche Modifikationen, Alternativen, Ausführungsformen, Verwendungen und Äquivalente des Erfindungsgegenstands ab, soweit sie in den Schutzbereich der folgenden Ansprüche fallen.

Claims (12)

1. Viterbi-Decoder (104) zur Bestimmung eines Weges größter Wahrscheinlichkeit aus einer Vielzahl verbleibender Wege (6) durch ein Gitter (4; 72), welches eine Vielzahl von Zuständen aufweist die für jede aus einer Vielzahl von Zeiteinheiten (j - i) wiederholt werden, wobei die Anzahl der verbleibenden Wege gleich der Anzahl der Zustände in dem Gitter ist, der Viterbi-Decoder (104) eine Vorrichtung (9b; 130) zur Speicherung und zum Abrufen der Vielzahl verbleibender Wege aufweist und diese Vorrichtung zur Speicherung und zum Abrufen der Vielzahl verbleibender Wege gekennzeichnet ist durch: Speichermittel (9b; 130) mit einer Vielzahl von Gruppen adressierbarer Speicherstellen (134), wobei die Anzahl der Gruppen gleich der Anzahl der Zustände in dem Gitter ist und jede dieser Gruppen zu einem einzigen dieser Zustände indexiert ist;
wobei in den Speichermitteln zusätzlich jede der adressierbaren Speicherstellen in jeder Gruppe zu einer einzigen Zeiteinheit aus der Vielzahl von Zeiteinheiten indexiert ist;
Abspeicherungsmittel (9b; 130) zur Abspeicherung des vorangegangenen Zustandes des einen verbleibenden Wegs in jeder adressierbaren Speicherstelle, welche zu einem der Zustände dieses einen verbleibenden Wegs indexiert ist;
Abrufmittel (9b; 130) zum Abrufen des Weges größter Wahrscheinlichkeit durch wiederholtes Lesen einer der adressierbaren Speicherstellen, welche dem Weg größter Wahrscheinlichkeit zugeordnet ist zum Erhalten des vorangegangenen Zustandes des Weges größter Wahrscheinlichkeit und hierdurch zur Bestimmung, welche der adressierbaren Speicherstellen für die vorangegangene Zeiteinheit zu lesen ist;
wobei diese Abrufmittel Bestimmungsmittel (9b; 1 : 30) umfassen, welche nach einer vorbestimmten Anzahl von Lesevorgängen der adressierbaren Speicherstellen ein letztes Paar benachbarter, abgerufener Zustände des Weges größter Wahrscheinlichkeit dazu benutzen, eine bestabgeschätzte untermengendefinierende Bitgruppe zu bestimmen.
2. Viterbi-Decoder (104) nach Anspruch 1, wobei die dem einen Zustand indexierten adressierbaren Speicherstellen (134) mindestens zu einer Sequenz von L der Zeiteinheiten (j - i) indexiert sind, worin L die Abschneidelänge des Viterbi-Decoders ist.
3. Viterbi-Decoder (104) nach Anspruch 2, wobei die Bestimmungsmittel zur Bestimmung der abgeschätzten untermengendefinierenden Bitgruppe diejenigen Zustände verwendet, welche nach den L Lesevorgängen der adressierbaren Speicherstellen aufgefunden wurden.
4. Viterbi-Decoder (104) nach Anspruch 2, wobei die Zeiteinheit ein Symbolintervall umfaßt.
5. Viterbi-Decoder (104) nach Anspruch 2, wobei die Zeiteinheit ein Gruppenintervall umfaßt, welches aus einer Vielzahl von Symbolintervallen besteht.
6. Viterbi-Decoder (104) nach Anspruch 1, wobei die Speichermittel (9b, 130) einen zyklischen Speicher (1 : 30) umfassen, die Abspeicherungsmittel Mittel zur Abspeicherung einer Vielzahl neuester Zustände, welche zu einer neuesten Zeiteinheit indexiert sind, in dem zyklischen Speicher umfassen, und zwar in den adressierbaren Speicherstellen, welche zu einer ältesten Zeiteinheit indexiert sind, sowie einen Offset-Zeiger zur Identifizierung einer Position in dem zyklischen Speicher der Gruppe adressierbarer Speicherstellen, welche zu der neuesten Zeiteinheit indexiert sind.
7. Viterbi-Decoder nach Anspruch 6, wobei in dem Speichermittel (9b; 130) die Anzahl der adressierbaren Speicherstellen für jede Gruppe gleich der maximalen Tiefe ist, L als die Anzahl der adressierbaren Speicherstellen (134) für jede Gruppe definiert ist, welche diese Zustände aufweist, die mit Hilfe der Abrufmittel abgerufen werden, wobei die maximale Tiefe &ge; L ist und wobei die Abrufmittel Mittel zur Änderung von L umfassen.
8. Verfahren zur Verwendung eines Viterbi-Decodierungsprozesses zur Bestimmung eines Weges größter Wahrscheinlichkeit aus einer Vielzahl verbleibender Wege (6) durch ein Gitter (4; 72), welches eine Vielzahl von Zuständen aufweist, die für jede aus einer Vielzahl von Zeiteinheiten (j - i) wiederholt werden, wobei die Anzahl der verbleibenden Wege gleich der Anzahl der Zustände in dem Gitter ist und das Verfahren durch folgende Schritte gekennzeichnet ist:
Bereitstellung eines Speichers mit einer Vielzahl von Gruppen adressierbarer Speicherstellen (134), wobei die Anzahl der Gruppen gleich der Anzahl der Zustände in dem Gitter ist;
Indexierung jeder dieser Gruppen zu einem einzigen dieser Zustände;
Indexierung jeder der adressierbaren Speicherstellen jeder Gruppe zu einer einzigen Zeiteinheit aus der Vielzahl von Zeiteinheiten;
Abspeicherung in jeder adressierbaren Speicherstelle, welche zu einem der Zustände eines der verbleibenden Wege indexiert ist, des vorangegangenen Zustands des einen der verbleibenden Wege;
Abrufen des Weges größter Wahrscheinlichkeit durch wiederholtes Lesen einer der adressierbaren Speicherstellen, welche dem Weg größter Wahrscheinlichkeit zugeordnet ist, um den vorangegangenen Zustand des Weges größter Wahrscheinlichkeit zu erhalten, um zu bestimmen, welche der adressierbaren Speicherstellen für die vorangegangene Zeiteinheit als nächstes zu lesen ist; und
Verwendung, nach einer vorbestimmten Anzahl dieser Lesevorgänge der adressierbaren Speicherstellen, eines letzten Paares benachbarter, abgerufener Zustände aus dem Weg größter Wahrscheinlichkeit zur Bestimmung einer bestabgeschätzten untermengendefinierenden Bitgruppe.
9. Verfahren nach Anspruch 8, wobei der Schritt der Indexierung die Korrelierung der adressierbaren Speicherstellen in jeder Gruppe mit mindestens einer Sequenz von L Zeiteinheiten umfaßt, wobei L die Abschneidelänge des Viterbi- Decoders ist.
10. Verfahren nach Anspruch 9, wobei der Schritt der Bestimmung der abgeschätzten untermengendefinierenden Bitgruppe die Verwendung der abgerufenen Zustände nach L Lesevorgängen der adressierbaren Speicherstellen umfaßt.
11. Verfahren nach Anspruch 8, wobei der Schritt des Abspeicherns die Abspeicherung einer Vielzahl neuester Zustände, welche einer neuesten Zeiteinheit zugeordnet sind, in einem zyklischen Speicher in den adressierbaren Speicherstellen umfaßt, welche einer ältesten Zeiteinheit zugeordnet sind sowie die Identifizierung einer Position in dem zyklischen Speicher der Gruppe adressierbarer Speicherstellen, welche der neuesten Zeiteinheit zugeordnet ist, durch Verwendung eines Offset- Zeigers.
12. Verfahren nach Anspruch 11, wobei die zu einem gegebenen Zustand indexierten adressierbaren Speicherstellen gleich der maximalen Tiefe sind, wobei L als Anzahl der adressierbaren Speicherstellen definiert ist, die dem abgerufenen gegebenen Zustand indexiert sind und wobei die maximale Tiefe &ge; L ist und außerdem der Verfahrensschritt des Änderns von L eingeschlossen ist.
DE3750583T 1987-01-28 1987-12-16 Viterbidekodierer mit verringerter zahl von datentransportoperationen. Expired - Fee Related DE3750583T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/007,860 US4748626A (en) 1987-01-28 1987-01-28 Viterbi decoder with reduced number of data move operations
PCT/US1987/003371 WO1988005945A1 (en) 1987-01-28 1987-12-16 Viterbi decoder with reduced number of data move operations

Publications (2)

Publication Number Publication Date
DE3750583D1 DE3750583D1 (de) 1994-10-27
DE3750583T2 true DE3750583T2 (de) 1995-02-16

Family

ID=21728485

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3750583T Expired - Fee Related DE3750583T2 (de) 1987-01-28 1987-12-16 Viterbidekodierer mit verringerter zahl von datentransportoperationen.

Country Status (6)

Country Link
US (1) US4748626A (de)
EP (1) EP0344213B1 (de)
JP (1) JPH02501970A (de)
CA (1) CA1288519C (de)
DE (1) DE3750583T2 (de)
WO (1) WO1988005945A1 (de)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4939555A (en) * 1987-05-13 1990-07-03 At&T Bell Laboratories Trellis coding arrangement
US4884272A (en) * 1988-02-10 1989-11-28 Mcconnell Peter R H Maximum likelihood diversity receiver
US4993046A (en) * 1988-06-24 1991-02-12 Nippon Telegraph And Telephone Corporation Coded modulation communication system
DE3910739C3 (de) * 1989-04-03 1996-11-21 Deutsche Forsch Luft Raumfahrt Verfahren zum Verallgemeinern des Viterbi-Algorithmus und Einrichtungen zur Durchführung des Verfahrens
US4991176A (en) * 1989-06-07 1991-02-05 At&T Bell Laboratories Optimal test generation for finite state machine models
US5068859A (en) * 1989-06-19 1991-11-26 California Institute Of Technology Large constraint length high speed viterbi decoder based on a modular hierarchial decomposition of the deBruijn graph
US5128967A (en) * 1989-07-24 1992-07-07 Motorola, Inc. Symbol state trellis maximum likelihood detection method
CA2020899C (en) * 1989-08-18 1995-09-05 Nambirajan Seshadri Generalized viterbi decoding algorithms
SE465697B (sv) * 1989-09-19 1991-10-14 Ericsson Telefon Ab L M Saett att i ett digitalt radiooeverfoeringssystem foer oeverfoering av signaler mellan en saendande och en mottagande radiostation alstra godhetstal foer hos den mottagande radiostationen erhaallna binaera siffror
US5144644A (en) * 1989-10-13 1992-09-01 Motorola, Inc. Soft trellis decoding
US5271042A (en) * 1989-10-13 1993-12-14 Motorola, Inc. Soft decision decoding with channel equalization
US5136593A (en) * 1989-10-30 1992-08-04 Carnegie-Mellon University Apparatus and method for fixed delay tree search
JP2795935B2 (ja) * 1989-11-24 1998-09-10 三菱電機株式会社 最尤系列推定装置
FI84866C (fi) * 1990-03-12 1992-01-27 Nokia Mobile Phones Ltd Foerbaettring av en viterbi-algoritm.
JPH0626346B2 (ja) * 1990-04-26 1994-04-06 郵政省通信総合研究所長 畳込み符号化直交fm・ビタビ受信方式
IT1240444B (it) * 1990-05-18 1993-12-16 Borsano Corrado Procedimento per l'attuazione della modulazione digitale multilivello mediante un elaboratore di segnali numerici
US5048056A (en) * 1990-06-08 1991-09-10 General Datacomm, Inc. Method and apparatus for mapping an eight dimensional constellation of a convolutionally coded communication system
US5113412A (en) * 1990-06-08 1992-05-12 General Datacomm, Inc. Method and apparatus for mapping an eight dimensional constellation of a convolutionally coded communication system
DE4038251A1 (de) * 1990-11-30 1992-06-04 Philips Patentverwaltung Entzerrer fuer ein digitales uebertragungssystem
US5243605A (en) * 1991-07-11 1993-09-07 Storage Technology Corporation Modified viterbi detector with run-length code constraint
JP2876497B2 (ja) * 1991-08-23 1999-03-31 松下電器産業株式会社 誤り訂正符復号化方法およびその装置
US5263052A (en) * 1991-09-30 1993-11-16 Motorola, Inc. Viterbi equalizer for radio receiver
US5377133A (en) * 1992-04-07 1994-12-27 Digital Equipment Corporation System for enhanced implementation of add-compare-select (ACS) functions
US5432803A (en) * 1992-04-30 1995-07-11 Novatel Communications, Ltd. Maximum likelihood convolutional decoder
US5491705A (en) * 1992-06-18 1996-02-13 The United States Of America As Represented By The Secretary Of The Air Force De bruijn graph based VLSI viterbi decoder
KR940010435B1 (ko) * 1992-08-31 1994-10-22 삼성전자 주식회사 비터비 복호기의 경로기억장치
WO1994011955A1 (en) * 1992-11-06 1994-05-26 Pericle Communications Company Adaptive data rate modem
US5588028A (en) * 1993-02-02 1996-12-24 U.S. Robotics Simplified trellis decoder
ZA947317B (en) * 1993-09-24 1995-05-10 Qualcomm Inc Multirate serial viterbi decoder for code division multiple access system applications
US5430744A (en) * 1993-09-30 1995-07-04 International Business Machines Corporation Method and means for detecting partial response waveforms using a modified dynamic programming heuristic
TW243568B (en) * 1993-11-16 1995-03-21 At & T Corp Digital signal processor with an embedded viterbi co-processor
US5465275A (en) * 1993-11-16 1995-11-07 At&T Ipm Corp. Efficient utilization of present state/next state registers
US5490178A (en) * 1993-11-16 1996-02-06 At&T Corp. Power and time saving initial tracebacks
EP0656712A1 (de) * 1993-11-16 1995-06-07 AT&T Corp. Viterbi-Entzerrer mit "Traceback" variabler länge
US5513220A (en) * 1993-11-16 1996-04-30 At&T Corp. Digital receiver with minimum cost index register
US5533065A (en) * 1993-12-28 1996-07-02 At&T Corp. Decreasing length tracebacks
US5724390A (en) * 1994-03-02 1998-03-03 Lucent Technologies Inc. MLSE before derotation and after derotation
US5497401A (en) * 1994-11-18 1996-03-05 Thomson Consumer Electronics, Inc. Branch metric computer for a Viterbi decoder of a punctured and pragmatic trellis code convolutional decoder suitable for use in a multi-channel receiver of satellite, terrestrial and cable transmitted FEC compressed-digital television data
US5619514A (en) * 1994-12-29 1997-04-08 Lucent Technologies Inc. In-place present state/next state registers
US5841796A (en) * 1995-03-14 1998-11-24 Comsat Corporation Apparatus and method for calculating viterbi path metric using exponentially-weighted moving average
US5822341A (en) * 1995-04-06 1998-10-13 Advanced Hardware Architectures, Inc. Multiport RAM for use within a viterbi decoder
US5844947A (en) * 1995-12-28 1998-12-01 Lucent Technologies Inc. Viterbi decoder with reduced metric computation
US5742622A (en) * 1996-03-12 1998-04-21 Discovision Associates Error detection and correction system for a stream of encoded data
US5923711A (en) * 1996-04-02 1999-07-13 Zenith Electronics Corporation Slice predictor for a signal receiver
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
US5751725A (en) * 1996-10-18 1998-05-12 Qualcomm Incorporated Method and apparatus for determining the rate of received data in a variable rate communication system
GB9622540D0 (en) * 1996-10-30 1997-01-08 Discovision Ass Trackback for viterbi decoder
US5872775A (en) * 1996-10-30 1999-02-16 Qualcomm Incorporated Method and apparatus for performing rate determination
US6108372A (en) * 1996-10-30 2000-08-22 Qualcomm Inc. Method and apparatus for decoding variable rate data using hypothesis testing to determine data rate
US6173429B1 (en) * 1997-03-14 2001-01-09 Harris Corporation Apparatus for providing error correction data in a digital data transfer system
US5970104A (en) * 1997-03-19 1999-10-19 Cadence Design Systems, Inc. Method and apparatus for generating branch metrics and branch indices for convolutional code Viterbi decoders
US6094465A (en) * 1997-03-21 2000-07-25 Qualcomm Incorporated Method and apparatus for performing decoding of CRC outer concatenated codes
CA2306842A1 (en) * 1997-11-03 1999-05-14 Harris Corporation Receiver for a reconfigurable radio system and method therefor
AU7102100A (en) * 1999-08-31 2001-03-26 Broadcom Corporation Memory-based shuffle-exchange traceback for gigabit ethernet transceiver
US7039062B1 (en) 1999-12-15 2006-05-02 Microtune (Texas) L.P. System and method for pulsed cable telephony
US20020031195A1 (en) * 2000-09-08 2002-03-14 Hooman Honary Method and apparatus for constellation decoder
US6920182B2 (en) 2001-01-09 2005-07-19 Microtune (Texas), L.P. Delta-sigma modulator system and method
US20020144209A1 (en) * 2001-02-20 2002-10-03 Cute Ltd. System for enhanced error correction in trellis decoding
JP2003125406A (ja) * 2001-09-25 2003-04-25 Hewlett Packard Co <Hp> 有向性非周期グラフに基づくビデオ符号化のモード選択最適化方法およびシステム
US8379851B2 (en) * 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US9246725B2 (en) * 2011-09-06 2016-01-26 Electronics And Telecommunications Research Institute Method of generating and receiving packets in low energy critical infrastructure monitoring system
US8644432B2 (en) 2012-04-05 2014-02-04 Freescale Semiconductor, Inc. Viterbi decoder for decoding convolutionally encoded data stream
KR102039062B1 (ko) * 2013-02-14 2019-10-31 한국전자통신연구원 Map 디코딩 장치 및 방법
US9191247B1 (en) * 2014-12-09 2015-11-17 MagnaCom Ltd. High-performance sequence estimation system and method of operation
US9705531B2 (en) * 2015-02-18 2017-07-11 eTopus Technology Inc. Multi mode viterbi decoder

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4015238A (en) * 1975-11-24 1977-03-29 Harris Corporation Metric updater for maximum likelihood decoder
US4240156A (en) * 1979-03-29 1980-12-16 Doland George D Concatenated error correcting system
GB8315363D0 (en) * 1983-06-03 1983-07-06 Gordon J A Decoding errorcorrecting codes
JPS6081925A (ja) * 1983-10-12 1985-05-10 Nec Corp 誤り訂正装置
US4583236A (en) * 1983-11-04 1986-04-15 Racal Data Communications Inc. Modified absolute phase detector
US4601044A (en) * 1983-11-04 1986-07-15 Racal Data Communications Inc. Carrier-phase adjustment using absolute phase detector
US4700349A (en) * 1984-02-06 1987-10-13 Codex Corporation Coded modulation system
US4586182A (en) * 1984-02-06 1986-04-29 Codex Corporation Source coded modulation system
US4581601A (en) * 1984-06-25 1986-04-08 At&T Bell Laboratories Multi-dimensional coding for error reduction
US4583078A (en) * 1984-11-13 1986-04-15 Communications Satellite Corporation Serial Viterbi decoder
US4631735A (en) * 1984-12-28 1986-12-23 Codex Corporation Coded modulation system with feedback
US4730322A (en) * 1985-09-27 1988-03-08 California Institute Of Technology Method and apparatus for implementing a maximum-likelihood decoder in a hypercube network
JPS62183226A (ja) * 1986-02-07 1987-08-11 Fujitsu Ltd シ−ケンシャル復号器

Also Published As

Publication number Publication date
WO1988005945A1 (en) 1988-08-11
CA1288519C (en) 1991-09-03
EP0344213B1 (de) 1994-09-21
US4748626A (en) 1988-05-31
EP0344213A4 (en) 1991-10-09
JPH02501970A (ja) 1990-06-28
DE3750583D1 (de) 1994-10-27
EP0344213A1 (de) 1989-12-06

Similar Documents

Publication Publication Date Title
DE3750583T2 (de) Viterbidekodierer mit verringerter zahl von datentransportoperationen.
DE3751039T2 (de) Modem und verfahren zur verwendung mehrdimensionaler kodierter modulierung.
DE69424972T2 (de) Rotationsinvariante Mehrpegelkodierungssysteme
DE69226361T2 (de) TCM-Schema mit nichtganzzahligen Datenraten, Rahmensignalen und Konstellationsumformung
DE3650757T2 (de) Gerät zur Übertragung von Datenbitgruppen und Verfahren zur Beurteilung der mit der grössten Wahrscheinlichkeit übertragenen Sequenz
DE69025061T2 (de) Kodierte Modulation für Mobilrundfunk
DE69029484T2 (de) Verfahren und Anordnung zur Fehlerkorrektur
DE69321866T2 (de) Mehrpegelkodierung mit Trellis-kodierter Modulation und Reed-Solomon-Koden
DE69431772T2 (de) Rotationsunabhängiges, trelliskodiertes Modulationssystem
DE3687603T2 (de) Kodiertes modulationssystem mit einem vereinfachten dekoder, faehig zur verminderung der folge der kanalverzerrung.
DE69224034T2 (de) Kodierte Modulation mit ungleichmässigem Fehlerschutz
DE69433397T2 (de) Trellis-kodierter QAM mit punktierten Faltungskoden
DE3785474T2 (de) Dekodierung von Brückennetzwerken und Koden.
DE69500157T2 (de) Signalverarbeitungsschaltung zur Durchführung des Viterbi Algorithmus
DE68915758T2 (de) Blockkodierungsschema für die Übertragung von partiellen Bits.
DE69224142T2 (de) Kodierte Modulation mit ungleichen Fehlerschutzebenen
DE69124727T2 (de) Kodierte Modulation mit ungleichen Fehlerschutzebenen
DE69515684T2 (de) Digitale datendekodierungsanordnung unter verwendung einer variablen entscheidungstiefe
DE69212695T2 (de) Decodierungseinrichtung
DE69321022T2 (de) Kodierte Modulation mit Verwendung einer Kombination von Faltungs- und Blockkodierung
DE69431981T2 (de) Fehlerkorrektursysteme mit veränderter Viterbidekodierung
DE69722571T2 (de) System und Verfahren zur digitalen Übertragung mit einem Produktkode kombiniert mit multidimensionaler Modulation
DE69831783T2 (de) Mehrstufige codierung mit zeitdiversity
DE3780831T2 (de) Digitale signalkodierung.
DE2805294C2 (de) Codierende Übertragungsanlage für Faksimile-Signale

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee