DE60125686T2 - Falterprozessor zur Telekommunikation - Google Patents

Falterprozessor zur Telekommunikation Download PDF

Info

Publication number
DE60125686T2
DE60125686T2 DE60125686T DE60125686T DE60125686T2 DE 60125686 T2 DE60125686 T2 DE 60125686T2 DE 60125686 T DE60125686 T DE 60125686T DE 60125686 T DE60125686 T DE 60125686T DE 60125686 T2 DE60125686 T2 DE 60125686T2
Authority
DE
Germany
Prior art keywords
output
log
processor
input
decoder
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
DE60125686T
Other languages
English (en)
Other versions
DE60125686D1 (de
Inventor
Mark Andrew Carlingford Bickerstaff
Bing Tempe Xu
Christopher J. Springwood Nicol
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 of America Corp
Original Assignee
Lucent Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lucent Technologies Inc filed Critical Lucent Technologies Inc
Publication of DE60125686D1 publication Critical patent/DE60125686D1/de
Application granted granted Critical
Publication of DE60125686T2 publication Critical patent/DE60125686T2/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/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/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • H03M13/3922Add-Compare-Select [ACS] operation in forward or backward recursions
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • 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/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • 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/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • H03M13/3927Log-Likelihood Ratio [LLR] computation by combination of forward and backward metrics into LLRs
    • 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/3961Arrangements of methods for branch or transition metric calculation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • 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
    • 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
    • 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/6502Reduction of hardware complexity or efficient processing
    • 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/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient 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/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • 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/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6511Support of multiple decoding rules, e.g. combined MAP and Viterbi decoding
    • 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/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • 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
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0054Maximum-likelihood or sequential decoding, e.g. Viterbi, Fano, ZJ algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0055MAP-decoding

Description

  • Technisches Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft im Allgemeinen das Entschlüsseln in einem drahtlosen Kommunikationssystem und insbesondere einen Falterprozessor zum Entschlüsseln in drahtlosen Kommunikationssystemen.
  • Allgemeiner Stand der Technik
  • Kommunikationssysteme befassen sich mit der Übertragung von Information von einem Sender zu einem Empfänger. Das Übertragungsmedium, durch welches die Information geht, enthält oft viele Rauschquellen, die kosmische Strahlung, zusätzliches weißes Rauschen nach Gauß (AWGN), Raleigh-Streuung (Mehrwegverteilung) und elektromagnetisches Rauschen aufweisen. Die Gegenwart dieser Rauschquellen verschlechtert oder verhindert die Übertragung der gewünschten Information und schränkt somit die Kommunikationsfähigkeit ein.
  • Es ist im Stand der Technik gut bekannt, dass das Verschlüsseln der zu sendenden Information durch das Hinzufügen von redundanter Information, die aus der Quelleninformation berechnet wird, die Fähigkeit zum erfolgreichen Empfangen der gesendeten Information verbessert. Das Entschlüsseln macht sich die redundante Information zu Nutze, um die Gegenwart von Fehlern zu erkennen oder die am wahrscheinlichsten emittierten Bits unter den empfangenen zu schätzen. Fehler werden erkannt, wenn sich die gesendete Redundanz von derjenigen unterscheidet, die nachfolgend mit den empfangenen Daten berechnet worden ist.
  • Das Gewicht eines Codewortes ist ein Maß der Kapazität zum Wiederherstellen von Daten aus dem Codewort. Ein Codewort mit einer hohen Anzahl von Bits weist ein hohes Gewicht auf. Ein Codewort mit geringem Gewicht weist eine geringe Fähigkeit zur Wiederherstellung von Daten auf, wohingegen ein Codewort mit hohem Gewicht eine verbesserte Wiederherstellung von Daten aufweist.
  • Verschlüsselungsschemata der automatischen Wiederholungsanfrage (ARQ) setzen einen Fehlererkennungscode ein. Falls die Gegenwart eines Fehlers in der empfangenen Information erkannt wird, wird eine Nachricht, welche die erneute Sendung der relevanten Information anfordert, von dem Empfänger an den Sender gesendet. ARQ-Verschlüsselungsschemata sind relativ einfach, erfordern jedoch die Benutzung eines Rückkopplungskanals und liefern einen variablen und vergleichsweise langsamen Durchsatz.
  • Verschlüsselungsschemata mit Vorwärtsfehlerkorrektur (FEC) werden benutzt, um Information in Systemen zu verschlüsseln, in denen es um Verbreitungsverzögerungen und Latenz geht. Der Empfänger ist dazu fähig, Fehler zu erkennen und zu korrigieren, ohne einen Rückführkanal zu benötigen.
  • Verschlüsselungsschemata können grob in Blockcodes und Konvolutionscodes kategorisiert werden.
  • Blockcodes bilden eine Nachricht von k Informationsbits in eine strukturierte Sequenz von n Bits ab, wobei n > k ist. Der Code wird als ein (n, k)-Code bezeichnet. Das Verhältnis (n – k)/k wird die Redundanz des Codes genannt und das Verhältnis von Informationsbits zu der Gesamtanzahl von Bits k/n wird die Codegeschwindigkeit genannt. Die zusätzlichen eingefügten Bits stellen eine Redundanz bereit und werden von dem Decoder benutzt, um eine Fehlererkennung und -korrektur bereitzustellen. Die redundanten Bits, die während des Verschlüsselns hinzugefügt werden, hängen nur von den k Informationsbits in dem Nachrichtenblock ab. Blockcodes werden häufig benutzt, um Fehler zu erkennen, wenn ARQ ausgeführt wird.
  • Die Konvolutionsverschlüsselung erzeugt aus k Informationsbits einen Block von n Codebits in einem gegebenen Zeitraum, wobei n und k in der Regel klein sind. Der Block eines Bits, der von dem Codierer erzeugt wird, hängt nicht nur von den k Informationsbits des Zeitraums ab, sondern auch von den Nachrichtenblöcken, die während einer vorbestimmten Anzahl von vorherigen Zeiträumen erzeugt wurden. Der Speicher, der auf diese Weise der Verschlüsselung verliehen wurde, bewirkt, dass Fehler basierend auf den erlaubten Codesequenzen korrigiert werden. Die Konvolutionsentschlüsselung kann entweder mittels eines Viterbi-Algorithmus oder eines LogMAP-Algorithmus ausgeführt werden.
  • Konvolutionscodes werden für drahtlose Sprachkommunikationssysteme bevorzugt, in denen die erneute Übertragung von Daten und die damit verbundene Verzögerung untragbar sind. Blockcodes sind dazu fähig, einen höheren Durchsatz zu liefern, und werden für die Übertragung von Daten bevorzugt, wenn es nicht so sehr um die Latenz geht.
  • Turbocodes, die auch als parallele verkettete Codes bekannt sind, sind eine Codeklasse, deren Leistung sehr nahe bei der Shannon-Kapazitätsgrenze liegt. Turbocodierer werden durch entweder paralleles oder serielles Verbinden von Konvolutionscodierern umgesetzt, um verkettete Ausgaben zu erzeugen. Bitsequenzen, die von einem Codierer zu einem anderen gehen, werden von einer Verschachtelungseinheit permutiert. Auf diese Weise werden Codewörter mit geringem Gewicht, die von einem einzigen Codierer erzeugt werden, in Codewörter mit hohem Gewicht umgewandelt. Die Turboentschlüsselung nimmt folglich zwei Codewörter mit geringem Gewicht und erhält den Effekt eines Codewortes mit einem viel höheren Gewicht.
  • Derzeit beschäftigen sich drahtlose Verbraucherkommunikationssysteme primär mit der Sprachübertragung. Solche drahtlosen Kommunikationssysteme weisen den fortgeschrittenen mobilen Telefondienst (AMPS), das globale System für mobile Kommunikation (GSM) und den Mehrfachzugriff im Codemultiplex (CDMA) auf. Diese stehen für Systeme der ersten (1G) und der zweiten (2G) Generation. Mit der Konvergenz von Daten- und Sprachkommunikationssystemen entstehen Systeme der 2,5ten Generation (2,5G) und der dritten Generation (3G), in denen die Übertragung von Daten zu einem bedeutenderen Aspekt wird. Um eine bessere Fehlerleistung bei höheren Übertragungsgeschwindigkeiten zu erreichen, wird die Turboblockverschlüsselung bevorzugt. Die der Blockcodierung eigene Latenz ist kein so bedeutendes Problem wie bei der Sprachübertragung. Neue Mobilfunkstandards der dritten Generation wie der universelle mobile Telekommunikationsdienst (UMTS) und CDMA2000 erfordern die Turboverschlüsselung für Datenströme und die Konvolutionsverschlüsselung für Sprachströme. Diese Systeme erfordern einen komplexen Turbodecoder für Daten und einen Viterbi-Decoder für Sprache. Darüber hinaus erfordert die Rückkompatibilität, dass Standards der zweiten Generation ebenfalls unterstützt werden.
  • Die Übertragung von Sprache und Daten stellt widerstreitende Anforderungen bezüglich der Übertragungsgeschwindigkeit gegenüber Latenz und Verbreitungsverzögerung bereit. Die derzeitige Art und Weise, dieses Problem anzusprechen, ist die die Bereitstellung getrennter Verschlüsselungssysteme: die Turboverschlüsselung für Datenströme und die Konvolutionsverschlüsselung für Sprachströme. Folglich sind auch unterschiedliche Decoder erforderlich, was zu einer Vielfalt von Hardwareplattformen und somit zu erhöhten Kosten für Telekommunikationsbetreiber führt.
  • Falterprozessoren bestehen in der Regel aus einer Anzahl von Addieren-Vergleichen-Auswählen-Einheiten und einem Zweigmetrikrechner. Bekannte Falterprozessoren sind dazu in der Lage, eine Viterbi- oder LogMAP-Berechnung auszuführen. Um folglich Viterbi- und LogMAP-Berechnungen auszuführen, sind zwei unterschiedliche Typen von Falterprozessoren erforderlich, was zu zusätzlichen Hardwarekosten führt.
  • WO-A-99 52-216 offenbart eine Kanalverschlüsselungs-/-Entschlüsselungsvorrichtung mit zwei getrennten physikalischen Decodern. Insbesondere werden zwei getrennte Soft-Decision (weiche Entscheidung) – Viterbi-Decoder in Kombination mit einer Verschachtelungseinheit und einer Entschachtelungseinheit benutzt, um eine Konvolutionsentschlüsselung und Turboentschlüsselung bereitzustellen.
  • US-A-6 115 436 offenbart ein Verfahren zum Entschlüsseln eines Signals, das über einen Kanal übertragen wird, um ein Quellendatensignal zu bestimmen, das ein nichtbinäres Trellis benutzt. Insbesondere wird ein verschlüsseltes Signal empfangen, ein binärer Faltervorgang ausgeführt und die Ergebnisse des binären Faltervorgangs werden gespeichert. Danach wird bestimmt, ob mehr grundlegende Faltertrellis in dem nichtbinären Trellis bezeichnet sind. Wenn es mehr gibt, dann wird der binäre Faltevorgang noch einmal ausgeführt; anderenfalls werden ACS-Ergebnisse mit jedem Knoten verglichen und ein Überlebensweg und eine angesammelte Wegmetrik jedes Knotens werden ausgewählt. Jedes bezeichnete binäre Faltertrellis wird mit dem grundlegenden binären Viterbi-Faltervorgang analysiert, um ein Paar Wege zu jedem Knoten des nichtbinären Trellis zu erzeugen. Die Wege werden dann verglichen, um einen Überlebensweg für diesen Knoten zu bestimmen.
  • "IMPLEMENTATION AND PERFORMANCE OF A TURBO/MAP DECODER" von Steven S. Pietrobon offenbart einen Turbo-/MAP-Decoder, der einen seriellen Block-MAP-Decoder aufweist, der in der Logarithmusdomäne arbeitet, die programmierbare Gatteranordnungen und EPROMs aufweist, welche ermöglichen, dass der Decoder für Codes programmiert wird, die unterschiedliche Zustandsanzahlen aufweisen. Die Log-Summen-Korrektur in einem LogMAP-Turbodecoder und die Synchronisation für Turbodecoder werden auch bereitgestellt.
  • Kurzdarstellung der Erfindung
  • Ein Prozessor und Verfahren gemäß der Erfindung sind wie in den unabhängigen Ansprüchen dargelegt. Bevorzugte Formen sind in den abhängigen Ansprüchen dargelegt.
  • Gemäß den Prinzipien der vorliegenden Erfindung wird eine Falterprozessoranordnung bereitgestellt, die dazu fähig ist, Konvolutions- und LogMAP-Berechnungen auszuführen. Die Falterprozessoranordnung der Erfindung weist eine Log-Summen-Korrekturvorrichtung auf, die mit gut bekannten Vergleichs- und Auswahlkomponenten verbunden ist. Ein steuerbarer Schalter zum selektiven Verbinden von Ausgaben der Auswahlkomponente und der Log-Summen-Korrekturvorrichtung wird bereitgestellt, um eine gewünschte Ausgabe des Falterprozessors zu erzeugen. Die Erfindung stellt vorteilhaft eine Reduzierung der Hardware bereit, da ein einziger Falterprozessor Berechnungen ausführen kann, die derzeit zwei unterschiedliche Falterprozessoren erfordern.
  • Kurzbeschreibung der Zeichnungen
  • Im Folgenden wird eine Reihe von bevorzugten Ausführungsformen der vorliegenden Erfindung mit Bezug auf die Zeichnungen beschrieben. Die Figuren zeigen:
  • 1 eine schematische Blockdiagrammdarstellung eines Kommunikationsnetzwerks, das eine Vielzahl von Protokollen einsetzt.
  • 2A eine schematische Blockdiagrammdarstellung eines Kommunikationssystems, das die Verschlüsselung anwendet;
  • 2B eine schematische Blockdiagrammdarstellung eines generischen Viterbi-Decoders in einem Kommunikationssystem, das die Verschlüsselung anwendet;
  • 2C eine schematische Blockdiagrammdarstellung eines generischen Turbodecoders in einem Kommunikationssystem, das die Verschlüsselung anwendet;
  • 3 eine schematische Blockdiagrammdarstellung eines vereinheitlichten Decoders;
  • 4 eine schematische Blockdiagrammdarstellung einer Architektur für einen vereinheitlichten Decoder;
  • 5A eine schematische Blockdiagrammdarstellung eines Falterprozessors aus 4;
  • 5B eine schematische Blockdiagrammdarstellung einer Addieren-Vergleichen-Auswählen (ACS) -Einheit aus 4;
  • 6A eine Darstellung eines 32-Zustands-Trellis und seiner entsprechenden Falterprozessoren und Wegmetriken;
  • 6B die resultierenden Wegmetrikstellen;
  • 7A bis 7E Darstellungen der ortsfesten Wegmetrikadressierung zu den jeweiligen Zeiten t = 1 bis t = 5;
  • 7F eine Darstellung der Adressierung der Wegmetrikspalten;
  • 8A bis 8F Darstellungen der ortsfesten Wegmetrikadressierung einer Unkehrtrelliskonfiguration;
  • 9A eine schematische Blockdiagrammdarstellung eines Zwischenentschlüsselungs-Speicherprozessors aus 4;
  • 9B eine schematische Blockdiagrammdarstellung einer auseinander gezogenen Ansicht von 9A, die ein Fensterspeicher-Subsystem, eine Rückverfolgungssteuerung und eine Verschachtelungssteuerung zeigt;
  • 9C eine schematische Blockdiagrammdarstellung einer Rückverfolgungssteuerung aus 9B;
  • 9D eine schematische Blockdiagrammdarstellung einer Verschachtelungseinheit aus 9B;
  • 9E eine auseinander gezogene Ansicht einer Verschachtelungsadresssteuerung aus 9D;
  • 9F eine schematische Blockdiagrammdarstellung eines Fensterspeicher-Subsystems aus 9B;
  • 10A eine schematische Blockdiagrammdarstellung eines LogLikelihood-Prozessors aus 4 für einen Ein-Reihen-Decoder;
  • 10B eine schematische Blockdiagrammdarstellung einer Addieren-Vergleichen-Auswählen-Knoteneinheit aus 10A;
  • 10C eine schematische Blockdiagrammdarstellung eines LogLikelihood-Prozessors aus 4 für einen Acht-Reihen-Decoder;
  • 10D eine schematische Blockdiagrammdarstellung einer ACS-Einheit aus 10A;
  • 11 eine schematische Blockdiagrammdarstellung einer Bank von Falterentschlüsselungsprozessoren aus 4;
  • 12 eine schematische Blockdiagrammdarstellung eines Umkehradressprozessors aus 4;
  • 13 eine schematische Blockdiagrammdarstellung von Normalisierungssubtrahierern aus 4;
  • 14 eine schematische Blockdiagrammdarstellung eines Komparators aus 4;
  • 15 eine schematische Blockdiagrammdarstellung eines Wegmetrikspeichers aus 4;
  • 16 eine schematische Blockdiagrammdarstellung eines Vorwärtsadressprozessors;
  • 17 eine schematische Blockdiagrammdarstellung eines Komparators(ACS-Ebene) aus 4;
  • 18 eine schematische Blockdiagrammdarstellung eines Eingabesymbolverlaufs aus 4;
  • 19 eine schematische Blockdiagrammdarstellung eines LogLikelihood-Verhältnisprozessors aus 4;
  • 20A und 20B die Benutzung einer Vielzahl von Decodern zur Umsetzung eines einzigen Turbodecoders;
  • 21 eine schematische Blockdiagrammdarstellung von zwei verbundenen Decodern, die zusammen als ein einziger Decoder (16-Zustands-Trellis in jedem Zyklus) arbeiten;
  • 22 eine schematische Blockdiagrammdarstellung von vier verbundenen Decodern, die zusammen als ein einziger Decoder für eine Entschlüsselung mit noch höherer Leistung (32-Zustands-Trellis in jedem Zyklus) arbeiten; und
  • 23A und 23B schematische Blockdiagrammdarstellungen eines nicht systematischen Codierers.
  • Ausführliche Beschreibung
  • Die bevorzugte Ausführungsform stellt eine vereinheitlichte Decoderarchitektur für drahtlose Kommunikationssysteme bereit. Der vereinheitlichte Decoder führt die Entschlüsselung aus, die für durch Konvolution verschlüsselte und durch Turbo verschlüsselte Datenströme erforderlich ist. Die vereinheitlichte Decoderarchitektur kann eine Vielzahl von Datenströmen und eine Vielzahl von Sprachströmen gleichzeitig unterstützen. Darüber hinaus kann der Decoder gegebenenfalls dynamisch unterteilt sein, um Sprachströme für unterschiedliche Standards zu entschlüsseln. Die bevorzugte Ausführungsform ist bausteinförmig und folglich ohne weiteres skalierbar.
  • 1 zeigt ein drahtloses Kommunikationsnetzwerk 100. Eine UMTS-Basisstation 110 enthält einen Sender/Empfänger 112, der ein Decodermodul 150a enthält. Der Sender/Empfänger 112 kommuniziert über ein Schaltnetzwerk 160 mit einem anderen UMTS-Sender/Empfänger 146, der sich in einer entfernten Basisstation 140 befindet und ein Decodermodul 150f enthält. Der Sender/Empfänger 112 kommuniziert auch mit einem mobilen Handapparat 160a, der ein Decodermodul 150i enthält. Der Sender/Empfänger 146 kommuniziert mit einem anderen mobilen Handapparat 160f, der eine Decodereinheit 150m enthält.
  • Die Basisstation 140 enthält weitere Sender/Empfänger 142 und 144, die jeweils Decodereinheiten 150d und 150e enthalten. Der Sender/Empfänger 142 ist konfiguriert, um als ein CDMA-Sender/Empfänger zu arbeiten und kommuniziert über das Schaltnetzwerk 160 mit der entfernten CDMA-Basisstation 130, die den CDMA-Sender/Empfänger 132 und die Decodereinheit 150c enthält. Der Sender/Empfänger 142 kommuniziert auch mit einem mobilen Handapparat 160d, der eine Decodereinheit 150j enthält. Der Sender/Empfänger 132 kommuniziert mit einem mobilen Handapparat 160c, der eine Decodereinheit 150g enthält.
  • Der Sender/Empfänger 144 kommuniziert über das Schaltnetzwerk 160 mit der entfernt positionierten Basisstation 120, die den Sender/Empfänger 122 und die Decodereinheit 150b enthält. Der Sender/Empfänger 144 kommuniziert auch mit einem mobilen Handapparat 160e, der eine Decodereinheit 150k enthält. Der Sender/Empfänger 122 kommuniziert mit einem mobilen Handapparat 160b, der eine Decodereinheit 150h enthält.
  • Die Decodereinheiten 150a, 150b, 150c, 150d, 150e, 150f, 150g, 150h, 150i, 150j, 150k und 150m, die sich in den Sendern/Empfängern 112, 122, 132, 142, 144 und 146 befinden, und die mobilen Handapparate 160a...160f sind Ausführungsformen der vereinheitlichten Decoderarchitektur, die konfiguriert worden sind, um sich an die unterschiedlichen zellularen Netzwerkstandards anzupassen.
  • Die vereinheitlichte Decoderarchitektur aus 1 bietet Telekommunikationsunternehmen, die mit einer Vielzahl von Netzwerkstandards arbeiten, einen großen Nutzen im Hinblick auf die Flexibilität und Kostenreduzierung, da der gleiche Decoderblock benutzt werden kann, um viele verschiedene Verschlüsselungsschemata in verschiedenen Netzwerkkomponenten umzusetzen.
  • 2A zeigt ein typisches Kommunikationssystem 200, in dem eine Verschlüsselung benutzt wird, um die Übertragung von Information von einem Sender 210 zu einem Empfänger 270 zu verbessern. Der Sender 210 weist eine Informationsquelle 205 auf, welche einen Eingabedatenstrom zu einem Codierer 220 leitet, in dem redundante Information gemäß einem vordefinierten Verschlüsselungsalgorithmus zu dem Eingabedatenstrom hinzugefügt wird, um die Fähigkeit zum Erkennen und Korrigieren von Fehlern zu verbessern, die während der Übertragung von Information als ein Ergebnis von Rauschquellen auftreten können, die in einem Kommunikationskanal 240 vorhanden sind. Der verschlüsselte Eingabestrom wird dann moduliert 230, um den verschlüsselten Datenstrom auf eine zu übertragende Wellenform einzuprägen. Die verschlüsselte Information wird über einen Kanal 240 gesendet, der viele Rauschquellen 280 aufweist, die auf ihn wirken. Der Kanal 240 ist mit einem Empfänger 270 verbunden, der einen Demodulator 250 aufweist, der den Modulator 230 ergänzt, wobei der Demodulator 250 eine Ausgabe für den Decoder 260 erzeugt, der ein empfangenes Informationssignal 275 ausgibt.
  • 2B zeigt das Kommunikationssystem 200, in dem der Decoder 260 ein generischer Viterbi-Decoder ist. Die Eingabe in den Viterbi-Decoder 260 ist mit Information verschlüsselt, die aus dem Kanal 240 empfangen wird. Der Viterbi-Decoder weist eine Zweigmetrikrechner (BMC) -Einheit 289 auf, deren Ausgabe einer Addieren-Vergleichen-Auswählen (ACS) -Einheit 291 bereitgestellt wird. Eine Zustandssteuerung 290 stellt der BMC-Einheit 289, der ACS-Einheit 291 und einem Wegmetrikspeicher 292 Eingaben bereit. Der Wegmetrischspeicher 292 fungiert als ein Doppelpuffer und tauscht Information mit der ACS-Einheit 291 aus. Eine negative Übertragsausgabe 294 der ACS-Einheit 291 wird einem Rückverfolgungsspeicher und der Steuerung 293 bereitgestellt, deren Ausgabe das empfangene Informationssignal 275 ist.
  • 2C zeigt eine Turboentschlüsselungskonfiguration des Decoders 260 aus 2A. Ein empfangenes Symbol in einem Turbodecoder besteht aus systematischen Daten, welche für die tatsächlichen Daten stehen, die übertragen werden, und Paritätsdaten, welche für die verschlüsselte Form der übertragenen Daten stehen. Eine erste Eingabe 261, welche die Paritätsdaten des empfangenen Symbols sind, wird einem Demultiplexer 263 bereitgestellt. Eine erste Ausgabe 264 des Demultiplexers 263 wird einem ersten Decoder 266 bereitgestellt. Eine zweite Eingabe 262, welche die systematischen Daten des empfangenen Symbols sind, wird dem ersten Decoder 266 bereitgestellt. Eine rekursive Eingabe 277 wird auch dem ersten Decoder 266 bereitgestellt. Die Ausgabe 267 des ersten Decoders 266 wird dann einer Verschachtelungseinheit 268 bereitgestellt, deren Ausgabe 269 einem zweiten Decoder 271 bereitgestellt wird. Eine zweite Ausgabe 265 des Demultiplexers 263 wird auch dem zweiten Decoder 271 bereitgestellt. Eine erste Ausgabe 272 des zweiten Decoders 271 wird der ersten Entschachtelungseinheit 274 bereitgestellt, deren Ausgabe die rekursive Eingabe 277 ist. Eine zweite Ausgabe 273 des zweiten Decoders 271 wird einer zweiten Entschachtelungseinheit 276 bereitgestellt. Die Ausgabe der zweiten Entschachtelungseinheit 276 wird einem Doppelbegrenzer 278 bereitgestellt, der einen Schwellenwert auf eine weiche Ausgabe anwendet, um sie in eine harte Ausgabe umzuwandeln, die ein empfangenes Informationssignal 275 ist.
  • Die vereinheitlichte Decoderarchitektur der bevorzugten Ausführungsform soll den Decoder 260 in drahtlosen Kommunikationssystemen ersetzen, die sowohl Sprach- als auch Datenfähigkeiten aufweisen, und macht sich die Ähnlichkeit in den Berechnungen zu Nutze, die für die Viterbi-Entschlüsselung und LOG-MAP-Turboentschlüsselung benötigt werden, so dass Speicher- und Verarbeitungseinheiten effizient benutzt werden, wenn sie für eines dieser Schemata konfiguriert sind. LogMAP ist ein Algorithmus, der bei der Entschlüsselung von Konvolutionscodes benutzt werden kann. LogMAP wird auch in einem halben Zyklus einer Turboentschlüsselungsiteration benutzt. Prozessoren innerhalb der bevorzugten Ausführungsform werden gestapelt und miteinander verbunden, indem eine hierarchische Schaltstruktur benutzt wird, so dass sie unabhängig als getrennte Decoder funktionieren können, oder sie können alternativ kombiniert werden, um einen einzigen Hochgeschwindigkeitsdecoder zu bilden, bei dem eine vorbestimmter Prozessor vorherrschend ist.
  • 3 zeigt die Blockarchitektur einer vereinheitlichten Decoderstruktur 900 gemäß einer Ausführungsform der vorliegenden Erfindung. Ein Mehrbit-Eingabesymbol 901 aus einem Alphabet eines vorher vereinbarten Codierungsschemas für eine bestimmte Übertragung wird auf eine Bank von Falterentschlüsselungsprozessoren 920 übertragen. Die Bank von Falterentschlüsselungsprozessoren 920 empfängt auch als Eingaben die Ausgaben einer Bank erster Speicher 940. Eine Steuereinheit 960 stellt jedem Zwischenentschlüsselungsergebnis-Speicher 910, der Bank von Falterentschlüsselungsprozessoren 920, der Bank erster Speicher 940 und einer Bank zweiter Speicher 950 Eingaben bereit. Die Steuerung 960 erstellt angemessene Steuersignale durch die Eingaben, um wunschgemäß eine Konvolutions- oder Turboverschlüsselung umzusetzen.
  • Die in 3 dargestellte Ausführungsform ist ein Ein-Reihen-Decoder. Wenn eine Vielzahl von Decoderreihen verbunden ist, um einen einzigen Decoder zu bilden, wird jede der Decoderreihen in dem einzigen Decoder mit dem gleichen Mehrbit-Eingabesymbol 901 bereitgestellt. Wenn eine Vielzahl von Decoderreihen als eine Vielzahl von Decodern fungiert, wird jeder umgesetzte Decoder mit einem getrennten Mehrbit-Eingabesymbol 901 bereitgestellt.
  • Die Bank von Falterentschlüsselungsprozessoren 920 erzeugt erste Ausgaben 962, 964, 966 und 968, die über einen Bus 990 an die Bank zweiter Speicher 950 übertragen werden. Ausgaben der Bank zweiter Speicher 950 werden als Eingaben der Bank erster Speicher 940 bereitgestellt. Eine generische Ausführungsform des Decoders benutzt in der Regel eine Bank erster Speicher 940 und eine Bank zweiter Speicher 950 in einem Doppelpuffermodus.
  • Die Bank von Falterentschlüsselungsprozessoren 920 erzeugt zweite Ausgaben 961, 963, 965 und 967, die Zwischenentschlüsselungsergebnisse sind, die der Steuereinheit 960 bereitgestellt werden.
  • Die Bank von Falterentschlüsselungsprozessoren 920 und die Rückführschleifenverbindung über mindestens einen der Speicher bilden eine Schleife, die als ein Trellisprozessor fungiert.
  • Der Entschlüsselungszwischenergebnis-Speicher 910 erzeugt eine entschlüsselte Ausgabe 999. Der Entschlüsselungszwischenergebnis-Speicher 910 kann der Steuereinheit 960 rekursive Ergebnisse bereitstellen, wenn ein LogMAP-Algorithmus berechnet wird, wie später beschrieben werden wird.
  • 4 zeigt die Blockarchitektur einer vereinheitlichten Decoderstruktur 1200 gemäß einer Ausführungsform der vorliegenden Erfindung. Eine Steuereinheit 1210 des vereinheitlichten Decoders 1200 empfängt eine Anzahl von Eingaben, welche die Geschwindigkeit 1201, die Einschränkungslänge 1202, den Konvolutions- oder Turboselektor 1203, die Polynome 1204, die Trellisrichtung 1205, die Anzahl von Iterationen 1206, die Blocklänge 1207, den Takt 1208 und die Rückstellung 1209 aufweisen. Die Geschwindigkeit 1201 zeigt an, wie viel Information benutzt wird, um ein einziges Datenbit zu repräsentieren, das in einem übertragenen Block vorliegt. Die Einschränkungslänge 1202 zeigt an, wie viele vorherige Eingabesymbole benutzt werden, um ein bereitgestelltes Eingabeinformationsbit zu verschlüsseln, und ist folglich ein Anzeichen für die Komplexität des Trellis, das verarbeitet wird, um ein gegebenes Eingabesymbol zu entschlüsseln. Die Polynome 1204 sind Generatorpolynomkoeffizienten, die in dem Entschlüsselungsprozess benutzt werden. Die Anzahl von Iterationen 1206 bestimmt, wie viele Schleifen von dem Decoder 1200 ausgeführt werden, wenn er im Turbomodus arbeitet. Ein größerer Wert für die Anzahl von Iterationen 2106 zeigt auf Kosten einer erhöhten Berechnungszeit eine genauere entschlüsselte Ausgabe 1294 an.
  • Die Steuereinheit 1210 ist mit einem Zwischenentschlüsselungsspeicher und Prozessor 1240, LogLikelihood-Prozessoren 1250a und 1250b, einer Bank von Multiplexern 1250c, einem Komparator 1247, Falterentschlüsselungsprozessoren 1260, einem Umkehradressprozessor 1270, Normalisierungssubtrahierern 1278, einer Bank von Multiplexern 1278a, einem Wegmetrikspeicher 1280, einem Vorwärtsadressprozessor 1290, einem LogLikelihood-Verhältnisprozessor 1297 und einem Eingabesymbolverlauf 1298 verbunden. Die Steuereinheit 1210 ist dazu fähig, die Architektur des vereinheitlichten Decoders 1200 durch diese Verbindungen neu zu konfigurieren, um wunschgemäß entweder einen Konvolutionsdecoder oder einen Turbodecoder umzusetzen.
  • Eingabesymbole 1299 werden einem Eingabesymbolverlauf 1298 bereitgestellt, der als ein Doppelpuffer fungiert, um zu gewährleisten, dass ein konstanter Datenstrom beibehalten wird. Der Eingabesymbolverlauf 1298 empfängt auch eine Eingabesymbolverlauf-Bankauswahl 1211, eine Eingabesymbolverlauf-Adresse 1219, einen Eingabesymbolverlauf-Takt 1223 und eine Eingabesymbolverlauf-Rückstellung 1225 aus der Steuereinheit 1210. Der Eingabesymbolverlauf 1298 erzeugt eine erste Ausgabe 1291a, die den Falterentschlüsselungsprozessoren 1260 bereitgestellt wird, und eine zweite Ausgabe 1291b, die dem LogLikelihood-Prozessor 1250a bereitgestellt wird.
  • Die Falterentschlüsselungsprozessoren 1260 empfangen als Eingaben auch eine Umkehrtrellis-Wegmetrik 1265 aus dem Umkehradressprozessor 1270 und extrinsische Information 1242 aus dem Zwischenentschlüsselungsspeicher und -prozessor 1240. Die Steuereinheit 1210 stellt den Falterentschlüsselungsprozessoren 1260 auch eine Anzahl von Eingaben bereit, die eine Falterrückstellung 1215, eine Faltergeschwindigkeit 1216, einen Faltertakt 1217, Falterpolynome 1218, eine Faltereinschränkung 1220, einen Faltermodus 1221 und eine Beta-Phasenaktivierung 1235 aufweisen.
  • Die Falterentschlüsselungsprozessoren 1260 erzeugen neue Wegmetriken mit einer Vielzahl von Bits für einen entsprechenden Zustand in einem Trellisdiagramm, wobei die neuen Wegmetriken die Ausgabe auf den 32-Bit-Bussen 1266 und 1267 sind, die mit einem Komparator 1247 und einer Bank von Multiplexern 1250c verbunden sind. Die Falterentschlüsselungsprozessoren 1260 erzeugen auch Entscheidungsbits 1255, die als Eingaben dem Zwischenentschlüsselungsspeicher und -prozessor 1240 bereitgestellt werden.
  • In einer ersten Phase einer LogMAP-Berechnung berechnen die Falterentschlüsselungsprozessoren 1260 Gammas und Alphas. In einer zweiten Phase berechnen die Falterentschlüsselungsprozessoren 1260 Betas mit Hilfe von Dummybetas, die von dem LogLikelihood-Prozessor 1250a und dem LogLikelihood-Prozessor 1250b in der ersten Phase berechnet werden.
  • Jeder Falterprozessor innerhalb der Bank von Falterprozessoren 1260 enthält zwei Addieren-Vergleichen-Auswählen-Einheiten (dargestellt als ACS) 320 und einen Zwischenzweigmetrikrechner (BMC) 330, der in 5A dargestellt ist. Der BMC 330 führt die gleichen Funktionen aus wie die Zweigmetrikeinheiten (BMUs) in gut bekannten Viterbi-Decodern und jede ACS 320 führt eine Wegmetrikberechnung für die Trellisentschlüsselung aus.
  • 5A zeigt eine beispielhafte Faltereinheit der Falterprozessoren 1260 aus 4 mit zwei Addieren-Vergleichen-Auswählen-Einheiten 320 und einem Zwischenzweigmetrikrechner 330. Jede der Addieren-Vergleichen-Auswählen-Einheiten 320 wird der Eingabewegmetrik-0 1265a und der Eingabewegmetrik-1 1265b bereitgestellt. Das Eingabesymbol 1291a und die extrinsische Information 1242 werden an jeden der Zweigmetrikrechner 330 in der Bank von Falterprozessoren 1260 übertragen. Der Zwischenzweigmetrikrechner wird auch mit einer Faltergeschwindigkeit 1216, einer Faltereinschränkung 1220 und Falterpolynomen 1218 bereitgestellt.
  • Jeder Zustand in einer Spalte eines Trellis weist ein Paar Zweigmetriken auf, die zu ihm führen. Jede der einzelnen Zweigmetriken weist ein damit verbundenes Symbol auf. Wenn folglich ein Trellis in eine gegebene Richtung geleitet wird, wird für einen berücksichtigten Zustand je nach den vorherigen Zuständen eines von zwei möglichen Symbolen erwartet. Der BMC 330 bestimmt ein Maß der Nähe des empfangenen Eingabesymbols 1291a zu einem erwarteten Symbol. Der BMC 330 erzeugt eine Ausgabezweigmetrik-0 406, die einer ersten ACS-Einheit-0 320 und einer zweiten ACS-Einheit-1 320 auf einem Bus mit einer Breite von m Bits bereitgestellt wird. Der BMC 330 macht sich die Symmetrie des Trellis zu Nutze und erzeugt eine zweite Zweigmetrik-1 402 durch arithmetisches Umkehren der Zweigmetrik-0 406. Die Zweigmetrik-1 402 wird der ersten ACS-Einheit-0 320 und der zweiten ACS-Einheit-1 320 auf einem Bus bereitgestellt, der eine Breite von m Bits aufweist. Ein Faltermodus 1221 wird jeder der ACS-Einheiten 320 bereitgestellt, um sie für das benutzte Verschlüsselungsschema angemessen zu konfigurieren. Die ACS-Einheiten 320 und die BMC-Einheit 330 empfangen auch eine Falterrückstellung 1215, einen Faltertakt 1217 und eine Beta-Phasenaktivierung 1235.
  • Jede der ACS-Einheiten 320 erzeugt zwei Ausgaben, die für ACS 0 in 5A aus einer ersten Ausgabe 1255a und einer zweiten Ausgabe 1267a bestehen. Die erste Ausgabe 1255a ist ein Entscheidungsbit, das der Wert des Vergleichsbits mit negativem Übertrag ist, der anzeigt, welche der oberen oder der unteren potenziellen Wegmetrik ausgewählt wird. Ein Entscheidungsbit mit einem Wert 0 entspricht der ausgewählten unteren potenziellen Wegmetrik, wohingegen ein Wert 1 der ausgewählten oberen potenziellen Wegmetrik entspricht. Die zweite Ausgabe 1267a ist eine neue Wegmetrik mit einer Vielzahl von Bits für einen entsprechenden Zustand in einem Trellisdiagramm. ACS 1 erzeugt entsprechende Ausgaben 1255b und 1267b.
  • 5B zeigt eine Architektur einer ACS-Einheit-0 320 aus 5A. Zwei Eingabepaare 402 und 1265b und 406 und 1265a werden jeweiligen Addierern 410 und 412 bereitgestellt. Das erste Paar Eingaben besteht aus der Zweigmetrik-1 402 und Wegmetrik-1 1265b, wohingegen das zweite Paar Eingaben aus der Zweigmetrik-0 406 und der Wegmetrik-0 1265a besteht. Die Bestandteile jedes der Eingabepaare werden in jeweiligen Addieren 410 und 412 addiert, wobei die entsprechenden Ausgaben 411 und 413 der Addierer 410 und 412 einem Vollsubtrahierer 414 bereitgestellt werden. Die Ausgaben 411 und 413 werden auch einem ersten Zwei-zu-Eins-Multiplexer 420 bereitgestellt. Eine negative Übertragsausgabe 1255a des Vollsubtrahierers 414 wird zu dem ersten Multiplexer 420 geleitet, um ein Maximum MAX der Eingabewerte zu berechnen. Das negative Übertragsbit 1255a wird auch als eine Ausgabe der ACS-Einheit 320 mit einem Wert 0, der anzeigt, dass die untere Wegmetrik gewählt worden ist, und einem Wert 1 bereitgestellt, der anzeigt, dass die obere Wegmetrik gewählt worden ist. Eine zweite Ausgabe 415 des Vollsubtrahierers 414, der für die Differenz der zwei Addiererergebnisse 411 und 413 steht, wird einer Log-Summen-Korrekturtabelle 440 bereitgestellt, die das Ergebnis der neuen Wegmetrik anpasst, wenn die Ausgabe des Vollsubstrahierers 414 klein ist, um ein genaueres Ergebnis in der Log-Domäne für die LogMAP-Entschlüsselung zu erzeugen. Eine Ausgabe 441 der Log-Summen-Korrekturtabelle 440 wird einem Addierer 460 bereitgestellt. Eine Ausgabe 421 des ersten Multiplexers 420 wird dem Addierer 460 und einem zweiten Zwei-zu-Eins-Multiplexer 450 bereitgestellt. Ein Ergebnis 461 aus dem Addierer 460 wird dann als eine zweite Eingabe dem zweiten Multiplexer 450 bereitgestellt. Ein Steuersignal, das sich im Faltermodus 1221 befindet, wird auch als eine Eingabe dem zweiten Multiplexer 450 bereitgestellt und benutzt, um zu bestimmen, ob das Viterbi- oder LogMAP-Verschlüsselungsschema umgesetzt wird. Der zweite Multiplexer 450 bildet eine Ausgabe 451, die ein Sammelregister 470 und einen weiteren Multiplexer 480 versorgt. Das Sammelregister 470 empfängt eine Falterrückstellung 1215 und erzeugt eine Ausgabe 472 für den Multiplexer 480. Der Multiplexer 480 empfängt eine Beta-Phasenaktivierung 1235 als ein Auswahlsignal, das die Ausgabe 451 auswählt, wenn es inaktiv ist, und die Ausgabe 472 aus dem Sammelregister 470, wenn es aktiv ist. Die ausgewählte Ausgabe des Multiplexers 480 ist die Ausgabewegmetrik 1267a der ACS-Einheiten 320.
  • Die Bank von Multiplexern 1250c empfängt ein Auswahlsignal 1258 aus der Steuereinheit 1210, das benutzt wird, um entweder die Falterzweigmetriken 1266 und 1267 auszuwählen, die von den Falterprozessoren 1260 ausgegeben werden, oder die Wegmetriken auszuwählen, die von dem LogLikelihood-Prozessor-0 1250a und dem LogLikelihood-Prozessor-1 1250b erzeugt werden. Während einer Viterbi-Berechnung werden die Falterwegmetriken 1266 und 1267 ausgewählt. In der ersten Phase einer LogMAP-Berechnung werden die Falterwegmetriken 1266 und 1267 ausgewählt, während die Falterentschlüsselungsprozessoren 1260 Gammas und Alphas berechnen. Gleichzeitig berechnet der LogLikelihood-Prozessor 1250a Dummybetas. Am Ende der ersten Phase werden die Wegmetriken, die von dem LogLikelihood-Prozessor-0 1250a erzeugt werden, von der Bank von Multiplexern 1250c zur Übertragung ausgewählt, um die Berechnung von Betas in der zweiten Phase der LogMAP-Berechnung zu aktivieren.
  • Die Bank von Multiplexern 1250c gibt neue Wegmetriken auf einem unteren Wegmetrikbus 1295 und einem oberen Wegmetrikbus 1296 aus. Die Busse 1295 und 1296 sind mit den LogLikelihood-Prozessoren 1250a und 1250b, einer Bank von Multiplexern 1278a und einem Vorwärtsadressprozessor 1290 verbunden.
  • Der Vorwärtsadressprozessor 1290 empfängt eine Vorwärtstrellis-Auswahl 1232, ein Vorwärtstrellis-Halten 1234, ein transparentes Vorwärtstrellis-Bit 1236 und eine Wegmetrikeingabe-MUX-Auswahl 1238 von der Steuereinheit 1210, die benutzt werden, um den Vorwärtsadressprozessor 1290 demgemäß zu benutzen, ob der vereinheitlichte Decoder 1200 benutzt wird, um ein Trellis in die Vorwärts- oder Rückwärtsrichtung zu leiten.
  • Der Vorwärtsadressprozessor 1290 ordnet die neuen Wegmetriken, die auf den Bussen 1295 und 1296 empfangen worden sind, so dass eine dem Anschein nach sequenzielle Liste von Wegmetriken dem Falterprozessor 1260 zur Berechnung der nächsten Spalte des Trellis bereitgestellt wird, wenn das Trellis in die Vorwärtsrichtung geleitet wird. Wenn ein Trellis in die umgekehrte Richtung geleitet wird, wirkt der Vorwärtsadressprozessor 1290 transparent.
  • Der Wegmetrikspeicher 1280 empfängt neben den Vorwärtstrellis-Wegmetriken 1285, die von dem Vorwärtsadressprozessor 1290 ausgegeben werden, die Adressierungsinformationen ADDR0 1228a und ADDR1 1228b, eine Wegmetrikrückstellung 1230 und einen Wegmetrik-Lese-/Schreibtakt 1231 aus der Steuereinheit 1210. Der Wegmetrikspeicher 1280 gibt gespeicherte Wegmetriken 1276 an eine Bank von Multiplexern 1278a und die LogLikelihood-Prozessoren 1250a und 1250b aus.
  • Die Bank von Multiplexern 1278a wird als ein Verbindungspunkt für die Vielzahl von Decoderreihenkonfigurationen benutzt und empfängt gespeicherte Wegmetriken 1276, ein Steuersignal 1278b von der Steuereinheit 1210 und neue Wegmetriken auf den Bussen 1295 und 1296. Die Bank von Multiplexern 1278a ermöglicht die Initialisierung der Beta-Berechnung während der LogMAP-Berechnung und erzeugt eine Ausgabe 1277 für die Normalisierungssubtrahierer 1278.
  • Ein Komparator 1247 empfängt die Falterwegmetriken, die auf den Bussen 1266 und 1267 ausgegeben wurden, von den Falterentschlüsselungsprozessoren 1260 und bestimmt eine maximale neue Wegmetrik. Diese maximale neue Wegmetrik wird dann mit einer gespeicherten maximalen Wegmetrik verglichen und der größere der zwei Werte wird als eine Normalisierungsausgabe 1246 bereitgestellt, die an die Normalisierungssubtrahierer 1278 und den Zwischenentschlüsselungsspeicher und -prozessor 1240 gesendet wird.
  • Die Normalisierungssubtrahierer 1278 empfangen die Ausgabe 1277 aus der Bank von Multiplexern 1278a und subtrahieren die Normalisierungsausgabe 1246, um zu gewährleisten, dass die Wegmetriken in dem dynamischen Bereich der Architektur enthalten sind. Die normalisierten Wegmetriken 1275 werden ausgegeben und einem Umkehradressprozessor 1270 und den LogLikelihood-Prozessoren 1250a und 1250b bereitgestellt. Der Umkehradressprozessor 1270 empfängt auch als Eingaben die LogLikelihood-Aktivierung 1214, die LogLikelihood-0-Aktivierung 12030 und die LogLikelihood-1-Aktiverung 12031 , die Umkehrtrellisauswahl 1222, ein Umkehrtrellishalten 1224 und ein transparentes Umkehrtrellisbit 1226 von der Steuereinheit 1210. Die Eingaben aus der Steuereinheit 1210 werden benutzt, um den Umkehradressprozessor 1270 in Abhängigkeit davon, ob der Decoder 1200 ein Trellis in die Vorwärts- oder Umkehrrichtung durchquert, angemessen zu konfigurieren. Die Ausgabe des Umkehradressprozessors 1270 wird den Falterentschlüsselungsprozessoren 1260 als Umkehrtrellis-Wegmetrik 1265 bereitgestellt.
  • Der Umkehradressprozessor 1270 ordnet die normalisierten Wegmetriken, so dass eine gewünschte Sequenz von Wegmetriken dem Falterprozessor 1260 zur Berechnung der nächsten Spalte des Trellis bereitgestellt wird, wenn das Trellis in die Umkehrrichtung geleitet wird. Wenn ein Trellis in die Vorwärtsrichtung geleitet wird, wirkt der Umkehradressprozessor 1270 transparent.
  • Der LogLikelihood-Prozessor 1250a empfängt einen LogLikelihood-Modus 1214a, ein Umkehrtrellishalten 1224a, ein transparentes Umkehrtrellisbit 1226a, eine LogLikelihood-Geschwindigkeit 1248a, eine LogLikelihood-Einschränkung 1249a, einen LogLikelihood-Takt 1251a, eine LogLikelihood-Rückstellung 1252a, LogLikelihood-Polynome 1253a, eine LogLikelihood-0-Aktivierung 1203a0 , eine LogLikelihood-Aktivierung 1203a1 , eine Umkehrtrellisauswahl 1222a und ein Auswahlsignal 1258a von der Steuereinheit 1210. Der LogLikelihood-Prozessor 1250a empfängt auch als Eingaben die normalisierten Wegmetriken 1275, die Ausgabe 1291b aus dem Eingabesymbolverlauf 1298, die gespeicherten Wegmetriken 1276, die neuen Wegmetriken auf den Bussen 1296 und 1295 und extrinsische Verschachtelungsinformation 1256. Der LogLikelihood-Prozessor 1250a erzeugt eine erste Ausgabe 1245a, die einem LogLikelihood-Verhältnisprozessor 1297 bereitgestellt wird. Der LogLikelihood-Prozessor 1250a stellt der Bank von Multiplexern 1250c auch Eingaben 1266' und 1267' bereit.
  • Ein zweiter LogLikelihood-Prozessor 1250b empfängt entsprechende Eingaben 1214b, 1224b, 1226b, 1248b, 1249b, 1251b, 1252b, 1253b, 1203b0 , 1203b1 , 1222b und 1258b von der Steuereinheit 1210. Der LogLikelihood-Prozessor 1250b empfängt auch als Eingaben die normalisierten Wegmetriken 1275, die gespeicherten Wegmetriken 1276, extrinsische Verschachtelungsinformation 1256 und die neuen Wegmetriken auf den Bussen 1296 und 1295. Der LogLikelihood-Prozessor 1250b erzeugt eine Ausgabe 1245b, die dem LogLikelihood-Verhältnisprozessor 1297 bereitgestellt wird.
  • Der LogLikelihood 1250a wird benutzt, um Dummybetas in der ersten Phase der LogMAP-Berechnung zu berechnen. In der zweiten Phase der LogMAP-Berechnung werden die LogLikelihood-Prozessoren 1250a und 1250b in Verbindung mit den Falterentschlüsselungsprozessoren 1260 benutzt, um ein LogLikelihood-Ergebnis für jeweils „1" und "0" zu erschaffen.
  • Der Zwischenentschlüsselungsspeicher und -prozessor 1240 wirkt als ein Puffer zum Erzeugen von Ausgaben während einer Viterbi-Berechnung. Während einer LogMAP-Berechnung wirkt der Zwischenentschlüsselungsspeicher und -prozessor 1240 als ein erweiterter Speicher für den Wegmetrikspeicher 1280. Der Zwischenentschlüsselungsspeicher und -prozessor 1240 empfängt einen Zwischenentschlüsselungsmodus 1212, eine Zwischenentschlüsselungsrichtung 1237, eine Verteilungseingabe 1243, einen Lese-/Schreibtakt 1257, eine Rückstellung 1259 und ein Taktsignal 1254 von der Steuereinheit 1210. Der Zwischenentschlüsselungsspeicher und -prozessor 1240 empfängt auch die Normalisierungsausgabe 1246 und die Entscheidungsbits 1255. Der Zwischenentschlüsselungsspeicher und -prozessor 1240 erzeugt extrinsische Information 1242 und eine Rückverfolgungs-Prozessorausgabe 1567 an den LogLikelihood-Verhältnisprozessor 1297 und empfängt eine Eingabe 1293 von dem LogLikelihood-Verhältnisprozessor 1297. Der Zwischenentschlüsselungsspeicher und -prozessor 1240 erzeugt auch extrinsische Verschachtelungsinformation 1256 für die LogLikelihood-Prozessoren 1250a und 1250b.
  • Der LogLikelihood-Verhältnisprozessor 1297 empfängt neben den Ausgaben 1245a und 1245b aus den LogLikelihood-Prozessoren 1250a und 1250b eine harte oder weiche Ausgabeauswahl 1213 und eine Verteilungseingabe 1243 von der Steuereinheit 1210. Der LogLikelihood-Verhältnisprozessor 1297 empfängt auch die extrinsische Information 1242 des Zwischenentschlüsselungsspeichers und -prozessors 1240 und Verschlüsselungsadressdaten 1286 als Eingaben. Der LogLikelihood-Verhältnisprozessor 1297 erzeugt dann eine verschlüsselte Ausgabe 1294 und eine Ausgabe 1293 an den Zwischenentschlüsselungsspeicher und -prozessor 1240.
  • Die Ausgaben 1245a und 1245b stehen für die Wahrscheinlichkeit, dass die entschlüsselte Ausgabe jeweils "1" oder "0" ist. Der LogLikelihood-Verhältnisprozessor 1297 führt eine Subtraktion der Ausgaben 1245a und 1245b in der Log-Domäne aus, die einer Division in der Domäne der natürlichen Zahlen entspricht. Das Ergebnis der Subtraktion stellt die entschlüsselte Ausgabe 1294 bereit. Der LogLikelihood-Verhältnisprozessor 1297 subtrahiert auch die Ausgaben 1245a und 1245b und die extrinsische Information 1242, um die Ausgabe 1293 zu erzeugen, die für die neue extrinsische Information steht.
  • Der oben erwähnte Falterprozessor kann in Verbindung mit einem Trellisdiagramm und einem oder mehreren damit verbundenen ortsfesten Wegmetrik-Adressierungsschemata benutzt werden. Ein Code einer maximalen Einschränkungslänge k erzeugt ein Trellisdiagramm mit 2k-1 Zuständen. 6A zeigt ein 32-Zustands-Rohtrellisdiagramm 1000, das einem Code entspricht, der eine maximale Einschränkungslänge von 6 aufweist. Jeder der 32 Zustände 1002 zu der Zeit St weist zwei mögliche Zweigmetriken auf, die auf einen von 32 Zuständen zu der Zeit St+1 abgebildet werden. Zum Beispiel weist der Zustand 0 1003 zu der Zeit St Zweigmetriken 1006 und 1008 auf, die zu der Zeit St+1 zu dem Zustand 0 1009 und Zustand 16 1007 führen.
  • Das 32-Zustands-Rohtrellisdiagramm 1000 kann durch 16 entsprechende Falterverbindungen 1010 des gleichen Trellis dargestellt werden. Es ist zu sehen, dass Zustandspaare in einer Spalte 1012 des Trellis auf entsprechende Zustandspaare in einer anderen Spalte 1014 des Trellis abgebildet werden. Die Trelliszustände 1014 zu der Zeit St+1 stehen für die resultierenden Wegmetriken. Jede der Falterverbindungen 1010 kann von einem einzigen Falterprozessor 1260 verarbeitet werden. Vier Falterprozessoren 1260 können bereitgestellt werden, um die resultierenden Wegmetrikstellen für vier Paare von Eingabewegmetriken zu berechnen, wie in 6B dargestellt. Dies ermöglicht, dass in jedem Taktzyklus 8 resultierende Wegmetrikstellen berechnet werden.
  • 6B zeigt resultierende Wegmetrikstellen 1014 für ein Trellisdiagramm mit 32 Zuständen. Die resultierenden 32 Wegmetrikstellen sind in vier Spalten 1022, 1024, 1026 und 1028 geordnet worden, von denen jede acht resultierende Wegmetrikstellen enthält, die von vier Falterprozessoren erzeugt werden.
  • Ein Trellisvorgang umfasst mehrere Trellis-Untervorgänge, von denen jeder einem einzigen Taktzyklus entspricht. 7A, 7B, 7C, 7D und 7E zeigen den Prozess, durch den eine ortsfeste Wegmetrikadressierung umgesetzt werden kann. 7A zeigt die Zeit t = 1, die dem ersten Trellis-Untervorgang entspricht, bei dem acht neue Wegmetriken 1112 als Eingaben bereitgestellt werden. Neue Wegmetriken 1112, die für 0, 1, 2 und 3 stehen, werden in eine erste Spalte des Speichers 1102 geschrieben, der den oberen Speicherblöcken B0 des Wegmetrikspeichers 1280 entspricht, während die Wegmetriken 16, 17, 18 und 19 in vier Halteregister 1114 geschrieben werden. Die Wegmetriken 16, 17, 18 und 19 werden einen Taktzyklus lang gehalten, bevor sie in den Speicher geschrieben werden, da die Speicherstellen, in die sie geschrieben werden, bis zu dem nächsten Taktzyklus nicht verfügbar sein werden, wenn die neuen Wegmetriken für Trelliszustände 8 bis 15 berechnet worden sind.
  • In dem nächsten Taktzyklus t = 2, dargestellt in 7B, werden weitere acht neue Wegmetriken 1122 als Eingaben bereitgestellt. Die Wegmetriken 1122, die den neuen Wegmetrikstellen 4, 5, 6 und 7 entsprechen, werden in eine erste Spalte des Speichers 1104 geschrieben, der den unteren Speicherblöcken B1 der Wegmetrikspeicherung 1280 entspricht. Die Inhalte der Halteregister 1114 werden in eine zweite Spalte des Speichers 1102 geschrieben, welcher der Wegmetrikspeicherung 1280 B0 entspricht, und die neuen Wegmetriken, die den Wegmetrikstellen 20, 21, 22 und 23 entsprechen, werden als die neuen Inhalte der Haltregister 1114 eingeschrieben.
  • In dem dritten Taktzyklus, der in 7C dargestellt ist, wird eine weitere Gruppe neuer Wegmetriken 1134 dargestellt. Die neuen Wegmetriken, die den Zuständen 8, 9, 10 und 11 entsprechen, werden in eine dritte Spalte des Speichers 1102 geschrieben, welcher der Wegmetrikspeicherung 1280 B0 entspricht, und die Inhalte der Halteregister 1114, welche die Zustände 20, 21, 22 und 23 sind, werden in eine zweite Spalte eines Speichers 1104 geschrieben, welcher der Wegmetrikspeicherung 1280 B1 entspricht. Die vier Wegmetriken, die den Zuständen 24, 25, 26 und 27 entsprechen, werden in die Halteregister 1114 geschrieben.
  • 7D zeigt den vierten Taktzyklus, während dessen die letzten acht neuen Wegmetriken 1144 bereitgestellt werden. Die neuen Wegmetriken, die den Zuständen 12, 13, 14 und 15 entsprechen, werden in eine dritte Spalte des Speichers 1104 geschrieben, welcher der Wegmetrikspeicherung 1280 B1 entspricht, die Inhalte der Halteregister, die den Zuständen 24, 25, 26 und 27 entsprechen, werden in eine vierte Spalte des Speichers 1102 geschrieben, welcher der Wegmetrikspeicherung 1280 B0 entspricht, und die neuen Wegmetriken, die den Zuständen 28, 29, 30 und 31 entsprechen, werden in die Halteregister 1114 geschrieben.
  • Ein zusätzlicher Taktzyklus, welcher t = 5 entspricht, wie in 7E dargestellt, ist erforderlich, um die Inhalte der Halteregister 1114 in eine vierte Spalte des Speichers 1104 zu schreiben, welche der Wegmetrikspeicherung 1280 B1 entspricht.
  • 7F zeigt eine Darstellung der Adressierung der Wegmetrikspalten für ein Trellis mit 32 Zuständen. Die Adressierungssequenz der Wegmetrikspalten 1150 entspricht den Lese-/Schreibadressen der Wegmetrikspalten. Jede Reihe der Tabelle 1160 entspricht einer anderen Spalte eines Trellisdiagramms und steht für die Symbolzeit n (Sn), Symbolzeit n + 1 (Sn+1) und Symbolzeit n + 2 (Sn+2). Es ist offensichtlich, dass die Bewegung der Adressen der Wegmetrikspalten periodisch ist.
  • 7A bis E zeigen die Entwicklung von Sn zu Sn+1. Der nächste Taktzyklus t = 6 beginnt mit dem Übergang von Sn+1 zu Sn+2 und die Spalten 0, 2, 1, 3 werden ausgeführt, um den ACS-Einheiten eine sequenzielle Liste von Zuständen bereitzustellen.
  • 8A, 8B, 8C, 8D, 8E und 8F zeigen den Prozess, durch den eine ortsfeste Wegmetrikadressierung während der Navigation eines Umkehrtrellis umgesetzt werden kann. 8A stellt die Notation dar, die in 8B bis F befolgt wird. 8B zeigt die Zeit t = 1, die dem ersten Trellisuntervorgang entspricht. Die Wegmetriken, die sich in der ersten Spalte C0A des Speichers A befinden, sind in ein Halteregister 3010 verschoben worden. In 8C bei Zeit t = 2 wird die erste Spalte C0B des Speichers B in das Halteregister 3010 bewegt und eine Funktion von C0A und C2A bildet die resultierenden Wegmetriken C0A' und C0B', die jeweils in die erste Spalte der Speicher A und B geschrieben werden. In 8D wird die zweite Spalte C1A des Speichers A in dem Haltregister 3010 abgelegt. Eine Funktion der vorherigen Inhalte der Halteregister C0B und C2B bildet die neuen Wegmetriken C1A' und C1B', die jeweils zurück in die dritte Spalte von A und B geschrieben werden.
  • 8E zeigt die Zeit t = 4, während der C1B in das Halteregister 3010 geschrieben wird. Eine Funktion von C1A und C3A erzeugt neue Wegmetriken C2A' und C2B', die jeweils in die zweiten Spalten der Speicher A und B geschrieben werden. 8F zeigt den Umkehrtrellis-Untervorgang, welcher der Zeit t = 5 entspricht, während der eine Funktion von C1B und C3B die resultierenden Wegmetriken C3A' und C3B' bildet, die jeweils in vierte Spalten der Speicher A und B geschrieben werden. Bei den Berechnungen der Umkehrtrellis werden den vier Falterprozessoren Wegmetriken in einer verschlüsselten Weise bereitgestellt, wobei die ortsfeste Wegmetrikadressierung, die in 8B bis 8F beschrieben ist, gewährleistet, dass die resultierenden Wegmetriken in einer sequenziellen Weise bereitgestellt werden.
  • 9A zeigt eine schematische Blockdiagrammdarstellung auf hoher Ebene einer Ausführungsform des Zwischenentschlüsselungsspeichers und -prozessors 1240, der Rückverfolgungs- und Verschachtelungsfunktionen in den jeweiligen Entschlüsselungsschemata ausführt. Der Zwischenentschlüsselungsspeicher und -prozessor 1240 empfängt als Eingaben Entscheidungsbits 1255, eine Normalisierungsausgabe 1246, eine Verteilungseingabe 1243, eine Zwischenentschlüsselungsrichtung 1237, einen Zwischenentschlüsselungsmodus 1212, ein Taktsignal 1254, einen Lese-/Schreibtakt 1257, ein Rückstellsignal 1259 und die Ausgabe 1293 von dem LogLikelihood-Prozessor 1297. Der Zwischenentschlüsselungsspeicher und -prozessor 1240 erzeugt Ausgaben, die extrinsische Information 1242, extrinsische Verschachtelungsinformation 1256 und eine Rückverfolgungsprozessorausgabe 1567 aufweisen.
  • 9B zeigt eine auseinander gezogene Ansicht des Zwischenentschlüsselungsspeichers und -prozessors 1240. Eine Rückverfolgungsadresssteuerung 1510 empfängt als Eingaben Entscheidungsbits 1255, die Zwischenentschlüsselungsrichtung 1237, die Normalisierungsausgabe 1246, das Taktsignal 1254, das Rückstellsignal 1259, den Lese-/Schreibtakt 1257 und den Zwischenentschlüsselungsmodus 1212, der umgekehrt ist. Die Rückverfolgungsadresssteuerung 1510 erzeugt eine Ausgabe 1567.
  • Die Rückverfolgungsadresssteuerung 1510 schreibt jeden Taktzyklus Entscheidungsbits 1255 in ein Fensterspeicher-Subsystem 1520. Während der Rückverfolgung untersucht die Rückverfolgungsadresssteuerung 1510 einen Trellisabschnitt, um einen größten Wert zu bestimmen, der als Ausgangspunkt benutzt werden kann. Es ist zu beachten, dass es nicht notwenig ist, den kompletten Wert für jeden Zustand zu speichern, da mittels eines der Entscheidungsbits 1255 eine neue Rückverfolgungsbyteadresse erzeugt werden kann.
  • Eine Verschachtelungssteuerung 1520 empfängt auch ein Taktsignal 1254, ein Rückstellsignal 1259, einen Lese-/Schreibtakt 1257 und einen Zwischenentschlüsselungsmodus 1212. Außerdem empfängt die Verschachtelungssteuerung 1520 die Ausgabe 1293 von dem LogLikelihood-Verhältnisprozessor 1297, der Verteilungseingabe 1243 und der Zwischenentschlüsselungsrichtung 1237. Die Verschachtelungssteuerung 1520 erzeugt extrinsische Information 1242 und 1256. Die extrinsischen Daten 1242 werden als eine rekursive Eingabe in die Falterprozessoren 1260 benutzt, wenn der Decoder 1200 als ein Turbodecoder arbeitet.
  • Die Verschachtelungssteuerung 1520 erzeugt extrinsische Information 1242 und 1256 am Anfang jedes Taktzyklus. Am Ende jedes Taktzyklus empfängt die Verschachtelungssteuerung 1520 neue extrinsische Information in Form der Ausgabe 1293 von dem LogLikelihood-Verhältnisprozessor 1297 und schreibt sie in den Speicher.
  • Die Rückverfolgungsadresssteuerung 1510 und die Verschachtelungssteuerung 1520 sind miteinander verbunden und liefern ein verbundenes Lese-/Schreibsignal 1515 zu einem Fensterspeicher-Subsystem 1530. Die Rückverfolgungsadresssteuerung 1510, die Verschachtelungssteuerung 1520 und das Fensterspeicher-Subsystem 1530 sind durch einen bidirektionalen Datenbus 1526 und einen Adressbus 1525 weiter miteinander verbunden. Die Verschachtelungssteuerung 1520 weist einen zweiten Adressbus 1535 auf, der mit dem Fensterspeicher-Subsystem 1530 verbunden ist, und das Fensterspeicher-Subsystem 1530 erzeugt eine Ausgabe auf einem zweiten Datenbus 1536 für die Verschachtelungssteuerung 1520.
  • 9C zeigt den Rückverfolgungsprozessor 1510. Die Entscheidungsbits 1255 werden einem ersten Multiplexer 1550 bereitgestellt. Die Ausgabe des Multiplexers 1550 wird einem Entscheidungsregister 1555 bereitgestellt. Die Ausgabe des Entscheidungsregisters 1555 sind Daten 1526, die als eine Ausgabe des Rückverfolgungsprozessors 1510 bereitgestellt werden und auch als eine rekursive Eingabe des ersten Multiplexers 1550 und als eine Eingabe in eine Bitauswahl 1558 zurückgeleitet werden.
  • Die Zwischenentschlüsselungsrichtung 1237 wird als eine Eingabe einer Adressübersetzungseinheit 1560 bereitgestellt. Die Adressübersetzungseinheit 1560 empfängt auch einen Lese-/Schreibtakt 1257 und erzeugt eine Ausgabeadresse 1525 und ein Lese-/Schreibsignal 1515. Der Lese-/Schreibtakt 1257 wird auch als die Auswahl des ersten Multiplexers 1550 bereitgestellt.
  • Eine Normalisierungsausgabe 1246 wird als eine Eingabe in ein Zustandsregister 1562 bereitgestellt. Die Ausgabe des Zustandsregisters 1562 wird als eine Eingabe der Adressübersetzungseinheit 1560 sowie als eine Eingabe einer vorherigen Zustandseinheit 1564 bereitgestellt. Die vorherige Zustandseinheit 1564 stellt einem zweiten Multiplexer 1566, dessen Ausgabe die Rückverfolgungsprozessor-Ausgabe 1567 ist, zwei Eingaben bereit.
  • Die Ausgabe der Bitauswahl 1558 wird als eine Eingabe einem ersten AND-Gatter 1568 bereitgestellt. Die Ausgabe des AND-Gatters 1568 wird als eine Eingabe dem Zustandsregister 1562 bereitgestellt. Die Ausgabe der Bitauswahl 1558 wird auch einem zweiten AND-Gatter 1569 bereitgestellt, dessen Ausgabe auch dem Zustandsregister 1562 bereitgestellt wird.
  • Die Zwischenentschlüsselungsrichtung 1237 wird als die zweite Eingabe dem ersten AND-Gatter 1568 und als die Auswahleingabe des Multiplexers 1566 bereitgestellt. Die Entschlüsselungseinheitsausgabe 1502 wird über ein NOT-Gatter 1570 auch dem zweiten AND-Gatter 1569 bereitgestellt.
  • 9D zeigt die Verschachtelungssteuerung 1520 aus 9B. Der Zwischenentschlüsselungsmodus 1212 wird einem AND-Gatter 1580 bereitgestellt, dessen Ausgabe zwei Drei-Zustands-Puffern 1582 und 1583 bereitgestellt wird. Die andere Eingabe in das AND-Gatter 1580 ist die umgekehrte Form der Verteilungseingabe 1243. Der Drei-Zustands-Puffer 1582 empfängt auch als eine Eingabe einen Lese-/Schreibtakt 1257. Der zweite Drei-Zustands-Puffer 1583 empfängt die Ausgabe 1293 von dem LogLikelihood-Verhältnisprozessor 1297 als seine zweite Ausgabe. Die Ausgabe 1293 aus dem LogLikelihood-Verhältnisprozessor 1297 wird auch als Eingabe zwei logischen Blöcken 1584 und 1586 bereitgestellt. Die Verteilungseingabe 1243 wird jedem der logischen Blöcke 1584 und 1586 bereitgestellt, genauso wie das Rückstellsignal 1259 und das Taktsignal 1254. Die Verschachtelungseinheit 1520 empfängt den Datenbus 1526 als eine Eingabe und stellt eine entsprechende Ausgabe bereit, die extrinsische Information 1242 ist. Ein zweiter Datenbus 1536 wird als extrinsische Verschachtelungsinformation 1256 ausgegeben. Der Datenbus 1526 ist bidirektional und die Ausgabe der Verschachtelungseinheit 1520 bezüglich des Datenbusses 1526 ist die Ausgabe des Drei-Zustands-Puffers 1583.
  • Der erste logische Block 1584 empfängt den Zwischenentschlüsselungsmodus 1212 und die Zwischenentschlüsselungsrichtung 1237 und erzeugt eine Adresse 1525. Der zweite logische Block 1586 empfängt auch den Zwischenentschlüsselungsmodus 1212 und die Zwischenentschlüsselungsrichtung 1237 und erzeugt die Adresse 1535. Jeder der logischen Blöcke 1584 und 1586 empfängt auch als eine Eingabe beta d, das ein Signal mit geringer oder mit hoher Leistung ist.
  • 9E zeigt eine auseinander gezogene Ansicht des logischen Blocks 1584 von 9D. Der logische Block 1586 aus 9D weist die gleiche Konfiguration auf. Eine Fensterzählung 1590 empfängt als Eingaben eine Rückstellung 1259, einen Takt 1254 und eine Aktivierung 1212. Sie empfängt auch als eine Eingabe die Ausgabe eines ersten Addierers 1592. Die Fensterzählung 1590 erzeugt eine Ausgabe, die den Addierern 1592 und 1593 bereitgestellt wird. Der erste Addierer 1592 empfängt als eine zweite Eingabe die Konstante 1599 und stellt seine Ausgabe der Fensterzählung 1590 bereit. Die Bitzählung 1591 empfängt als Eingaben die Rückstellung 1259, den Takt 1254, die Aktivierung 1212 und die Ausgabe eines dritten Addierers 1594. Die Bitzählung 1591 erzeugt eine Ausgabe, die den zwei Addierern 1593 und 1594 bereitgestellt wird. Beta_d wird einem Element 1595 bereitgestellt, das 1 addiert, und wenn beta_d aktiv ist, verneint es den Wert und stellt ein Ergebnis dem dritten Addierer 1594 als eine zweite Eingabe bereit. Die Ausgabe des Addierers 1594 wird der Bitzählung 1591 als eine rekursive Eingabe bereitgestellt.
  • Die Ausgabe des zweiten Addierers 1593 wird einem Multiplexer 1596 und einer Verschlüsselung 1597 als eine Eingabe bereitgestellt. Der Multiplexer 1596 empfängt ein Auswahlsignal, das anzeigt, ob die Architektur als ein erster oder zweiter Decoder arbeitet, und eine zweite Eingabe, welche die Ausgabe der Verschlüsselung 1597 ist. Die Ausgabe des Multiplexers 1596 ist die Adresse 1525. Die Verschlüsselung 1597 empfängt die Verteilungseingabe 1243 als ein Aktivierungssignal und die Ausgabe 1293 aus dem LogLikelihood-Verhältnisprozessor 1297 als Daten. Die Verschlüsselung 1597 kann ein Speicher oder eine logische Funktion sein, wie im Stand der Technik gut bekannt ist, und wird benutzt, um eine Verschlüsselung von Adressen zwischen einem ersten und einem zweiten Decoder umzusetzen, wenn Turbodecoderberechnungen ausgeführt werden.
  • 9F zeigt eine schematische Blockdiagrammdarstellung eines Fensterspeicher-Subsystems 1530 aus 9A; Ein Lese-/Schreibtakt 1515, Adressbusse 1525 und 1535 und Datenbusse 1526 und 1536 werden einem Fensteradressdecoder 1530a und Fensterspeichern 1530b...1530d bereitgestellt.
  • 10A zeigt den LogLikelihood-Prozessor 1250a aus 4. Eine Bank von vier Faltereinheiten 1410 wird bereitgestellt und ihre ACS-Bestandteileinheiten 1412a...1412h werden mit Paaren von Umkehrtrellis-Wegmetriken 1415a...h aus einem Umkehradressprozessor 1270 und gespeicherten Wegmetriken 1276 aus der Wegmetrikspeicherung 1280 bereitgestellt. Die gespeicherten Wegmetriken 1276 stehen für Alphas in der LogMAP-Berechnung. Jede der ACS-Einheiten 1412a...h wird auch mit einem LogLikelihood-Modus 1214a, einem LogLikelihood-Takt 1251a und einer LogLikelihood-Rückstellung 1252a bereitgestellt. BMC-Einheiten 1414a...1414d werden jeweils mit einer Anzahl von Eingaben bereitgestellt, welche die LogLikelihood-Geschwindigkeit 1248a, die LogLikelihood-Einschränkung 1249a, die LogLikelihood-Polynome 1253a, extrinsische Verschachtelungsinformation 1256 und den Eingabesymbolverlauf 1291b aufweisen. Die ACS-Einheiten 1412a...h erzeugen erste Ausgaben 1413a...1413h, die den ACS-Knoteneinheiten 1420a...1420d in sequenziellen Paaren bereitgestellt werden. Die ACS-Einheiten 1412a...h erzeugen zweite Ausgaben 480a...h, von denen jede einem entsprechenden Normalisierungssubtrahierer 1470a...1470h bereitgestellt wird. Die Normalisierungssubtrahierer 1470a...1470h erzeugen Ausgaben 1266' und 1267', die über Multiplexer, wie nachstehend erläutert werden wird, rekursiv zu dem Umkehradressprozessor 1270b geleitetet und benutzt werden, um zu gewährleisten, dass die Wegmetriken innerhalb des dynamischen Bereichs der Architektur verbleiben.
  • Jede einer ersten Bank von Multiplexern 1417a...h empfängt eine entsprechende normalisierte Wegmetrik 1275a...h aus dem Normalisierungsprozessor 1278 und ein Auswahlsignal 1258 aus der Steuereinheit 1210. Die Multiplexer 1417a...d empfangen auch entsprechende Wegmetriken 1296a...d und die Multiplexer 1417e...h empfangen entsprechende Wegmetriken 1295a...d. Die Wegemetriken 1295a...d und 1296a...d stehen für Betas in der LogMAP-Berechnung. Das Auswahlsignal 1258 wird benutzt, um zu bestimmen, ob die normalisierten Wegmetriken 1275a...h oder die Wegmetriken 1295a...d und 1296a...d ausgegeben werden.
  • Jede einer zweiten Bank von Multiplexern 1416a...h empfängt den LogLikelihood-Modus 1214a als ein Auswahlsignal und eine entsprechende Ausgabe aus der ersten Bank von Multiplexern 1417a...h. Die Multiplexer 1416a...d empfangen eine dritte Eingabe, welche die Ausgabe 1266' der Normalisierungssubtrahierer 1470a...d ist, und die Multiplexer 1416e...h empfangen die Ausgabe 1267' aus den Normalisierungssubtrahierern 1470e...h. Die Ausgaben aus den Multiplexern 1416a...h werden als Eingaben dem Umkehradressprozessor 1270b bereitgestellt.
  • Der Umkehradressprozessor 1270b empfängt auch einen LogLikelihood-Modus 1214a, eine Turboaktivierung für eine LogLikelihood-0-Aktivierung 1203a0 , eine Turboaktivierung für eine LogLikelihood 1 1203a1 , einen Umkehrtrellisselektor 1222a, ein transparentes Umkehrtrellisbit 1226a und den Umkehrtrellishalt 1224a. Die Beta-Ausgaben 1266' und 1267' des LogLikelihood-Prozessors 1250a stehen für die Dummybeta-Endwerte, die für den Beginn der Beta-Verarbeitungsphase benutzt werden, wenn der Decoder 1200 im LogMAP-/Turbomodus arbeitet.
  • Die Ausgaben der ACS-Knoteneinheiten 1420a und 1420b werden einer ACS-Knoteneinheit 1430a bereitgestellt und die Ausgaben der ACS-Knoteneinheiten 1420c und 1420d werden einer ACS-Knoteneinheit 1430b bereitgestellt. Die Ausgaben der ACS-Knoteneinheiten 1430a, 1430b werden als Eingaben einer weiteren ACS-Knoteneinheit 1440a bereitgestellt, deren Ausgabe einem Mehrreihen-Komparatorbaum bereitgestellt werden, welcher den Decoder umspannt, wenn er in einer Mehrreihenkonfiguration arbeitet, um die maximale Wegmetrik zu erfassen, die für den Zustand des untersuchten Trellis berechnet wird. Eine Ausgabe aus dem Mehrreihen-Komparatorbaum wird einem Subtrahierer 1450 und einem Register 1460 bereitgestellt. Der Subtrahierer 1450 stellt dem Register 1460 auch eine rekursive Eingabe bereit. Die Registerausgabe 1245a wird zu dem Subtrahierer 1450 und zu jedem der Normalisierungssubtrahierer 1470a...1470h geleitet und ist außerdem eine Ausgabe des LogLikelihood-Prozessors 1250a.
  • 10B zeigt eine Anordnung der ACS-Knoteneinheit 1420a aus 10A. Die Ausgaben 1413a und 1413b aus den ACS-Knoteneinheiten werden einem Komparator 1474 und einem Multiplexer 1476 als Eingaben bereitgestellt. Eine negative Übertragsausgabe des Komparators 1474 wird als ein Auswahlsignal des Multiplexers 1476 geleitet. Eine Differenzausgabe des Komparators 1474 wird als eine Eingabe einer Log-Summen-Korrekturtabelle 1478 bereitgestellt. Die Ausgabe der Log-Summen-Korrekturtabelle 1478 wird einem Addierer 1480 bereitgestellt, dessen zweite Eingabe die Ausgabe des Multiplexers 1476 ist. Der Addierer 1480 berechnet und gibt die Summe 1425a seiner zwei Eingaben aus, wobei die Summe 1425a für das Maximum der zwei Eingaben 1413a und 1413b mit einer Log-Summen-Korrektur steht.
  • 10C zeigt eine Konfiguration eines LogLikelihood-Prozessors 1250a aus 4 für eine Ausführungsform eines Decoders mit acht Reihen. Die LogLikelihood-Prozessoren 1250a' in jeder der Reihen sind durch eine Bank von Multiplexern 1490 miteinander verbunden. Jeder Multiplexer 1490 stellt einem LogLikelihood-Prozessor 1250a' in seiner entsprechenden Decoderreihe eine einzige Eingabe bereit. Paare von LogLikelihood-Prozessoren 1250a' stellen ihre Ausgaben als Eingaben in die ACS-Knoteneinheiten 1420a', 1420b', 1420c' und 1420d' bereit. Die Ausgaben der LogLikelihood-Prozessoren 1250a' werden auch als rekursive Eingaben der Bank von Multiplexern 1490 bereitgestellt. Die ACS-Knoteneinheiten 1420a', 1420b', 1420c' und 1420d' sind gepaart und stellen ihre Ausgaben als Eingaben in weitere ACS-Knoteneinheiten 1430a' und 1430b' bereit. Die Ausgaben der ACS-Knoteneinheiten 1420a', 1420b', 1420c' und 1420d' werden auch als rekursive Eingaben in die Bank von Multiplexern 1490 bereitgestellt. Die ACS-Knoteneinheiten 1430a' stellen ihre Ausgaben einer ACS-Endknoteneinheit 1440' und als rekursive Eingaben der Bank von Multiplexern 1490 bereit. Die Ausgabe der ACS-Endknoteneinheit 1440' wird als eine rekursive Endeingabe der Bank von Multiplexern 1490 bereitgestellt. Jeder Multiplexer 1490 wird mit einem Auswahlsignal bereitgestellt.
  • 10D zeigt eine nützliche Architektur einer ACS- Einheit 1412a aus 10A. Ein erstes Paar Eingaben, eine Zweigmetrik 1 402' und Zweigmetrik 0 406' werden einem Multiplexer 408 bereitgestellt, der eine Ausgabe 402'' erzeugt. Ein zweites Paar Eingaben, eine Wegmetrik 1276a und Wegmetrik 1 1415b werden einem Multiplexer 409 bereitgestellt, der eine Ausgabe 403' erzeugt. Jeder der Multiplexer 408 und 409 empfängt einen LogLikelihood-Modus 1214a als ein Auswahlsignal. Wenn der LogLikelihood-Modus 1214a inaktiv ist, wird die Zweigmetrik 1 402' von dem Multiplexer 408 ausgewählt und die Wegmetrik 1 1415b wird von dem Multiplexer 409 ausgewählt. Wenn umgekehrt der LogLikelihood-Modus 1214a aktiv ist, wird die Zweigmetrik 0 406' von dem Multiplexer 408 ausgewählt und die Wegmetrik 1276a, die für einen Alphawert steht, wird von 409 ausgewählt.
  • Die Ausgaben 402'' und 403' der Multiplexer 408 und 409 werden einem Addierer 410' bereitgestellt. Die Summe 411' ist die Ausgabe des Addierers 410' und wird einem Multiplexer 416' und einem Multiplexer 417' bereitgestellt. Der Multiplexer 417' empfängt eine Zweigmetrik 0 406' als eine zweite Eingabe und den LogLikelihood-Modus 1214a als ein Auswahlsignal Die Ausgabe 418' des Multiplexers 417' wird einem Addierer 412' bereitgestellt. Der Addierer 412' empfängt die Wegmetrik 0 1415a als eine zweite Eingabe. Der Addierer 412' erzeugt eine Summe 413', welche für die Summe von Alphas, Betas und Gammas steht. Die Summe 413' wird einem Vollsubtrahierer 414' und einem Multiplexer 420' bereitgestellt. Der Multiplexer 416' empfängt eine festverdrahtete Eingabe 407', die der minimalen darstellbaren 2s-Ergänzungszahl entspricht, und einen LogLikelihood-Modus 1214a als ein Auswahlsignal. Der Vollsubtrahierer 414' empfängt auch die Ausgabe 408' des Multiplexers 416' als eine zweite Eingabe und erzeugt einen negativen Übertrag 361' und eine Differenz 415'.
  • Die Ausgabe 408' des Multiplexers 416' wird als eine erste Eingabe einem Multiplexer 420' bereitgestellt. Der Multiplexer 420' empfängt die Summe 413' des Addierers 412' als eine zweite Eingabe. Die negative Übertragsausgabe 361' des Vollsubtrahierers 414' wird zu dem Multiplexer 420' geleitet, um ein Maximum MAX der Eingabewerte zu berechnen. Eine zweite Ausgabe 415' des Vollsubtrahierers 414', der für die Differenz der Multiplexerausgabe 408' und die Summe 413' steht, wird einer Log-Summen-Korrekturtabelle 440' bereitgestellt, die das Ergebnis der neuen Wegmetrik anpasst, wenn die Ausgabe des Vollsubtrahierers 414' klein ist, um ein genaueres Ergebnis in der Log-Domäne für die LogMAP-Entschlüsselung zu erzeugen. Eine Ausgabe 441' der Log-Summen-Korrekturtabelle 440' wird einem Addierer 460' bereitgestellt. Die Ausgabe 421' des Multiplexers 420' wird auch dem Addierer 460' bereitgestellt. Ein Ergebnis 490' des Addierers 460' wird dann als eine Eingabe einem Sammelregister 470' bereitgestellt. Das Sammelregister 470' häuft Werte für Dummybeta-LogMAP-Berechnungen an. Die Ausgabe 480a des Sammelregisters wird als eine Eingabe einem weiteren Multiplexer 475' und als eine Ausgabe der ACS-Einheit 1412a bereitgestellt, die bei der Dummybeta-Berechnung benutzt werden soll. Der Multiplexer 475' empfängt die Summe 490' als eine zweite Eingabe und den LogLikelihood-Modus 1214a als ein Auswahlsignal Die Ausgabe 1413a des Multiplexers 475' ist die zweite Ausgabe der ACS-Einheit 1412a.
  • 11 zeigt die Falterentschlüsselungsprozessoren 1260 aus 4 gemäß einer bevorzugten Ausführungsform. Jede der ACS-Komponenteneinheiten ACS0...ACS7 wird mit einer Anzahl von Eingaben bereitgestellt, die einen Faltermodus 1221, eine Falterrückstellung 1215, einen Faltertakt 1217 und eine Beta-Phasenaktivierung 1235 aufweisen. Jede der BMC-Komponenteneinheiten BMC0...BMC3 wird mit einer Faltergeschwindigkeit 1216, einer Faltereinschränkung 1220 und Falterpolynomen 1218 bereitgestellt. Die Umkehrtrellis-Wegmetriken 1265 werden aufgefächert, um die Eingaben 1265a...1265h den ACS-Einheiten ACS0...ACS7 bereitzustellen, so dass jede ACS-Einheit zwei Umkehrtrellis-Wegmetriken empfängt. Die Umkehrtrellis-Wegmetriken 1265a und 1265b werden jeder der ACS-Einheiten ACS0 und ACS1 bereitgestellt, die Umkehrtrellis-Wegmetriken 1265c und 1265d werden jeder der ACS-Einheiten ACS2 und ACS3 bereitgestellt, die Umkehrtrellis-Wegmetriken 1265e und 1265f werden jeder der ACS-Einheiten ACS4 und ACS5 bereitgestellt und die Umkehrtrellis-Wegmetriken 12658 und 1265h werden jeder der ACS-Einheiten ACS6 und ACS7 bereitgestellt. Die BMC-Einheiten BMC0...BMC3 empfangen auch als Eingaben extrinsische Information 1242 und das Eingabesymbol 1291a des Eingabesymbolverlaufs.
  • Die Falterentschlüsselungsprozessoren 1260 sind vorzugsweise aus acht ACS-Einheiten und vier BMCs gebildet, die als vier Falterprozessoren konfiguriert sind.
    • (i) ACS0, BMC0, ACS1;
    • (ii) ACS2, BMC1, ACS3;
    • (iii) ACS4, BMC2, ACS5; und
    • (iv) ACS6, BMC3, ACS7.
  • Die vereinheitlichte Decoderarchitektur macht sich die Tatsache zu Nutze, dass jeder Zustand in einem Trellisdiagramm nur von zwei anderen Zuständen beeinflusst werden kann. Ein Code mit einer minimalen Einschränkungslänge k führt zu einem Trellisdiagramm mit 2k-1 Zuständen. Ein Falterprozessor mit zwei ACS-Einheiten und einer BMC-Zwischeneinheit ist dazu fähig, zwei Zustände in einem Trelliszustandsdiagramm zu verarbeiten. Um folglich einen Code mit einer Einschränkungslänge 4 in einem Taktzyklus zu verarbeiten, sind insgesamt acht ACS-Einheiten erforderlich. Mehr Zustände können verwaltet werden, indem die Verarbeitung über eine größere Anzahl von Taktzyklen vorgenommen wird oder mehr Falterprozessoren vorliegen.
  • Die ACS-Einheiten ACS0...ACS7 erzeugen entsprechende Ausgaben 1255a...h, die angesammelt werden, um Entscheidungsbits 1255 zu bilden. Neue Wegmetriken, die von den ACS-Einheiten ACS0...ACS3 berechnet werden, werden als Ausgaben 1267a...d bereitgestellt und auf einem oberen Bus 1267 der neuen Wegmetrik gesendet. Die neuen Wegmetriken 1266a...d, die von den ACS-Einheiten ACS4...7 berechnet werden, werden dem unteren Bus 1266 der neuen Wegmetrik bereitgestellt.
  • 12 zeigt den Umkehradressprozessor 1270 aus 4. Der Umkehradressprozessor 1270 stellt Hilfsmittel bereit, um Wegmetriken zu verzögern und zu ordnen, um ein gewünschtes Wegmetrikmuster zu erzeugen. Der Umkehradressprozessor 1270 ist auch dazu fähig, transparent zu agieren, wenn der Decoder 1200 im Vorwärtstrellismodus arbeitet, so dass die Eingabewegmetriken als Ausgaben ohne Veränderung bereitgestellt werden. Der Umkehradressprozessor 1270 empfängt als Eingaben: einen Umkehrtrellisselektor 1222, ein Umkehrtrellishalten 1224, ein transparentes Umkehrtrellisbit 1226, einen LogLikelihood-Modus 1214, eine LogLikelihood-0-Aktivierung 12030 , eine LogLikelihood-1-Aktivierung 12031 , und die normalisierten Wegmetriken 1275. Die normalisierten Wegmetriken 1275 werden aufgefächert, um Paare von Eingaben 1275a und 1275e, 1275b und 1275f, 1275c und 1275g und 1275d und 1275h einer ersten Bank entsprechender Multiplexer 1910a3, 1910b3, 1910c3 und 1910d3 und einer zweiten Bank entsprechender Multiplexer 1915a...1915d bereitzustellen.
  • Der Umkehrtrellisselektor 1222 wird jedem der ersten Bank von XOR-Gattern 1920a...d bereitgestellt. Die XOR-Gatter 1920a und 1920c empfangen die LogLikelihood-0-Aktivierung 12030 und die XOR-Gatter 1920b und 1920d empfangen die LogLikelihood-1-Aktivierung 12031 . Jedes XOR-Gatter 1920a...d erzeugt eine Ausgabe, die einem entsprechenden XOR-Gatter in einer zweiten Bank von XOR-Gattern 1925a...d und einem entsprechenden der Multiplexer 1910a3...1910d3 bereitgestellt wird. Jedes Gatter der zweiten Bank von XOR-Gattern 1925a...d empfängt die LogLikelihood-Aktivierung 1214 als eine zweite Eingabe und erzeugt eine Ausgabe für einen entsprechenden Multiplexer in der zweiten Bank von Multiplexern 1915a...d. Wie oben erwähnt, empfängt jeder Multiplexer 1915a...d ein Paar normalisierter Wegmetriken. Die Ausgaben aus den XOR-Gattern 1925a...d wirken als Auswahlsignale für die jeweiligen Multiplexer 1915a...d, um eine der bereitgestellten normalisierten Wegmetriken auszuwählen. Jeder der Multiplexer 1915a...d stellt einem entsprechenden der Multiplexer 1910b1, 1910d1, 1910f1 and 1910h1 eine Ausgabe bereit.
  • Die Multiplexer 1910a3...d3 und 1915a...d werden je nach den Werten der LogLikelihood-Aktivierung 1214 und der LogLikelihood-0-Aktivierung 12030 und LogLikelihood-1-Aktivierung 12031 mit unterschiedlichen Eingabepaaren bereitgestellt. Die LogLikelihood-0-Aktivierung 12030 wird für den LogLikelihood-Prozessor 0 aktiviert und für den LogLikelihood-Prozessor 1 deaktiviert. Umgekehrt wird die LogLikelihood-1-Aktivierung 12031 für den LogLikelihood-Prozessor 1 aktiviert und für den LogLikelihood-Prozessor 0 deaktiviert. Da der Umkehradressprozessor 1270 in mehreren Stellen innerhalb des vereinheitlichten Decoders 1200 benutzt wird, muss der Umkehradressprozessor 1270 dazu fähig sein, unterschiedliche Betriebsweisen zu handhaben. Wenn die LogLikelihood-Aktivierung 1214 und die LogLikelihood-Aktivierungen 12030 und 12031 inaktiv sind, befindet sich der Umkehradressprozessor 1270 im Viterbi-Modus und arbeitet auf einem Trellis, das von einem nicht systematischen Konvolutionscode erzeugt wird. Wenn die LogLikelihood-Aktivierung 1214 aktiv ist, führt der Umkehradressprozessor 1270 eine Umkehrtrellisschaltung für den LogLikelihood-Vorgang zur LogMAP-Entschlüsselung aus. Wenn eine der LogLikelihood-Aktivierungen 12030 and 12031 aktiv ist, während die LogLikelihood-Aktivierung 1214 aktiv ist, führt der Umkehradressprozessor 1270 eine Schaltung aus, die für einen LogLikelihood-Vorgang angemessen ist, indem er einen rekursiven systematischen Code wie bei der Turboentschlüsselung benutzt. Die XOR-Gatter setzen die angemessene Schaltung für unterschiedliche Betriebsweisen des Umkehradressprozessors 1270 um.
  • Jeder Multiplexer der ersten Bank von Multiplexern 1910a3...1910d3 erzeugt eine Ausgabe, die einem entsprechenden Haltespeicher 1910a2...1910d2 bereitgestellt wird. Jeder der Haltespeicher 1910a2...1910d2 empfängt das Umkehrtrellishalten 1224 als eine Eingabe und stellt einem entsprechenden der Multiplexer 1910a1, 1910c1, 1910e1 und 1910g1 eine verzögerte Ausgabe als die zweite Eingabe bereit.
  • Das transparente Umkehrtrellisbit 1226 wird an jeden einer dritten Bank von Multiplexern 1910a1...1910h1 übertragen, die entsprechende Wegmetriken 1265a...h erzeugen. Die Wegmetriken 1265a...1265h werden zu den Umkehrtrellis-Wegmetriken 1265 vereinigt und bereitgestellt und sind die Ausgabe des Umkehradressprozessors 1270. Wenn der Decoder 1200 in die Vorwärtsrichtung arbeitet, wird das transparente Umkehrtrellisbit 1226 derart festgelegt, dass der Umkehradressprozessor 1270 ermöglicht, dass die normalisierten Wegmetriken 1275 dadurch gehen, um ohne Änderung zu den Umkehrtrellis-Wegmetriken 1265 zu werden.
  • 13 zeigt die Normalisierungssubtrahierer 1278 aus 4. Die Normalisierungsausgabe 1246 wird jedem der Subtrahierer 1610a...1610h als eine Eingabe bereitgestellt. Die Ausgaben 1277 der Bank von Multiplexern 1278a werden als individuelle Wegmetriken 1277a...1277h bereitgestellt, von denen jede den entsprechenden Subtrahierern 1610a...1610h bereitgestellt wird. Die Ausgaben 1275a...h der Subtrahierer 1610a...1610h bilden die normalisierten Wegmetriken 1275. Die Normalisierungssubtrahierer 1278 werden benutzt, um die maximale Wegmetrik, die während der Durchquerung des Trellis berechnet und als die Normalisierungsausgabe 1246 bereitgestellt wird, von den neuen Wegmetriken zu subtrahieren, um zu gewährleisten, dass die Wegmetrikwerte innerhalb des dynamischen Bereichs der Architektur gehalten werden.
  • 14 zeigt eine Vergleichseinheit 1247 aus 4 gemäß einer bevorzugten Ausführungsform der Erfindung. Die Falterwegmetriken, die auf dem Bus 1267 bereitgestellt werden, werden ausgefächert, um Eingaben 1267a...1267d für entsprechende maximale Vergleichseinheiten 1710a...1710d zu erzeugen. In ähnlicher Weise werden Falterwegmetriken, die auf dem Bus 1266 bereitgestellt sind, ausgefächert, um Eingaben 1266a...1266d für entsprechende maximale Vergleichseinheiten 1710e...1710h zu erzeugen. Die Wegmetriken 1266a...1266d und 1267a...1267d werden miteinander verglichen und eine maximale Wegmetrik 1715 wird an einen Mehrreihen-Komparatorbaum ausgegeben, der in 17 dargestellt ist und den Decoder umspannt, wenn er in einer Mehrreihenkonfiguration derart betrieben wird, dass die maximale Wegmetrik erfasst wird, die für den Zustand des untersuchten Trellis berechnet wird. Eine Ausgabe 1716 aus dem Mehrreihen-Komparatorbaum wird einem Register 1720 bereitgestellt, der die größte Wegmetrik speichert, die während der Durchquerung des Trellis berechnet worden ist. Die Ausgabe 1716 wird auch als eine Eingabe einem Subtrahierer 1730 bereitgestellt. Das Register 1720 stellt dem Subtrahierer 1730 eine zweite Eingabe bereit, wobei die Eingabe die größte Wegmetrik ist, die bisher während der Durchquerung des Trellis berechnet worden ist. Der Subtrahierer vergleicht die größte Wegmetrik, die während der Durchquerung des Trellis berechnet worden ist, mit der maximalen Wegmetrik 1715, und wenn die maximale Wegmetrik 1715, die gerade berechnet worden ist, größer ist als die größte Wegmetrik, die während der Durchquerung des Trellis berechnet worden ist, wird ein Ladesignal 1735 bezüglich des Registers 1720 aktiviert, so dass die maximale Wegmetrik 1715 in das Register 1720 geladen wird, um zu der größten Wegemetrik zu werden, die während der Durchquerung des Trellis berechnet worden ist. Das Register stellt eine weitere Ausgabe bereit, die eine Normalisierungsausgabe 1246 ist, die zu den Normalisierungssubtrahierern 1278 und dem Zwischenentschlüsselungsspeicher und -prozessor 1240 geleitet wird. Die Normalisierungsausgabe 1246 wird benutzt, um zu gewährleisten, dass die berechneten Wegmetrikwerte innerhalb des dynamischen Bereichs der Architektur bleiben.
  • 15 zeigt einen Wegmetrikspeicher 1280 aus 4 gemäß einer bevorzugten Ausführungsform Eine Wegmetrikrückstellung 1230 und ein Wegmetrik-Lese-/Schreibtakt 1231 werden jeder der Speichereinheiten 1810a...1810h bereitgestellt. Die oberen Speicherblöcke 1810a...1810d sind als B0 gruppiert und empfangen eine Eingabe ADDR0 1228a. Umgekehrt sind die unteren Speicherblöcke 1810e...1810h zur Bildung von B1 gruppiert und empfangen eine entsprechende Eingabe ADDR1 1228b. Die Wegmetrikspeicherung 1280 empfängt die Vorwärtstrellis-Wegmetriken 1285, die ausgefächert werden und jedem der entsprechenden Speicherblöcke 1810a...1810h eine Wegmetrik 1285a...1285h bereitstellen, wie in dem Diagramm dargestellt. Die Wegmetrikspeicherung 1280 puffert die Vorwärtstrellis-Wegmetriken 1285 für einen Trellisverarbeitungszyklus und erzeugt dann Ausgaben 1276a...1276h, die angesammelt werden und die gespeicherten Wegmetriken 1276 bilden.
  • 16 zeigt einen Vorwärtsadressprozessor 1290 aus 4 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Der Vorwärtsadressprozessor 1290 stellt Hilfsmittel zum Verzögern und Ordnen von Wegmetriken bereit, um ein gewünschtes Muster von Wegmetriken zu erzeugen. Der Vorwärtsadressprozessor 1290 ist auch dazu fähig, transparent zu agieren, wenn der Decoder 1200 im Umkehrtrellismodus arbeitet, so dass die Eingabewegmetriken als Ausgaben ohne Veränderung bereitgestellt werden. Der obere Wegmetrikbus 1296 wird in seine Bestandteilwegmetriken 1296a...1296d aufgebrochen, die, wie angezeigt, zwei Multiplexern 2010a und 2010b bereitgestellt werden, wobei jeder der Multiplexer zwei Eingabewegmetriken empfängt. Der untere Wegmetrikbus 1295 wird in seine Bestandteilwegmetriken 1295a...1295d aufgebrochen, die, wie angezeigt, zwei Multiplexern 2010c und 2010d bereitgestellt werden, wobei jeder der Multiplexer zwei Eingabewegmetriken empfängt. Die Multiplexer 2010a...2010d empfangen jeweils eine Vorwärtstrellisauswahl 1232, die anzeigt, welche der bereitgestellten Wegmetriken 1296a...1296d und 1295a...1295d auszuwählen sind.
  • Jeder der Multiplexer 2010a...2010d wird in ein entsprechendes Halteregister 2015a...2015d geleitet. Die Halteregister 2015a...2015d empfangen eine Eingabe, die zu dem Trellishalt 1234 weitergeleitet wird. Der Zweck der Multiplexer 2010a...2010d und der Halteregister 2015a...2015d ist die Verzögerung der Wegmetriken 1296a...1296d und 1295a...1295d durch einen Taktzyklus als Teil der ortsfesten Wegmetrikadressierung.
  • Jedes der Halteregister 2015a...2015d erzeugt eine Ausgabe, die einer Bank von Multiplexern 2020 bereitgestellt wird, wie angegeben. Die Eingaben in die Bank von Multiplexern 2020 sind die Bestandteilwegmetriken des oberen Wegmetrikbusses 1296 und des unteren Wegmetrikbusses 1295, auch wie dargestellt. Eine Multiplexerauswahl 1238 der Wegmetrikeingabe wird an die Bank von Multiplexern 2020 übertragen. Die Bank von Multiplexern 2020 erzeugt Ausgaben zu einer zweiten Bank von Multiplexern 2030, deren andere Eingaben die Bestandteilwegmetriken des oberen Wegmetrikbusses 1296 und des unteren Wegmetrikbusses 1295 sind. Ein transparentes Vorwärtstrellisbit 1236 wird der zweiten Bank von Multiplexern 2030 bereitgestellt und benutzt, um einen transparenten Weg auszuführen, wenn der Decoder 1200 im Umkehrtrellismodus arbeitet. Die Bank von Multiplexern 2030 erzeugt Wegmetriken 1285a...1285h, die verglichen werden, um die Vorwärtstrellis-Wegmetriken 1285 zu bilden, welche die Ausgabe des Vorwärtsadressprozessors 1290 sind.
  • 17 zeigt den Komparator 1247 aus 4, wenn eine Decoderkonfiguration mit acht Reihen benutzt wird. Der Komparator 1247' in jeder der Reihen sind durch eine Bank von Multiplexern 2110 miteinander verbunden, Jeder Multiplexer 2110 stellt einem entsprechenden Komparator 1247' in seiner entsprechenden Decoderreihe eine einzige Eingabe 1716 bereit. Paare von Komparatoren 1247' stellen ihre Ausgaben 1715 als Eingaben in die ACS-Knoteneinheiten 1420a'', 1420b'', 1420c'' und 1420d'' bereit, von denen jede zwei Reihen des Decoders umspannt. Die Ausgaben 1715 der Komparatoren 1247' werden auch als rekursive Eingaben der Bank von Multiplexern 2110 bereitgestellt. Die ACS-Knoteneinheiten 1420a'', 1420b'', 1420c'' und 1420d'' sind gepaart und stellen ihre Ausgaben als Eingaben in weitere ACS-Knoteneinheiten 1430a'' und 1430b'' bereit. Die Ausgaben der ACS-Knoteneinheiten 1420a'', 1420b'', 1420c'' und 1420d'' werden auch als rekursive Eingaben in die Bank von Multiplexern 2110 bereitgestellt. Die ACS-Knoteneinheiten 1430a'' stellen ihre Ausgaben einer ACS-Endknoteneinheit 1440'' und als rekursive Eingaben der Bank von Multiplexern 2110 bereit. Die Ausgabe der ACS-Endknoteneinheit 1440'' wird als eine rekursive Endeingabe der Bank von Multiplexern 2110 bereitgestellt. Jeder Multiplexer 2110 wird mit einem Auswahlsignal bereitgestellt.
  • 18 zeigt die Konfiguration des Eingabesymbolverlaufs 1298, der eine Adresssteuerung aufweist, aus 4. Eine Eingabesymbolverlaufs-Adresse 1219 wird als eine Eingabe einem Fensterdecoder 2210 bereitgestellt, der die Adresse entschlüsselt, um den Zugang zu einer ersten doppelt gepufferten Speicherbank-0 2216 und einer zweiten doppelt gepufferten Speicherbank-1 2218 zu bewirken. Der Eingabesymbolverlauf 1298 puffert die empfangene Eingabe doppelt, um zu gewährleisten, dass ein kontinuierlicher Datenstrom bewahrt wird. Der Eingabesymbolverlaufs-Takt 1223 und die Eingabesymbolverlaufs-Rückstellung 1225 werden einem Zähler 2212 bereitgestellt, dessen Ausgabe 1297a auch der doppelt gepufferten Speicherbank-0 2216 und der doppelt gepufferten Speicherbank-1 2218 bereitgestellt wird. Eingabesymbole 1299 werden von einem Hostprozessor einem Demultiplexer 2214 bereitgestellt. Der Demultiplexer 2214 erzeugt eine Ausgabe 2224 für die doppelt gepufferte Speicherbank-0 2216 und die zweite Ausgabe 2226 für eine doppelt gepufferte Speicherbank-1 2218. Der Demultiplexer 2214 empfängt als eine Eingabe ein Lese-/Schreibsignal 1297b. Das Lese-/Schreibsignal 1297b versorgt auch einen ersten Multiplexer 2220 und einen zweiten Multiplexer 2222. Jede der doppelt gepufferten Speicherbanken 2216 und 2218 wird einem Bankauswahlsignal 1211 bereitgestellt, wobei das Bankauswahlsignal 1211 an der Schnittstelle zu der doppelt gepufferten Speicherbank-1 2218 invertiert ist.
  • Die doppelt gepufferte Speicherbank-0 2216 erzeugt eine erste Ausgabe 2228 für den Multiplexer 2220 und eine zweite Ausgabe 2230 für einen zweiten Multiplexer 2222. Die doppelt gepufferte Speicherbank-1 2218 erzeugt eine entsprechende erste Ausgabe 2232, welche den Multiplexer 2220 versorgt, und eine zweite Ausgabe 2234, welche dem zweiten Multiplexer 2222 bereitgestellt wird. Der erste Multiplexer 2220 erzeugt eine Ausgabe 1291b, die als eine Eingabe dem LogLikelihood-Prozessor-0 1250b bereitgestellt wird. Der zweite Multiplexer 2222 erzeugt eine Ausgabe 1291a, die als eine Eingabe den Falterprozessoren 1260 bereitgestellt wird.
  • 18 zeigt auch eine auseinander gezogene Ansicht der doppelt gepufferten Speicherbank-1 2218. Hereinkommende Daten 2226 werden einem 1-zu-n-Demultiplexer 2240 bereitgestellt, der auch eine Fensterauswahl empfängt, welche die Ausgabe des Fensterdecoders 2210 ist. N Ausgaben aus dem Demultiplexer 2240 werden n entsprechenden Fenstern W0...Wn bereitgestellt, von denen jedes eine Ausgabe erzeugt, die einem ersten m-zu-1-Multiplexer 2242 und einem zweiten m-zu-1-Multiplexer 2244 bereitgestellt werden. Jeder der m-zu-1-Multiplexer 2242, 2244 empfängt auch ein Fensterauswahl-Eingabesignal. Der erste m-zu-1-Multiplexer 2242 erzeugt die Ausgabe 2232, die für die Dummybeta-Berechnungen benutzt wird, und für den LogLikelihood-Verhältnisprozessor-0 1250a bestimmt. Der zweite m-zu-1-Multiplexer 2244 erzeugt die Ausgabe 2234, die für die Berechnung von Alphas und Betas in den Zweigmetrikeinheiten der Falterprozessoren 1260 benutzt wird.
  • 19 zeigt einen LogLikelihood-Verhältnisprozessor 1297 aus 4. Der LogLikelihood-Verhältnisprozessor 1297 empfängt Eingaben 1245a und 1245b, die jeweils von dem LogLikelihood-Prozessor-0 1250a und dem LogLikelihood-Prozessor-1 1250b ausgegeben werden. Der LogLikelihood-Verhältnisprozessor 1297 empfängt auch als Eingaben extrinsische Information 1242, die harte und weiche Ausgabeauswahl 1213, die Verteilungseingabe 1243, die Rückverfolgungsprozessausgabe 1567 und die Verschlüsselungsadressdaten 1286.
  • Ein Subtrahierer 2310 empfängt die Eingaben 1245a und 1245b, die für die Wahrscheinlichkeit von jeweils „1" und „0" stehen, und erzeugt eine Ausgabe 2315, welche einen zweiten Subtrahierer 2320 versorgt. Die Ausgabe 2315 des Subtrahierers 2310 versorgt auch einen ersten Multiplexer 2330 und ist Teil einer Ausgabe 1294. Die zweite Eingabe des Subtrahierers 2320 ist die extrinsische Information 1242. Die Ausgabe 2325 des Subtrahierers 2320 wird einem zweiten Multiplexer 2340 bereitgestellt.
  • Die Rückverfolgungsprozessausgabe 1567 wird als eine zweite Eingabe dem ersten Multiplexer 2330 bereitgestellt. Die harte oder weiche Ausgabeauswahl 1213 wird als die Auswahleingabe des Multiplexers 2330 bereitgestellt und die Ausgabe des Multiplexers 2330 bildet das Nullbit der verschlüsselten Ausgabe 1294. Die Ausgabe 2315 des Subtrahierers 2310 wird mit dem Bit mit dem niedrigsten Stellenwert der Ausgabe des Multiplexers 2330 kombiniert, um eine verschlüsselte Mehrbitausgabe 1294 zu bilden.
  • Der zweite Multiplexer 2340 empfängt Verschlüsselungsadressdaten 1286 als seine zweite Eingabe und die Verteilungseingabe 1243 als sein Auswahlsignal. Der zweite Multiplexer 2340 erzeugt eine Ausgabe 1293, die von dem LogLikelihood-Verhältnisprozessor 1297 zu dem Zwischenentschlüsselungsergebnis und -speicher 1240 geleitet wird.
  • Die Ausführungsform aus 3 arbeitet in einem Fünf-Phasen-Modus. Da keine LogLikelihood-Prozessoren vorhanden sind, wird mehr Wegmetrikspeicher benötigt, um mehr Alphas und Betas in den Berechnungen zu speichern, die von den LogLikelihood-Prozessoren 1250a und 1250b in der Ausführungsform aus 4 ausgeführt werden, die in einem Zwei-Phasen-Modus arbeitet.
  • Betriebsweise
  • Der erste Schritt bei der Betriebsweise des Decoders 1200 ist die Initialisierung des Decoders, so dass die Architektur die erforderliche Konfiguration entweder der Konvolutionsentschlüsselung oder der Turboentschlüsselung ausführt. Die Variablen, die zur Verarbeitung verfügbar sind, weisen die Anzahl von Spalten, die für die fragliche Trellisgröße benötigt werden, die Maske für die angemessene Anzahl von Bits, die bei der Adressierung der Spalten in dem Wegmetrikspeicher zu benutzen sind, und die Entscheidungstiefe des Rückverfolgungsprozesses auf. Das Register, das die gewinnende Wegmetrik für das verarbeitete Symbol aufweist, wird initialisiert und aufeinander folgende Zahlen werden einer Registerbank zugeordnet, deren Werte zwischen jeder Symbolzeit permutiert werden, um die Spaltenadresssequenz zu reflektieren, die für den Trellisvorgang erforderlich ist.
  • Es ist zu beachten, dass der Decoder 1200 entweder in der Vorwärts- oder in der Rückwärtsrichtung des Trellis arbeiten kann.
  • Wenn das Trellis in der Vorwärtsrichtung navigiert wird, ist der Umkehradressprozessor 1270 konfiguriert, um in einem transparenten Modus zu arbeiten, indem er das transparente Umkehrtrellisbit 1226 festlegt. Wenn das Trellis in die Vorwärtsrichtung navigiert wird, werden die aufeinander folgenden Zahlen nach ihrer ersten Benutzung nach links gedreht.
  • Ein iterativer Prozess beginnt durch Lesen der Wegmetriken aus der Spalte der wegmetrikspeicherung 1280 B0 und B1 entsprechend der Anzahl der Iteration. Die sequenzielle Liste von Wegmetriken, die in der ersten Spalte von 1280 B0 und 1280 B1 enthalten sind, werden den Falterprozessoren 1260 bereitgestellt. Die Falterprozessoren 1260 erzeugen über die Bank von Multiplexern 1250c neue Wegmetriken, die sich nicht mehr in einer sequenziellen Zielzustandsreihenfolge befinden und in den Vorwärtsadressprozessor 1290 geleitet werden. Der Vorwärtsadressprozessor 1290 führt im Wesentlichen einen Sortierungsvorgang auf jeder Spalte der neuen Wegmetriken aus, mit der Folge, dass die Spalten in dem Wegmetrikspeicher 1280 B0 und B1 für einen Satz sequenzieller Zustände stehen, wenn die Spalte herunter gelesen wird. Während jedes Spaltenvorgangs wird, wie in 7A bis E dargestellt, die Hälfte der acht neuen Wegmetriken direkt in die Wegmetrikspeicherung 1280 geschrieben, während die restlichen neuen Wegmetriken in die Halteregister 2015a...2015d innerhalb des Vorwärtsadressprozessors 1290 geschrieben werden. Dies findet zwischen jeder Gruppe von Wegmetriken im Wechsel statt.
  • Die Navigation durch das Vorwärtstrellis erfordert eine Anzahl von Spalteniterationen, die größer ist als die Anzahl von Spalten, die für das bestimmte fragliche Trellis benötigt werden. Wenn die Iterationszahl gerade ist, werden Wegmetriken von den Bussen 1296A, C, E, G in die Spalte der Wegmetrikspeicherung 1280 B0 geschrieben, die der Iterationszahl entspricht. Die Wegmetriken aus den Bussen 1296B, D, F, H werden gleichzeitig in die Halteregister 2015a...2015d des Vorwärtsadressprozessors 1290 geschrieben.
  • Wenn es sich jedoch um eine ungerade Iteration handelt, werden die Wegmetriken aus den Bussen 1296A, C, E, G in die Halteregister 2015a...2015d des Vorwärtsadressprozessors 1290 geschrieben und die Wegmetriken aus den Bussen 1296B, D, F, H werden in die Spalte der Wegmetrikspeicherung 1280 geschrieben, die der Iterationszahl entsprechen.
  • Während der Spaltenvorgänge werden die Entscheidungsbits 1255, die von den ACS-Einheiten des Falterprozessors 1260 erzeugt werden, in ein Byte gruppiert und in den Zwischenentschlüsselungsspeicher und -prozessor 1240 geschrieben. Die nächste Iteration in dem Prozess beginnt durch Lesen der Spaltenadresse aus der wegmetrikspeicherung 1280 B0 und B1, die der Zahl der nächsten Iteration entspricht. Der iterative Prozess wird fortgesetzt, bis die Anzahl von Spalteniterationen einer oder mehreren der Anzahl von Spalten entspricht, die für das berechnete Trellis erforderlich sind.
  • Ein weiterer Schreibvorgang ist am Ende des iterativen Prozesses erforderlich, um die vier neuen Wegmetriken in dem Halteregister des Vorwärtsadressprozessors 1290 zu übertragen. Die vier neuen Wegmetriken werden in die Endspalte des Wegmetrikspeichers 1280 B1 geschrieben. Das Endergebnis ist, dass die neuen Wegmetriken in den Wegmetrikspeicher 1280 B0 und B1 geschrieben werden, wenn auch in einer anderen Spaltenreihenfolge. Es muss jedoch beachtet werden, dass die Reihenfolge innerhalb jeder Spalte nicht geändert werden kann.
  • Wenn das Trellis in der umgekehrten Richtung navigiert wird, werden die sequenziellen Zahlen nach rechts gedreht und dann zum ersten Mal benutzt. Eine Gruppe von vier Wegmetriken wird aus der ersten Spalte der Wegmetriken 1280 B0 geholt und in den Halteregistern innerhalb des Umkehradressprozessors 1270 angeordnet. Der Vorwärtsadressprozessor 1290 ist konfiguriert, um in einem transparenten Modus zu arbeiten, indem das transparente Vorwärtstrellisbit 1236 festgelegt wird. Das entsprechende transparente Umkehrtrellisbit 1226 wird derart festgelegt, dass der Umkehradressprozessor 1270 aktiviert wird. Die Navigation durch das Umkehrtrellis ist in 8A bis 8F beschrieben.
  • Die Navigation des Trellis in die umgekehrte Richtung erfordert eine Anzahl von Spalteniterationen, die größer ist als die Anzahl von Spalten, die für das bestimmte Trellis benötigt werden. Wenn das Trellis in die umgekehrte Richtung navigiert, stellt das ortsfeste Wegmetriksystem immer eine verschlüsselte Liste von Wegmetriken durch den Umkehradressprozessor 1270 bereit, um eine nicht sequenzielle Liste von Wegmetriken für die Falterprozessoren 1260 zu erzeugen. Die resultierende Trelliszustandsreihenfolge, die von den Falterprozessoren 1260 erzeugt wird, ist im Hinblick auf den Trelliszustand sequenziell.
  • Wenn eine gerade Iteration vorgenommen wird, wird die Spalte in dem Wegmetrikspeicher 1280 B0, die der Anzahl von Iterationen plus eins entspricht, gelesen und durch die Multiplexer 1278a, die Normalisierungsprozessoren 1278 und den Umkehradressprozessor 1270 zu den Falterprozessoren 1260 geleitet. Die Wegmetriken, die derzeit in dem Umkehradressprozessor 1270 enthalten sind, werden auch in den Falterprozessor 1260 eingelesen. Die Spalte in dem Wegmetrikspeicher 1280, die der Anzahl von Iterationen entspricht, wird in das Halteregister des Umkehradressprozessors 1270 gelesen und geschrieben.
  • Falls die Anzahl von Iterationen ungerade ist, wird die Spalte der Wegmetrikspeicherung 1280 B1, die der Anzahl von Iterationen plus eins entspricht, gelesen und durch die Multiplexer 1278a und die Normalisierungsprozessoren 1278 zu dem Umkehradressprozessor 1270 und dann zu dem Falterprozessor 1260 geleitet. Die Wegmetriken, die in dem Umkehradressprozessor 1270 enthalten sind, werden auch als Eingaben dem Falterprozessor 1260 bereitgestellt. Die Spalte des Wegmetrikspeichers 1280 B0, die der Anzahl von Iterationen entspricht, wird gelesen und in das Halteregister des Umkehradressprozessors 1270 geschrieben.
  • An diesem Punkt der Navigation des Umkehrtrellis wird die sequenzielle Liste von Wegmetriken, die in der ersten Spalte der Wegmetrikspeicher 1280 B0 und B1 enthalten sind, dem Umkehradressprozessor 1270 bereitgestellt. Der Umkehradressprozessor 1270 führt einen Sortierungsvorgang auf jeder Spalte neuer Wegmetriken aus, mit dem Ergebnis, dass die resultierenden Spalten, die dem Falterprozessor 1260 bereitgestellt werden, sich nicht mehr in der sequenziellen Zielzustandsreihenfolge befinden. Der Falterprozessor 1260 erzeugt acht neue Wegmetriken, die über eine Bank von Multiplexern 1250c dem Vorwärtsadressprozessor 1290 bereitgestellt werden. Der Vorwärtsadressprozessor 1290 befindet sich im transparenten Modus, so dass die sequenzielle Trelliszustandsliste von Wegmetriken, die von den Falterprozessoren 1260 erzeugt wird, über die Bank von Multiplexern 1250c zurück in die Wegmetrikspeicher 1280 B0 und B1 geschrieben wird. Die Wegmetrikspeicher 1280 B0 und B1 stehen für einen Satz sequenzieller Zustände, wenn die Spalte herunter gelesen wird.
  • Während der Spaltenvorgänge werden die Entscheidungsbits 1255, die von den ACS-Einheiten der Falterprozessoren 1260 erzeugt werden, in ein Byte gruppiert und dem Zwischenentschlüsselungsspeicher und -prozessor 1240 bereitgestellt. Die nächste Iteration beginnt bei Lesen der angemessenen Spalte von Wegmetriken aus den Wegmetrikspeichern 1280 B0 und B1.
  • Bei Beendigung des iterativen Prozesses befinden sich die neuen Wegmetriken wieder in dem Wegmetrikspeicher 1280 B0 und B1, wenngleich in einer anderen Spaltenreihenfolge. Es muss beachtet werden, dass die Reihenfolge innerhalb jeder Spalte nicht geändert werden kann.
  • Der Rückverfolgungsprozessor 1510 innerhalb des Zwischenentschlüsselungsspeichers und -prozessors 1240 kennt die Trellisverarbeitungsrichtung und die Bitstelle des Entscheidungsbits, wenn er den gut bekannten Rückverfolgungsvorgang basierend auf dem Zeiger ausführt. Das Entscheidungsbit wird aus einem Byte extrahiert und benutzt, um den nächsten Zeiger in den Rückverfolgungsspeicher 1530 zu erzeugen. Die Rückverfolgung ist beendet, wenn eine vorbestimmte Rückverfolgungstiefe erreicht worden ist. Die Rückverfolgungstiefe beträgt in der Regel das Fünffache und Neunfache der Einschränkungslänge des Codes.
  • Wenn der Decoder 1200 zur Turboentschlüsselung benutzt wird, wird die Verarbeitung in zwei unterschiedliche Phasen aufgeteilt: die Dummy-Beta/Alpha-Verarbeitung und Beta-/LLR-Verarbeitung. Wenn entweder der Vorwärtstrellis- oder der Umkehrtrellisvorgang erwähnt wird, tritt die obige Verarbeitung ein, jedoch nur für den ungewöhnlichen Fall, dass die Anzahl von Trelliszuständen mit der Anzahl von ACS-Einheiten ACS0...ACS7 in einem Vielfachen (Leistung von 2) der ACS-Einheitsgröße der Falterprozessoren 1260 übereinstimmt. Der LogLikelihood-Prozessor-0 1250a und die ACS-Einheiten innerhalb des Falterprozessors 1260 sind jeweils mit Registern versehen, um zu ermöglichen, dass die jeweiligen ACS-Einheiten Ergebnisse sammeln, die für die Alpha- und Beta-Berechnungen benötigt werden.
  • Die Berechnung von Dummybetas und -alphas findet parallel statt. Der LogLikelihood-Prozessor-0 1250a führt eine Dummybeta-Berechnung mit Hilfe der ACS-Knoteneinheiten aus, die zu seiner Verfügung stehen. Diese Berechnung erfordert den Zugang zu dem Pufferspeicher des Eingabesymbolverlaufs und dem Verschachtelungsspeicher des Zwischenentschlüsselungsspeichers und -prozessors, die beide ein Fensterspeichersystem sind. Der Puffer des Eingabesymbolverlaufs ist in Bänke 2216 und 2218 der Größe eines Verarbeitungsfensters gegliedert. Der LogLikelihood-Prozessor-0 1250a sammelt Dummybetas an, indem er zu der Zeit t das Fenster verarbeitet, das zu der Zeit t + 1 zu verarbeiten ist. Der LogLikelihood-Prozessor-0 1250a benötigt keinen Zugang zu den Wegmetrikspeichern 1280, weshalb der LogLikelihood-Verhältnisprozessor-0 1250a parallel zu den ACS-Einheiten arbeiten kann, die in den Falterprozessoren 1260 enthalten sind.
  • Der LogLikelihood-Verhältnisprozessor-0 1250a führt auf den Dummybeta-Werten eine Normalisierung aus, indem er die Addierer in dem ACS-Baum benutzt, um das maximale berechnete Beta zu bestimmen. Dieser Wert wird dann von den Eingaben in die ACS-Knoteneinheiten des LogLikelihood-Verhältnisprozessors-0 1250a subtrahiert, bevor sie benutzt werden.
  • Die Falterprozessoren 1260 führen Alpha-Berechnungen aus, indem sie Alpha-Werte in den Registern sammeln, die innerhalb der ACS-Bestandteileinheiten enthalten sind. Die Falterprozessoren 1260 führen den Vorwärtstrellisvorgang und die Normalisierung wie gewohnt während der Vorwärtstrellisnavigation aus.
  • Die Dummybetas, die von dem LogLikelihood-Verhältnisprozessor-0 1250a berechnet werden, werden den Falterprozessoren 1260 am Anfang der Beta-Berechnungsphase bereitgestellt.
  • Während der Berechnung der Betas werden beide LogLikelihood-Prozessoren 1250a und 1250b in Verbindung mit den Falterprozessoren 1260 benutzt. Jeder der LogLikelihood-Prozessoren 1250a, 1250b akzeptiert Alphas aus dem Wegmetrikspeicher 1280, Betas, die aus dem vorherigen Taktzyklus folgen, und extrinsische Information 1242, die aus dem Zwischenentschlüsselungsspeicher und -prozessor 1240 erzeugt werden, um ein LogLikelihood-Ergebnis für jeweils „1" und „0" zu erzeugen. Die LogLikelihood-Berechnungen können eine Vielzahl von Reihen umspannen, da sie das maximale Ergebnis über alle Zustände bestimmen.
  • Beta-Berechnungen arbeiten im Vergleich zu den Alphas in die umgekehrte Richtung durch das Fenster des Eingabesymbolverlaufs und benutzen Gammas, die bei den Alpha-Berechnungen benutzt werden. Die Beta-Berechnungen benutzten die gleichen Trelliszweigmetrikzuordnungen, die für die Alpha-Berechnungen benutzt wurden.
  • Wenn der gesamte Eingabeverlaufsblock verarbeitet worden ist und die resultierenden Ausgaben in die Verschachtelungseinheit 1520 geleitet worden sind, kann der Prozess mit der zweiten Hälfte des Turbodecodervorgangs beginnen. Der Verschachtelungsvorgang während des ersten Decodervorgangs wird sequenziell gelesen und sequenziell geschrieben. Während des zweiten Decodervorgangs wird die Verschachtelungseinheit herausgelesen und hineingeschrieben, wenngleich unter Verwendung einer beliebigen Adresssequenz, die von der Verschlüsselungsadresse bestimmt wird. Während des zweiten Decodervorgangs sind die Lese- und die Schreibadressen die gleichen. Der Verschachtelungsvorgang nach dem ersten Decoder schreibt sequenziell und liest beliebig heraus, wie aus der vordefinierten Verteilungssequenz ersichtlich ist, die benutzt wird, um dem ersten und dem zweiten Decoder seine statistische Unabhängigkeit zu geben. Der Verschachtelungsvorgang für den zweiten Decoder schreibt zufällig, wie aus der Verteilungssequenz ersichtlich, und liest sequenziell.
  • Es ist zu beachten, dass die Entschlüsselungsgeschwindigkeiten und Einschränkungen des zweiten Decoders nicht unbedingt die gleichen wie für den ersten Decoder sein müssen, da die Codierer, die zur Turboverschlüsselung benutzt werden, nicht die gleichen sein müssen. Dies kann erfordern, dass die Konfiguration des Turbodecoders zwischen den Blockverarbeitungsvorgängen geändert werden muss. Wenn dies der Fall ist, kann dies durch Manipulieren der Inhalte der Konfigurationsregister ohne weiteres erreicht werden.
  • Jeder Block des Eingabesymbolverlaufs erfordert mehrere vollständige Turboiterationen, um innerhalb einer akzeptablen Bitfehlerrate entschlüsselt zu werden. Die erforderliche Anzahl von Iterationen ist konfigurierbar, um zu gewährleisten, dass die erforderliche Bitfehlerrate erreicht wird.
  • Ein Vorteil der fraglichen Architektur ist, dass sie nur zwei Phasen erfordert, um eine Turboentschlüsselungsiteration zu vollenden. Dies sorgt bei der Benutzung der Architektur für Flexibilität und ermöglicht, dass die Anzahl von benutzten Decoderreihen für die Anzahl erforderlicher Iterationen verhandelt wird. Zum Beispiel kann ein Turbodecoder, der vier Iterationen ausführt, mittels zwei Decoderreihen umgesetzt werden, die zwei Iterationszeiten erfordern.
  • Eine LogMAP-Berechnung wird mittels eines gleitenden Fensteralgorithmus ausgeführt. Der gleitende Fensteralgorithmus wird in 2 Phasen umgesetzt. In einem einzigen Decoder führt dies zu einer erhöhten Latenz: 2 Durchgänge über jedes Fenster, wie in der Konfiguration in 20A dargestellt (bei Verwendung von nur einem einzigen Decoder). Der erste Durchgang berechnet parallel die Dummybeta-Werte und Vorwärtsalphawerte und speichert die Vorwärtsalphawerte in dem Alphaspeicher (HINWEIS: dieser Speicher ist der gleiche Speicher, der in dem Viterbi-Algorithmus für den Wegmetrikspeicher benutzt wird). Der zweite Durchgang liest die Alphawerte und berechnet die Betawerte gemäß dem LogMAP-Algorithmus und gibt LogLikelihood-Verhältnisse (LLR) aus.
  • Wenn mehrere Decoder benutzt werden, kann sich die Berechnung der zwei Phasen überlappen und der Decoder kann einen einzigen Block mit verminderter Latenz verarbeiten. Mehrere Decoder können getrennt auf verschiedenen Datenströmen arbeiten oder sie können zusammenarbeiten, um die Entschlüsselungsgeschwindigkeit eines einzigen Stroms zu erhöhen, wie in der Konfiguration aus 20B dargestellt. Die Umsetzung, die in 3 dargestellt ist, kann 4 unabhängige Ströme oder 2 Ströme mit erhöhter Geschwindigkeit (und reduzierter Latenz) oder 1 Strom mit weiter erhöhter Geschwindigkeit (und minimaler Latenz) verarbeiten.
  • Tabelle 1 zeigt die Flexibilität des vereinheitlichten Decoders, um mehrere verschlüsselte Ströme gleichzeitig zu unterstützen. Zum Beispiel kann ein Decoder mit 4 Decoderreihen bis zu 4 Datenströme gleichzeitig verarbeiten. Darüber hinaus können die Decoderreihen zusammenarbeiten, um weniger Ströme bei höherem Durchsatz zu entschlüsseln. Dies ist zur Minimierung der Latenz bei der Sprachentschlüsselung nützlich. Tabelle 1 zeigt die Flexibilität dieses Ansatzes und die angemessene Entschlüsselungsbeschleunigung, die in jedem Fall erhalten wird. (Wieder soll diese Liste keinesfalls vollständig sein – mehr Decoderreihen können miteinander verbunden sein, um eine sogar noch größere Flexibilität zu erreichen.)
  • Tabelle 1: Beispiel von Entschlüsselungskonfigurationen von durch mehrere Bänke verbundenen Decodern.
    Figure 00620001
  • Figure 00630001
  • Um zu zeigen, wie 2 oder 4 Decoder zusammenarbeiten können, um weniger Datenströme bei einer höheren Geschwindigkeit zu entschlüsseln, zeigt 21 die Verbindungen zwischen zwei Decodern. Die mit "M" gekennzeichneten Kästen sind Multiplexer, die bewirken, dass ein Teil der Wegmetriken von benachbarten Decodern vor dem Schreiben in die Wegmetrikspeicher getauscht wird. Auf diese Weise können die Decoder als ein einziger Decoder arbeiten. Darüber hinaus zeigt 22, wie 4 Decoder miteinander verbunden werden können, um entweder als ein einziger Decoder, als zwei getrennte Decoder oder 4 getrennte Decoder zu arbeiten.
  • Um die Multistandardnatur des vereinheitlichten Decoders zu zeigen, kann der Decoder jede beliebige Kombination der Standards unterstützen, die in Tabelle 2 dargestellt sind. (Diese Liste ist in keiner Weise vollständig, sondern enthalten, um die flexible (und folglich nützliche) Natur dieses vereinheitlichten Decoders zu zeigen).
  • Tabelle 2: Beispiel von Standards, die von dem vereinheitlichten Decoder unterstützt werden
    Figure 00640001
  • Der vereinheitlichte Decoder 900 setzt die Entschlüsselung um, welche für die durch Konvolution und Turbo verschlüsselten Datenströme erforderlich ist, und kann eine Vielzahl von Datenströmen und eine Vielzahl von Sprachströmen gleichzeitig unterstützen. Bei der Entschlüsselung von turboverschlüsselten Datenströmen setzt dieser Decoder einen iterativen Turbodecoder um, der entweder den MAX-LOG-MAP- oder den LOG-MAP-Soft-Output-MAP-Algorithmus benutzt. Der Decoder maximiert die Wiederverwendung seiner Komponenten, um die effiziente Umsetzung sowohl des Konvolutions- als auch des Turboentschlüsselungssystems zu bewirken.
  • Der Decoder kann gegebenenfalls dynamisch unterteilt sein, um Sprachströme für unterschiedliche Standards zu entschlüsseln. Der Decoder kann Ströme mit unterschiedlichen Verschlüsselungsgeschwindigkeiten (1/2 Geschwindigkeit, 1/3 Geschwindigkeit, 1/4 Geschwindigkeit usw.) verarbeiten. Er kann auch Ströme verarbeiten, die mit unterschiedlichen Einschränkungslängen verschlüsselt sind. Als solche ist die vereinheitlichte Decoderarchitektur dazu fähig, jeden der Mobilfunkstandards zu unterstützen, die derzeit wie folgt definiert sind: erste, zweite und dritte Generation sowohl für Sprache als auch für Daten.
  • Die vereinheitlichte Decoderstruktur der bevorzugten Ausführungsform vereinigt die Funktionalität von nicht systematischen (Vorwärts-) Codierern und systematischen (Rückwärts-) Codierern in einer einzigen Architektur. 23A zeigt die Vermischung von Polynomen 3240 und Zustandsbits 3250, um ein einziges Codebit 3225_0 eines Codeworts 3225 zu erzeugen. Die Polynome 3240 werden den entsprechenden AND-Gattern 3260 bereitgestellt, die auch die Zustände 3250 als Eingaben empfangen. Jedes der AND-Gatter 3260 erzeugt eine Ausgabe an ein entsprechendes XOR-Gatter 3270. Jedes XOR-Gatter 3270 empfängt auch einen TRANSITION INPUT (ÜBERGANGSEINGABE) 3280 und erzeugt eine Ausgabe 3225_0 des nicht systematischen M-Bit-Codierers 3230.
  • 23B zeigt einen ganzen Codierer 3200 für ein Codewort 3225. Die Polynome 3240 werden den entsprechenden nicht systematischen M-Bit-Codierern 3230 bereitgestellt. Ein Eingabebit 3220 wird einem XOR-Gatter 3275 bereitgestellt. Ein RSC_ENABLE-Signal wird einem AND-Gatter 3280 bereitgestellt, dessen Ausgabe die zweite Eingabe des XOR-Gatters 3275 ist. Das AND-Gatter 3280 empfängt auch als eine Eingabe die Ausgabe der Codierer 3230. Das XOR-Gatter 3275 stellt einem M-Bit-Verschiebungsregister 3210 und jedem der Codierer 3230 eine Ausgabe bereit. Das M-Bit-Verschiebungsregister 3210 empfängt auch ein Taktsignal 3285 und ein Rückstellsignal 3290 und enthält einen Zustand des Codierers 3200 zu einer Zeit T. Der Zustandswert wird in Verbindung mit jedem bestimmten Polynom 3240 (wie durch einen bestimmten Code spezifiziert) benutzt, um ein nicht systematisches Codebit zu erzeugen. Die Ausgabe 3250 des Registers 3210 wird an jeden der Codierer 3230 übertragen. Die Ausgaben 3225_0...3225_R des Codierers 3230 werden gesammelt, um das CODE_WORD 3225 zu bilden.
  • Durch Aktivieren von RSC_ENABLE 3215 wird der Codierer 3200 zu einem rekursiven, systematischen (RS-) Codierer. In einem rekursiven, systematischen Code bildet das Eingabebit 3220 das systematische Bit eines Codeworts 3225. Die erzeugten Bits jedes M-Bit-Codierers 3230 bilden den Rest des RS-Codeworts 3225.
  • Bei einem nicht systematischen Codierer würde CODE WORD 3225R Bits enthalten (wobei R = die Geschwindigkeit des Codes ist). Wenn RSC_ENABLE 3215 aktiv ist, ist das CODE_WORD 3225 in der Regel 1 Bit breit. Das Ausgabe-CODE-WORD 3225 (in diesem Fall 1 Bit breit) und das INPUT_BIT 3220 bilden das RS-Codewort.
  • Aus der vorstehenden Beschreibung ist ersichtlich, dass die oben beschriebene (n) Ausführungsform(en) der Erfindung auf die Entschlüsselung einer Vielzahl von Funkübertragungsstandards anwendbar ist welche eine vereinheitlichte, skalierbare Architektur benutzen.
  • Vorstehend ist nur eine Ausführungsform beziehungsweise sind nur einige Ausführungsformen der vorliegenden Erfindung beschrieben worden und Modifikationen und/oder Veränderungen können daran vorgenommen werden, ohne den Schutzbereich der Erfindung zu verlassen, wobei die Ausführungsform(en) erläuternd und nicht einschränkend sind.

Claims (4)

  1. Faltereinheit (1260) einer Falterprozessoranordnung zur Benutzung bei der Telekommunikationsentschlüsselung, wobei die Faltereinheit (1260) GEKENNZEICHNET IST DURCH: ein erstes und ein zweites Addieren-Vergleichen-Auswählen-Modul (320), wobei die Module (320) jeweils eine erste und eine zweite Eingabewegmetrik empfangen, die zu der Anordnung (1260) geleitet wird, und wobei jedes Modul (320) Log-Summen-Korrekturmittel und eine Auswahlkomponente (420) umfasst und wobei jedes Modul (320) einen steuerbaren Schalter (450) zum Bereitstellen einer ausgewählten Ausgabe (421) der Auswahlkomponente (420) und eine Ausgabe (461) des Log-Summen-Korrekturmittels umfasst, um eine Ausgabe (451) des steuerbaren Schalters (450) zu bilden; einen Zweigmetrikrechner (330), wobei der Zweigmetrikrechner (330) dazu fähig ist, Eingabedaten und extrinsische Daten zu empfangen und eine erste und eine zweite Ausgabezweigmetrik (402, 406) zu erzeugen, die zu jedem der Hinzufügen-Vergleichen-Auswählen-Module (320) geleitet werden, wobei die zweite Ausgabezweigmetrik (402) die arithmetische Umkehrung der ersten Ausgabezweigmetrik (406) ist; und Mittel zum Betätigen des steuerbaren Schalters (450), so dass, wenn der steuerbare Schalter (450) die Ausgabe (421) der Auswahlkomponente (420) bereitstellt, um die Ausgabe (451) des steuerbaren Schalters (450) zu bilden, die Anordnung für eine Konvolutionsentschlüsselung arbeitet, und wenn der Schalter (450) die Ausgabe (461) des Log-Summen-Korrekturmittels bereitstellt, um die Ausgabe (451) des steuerbaren Schalters (450) zu bilden, die Anordnung für eine LOGMAP-Entschlüsselung ar beitet.
  2. Faltereinheit (1260) nach Anspruch 1, DADURCH GEKENNZEICHNET, DASS das Log-Summen-Korrekturmittel eine Log-Summen-Korrekturtabelle (440) umfasst, die eine Adresseingabe (415) aufweist, welche mit einer Differenzausgabe der Vergleichskomponente (414) verbunden ist, wobei die Tabelle (440) dazu fähig ist, einer ersten Eingabe eines Addierers (460), dessen zweite Eingabe dazu fähig ist, die Ausgabe (421) der Auswahlkomponente (420) des Addierers (460) zu empfangen, als eine Ausgabe (441) einen ersten Log-Summen-Wert bereitzustellen, wobei der Addierer (460) die Ausgabe (461) des Log-Summen-Korrekturmittels bereitstellt.
  3. Verfahren zum Ausführen einer metrischen Wegaktualisierung bei der Telekommunikationsentschlüsselung, wobei das Verfahren durch die folgenden Schritte GEKENNZEICHNET IST: Erzeugen einer ersten und einer zweiten Zweigmetrik (402, 406) aus Eingabedaten und extrinsischen Daten, wobei die zweite Zweigmetrik (402) die arithmetische Umkehrung der ersten Zweigmetrik (406) ist; Ausführen eines Addieren-Vergleichen-Auswählen-Vorgangs auf der ersten und der zweiten Eingabewegmetrik (1265a, 1265b) und der ersten und der zweiten Zweigmetrik (402, 406); Korrigieren der Log-Summe einer Auswahlvorgangsausgabe (421), um eine bezüglich der Log-Summe korrigierte Ausgabe (461) zu erzeugen; und selektives Bereitstellen der bezüglich der Log-Summe korrigierten Ausgabe (461) und der Auswahl vorgangsausgabe (421), um eine Ausgabe (451) zu erzeugen; wodurch, wenn die Auswahlvorgangsausgabe (421) bereitgestellt wird, um die Ausgabe (451) zu erzeugen, die metrische Wegaktualisierung für die Konvolutionsentschlüsselung arbeitet, und wenn die bezüglich der Log-Summe korrigierte Ausgabe (461) bereitgestellt wird, um die Ausgabe (451) zu erzeugen, die metrische Wegaktualisierung für die LOGMAP-Entschlüsselung arbeitet.
  4. Verfahren nach Anspruch 3, DADURCH GEKENNZEICHNET, DASS das Korrigieren der Log-Summe eine Log-Summen-Korrekturtabelle (440) benutzt, wobei das Verfahren die folgenden weiteren Schritte umfasst: Bereitstellen einer Differenzausgabe (415) des Vergleichsvorgangs (414) zu einer Adresseingabe der Log-Summen-Korrekturtabelle (440), um einen entsprechenden Log-Summen-Wert (441) auszugeben; und Addieren des Log-Summen-Wertes (441) zu der Auswahlvorgangsausgabe (421), um die bezüglich der Log-Summe korrigierte Ausgabe (461) bereitzustellen.
DE60125686T 2000-09-18 2001-09-11 Falterprozessor zur Telekommunikation Expired - Lifetime DE60125686T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US23336900P 2000-09-18 2000-09-18
US233369P 2000-09-18
US908000 2001-07-18
US09/908,000 US6865710B2 (en) 2000-09-18 2001-07-18 Butterfly processor for telecommunications

Publications (2)

Publication Number Publication Date
DE60125686D1 DE60125686D1 (de) 2007-02-15
DE60125686T2 true DE60125686T2 (de) 2007-10-11

Family

ID=26926860

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60125686T Expired - Lifetime DE60125686T2 (de) 2000-09-18 2001-09-11 Falterprozessor zur Telekommunikation

Country Status (4)

Country Link
US (1) US6865710B2 (de)
EP (1) EP1204211B1 (de)
JP (1) JP4907802B2 (de)
DE (1) DE60125686T2 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7308439B2 (en) 2001-06-06 2007-12-11 Hyperthink Llc Methods and systems for user activated automated searching
KR20030005768A (ko) * 2001-07-10 2003-01-23 삼성전자 주식회사 비터비 디코더의 상태 메트릭 연산 장치
US7661059B2 (en) 2001-08-06 2010-02-09 Analog Devices, Inc. High performance turbo and Viterbi channel decoding in digital signal processors
FI20020108A0 (fi) * 2002-01-21 2002-01-21 Nokia Corp Menetelmõ ja laite polkumetriikoiden muodostamiseksi trelliksessõ
US7107509B2 (en) * 2002-08-30 2006-09-12 Lucent Technologies Inc. Higher radix Log MAP processor
SG113431A1 (en) * 2002-08-30 2005-08-29 Oki Techno Ct Singapore Pte Improved turbo decoder
EP1398881A1 (de) * 2002-09-05 2004-03-17 STMicroelectronics N.V. Kombinierter Turbo-Kode/Faltungskode Dekodierer, besonders für mobile Radio Systeme
FI20021656A0 (fi) * 2002-09-16 2002-09-16 Nokia Corp Menetelmä ja järjestely dekoodauksen suorittamiseksi
US20040255230A1 (en) * 2003-06-10 2004-12-16 Inching Chen Configurable decoder
US7200798B2 (en) * 2003-06-26 2007-04-03 Lucent Technologies Inc. Unified serial/parallel concatenated convolutional code decoder architecture and method
US7343530B2 (en) * 2004-02-10 2008-03-11 Samsung Electronics Co., Ltd. Turbo decoder and turbo interleaver
EP1762005A2 (de) * 2004-06-23 2007-03-14 Koninklijke Philips Electronics N.V. Adressierungsstrategie zur berechnung der viterbi-metrik
US7908542B2 (en) * 2004-08-25 2011-03-15 Asocs Ltd Method of and apparatus for implementing a reconfigurable trellis-type decoding
US7797618B2 (en) * 2004-12-30 2010-09-14 Freescale Semiconductor, Inc. Parallel decoder for ultrawide bandwidth receiver
US7554979B2 (en) 2005-02-03 2009-06-30 Canon Kabushiki Kaisha Communication apparatus and method having function of transmitting notification signal while hiding group identification information
GB0504483D0 (en) * 2005-03-03 2005-04-13 Ttp Communications Ltd Trellis calculations
US8745326B2 (en) * 2005-06-02 2014-06-03 Seagate Technology Llc Request priority seek manager
KR101154561B1 (ko) * 2007-06-14 2012-06-11 인텔 코오퍼레이션 컨볼루션, 터보 및 ldpc 코드용 통합 디코더
JP2009246474A (ja) * 2008-03-28 2009-10-22 Fujitsu Ltd ターボデコーダ
US8879670B2 (en) * 2010-09-08 2014-11-04 Agence Spatiale Europeenne Flexible channel decoder
JP5692780B2 (ja) 2010-10-05 2015-04-01 日本電気株式会社 マルチコア型誤り訂正処理システムおよび誤り訂正処理装置
US9363704B2 (en) 2014-06-20 2016-06-07 Apple Inc. Selecting a physical data channel based on application traffic pattern

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327440A (en) 1991-10-15 1994-07-05 International Business Machines Corporation Viterbi trellis coding methods and apparatus for a direct access storage device
US5841478A (en) * 1996-04-09 1998-11-24 Thomson Multimedia, S.A. Code sequence detection in a trellis decoder
JPH10107651A (ja) * 1996-09-27 1998-04-24 Nec Corp ビタビ復号装置
US6115436A (en) 1997-12-31 2000-09-05 Ericsson Inc. Non-binary viterbi decoder using butterfly operations
KR100557177B1 (ko) * 1998-04-04 2006-07-21 삼성전자주식회사 적응 채널 부호/복호화 방법 및 그 부호/복호 장치
CN1144378C (zh) * 1998-05-28 2004-03-31 索尼株式会社 卷积码软输出解码装置和软输出解码方法
US6460161B1 (en) 1998-06-01 2002-10-01 Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of Industry Through The Communications Research Centre Processing of state histories in Viterbi decoding
US6477680B2 (en) * 1998-06-26 2002-11-05 Agere Systems Inc. Area-efficient convolutional decoder
CN1143471C (zh) 1998-12-18 2004-03-24 艾利森电话股份有限公司 快速最大后验概率译码的方法和系统
JP2000224054A (ja) * 1999-01-27 2000-08-11 Texas Instr Inc <Ti> ビタビデコ―ディングの速度を増大させる方法と装置
ES2301492T3 (es) 1999-10-05 2008-07-01 Samsung Electronics Co., Ltd. Decodificacion turbo con decodificador viterbi de salida suave.
GB2357938A (en) 1999-12-24 2001-07-04 Nokia Networks Oy Selecting one of a plurality of equalisation algorithms

Also Published As

Publication number Publication date
DE60125686D1 (de) 2007-02-15
JP2002176366A (ja) 2002-06-21
JP4907802B2 (ja) 2012-04-04
EP1204211B1 (de) 2007-01-03
US20020129320A1 (en) 2002-09-12
US6865710B2 (en) 2005-03-08
EP1204211A1 (de) 2002-05-08

Similar Documents

Publication Publication Date Title
DE60125686T2 (de) Falterprozessor zur Telekommunikation
US7127664B2 (en) Reconfigurable architecture for decoding telecommunications signals
US6603412B2 (en) Interleaved coder and method
EP0229246B1 (de) Verfahren zum Dekodieren von Binärsignalen sowie Viterbi-Dekoder und Anwendungen
DE10206727A1 (de) Kombinierter Ver-und Entschachteler sowie Turbo-Decodierer mit kombiniertem Ver-und Entschachteler
DE112004002008B4 (de) Vereinheitlichter Viterbi/Turbo-Decoder für mobile Telekommunikationssysteme
US7020827B2 (en) Cascade map decoder and method
IL181539A (en) Method and apparatus for implementing a reconfigurable trellis-type decoding
US7020214B2 (en) Method and apparatus for path metric processing in telecommunications systems
US20150236723A1 (en) Parallel VLSI architectures for constrained turbo block convolutional decoding
DE10196688B3 (de) Ein Decodierer für eine trellis-basierte Kanalcodierung
US6944727B2 (en) Interleaving apparatus and interleaving method, encoding apparatus and encoding method, and decoding apparatus and decoding method
US7200798B2 (en) Unified serial/parallel concatenated convolutional code decoder architecture and method
CN101971504A (zh) 用于多个代码类型的可编程解码的方法和设备
US6751773B2 (en) Coding apparatus capable of high speed operation
Bougard et al. A class of power efficient VLSI architectures for high speed turbo-decoding
CN1335684A (zh) 一种高速Turbo码解码器
JP2002527981A (ja) ターボ符号のためのハイブリッドインタリーバー
CN1129257C (zh) 串行回溯的最大似然解码方法及其使用该方法的解码器
EP1393514B1 (de) Verfahren und schaltungsanordnung zur übertragung von daten zwischen einem prozessor und einem hardware-rechenwerk
DE102013109494A1 (de) Verfahren und Vorrichtung zur Kollisionsauflösung in einem Turbodecoderspeicher
GB2463011A (en) Interleaved decoding using a selectable number of parallel decoding units interconnected with RAM units
DE102004003096B3 (de) Schaltung zur Durchführung der Add-Compare-Select-Operation mit darüber hinausgehender Funktionalität
DE10138566A1 (de) Verfahren und Vorrichtung zur Durchführung der Ver- und Entschachtelung bei einer Turbo-Dekodierung
Viterbi Coding and interleaving for correcting burst and random errors in recording media

Legal Events

Date Code Title Description
8364 No opposition during term of opposition