DE69212695T2 - Decodierungseinrichtung - Google Patents

Decodierungseinrichtung

Info

Publication number
DE69212695T2
DE69212695T2 DE69212695T DE69212695T DE69212695T2 DE 69212695 T2 DE69212695 T2 DE 69212695T2 DE 69212695 T DE69212695 T DE 69212695T DE 69212695 T DE69212695 T DE 69212695T DE 69212695 T2 DE69212695 T2 DE 69212695T2
Authority
DE
Germany
Prior art keywords
module
path
viprob
transition
vitalfa
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
DE69212695T
Other languages
English (en)
Other versions
DE69212695D1 (de
Inventor
Hans Johan Jozef Busschaert
Peter Paul Frans Reusens
Camp Ronny Maria Alfons Van
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.)
Nokia Bell NV
Original Assignee
Alcatel Bell NV
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 Alcatel Bell NV filed Critical Alcatel Bell NV
Publication of DE69212695D1 publication Critical patent/DE69212695D1/de
Application granted granted Critical
Publication of DE69212695T2 publication Critical patent/DE69212695T2/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

Landscapes

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

Description

    Decodiereinrichtung
  • Die vorliegende Erfindung bezieht sich auf eine Decodiereinrichtung, die den Viterbi-Algorithmus zur Decodierung gefaltet Codierter Nachrichten nutzt.
  • Der Viterbi-Decodieralgorithmus ist eine optimale und weit verbreitet genutzte, vorwärts gerichtete Fehlerkorrekturtechnik zur Entfernung von Rauschen auf digitalen Funksignalen. Jedoch ist dessen Hardwareimplementierung komplex und teuer, so daß der Einsatz eines Mehrzweckprozessors gegenüber einer speziellen Einrichtung im allgemeinen bevorzugt wird. Dies ist zum Beispiel für die Decodiereinrichtung der Fall, die im dem Artikel "Realtime implementation of the Viterbi decoding algorithm on a highperformance microprocessor" von S.M. Said u.a., veröffentlicht in der Zeitschrift "Microprocessors and microsystems", Band 10, Nr. 1, Januar/Februar 1986, Seite 11 bis 16, beschrieben wird. Darin wird der Viterbi-Algorithmus in die Schaltung (Firmware) eines Standardmikroprozessors MC68000, hergestellt von MOTOROLA, implementiert.
  • Ein Nachteil einer so bekannten Decodiereinrichtung besteht darin, daß diese nicht für die Ausführung des Viterbi-Decodieralgorithmus optimiert wurde. Dies trifft insbesondere zu, wenn ein hoher Durchsatz, eine geringe Leiterplattenfläche und eine geringe Leistungsaufnahme gefordert werden. Tatsächlich wurde deren Hardware entworfen, um mit Standardwortlängen z.B. von 16 bit umzugehen, und dies überschreitet im allgemeinen die Forderungen des besonderen Viterbi-Algorithmus und vergrößert dabei einige Verzögerungszeiten. Weiterhin umfassen der Mikroprozessor und seine zugehörigen Speicher und Peripherie mehr Schaltkreise, als für diese Anwendung benötigt werden, so daß sowohl die benötigte Leiterplattenfläche als auch die Leistungsaufnahme unnötig hoch sind.
  • Eine bevorzugte Implementierung wird zum Beispiel in dem Artikel aus INTEGRATION, THE VLSI JOURNAL, Band 8, Nr. 1, Oktober 1989, Amsterdam (NL), Seite 3 bis 16, Biver u.a.: "Architectural design and realization of a single chip Viterbi decoder" beschrieben. Diese andere bekannte Decodiereinrichtung enthält ein erstes Modul zur Berechnung der Übergangswahrscheinlichkeiten für die möglichen Zustandsübergänge zwischen zwei aufeinanderfolgenden Zuständen des Decoders und ein zweites Modul, um in Abhängigkeit von den Übergangswahrscheinlichkeiten die Pfadwahrscheinlichkeit für mögliche Pfade zu berechnen, die durch aufeinanderfolgende Zustandsübergänge gebildet werden und in jedem der Zustände enden, wobei die Decodiereinrichtung so eingerichtet wurde, daß sie für jeden der Zustände nur den Pfad auswählt, der den höchsten Wahrscheinlichkeitswert für den Pfad besitzt.
  • Wegen dieser anwendungsspezifischen Architektur werden sowohl die benötigte Fläche als auch die Leistungsaufnahme verringert, da die Hardwareimplementierung und die in dem Viterbi-Algorithmus genutzte Länge der Worte optimiert wurden.
  • Eine Aufgabe der vorliegenden Erfindung ist es, den Durchsatz dieser bekannten Einrichtung zu verbessern, während die Bitfehlerrate gesenkt wird.
  • Gemäß der Erfindung wird diese Aufgabe durch die Tatsache erreicht, daß das erste Modul für jeden der Zustandsübergänge eine Übergangsbitfehlerrate berechnet, die eine Funktion der Anzahl der in dem ersten Modul empfangenen Bits ist, die sich von den für den gleichen Zustandsübergang erwarteten Bits unterscheiden.
  • Der bekannte Viterbi-Decoder ist nicht zur Berechnung der Übergangsbitfehlerrate geeignet. Durch Berechnen der Übergangswahrscheinlichkeit und der Übergangsbitfehlerrate in dem gleichen ersten Modul wird der Durchsatz der Decodiereinheit verbessert.
  • Ein weiteres charakteristisches Merkmal der vorliegenden Erfindung besteht darin, daß das erste Modul für jeden Zustandsubergang die Übergangswahrscheinlichkeit und die Übergangsbitfehlerrate gleichzeitig berechnet.
  • Die Leistungsfähigkeit der Decodiereinrichtung der vorliegenden Erfindung wird weiterhin durch die Tatsache erhöht, daß das zweite Modul für jeden der ausgewählten Pfade eine Pfadfehlerrate berechnet, die sich aus der Summe der Übergangsbitfehlerraten der Zustandsübergänge zusammensetzt, die den Pfad bilden.
  • Weiterhin berechnet das zweite Modul gleichzeitig und parallel die Pfadwahrscheinlichkeit und die Pfadbitfehlerrate.
  • Die vorliegende Erfindung ist weiterhin dadurch gekennzeichnet, daß das erste Modul eine erste Steuerschaltung besitzt, die den Betrieb des ersten Moduls steuert, daß das zweite Modul eine zweite Steuerschaltung besitzt, die den Betrieb des zweiten Moduls steuert, und daß das erste und das zweite Modul unabhängig voneinander arbeiten, wobei deren Betrieb von einem gemeinsamen Steuermodul überwacht wird.
  • Auf diese Weise kann das erste Modul eine Übergangswahrscheinlichkeit berechnen, während das zweite Modul eine Pfadwahrscheinlichkeit berechnet. Diese Gleichzeitigkeit von Berechnungen verringert drastisch die Ausführungszeit von Berechnungen der Decodiereinrichtung in bezug auf die bekannte Einrichtung, die in dem vorher betrachteten Artikel beschrieben wurde, bei der all diese Berechnungen nacheinander ausgeführt werden.
  • Ein weiteres charakteristisches Merkmal der vorliegenden Erfindung besteht darin, daß die Decodiereinrichtung ein drittes Modul enthält, um aus den Pfaden, die von dem zweiten Modul ausgewählt wurden, nur einen Pfad auszuwählen, der mit der erwarteten Nachricht, die decodiert werden soll, übereinstimmt, wobei das dritte Modul eine dritte Steuerschaltung enthält, die den Betrieb des dritten Moduls steuert, und wobei das dritte Modul unabhängig von den ersten und zweiten Modulen arbeitet. Hierbei wird der Betrieb all dieser Module von dem gemeinsamen Steuermodul überwacht.
  • Die oben erwähnten und weitere Aufgaben und Merkmale der Erfindung werden, ebenso wie die Erfindung selbst, unter Bezugnahme auf die folgende Beschreibung einer Ausführungform besser verständlich. Dies erfolgt in Verbindung mit den zugehörigen Zeichnungen, wobei:
  • Fig. 1 ein Blockschaltbild eines Viterbi-Decoders VD gemäß der Erfindung ist;
  • Fig. 2 eine schematische Ansicht eines Faltungscodierer CE für die Verschlüsselung von Nachrichten ist, die durch den Viterbi- Decoder VD von Fig. 1 decodiert werden sollen;
  • Fig. 3 Zustandsübergänge in einem Bereich eines Trellis-Diagramms zeigt, das in dem Viterbi-Decoder von Fig. 1 genutzt wird;
  • Fig. 4 das "Softbit"-Schnittstellenmodul VISOFT von Fig. 1 mit mehr Einzelheiten zeigt;
  • Fig. 5 das metrische Berechnungsmodul für Zweige VITALFA von Fig. 1 mit mehr Einzelheiten darstellt;
  • Fig. 6 das Wahrscheinlichkeitsmodul VIPROB von Fig. 1 mit mehr Einzelheiten zeigt; und
  • Fig. 7 das Datenmodul VIDATA von Fig. 1 mit mehr Einzelheiten darstellt.
  • Die in Fig. 1 gezeigte Decodiereinrichtung VD ist ein Viterbi-Decoder, der in einem Bereich, etwa einem Viertel, eines einzelnen elektronischen Chips integriert wurde, der sich in einem Empfänger einer transportablen Mobilstation eines digitalen Zellularfunksystems befindet. VD wird zur Decodierung digitaler Nachrichten gemäß dem Viterbi-Faltungsdecodieralgorithmus benutzt, der zum Beispiel ausführlich, in dem Buch "DIGITAL COMMU- NICATION - Fundamentals and Applications" von B. SKLAR, veroffentlicht 1988 von "Prentice-Hall International, Inc.", und besonders in Kapitel 6 mit dem Titel "Channel Coding - Part 2" (Seite 314 bis 380) erklärt wird.
  • Die Nachrichten wurden vorher über Faltung in einem Sender des digitalen Zellularfunksystems verschlüsselt. In diesem Sender werden die an den Empfänger zu sendenden Datenbits zuerst zu getrennten Eingangsnachrichten oder Eingangsfolgen angeordnet, wobei jede eine Länge von m Eingangsdatenbits besitzt, wobei m zum Beispiel gleich 248 ist.
  • Diese Eingangsnachrichten werden dann in einem Faltungscodierer verschlüsselt, der einen Teil des Senders bildet. Ein Beispiel eines derartigen Codierers CE wird schematisch in Fig. 2 gezeigt. Der letztgenannte Codierer CE ist eine lineare, endliche Ablaufsteuerung, aufgebaut aus einem K-stufigen Schieberegister SR mit einem Eingang IN und Ausgängen, an die n Modulo-2-Addierer A1, A2, ..., An angeschlossen sind. Die n Ausgänge 01, 02, ..., On dieser Addierer sind mit einem Verschlüsselungsausgang OUT von CE über einen schematisch dargestellten Abtastschalter verbunden. K ist die sogenannte "Zwangslänge", die zum Beispiel gleich 5 ist, und stellt die Anzahl der Bitverschiebungen dar, um die ein Eingangsdatenbit einer Eingangsnachricht den Verschlüsselungsausgang OUT beeinflussen kann. Zu jedem Zeitpunkt, zu dem ein neues Eingangsdatenbit in das Register SR verschoben wird, werden alle Bits in diesem Register um eine Bitposition nach rechts verschoben, und die Ausgänge der n Addierer A1 bis An werden nacheinander abgetastet, um ein Schlüsselwort aus n codierten Bits an dem Verschlüsselungsausgang OUT hervorzubringen. Die Folge aus m*n codierten Bits, die von einer Eingangsnachricht abhängen, wird dann benutzt, um eine zu übertragende Signalform zu modulieren; "*" stellt hierbei das Multiplikationszeichen dar. Da es n verschlüsselte Bits für jedes Eingangsdatenbit gibt, ist die Verschlüsselungsrate, die aus dem Verhältnis der Anzahl der verschlüsselten Bits zur Anzahl der Eingangsdatenbits besteht, gleich n, also z.B. 2, 3 oder 6.
  • Ein Zustand des Codierers CE ist definiert als die K-1 am weitesten rechts liegenden Stufen oder Bitpositionen des Schieberegisters SR, so daß CE 2**(K-1) mögliche Zustände hat; "**" stellt hierbei das Exponent-Zeichen dar. Die Kenntnis eines aktuellen Zustandes und des nächsten Eingangsdatenbits der Eingangsnachricht ist notwendig und ausreichend, um einen folgenden Zustand zu bestimmen. Ein Übergang von einem aktuellen Zustand zu einem folgenden Zustand, d.h. zu dem Zustand an einem nachfolgenden Zeitpunkt, wird als "Zustandsübergang" bezeichnet. Nur zwei klar definierte Zustandsübergänge, die den zwei möglichen Eingangsdatenbits 0 und 1 entsprechen, können aus jedem Zustand abgeleitet werden, und es können folglich nur zwei klardefinierte Zustandsübergänge in einem bestimmten Zustand enden. Jeder Zustandsübergang kann entweder durch das nächste Eingangsdatenbit oder durch die verschlüsselten Bits dargestellt werden, die mit diesem nächsten Eingangsdatenbit erhalten werden. Es kann bewiesen werden, daß die verschlüsselten Bits, die einem der zwei möglichen Zustandsübergänge zugeordnet sind, die von einem Zustand aus beginnen, ein binäres Komplement gegenüber denjenigen bilden, die dem anderen Zustandsübergang zugeordnet sind. Das gleiche gilt für die verschlüsselten Bits der zwei Zustandsübergänge, die in einem Zustand enden. Der Wiederholcharakter dieser Struktur wurde ausgenutzt, um sämtliche Zustandsübergänge eines Codierers in einem Diagramm darzustellen, dem sogenannten "Trellis-Diagramm".
  • Eine vereinfachte Version eines Trellis-Diagramms, d.h. für eine Verschlüsselungsrate von n=2 und für eine Zwangslänge von K=3 (und nicht 5, wie in dem obigen Beispiel), ist teilweise in Fig. 3 dargestellt. In dieser Figur werden die (2**(K-1))=4 möglichen Zustände A, B, C und D durch einzelne Punkte zu einem Zeitpunkt t(i) sowie zu dem folgenden Zeitpunkt t(i+1) dargestellt, und die 8 möglichen Zustandsänderungen werden durch Linien dargestellt, die die 4 Zustände bei t(i) mit denjenigen bei t(i+1) verbinden. Jeder Zustand wird durch einen Binärwert definiert, z.B. A=00, B=10, C=01 und D=11. Durchgehende Linien kennzeichnen einen Zustandsübergang, der von einem Eingangsdatenbit 0 erzeugt wird, während unterbrochene Linien einen Zustandsübergang kennzeichnen, der von einem Eingangsdatenbit 1 erzeugt wurde. Zum Beispiel wird, beginnend bei dem Zustand B=10 zum Zeitpunkt t(i), ein Datenbit 0 zu einem Zustandsübergang führen, der bei Zustand C=01 zum Zeitpunkt t(i+1) endet, wobei der Zustandsübergang durch das Paar der verschlüsselten Bits 1 und 0 dargestellt wird. Andererseits wird dann ein Eingangsdatenbit 1 zu einem Zustandsübergang führen, der zum Zeitpunkt t(i+1) in dem Zustand D=11 endet, wobei dieser Zustandsübergang durch das Paar der verschlüsselten Bits 0 und 1 dargestellt wird.
  • Aus dem obigen folgt, daß, beginnend bei einem vorher festgelegten Anfangszustand, z.B. B, jedes Eingangsdatenbit einer Eingangsnachricht, das in den Codierer CE geschoben wurde, einem genaudefinierten Zustandsübergang entspricht, so daß die gesamte Nachricht aus m Eingangsdatenbits in dem Trellis-Diagramm durch einen Pfad dargestellt werden kann, der sich aus m aufeinanderfolgenden Zustandsübergängen zusammensetzt.
  • Wie später genauer erläutert wird, versucht der Viterbi-Decoder VD von Fig. 1 die Eingangsnachricht wiederherzustellen, die dann "voraussichtliche Nachricht" heißt, indem dieser einzelne Verschlüsselungspfad aus allen möglichen Pfaden in dem Trellis-Diagramm herausgeholt wird. Dies ist nur möglich, wenn der Decoder VD das Trellis-Diagramm des Codierers in einem Speicher mit der Bezeichnung "Zweig-Matrix" (SCNT, Fig. 5) speichert, z.B. unter der Form aller möglichen oder erwarteten Zustandübergänge und/oder ihres zugeordneten erwarteten (Eingangs-) Datenbits oder erwarteten verschlüsselten Bits, und wenn die Nachricht in einem vorher festgelegten Zustand, z.B. in dem Zustand A, endet. Zur Realisierung dieser letzten Bedingung werden auf der Codiererseite (K-1) Eingangsbits, die einen Binärwert von 0 und die "Auffüllbits" genannt werden, an die signifikanten Eingangsdatenbits jeder Eingangsnachricht angehängt, wobei die Gesamtlänge der Nachricht m beträgt. Diese Auffüllbits bewirken, daß der Pfad, gefolgt von einer Eingangsnachricht in dem Trellis-Diagramm des Codierers, in dem vorher festgelegten Zustand endet, z.B. A, indem die Inhalte des K-stufigen Schieberegisters SR von CE nach jeder dieser Eingangsnachrichten gelöscht werden.
  • Im Falle daß die verfügbare Übertragungsbandbreite durch die erforderlichen m*n codierten Bits einer Nachricht übertroffen würde, kann die durch den Codierungsalgorithmus erzeugte Redundanz etwas verringert werden, um exakt in diese verfügbare Bandbreite zu passen. Diese Redundanz wird durch Entfernen einiger codierter Bits verringert. Ein codiertes Bit, das von einer Nachricht entfernt wurde, wird als "punktiertes Bit" bezeichnet, und die Arbeitsweise der selektiv verworfenen Information, d.h. codierter Bits, gemäß eines vorher festgelegten Algorithmus wird "punktieren" genannt, wobei jeder mögliche Algorithmus einem Punktierungsschema entspricht. Durch eine geeignete Auswahl des Punktierungsschemas und somit der punktierten Bits kann die Übertragungsqualität akzeptabel bleiben trotz der verringerten Redundanz. Der Einsatz eines Punktierungsschemas wird somit allgemein gegenüber dem Einsatz einer geringeren Codierungsrate n bevorzugt, da eine derartige Rate die Redundanz und so die Übertragungsqualität drastischer verringern würde. Die Punktierungstechnik ist nach dem Stand der Technik bereits bekannt und wird deshalb nicht ausführlicher erläutert.
  • Der Empfänger (nicht dargestellt) einer mobilen Station enthält einen Demodulator und den in Fig. 1 gezeigten Viterbi-Decoder Nachdem eine Demodulation gemäß einem bekannten Demodulations verfahren durchgeführt wurde, holt der Demodulator die 4 höchstwertigen Bits aus 12-bit-Worten heraus, die sich aus diesem Demodulationsprozeß ergeben. Jeder Satz aus diesen 4 Bits wird "Softbit" genannt. Jedes Softbit ist somit eine quantisierte Darstellung eines der oben codierten Bits des Codierers.
  • Indem man das obige Punktierungsschema mit in Betracht zieht, erzeugt der Viterbi-Decoder VD zuerst korrekte Sätze aus n Softbits.
  • Mit Hilfe dieser Softbits und den Inhalten der Zweig-Matrix berechnet dann der Viterbi-Decoder VD einen wahrscheinlichsten Pfad durch das Trellis-Diagramm. Diese Berechnung wird in drei Arbeitsschritten ausgeführt, nämlich einem Vorwärtsdurchgang, einem Rückwärtsdurchgang und einer Ausgabephase.
  • Während des Vorwärtsdurchgangs berechnet VD für jeden empfangenen Satz aus n Softbits einen Wahrscheinlichkeitswert und weist diesen alle möglichen Zustandsübergängen zwischen zwei aufeinanderfolgenden Zeitpunkten zu, z.B. zwischen t(i) und t(i+1). Dieser Warscheinlichkeitswert wird "Übergangswahrscheinlichkeitswert" genannt und hat dann sein Maximum, wenn die Softbits genau den erwarteten codierten Bits aus der Zweigmatrix für ei- nen bestimmten Zustandsübergang entsprechen, während es sein Minimum hat, wenn keines der Softbits mit diesen erwarteten Co- dierten Bits übereinstimmt, beides für den Fall, daß alle Bits von einem Softbit mit dem gleichen Absolutwert dargestellt wer- den, z.B. der Dezimaiwert (+7) für eine logische 1 und der Dezimalwert (-7) für eine logische 0. Für den Fall, daß sich die Absolutwerte der Softbits unterscheiden, wird der folgende Ansatz benutzt: Wenn man für eine erwartete Folge, z.B. 1/0/1, Softbits mit einer Amplitude (+5)/(-1)/(+7) erhält, wird der Übergangswahrscheinlichkeitswert zu (+5)*(+1) + (-1)*(-1) + (+7)*(+l) = 13 berechnet, wobei die Amplitude für jedes Softbit für ein binäres Datenbit von 1 mit (+1) oder für ein binäres Datenbit von 0 mit (-1) multipliziert wird, wobei dann, wenn man Softbits mit einer Amplitude von (+3)/(+5)/(-1) empfängt, der Übergangswahrscheinlichkeitswert zu (+3)/(+1) + (+5)/(-1) + (-1)*(+1) = -3 berechnet wird.
  • Von jetzt an wird ein Übergangswahrscheinlichkeitswert mit AL- FA(xy) bezeichnet werden, wobei x und y zwei Zustände wie etwa die in Fig. 3 dargestellten A, B, C oder D sind, wobei x den Startzustand und y den Endzustand eines Zustandsübergangs darstellen.
  • VD berechnet ebenfalls die Pfadwahrscheinlichkeitswerte für jeden der 2**(K-1) Zustände. Ein Pfadwahrscheinlichkeitswert ist ein Wahrscheinlichkeitswert, der gleich der Summe der Zustandsübergangswahrscheinlichkeitswerte ist, die den Zustandsübergängen zugewiesen wurden, die einen möglichen Pfad durch das Trellis-Diagramm bilden und in einem bestimmten Zustand enden. Zu jedem Zeitpunkt und für jeden Zustand wird nur der Pfadwahrscheinlichkeitswert mit dem höchsten Wert ausgewählt und in ei-. nem ersten Speicher (MEMP, Fig. 6) von VD gespeichert. Dieser erste Speicher speichert somit die 2**(K-1) am ehesten möglichen Pfadwahrscheinlichkeitswerte. Von jetzt an wird ein Pfadwahrscheinlichkeitswert als PROB(y) bezeichnet werden, wobei y einen Endzustand eines Pfades darstellt.
  • Wenn für einen Zustand ein wahrscheinlichster Pfad ausgewählt wird, wird das wahrscheinlichste Datenbit, das dem letzten Zustandsübergang dieses Pfades entspricht, in einem zweiten Speicher (DMEM, Fig. 7) von VD gespeichert. Dies erfolgt zu jedem Zeitpunkt und für jeden Zustand, so daß der zweite Speicher in chern, d.h. m Datenbits für jede der 2**(K-1) wahrscheinlichsten Nachrichten, von denen jede in einem bestimmten Zustand endet.
  • Der Vorwärtsdurchgang wird für eine Nachrichtung abgeschlossen, wenn dieser zweite Speicher voll ist.
  • Wie bereits erwähnt, endet jede Eingangsnachricht mit einer festen Anzahl von Null-Bits, d.h. (K-11) Auffüllbits haben einen Binärwert von 0, wobei als Folge davon alle 2**(K-1) wahrscheinlichsten Pfade in dem Trellis-Diagramm zu dem vorher festgelegten Endzustand Y=A übergehen.
  • Diese Eigenschaft wird während des Rückwärtsdurchgangs ausgenutzt, wobei eine voraussichtliche Nachricht aus den 2**(K-1) wahrscheinlichsten Nachrichten ausgewählt wird, die in dem zweiten Speicher gespeichert werden. Diese voraussichtliche Nachricht entspricht in dem Trellis-Diagramm dem Pfad, der den höchsten Pfadwahrscheinlichkeitswert besitzt, und wird in umgekehrter Reihenfolge, d.h. beginnend mit dem vorher festgelegten Endzustand A, durch Verfolgen dieses Pfades rekonstruiert. Die voraussichtlichen Datenbits dieser voraussichtlichen Nachricht werden somit während des Rückwärtsdurchgangs in umgekehrter Reihenfolge gesammelt.
  • Schließlich werden während der Ausgabephase diese voraussichtlichen Datenbits wieder in die normale Reihenfolge gebracht und seriell zu einem Ausgang SOUT des Viterbi-Decoders VD übertragen.
  • Zusätzlich zur Erzeugung der voraussichtlichen Nachricht erzeugt der vorliegende Viterbi-Decoder VD ebenfalls gleichzeitig einen sogenannten "Pfadbitfehlerratenwert" BER(y), der die Anzahl der Softbits darstellt, die sich von den codierten Bits einer Nachricht unterscheiden, die in einem y-Zustand enden. Genauer gesagt, für jeden ausgewählten wahrscheinlichsten Zustandsübergang, hier mit xy für einen Übergang von einem Startzustand x zu dem Endzustand y bezeichnet, werden die zugehörigen Softbits mit den erwarteten codierten Bits verglichen, die in der Zweigmatrix von VD gespeichert sind. Das Ergebnis dieses Vergleichs wird "Übergangsbitfehlerratenwert" TBER(xy) genannt und ist gleich der Anzahl der Softbits, die sich (im Vorzeichen) von den codierten Bits unterscheiden. Für jeden ausgewählten wahrscheinlichsten Pfad, der in einem Zustand y endet, ist BER(y) gleich der Summe der Werte der Übergangs-Bitfehlerrate aller Zustandsübergänge des Pfades. Für jeden der 2**(K-1) Zustände wird ein Pfadbitfehlerratenwert in einem dritten Speicher (MEMB, Fig. 6) von VD gespeichert. Dieser dritte Speicher ist dem obigen ersten Speicher (MEMP, Fig. 6) zugeordnet, der die wahrscheinlichsten Pfadwahrscheinlichkeitswerte für den gleichen Zustand speichert. Der Wert der Bitfehlerrate des Pfades BER(y) dieser Nachricht wird an einem Ausgang BOUT des Viterbi-Decoders VD bereitgestellt.
  • Der in Fig. 1 dargestellte Viterbi-Decoder VD wird im folgenden zunächst allgemein und dann unter Bezugnahme auf die Fig. 4 bis 7 ausführlicher beschrieben.
  • VD besitzt eine 4-Segment-Dominoarchitektur, die die Blöcke VI- SOFT, VITALFA, VIPROB und VIDATA umfaßt, wobei diese gemeinsam von einem Steuermodul VICONT gesteuert werden. Die ersten vier Blöcke, d.h. das Softbit-Schnittstellenmodul VISOFT, das Berechnungsmodul für die Zweigmatrix VITALFA, das Wahrscheinlichkeitsmodul VIPROB und das Datenmodul VIDATA werden alle für den Vorwärtsdurchgang benötigt, wohingegen nur VIDATA gleichfalls für den Rückwärtsdurchgang und für die Ausgabephase benötigt wird.
  • Von dem oben genannten Demodulator des Empfängers und über einen Eingangsbus SBIN empfängt VISOFT Softbits und überträgt diese nach VITALFA, nachdem ein mögliches Punktierungsschema, so wie es oben beschrieben wurde, mit in Betracht gezogen wurde. Die Übertragung zwischen VISOFT und VITALFA wird über einen internen Bus BIT durchgeführt. VISOFT wird ebenfalls an den vorhergehenden Demodulator über zwei Steuerleitungen REQ und RDY angeschlossen. Über REQ fordert VISOFT von diesem Demodulator neue Softbits an, und über RDY zeigt dieser Demodulator an, daß die angeforderten Softbits an dem Eingangsbus SBIN verfügbar sind. Ahnliche Steuerleitungen RNEXT und SOKN bestehen zwischen VISOFT und VITALFA. Über RNEXT fordert VITALFA einen neuen Satz aus n Softbits von VISOFT an, und über SOKN zeigt VISOFT VITALFA, daß diese Softbits an dem BUS BIT verfügbar sind. Schließlich werden allgemeine Steuersignale und Konfigurationsinformationen, z.B. die Nachrichtenlänge m, die Codierungsrate n und das Punktierungsschema von dem gemeinsamen Steuerungsmodul VICONT an VISOFT sowie an VITALFA, VIPROB und VIDATA über einen gemeinsamen Steuerbus CTB geschickt, der all diese Blöcke verbindet.
  • VITALFA berechnet dann in Abhängigkeit von den n empfangenen Softbits für jeden möglichen Zustandsübergang in dem Trellis- Diagramm die Werte für die Übergangswahrscheinlichkeit ALFA(xy) für diese Zustandsübergänge. Wie bereits erwähnt, werden die Werte für die Übergangswahrscheinlichkeit ALFA(xy) durch Vergleich der n empfangenen Softbits mit den n erwarteten codierten Bits für den gleichen Zustandsübergang berechnet, wobei diese erwarteten codierten Bits in der Zweigmatrix (SCNT, Fig.5) gespeichert werden, die sich in VITALFA befindet. Die so berechneten Werte für die Übergangswahrscheinlichkeit ALFA(xy) werden dann über einen internen BUS ALFAB an VIPROB übertragen.
  • Gleichzeitig mit der Berechnung der wahrscheinlichsten Werte für die Übergangswahrscheinlichkeit ALFA(xy) berechnet VITALFA ebenfalls einen zugehörigen Wert für die Übergangsbitfehlerrate TBER(xy), der an VIPROB über einen internen BUS BERI bereitgestellt wird.
  • VIPROB berechnet dann einen neuen Satz wahrscheinlichster Pfadwahrscheinlichkeitswerte PROB (y), insbesondere für jeden (End-Zustand y, aus einem vorherigen Satz aus Pfadwahrscheinlichkeitswerten, die in dem obigen ersten Speicher (MEMP. Fig. 6) gespeichert sind, der sich wiederum in VIPROB befindet, sowie aus den Werten der Übergangswahrscheinlichkeit ALFA(xy), die von VITALFA geliefert werden. Für jeden Endzustand y ist der ausgewählte oder wahrscheinl ichste Pfadwahrscheinlichkeitswert PROB(y) gleich dem höchsten Wert aus den Summen aus den vorheri gen wahrscheinlichsten Werten für die Pfadwahrscheinlichkeit PROB(x), die in dem ersten Speicher gespeichert sind, und dem Übergangswahrscheinlichkeitswert ALFA(xy) für jeden Startzustand x. Wenn für einen Endzustand y auf diese Weise ein wahrscheinlichster Pfad durch das Tellis-Diagramm durch VIPROB erstellt wurde, wird das wahrscheinlichste Datenbit aus dem letzten wahrscheinlichsten Zustandsübergang für diesen Pfad gewonnen. Dieses wahrscheinlichste Datenbit wird dann an VIDATA über einen Anschluß DOUT übertragen.
  • Gleichzeitig mit der Berechnung eines wahrscheinlichsten Wertes für die Pfadwahrscheinlichkeit PROB(y) und deshalb mit der Auswahl eines Pfades und insbesondere des letzten wahrscheinlichsten Zustandsübergangs ALFA(xy) dieses Pfades berechnet VIPROB einen zugehörigen Wert der Pfadbitfehlerrate BER(y), der sich aus der Summe des Wertes der Übergangsbitfehlerrate TBER(xy) all dieser Zustandsübergänge xy zusammensetzt, die den ausgewählten Pfad bilden. Zu diesem Zweck enthält VIPROB den obigen dritten Speicher (MEMB, Fig. 6), in dem ein wahrscheinlichster Wert der Pfadbitfehlerrate BER(y) für jeden Endzustand y gespeichert ist. Wie für die Berechnung eines neuen PROB(y) ist ein neuer BER(y) gleich der Summe eines vorherigen BER(x), der in dem dritten Speicher gespeichert ist, und TBER(xy), der von VITALFA über den Bus BERI geliefert wurde. Allerdings wird für die Berechnung von BER(y) zwischen den 2**(K-1) Werten keine Auswahl getroffen, da BER(x) und TBER(xy) von dem letzten Zustandsübergang des wahrscheinlichsten Weges, der bereits von VIPROB ausgewählt wurde, bestimmt wurden und diesem entsprechen.
  • VITALFA und VIPROB sind weiterhin über zwei Steuerleitungen ACK und SOKA miteinander verbunden. Durch ACK fordert VIPROB einen neuen Übergangswahrscheinlichkeitswert ALFA(xy) und einen neuen Übergangsbitfehlerratenwert TBER(xy) von VITALFA. Weiterhin teilt VITALFA über SOKA VIPROB mit, daß diese Werte auf den Bussen ALFAB und BERI verfügbar sind.
  • VIDATA, das die wahrscheinlichsten Datenbits von VIPROB über den Anschluß DOUT empfängt, enthält den obigen zweiten Speicher (DMEM, Fig. 7), der in der Lage ist, m*2**(K-1) wahrscheinlichste Datenbits, d.h. die 2*+(K-1) wahrscheinlichsten Nachrichten, mit einer Nachricht für jeden Zustand zu speichern. Infolge der obigen Auffüllbits weiß man, daß die voraussichtliche Nachricht, d.h. die einzig verbleibende wahrscheinlichste Nachricht, die am Ausgang SOUT des Viterbi-Decoders VD bereitgestellt wird, in dem Zustand y=a endet. Der Inhalt des zweiten Speichers ist so angeordnet, daß VIDATA in der Lage ist, die (erwarteten) Datenbits der erwarteten Nachricht beginnend von diesem bekannten Endzustand A herauszuholen. Diese Datenbits, die so in umgekehrter Reihenfolge gesammelt wurden, werden vorübergehend wieder in dem zweiten Speicher gespeichert, allerdings in vorher festgelegten anderen Positionen. Wenn all diese voraussichtlichen Daten der voraussichtlichen Nachricht von VIDATA ausgewählt wurden, gibt letzterer diese voraussichtlichen Datenbits in der richtigen Reihenfolge an den Ausgang SOUT seriell aus.
  • Die Arbeitsweise der vier Hauptblöcke von VD wird im Anschluß unter Bezugnahme auf die Fig. 4 bis 7 ausführlicher beschrieben.
  • Fig. 4 zeigt das Softbit-Schnittstellenmodul VISOFT mit mehr Einzelheiten. VISOFT enthält eine Steuerschaltung oder endliche Ablaufsteuerung SFSM, an die die Steuerleitungen REQ, RDY, RNEXT und SOKN und der Steuerbus CTB angeschlossen sind. SFSM ist die sogenannte "lokale Intelligenz" von VISOFT und steuert über einen Anschluß PUNCT einen Punktierugs-Multiplexer PMUX, der ebenfalls in VISOFT enthalten ist. Der Eingang von PMUX ist der Eingangsbus SBIN, und dessen Ausgang ist der interne Bus BIT.
  • Der Zweck von PMUX besteht in dem Einfügen von punktierten Bits in den Fluß der über SBIN empfangenen Softbits. Über den Anschluß PUNCT steuert SFSM den Betrieb von PMUX gemäß einem Punktierungsschema, das von VICONT über den Steuerbus CTB empfangen wurde. PMUX ordnet dann den Fluß der Bits in Sätzen von jeweils n Softbits an. Bei von VITALFA über die Steuerleitung RNEXT lädt PMUX einen Satz aus n Softbits auf den Bus BIT und aktiviert das Signal auf der Steuerverbindung SOKN.
  • Das in Fig. 5 dargestellte Modul VITALFA empfängt dann in seiner Arithmetikeinheit ALUA den Satz aus n Softbits von VISOFT. ALUA enthält sechs Zwischenspeicher, die in der Lage sind, bis zu sechs Softbits zu speichern. Dies entspricht der oben betrachteten maximalen Codierungsrate. VITALFA enthält ebenfalls eine Steuerschaltung oder endliche Ablaufsteuerung AFSM, an die der Steuerbus CTB von VICONT und die Steuerleitungen RNEXT, SOKN, ACK und SOKA angeschlossen sind. Die lokale Intelligenz AFSM von VITALFA steuert ALUA über einen internen Bus LADR und steuert die obige Zweigmatrix SCNT über einen Anschluß CNT, wobei diese Matrix CNT an ALUA über einen Bus CMP angeschlossen ist. Die Ausgänge der Arithmetikeinheit ALUA sind mit VIPROB über die Busse ALFAB und BERI verbunden.
  • Die Zweigmatrix SCNT ist ein ROM-Speicher, in dem, wie bereits erwähnt, alle möglichen Zustandsübergänge des Trellis-Diagramms von der Verschlüsselungseinheit in der Form der erwarteten codierten Bits und/oder erwarteten Datenbits gespeichert sind. Unter der Steuerung von AFSM vergleicht ALUA für alle Zustands- übergänge, die in einem Zustand y enden, die erwarteten verschlüsselten Bits, die von SCNT über den Bus CMP empfangen wurden, mit den Softbits, die von VISOFT über den Bus BIT empfangen wurde. Die Ergebnisse dieser Vergleiche sind der obige Übergangswahrscheinlichkeitswert ALFA(xy) und der Übergangsbitfehlerratenwert TBER(xy), die von der Arithmetikeinheit ALUA, wie oben an Hand eines Beispiels beschrieben, berechnet werden, und die gleichzeitig auf die Busse ALFAB beziehungsweise BERI geladen werden.
  • In einer bevorzugten Ausführungsform und da die Übergangswahrscheinlichkeitswerte des Zustandsübergangs, die in einem bestimmten Zustand y enden, in ihrem Absolutwert gleich sind und sich nur in ihrem Vorzeichen unterscheiden, wird nur dieser Absolutwert mit der Bezeichnung "ALFA(y)" von VITALFA nach VIPROB über den Bus ALFAB übertragen. Auf die gleiche Weise sind die Übertragungsbitfehlerratenwerte binär komplementär, so daß es ausreichend ist, nur einen von ihnen an VIPROB als BER(y) über den Bus BERI zu übertragen.
  • In VIPROB, so wie es in Fig. 6 dargestellt wird, werden die wahrscheinlichsten Pfadwahrscheinlichkeitswerte für jeden Endzustand berechnet. Zum Beispiel ist ein neuer wahrscheinlichster Pfadwahrscheinlichkeitswert PROB(y), damit er in einem Zustand y endet und von einem Zustand x oder z startet, der höchste Wert zwischen PROB(x)+ALFA(y) und PROB(z)-ALFA(y), wobei PROB(x) und PROB(z) aus dem ersten Speicher MEMP gelesen werden und ALFA(y) über den Bus ALFAB empfangen wird.
  • Es soll festgehalten werden, daß das Trellis-Diagramm, von dem ein Bereich in Fig. 3 gezeigt wird, in eine Anzahl geschlossener Systeme mit der Bezeichnung "Falter" unterteilt werden kann. Ein Falter ist zum Beispiel das System, das die Zustände B und D zum Zeitpunkt t(i) und die Zustände C und D zum Zeitpunkt t(i+1) umfaßt, wobei diese Zustände jetzt als x, z, y beziehungsweise w bezeichnet werden. Man kann erkennen, daß die Berechnung eines vollständigen Falters, der zu einem neuen Pfadwahrscheinlichkeitswert (PROB) für die Zustände y und w führt, auf den gleichen Eingangswerten basiert, d.h. PROB(x), PROB(z) und ALFA(y) (oder ALFA(w)) . Es gelten die folgenden Gleichungen:
  • wenn PROB(x) + ALFA(xy) > PROB(z) + ALFA(zy)
  • dann PROB(y) = PROB(x) + ALFA(xy)
  • sonst PROB(y) = PROB(z) + ALFA(zy)
  • und
  • wenn PROB(x) + ALFA(xw) > PROB(z) + ALFA(zw)
  • dann PROB(w) = PROB(x) + ALFA(xw)
  • sonst PROB(w) = PROB(z) + ALFA(zw)
  • da ALFA(xy) = - ALFA(zy)
  • und ALFA(xy) = - ALFA(xw)
  • und ALFA(xw) = - ALFA(zw),
  • kann man daraus ableiten, daß ALFA(xy) = ALFA(zw) oder, entsprechend der obigen Schreibweise, daß ALFA(y) = ALFA(w), das man ebenso als ALFA(y/w) bezeichnen kann.
  • Da es 2**(K-1-1) Falter für jeden Zustandsübergang gibt, berechnet VIPROB 2**(K-2) Sätze mit Pfadwahrscheinlichkeitswerten (PROB) für jeweils zwei Endzustände.
  • Gleichzeitig werden neue wahrscheinlichste Pfadbitfehlerraten BER(y), BER(w) als BER(x) + TBER(y) oder BER(z) + (n - TBER(y)) und BER(x) + TBER(w) oder BER(z) + (n - TBER(w)) berechnet, wobei n die obige Codierungsrate darstellt. Dies erfolgt in Abhängigkeit von den neuen wahrscheinlichsten Pfadwahrscheinlichkeitswerten PROB(y) und PROB(w), die wie oben beschrieben ausgewählt wurden. BER(x) und BER(z) werden aus dem dritten Speicher MEMB gelesen, während TBER(y) und TBER(w) in VIPROB über den Bus BERI empfangen werden.
  • Genauer gesagt besteht VIPROB aus zwei gleichen Blöcken (oben und unten in Fig. 6), nämlich einem für die Handhabung der Pfadwahrscheinlichkeitswerte und dem anderen zur Verarbeitung der Pfadbitfehlerratenwerte. Der (obere) Wahrscheinlichkeitsblock von VIPROB enthält:
  • - einen Zwischenspeicher ALFAL für den Empfang der Übergangswahrscheinlichkeitswerte ALFA(y) von dem Bus ALFAB;
  • - zwei Arithmetikeinheiten ALUP2 für die gleichzeitige Berechnung der neuen Pfadwahrscheinlichkeitswerte PROB(x) + ALFA(y) und PROB(z) - ALFA(y) aus den vorherigen Pfadwahrscheinlichkeitswerten PROB(x) und PROB(z), die in dem Speicher MEMP gespeichert sind und dort über den Bus PBUS empfangen wurden, und aus dem Wert ALFA(y), der von diesen Arithmetikeinheiten von dem Zwischenspeicher ALFAL über einen Bus ALFAC empfangen wurde; und
  • - einen Vergleicher und Multiplexer PRMUX, an den sowohl ALUP1 als auch ALUP2 über die jeweiligen Busse PB1 und PB2 angeschlossen ist, und dessen Ausgang mit dem Speicher MEMP über den Bus PBUS verbunden ist, wobei, wie oben erläutert, PRMUX die neue wahrscheinlichste Pfadwahrscheinlichkeit PROB(y) aus den zwei Werten auswählt, die von ALUP1 und ALUP2 empfangen wurden.
  • Es soll festgehalten werden, daß der erste Speicher MEMP und der dritte Speicher MEMB zusammengehören und gemeinsam einen RAM- Speicher MEM bilden, der eine Kapazität von 2**(K-1) Worten von jeweils 20 bit besitzt. Der Bereich für die Pfadwahrscheinlichkeit MEMP von MEM speichert Worte von 12 bit, während der Bereich der Pfadbitfehlerrate MEMB von MEM Worte von 8 bit speichert und mit dem (unteren) Bitfehlerratenblock von VIPROB, wie unten beschrieben, verbunden ist.
  • Wie der (obere) Wahrscheinlichkeitsblock umfaßt der (untere) Bitfehlerratenblock:
  • - einen Zwischenspeicher BERIL für den Empfang der Übergangsbitfehlerratenwerte TBER(y) von dem BUS BERI;
  • - zwei Arithmetikeinheiten ALUB1 und ALUB2 für die gleichzeitige Berechnung der neuen Pfadbitfehlerratenwerte BER(x) + TBER(y) und BER(z) + (n - TBER(y)) aus den vorherigen Pfadbitfehlerratenwerten BER(x) und BER(z), die in dem Speicher MEMB gespeichert sind und dort über einen Bus BBUS empfangen wurden, und aus den Übergangsbitfehlerratenwerten TBER(y), die von dem Zwischenspeicher BERIL über einen Bus BERIB empfangen wurden; und
  • - einen Multiplexer BRMUX, mit dem sowohl ALUB1 als auch ALUB2 über die jeweiligen Busse OB1 und OB2 verbunden sind und von dem der Ausgang mit dem Speicher MEMB über den Bus BBUS verbunden ist, wobei BRMUX den neuen wahrscheinlichsten Pfadbitfehlerratenwert BER(y) aus den zwei Werten auswählt, die, wie oben erläutert, d.h. gemäß der durch PRMUX getroffenen Auswahl, von ALUB1 und ALUB2 empfangen wurden.
  • Der Vergleicher und Multiplexer PRMUX besitzt weiterhin einen Ausgang, der mit dem Anschluß DOUT verbunden ist und über den das wahrscheinlichste Datenbit dem letzten wahrscheinlichsten Übergangswahrscheinlichkeitswert des durch PRMUX ausgewählten Pfades entspricht, d.h. der Pfad mit dem höchsten Pfadwahrscheinlichkeitswert wird zu dem Datenmodul VIDATA übertragen. Gleichermaßen besitzt der Multiplexer BRMUX ebenfalls einen Ausgang, der mit dem Ausgangsanschluß BOUT des Viterbi-Decoders VD verbunden ist, und an dem der wahrscheinlichste Pfadbitfehlerratenwert BER(y) des ausgewählten wahrscheinlichsten Pfades verfügbar ist.
  • Schließlich enthält VIPROB eine Steuerschaltung oder endliche Ablaufsteuerung PFSM, die die lokale Intelligenz von VIPROB darstellt und an die der Steuerbus CTB und die obigen Leitungen ACK und SOKA angeschlossen sind. PFSM steuert die Arithmetikeinheiten ALUP1, ALUP2, ALUB1 und ALUB2 sowie den RAM-Speicher MEM über einen gemeinsamen internen Steuerbus ICB.
  • Wenn ein neuer wahrscheinlichster Pfadwahrscheinlichkeitswert PROB(y) durch PRMUX ausgewählt wurde, sagen wir zum Beispiel der Ausgang von ALUPL, dann wird dieser neue Wert PROB(y) in MEMP geschrieben, wobei das zugehörige letzte wahrscheinlichste Datenbit 0 oder 1 an DOUT übertragen wurde und BRMUX die Arithmetikeinheit ALUB1 auswählt, die zu ALUP1 gehört. Der Bitfehlerratenwert BER(y) an dem Ausgang von ALUB1 wird dann in MEMB über den Bus BBUS beschrieben und an den Anschluß BOUT übertragen.
  • All diese Arbeitsschritte werden nacheinander für die 2**(K-1) Zustände ausgeführt, wobei auf diese Weise nur jeweils ein wahrscheinlichster Pfad durch das Trellis-Diagramm gewählt wird, während der (die) andere(n) mögliche(n) Pfad(e) systematisch durch VIPROB entfernt wird (werden).
  • Wie bereits erwähnt, wird jedesmal, wenn ein Pfad von VIPROB ausgewählt wird, das wahrscheinlichste Datenbit, das dem letzten Zustandsübergang des Pfades entspricht, über DOUT nach VIDATA übertragen (dargestellt in Fig. 7). Dies bedeutet, daß für jede zu decodierende Nachricht VIDATA mx2**(K-1) Datenbits empfängt, wobei m die obige Nachrichtenlänge und K die Zwangslänge darstellen.
  • Um nur eine voraussichtliche Nachricht aus all diesen Datenbits herauszuholen, enthält VIDATA:
  • - den obigen zweiten Speicher DMEM, der in der Lage ist, 2**(K-1) wahrscheinlichste Nachrichten von jeweils m Datenbits zu speichern;
  • - ein 2**(K-1)-Schieberegister und Zwischenspeicher SLS für das Zwischenspeichern eines Satzes aus wahrscheinlichsten Datenbits;
  • - einen 2++(K-1)-zu-1-Bitmultiplexer DMUX;
  • - ein K-1-Bitschieberegister SLA für die Adressierung von DMUX;
  • - eine Auswahleinheit PSEL, um an SLS die Datenbits an den Anschluß DOUT oder an den Ausgang von DMUX zu übertragen; und
  • - eine Steuerschaltung oder endliche Ablaufsteuerung DFSN für die Synchronisierung des Arbeitsablaufes von VIDATA unter der Kontrolle von VICONT.
  • Im folgenden Teil des Textes wird vorausgesetzt, daß die Zwangslänge K gleich 5 und die Länge der voraussichtlichen Nachricht gleich 248 ist.
  • Die endliche Ablaufsteuerung oder lokale Intelligenz DFSM empfängt Steuerinformationen von VICONT über den Bus CTB und steuert den Betrieb von DMEM über einen internen Adressbus ADB und den Betrieb von PSEL über zwei Steueranschlüsse FP und BP. DFSM zeigt über FP und BP an, daß der Durchlaß in Vor- beziehungsweise Rückrichtung läuft.
  • Während des Durchlaufes in Vorwärtsrichtung werden die wahrscheinlichsten Datenbits des letzten Zustandsüberganges des durch VIPROB ausgewählten Pfades für die 2**(K-1) = 16 Zustände nacheinander an VIDATA über den Anschluß DOUT angelegt. Da ein Steuersignal FP an dem gleichnamigen Steueranschluß von DFSM dann aktiviert wird, überträgt PSEL diese Datenbits an SLS über einen Anschluß SIN. Wenn ein 16-bit-Wort, das durch 16 wahrscheinlichste Datenbits gebildet wird, eines für jeden Zustand, in dem Schieberegister und Zwischenspeicher SLS zusammengesetzt wird, steuert DFSM die Übertragung dieses Wortes in eine vorher festgelegte Zeile des Speichers DMEM. Diese Übertragung wird über einen bidirektionalen 16-bit-Bus DB ausgeführt, und jedes von SLS kommende 16-bit-Wort wird einer bestimmten Zeile der m = 248 Zeilen oder Wortlagen von DMEM, beginnend bei der obersten Zeile R0 gespeichert.
  • Wenn 248 Worte von 16 wahrscheinlichsten Datenbits in den Zeilen R0 bis R247 von DMEM gespeichert wurden, ist der Vorwärtsdurchgang abgeschlossen.
  • Der folgende Prozeß handhabt die in DMEM gespeicherten Daten in umgekehrter Reihenfolge, d.h. von dem letzten in SLS empfangenen und somit in Zeile R247 gespeicherten Wort bis zum ersten in Zeile R0 gespeicherten Wort, und wird deshalb "Rückwärtsdurchgang", wie oben erwähnt, bezeichnet. Während dieses Rückwärtsdurchganges wird ein Steuersignal BP an dem gleichnamigen Steuerausgang von DFSM aktiviert. Dieses Signal BP verhindert, daß Datenbits durch PSEL von DOUT nach SLS übertragen werden, erlaubt jedoch die Übertragung von Datenbits von DMUX nach SLS über einen Anschluß SSEL, PSEL und SJN, wobei der Anschluß SSEL DMUX und PSEL verbindet.
  • Dem Herausholen einer voraussichtlichen Nachricht aus dem Speicher DMEM liegt ein Merkmal des Trellis-Diagramms zugrunde, ge mäß dem der Binärwert eines Endzustandes y durch den Binärwert des Startzustandes x, der um 1 Bitposition nach rechts verscho- ben wurde und an den das Datenbit des Zustandsübergangs xy angehängt wurde (an die linke Seite).
  • Genauer gesagt, um das letzte voraussichtliche Datenbit der voraussichtlichen Nachricht herauszuholen, wird der Adresszeiger des Speichers DMEM zuerst durch DFSM auf die letzte Zeile R247 gesetzt, d.h. auf die Zeile, die das letzte Wort speichert, das während des Durchlasses in Vorwärtsrichtung empfangen wurde, während das 4-bit-Schieberegister SLA auf einen Ausgangswert 0, 0, 0, 0 gesetzt wurde, d.h. um das erste Bit von links in dem Multiplexer DMUX auszuwählen. Da der Multiplexer DMUX seine 16- bit-Wort Eingangsdaten von dem Speicher DMEM über einen Bus LB empfängt, werden infolgedessen die Bitdaten, die sich in Position R247/C0 befinden, wobei C0 die erste Spalte von links von DMEM anzeigt, ausgewählt und an den Ausgang von DMUX angelegt. Von dort wird das letzte voraussichtliche Datenbit an Schieberegister und Zwischenspeicher SLS über den Anschluß SSEL, die Auswahleinheit PSEL und den Anschluß SIN übertragen. Dieses letzte voraussichtliche Datenbit, das sich dann an der äußersten linken Seite des Schieberegisters und Zwischenspeichers SLS befindet, wird in das 4-bit-Schieberegister SLA über einen Anschluß LB geschoben, der diese äußerst linke Position von SLS mit einen seriellen Eingang von SLA verbindet. Dieses Datenbit wird ebenfalls in die Lage R247/C0 des Speichers DMEM über den Bus DB kopiert. Der Grund für dieses Kopieren besteht darin, daß während des Rückwärtsdurchganges die voraussichtliche Nachricht Bit für Bit in der ersten Spalte C0 des Speichers DMEM zusammengesetzt wird, wobei sich das letzte voraussichtliche Datenbit Ln Reihe 247 und das erste in Reihe R0 befindet.
  • Es soll festgehalten werden, daß die Lage R247/C0 ausgewählt wurde, um das letzte erwartete Datenbit herauszuholen, d.h. um den Rückwärtsdurchgang wegen der oben betrachteten Auffüllbits zu starten, die an jede Nachricht angehängt wurden und die den wahrscheinlichsten Pfad durch das Trellis-Diagramm darstellen, um zu einem vorher festgelegten Endzustand zusammenzulaufen. Im vorliegenden Fall ist dies der Zustand, der der Spalte C0 des Speichers DMEM entspricht, d.h. der Zustand A hat den Binärwert 00.
  • Um das vorletzte voraussichtliche Datenbit der voraussichtlichen Nachricht herauszuholen, wird die Zeile R246 (nicht dargestellt) von DMEM durch DFSM ausgewählt, und die Spaltenadresse dieses Bits wird durch den tatsächlichen Inhalt von SLA geliefert. Infolgedessen wird diese Zeile R246 von DMEM an den Eingang von DMUX angelegt, und ein Datenbit davon, ausgewählt durch SLA, wird an die äußerst linke Position von SLS über SSEL, PSEL und SIN kopiert. Von dort aus wird dieses vorletzte voraussichtliche Datenbit in SLA über LB verschoben und in die Position R246/C0 des Speichers DMEM kopiert.
  • Jedes voraussichtliche Datenbit wird so von DMEM herausgeholt und in die erste Spalte davon zurückkopiert. Wenn die m=248 Zeilen von DMEM gehandhabt werden, wobei die letzte behandelte Zeile R0 ist, ist der Durchlaß in Rückwärtsrichtung abgeschlossen.
  • Während der folgenden Ausgabephase werden die m voraussichtlichen Datenbits von dem Speicher DMEM gelesen und seriell an den Ausgang DOUT des Viterbi-Decoders VD angelegt. Zu diesem Zweck wird Spalte C0 von DMEM von Reihe R0 bis Reihe R247 gelesen, und die voraussichtliche Nachricht wird an DOUT in der richtigen Reihenfolge über den Bus DB und das Schieberegister und Zwischenspeicher SLS übertragen.
  • Da jeder Auftrag des Viterbi-Algorithmus durch getrennte Blöcke oder Module VISOFT, VITALFA, VIPROB und VIDATA von VD ausgeführt wird, wobei jeder eine lokale Intelligenz SFSM, AFDM, PSFM beziehungsweise DFSM besitzt, und da diese Blöcke ein gleiches Unterprogramm für jeden Satz darin empfangener Bits wiederholen, können diese unterschiedlichen Aufgaben unter der Steuerung des gemeinsamen Steuermoduis VICONT und durch die lokale Intelligenz von jedem Block hintereinander eingereiht werden. Dieses Einreihen bedeutet zum Beispiel, daß, sobald das Zweigmetrikmodul VITALFA den Übergangswahrscheinlichkeitswert ALFA(y) und die Übergangsbitfehlerratenwerte TBER(y) für alle 2** (K-1) Zustände berechnet und diese Werte an VIPROB übertragen hat, ein neuer Satz aus n Softbits von VISOFT bereitgestellt werden kann, bei dem VITALFA seine Berechnungen neu beginnt. Weiterhin, da diese folgenden Berechnungen von ALFA(y) und TBER(y) von VITALFA ausgeführt werden, aktualisiert VIPROB sowohl den Bereich der Pfadwahrscheinlichkeit MEMP und Bereich der Pfadbitfehlerrate MEMB von seinem RAM-Speicher mit den berechneten Werten PROB(y) und BER(y) und überträgt 2**(K-1) wahrscheinlichste Datenbits nach VIDATA. VIDATA aktualisiert dann seinen Speicher DMEM, bis letzterer voll ist, und beginnt dann den Rückwärtsdurchgang, der von der Ausgabephase gefolgt wird.
  • Wie bereits erwähnt, wird das Zeitverhalten all dieser Aktivitäten durch VICONT über den gemeinsamen Steuerbus CTB überwacht, durch den VICONT Zugriff auf die unterschiedliche lokale Intelligenz von VD hat. Jede dieser lokalen Intelligenzen SFSM, AFSM, PFSM und DFSM steuert dann den lokalen Betrieb des Blockes oder Moduls, zu dem es gehört, und gibt die Steuerinformation an das gemeinsame Steuerungsmodul VICONT zurück, z.B. wenn eine Aufgabe abgeschlossen wurde.
  • Es sollte schließlich festgehalten werden, daß, da das Codierungsprinzip, über die Zwangslänge K, die Historie der verschlüsselnden Nachricht nutzt, die von einem Strom aus Eingangsdatenbits zusammengesetzt wurde, der Viterbi-Decoder in der Lage ist, aus dem Rahmen fallende Übertragungsfehler aufgrund der obigen maximalen Wahrscheinlichkeits-Decodierungsalgorithmus zu korrigieren, solange wie die Fehlerspitzen kürzer sind als die eingeschränkte Länge K.

Claims (10)

1. Decodiereinrichtung, die den Viterbi-Algorithmus zur Decodierung gefaltet verschlüsselter Nachrichten und ein erstes Modul (VITALFA) zur Berechnung von Übergangswahrscheinlichkeiten für die möglichen Zustandsübergänge zwischen zwei aufeinanderfolgenden Zuständen des Decoders und ein zweites Modul (VIPROB) zur Berechnung, in Abhängigkeit von den Übergangswahrscheinlichkeiten, von Pfadwahrscheinlichkeiten für die möglichen Pfade enthält, die durch aufeinanderfolgende Zustandsübergänge gebildet werden und in jedem der Zustände enden, wobei die Decodiereinrichtung geeignet ist, für jeden der Zustände nur den Pfad auszuwählen, der den höchsten Pfadwahrscheinlichkeitswert besitzt, dadurch gekennzeichnet, daß das erste Modul (VITALFA) weiterhin für jeden der Zustandsübergänge eine Übergangsbitfehlerrate berechnet, die eine Funktion der Anzahl der in dem ersten Modul (VITALFA) empfangenen Bits ist, die sich von den für einen gleichen Zustandsübergang erwarteten Bits unterscheiden.
2. Decodiereinrichtung gemäß Anspruch 1, dadurch gekennzeichnet, daß das erste Modul für jeden Zustandsübergang die Übergangswahrscheinlichkeit und die Übergangsbitfehlerrate gleichzeitig berechnet.
3. Decodiereinrichtung gemäß Anspruch 1, dadurch gekennzeichnet, daß das zweite Modul (VIPROB) weiterhin für jeden der ausgewählten Pfade eine Pfadbitfehlerrate berechnet, die die Summe der Übergangsbitfehlerraten der Zustandsübergänge darstellt, die den Pfad bilden.
4. Decodiereinrichtung gemäß Anspruch 3, dadurch gekennzeichnet, daß das zweite Modul (VIPROB) gleichzeitig und parallel die Pfadwahrscheinlichkeit und die Pfadbitfehlerrate berechnet.
5. Decodiereinrichtung gemäß Anspruch 1, dadurch gekennzeichnet, daß das erste Modul (VITALFA) eine erste Steuerschaltung (AFSM) enthält, die den Arbeitsablauf des ersten Moduls steuert, und daß das zweite Modul (VIPROB) eine zweite Steuerschaltung (PFSM) umfaßt, die den Arbeitsablauf des zweiten Modul steuert.
6. Decodiereinrichtung nach Anspruch 5, dadurch gekennzeichnet, daß das erste Modul (VITALFA) und das zweite Modul (VIPROB) unabhängig voneinander arbeiten, wobei deren Arbeitsablauf von einem gemeinsamen Steuerungsmodul (VICONT) überwacht wird.
7. Decodiereinrichtung gemäß Anspruch 1, dadurch gekennzeich net, daß sie ein drittes Modul (VIDATA) enthält, um aus den Pfaden, die durch das zweite Modul (VIPROB) ausgewählt wurden, nur den Pfad auszuwählen, der der voraussichtlichen Nachricht, die decodiert werden soll, entspricht.
8. Decodiereinrichtung gemäß den Ansprüchen 6 und 7, dadurch gekennzeichnet, daß das dritte Modul (VIDATA) ein drittes Steuerungsmodul (DFSM) zur Steuerung des Arbeitsablaufes des dritten Moduls enthält, und daß das dritte Modul (VIDA- TA) unabhängig von dem ersten (VITALFA) und dem zweiten (VIPROB) Modul arbeitet, wobei der Arbeitsablauf all dieser Module von dem gemeinsamen Steuerungsmodul (VICONT) überwacht wird.
9. Decodiereinrichtung gemäß dem Anspruch 7 oder 8, dadurch gekennzeichnet, daß das erste (VITALFA), zweite (VIPROB) und dritte (VIDATA) Modul in einer Reihenschaltung angeordnet sind.
10. Decodiereinrichtung gemäß einem der vorangegangenen Ansprüche, dadurch gekennzeichnet, daß diese als ein Funktionsblock einer integrierten Schaltung ausgeführt ist.
DE69212695T 1991-05-08 1992-05-05 Decodierungseinrichtung Expired - Fee Related DE69212695T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
BE9100432A BE1004814A3 (nl) 1991-05-08 1991-05-08 Decodeerinrichting.

Publications (2)

Publication Number Publication Date
DE69212695D1 DE69212695D1 (de) 1996-09-19
DE69212695T2 true DE69212695T2 (de) 1997-02-06

Family

ID=3885488

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69212695T Expired - Fee Related DE69212695T2 (de) 1991-05-08 1992-05-05 Decodierungseinrichtung

Country Status (9)

Country Link
US (1) US5331665A (de)
EP (1) EP0512641B1 (de)
JP (1) JPH05175855A (de)
BE (1) BE1004814A3 (de)
CA (1) CA2068117C (de)
DE (1) DE69212695T2 (de)
ES (1) ES2093178T3 (de)
FI (1) FI922067A (de)
NZ (1) NZ242456A (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5432804A (en) * 1993-11-16 1995-07-11 At&T Corp. Digital processor and viterbi decoder having shared memory
US5465275A (en) * 1993-11-16 1995-11-07 At&T Ipm Corp. Efficient utilization of present state/next state registers
TW243568B (en) * 1993-11-16 1995-03-21 At & T Corp Digital signal processor with an embedded viterbi co-processor
FR2737824B1 (fr) * 1995-08-08 1997-10-31 Tortelier Patrick Procede de decodage a sorties ponderees mettant en oeuvre l'algorithme de viterbi en fonctionnement par blocs
GB2305827B (en) * 1995-09-30 2000-01-19 Motorola Ltd Viterbi co-processor and method of operation therefor
US6028899A (en) * 1995-10-24 2000-02-22 U.S. Philips Corporation Soft-output decoding transmission system with reduced memory requirement
US6023492A (en) * 1995-11-24 2000-02-08 Telefonaktiebolaget Lm Ericsson Method and apparatus for conditionally combining bit metrics in a communication system
US5964825A (en) * 1996-02-09 1999-10-12 Texas Instruments Incorporated Manipulation of boolean values and conditional operation in a microprocessor
US5742622A (en) * 1996-03-12 1998-04-21 Discovision Associates Error detection and correction system for a stream of encoded data
KR100212833B1 (ko) * 1996-03-22 1999-08-02 전주범 가변레이트 비터비 복호기
US6374346B1 (en) 1997-01-24 2002-04-16 Texas Instruments Incorporated Processor with conditional execution of every instruction
GB2329557B (en) * 1997-09-19 2002-05-01 Motorola As Method and apparatus for viterbi decoding of punctured codes
US6275538B1 (en) * 1998-03-11 2001-08-14 Ericsson Inc. Technique for finding a starting state for a convolutional feedback encoder
US6272661B1 (en) * 1998-12-29 2001-08-07 Texas Instruments Incorporated Minimum memory implementation of high speed viterbi decoder
SG80035A1 (en) * 1999-05-27 2001-04-17 Inst Of Microelectronics Viterbi decoding of punctured convolutional codes without real-time branch metric computation
US6633615B1 (en) * 2000-01-31 2003-10-14 Agere Systems Inc. Trellis transition-probability calculation with threshold normalization
TW518845B (en) * 2001-03-30 2003-01-21 Ali Corp Method of erroneous data correction for full response channel system
CN1306514C (zh) * 2001-07-19 2007-03-21 松下电器产业株式会社 再现信号质量的评价方法和信息再现装置
GB2409618A (en) * 2003-12-23 2005-06-29 Picochip Designs Ltd Telecommunications decoder device
US7920612B2 (en) * 2004-08-31 2011-04-05 Finisar Corporation Light emitting semiconductor device having an electrical confinement barrier near the active region
US8140949B2 (en) * 2007-11-13 2012-03-20 Alpha Imaging Technology Corp. ACS unit of a Viterbi decoder and method for calculating a bit error rate before a Viterbi decoder
US9942005B2 (en) * 2016-08-30 2018-04-10 International Business Machines Corporation Sequence detector
US10243591B2 (en) 2016-08-30 2019-03-26 International Business Machines Corporation Sequence detectors

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4536878A (en) * 1982-09-20 1985-08-20 Sperry Corporation Bit serial convolutional decoder for VLSI implementation
FR2585906B1 (fr) * 1985-08-02 1987-09-25 Battail Gerard Procede de decodage d'un code convolutif et decodeur correspondant
CA1260143A (en) * 1986-02-24 1989-09-26 Atsushi Yamashita Path trace viterbi decoder
US4742533A (en) * 1987-01-02 1988-05-03 Motorola, Inc. Soft decision digital communication apparatus

Also Published As

Publication number Publication date
CA2068117A1 (en) 1992-11-09
DE69212695D1 (de) 1996-09-19
AU1526192A (en) 1992-11-12
EP0512641B1 (de) 1996-08-14
FI922067A (fi) 1992-11-09
AU644523B2 (en) 1993-12-09
NZ242456A (en) 1994-09-27
US5331665A (en) 1994-07-19
CA2068117C (en) 1998-04-14
JPH05175855A (ja) 1993-07-13
ES2093178T3 (es) 1996-12-16
FI922067A0 (fi) 1992-05-07
EP0512641A1 (de) 1992-11-11
BE1004814A3 (nl) 1993-02-02

Similar Documents

Publication Publication Date Title
DE69212695T2 (de) Decodierungseinrichtung
DE69029542T2 (de) Viterbidekodierer
DE69925151T2 (de) Effiziente normalisierung vom trelliszustandsmetrischem wert
DE69333460T2 (de) Arithmetisches Gerät
EP0301161B1 (de) Verfahren zur Aufbereitung eines Faltungscodes zur Übertragung sowie dessen empfangsseitige Rückwandlung sowie Anordnung hierzu
DE69735200T2 (de) Verfahren zu metrikbestimmung in einem übertragungssystem
DE60037963T2 (de) Turbo-Dekodierung mit Soft-Output Viterbi Dekoder
DE69722571T2 (de) System und Verfahren zur digitalen Übertragung mit einem Produktkode kombiniert mit multidimensionaler Modulation
DE3600905A1 (de) Verfahren zum dekodieren von binaersignalen sowie viterbi-dekoder und anwendungen
DE69929652T2 (de) Datenfehlerkorrektursystem
EP0306713B1 (de) Verfahren und Anordnung zur Aufbereitung von Daten
WO2003071689A2 (de) Kombinierter ver- und entschachteler sowie turbo-decodierer mit kombiniertem ver- und entschachteler
EP0488456B1 (de) Maximalwahrscheinlichkeitsempfänger
EP0737389B1 (de) Übertragungssystem mit soft-output-dekodierung bei reduziertem speicherbedarf
DE69737337T2 (de) Datenempfänger und Empfangsverfahren für punktierte, faltungskodierte Daten
DE10238841A1 (de) Parallelverarbeitung der Decodierung und der zyklischen Redundanzüberprüfung beim Empfang von Mobilfunksignalen
DE19937506A1 (de) ACS-Einheit für einen Viterbi-Decodierer
DE10196688B3 (de) Ein Decodierer für eine trellis-basierte Kanalcodierung
DE69735982T2 (de) Datenempfänger
DE19539343C2 (de) Verfahren zur Fehlererkennung eines digitalen Bitdatenstroms, der von einem Sender zu einem Empfänger übertragen wird
DE10010238C2 (de) Verfahren zum Speichern von Pfadmetriken in einem Viterbi-Decodierer
EP0769853B1 (de) Logischer Block für einen Viterbi-Decoder
DE60101745T2 (de) Viterbi dekodierung mit pfadmetrikaktualisierung durchgeführt in einheiten von bitscheiben
WO2002060071A2 (de) Viterbi-decoder
DE2828761C2 (de) Anordnung zum Kodieren von Datenbits

Legal Events

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