-
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.
-
-
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
-
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.