DE60117705T2 - Viterbi-Decodierungsprozessor - Google Patents

Viterbi-Decodierungsprozessor Download PDF

Info

Publication number
DE60117705T2
DE60117705T2 DE60117705T DE60117705T DE60117705T2 DE 60117705 T2 DE60117705 T2 DE 60117705T2 DE 60117705 T DE60117705 T DE 60117705T DE 60117705 T DE60117705 T DE 60117705T DE 60117705 T2 DE60117705 T2 DE 60117705T2
Authority
DE
Germany
Prior art keywords
register
registers
memory
viterbi decoding
values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60117705T
Other languages
English (en)
Other versions
DE60117705D1 (de
Inventor
c/o NEC CORPORATION Masao Minato-ku IKEKAWA
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Application granted granted Critical
Publication of DE60117705D1 publication Critical patent/DE60117705D1/de
Publication of DE60117705T2 publication Critical patent/DE60117705T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations
    • 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
    • H03M13/4107Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations
    • 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
    • H03M13/4161Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
    • 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/65Purpose and implementation aspects
    • H03M13/6563Implementations using multi-port memories
    • 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/65Purpose and implementation aspects
    • H03M13/6566Implementations concerning memory access contentions
    • 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/65Purpose and implementation aspects
    • H03M13/6569Implementation on processors, e.g. DSPs, or software implementations
    • 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
    • H03M13/4161Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
    • H03M13/4169Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management using traceback

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

  • Hintergrund der Erfindung
  • Die vorliegende Erfindung betrifft einen Viterbi-Decodierungsprozessor und insbesondere einen Viterbi-Decodierungsprozessor, der eine Viterbi-Decodierung ausführt, durch die eine digitale Kommunikation mit hoher Güte realisiert wird.
  • In der digitalen Funkkommunikation ist eine Kombination aus einer Faltungscodierung und einer Viterbi-Decodierung weit verbreitet verwendet worden, um den Einfluß eines Bitfehlers im Übertragungskanal zu unterdrücken und eine Kommunikation mit hoher Güte zu realisieren. Viterbi-Decodierung wird durch einen in einem Kommunikationsgerät angeordneten digitalen Signalprozessor (nachstehend als DSP bezeichnet) realisiert. Neuere DSPs müssen eine Architektur aufweisen, die in der Lage ist, eine Viterbi-Decodierung effizient zu realisieren. Bei einer Viterbi-Decodierung wird eine Maximum-Likelihood-Decodierung durch Soft-Decision unter Verwendung der Wiederholungsstruktur eines Faltungscodes effizient implementiert. Viterbi-Decodierung wird durch Wiederholung einer Reihe von als ACS-(Add Compare Select) Verarbeitung bezeichneten Prozessen und eine Rückverfolgungs(Traceback)operation der schließlich decodierten Daten implementiert.
  • Bei der Viterbi-Decodierung wird, immer wenn eine Empfangsdatensequenz für ein Informationsbit erhalten wird, ein überlebender Pfad, d.h. eine ursprünglich codierte Datensequenz, die einer Empfangsdatensequenz am ehesten entspricht, erhalten durch sequentielles Auswählen überlebender Pfade in jeweiligen Zuständen zu neuen Zeitpunkten in einem Trellis-Diagramm, das den internen Zustand und einen Übergang eines Codierers mit einem Faltungscode darstellt. Zu diesem Zeitpunkt muss der Signalabstand zwischen der codierten Datensequenz und der durch jeden überlebenden Pfad dargestellten Empfangsdatensequenz als ein Auswahlkriterium für einen überlebenden Pfad berechnet werden, wobei eine ACS-Verarbeitung wiederholt ausgeführt wird. Um die Viterbi-Decodierung durch den DSP effizient zu implementieren, muss die ACS-Verarbeitung effizient ausgeführt werden. 4 zeigt eine erläuternde Ansicht zum Darstellen einer ACS-Verarbeitung.
  • Im allgemeinen werden, wenn das Codierungsverhältnis und die Einflußlänge (Constraint Length) eines Codierers bestimmt werden, Zustände zu jeweiligen Zeitpunkten und Verzweigungsmuster, die einen Übergang dazwischen darstellen, durch einfache Wiederholung in einem Trellis-Diagramm dargestellt. Zum Zeitpunkt t + 1 werden zwei einander benachbarte Zustände im Trellis-Diagramm betrachtet, d.h. zwei Zustäne Sc(t + 1) und Sc + 1(t + 1), deren codierte Datensequenz (Ausgangssymbol)werte (Binärzahlen), die den jeweiligen Zuständen zugeordnet sind, einander benachbart sind. Pfadmetriken pm'(c) und pm'(c + 1) der Zustände Sc(t + 1) und Sc + 1(t + 1) sind gegeben durch: pm' (c) = MAX(pm(a) + bm, pm(b) – bm) (1) pm'(c + 1) = MAX(pm(a) – bm, pm(b) + bm) (2)wobei pm(a) und pm(b) die Pfadmetrikwerte von zwei Zuständen Sa(t) und Sb(t) darstellen, die mit den Zuständen Sc(t + 1) und Sc + 1(t + 1) verbindbar sind, und bm und –bm Hamming-Abstände sind, d.h. Zweigmetriken zwischen Pfaden, die Zweigen zugeordnet sind, und Empfangsdatensequenzen, die den Zweigen zum Verbinden der Zustände zugeordnet sind, wie in 4 dargestellt ist. In der vorliegenden Erfindung wird eine Funktion zum Auswählen eines größeren von Werten x und y durch MAX(x, y) und eine Funktion zum Auswählen eines kleineren der Werte x und y durch MIN(x, y) dargestellt. In den vorstehenden Gleichungen kann in Abhängigkeit vom Zweigmetrikdarstellungsverfahren die Funktion MIN an Stelle von MAX verwendet werden.
  • Um die ACS-Verarbeitung effizient auszuführen, ist herkömmlich eine DSP-Prozessorarchitektur vorgeschlagen worden, in der mehrere Addierer/Subtrahierer und mehrere Vergleicher bereitgestellt werden, um eine parallele ACS-Verarbeitung zu ermöglichen (vergl. z.B. offengelegte japanische Patentveröffentlichung Nr. 11-261426, veröffentlicht als JP-11261426 und EP-9917295 (Referenz 1); und offengelegte japanische Patentveröffentlichung Nr. 11-74801, veröffentlicht als JP-11074801 und US-5987490 (Referenz 2)).
  • 5 zeigt ein Blockdiagramm zum Darstellen eines in Referenz 1 beschriebenen herkömmlichen Viterbi-Decodierungsprozessors. In diesem Fall werden Operanden (Adreßinformation) und Werte arithmetischer Ergebnisse, die Addierern/Subtrahierern 52 und 53 zugeführt werden, in einem beliebigen von mehreren Registern in einer Registerdatei 51 zwischengespeichert.
  • Jeder der mehreren Addierer/Subtrahierer 52 und 52 verwendet zwei Register Ri und Rj für Eingangsoperanden und führt eine parallele Additions-/Subtraktionsoperation für eine höhere Seite Ri(H) und Rj(H) und eine niedrigere Seite Ri(L) und Rj(L) aus. Die Summe und die Differenz werden in der höheren Seite Rk(H) bzw. in der niedrigeren Seite Rk(L) eines Registers Rk gespeichert.
  • Jeder von Vergleichern 54 und 56 verwendet ein Register Ri für einen Operanden, vergleicht die Größen der höheren Seite Ri(H) und der niedrigeren Seite Ri(L) und speichert z.B. einen größeren Wert im Register Rk. Gleichzeitig spei chert der Vergleicher ein 1-Bit-Vergleichsergebnis in einem entsprechenden von Log-Registern 55 und 57.
  • In diesem Viterbi-Decodierungsprozessor wird eine ACS-Verarbeitung für zwei Zustände durch folgende Prozeduren ausgeführt. Zweigmetrikwerte bm und –bm werden aus einem Speicher 59 ausgelesen und an der höheren bzw. niedrigeren Seite eines Registers R0 gespeichert. Pfadmetrikwerte pm(a) und pm(b) werden aus dem Speicher 59 ausgelesen und an der höheren bzw. niedrigeren Seite eines Registers R1 gespeichert. Der Addierer/Subtrahierer 52 führt eine parallele Additionsoperation bezüglich den Registern R0 und R1 aus, speichert einen Wert pm(a) + bm an der höheren Seite eines Registers R2 und einen Wert pm(b) – bm an seiner niedrigeren Seite.
  • Der Addierer/Subtrahierer 53 führt eine parallele Subtraktionsoperation bezüglich den Registern R0 und R1 aus, speichert einen Wert pm(a) – bm an der höheren Seite eines Registers R3 und einen Wert pm(b) + bm an seiner niedrigeren Seite. Der Vergleicher 54 vergleicht die höhere und die niedrigere Seite des Registers R2, speichert einen größeren Wert in einem Register R4 und speichert gleichzeitig ein das Vergleichsergebnis darstellendes Bit im Log-Register 55. Der in R4 gespeicherte Wert in Gleichung (1) ist gleich pm'(c). Das im Log-Register 54 gespeicherte Bit wird in einer als Rückverfolgungs(Traceback)operation bezeichneten Verarbeitung verwendet.
  • Der Vergleicher 56 vergleicht die höhere und die niedrigere Seite des Registers R3, speichert einen größeren Wert in einem Register R5 und speichert gleichzeitig ein das Vergleichsergebnis darstellendes Bit im Log-Register 57. Zu diesem Zeitpunkt ist der im Register R5 gespeicherte Wert gleich pm'(c + 1) in Gleichung (2). Die Inhalte der Register R4 und R5 werden im Speicher 59 gespeichert. In Referenz 2 wird eine Architektur zum direkten Austauschen des Operanden und des Rechenergebnisses einer Arithmetikeinheit mit einem Speicher vorgeschlagen. Diese Architektur unterscheidet sich von einer Architektur, in der die vorstehend erwähnte Registerdatei verwendet wird. Diese Architekturen sind jedoch in dem Sinne gleich, dass zwei Paare von Addierern/Subtrahierern und Vergleichern für eine parallele ACS-Verarbeitung angeordnet sind.
  • Im herkömmlichen Viterbi-Decodierungsprozessor dauert es eine lange Zeit, um Daten vom Speicher in die Registerdatei zu laden und Daten von der Registerdatei in den Speicher zu speichern. Beispielsweise müssen für eine ACS-Verarbeitung für zwei Zustände Daten viermal geladen werden, um zwei Pfadmetriken und zwei Zweigmetriken in das Register zu laden, und Daten müssen zweimal gespeichert werden, um zwei neu erhaltene Pfadmetriken in den Speicher zu speichern. Für eine effiziente Verarbeitung muss die Verarbeitungsgeschwindigkeit der gesamten Vorrichtung erhöht werden, was zu einer großen Prozessorgröße und einem hohen Leistungsverbrauch führt.
  • Kurze Beschreibung der Erfindung
  • Die vorliegende Erfindung wurde entwickelt, um die Nachteile des Stands der Technik zu eliminieren, und es ist Aufgabe der vorliegenden Erfindung, einen Viterbi-Decodierungsprozessor bereitzustellen, der dazu geeignet ist, eine ACS-Verarbeitung effizient auszuführen, ohne dass die Verarbeitungsgeschwindigkeit erhöht werden muß oder eine komplizierte Verarbeitung verwendet wird.
  • Um die vorstehende Aufgabe zu lösen wird erfindungsgemäß ein Viterbi-Decodierungsprozessor bereitgestellt, mit: einem Speicher zum Speichern einer Pfadmetrik und einer Zweigmetrik mit 1-Wort Breite, die bei der Viterbi- Decodierung auftreten, einer Registerdatei mit mehreren Registern, die mindestens eine 2-Wort-Breite aufweisen, zum Zwischenspeichern von 1-Wort breiten Daten an einer höheren und einer niedrigeren Seite, und eine Arithmetikeinrichtung zum Berechnen einer neuen Pfadmetrik auf der Basis eines vorgegebenen arithmetischen Ausdrucks unter Verwendung der Pfadmetrik und der Zweigmetrik, die vom Speicher über einen Bus in ein beliebiges Register der Registerdatei geladen werden, wobei die Arithmetikeinrichtung einen Vergleicher aufweist, der unter den Registern zwei vorgegebene Register für Eingangsoperanden verwendet, Werte der höheren und der niedrigeren Seite eines ersten Registers als eines der beiden Register vergleicht, einen gemäß dem Vergleichsergebnis ausgewählten Wert an der höheren Seite eines dritten Registers unter den Registern speichert, Werte an der höheren und der niedrigeren Seite eines zweiten Registers als das andere Register vergleicht, und einen gemäß dem Vergleichsergebnis ausgewählten Wert an der niedrigeren Seite des dritten Registers speichert, wobei ein 2-Wort breiter Datenbus als der Bus verwendet wird, und wobei die Registerdatei an der höheren Seite und an der niedrigeren Seite des dritten Registers gespeicherte 2-Wort breite Daten über den Datenbus gleichzeitig ausliest und die 2-Wort breiten Daten über den Datenbus an benachbarten Adressen im Speicher speichert.
  • In diesem Fall kann hinsichtlich einer anschließenden Rückverfolgungs(Traceback)verarbeitung ein Log-Register vorgesehen sein, das zwei Bits gleichzeitig speichert, die die Vergleichsergebnisse der beiden durch den Vergleicher ausgeführten Vergleichsoperationen darstellen. Der Vergleicher kann in der Vergleichsoperation gemäß einem vorgegebenen Befehl einen größeren oder einen kleineren der beiden Werte auswählen.
  • Zum effizienten Ausführen einer Additions-/Subtraktionsoperation kann die Arithmetikeinrichtung ferner aufweisen: einen ersten Addierer/Subtrahierer, der unter den Registern zwei vorgegebene Register für Eingangsoperanden verwendet, eine erste Additionsoperation unter Verwendung eines Wertes an der höheren Seite eines vierten Registers als eines der beiden Register und eines Wertes an der höheren Seite eines fünften Registers als das andere Register und eine zweite Additionsoperation unter Verwendung von Werten an den niedrigeren Seiten des vierten und des fünften Registers parallel ausführt, ein Ergebnis der ersten Additionsoperation an der höheren Seite des ersten Registers speichert und ein Ergebnis der zweiten Additionsoperation an der niedrigeren Seite des ersten Registers speichert, und einen zweiten Addierer/Subtrahierer, der das vierte und das fünfte Register für Eingangsoperanden verwendet, eine erste Subtraktionsoperation unter Verwendung der Werte an den höheren Seiten des vierten und des fünften Registers und eine zweite Subtraktionsoperation unter Verwendung der Werte an den niedrigeren Seiten des vierten und des fünften Registers parallel ausführt, ein Ergebnis der ersten Subtraktionsoperation an der höheren Seite des zweiten Registers speichert, und ein Ergebnis der zweiten Subtraktionsoperation an der niedrigeren Seite des zweiten Registers speichert.
  • Hinsichtlich einer in der ACS-Verarbeitung verwendeten Zweigmetrik kann der Speicher an benachbarten Adressen 1 Wort breite Zweigmetriken für zwei Zweige speichern, die sich im Trellis-Diagramm von zwei Zuständen zum unmittelbar vorangehenden Zeitpunkt zu einem Zustand zum Zeitpunkt von Interesse ändern, und die Registerdatei kann gleichzeitig die im Speicher gespeicherten beiden Zweigmetriken über den Datenbus auslesen und die beiden Zweigmetriken an die höhere und die niedrigere Seite des fünften Registers laden.
  • Wenn zwischen dem Speicher und der Registerdatei Daten ausgetauscht werden sollen, können als Datenbus zwei 2-Wort breite Datenbusse an Stelle des Datenbusses verwendet werden, und die Registerdatei kann unter individueller Verwendung der beiden Datenbusse zwei Verarbeitungen unter den folgenden Verarbeitungen parallel ausführen: i) gleichzeitiges Laden der beiden Zweigmetriken vom Speicher zum fünften Register; ii) individuelles Laden jeder Pfadmetrik vom Speicher zum vierten Register; und iii) gleichzeitiges Speichern zweier neuer Pfadmetriken vom dritten Register zum Speicher.
  • Kurze Beschreibung der Zeichnungen
  • 1 zeigt ein Blockdiagramm zum Darstellen einer Ausführungsform eines erfindungsgemäßen Viterbi-Decodierungsprozessors;
  • 2 zeigt eine Struktur eines Registers;
  • 3 zeigt eine erläuternde Ansicht zum Darstellen der Arbeitsweise eines Vergleichers;
  • 4 zeigt eine erläuternde Ansicht zum Darstellen einer ACS-Verarbeitung; und
  • 5 zeigt ein Blockdiagramm zum Darstellen eines herkömmlichen Viterbi-Decodierungsprozessors.
  • Ausführliche Beschreibung der bevorzugten Ausführungsform
  • Nachstehend wird eine bevorzugte Ausführungsform der vorliegenden Erfindung unter Bezug auf die beigefügten Zeichnungen beschrieben.
  • 1 zeigt ein Blockdiagramm zum Darstellen einer Ausführungsform eines erfindungsgemäßen Viterbi-Decodierungsprozessors. Der Viterbi-Decodierungsporozessor weist eine Arithmetikeinrichtung 10, eine Registerdatei 11, ein Log-Register 15, einen Speicher 16, Datenbusse 17 und 18 und eine Programmsteuerung 19 auf. Die Arithmetikeinrichtung 10 weist zwei Addierer/Subtrahierer 12 und 13 und einen Vergleicher 14 auf.
  • Die Registerdatei 11 weist mehrere Register zum Zwischenspeichern von Operanden (Stellen, an denen Eingangsdaten gespeichert werden), die einer Arithmetikeinheit zugeführt werden, und von durch die Arithmetikeinrichtung 10 erhaltenen Rechenergebnissen auf. 2 zeigt die Struktur des Registers. In diesem Beispiel hat ein Register 20 eine Breite von 40 Bit. Die höchsten acht Bit (21) dienen als Kopfraum, der als Akkumulator einer Produkt/Summeneinheit verwendet wird, und sind durch Ri(E) dargestellt. Die übrigen 32 Bit können zum Speichern eines der Arithmetikeinheit 10 zugeführten Operanden oder eines Rechenergebnisses genutzt werden, oder können als 16-Bit-Register (22 und 23) verwendet werden, indem die 32 Bit in der höheren Seite entsprechende höhere 16 Bit Ri(H) und in der niedrigeren Seite entsprechende niedrigere 16 Bit Ri(L) geteilt werden. In diesem Fall weist das Register 40 Bit auf, wobei der Kopfraum 8 Bits und die höhere und die niedrigere Seite jeweils 16 Bit aufweisen. Die Anzahl der Bits ist jedoch nicht darauf beschränkt.
  • Jeder der Addierer/Subtrahierer 12 und 13 nutzt zwei Register Ri und Rj für Operanden und kann eine parallele Additions-/Subtraktionsverarbeitung für die höhere Seite Ri(H) und Rj(H) und die niedrigere Seite Ri(L) und Rj(L) ausführen. Die Summe und die Differenz werden in der höheren Seite Rk(H) bzw. in der niedrigeren Seite Rk(L) eines Registers Rk gespeichert.
  • Der Vergleicher 14 verwendet zwei Register Ri und Rj für Eingangsoperanden und führt zwei Vergleichsoperationen parallel aus. Gleichzeitig speichert der Vergleicher 14 zwei Bits, die das Ergebnis der beiden Vergleichsoperationen dar stellen, im Log-Register 15. 3 zeigt die Funktionen des Vergleichers 14 und des Log-Registers 15 detaillierter. Die Werte der höheren Seite Ri(H) und der niedrigeren Seite Ri(L) eines Registers Ri(31) werden durch einen Vergleicher 33 verglichen, und ein größerer oder ein kleinerer Wert wird gemäß einem Befehl an der höheren Seite Rk(H) eines Registers Rk(35) gespeichert. Gleichzeitig werden die Werte der höheren Seite Rj(H) und der niedrigeren Seite Rj(L) eines Registers Rj(32) als der zweite Operand durch einen Vergleicher 34 verglichen, und ein größerer oder ein kleinerer Wert wird gemäß einem Befehl an der niedrigeren Seite Rk(L) des Registers Rk gespeichert. Die Vergleicher 33 und 34 geben jeweils ein das Rechenergebnis darstellendes Bit aus. Das Log-Register 15 besteht aus einem Register 36 mit einer festen Bitzahl. Die Inhalte des Registers 36 werden um zwei Bits nach rechts verschoben, und die von den Vergleichern 33 und 34 ausgegebenen beiden Bits werden gleichzeitig in den zwei höheren Bits des Registers 36 im Log-Register 15 gespeichert.
  • Der Speicher 16 speichert eine Pfadmetrik und eine Zweigmetrik mit 1-Wort Breite, die für die Viterbi-Decodierung verwendet werden, und ist über die 2 Wort breiten Busse 17 und 18 mit der Registerdatei 11 verbunden. Mit einer Multibankspeicher- oder Dualportspeicherstruktur kann der Speicher 16 über die beiden Busse 17 und 18 Daten parallel laden/speichern. Die 2-Wort-Breite der Busse 17 und 18 kann genutzt werden, um gleichzeitig 2-Wort-Daten an benachbarten Adressen im Speicher 16 zu übertragen und die Daten an die höhere und an die niedrigere Seite des Registers Ri zu laden. Die Busse 17 und 18 können andererseits auch an der höheren und an der niedrigeren Seite des Registers Ri gespeicherte 2-Wort-Daten gleichzeitig übertragen und die Daten an benachbarten Adressen im Speicher 16 speichern.
  • Die Programmsteuerung 19 gibt auf der Basis eines vorgegebenen Programms 19A sequentiell Befehle 10A zum Steuern der vorstehend beschriebenen Schaltungseinheiten aus. Die Programmsteuerung 19 führt eine ACS-Verarbeitung und eine Viterbi-Decodierung aus. Wenn ein überlebender Pfad basierend auf einer neuen Pfadmetrik ausgewählt werden soll, die unter Verwendung der Addierer/Subtrahierer 12 und 13 berechnet wird, schaltet der Vergleicher 14 die Vergleichsbedingung (MAX/MIN) auf der Basis des Befehls 10A um.
  • Nachstehend wird die Funktionsweise der Ausführungsform erläutert. Im Viterbi-Decodierungsprozessor von 1 wird eine ACS-Verarbeitung hinsichtlich jedes Zustands durch die folgenden Prozeduren immer dann ausgeführt, wenn eine Empfangsdatensequenz für ein Informationsbit erhalten wird.
  • Die Programmsteuerung 19 verwendet eine vorgegebene Schaltungseinheit (nicht dargestellt) zum Berechnen einer Zweigmetrik für jeden Zweig, der sich im Trellis-Diagramm von einem Zustand zu einem unmittelbar vorangehenden Zeitpunkt auf einen Zustand zu einem Zeitpunkt von Interesse ändert. Die Programmsteuerung 19 speichert die berechnete Zweigmetrik im Voraus im Speicher 16. Der Speicher 16 speichert an benachbarten Adressen 1 Wort breite Zweigmetriken für zwei Zweige, die sich im Trellis-Diagramm von zwei Zuständen zu einem unmittelbar vorangehenden Zeitpunkt auf den gleichen Zustand zum Zeitpunkt von Interesse ändern. Die Programmsteuerung 19 gibt den Befehl 10A an jede Schaltungseinheit in 1 aus und führt sequentiell eine ACS-Verarbeitung für die jeweiligen Zustände zum Zeitpunkt von Interesse aus, um überlebende Pfade auszuwählen.
  • Durch diese Ausführungsform werden zwei Zustände zum Zeitpunkt von Interesse an benachbarten Positionen in einem Trellis-Diagramm betrachtet, und eine ACS-Verarbeitung wird unter Verwendung der Allgemeinheit der ACS-Verarbeitung für diese beiden Zustände ausgeführt. Eine ACS-Verarbeitung für zwei benachbarte Zustände Sc(t + 1) und Sc + 1(t + 1) zum Zeitpunkt t + 1 im Trellis-Diagramm wird nachstehend unter Bezug auf 4 erläutert.
  • Zweigmetriken bm und –bm für zwei Zweige von den Zuständen Sa(t) und Sb(t), die sich auf den Zustand Sc(t + 1) ändern, werden auf die vorstehend beschriebene Weise im Voraus an benachbarten Adressen im Speicher 16 gespeichert. Die Registerdatei 11 liest die Zweigmetriken bm und –bm gleichzeitig vom Speicher 16 aus und speichert sie über den 2 Wort breiten Bus 17 oder 18 an der höheren und der niedrigeren Seite des Registers R0 (viertes Register) der Registerdatei 11. Die Registerdatei 11 liest Pfadmetrikwerte pm(a) und pm(b) vom Speicher 16 aus und speichert sie über den Bus 17 oder 18 an der höheren bzw. der niedrigeren Seite des Registers R1 (fünftes Register). Die Werte pm(a) und pm(b) werden nicht an benachbarten Adressen im Speicher 16 gespeichert und separat ausgelesen, weil Sa(t) und Sb(t) nicht immer einander benachbart sind.
  • Der Addierer/Subtrahierer 12 führt eine parallele Additions-/Subtraktionsoperation für die Register R0 und R1 aus und speichert die Werte pm(a) + bm und pm(b) – bm an der höheren bzw. der niedrigeren Seite des Registers R2 (erstes Register). Der Addierer/Subtrahierer 13 führt eine parallele Subtraktionsoperation für die Register R0 und R1 aus und speichert die Werte pm(a) – bm und pm(b) + bm an der höheren bzw. der niedrigeren Seite des Registers R3 (zweites Register). Der Vergleicher 14 vergleicht die höhere und die niedrigere Seite des Registers R2 und die höhere und die niedrigere Seite des Registers R3, speichert größere Werte an der höheren und der niedrigeren Seite des Registers R4 (drittes Register) und speichert zwei die Vergleichsergebnisse darstellende Bits im Log-Register 15. Zu diesem Zeitpunkt ist der an der höheren Seite des Registers R4 gespeicherte Wert gleich pm'(c) in Gleichung (1) und der an der niedrigeren Seite des Registers R4 gespeicherte Wert gleich pm'(c + 1) in Gleichung (2). Die im Log-Register 15 gespeicherten beiden Bits werden für eine Rückverfolgungs(Traceback)verarbeitung für eine Endcodierung unter Verwendung eines schließlich überlebenden Pfades verwendet. Die neuen Pfadmetriken pm'(c) und pm'(c + 1) für die Zustände Sc(t + 1) und Sc + 1(t + 1), die im Trellis-Diagramm einander benachbart sind, werden von der höheren und der niedrigeren Seite des Registers R4 ausgelesen und gleichzeitig an benachbarten Adressen im Speicher 16 gespeichert.
  • Auf diese Weise werden die beiden Register R2 (erstes Register) und R3 (zweites Register) für Eingangsoperanden verwendet. Die höhere und die niedrigere Seite des Registers R2 werden verglichen, und ein gemäß dem Vergleichsergebnis ausgewählter Wert wird an der höheren Seite des Registers R4 (drittes Register) gespeichert. Die höhere und die niedrigere Seite des Registers R3 werden verglichen, und ein gemäß dem Vergleichsergebnis ausgewählter Wert wird an der niedrigeren Seite des Registers R4 gespeichert. Daten an der höheren und der niedrigeren Seite des Registers R4 werden über den 2 Wort breiten Bus 17 oder 18 gleichzeitig ausgelesen und an benachbarten Adressen im Speicher 17 gespeichert. Es ist lediglich eine Speicheroperation erforderlich, und die ACS-Verarbeitung kann im Vergleich zum Stand der Technik, gemäß dem zwei neue Pfadmetriken, die durch zwei Vergleicher ausgewählt und in verschiedenen Registern gespeichert sind, separat im Speicher gespeichert werden, effizient ausgeführt werden.
  • Im allgemeinen schreitet, wenn die ACS-Verarbeitung unter Verwendung eines Trellis-Diagramms ausgeführt werden soll, die Verarbeitung auf der Basis der Positionsbeziehung zwischen Zuständen im Trellis-Diagramm sequentiell fort, um das Programm effizient auszuführen. Wie vorstehend beschrieben wurde, werden zwei neue Pfadmetriken, die durch eine ACS-Verarbeitung erhalten werden, gemäß der Positionsbeziehung im Trellis-Diagramm an aufeinanderfolgenden Adressen im Speicher 16 gespeichert. Dadurch wird die Anpassung zwischen dem Programm, d.h. Software- und Hardwareressourcen, verbessert. Das Programm kann effizient ausgeführt werden, und der Arbeitsaufwand hinsichtlich der Programmentwicklung kann reduziert werden.
  • 1-Wort breite Zweigmetriken für zwei Zweige, die sich im Trellis-Diagramm von beliebigen Zuständen zu einem unmittelbar vorangehenden Zeitpunkt auf zwei neue Zuständen zum Zeitpunkt von Interesse ändern, werden jeweils an benachbarten Adressen im Speicher 16 gespeichert. In der ACS-Verarbeitung werden diese beiden Zweigmetriken über den 2 Wort breiten Bus 17 oder 18 gleichzeitig ausgelesen und zur höheren und zur niedrigeren Seite des Registers R1 geladen (fünftes Register). Es ist nur eine Speicherladeoperation erforderlich, und die ACS-Verarbeitung kann im Vergleich zum Stand der Technik, gemäß dem zwei Zweigmetriken separat vom Speicher geladen werden, effizient ausgeführt werden.
  • Die ACS-Verarbeitung kann durch insgesamt drei Ladeoperationen, einschließlich einer Pfadmetrikladeoperation, und eine Speicheroperation ausgeführt werden. Der für die Operation erforderliche Zyklus kann in einem einfachen Vergleich mit dem Stand der Technik, gemäß dem vier Ladeoperationen und zwei Speicheroperationen ausgeführt werden, auf etwa 2/3 reduziert werden.
  • In dieser Ausführungsform werden 2 Wort breite Busse 17 und 18 verwendet und wird eine parallele Verarbeitung der vorstehend erwähnten Ladeoperation und der Speicheroperation zwischen dem Speicher 16 und der Registerdatei 11 über diese beiden Busse ermöglicht. Durch diese Ausführungsform wird eine Pipeline-Verarbeitung ermöglicht, im Mittel eine ACS-Verarbeitung für zwei Zustände in zwei Zyklen ermöglicht und kann der für die Operation erforderliche Zyklus im Vergleich zum Stand der Technik auf etwa 1/3 reduziert werden.
  • Das Log-Register 15 speichert gleichzeitig zwei Bits, die die Vergleichsergebnisse von zwei durch den Vergleicher 14 ausgeführten Vergleichsoperationen darstellen. Die Anzahl der Log-Register kann im Vergleich zum Stand der Technik, gemäß dem Vergleichsergebnisse von zwei Vergleichern bitweise in verschiedenen log-Registern gespeichert werden, reduziert und vereinfacht werden.
  • Der Vergleicher 14 wählt einen größeren oder kleineren Wert von zwei Vergleichswerten gemäß dem Befehl 10A von der Programmsteuerung 19 aus. Das Auswahlkriterium kann gemäß dem Zweck leicht umgeschaltet werden.
  • Es werden zwei Addierer/Subtrahierer 52 und 52 bereitgestellt. Der Addierer/Subtrahierer 52 verwendet die beiden Register R0 (viertes Register) und R1 (fünftes Register) für Eingangsoperanden und führt die erste Additionsoperation unter Verwendung von Werten an den höheren Seiten der Register R0 und R1 und die zweite Additionsoperation unter Verwendung von Werten an den niedrigeren Seiten der Register R0 und R1 parallel aus. Der Addierer/Subtrahierer 52 speichert das erste Additionsergebnis an der höheren Seite des Registers R2 (erstes Register) und das zweite Additionsergebnis an der niedrigeren Seite des Registers R2. Der Addierer/Subtrahierer 53 führt die erste Subtraktionsoperation unter Verwendung von Werten an den höheren Seiten der Register R0 und R1 und die zweite Subtraktionsoperation unter Verwendung von Werten an den niedrigeren Seiten der Register R0 und R1 parallel aus. Der Addierer/Subtrahierer 53 speichert das erste Subtraktionsergebnis an der höheren Seite des Registers R3 (zweites Register) und das zweite Subtraktionsergebnis an der niedrigeren Seite des Registers R3. Die Additions/Subtraktionsverarbeitung für zwei Zustände kann effizient parallel ausgeführt werden.
  • Die vorliegende Erfindung ist nicht auf die vorstehend beschriebene Ausführungsform beschränkt und kann innerhalb des Schutzumfangs der vorliegenden Erfindung geeignet modifiziert werden.
  • Wie vorstehend beschrieben worden ist, werden erfindungsgemäß 2-Wort breite Datenbusse verwendet, und ein Vergleicher, der zwei vorgegebene Register für Eingangsoperanden verwendet, vergleicht Werte an der höheren und der niedrigeren Seite des ersten Registers, speichert einen gemäß dem Vergleichsergebnis ausgewählten Wert an der höheren Seite des dritten Registers unter den Registern, vergleicht Werte an der höheren und der niedrigeren Seite des zweiten Registers und speichert einen gemäß dem Vergleichsergebnis ausgewählten Wert an der niedrigeren Seite des dritten Registers. Der Vergleicher liest gleichzeitig an der höheren und der niedrigeren Seite des dritten Registers gespeicherte 2-Wort breite Daten aus und speichert sie über den Datenbus an benachbarten Adressen des Speichers. Es ist nur eine Speicheroperation erforderlich, und die ACS-Verarbeitung kann im Vergleich zum Stand der Technik, gemäß dem zwei neue Pfadmetriken, die durch zwei Vergleicher ausgewählt und in verschiedene Registern gespeichert werden, separat im Speicher gespeichert werden, effizient ausgeführt werden. Die ACS-Verarbeitung kann effizient ausgeführt werden, ohne dass die Verarbeitungsgeschwindigkeit erhöht werden muß oder eine komplizierte Verarbeitung verwendet wird.

Claims (6)

  1. Viterbi-Decodierungsprozessor mit: einem 1-Wort breiten Speicher (16), der dazu geeignet ist, eine Pfadmetrik und eine Zweigmetrik zu speichern, die bei einer Viterbi-Decodierung auftreten; einer Registerdatei (11) mit mehreren 2-Wort breiten Registern, die dazu geeignet sind, 1-Wort breite Daten an einer höheren und einer niedrigeren Seite zwischenzuspeichern; und einer Arithmetikeinrichtung, die dazu geeignet ist, eine neue Pfadmetrik auf der Basis eines vorgegebenen arithmetischen Ausdrucks unter Verwendung der Pfadmetrik und der Zweigmetrik zu berechnen, die vom Speicher über einen Bus in ein beliebiges Register der Registerdatei geladen werden; dadurch gekennzeichnet, dass die Arithmetikeinrichtung einen Vergleicher aufweist, der dazu geeignet ist, unter den Registern zwei vorgegebene Register für Eingangsoperanden zu verwenden, um Werte an der höheren und der niedrigeren Seite eines ersten Registers (31) als eines der beiden Register zu vergleichen, einen gemäß dem Vergleichsergebnis ausgewählten Wert an der höheren Seite eines dritten Registers (35) unter den Registern zu speichern, Werte an der höheren und der niedrigeren Seite eines zweiten Registers als das andere Register zu vergleichen und einen gemäß einem Vergleichsergebnis ausgewählten Wert an der niedrigeren Seite des dritten Registers zu speichern; der Bus ein 2-Wort breiter Datenbus ist; und die Registerdatei dazu geeignet ist, über den Datenbus an der höheren und der niedrigeren Seite des dritten Registers gespeicherte 2-Wort breite Daten gleichzeitig auszulesen und die 2-Wort breiten Daten an benachbarten Adressen im Speicher zu speichern.
  2. Viterbi-Decodierungsprozessor nach Anspruch 1, ferner mit einem Log-Register, das dazu geeignet ist, zwei Bits gleichzeitig zu speichern, die Vergleichsergebnisse von zwei durch den Vergleicher ausgeführten Vergleichsoperationen darstellen.
  3. Viterbi-Decodierungsprozessor nach Anspruch 1, dadurch gekennzeichnet, dass der Vergleicher dazu geeignet ist, in der Vergleichsoperation gemäß einem vorgegebenen Befehl einen größeren oder einen kleineren Wert der beiden Werte auszuwählen.
  4. Viterbi-Decodierungsprozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Arithmetikeinrichtung ferner aufweist: einen ersten Addierer/Subtrahierer (12), der dazu geeignet ist, unter den Register zwei vorgegebene Register für Eingangsoperanden zu verwenden, um eine erste Additionsoperation unter Verwendung eines Wertes an der höheren Seite eines vierten Registers als eines der beiden Register und eines Wertes an der höheren Seite eines fünften Registers als das andere Register und eine zweite Additionsoperation unter Verwendung von Werten an den niedrigeren Seiten des vierten und des fünf ten Registers parallel auszuführen, um ein Ergebnis der ersten Additionsoperation an der höheren Seite des ersten Registers und ein Ergebnis der zweiten Additionsoperation an der niedrigeren Seite des ersten Registers zu speichern; und einen zweiten Addierer/Subtrahierer (13), der dazu geeignet ist, das vierte und das fünfte Register für Eingangsoperanden zu verwenden, um eine erste Subtraktionsoperation unter Verwendung der Werte an der höheren Seite des vierten und des fünften Registers und eine zweite Subtraktionsoperation unter Verwendung der Werte an den niedrigeren Seiten des vierten und des fünften Registers parallel auszuführen, um ein Ergebnis der ersten Subtraktionsoperation an der höheren Seite des zweiten Registers und ein Ergebnis der zweiten Subtraktionsoperation an der niedrigeren Seite des zweiten Registers zu speichern.
  5. Viterbi-Decodierungsprozessor nach Anspruch 4, dadurch gekennzeichnet, dass der Speicher dazu geeignet ist, 1-Wort breite Zweigmetriken für zwei Zweige, die sich in einem Trellis-Diagramm von zwei Zuständen zu einem unmittelbar vorangehenden Zeitpunkt auf einen Zustand zu einem Zeitpunkt von Interesse ändern, an benachbarten Adressen zu speichern; und die Registerdatei dazu geeignet ist, die im Speicher gespeicherten beiden Zweigmetriken über den Datenbus gleichzeitig auszulesen und die beiden Zweigmetriken zur höheren und zur niedrigeren Seite des fünften Registers zu laden.
  6. Viterbi-Decodierungsprozessor nach Anspruch 5, dadurch gekennzeichnet, dass der Bus zwei 2-Wort breite Datenbusse aufweist; und die Registerdatei dazu geeignet ist, unter individueller Verwendung der beiden Datenbusse zwei Operationen unter den folgenden Operationen gleichzeitig auszuführen: i) gleichzeitiges Laden der beiden Zweigmetriken vom Speicher zum fünften Register, ii) individuelles Laden jeder Pfadmetrik vom Speicher zum vierten Register, und iii) gleichzeitiges Speichern zweier neuer Pfadmetriken vom dritten Register in den Speicher.
DE60117705T 2001-01-15 2001-12-05 Viterbi-Decodierungsprozessor Expired - Lifetime DE60117705T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2001006066A JP3984790B2 (ja) 2001-01-15 2001-01-15 ビタビ復号処理装置
JP2001006066 2001-01-15
PCT/JP2001/010624 WO2002056480A1 (fr) 2001-01-15 2001-12-05 Decodeur de viterbi

Publications (2)

Publication Number Publication Date
DE60117705D1 DE60117705D1 (de) 2006-05-04
DE60117705T2 true DE60117705T2 (de) 2006-08-17

Family

ID=18874020

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60117705T Expired - Lifetime DE60117705T2 (de) 2001-01-15 2001-12-05 Viterbi-Decodierungsprozessor

Country Status (5)

Country Link
US (1) US20040054958A1 (de)
EP (1) EP1355431B1 (de)
JP (1) JP3984790B2 (de)
DE (1) DE60117705T2 (de)
WO (1) WO2002056480A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4408783B2 (ja) * 2004-09-29 2010-02-03 Necエレクトロニクス株式会社 復号装置及び復号方法
KR101127333B1 (ko) * 2007-10-26 2012-03-29 콸콤 인코포레이티드 최적화된 비터비 디코더 및 gnss 수신기

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3237267B2 (ja) * 1992-07-23 2001-12-10 松下電器産業株式会社 演算装置
US5440504A (en) * 1993-02-19 1995-08-08 Matsushita Electric Industrial Co., Ltd. Arithmetic apparatus for digital signal processor
JP3092534B2 (ja) * 1996-12-13 2000-09-25 日本電気株式会社 ブロックiirプロセッサ
JP3338374B2 (ja) * 1997-06-30 2002-10-28 松下電器産業株式会社 演算処理方法および装置
US5987490A (en) * 1997-11-14 1999-11-16 Lucent Technologies Inc. Mac processor with efficient Viterbi ACS operation and automatic traceback store
JP3336986B2 (ja) * 1999-02-03 2002-10-21 日本電気株式会社 信号処理プロセッサ及びそれに用いる丸め機能付き積和演算器
US6601215B1 (en) * 2000-02-01 2003-07-29 Agere Systems Inc. Traceback buffer management for VLSI Viterbi decoders

Also Published As

Publication number Publication date
EP1355431A4 (de) 2005-06-22
DE60117705D1 (de) 2006-05-04
US20040054958A1 (en) 2004-03-18
JP2002217747A (ja) 2002-08-02
EP1355431B1 (de) 2006-03-08
WO2002056480A1 (fr) 2002-07-18
JP3984790B2 (ja) 2007-10-03
EP1355431A1 (de) 2003-10-22

Similar Documents

Publication Publication Date Title
DE69827915T2 (de) Verarbeitungsverfahren und -vorrichtung
DE69333460T2 (de) Arithmetisches Gerät
EP1116128B1 (de) Verfahren zum konfigurieren eines konfigurierbaren hardware-blocks
DE3424962C2 (de)
DE3126878A1 (de) Adressen-steuerschaltung fuer mikroprozessoren
DE60028906T2 (de) Viterbi Dekoder
DE4118331A1 (de) Bussystem zur anwendung bei einem informationsverarbeitungsgeraet
DE19504864C2 (de) Rechenwerk zum Ausführen einer Division
DE69834781T2 (de) Viterbi-Dekoder mit geringem Leistungsverbrauch
EP1599794B1 (de) Prozessor mit verschiedenartigen steuerwerken für gemeinsam genutzte ressourcen
DE3144563C2 (de)
DE10196688B3 (de) Ein Decodierer für eine trellis-basierte Kanalcodierung
DE60117705T2 (de) Viterbi-Decodierungsprozessor
DE10010238C2 (de) Verfahren zum Speichern von Pfadmetriken in einem Viterbi-Decodierer
DE60101745T2 (de) Viterbi dekodierung mit pfadmetrikaktualisierung durchgeführt in einheiten von bitscheiben
DE19847245C2 (de) Kombinierte Addierer- und Logik-Einheit
EP1393514B1 (de) Verfahren und schaltungsanordnung zur übertragung von daten zwischen einem prozessor und einem hardware-rechenwerk
DE2459476A1 (de) Schaltungsanordnung fuer nichtzyklische datenpermutationen
EP1223679B1 (de) Berechnung und Zuweisung von Übergangsmetrikwerten für einen Viterbi-Dekodierer
DE69914241T2 (de) Addier- Vergleichs- Auswahl- Schaltung für einen Viterbi Dekodierer
DE1549446A1 (de) Digitalrechner
DE10206830B4 (de) Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
EP1297668A1 (de) Viterbi-entzerrer mittels verschiedener hardware-datenpfaden für acs und übertragungsmetriken operationen
DE3246212A1 (de) Steuereinrichtung mit gespeichertem programm
DE60035999T2 (de) Signalprozessor und Produkt-Summier-Vorrichtung mit Rundungsfunktion

Legal Events

Date Code Title Description
8364 No opposition during term of opposition