-
Die
vorliegende Erfindung betrifft eine Codiervorrichtung zum Erzeugen
einer Faltungscodesequenz, die hauptsächlich in der Telekommunikation verwendet
wird.
-
Auf
dem Gebiet der Mobilkommunikation wird oft ein Faltungscode verwendet.
Der Grund ist, dass Bitfehler, die häufig während des Übertragens von Information
auftreten, eine Fehlerkorrekturcodierung erfordern, nachdem die
Information empfangen worden ist. Andererseits ist es für heutige
mobile Telekommunikationseinheiten unverzichtbar, eine Signalverarbeitung
unter Verwendung eines digitalen Signalprozessors (DSP) durchzuführen.
-
In
EP-A-0 750 401 wird ein Faltungscodierer beschrieben. Ein Schieberegister
speichert eine Vielzahl von Datenbits, die logischen Operationen
unterliegen, um dadurch eine Faltungscodierung durchzuführen. Mehrfach
angezapfte Register, die parallel zu dem Schieberegister vorhanden
sind, geben Bitpositionen von Daten in dem Schieberegister an, die
bei der Berechnung der jeweiligen Vielzahl von Ausgabedatenbits
verwendet werden. Das Schieberegister wird mit Daten von einem Eingangs-Schieberegister oder
von einem Speicherblock versorgt.
-
Ein
Faltungscodebit wird erzeugt, indem Addition Modulo 2 auf einem
Eingangsbit und einer Anzahl vorangehender Bits durchgeführt wird.
Wenn z. B. die Anzahl vorangehender Bits K – 1 ist, ist die Einschränkungslänge K. Und
wenn eine Anzahl n von Bits in Bezug auf ein einzelnes Eingangsbit
erzeugt wurde, beträgt
die Coderate (hierin einfach als "Rate" bezeichnet)
1/n. 2 veranschaulicht eine Konfiguration für eine bekannte
Faltungscodiervorrichtung. In dem in 2 gezeigten
Beispiel weist die Faltungscodiervorrichtung eine Einschränkungslänge von
4 und eine Rate von 1/2 auf.
-
Um
ein Faltungscodebit zu erzeugen, sollte ein exklusive logische Summe
für eine
Bitsequenz gewonnen werden, die aus der Zahl K von Bits besteht,
d. h. ein Eingangsbit und eine Zahl K – 1 vorangehender Bits. Um
ein Programm durch einen bekannten DSP unter Verwendung normaler
Anweisungen zur Ausführung
zu bringen, bedarf es gewöhnlich mehrerer
Verarbeitungsschritte, um ein Eingangsbit zu codieren und ein Codebit
zu gewinnen.
-
In
letzter Zeit hat ein Turbo-Codierschema viel Aufmerksamkeit als
ein neues Codierverfahren erregt, das sich der Shannon-Grenze nähern kann. 4 ist
ein Blockschaltbild, das eine Konfiguration einer Codiervorrichtung
veranschaulicht, die eine Turbo-Codesequenz er zeugt. Wie in 4 gezeigt, umfasst
die Vorrichtung einen Verschachteler 403 und rekursive,
systematische Faltungs-(RSC)Codierer 401 und 402.
Jeder der RSC-Codierer 401 und 402 kann eine Konfiguration
wie z. B. die in 5 veranschaulichte aufweisen.
-
Die
japanische Laid-Open Veröffentlichtlichung
Nr. 11-46148 offenbart ebenfalls einen Prozessor, der Faltungs-
und Turbo-Codesequenzen ausreichend schnell erzeugen kann. 8 ist
ein Blockschaltbild, das einen Prozessor veranschaulicht, wie in
der vorerwähnten
Veröffentlichung
offenbart. 9 ist ein Schaltbild, das eine
detaillierte Konfiguration der in 8 gezeigten
Mehreingang-Exklusiv-ODER-Schaltung 780 veranschaulicht.
-
In
dem in 9 gezeigten Prozessor speichert ein Register 760 Bitauswahldaten,
aus denen eine Faltungscodesequenz erzeugt werden wird. Die jeweiligen
Bits der Bitauswahldaten werden in einen Bitselektor 770 eingegeben.
Die Mehreingang-Exklusiv-ODER-Schaltung 780 enthält Dreieingang-Einausgang-Selektoren 781.
Die Ausgänge
des Bitselektors 770 werden als Auswählsignale an diese Dreieingang-Einausgang-Selektoren 781 geliefert.
-
Wie
ebenfalls in 9 gezeigt, speichert ein Schieberegister 740 eine
Anzahl vorangehender Bits, die jeweils in die Mehreingang-Exklusiv-ODER-Schaltung 780 eingegeben
werden. Der Ausgang der Mehreingang-Exklusiv-ODER-Schaltung 780 ist
die erzeugte Faltungscodesequenz, die in dem in 8 gezeigten
Schieberegister 790 gespeichert werden wird.
-
Der
In 9 gezeigte, bekannte Prozessor benötigt jedoch
den Bitselektor 770. Ferner besteht die Mehreingang-Exklusiv-ODER-Schaltung 780 aus Einheitskonstruktionsblöcken 783,
wobei jeder ein einzelnes Exklusiv-ODER-Gatter 782 und
einen einzelnen Dreieingang-Selektor 781 enthält. Wenn
die Einschränkungslänge K ist,
muss der Prozessor folglich die Codierung durchführen, indem er eine Anzahl K – 1 von
Einheitskonstruktionsblöcken 783 zusammen
kaskadiert.
-
Eine
Schaltung dieses Typs erhöht
ihre Größe, wenn
die Einschränkungslänge K zunimmt.
Da die Einheitskonstruktionsblöcke 783 kaskadiert
werden, ist außerdem
die Zahl von Gatterstufen zwischen ihren Eingangs- und Ausgangsanschlüssen übermäßig groß. Aus diesen
Gründen
ist die Schaltung auf Hochgeschwindigkeits-Verarbeitung nicht wirkungsvoll
anwendbar.
-
Es
ist eine Aufgabe der vorliegenden Erfindung, eine verbesserte Codiervorrichtung
bereitzustellen, die eine effiziente Erzeugung einer Faltungscodesequenz
gestattet.
-
Diese
Aufgabe wird die Merkmale von Anspruch 1 erfüllt.
-
Eine
weitere Ausführung
ist Gegenstand des abhängigen
Anspruchs 2.
-
In
der erfinderischen Vorrichtung werden logische Produkte von mehrfachen
aneinandergrenzenden Bits einer Eingangs-Bitsequenz und ihre zugehörigen Koeffizienten
in den Termen auf jeweiligen Ordnungen eines Generatorpolynoms parallel
erlangt. Folglich kann jedes Bit einer Codesequenz in einer viel
kürzeren
Zeit erlangt werden, und der Faltungscodierprozess kann weit effizienter
durchgeführt
werden. Außerdem
sind die in dem Eingangsregister gespeicherten Werte frei änderbar,
um ein Faltungscodebit entsprechend einem beliebigen Generatorpolynom
zu erzeugen.
-
Die
erfinderische Vorrichtung enthält
weiter ein zweites Schieberegister, um die eingegebene Bitsequenz
darin zu speichern. Das zweite Schieberegister führt eine Bitverschiebung auf
der eingegebenen Bitsequenz aus und gibt ein Bit der eingegebenen
Bitsequenz nach dem anderen an das erste Schieberegister aus.
-
Der
logische Operationsabschnitt gibt des Weiteren die Codesequenz an
das zweite Schieberegister aus. Und das zweite Schieberegister teilt
vorzugsweise ein Bit der Codesequenz nach dem anderen einer Bitposition
zu, wobei als Ergebnis der Bitverschiebung kein Bit der eingegebenen
Bitsequenz mehr gespeichert ist.
-
Vorzugsweise
umfasst die Vorrichtung des Weiteren einen Speicher, um die eingegebene
Bitsequenz zu speichern und dann auszugeben. Und der logische Operationsabschnitt
erlangt vorzugsweise die in dem Speicher gespeicherte Codesequenz.
-
1 ist
ein Blockschaltbild, das eine Anordnung für eine Codiervorrichtung nach
einer ersten Ausführung
der vorliegenden Erfindung veranschaulicht.
-
2 ist
ein Blockschaltbild, das eine begriffliche Konfiguration einer Faltungscodiervorrichtung
veranschaulicht.
-
3 ist
ein Schaltbild, das die Codiervorrichtung der ersten Ausführung veranschaulicht.
-
4 ist
ein Blockschaltbild, das eine Grundkonfiguration für eine Codiervorrichtung
zum Erzeugen einer Turbo-Codesequenz veranschaulicht.
-
5 ist
ein Blockschaltbild, das eine begriffliche Konfiguration für einen
rekursiven, syste matischen Faltungscodierer veranschaulicht.
-
6 ist
ein Schaltbild, das eine Codiervorrichtung nach einer zweiten Ausführung der
vorliegenden Erfindung veranschaulicht.
-
7 ist
ein Blockschaltbild, das schematisch einen DSP darstellt, der die
in 3 gezeigte Codievorrichtung enthält.
-
8 ist
ein Blockschaltbild, das einen bekannten Prozessor veranschaulicht.
-
9 ist
ein Schaltbild, das eine detaillierte Konfiguration der in 8 gezeigten
Mehreingang-Exklusiv-ODER-Schaltung veranschaulicht.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGEN
-
Im
Folgenden werden bevorzugte Ausführungen
der vorliegenden Erfindung mit Verweis auf die begleitenden Zeichnungen
beschrieben.
-
AUSFÜHRUNG 1
-
1 ist
ein Blockschaltbild, das eine Anordnung für eine Codiervorrichtung nach
einer ersten Ausführung
der vorliegenden Erfindung veranschaulicht. Die in 1 gezeigte
Vorrichtung führt
eine Faltungscodierung auf Eingabedaten (genauer eine eingegebene
Bitsequenz) aus, um eine Faltungscodesequenz zu erzeugen und auszugeben.
Wie in 1 gezeigt, enthält die Vorrichtung einen Datenspeicher 110,
einen Adresszähler 120,
ein Eingangsregister 140, ein erstes und zweites Schieberegister 160 und 180 sowie
einen Logikoperationsabschnitt 170. Das heißt, die
in 1 gezeigte Vorrichtung enthält nicht nur Komponenten, die
normalerweise für
einen Universal-DSP bereitgestellt werden, sondern auch den Logikoperationsabschnitt 170.
In 1 befindet sich die Arithmetik- und Logikeinheit
(ALU) 150 in keiner direkten Verbindung mit der Codierverarbeitung.
Das Eingangsregister 140 gibt seine gespeicherten Daten an
die ALU 150 aus und kann für die ALU 150 als
ein Eingangsregister fungieren.
-
In
der folgenden Beschreibung werden in jedem Register und Schieberegister
gespeicherte höchst-
und niedrigstwertige Bits einfach als "MSB" bzw. "LSB" bezeichnet.
-
2 ist
ein Blockschaltbild, das eine begriffliche Konfiguration für eine Faltungscodiervorrichtung
veranschaulicht. Wie in 2 gezeigt, wird eine Eingangs-Bitsequenz
i ein Bit nach dem anderen als zu codierende Daten in das LSB eines
4-Bit Schieberegisters 260 eingege ben. Außerdem wird jedes
Mal ein Bit neu in das Schieberegister 260 eingegeben,
und die Daten, die in dem Schieberegister 260 gespeichert
wurden, werden um eine Stelle nach links verschoben (d. h. in Richtung
auf das MSB).
-
In 2 wird
ein Faltungscodebit X1 erzeugt, indem eine exklusive logische Summe
des ersten, zweiten und vierten MSB des Schieberegisters 260 entsprechend
einem Generatorpolynom 1 + D2 + D3, wo D ein Verzögerungsoperator ist, gewonnen
wird. In der gleichen Weise wird ein weiteres Faltungscodebit X2
erzeugt, indem eine exklusive logische Summe des ersten und vierten
MSB des Schieberegisters 260 entsprechend einem anderen
Generatorpolynom 1 + D3 gewonnen wird.
-
3 ist
ein Schaltbild, das einen Teil der in 1 gezeigten
Codiervorrichtung in weiteren Details veranschaulicht. Im folgenden
Beispiel wird beschrieben, wie die in 3 gezeigte
Codiervorrichtung 100 die in 2 gezeigten
Faltungscodebits X1 und X2 erzeugt.
-
Zuerst
wird das Faltungscodebit X1 in der folgenden Weise erzeugt. Der
Datenspeicher 110 speichert eine zu codierende Eingangs-Bitsequenz.
Der Adresszähler 120 zählt zwei
Adressen P0 und P1. Das heißt,
der Adresszähler 120 definiert
die Adresse an der Spitze eines Speicherbereiches, in dem der Datenspeicher 110 nun
die Eingangs-Bitsequenz speichert, als die Adresse P0. Der Adresszähler 120 definiert
auch die oberste Adresse eines Speicherbereiches, in dem das erzeugte
Faltungscodebit X1 gespeichert wird, als die zusätzliche Adresse P1.
-
Das
Eingangsregister 140 speichert die Koeffizienten von jeweiligen
Termen des Generatorpolynoms 1 + D2 + D3, das zum Erzeugen des in 2 gezeigten
Faltungscodebits X1 verwendet wird, darin in dieser Reihenfolge
(d. h. "1", "0", "1" und "1"), sodass der Koeffizient des Terms
höchster
Ordnung als das MSB davon gespeichert wird.
-
Der
Datenspeicher 110 liest ein Datenwort beginnend bei der
Adresse P0, wie durch den Adresszähler 120 angegeben,
und gibt es aus, sodass das Datenwort durch den Datenbus 130 übertragen
und dann in dem zweiten Schieberegister 180 gespeichert
wird. Dann erhöht
der Adresszähler 120 die
Adresse P0 um eins.
-
Jedes
Mal, wenn das Datenwort eingegeben wird, gibt das zweite Schieberegister 180 das
MSB der darin gespeicherten Daten aus. Das MSB wird dem ersten Schieberegister 160 zugeführt, sodass das
MSB an der LSB-Position davon gespeichert wird, nachdem die in dem
ersten Schieberegister 160 gespeicherten Bits um eine Stelle
nach links verschoben worden sind. Das heißt, das MSB ist das Bit, das momentan
in das erste Schieberegister 160 eingegeben wird. Der Logikoperationsabschnitt 170 benötigt vier
Bits, einschließlich
des momentanen, aus der Eingangs-Bitsequenz. Das erste Schieberegister 160 kann
folglich drei Bits speichern, die ihm in den vorherigen drei Zyklen
eingegeben wurden, bevor das MSB des zweiten Schieberegisters 180 als
das momentane eingegeben wird. Das erste Schieberegister 160 speichert
für Initialisierungszwecke
Nullbits an all diesen drei Bitpositionen.
-
Wie
in 3 gezeigt, enthält der Logikoperationsabschnitt 170 UND-Gatter 171, 172, 173 und 174 und
Exklusiv-ODER-Gatter 176, 177 und 178. Der
Logikoperationsabschnitt 170 führt die Faltungscodierung auf
dem momentan in das erste Schieberegister 169 eingegebenen
Bit und den drei momentan in dem ersten Schieberegister 160 gespeicherten Bits
entsprechend dem Generatorpolynom für das Eingangsregister 140 durch,
um das Faltungscodebit X1 zu erzeugen und auszugeben.
-
Das
heißt,
das UND-Gatter 171 empfängt
die MSBs des Eingangsregisters 140, erlangt ein logisches
Produkt dieser Bits und gibt dann das Produkt an das Exklusiv-ODER-Gatter 176 aus.
Das UND-Gatter 172 empfängt
das zweithöchstwertige Bit
des Eingangsregisters 140 und des ersten Schieberegisters 160,
erlangt ein logisches Produkt dieser Bits und gibt dann das Produkt
an das Exklusiv-ODER-Gatter 176 aus.
-
In
der gleichen Weise empfängt
das UND-Gatter 173 das dritthöchstwertige Bit des Eingangsregisters 140 und
des ersten Schieberegisters 160, erlangt ein logisches
Produkt dieser Bits und gibt dann das Produkt an das Exklusiv-ODER-Gatter 177 aus.
Das UND-Gatter 174 empfängt
das LSB des Eingangsregisters 140 und das gegenwärtig von
dem zweiten Schieberegister 180 ausgegebene Bit, erlangt
ein logisches Produkt dieser Bits und gibt dann das Produkt an das
Exklusiv-ODER-Gatter 177 aus.
-
Jedes
der Exklusiv-ODER-Gatter 176 und 177 gewinnt eine
exklusive logische Summe der zwei Eingänge und gibt dann die erhaltene
Summe an das Exklusiv-ODER-Gatter 178 aus. Als Reaktion
gewinnt das Exklusiv-ODER-Gatter 178 eine exklusive logische
Summe dieser zwei Ausgänge
und gibt dann die Summe als das Faltungscodebit X1 an das zweite
Schieberegister 180 aus.
-
Das
heißt,
jedes in dem Eingangsregister 140 oder dem ersten Schieberegister 160 gespeicherte
Bit wird in ein zugehöriges
der UND-Gatter 171 bis 174 eingegeben. Die Ausgänge dieser UND-Gatter 171 bis 174 werden
in die Exklusiv-ODER-Gatter 176 und 177 eingegeben,
deren Ausgänge
dann in das Exklusiv-ODER-Gatter 178 der letzten Stufe
eingegeben werden. Mit anderen Worten, diese drei Exklusiv-ODER-Gatter 176 bis 178 bilden
ein einziges Exklusiv-ODER-Gatter zum Erlangen einer exklusiven
logischen Summe der jeweiligen Ausgänge der UND-Gatter 171 bis 174 und Ausgeben
der Summe als das Faltungscodebit X1. Auf diese Weise kann der Ausgang
des Logikoperationsabschnitts 170 ein Faltungscodebit X1
für die Eingangs-Bitsequenz
i sein.
-
Beim
Gewinnen einer exklusiven logischen Summe der UND-Gatter 171 bis 174 unter
Verwendung mehrfacher Exklusiv-ODER-Gatter sollte die Zahl von Gattern
zwischen einem UND-Gatter 171, 172, 173 oder 174 und
dem Letztstufen-Exklusiv-ODER-Gatter 178, das das Faltungscodebit
X1 ausgibt, sich von der Zahl von Gattern zwischen einem anderen
UND-Gatter 171, 172, 173 oder 174 und
dem Exklusiv-ODER-Gatter um eins oder weniger unterscheiden. Dann
ist es möglich,
die Zeit zu verkürzen,
die nötig
ist, um das Faltungscodebit X1 nach dem Schieben der Schieberegister 160 und 180 zu
erhalten.
-
Wenn
das Faltungscodebit X1 erlangt ist, verschiebt das erste Schieberegister 160 die
gespeicherten Bits eine Stelle nach links (d. h. auf das MSB zu).
Demzufolge wird das Bit, das gerade von dem zweiten Schieberegister 180 ausgegeben
wurde (d. h. das MSB des zweiten Schieberegisters 180)
als das LSB des ersten Schieberegisters 160 gespeichert.
Das zweite Schieberegister 180 verschiebt ebenfalls die
gespeicherten Bits um eine Stelle nach links. Dann ist kein Bit
der Eingangs-Bitsequenz mehr als das LSB des zweiten Schieberegisters 180 gespeichert.
Das von dem Logikoperationsabschnitt 170 ausgegebene Faltungscodebit
X1 wird folglich als das LSB des zweiten Schieberegisters 180 gespeichert.
-
Wie
zu sehen ist, wird, wenn das erste und zweite Schieberegister 160 und 180 ihre
Bits um eine Stelle zu einer Zeit verschieben, das Bit, das als
das MSB des zweiten Schieberegisters 180 gespeichert wurde,
das nächste
Mal in das erste Schieberegister 160 eingegeben. Als Reaktion
führt der
Logikoperationsabschnitt 170 die Faltungscodierung auf
diesem Eingangsbit durch, um das nächste Faltungscodebit X1 zu
erzeugen und auszugeben. Aus diese Weise wird jedes Mal, wenn das
erste und zweite Schieberegister 160 und 180 ihre
Bits um eine Stelle verschieben, der Logikoperationsabschnitt 170 ein
Faltungscodebit X1 nach dem anderen ausgeben, indem danach ähnliche
Operationen wiederholend durchgeführt werden.
-
Sobald
das zweite Schieberegister 180 die Eingangs-Bitsequenz
durch Verschieben der Bits eine Anzahl von Malen ausgeschoben hat, überträgt das zweite
Schieberegister 180 das gespeicherte Faltungscodebit X1
zu dem Datenspeicher 110, um das Bit X1 an der Adresse P1
des Speichers 110 speichern zu lassen. Das zweite Schieberegister 180 gewinnt
dann erneut ein anderes Datenwort beginnend bei der durch den Adresszähler 120 angegebenen
Adresse P0 aus dem Datenspeicher 110 zurück und speichert
das Datenwort. Indem diese Operationen zahlreiche Male durchgeführt werden,
erzeugt die in 3 gezeigte Codiervorrichtung 100 aufeinanderfolgend
Faltungscodebits X1 eines nach dem anderen.
-
In
der vorangehenden illustrativen Ausführung wird jedes von dem Logikoperationsabschnitt 170 ausgegebene
Faltungscodebit X1 einmal in dem zweiten Schieberegister 180 gespeichert.
Alternativ kann stattdesen jedes Codebit X1 direkt im Datenspeicher 110 gespeichert
werden. In diesem Fall wird das Faltungscodebit X1 an der Adresse
P1 im Datenspeicher 110, wie durch den Adresszähler 120 angegeben,
gespeichert. Wenn z. B. ein im Datenspeicher 110 gespeichertes
Datenwort aus 16 Bits besteht, werden Nullbits als die höchst- bis
fünfzehntköchstwertigen
Bits jedes Datenwortes gespeichert, und das erzeugte Faltungscodebit
X1 wird als das LSB davon gespeichert. Nach dem Speichern des Faltungscodebits
X1 im Datenspeicher 110 erhöht der Adresszähler 120 die
Adresse P1 um eins.
-
Um
das in 2 gezeigte Faltungscodebit X2 zu erzeugen, speichert
das Eingangsregister 140 die Koeffizienten von jeweiligen
Termen des Generatorpolynoms 1 + D3, das
zum Erzeugen des Faltungscodebits X1 benutzt wird, in dieser Reihenfolge
(d. h. "1", "0", "0" und "1"), sodass der Koeffizient des Terms
höchster
Ordnung als das MSB davon gespeichert wird. In anderer Hinsicht
arbeitet die Codiervorrichtung 100 in der gleichen Weise
wie beim Erzeugen des Faltungscodebits X1.
-
Aus
diese Weise kann die in 3 gezeigte Codiervorrichtung 100 ein
Faltungscodebit entsprechend jedem beliebigen Generatorpolynom durch Speichern
des Koeffizienten in dem Eingangsregister 140 erzeugen.
-
Wie
oben beschrieben, gibt die Codiervorrichtung 100 die in
dem Eingangsregister 140 gespeicherten Bits und die zugehörigen Bits
des ersten Schieberegisters 160 in die UND-Gatter 171 bis 174 ein,
um so die Bitauswahl zu verwirklichen. Aus diesem Grund ist, verglichen
mit dem in 9 gezeigten Prozessor, wo die
Einheitskonstruktionsblöcke 783 kaskadiert
sind, die erfinderische Codiervorrichtung mit einer reduzierten
Schaltungsgröße implementierbar.
Außerdem
sind die Exklusiv-ODER-Gatter 176 bis 178 miteinander
parallel geschaltet, und die UND-Gatter 171 bis 174 sind
ebenfalls parallel geschaltet. Die Anzahl benötigter Gatterstufen kann folglich
verringert und die Verarabeitung beschleunigt werden.
-
AUSFÜHRUNG 2
-
4 ist
ein Blockschaltbild, das eine Grundkonfiguration einer Codiervorrichtung
zum Erzeugen einer Turbo-Codesequenz zeigt. Wie in 4 gezeigt,
enthält
die Vorrichtung rekursive, systematische Faltungs-(RSC)Codierer 401 und 402 sowie
einen Verschachteler 403.
-
In
der in 4 gezeigten Vorrichtung führt der RSC-Codierer 401 eine
rekursive, systematische Codierung auf einer Eingangs-Bitsequenz
i durch, um ein RSC-Codebit X21 zu erzeugen und auszugeben. Der
Verschachteler 403 verschachtelt, oder ordnet um, die in
der Eingangs-Bitsequenz i enthaltenen Bits und gibt die verschachtelte
Bitsequenz an den RSC-Codierer 402 aus.
Als Reaktion führt
der RSC-Codierer 402 eine rekursive, systematische Codierung
auf der eingegebenen verschachtelten Bitsequenz durch, um ein weiteres
RSC-Codebit X22
zu erzeugen. Danach werden die Eingangs-Bitsequenz i und die RSC-Codebits
X21 und X22 der Dezimierung und Multiplexierung unterzogen, deren
Ergebnis als eine Turbo-Codesequenz ausgegeben wird.
-
5 ist
ein Blockschaltbid, das eine begriffliche Konfiguration des RSC-Codierers 401 veranschaulicht.
In 5 stellt jedes Quadrat ein Bit eines Schieberegisters
dar. Das RSC-Codebit X21 kann z. B. entsprechend einem Generatorpolynom
(1 + D2 + D3)/(1
+ D + D3) erzeugt werden. Der andere RSC-Codierer 402 weist
ebenfalls eine ähnliche
Konfiguration auf, die ihrem zugehörigen Generatorpolynom entspricht.
Wie aus 5 zu sehen ist, enthalten die
RSC-Codierer 401 und 402 je eine Rückkopplungsschleife.
-
6 ist
ein Schaltbild, das eine Codiervorrichtung nach einer zweiten Ausführung der
vorliegenden Erfindung zeigt. Im folgenden Beispiel wird beschrieben,
wie die in 6 gezeigte Vorrichtung das in 5 gezeigte
RSC-Codebit X21 erzeugt. Wie in 6 gezeigt,
enthält
die Vorrichtung einen Datenspeicher 610, einen Adresszähler 620,
ein erstes und zweites Eingangsregister 641 und 640,
ein erstes und zweites Schieberegister 660 und 680 und
einen ersten und zweiten logischen Operationsabschnitt 690 und 670.
-
Der
Datenspeicher 610, der Adresszähler 620. das erste
und zweite Schieberegister 660 und 680 und der
zweite logische Operationsabschnitt 670 sind die gleichen
wie die Gegenstücke 110, 120, 160, 180 und 170 der
in 3 gezeigten Vorrichtung 100, und die
Beschreibung derselben wird hier weggelassen.
-
Das
heißt,
die in 6 gezeigte Codievorrichtung enthält nicht
nur Komponenten, die normalerweise für einen Universal-DSP bereitgestellt
werden, sondern auch den ersten und zweiten logischen Operationsabschnitt 690 und 670.
-
Das
zweite Eingangsregister 640 speichert die Koeffizienten
von jeweiligen Termen eines Generatorpolynoms 1 + D2 +
D3 in dieser Reihenfolge (d. h. "1", "0", "1" und "1"),
sodass der Koeffizient des Terms höchster Ordnung als das MSB
gespeichert wird. Das erste Eingangsregister 641 speichert
die Koeffizienten von jeweiligen Termen eines anderen Generatorpolynoms
1 + D + D3 in dieser Reihenfolge außer dem
Term 0-ter Ordnung (d. h. "1", "0" und "1"), sodass
der Koeffizient des Terms höchster
Ordnung als das MSB davon gespeichert wird. In einem Polynom, das
eine Rückkopplung
darstellt, ist der Koeffizient des Terms 0-ter Ordnung immer eins.
Der Koeffizient dieses Terms wird folglich nicht in das erste Eingangsregister 641 eingegeben.
-
Der
Datenspeicher 610 liest ein Datenwort beginnend bei der
Adresse P0, wie durch den Adresszähler 620 angegeben,
aus und gibt es aus, sodass das Datenwort durch den Datenbus 630 übertragen
und dann im zweiten Schieberegister 680 gespeichert wird.
Dann erhöht
der Adresszähler 620 die Adresse
P0 um eins.
-
Das
zweite Schieberegister 680 gibt das MSB der darin gespeicherten
Daten aus. Das MSB wird dann in den ersten logischen Operationsabschnitt 690 eingegeben.
Das heißt,
das MSB ist das Bit, das momentan in den ersten logischen Operationsabschnitt 690 eingegeben
wird. Der erste logische Operationsabschnitt 690 gibt ein
Bit, das das Ergebnis der Operation darstellt, an das erste Schieberegister 660 aus.
Das erste Schieberegister 660 kann drei Bits speichern,
die in den vorherigen drei Zyklen eingegeben wurden, bevor das Ergebnis
der Operation eingegeben wird. Das erste Schieberegister 660 speichert
zu Initialisierungszwecken Nullbits in all diesen drei Bitpositionen.
-
Wie
in 6 gezeigt, enthält der erste logische Operationsabschnitt 690 UND-Gatter 691, 692 und 693 sowie
Exklusiv-ODER-Gatter 696, 697 und 698.
Der erste logische Operationsabschnitt 690 erlangt logische
Produkte der drei in dem ersten Schieberegister 660 gespeicherten
Bits und der im ersten Eingangsregister 641 gespeicherten
zugehörigen Bits.
Als Nächstes
gewinnt der erste logische Operationsabschnitt 690 eine
exklusive logische Summe der erhaltenen logischen Produkte und des
momentan in den ersten logischen Operationsabschnitt 690 eingegebenen
Bits und gibt dann die Summe an das erste Schieberegister 660 aus.
-
Das
heißt,
das UND-Gatter 691 empfängt
die MSBs des ersten Eingangsregisters 641 und des ersten
Schieberegisters 660, gewinnt ein logisches Produkt dieser
Bits und gibt das Produkt an das Exklusiv-ODER-Gatter 696 aus.
Das UND-Gatter 692 empfängt
die zweithöchstwertigen
Bits des ersten Eingangsregisters 641 und des ersten Schieberegisters 660,
ge winnt ein logisches Produkt dieser Bits und gibt das Ergebnis
an das Exklusiv-ODER-Gatter 696 aus. Das UND-Gatter 693 empfängt die
dritthöchstwertigen
Bits des ersten Eingangsregisters 641 und des ersten Schieberegisters 660,
gewinnt ein logisches Produkt dieser Bits und gibt dann das Produkt
an das Exklusiv-ODER-Gatter 697 aus.
-
Das
Exklusiv-ODER-Gatter 696 gewinnt eine exklusive logische
Summe der zwei Eingänge
und gibt dann die gewonnene Summe an das Exklusiv-ODER-Gatter 697 aus.
In der gleichen Weise gewinnt das Exklusiv-ODER-Gatter 697 eine
exklusive logische Summe der zwei Eingänge und gibt dann die gewonnene
Summe an das Exklusiv-ODER-Gaater 698 aus. Das MSB des
zweiten Schieberegisters 680 wird in das Exklusiv-ODER-Gatter 698 eingegeben.
Das Exklusiv-ODER-Gatter 698 gewinnt eine exklusive logische
Summe der zwei Eingänge
und gibt dann die gewonnene Summe an das erste Schieberegister 660 und
den zweiten logischen Operationsabschnitt 670 aus.
-
Der
zweite logische Operationsabschnitt 670 ist der gleiche
wie das in 3 gezeigte Gegenstück, und
seine Beschreibung wird hierin weggelassen. Der Ausgang des zweiten
logischen Operationsabschnitts 670 ist ein RSC-Codebit
X21 der Eingangsdaten. Der zweite logische Operationsabschnitt 670 gibt
das RSC-Codebit X21 an das zweite Schieberegister 680 aus.
-
Wenn
das RSC-Codebit X21 gewonnen ist, schiebt das erste Schieberegister 660 die
Bits eine Stelle nach links. Demzufolge wird das Bit, das gerade
von dem ersten logischen Operationsabschnitt 690 ausgegeben
wurde, als das LSB des ersten Schieberegisters 660 gespeichert.
Das zweite Schieberegister 680 schiebt ebenfalls die Bits
eine Stelle nach links. Dann wird kein Bit der Eingangs-Bitsequenz
mehr als das LSB des zweiten Schieberegisters 680 gespeichert.
Das von dem zweiten logischen Operationsabschnitt 670 ausgegebene
RSC-Codebit X21 wird folglich als das LSB des zweiten Schieberegisters 680 gespeichert.
-
Wie
zu sehen ist, wird, wenn das erste und zweite Schieberegister 660 und 680 die
Bits um eine Stelle zu einer Zeit verschieben, das Bit, das als
das MSB des zweiten Schieberegisters 680 gespeichert wurde,
das nächste
Mal in den ersten logischen Operationsabschnitt 690 eingegeben.
Als Reaktion führen
der erste und zweite logische Operationsabschnitt 690 und 670 die
rekursive, systematische Faltungscodierung auf diesem Eingabebit
durch, um das nächste
RSC-Codebit X21 zu erzeugen und auszugeben. Auf diese Weise wird
jedes Mal, wenn das erste und zweite Schieberegister 660 und 680 die Bits
um eine Stelle verschieben, der zweite logische Operationsabschnitt 670 ein
RSC-Codebit X21 nach dem anderen ausgeben, indem danach ähnliche Operationen
wiederholend durchgeführt
werden.
-
Sobald
das zweite Schieberegister 680 die Eingangs-Bitsequenz
durch wiederholtes Schieben der Bits ausgeschoben hat, überträgt das zweite Schieberegister 680 das
gespeicherte RSC-Codebit X1 zu dem Datenspeicher 610, um
das Bit X21 an der Adresse P1 im Speicher 610 speichern
zu lassen. Dann gewinnt das zweite Schieberegister 680 erneut ein
anderes Datenwort beginnend bei der durch den Adresszähler 620 angegebenen
Adresse P0 aus dem Datenspeicher 610 zurück und speichert
das Datenwort. Indem diese Operationen zahlreiche Male durchgeführt werden,
erzeugt die in 6 gezeigte Codiervorrichtung
aufeinanderfolgend RSC-Codebits X21 eines nach dem anderen.
-
In
der vorangehenden illustrativen Ausführung wird das von dem zweiten
logischen Operationsabschnitt 670 ausgegebene RSC-Codebit
X21 einmal in dem zweiten Schieberegister 680 gespeichert.
Alternativ kann stattdessen das Codebit X21 direkt im Datenspeicher 610 gespeichert
werden. In diesem Fall arbeitet die in 6 gezeigte
Codiervorrichtung in der gleichen Weise wie das in 3 gezeigte
Gegenstück.
-
Um
das RSC-Codebit X22 zu erzeugen, speichern das erste und zweite
Eingangsregister 641 und 640 die jeweiligen Koeffizienten
eines Generatorpolynoms, das dem Codebit X22 entspricht. In anderer
Hinsicht arbeitet die Codiervorrichtung in der gleichen Weise wie
beim Erzeugen des RSC-Codebits X21.
-
Auf
diese Weise kann die in 6 gezeigte Codiervorrichtung
ein RSC-Codebit entsprechend jedem beliebigen Generatorpolynom durch
Speichern der Koeffizienten des Polynoms in dem ersten und zweiten
Eingangsregister 641 und 640 erzeugen.
-
Wie
oben beschrieben, gibt die in 6 gezeigte
Codiervorrichtung die in dem Eingangsregister 641 gespeicherten
Bits und die zugehörigen
Bits des ersten Schieberegisters 660 in die UND-Gatter 691 bis 693 ein,
um so die Bitauswahl zu verwirklichen. Aus diesem ist, verglichen
mit dem in 9 gezeigten, bekannten Prozessor,
wo die Einheitskonstruktionsblöcke 783 kaskadiert
werden, die erfinderische Codiervorrichtung mit einer verringerten
Schaltungsgröße implementierbar.
Außerdem
sind die Exklusiv-ODER-Gatter 696 bis 698 miteinander
parallel geschaltet, und die UND-Gatter 691 bis 693 sind ebenfalls
parallel geschaltet. Die Anzahl benötigter Gatterstufen kann folglich
verringert und die Verarbeitung beschleunigt werden.
-
7 ist
ein Blockschaltbild, das schematisch einen DSP zeigt, der die in 3 gezeigte
Codiervorrichtung 100 enthält. Wie in 7 gezeigt, enthält der DSP
die Codiervorrichtung 100, und der DSP und die Codiervorrichtung 100 sind
gemeinsam auf dem gleichen Halbleiter substrat integriert, um einen
einzigen Chip zu bilden. Der in 7 gezeigte DSP
verschiebt die Bits des ersten und zweiten Schieberegisters 160 und 180 um
eine Stelle zu einer Zeit durch Ausführen einer einzigen Anweisung.
Der DSP kann folglich ein Faltungscodebit erzeugen, indem er nur
einen einzigen Verarbeitungsschritt durchführt.
-
Alternativ
kann der in 7 gezeigte DSP die in 6 gezeigte
Codiervorrichtung anstelle der Codiervorrichtung 100 enthalten.
In diesem Fall verschiebt der in 7 gezeigte
DSP die Bits des ersten und zweiten Schieberegisters 660 und 680 um
eine Stelle zu einer Zeit durch Ausführen einer einzigen Anweisung.
Der DSP kann folglich ein RSC-Codebit erzeugen, indem er nur einen
einzigen Verarbeitungsschritt durchführt.
-
Um
ein Programm durch einen bekannten DSP, der normale Befehle verwendet,
zur Ausführung
zu bringen, bedarf es gewöhnlich
mehrerer Verarbeitungsschritte, um ein Eingangsbit zu codieren und
ein Codebit zu gewinnen. Im Gegensatz dazu benötigt die in 3 oder 6 gezeigte
Codiervorrichtung dafür
nur einen Verarbeitungsschritt und kann die Codierung viel schneller
durchführen.
-
In
den vorangehenden Ausführungen
ist die vorliegende Erfindung mit einigen spezifizischen Generatorpolynomen
beschrieben worden. Man sollte jedoch beachten, dass verschiedene
Generatorpolynome anders als diese für diese Ausführungen
ebenfall verwendet werden können.
-
Wie
aus der vorangehenden Beschreibung ersichtlich ist, macht es die
vorliegende Erfindung möglich,
eine Faltungscodesequenz in einer verringerten Zahl von Verarbeitungsschritten
unter Verwendung einer Schaltung mit einer reduzierten Größe zu erzeugen.