-
Technisches
Gebiet
-
Die
vorliegende Erfindung betrifft ein Modul zum Erzeugen von Telekommunikationsschaltungen,
welche eingerichtet sind, Faltungscodes zu decodieren, ein Verfahren
zum Erzeugen dieses Schaltungstyps sowie eine zugehörige Schaltung.
-
Insbesondere
betrifft die vorliegende Erfindung ein Modul zum Erzeugen integrierter
Decoderschaltkreise, die zur Verwendung in Vorrichtungen zum Decodieren
verketteter Faltungscodes (Turbo-Codes) eingerichtet sind, das Verfahren
zum Definieren der Eigenschaften dieses Schaltungstyps und die Decodierschaltkreise,
welche mit diesem Modul erzielt werden können.
-
Stand der
Technik
-
Integrierte
Schaltungen können
mittels höherer
Beschreibungssprachen wie VHDL (Very High Speed Integrated Circuit
Hardware Description Language) entwickelt bzw. designed werden.
-
Mittels
dieser Designtechnik ist es unter Verwendung von geeigneten Schaltungscompilern
(silicon compilers) möglich,
eine integrierte Komponente mit Eigenschaften zu erzielen, die unter
Verwendung der höheren
Sprache, beispielsweise die VDHL-Beschreibung, spezifiziert werden.
-
Es
ist bekannt, daß die
VHDL-Beschreibungen aus vorbestimmten Funktionen, wie diejenigen,
welche sich auf eine Decoderschaltung beziehen, Modulbibliotheken
bilden, die als IP- oder
Intellectual Property-Bibliotheken bezeichnet werden, wodurch hochkomplexe
elektronische Vorrichtungen wie SOC(System On Chip)-Systeme erstellt
werden können.
-
Ein
herausragendes Merkmal der Module, die einer IP-Bibliothek angehören (IP-Module
oder Module), ist, daß diese
für das
Design verschiedener elektronischer Vorrichtungen verwendet werden
können,
da ihre Schnittstellenparameter mit anderen Modulen oder elektronischen
Schaltungen vor der Schaltungskompilierung (silicon compilation) "spezialisiert" werden können, wodurch
eine Zuweisung spezifischer Werte zu Variablen oder Parametern stattfinden
kann, die während
des Designschritts bestimmt wurden.
-
Gemäß der Aufgabe
der vorliegenden Erfindung wird auf IP-Module für Telekommunikation und entsprechende
Decoderschaltungen Bezug genommen, die in Vorrichtungen zum Decodieren
verketteter Faltungscodes (Turbo-Decoding) verwendet werden können.
-
Hinsichtlich
der Übertragung
von digitalen Informationen (Daten) ist bekannt, daß die Fehler,
welche beim Übertragen
von Daten auf einen Kanal eingeführt
werden, es notwendig machen, die Daten durch Hinzufügen von
Redundanzbits vor der Übertragung
zu codieren, und diese nach deren Empfang zu decodieren, indem die
Redundanzbits entfernt werden. Im wesentlichen ist es durch Codieren
und Decodieren aufgrund des Vorliegens der Redundanzbits möglich, die
ursprünglichen
Daten mit einem gewissen Grad an Bestimmtheit oder Wahrscheinlichkeit
zu rekonstruieren, wodurch Fehler toleriert werden können, die
durch den zugehörigen Übertragungskanal
eingeführt
werden.
-
Es
können
eine Vielzahl bekannter Techniken verwenden werden, um Daten zu
codieren oder zu decodieren.
-
Zum
Zwecke der vorliegenden Erfindung wird die Faltungscodierung und
-decodierungstechnik betrachtet und insbesondere der verkettete
Typ, d.h. Turbo-Codierung und -Decodierung.
-
Es
sind Faltungscodierungsvorrichtungen bekannt, die eingerichtet sind,
vorbestimmte Algorithmen zu verwenden, um die Information, welche
der Codierung vorangeht, d. h. a priori-Information, bei der Codierung von Daten
zu berücksichtigen.
Es ist ferner bekannt, daß der
Umfang, in dem die Codierung verläßlich ist oder, mit anderen
Worten, der Umfang, innerhalb dessen die korrekt Wiederherstellung
von Daten gewährleistet
ist, direkt proportional zu der Menge an a priori-Information ist,
die der Codieralgorithmus berücksichtigt.
Die Komplexität
des Algorithmus, der bei der Codierung und Decodierung verwendet
wird, steigt zusammen mit der Menge an a priori-Information, die
von diesem berücksichtigt
wird.
-
Um
die Ergebnisse, welche bei der Codierung erhalten werden können, zu
verbessern, und um die Komplexität
der Coder- und Decoderschaltungen und -vorrichtungen zu verringern,
die für
jeden gegebenen Grad an Leistungsfähigkeit (performance) erforderlich
sind, wurden die sogenannten Turbo-Coding- und -Decoding-Vorrichtungen
eingeführt.
-
Unabhängig davon,
ob Turbo-Vorrichtungen zur Codierung oder Decodierung verwendet
werden, umfassen diese eine Vielzahl von Faltungsschaltungen, die
in verketteter Weise mittels einer oder mehrerer Schaltungen (die
als Interleaver-Schaltungen bekannt sind) miteinander verbunden
sind, welche geeignet sind, die Reihenfolge der Bits zu ändern oder
diese zu verzögern.
-
Im
allgemeinen bringt die Struktur bzw. Architektur von Turbocoding-Vorrichtungen
(Turbo-Codierer) die
Verwendung einer Vielzahl von Faltungscodierungsschaltungen mit
sich, welche mittels eines seriellen oder parallelen Layouts derart
miteinander verbunden sind, daß die
Codierung parallel oder seriell ausgeführt wird.
-
Beispielsweise
umfaßt
eine Faltungscodierungsschaltung (Coderschaltung) 10 (1)
für Turbocoder einen
Dateneingang (u) und zwei Ausgänge,
wovon einer für
Eingangsdaten (u) vorgesehen ist, wenn die Schaltung als systematisch
bezeichnet wird, und einer für
Codierinformation (Code) (c) vorgesehen ist.
-
Ferner
umfaßt
die Schaltung ein Schieberegister 12 mit einer in einer
Bitanzahl gemessenen Länge (v-1),
wobei diese in dem Beispiel drei Bits beträgt, d.h. Bit 21, Bit 22 bzw.
Bit 23. Dieses Schieberegister kann Daten (u) am Eingang empfangen
und den Code (c) gemäß des Typs
der internen Verbindung ausgeben, die in der Codierschaltung 10 verwendet
wird.
-
Die
Hauptparameter, die die Codierschaltung 10 kennzeichnen,
sind:
- k, der die Anzahl an Bits bezeichnet, die sequentiell
pro Zeiteinheit eingeführt
werden. In dem Beispiel und im allgemeinen wird mit k = 1 codiert.
- k*(v-1), der die Größe des Schieberegisters 12 bezeichnet,
das zur Codierung verwendet wird, und
- n, der die Anzahl an Bits bezeichnet, die von dem Codierer ausgegeben
werden.
-
Im
allgemeinen empfängt
ein Coder k Bits gleichzeitig, die in das Schiebregister 12 mit
k*(v-1) Positionen
eingegeben werden, wobei an dem Coderausgang n Ausgangsbits für jede k
Eingangsbits vorgesehen werden (n ≥ k).
Jedes Ausgangsbit wird über
eine Binär-
oder Modulo-2-Summe einer bestimmten Anzahl an Bits in dem Schieberegister 12 berechnet;
natürlicherweise
hängt diese
Summe von der internen Verbindungslogik des Coders ab und sieht
die sogenannten Generatorpolynome vor, die im weiteren beschrieben
detailliert sind. In dem Beispiel wird der Wert u des Eingangsbits
zu dem Wert eines Bits addiert, der über eine Rückkopplungsverbindung (Weg)
vorgesehen wird. Der so erhaltene Wert wird daraufhin zu dem Wert
des ersten Bits 21 des Schieberegisters 12 addiert, und
das Ergebnis wird zu dem Wert des dritten Bits 23 des Schieberegisters 12 addiert;
ferner werden in dem Rückkopplungsweg
das dritte Bit 23 und das zweite Bit 22 des Schieberegisters 12 zu
dem Eingangsbit addiert.
-
Es
ist bekannt, daß Codierschaltungen 10 als
rekursiv bezeichnet werden, wenn Rückkopplungsverbindungen vorliegen.
-
Auf
diese Weise hängt
jedes codierte Bit (c) nicht nur von den zu jedem Zeitpunkt empfangenen
k Bits ab, sondern auch von den k*(v-1) Bits, die vorher empfangen
wurden.
-
Gemäß dem Stand
der Technik wird der Begriff "Codewort" verwendet, um den
Satz von n Bits zu bezeichnen, die an dem Coderausgang bereitgestellt
werden. In dem Beispiel gibt es zwei Codewörter, d.h. die Daten, die an
dem Eingang (u) vorgesehen werden, und der dazugehörige Code
(c). Der Wert k/n wird als "Coderate" bezeichnet.
-
Im
allgemeinen sind die Leistungsmerkmale bzw. Leistungskennlinien
der Coderschaltungen basierend auf den oben angegebenen Parametern
definiert. Insbesondere umfassen diese Merkmale:
- – v: Die
Längeneinschränkung (constraint
length) der Decoderschaltung oder des Codes, die natürlicherweise
von der Länge
des Schieberegisters abhängt,
- – Nst: Anzahl der Zustände, die durch den Wert 2 k(v-1) gegeben ist, und der der Anzahl möglicher
Binärkombinationen
in dem Schieberegister entspricht,
- – gc: Generatorpolynom für c, welches die Verbindungen
zum Erzeugen des Codes c angibt, und
- – gf: Generatorpolynom für fm, welches die Verbindungen
zum Erzeugen der Rückkopplungsinformation
f definiert.
-
Es
ist bekannt, daß das
Generatorpolynom eindeutig durch ein binäres Worts gekennzeichnet ist,
welches aus v Bits besteht. Jedes Bit des Binärworts entspricht einer Position
der Eingangsdaten oder des Schieberegisters und die Eingangsdaten
oder die in dem Schieberegister gespeicherten Daten nehmen in der
jeweiligen Position bei der Berechnung der Rückkopplung des Ausgangscodes
teil, wenn, abhängig
von der Konvention, das Bit in dem Generatorpolynom den Wert 1 aufweist.
Wenn das Bit den Wert 0 hat, nimmt es nicht teil.
-
In
dem in 1 dargestellten Beispiel ist v gleich 4 Bit, das
Polynom gc ist, wie es für den Fachmann bereits ersichtlich
ist, 1101 (13 DEZ), während
gf gleich 1011 (11 DEZ) ist.
-
Die
Codierung wird im allgemeinen mit einem sogenannten Trellis-Diagramm
dargestellt.
-
Für die Coderschaltung
in 1 zeigt beispielsweise die 2 das entsprechende
Trellis-Diagramm 20,
in dem alle möglichen Änderungen
in der Coderschaltung bezogen auf die Zeit für zahlreiche Eingangswerte
u dargestellt sind, und die Schaltungszustände sind graphisch mittels
Verbindungslinien dargestellt, die Kanten genannt werden. Das Trellis-Diagramm 20 zeigt
an den Kanten ferner Ausgangsdaten, d.h. u bzw. c.
-
Die
obenstehenden Betrachtungen hinsichtlich der Leistungsmerkmale von
Coderschaltungen für
Turbovorrichtungen treffen ebenfalls auch für die Leistungsmerkmale von
Decoderschaltungen für
Turbovorrichtungen (Turbodecoder) zu, wenn gegeben ist, daß Decoderschaltungen
Merkmale aufweisen, die äquivalent zu
denen der Coderschaltungen sind, um zu erreichen, daß diese
codierte Information korrekt decodieren können, wobei dies für den Fachmann
leicht ersichtlich ist.
-
Die
Eingangsinformation für
Decoderschaltungen besteht aus Bits zur systematischen Informationsschätzung (u)
und aus Bits zur Redundanzinformations-Schätzung (c), die gemäß dem Stand
der Technik an dem Ausgang des Übertragungskanals
nach einem Demodulationsschritt vorgesehen werden.
-
Der
von Turbovorrichtungen verwendete Codiertyp, beispielsweise parallel
oder seriell, ist ein weiterer Parameter, der bei der Implementierung
von sowohl Turbodecodern als auch von den diesen enthaltenden Decoderschaltungen
zu berücksichtigen
ist.
-
Ein
technischer Nachteil dieser Systeme nach dem Stand der Technik zum
Design von Turbodecodern ist, daß diese keine zur Verfügung stehenden
IP-Module von Decoderschaltungen sind, die unabhängig von verschiedenen Merkmalen
verwendet werden können.
-
Insbesondere
sind bekannte IP-Module zum Erzeugen von Faltungscode-Decoderschaltungen
auf die Leistungsmerkmale beschränkt,
und es gibt daher eine Eins-zu-Eins-Entsprechung zwischen den IP-Modulen und
den Decoderschaltungen, welche einen vorgegebenen Satz an Leistungsmerkmalen
aufweisen.
-
Ein
weiterer Nachteil von Systemen nach dem Stand der Technik ist, daß keine
bereitstehenden IP-Module für
Decoderschaltungen vorgesehen sind, die unabhängig von Änderungen des Codiermodus verwendet
werden können.
-
Dies
bedeutet, daß die
IP-Module von Decoderschaltungen, die in Turbodecodern verwendet
werden können,
abhängig
von dem anzuwendenden Turbo-Codiermodus verschieden sind.
-
Ferner
sind bekannte IP-Module für
Decoderschaltungen auf die Verwendung von spezifischen Methoden
und Technologien beschränkt.
-
Im
wesentlichen sind bekannte IP-Module von Decoderschaltungen hinsichtlich
der Leistungsmerkmale der Struktur bzw. Architektur nicht parametrisierbar,
und die Decoder machen es aufgrund dieser Beschränkung erforderlich, Designentscheidungen
sehr früh
in dem Prozeß zu
treffen. Wenn statt dessen diese Module parametrisierbar und flexibel
wären,
könnten
diese Entscheidungen zu späteren
Entwicklungsstufen getroffen werden. Dies würde deutliche Vorteile bringen,
insbesondere in Fällen,
in denen es notwendig ist, die Merkmale der zu verwendenden Algorithmen
oder der Architektur zu ändern.
-
Ein
weiterer technischer Nachteil, der insbesondere in Silizium oder
mittels programmierbarer Logik implementierte Decoderschaltungen
betrifft, liegt darin, daß diese
Schaltungen nur ein Generatorpolynom verwenden können, sobald sie implementiert
sind, oder mit anderen Wor ten, daß diese nur einen Decoderfunktionstyp
zum Wiederherstellen ursprünglicher
Daten verwenden können.
-
Ein
solcher Schaltungstyp ist beispielsweise in: "First prototyping based on generic and
synthesizable VHDL models ..." von
Deltoso C. et al., RAPID SYSTEM PROTOTYPING, Proceedings 1996, beschrieben, wobei
in dieser Druckschrift ein Verfahren zum Erzeugen von Viterbi-Decodern
unter Verwendung von parametrisch konfigurierbaren VHDL-Beschreibungen offenbart
ist.
-
Gemäß Deltoso
C. et al., kann jede Decoderschaltung eine einzelne Viterbi-Decodierfunktion
handhaben, auch wenn diese mittels einer Vielzahl von Polynomen
implementiert ist.
-
"Scalable architectures
for high speed channel decoding" von
Dawid H. et al., VLSI SIGNAL PROCESSING, VII, 1994, WORKSHOP ON
LA JOLLA, CA, USA, offenbart einen SOVA(Soft Output Viterbi Algorithm)-Schaltkreis,
der mittelt einer VHDL-Beschreibung hinsichtlich der Parameter konfigurierbar
ist. Die Lehre von Dawid H. et al. weist im wesentlichen die gleichen
Beschränkungen
wie die Druckschrift von Deltoso C. et al. auf.
-
"Efficient scalable
architectures for Viterbi decoders" von Bitterlich S. et al., APPLICATION-SPECIFIC ARRAY
PROCESSORS, Proceedings, 1993, offenbart eine Viterbi-Decoderschaltung,
die mittels einer VHDL-Beschreibung parameterbezogen konfigurierbar
ist, welche die gleichen Beschränkungen
wie die Druckschriften von Deltoso C. et al. und Dawid H. et al.
aufweist.
-
"VLSI Architecture
for Turbo Codes" von
Masera G. et al., IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION
(VLSI) SYSTEMS, Band 7, Nr. 3, vom SEPTEMBER 1999 offenbart eine
Studie zur Implementierung von zahlreichen Alternativen der Struktur
von Turbodecodern und einem speziellen Decoder, der ein serielles
Verkettungsschema implementiert und einen Codiergewinn von mehr
als 7 dB aufweist.
-
Dies
stellt eine sehr wesentliche Beschränkung von Systemen des Stands
der Technik dar, insbesondere im Fall von Turbovorrichtungen, die
serielle Decodierung verwenden.
-
Bei
der Decodierung im seriellen Modus ist, wie bereits bekannt, eine
zweite Decoderschaltung oder -stufe durch Decodieren zu anderen
Zeiten belegt als die erste Schaltung oder Stufe, wenn von der ersten
Stufe stammende Information zur Decodierung verwendet werden muß. Es ist
daher grundsätzlich
möglich,
in Turbodecodern eine Einzel-Decoderschaltung zu verwenden, die
Ansätze
des seriellen Decodierens verwendet.
-
Mit
Systemen nach dem Stand der Technik ist jedoch die Verwendung einer
einzelnen Decoderschaltung nur möglich,
wenn die Decoderstufen des Turbodecoders ein einzelnes Paar Generatorpolynome
verwendet.
-
Wenn
zwei oder mehr Decodierstufen verschiedene Generatorpolynome verwenden,
bedeutet diese Einschränkung,
daß serielle
Turbodecoder eine entsprechende Anzahl an Decoderschaltungen umfassen müssen, wodurch
die Komplexität
der Vorrichtung und die zugehörigen
Entwicklungskosten deutlich steigen, wenn jede einzelne Decoderschaltung
im allgemeinen eine große
Anzahl an äquivalenten
Gattern, beispielsweise ungefähr
150000, enthält.
-
Diese
Beschränkung
könnte überwunden
werden, wenn es Decoderschaltungen für Turbovorrichtungen geben
würde,
die eine Vielzahl von Generatorpolynomen handhaben könnten.
-
Offenbarung
der Erfindung
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein IP-Modul zum Erzeugen
von Decoderschaltungen mit verschiedenen Leistungsmerkmalen bzw.
Leistungskennlinien vorzusehen, die derart eingerichtet sind, daß sie in
Decodervorrichtungen verwendet werden können, die verschiedene Decodermodi
und verschiedene Technologien anwenden.
-
Eine
weitere Aufgabe der vorliegenden Erfindung ist es, ein Verfahren
zum Erzeugen von Decodermodulen mit den oben genannten Leistungsmerkmalen
vorzusehen.
-
Eine
weitere Aufgabe der vorliegenden Erfindung ist es, eine Decoderschaltung
für Turbovorrichtungen
vorzusehen, die eingerichtet ist, eine Vielzahl von Generatorpolynomen
selektiv zu handhaben.
-
Gemäß dieser
Aufgaben sieht die vorliegende Erfindung ein Modul zur Erzeugung
von Decoderschaltungen nach Anspruch 1, ein Verfahren zum Erzeugen
solcher Schaltungen nach Anspruch 7 und eine Schaltung zur Decodierung
von Faltungscodes nach Anspruch 9 vor.
-
Kurzbeschreibung
der Zeichnungen
-
Die
oben genannten und weiteren Merkmale der vorliegenden Erfindung
sind besser aus der folgenden Beschreibung einer bevorzugten Ausführung der
Erfindung verständlich,
die lediglich beispielhaft ist und nicht beschränkend sein soll.
-
1 zeigt
ein Schaltungsdiagramm einer systematischen und rekursiven Faltungscodierschaltung;
-
2 zeigt
ein Trellis-Diagramm für
die in 1 dargestellt Schaltung;
-
3 zeigt
ein Flußdiagramm
zum erfindungsgemäßen Erzeugen
des Moduls und der Schaltung;
-
4 zeigt
ein allgemeines Eingangs-/Ausgangs-Diagramm für das erfindungsgemäße Modul;
-
5 zeigt
die allgemeine Struktur des Moduls und der Schaltung, die mittels
des in 3 dargestellten Flußdiagramms erzielt werden kann;
-
6 zeigt
die Struktur des Speicherelements für das in 5 dargestellt
Modul und die dort dargestellte Schaltung; und
-
7 zeigt
die Struktur des Leistungsmerkmal-Berechnungselements für das Modul
und die Schaltung, die in 5 dargestellt
sind.
-
Beste Art und Weise zur
Ausführung
der Erfindung
-
Im
weiteren ist eine bevorzugte Ausführung der Erfindung bezugnehmend
auf 3 beschrieben, die das Flußdiagramm zum Entwerfen bzw.
Designen eines Moduls zum Erzeugen von Faltungscodier- und -decodierschaltungen
gemäß der vorliegenden
Erfindung zeigt.
-
In
einer ersten Stufe, die mit 100 bezeichnet ist, werden
die allgemeinen Spezifikationen für die Decoderschaltung definiert.
Insbesondere werden zahlreiche Codierverfahren zusammen mit möglichen
Strukturen bzw. Architekturen für
die entsprechenden Decoderschaltungen untersucht.
-
Unter
Bezugnahme auf die Faltungscodierung von Turbocodern liegt eine
der ersten Beschränkungen für Turbodecoder
und Schaltungen, die diese enthalten, darin, daß die Decodieroperationen für Faltungscodes mehrfach
iteriert werden, wobei die Anzahl der Wiederholungen ein Vielfaches
der Anzahl der Faltungscodierschaltungen ist, die in den Turbocodern
enthalten sind.
-
Dies
bedeutet, daß die
Ausgabe einer Decoderschaltung die Eingabe einer anderen derartigen
Schaltung ist. Dies bedeutet wiederum, daß es notwendig ist, Soft-Input
Soft-Output (SISO)-Decoderschaltungen
zu verwenden, die es, wie bekannt ist, ermöglichen, die Decoderzyklen
fortlaufend zu iterieren, bis der Grad an Verläßlichkeit erreicht ist, der
von den Spezifikationen erfordert wird.
-
Daher
ist, basierend auf den Codierleistungsmerkmalen, die erste Spezifikationsanforderung
für Decoderschaltungs-Generatormodule
gemäß der vorliegenden
Erfindung, daß diese
Module SISO-Schaltungen erzeugen müssen, in denen die Eingangs-
und Ausgangsinformationen aus wahrscheinlichkeitstheoretischen Schätzungen übertragener
Information besteht.
-
Naturgemäß führt die
Tatsache, daß die
Module zum Erzeugen von SISO-Schaltungen implementiert werden müssen, zu
einer zweiten Beschränkung
und damit dazu, daß die
Decodierung einen Algorithmus des SISO-Typs verwenden muß, beispielsweise
den, der in dem Dokument "Soft-Input
Soft-Output modules for the construction and distributed iterative
decoding of code networks" von
Benedetto, Divsalar, Montorsi and Pollara Department of Electronics,
Politecnico di Torino, November 1996 beschrieben ist.
-
-
Die
bekannten Algorithmen 1] und 2] betreffen die Trellis-Diagrammkanten
und nicht die Zustandspaare, und sind dadurch vollständig allgemein
gehalten. Daher kann der Algorithmus mit Codes arbeiten, die nicht notwendigerweise
binär sind,
und mit Trellis, die mehrere Übergänge aufweisen.
Jedoch hat der Algorithmus 1] und 2] einen Hauptnachteil, der darin
besteht, daß er
einer strengen Implementierungsbeschränkung unterworfen ist, welche
erfordert, daß der
Algorithmus bis zum Ende der Datenübertragung warten muß, bevor
die Decodierung beginnen kann.
-
Gemäß den Aufgaben
der Erfindung wurde daher die Verwendung des sogenannten additiven
SISO-Algorithmus (additiver Algorithmus mit gleitendem Fenster)
bevorzugt, der gleichfalls bekannt ist.
-
Dieser
Algorithmus, der sich von dem ursprünglichen SISO-Algorithmus 1]
und 2] ableitet, ermöglicht es,
mit einer konstanten Menge an gespeicherten Daten zu arbeiten (der
daher von der Übertragungslänge unabhängig ist),
und Wahrscheinlichkeitsverteilungen an seinem Ausgang zurückzugeben,
die mit einer festen Verzögerung
D, die Latenzzeit genannt wird, beaufschlagt sind.
-
Die
additive Version des Algorithmus wurde gewählt, da dieser mehr Additions-
als Multiplikationsoperationen während
der Berechnung ausführt,
und daher von den bekannten Schwierigkeiten nicht betroffen ist, die
sich durch die Implementierung von Multiplikationsoperationen auf
Hardwareebene ergeben. Die endgültige
Version des Algorithmus ergibt sich wie folgt:
Es soll gelten:
wobei α und β, die als Zweigmetrik (branch
metric) bezeichnet werden, die Gewichtungen der vorangehenden und
nachfolgenden Bits wiedergeben, indem sie die Wahrscheinlichkeit
eines gegebenen Bits zu einem Zeitpunkt t definieren.
-
Der
Algorithmus zur Berechnung der Ausgangswahrscheinlichkeit ergibt
sich zu:
wobei
gilt:
wobei:
- – die
kursiven Großbuchstaben
(beispielsweise U, C, S, E) Wahrscheinlichkeitsvariablen bezeichnen;
- – kursive
Kleinbuchstaben (beispielsweise u, c, s, e) einzelne Auftrittsereignisse
der Wahrscheinlichkeitsvariablen angeben, die oben genannt sind;
- – der
Großbuchstabe
P(A) die Wahrscheinlichkeit eines Ereignisses A angibt;
- – der
Index k einen diskreten Zeitpunkt beschreibt, der aus der Menge
der Zeitpunkte K ist;
- – ein
kursiver Kleinbuchstabe mit tiefgestellten und hochgestellten Zeichen
(beispielsweise uk1k2) eine Zeitfolge von Variablen beginnend mit
dem Zeitpunkt k1 bis zu dem Zeitpunkt k2 bezeichnet;
- – die
fettgedruckten Kleinbuchstaben (u, c, s, e) die vollständige Sequenz
der zugehörigen
Zufallsvariablen bezeichnen;
- – runde
Klammern "()" eine Zeitsequenz
bezeichnen; und
- – geschweifte
Klammern "{}" eine endliche Elementenmenge
bezeichnen.
-
Hinsichtlich
des Trellis-Diagramms wird hingegen die folgende Notation verwendet:
- – eine
generische Kante wird mit der Variablen e bezeichnet;
- – der
Startzustand ist SS(e);
- – der
Endzustand ist SE(e);
- – das
Eingangssymbol ist u(e);
- – das
Ausgangssymbol ist c(e).
-
Hinsichtlich
der α-Wahrscheinlichkeit
oder Metrik-Initialisierung ändert
sich nichts, jedoch werden β-Metriken
als gleich und konstant für
alle Zustände
initialisiert, da die Iteration mit einem bekannten Zustand starten
muß.
-
-
Das
Problem der Verarbeitungskomplexität wurde daher von der Notwendigkeit,
Multiplikationsoperationen durchzuführen, dahin verschoben, daß der Logarithmus
einer exponentiellen Summe berechnet werden muß, der mit der folgenden Beziehung
angenähert
werden kann:
-
-
Es
ist bekannt, daß diese
Vereinfachung zu einer Verschlechterung der Leistungsfähigkeit
bzw. Performance führt,
wenn ein hohes Signal/Rausch-Verhältnis vorliegt. Wenn daher
eine hohe Leistungsfähigkeit erreicht
werden soll, kann der folgende rekursive Algorithmus adaptiert werden,
der die exakte Lösung
in der Gleichung 5] angibt, die im folgenden dargestellt ist:
wobei
zwei Operationen ausgeführt
werden, um (a) mit dem Algorithmus 5] auszuwerten: Ermitteln des
Maximums zweier Zahlen, wobei dies relativ einfach zu implementieren
ist, und Berechnen von log[1 + exp(–|Δ|)].
-
Die
Implementierung dieser zweiten Operation in Gleichung 5] kann mittels
einer Look-up-Tabelle
ausgeführt
werden.
-
Diese
Version des Algorithmus ohne dieses Merkmal und mit dem genäherten Maximalwert
wird MAX_log_MAP genannt, wobei die Version, welche den Korrekturfaktor
anpaßt,
log_MAP genannt wird. In jedem Fall sind sowohl der Algorithmus
als auch die Implementierungsnäherungen
gut bekannt.
-
Daher
liegt eine zweite Spezifikationsanforderung für Decoderschaltung-Generatormodule
gemäß der vorliegenden
Erfindung darin, daß ein
Decoderalgorithmus zur Implementierung in den zugehörigen Schaltkreis
identifiziert werden muß.
-
Ein
weiteres Spezifikationserfordernis, welches im Rahmen der Erzeugung
des erfindungsgemäßen Moduls
definiert werden muß,
liegt in der Kennzeichnung einer der möglichen Strukturen bzw. Architekturen für das Modul.
-
Eine
im Spezifikationsschritt 100 ausgeführt Analyse gibt an, daß die möglichen
Strukturen, welche den SISO-Algorithmus implementieren, in zwei
Gruppen unterteilt werden können:
Strukturen mit Speicher und Pipelinestrukturen des Parallelregistertyps.
-
Die
erstgenannten sind, wie bekannt ist, die beste Wahl, wenn keine
Geschwindigkeitsbeschränkungen
bestehen, da diese wesentlich weniger Ressourcen belegen.
-
Wem
die striktesten Einschränkungen
die Geschwindigkeit betreffen, ist die einzige Möglichkeit zum Erreichen hoher
Decodiergeschwindigkeiten die Verwendung von Strukturen des parallelen
Registertyps, welche die Pipelinetechnik anwenden.
-
Offensichtlich
hängt die
Wahl der zu implementierenden Struktur in wesentlichem Maße von der
Anwendung ab, für
die Module vorgesehen sind.
-
Es
erwies sich bei der Berücksichtigung
der striktesten Beschränkungen
als vorteilhaft, die Lösung
mit einer Pipelinestruktur mit parallelem Register als ein drittes
Spezifikationserfordernis aufzunehmen.
-
In
jedem Fall können,
wie es leicht aus der Beschreibung der vorliegenden Ausführungen
der Erfindung ersichtlich ist, Teile des Moduls zur Erzeugung von
Faltungscode-Decoderschaltungen
gemäß der vorliegenden
Erfindung ferner verwendet werden, um ein Modell zu implementieren,
welches Decoderschaltungen erzeugt, die eine Struktur mit Speichern
aufweisen.
-
Wenn
der Schritt 100 abgeschlossen ist, werden gemäß der vorliegenden
Erfindung die Spezifikationen identifiziert, die benötigt werden,
um die zu erzeugenden Schaltungstypen (beispielsweise SISO), den
zu implementierenden Algorithmus (beispielsweise den additiven Gleitfensteralgorithmus)
und die allgemeine Struktur (beispielsweise die parallele Pipelinestruktur)
zu definieren.
-
In
der zweiten Stufe, die mit 200 bezeichnet ist, werden der
Grad an Programmierfähigkeit
und die interne Struktur des Decodermoduls oder des IP-Moduls 50 und
die entsprechenden Schaltungen definiert.
-
Die 4 zeigt
die Schnittstellensignale des IP-Moduls 50 und deren Bedeutung,
wodurch die Schaltungs-Leistungsmerkmale betont werden, die sich
aus der Benutzung der Signale ergeben. Diese Leistungsmerkmale sind
eng mit den Parametern des Moduls verbunden, wel che ein effektives
Werkzeug zum Implementieren von Schaltungen sind, die einen breiten
Bereich von Anwendungen abdecken sollen.
-
Gemäß des Beispiels
einer bevorzugten Ausführung
sind die SISO-Eingangsdaten (INPUT0–3) die in vier Worten dargestellte
Wahrscheinlichkeiten, welche den möglichen Kombinationen von zwei
Bits entsprechen, d.h., Abzweigungsmetriken, die das von dem Kanal
empfangene Signal darstellen.
-
Daher
wird angenommen, daß ein
Modul sowie ein entsprechender Schaltkreis extern zu dem IP-Modul 50 vorgesehen
ist, der ausgehend von Wahrscheinlichkeitsverhältnissen, die von dem Demodulatorausgang
empfangen werden, Wort-Wahrscheinlichkeiten ermitteln kann.
-
Auf
der anderen Seite besteht die Ausgabe aus berechneten Wahrscheinlichkeiten,
zusammen mit den Wahrscheinlichkeiten des Informationsbits (u) und
des Redundanzbits (c).
-
Die
Eingangs-/Ausgangsdaten werden in dem IP-Modul 50 in parametrisierter
Form dahingehend implementiert, daß diese vor der Schaltungs-Kompilierung
(silicon compilation) spezialisiert werden können, und als B_METRIC bzw.
OUT_METRIC für
den Eingang bzw. Ausgang vorgesehen sind.
-
Mittels
dieser Parameter ist es möglich,
die Anzahl an Bits zu ermitteln, die verwendet werden, um Eingangs-
und Ausgangsdatengrößen, d.
h. INPUT 0–3
und Output_u bzw. Output_c, darzustellen.
-
Zur
Validierung der Eingangsdaten sieht das Protokoll ein aktives Signal
mit hohem Pegel DVALID_I vor.
-
Das
IP-Modul 50 ist ferner mit START_FRAME_I- und END_FRAME_I-Signalen
vorgesehen, welche das Modul synchronisieren können, indem das erste und das
letzte Bit des Datenpakets identifiziert wird. Diese Technik gewährleistet
den Betrieb des Moduls ohne die Länge des übertragenen Datenpakets zu
diesen Parametern hinzufügen
zu müssen.
Informationen hinsichtlich des Beginns und des Endes jedes Pakets
ist in jedem Fall interessant, da der Gleitfensteralgorithmus an
den Beginn-, Betriebs- und End-Bearbeitungsstufen verschiedene Initialisierungen
für die
Metriken mit sich bringt.
-
Am
Ausgang sind ein Datenvalidierungssignal (DVALID_0) und Identifizierungssignale
für das
erste und das letzte Bit in dem Paket (START_FRAME_0 und END_FRAME_0)
vorgesehen, die von dem SISO-Modul 50 in der darauffolgenden
Iteration benötigt
werden.
-
Das
mit EXP bezeichnete Signal ermöglicht
es, Metriken in einer exponentiellen Darstellung wiederzugeben,
wobei jedoch der Exponent in allen Metriken in dem Paket fest ist.
Diese Technik wird tatsächlich
oft bei dem Design von Turbodecodern verwendet. Tatsächlich liegt
ein kritischer Aspekt dieser Problematiken darin, wie diejenigen
Metriken behandelt werden, die zum Anstieg neigen und zum Überlauf
der berechneten Amplituden bzw. Größen führen. Um dies zu vermeiden,
liegt ein oft verwendeter Ansatz darin, alle Metriken zu teilen,
wodurch deren Mantisse verringert wird, und wodurch Information
für die
Operation zurückbleibt,
die unter Verwendung eines allgemeinen Exponenten ausgeführt wurde.
Diese Information wird benötigt,
wenn der Algorithmus mit einer logarithmischen Korrektur implementiert
ist, da der Korrekturfaktor von dem Wert des Exponenten beeinflußt wird.
Daher ist es möglich,
das Problem des Metrik-Überlaufs
zu vermeiden, ohne die Berechnungen zu überlasten, die ausgeführt werden
müßten, wenn
jede einzelne Metrik mit einem Exponenten dargestellt wäre.
-
Das
Modul 50 wird ferner mit einem Steuersignal GEN_CTRL versorgt,
mit dem es möglich
ist, unter vier verschiedenen für
die Codegeneratorpolynome vorgesehenen Konfigurationen (die hinsichtlich
der Parameter eingestellt werden können) auszuwählen, und
so Schaltungen zu erzeugen, die bis zu vier verschiedene Polynompaare
handhaben können.
-
Insbesondere
ist es mittels des GEN_CTRL-Steuersignals möglich, Schaltungen zu erzeugen,
die bis zu vier verschiedene Polynompaare handhaben können.
-
Da
die Decoderschaltung hochgradig komplex ist, liegt ein wichtiges
wertsteigerndes Merkmal darin, daß diese als eine gemeinsame
(shared) Ressource verwendet werden kann.
-
Im
Unterschied zum Stand der Technik, in dem die Möglichkeit der Implementierung
von Decodern für verknüpfte Faltungscodes
unter Verwendung einer einzelnen SISO-Schaltung auf den Fall der
symmetrischen Übertragungen
beschränkt
ist, wobei die Generatorpolynome der verknüpften Codes nicht veränderlich
sind, ermöglicht
es das erfindungsgemäße Modul 50,
SISO-Schaltungen zu erzeugen, die die Ressourcenverwendung optimieren,
und die zwei Decoderbearbeitungsstufen unter Verwendung einer einzelnen
Schaltung zu implementieren, die im weiteren detailliert beschrieben
ist.
-
Die
Fähigkeit,
mit verschiedenen Generatorpolynomen zu kommunizieren, ermöglicht es
tatsächlich, die
Beschränkungen
der Systeme nach dem Stand der Technik zu lösen und zu gewährleisten,
daß auch asymmetrische Übertragungen
mit einer einzelnen SISO-Schaltung gehandhabt werden können.
-
Die
Parametrierbarkeit des Moduls 50 ergibt sich aus den Fortschritten,
die beim Erzielen von Schaltungen, welche in einer Vielzahl von
Anwendungen arbeiten, erreicht wurden.
-
Dies
wird erreicht, indem nicht nur Parameter für Eingangs-/Ausgangsdaten definiert
werden, sondern auch durch die Verwendung von Konfigurationsparametern
innerhalb des Moduls 50, die, ähnlich wie Eingangs-/Ausgangsparameter,
auch zum Zeitpunkt der Schaltungskompilierung und der -synthese
spezialisiert werden können.
-
Wie
im weiteren detailliert beschrieben ist, werden die Konfigurationsparameter
des internen Moduls vor der Synthese evaluiert und gewährleisten,
daß, ausgehend
von einer einzelnen Beschreibung, verschiedene Schaltungen erzeugt
werden können.
-
Die
folgende Beschreibung nimmt Bezug auf Tabelle 1, die alle Parameter
von Modul 50 darstellt, welche spezialisiert werden können. Diese
umfassen:
- 1 – Codierparameter
- 2 – Decodierparameter
- 3 – Schnittstellenparameter
und
- 4 – Struktur-
bzw. Architekturparameter.
-
Die
Codierparameter charakterisieren den Übertragungscode. Die Anzahl
von Codierzuständen
wird mit dem Parameter N_STATES eingestellt, der dem Wert von 2 k(v-1) entspricht.
-
Dieser
Parameter hat starke Auswirkungen auf die interne Struktur, da er
eine führende
Rolle bei der Ermittlung der aktuellen Ressourcen spielt, die in
dem Modul verwendet werden.
-
Sobald
die Anzahl an Zuständen
ermittelt wurde und k = 1 angenommen wurde, sind die einzigen Parameter,
durch die das Trellis-Diagramm 20 (2), welches
wiederum die durchzuführende
Codierung darstellt, eindeutig definiert werden, die Generatorpolynome
gc und gf. Diese
Parameter unterscheiden sich von allen anderen Parametern dahingehend,
daß diese
eine Bearbeitungsstufe umfassen, welche der Codekompilierung vorangeht.
Diese Parameter werden tatsächlich
von einer Prozedur verarbeitet, welche vor der Kompilierung stattfindet
und zu einem Verbund bzw. Paket führt, in dem die Vektoren zur
Trellis-Charakterisierung gespeichert werden. Da es möglich ist,
bis zu vier Paare verschiedener Polynome zu handhaben, werden acht verschiedene
Parameter verwendet.
-
Die
Decodierparameter charakterisieren die Decodierung und betreffen
als solche nur den Decoder, unabhängig von dem ausgeführten Codiertyp.
-
Die
als DEPTH und MAC_log_MAP bezeichneten Parameter charakterisieren
den ausgewählten
Algorithmus, wobei OUTPUTS von dem gewählten Strukturtyp, der für den Decodierer
als ganzen ausgewählt wurde,
beeinflußt
wird und im weiteren beschrieben ist.
- – Entscheidungstiefe
(Decision DEPTH) bestimmt die Fensterbreite, in der die Iterationen
stattfinden. Der Einfluß dieses
Parameters auf die Struktur der SISO-Schaltung ist leicht aus der
Metrik-Speichereinheit ersichtlich; wobei, wie zu erwarten ist,
die zu speichernde Anzahl an Dateneinträgen mit der Breite dieses Fensters
steigt.
- – MAX_log_MAP
wählt die
implementierte Einheit, wodurch es möglich ist, zu bestimmen, ob
der Korrekturfaktor vernachlässigt
wird, oder nicht; und
- – OUTPUTS
ist ein Parameter, der die Schaltungsflächenbelegung gemäß den Spezifikationen
für das
SISO-Modul optimiert, wenn vorausgesetzt werden kann, daß bestimmte
Turbodecoderkonfigurationen nicht beide von der SISO-Schaltung erzeugten
Ausgaben benötigen.
In solchen Fällen
ist es möglich,
den entsprechenden Ausgang zu wählen,
und daher die Verwendung von Logikressourcen zu vermeiden, die die nicht
betrachtete Größe erzeugen.
-
Die
Schnittstellenparameter, die bereits in Verbindung mit Eingangs-/Ausgangssignalen
beschrieben wurden, betreffen die Wiedergabe der Eingangs- und Ausgangsparameter
des SISO-Moduls.
-
Ihr
Vorliegen ist aus zwei Gründen
notwendig: Der erste Grund ist mit der Decodierqualität verknüpft, da
diese Größen die
interne Arithmetik und somit die Qualität der Ergebnisse definieren.
Der zweite Grund ist mit der Notwendigkeit verknüpft, zu gewährleisten, daß sowohl
das Modul als auch seine Schnittstellen notwendig sind, und gewährleistet
somit, daß das
Modul in komplexe Systeme ohne Schwierigkeiten eingefügt werden
kann.
-
Insbesondere
gibt der Parameter B_METRIC (4) die Menge
an Bits an, welche zum Darstellen der Eingangswahrscheinlichkeiten
verwendet werden, während
OUT_METRIC die am Ausgang vorgenommene Abtrennung (cutoff) darstellt.
-
Strukturparameter
haben für
jeden Decodertyp Einfluß auf
die interne Struktur, da diese die Charakteristika der internen
Struktur hinsichtlich Geschwindigkeit und Flächenbelegung ändern.
-
Die
Auswirkung der Strukturparameter ist mit der betreffenden spezifischen
Anwendung verknüpft.
-
Einige
Systeme geben möglicherweise
keine bestimmten Anforderungen für
die Verarbeitungsgeschwindigkeit des Datenflusses vor. In einem
solchen System ist es wichtig, die Komplexität reduzieren zu können, indem
Techniken zur gemeinsamen Nutzung von Ressourcen (resource sharing)
angepaßt
werden.
-
Der
als SPEED bezeichnete Parameter ist ein Parameter, der den größten Einfluß bei der
Definition der synthetisierten Struktur hat.
-
-
Für den Fachmann
ist es ersichtlich, daß das
Modul 50 mit den so definierten Parametern ermöglicht, Faltungsdecoderschaltungen
für Turbovorrichtungen
mit extremer Flexibilität
zu erzeugen. Insbesondere verbessert das Modul 50 aufgrund
der oben beschriebenen Parameter die bislang zur Erzeugung von Decoderschaltungen
verwendeten Module.
-
Die
Identifikation dieser Parameter und deren Implementierung ist nicht
trivial und ist eines der bestimmenden Merkmale der vorliegenden
Erfindung.
-
Ferner
sind die Schnittstellenparameter ein innovatives Merkmal für den Decoderschaltkreis,
der mittels des IP-Moduls 50 erzeugt werden kann.
-
Die
Struktur des SISO-Moduls 50 umfaßt ein Untermodul bzw. Sub-Modul,
welches eine Speichereinheit (Speichermodul) 51 (5)
wiedergibt, welches die von der Berechnung der Wahrscheinlichkeit
betroffenen Metriken speichern kann, ein Untermodul bzw. Sub-Modul
für Iterationen
(STEP-Modul) 52, welches vorwärts- und rückwärtsgerichtete Iterationen ausführen kann,
und ein Untermodul bzw. Sub-Modul zum Berechnen von Ausgaben (OCU-Modul) 55,
welches ausgehend von den Werten der Pfad- und Abzweigmetriken berechnen
kann.
-
Im
weiteren folgt eine detaillierte Beschreibung jedes Untermoduls.
-
Die
beschriebene Struktur ist schematisch in 5 dargestellt,
welche wiedergibt, daß der
Teil, welcher Iterationen ausführt,
aus einer Vielzahl von elementaren STEP-Modulen 520 besteht,
die jeweils einen Schritt der Rekursion ausführen, wie im weiteren detailliert
dargestellt ist.
-
Gemäß eines
Beispiels der vorliegenden Erfindung mit einer parallelen Pipelinestruktur
wird das Speichermodul 51 mittels eines Schieberegisters
implementiert. Die Registergröße hängt stark
von der Pipelinetiefe der Module ab, die die einzelnen Iterationsschritte
berechnen, und ist aufgrund der DEPTH-Parameter parametrisierbar.
-
Hinsichtlich
der Register für
den i-ten Rekursionsschritt ist die für die Vorwärtsiteration (alpha Metriken) benötigte Tiefe
gleich der Pipelinetiefe minus eins, da der nächste Schritt die Abzweigungsmetriken
für den kommenden
Schritt braucht. Für
die Rückwärtsiteration
ist andererseits die erforderliche Tiefe diejenige der Pipeline
plus eins, da in diesem Fall die Metriken für den vorangehenden Schritt
an die STEP-Module weitergeleitet werden müssen. Um die Ressourcenbelegung
zu optimieren, werden die Register, welche für die Metriken zur Vorwärtsiteration
notwendig sind, und diejenigen, die für die Rückwärtsiteration notwendig sind,
in einem einzelnen Schieberegister zusammengeführt, dessen Amplitude dem Vierfachen
des Werts von B_METRIC entspricht.
-
Dieser
Aspekt ist besser unter Bezugnahme auf die 6 verständlich,
die ein vereinfachtes Beispiel betrachtet, in der die Pipelinetiefe
gleich zwei ist und das Iterationsfenster gleich vier ist.
-
In
diesem Fall ist die Tiefe des Schieberegisters 510 gleich
zwölf,
wenn 2 + 1 Schieberegister in jedem Schritt verwendet werden und
vier Schritte notwendig sind.
-
Am
Ausgang werden Signale erzeugt, die an das Modul weitergeleitet
werden, welches die Pfadmetriken berechnet, und werden für die Vorwärtsiteration
als ALPHA BRANCH bezeichnet, und für die Rückwärtsiteration als BETA BRANCH
bezeichnet.
-
Zu
dem Schieberegister 510, welches Abzweigungsmetriken enthält, wird
ein 1-Bit-Schieberegister 511 addiert,
welches Information über
das erste und letzte Bit in dem Rahmen (der in dem Protokoll beginnend mit
den "Start"- und "Ende"-Signalen gespeichert
ist) enthält,
um zu ermöglichen,
daß die
Pfadmetriken am Beginn und am Ende des Rahmens korrekt initialisiert
werden.
-
Jedes
elementare STEP-Modul (Elementarmodul) 520 bezieht sich
auf die Berechnung von einem Vorwärts- und Rückwärtsrekursionsschritt. Der Teil
des ausgeführten
Algorithmus wird in den unten stehenden Formeln 6] und 7] zusammengefaßt, der
sich einfach aus den Formeln 3] und 4] ableiten läßt, indem
die in Formel 5] dargestellte Entwicklung angewendet wird.
-
Im
wesentlichen wird die Pfadmetrik für jeden Zustand berechnet,
beginnend mit dem letzten Zustand für die Vorwärtsrekursion und dem darauffolgenden
Zustand" für die Rückwärtsrekursion.
-
Da
die Metriken für
den betrachteten Pfad mittels des Speichermoduls (das Schieberegister) 51 ausgewählt werden,
beziehen sich die Eingaben des Elementarmoduls 520 für Beta-Pfadmetriken auf
den darauffolgenden Schritt und für Alpha-Pfadmetriken auf den
vorangehenden Schritt.
-
Es
ist zu beachten, daß das
STEP-Modul 52 und seine Elemente 520 erfindungsgemäß auch vollständig in
einer Struktur mit Speichern wiederverwendet werden könnten, wenn
die Aufgaben dieser Module in einem Schritt der Vorwärts- und
Rückwärtsrekursionen
des Algorithmus einfach ausgeführt
werden können,
wodurch dieser von der Ausführung
von Rekursionszyklen entlastet wird.
-
-
Jedoch
wäre es
notwendig, die Anzahl an zu instanziierenden Pipelineregistern in
die Parameter der speichergestützten
Lösung
einzufügen,
wenn die Pipelinetechnik bei den speichergestützten Lösungen vollkommen nutzlos ist.
-
Dies
könnte
natürlich
verwirklicht werden, wenn ein Optimierungsbefehl verwendet wird,
der für
das Syntheseprogramm kennzeichnend ist, welches eine parametrierbare
Anzahl an Registern verteilt, die in der Nachfolge des Schritts
(step tail) instanziiert werden, so daß der kombinatorische Pfad
vollständig
geteilt ist.
-
Daher
hängen
das beschriebene STEP-Modul 52 und seine elementaren Komponenten 520 nicht
von der Struktur ab, unabhängig
davon, ob es eine Struktur mit parallelen Pipelines oder eine Struktur
mit Speichern vorsieht.
-
Die
Struktur des elementaren STEP-Moduls 520 wird im Detail
bezugnehmend auf einen generischen Abschnitt des Trellis-Diagramms 20 (2, 5 und 7)
zur Codierung in einer UMTS-Anwendung beschrieben; es ist zu bemerken,
daß das
Diagramm in gleiche schmetterlingsartige (butterfly-type) Unterteilungen 201 unterteilt
werden kann, so daß In formationen
hinsichtlich nur zwei Metriken notwendig sind, um die zwei Zustände zu berechnen.
-
Auf
Basis dieser Analyse wurde das Elementarmodul 520 weiter
in schmetterlingsartige Elementarmodule 521 und Elementarmodule 522 mit
geteilten Metriken unterteilt.
-
Die
zu berechnenden Metriken, welche die Schmetterlingsstruktur 201 betreffen,
und die Pfadmetriken, welche die Eingangszustände betreffen, müssen an
die Schmetterlingsstruktur-Module 521 geleitet
werden.
-
Für die i-te
Schmetterlingsstruktur 521 ist es notwendig, die Metriken
für die
Zustände
2*i und 2*i + 1 weiterzuleiten, wenn der Block die Alpha-Metriken
(Vorwärtsrekursion)
berechnet, wohingegen die Metriken für die Zustände i und i + N_STATES/2 weitergeleitet
werden müssen,
wenn die Beta-Metriken berechnet werden.
-
Die
Aufgabe der Auswahl der richtigen Abzweigungsmetriken an den zahlreichen
Schmetterlingsstruktur-Modulen 521 wurde an die Module 522 mit
geteilten Metriken 522 delegiert, die, ausgehend von dem
Verbund, der automatisch von den Trellis erzeugt wird und der die
Trellis-Vektoren enthält,
die Schmetterlingsstruktur-Einheiten identifiziert, mit denen diese
verknüpft
sind, und die Metriken für
die richtigen Worte verteilt.
-
An
dem Ausgang jedes Elementarmoduls 520 wird eine Registeranordnung
instanziiert. Diese Register speichern die Ausgaben der Schmetterlingsstruktur-Module 521 in
den korrekten Positionen, wo diese von dem nächsten elementaren STEP-Modul übernommen
werden können.
-
Die
gemäß diesem
Beispiel erhaltene Struktur einer bevorzugten Ausführung ist
in der 7 dargestellt, welche das Trellis-Diagramm 20 (7)
zum Codieren in einer UMTS-Anwendung
betrifft.
-
Es
ist zu bemerken, daß eine
solche Unterteilung (break down) des STEP-Moduls 52 (2, 5 und 7)
es ermöglicht,
die Parametrisierbarkeit aller in dem Trellis 20 dargestellten
Merkmale zu erreichen.
-
In
Anwendungen, in denen Geschwindigkeit kein limitierender Faktor
ist, kann sinnvollerweise angenommen werden, daß Schmetterlingsstruktur-Module
gemeinsam genutzt werden können,
um die Funktionen der elementaren STEP-Module 520 in einigen
Taktzyklen auszuführen.
-
Insbesondere
werden vier Konfiguration für
dieses charakteristische Element der vorliegenden Erfindung in Betracht
gezogen; diese Konfigurationen implementieren 8, 4, 2 bzw. 1 Schmetterlingsstruktur-Module 521.
Offensichtlich werden weitere Module 522 mit geteilten
Metriken zum Umschalten von Metriken für diese Konfigurationen hinzugefügt, zusammen
mit den Steuermodulen für
die zahlreichen Stufen.
-
Ferner
muß das
Speichermodul 51 gewährleisten,
daß Information
für eine
Zeit zurückgehalten
wird, die eine Taktperiode übersteigt.
Dadurch ist es notwendig, ein weiteres Steuermodul in der nächst höher gelegenen
Hierarchieebene zu verwenden, um die STEP-Module 520 und
das Speichermodul 51 zu synchronisieren.
-
Es
ist zu bemerken, daß ein
derartiger Ansatz durch die speziellen Maßnahmen ermöglicht wird, die in der VHDL-Beschreibung
verwendet werden. Durch die Verwendung von "Erzeugungs"-Zyklen ist es tatsächlich möglich, verschiedene Strukturkonfigurationen
mit einem hohen Grad an Parametrisierbarkeit zu handhaben, und gleichzeitig
eine Beschreibung zu produzieren, die synthetisiert und optimiert
werden kann.
-
Der
Vollständigkeit
halber ist zu erwähnen,
daß die
Funktion der Schmetterlingsstruktur-Module 521 darin liegt, die
Pfadmetriken aus den Metriken des vorherigen Schritts und den Abzweigungsmetriken
zu berechnen. In der schematischen Darstellung der Schmetterlingsstruktur-Module 521 werden
Takt-, Reset- und Protokollsignale vernachlässigt.
-
Die
auszuführenden
Operationen sind durch die folgenden Ausdrücke 8] und 9] gekennzeichnet:
OUT_UP
= max[IN_UP + PRB_A,IN_DN + PRB_B] + corr
OUT_DN = max[IN_UP
+ PRB_B,IN_UP + PRB_A] + corr
wobei OUT_UP und OUT_DN die Ausgangs-Pfadmetriken
wiedergeben, welche aus IN_UP-IN_DN
(Eingangspfadmetriken) und PRB_A-PRB_B (Eingangsabzweigungsmetriken)
berechnet werden, und welche einen Korrekturfaktor wiedergeben.
-
Dieser
Korrekturfaktor wird von einem getrennten Modul berechnet, welches
einfach eine Look-up-Tabelle implementiert. Diese Lösung wurde
angepaßt,
um die Algorithmusauswahl an den Benutzer mittels des Max_log_MAP-Parameters
zu delegieren. Dieses Modul instanziiert sich in weitere Untermodule,
welche die elementaren Funktionen zum Durchführen zweier Additionsoperationen,
deren Vergleich und Auswahl der größten Summe ausführt.
-
Diese
ACS(Add Compare Select; Addieren-Vergleichen-Auswählen)-Module,
die in der Figur nicht dargestellt sind, sind die grundlegenden
Berechnungsblöcke
für das
Decodermodul 50, und sind die Berechnungseinheiten, die
in dem gesamten SISO verteilt sind.
-
Die
Split_metrics-Module (Module mit geteilten Metriken) 522 wurden
insbesondere dafür
entwickelt, um die parametrische Beschreibung des STEP-Moduls 52 zu
erlauben.
-
Tatsächlich liegt
die größte Schwierigkeit
beim Handhaben verschiedener Generatorpolynome mit parametrierbaren
Eigenschaften bei der Auswahl der korrekten Abzweigungsmetriken.
-
Das
Split_metrics-Modul 522 beginnt mit einem Parameter, der
in der Beschreibung weitergeleitet wird, und erzeugt während der
Synthese programmierbare Multiplexer auf der Grundlage der Vektorwerte,
welche aus den Trellis-Parametern erzeugt werden. Diese Vektoren
werden zum Zeitpunkt der Erzeugung als Verbund bzw. Paket (package)
vorgesehen.
-
Die
Entwicklung dieses Moduls hat es ermöglicht, eine wichtige wertvolle
Funktion vorzusehen, da die mehreren Parameterpaare als Parameter
weitergeleitet werden können.
Das gen_ctrl-Signal, welches die zu verwendenden Generatorpolynome
handhabt, hat direkte Auswirkungen auf die split_metric-Module,
wodurch eine Schaltungslogik erzeugt wird, die hauptsächlich aus
Multiplexern besteht, wobei die Zwischenverbindungen je nach Notwendigkeit
geschaltet werden. Es wurde erkannt, daß das Syntheseprogramm bei
der Verarbeitung der Bereitstellung der Zwischenverbindungen keine
zusätzliche
Logik jeglicher Art instanziiert, wenn alle Vektorenpaare gleich
sind.
-
Das
OCU-Modul 55 in diesem Beispiel einer bevorzugten Ausführung ist
das Modul, welches Ausgaben auf der Basis von Iterationsergebnissen
berechnet, welche von den elementaren STEP-Modulen 520 und den
Eingangsdaten geliefert werden.
-
Dieses
Modul führt
die Funktionen gemäß den folgenden
Formeln 10] und 11] durch:
-
-
Wie
ersichtlich ist, unterscheiden sich diese Formeln nur leicht von
den Formeln 6] und 7]. Daher ist das OCU-Modul 55 durch
die Tatsache gekennzeichnet, daß seine
Struktur hinsichtlich aller Aspekte derjenigen des elementaren STEP-Moduls 520 gleicht.
-
Sobald
die Stufe 200 abgeschlossen wurde und der Grad an Programmierbarkeit
sowie die interne Struktur des IP-Moduls 50 definiert wurden,
wird eine dritte Stufe 300 ausgeführt. In dieser dritten Stufe,
welche ein weiteres kennzeichnendes Merkmal der vorliegenden Erfindung
ist, werden die einzelnen Untermodule, welche das IP-Modul 50 bilden,
entwickelt und beschrieben, beispielsweise unter Verwendung der
VHDL-Sprache.
-
Zum
Zwecke der Vollständigkeit
ist der Quellcode der wesentlichen Merkmale, der zum Implementieren
der vorliegenden Erfindung verwendet wird, im folgenden angegeben.
-
Insbesondere
werden die sogenannten "Entities" und "strukturellen Beschreibungen" (Begriffe, deren Bedeutung
denjenigen bekannt ist, welche mit den Formalismen zur Beschreibung
von Modulen in VHDL-Sprache vertraut sind) für die wesentlichen Merkmale
vorgesehen.
-
VHDL-CODE
FÜR SISO-MODUL
50 VHDL-Code
(Entities und strukturelle Beschreibung)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Wenn
die VHDL-Quellsprache-Erzeugungsstufe 300 abgeschlossen
ist, wird eine vierte Bearbeitungsstufe 400 ausgeführt, in
der die Module, welche die IP-Coding Module 50 bilden,
mit einzelnen Parametergruppen (Parameterszenarios) spezialisiert
werden, beispielsweise um eine Decoderschaltung für eine UMTS-Anwendung
zu implementieren.
-
In
der fünften
Stufe 500 wird eine verzögerungsfreie Logiksimulation
für jedes
vorher definierte Szenario ausgeführt.
-
Eine
Logiksimulation kann beispielsweise unter Verwendung von kommerziell
erhältlichen
Programmen wie SYNOPSYS VSS ausgeführt werden.
-
Während der
Stufe 500 können
wiederholte Zyklen ausgeführt
werden, um Module und/oder Parameter oder Konstanten zu korrigieren,
wenn Fehler gefunden werden.
-
Wenn
diese Stufe erfolgreich abgeschlossen ist, wird das IP-Modul 50 insgesamt
verzögerungsfrei
für alle
möglichen
Parameterszenarien simuliert.
-
In
der sechsten Stufe 600 wird eine erste Kompilierung ausgeführt, beispielsweise
mit dem SYNOPSYS Design Analyzer-Programm, unter Verwendung eines
bestimmten Parameterszenarios, beispielsweise eines, welches zu
einer bestimmten Faltungscodierungsschaltung führt.
-
Ferner
können
in der Stufe 600 wiederholte Zyklen ausgeführt werden.
Wie dem Fachmann bekannt ist, können
solche wiederholte Zyklen die Korrektur von Modulen und/oder bestimmten
Parametern oder Konstanten umfassen.
-
In
der siebten Stufe 700 wird eine logische Optimierung ausgeführt, beispielsweise
unter Verwendung des SYNOPSYS Design Analyzer-Programms, und eine
Bibliothek physikalischer Komponenten wird an die kompilierten Module "angefügt", um dadurch eine
aktuelle Synthesekompilierung zu erhalten, welche zur Erzeugung
des physikalischen Layouts einer Codierschaltung zur Verwendung
in einem Turbodecoder notwendig ist.
-
Für den Fachmann
ist leicht ersichtlich, daß die
Ausgabe dieser Stufe 700 entweder die Information ist,
die zur physikalischen Implementierung einer vollständig kundenspezifischen integrierten
Schaltung erforderlich ist, die von dem Bereitsteller der physikalischen
Bibliotheken leicht erhältlich
ist, die mit dem kompilierten Modul (Stufe 800) "verknüpft" sind, oder, alternativ,
die Ausgabe die Information ist, welche zur physikalischen Programmierung
der programmierbaren Komponenten (Stufe 900), beispielsweise
FPGAs (feldprogrammierbare Gate Arrays), notwendig ist.
-
Daher
ist es mit dem beschriebenen Flußdiagramm unter Verwendung
eines Codiermoduls 50 gemäß der hier beschriebenen Struktur
und durch Spezialisierung der Module mit einem bestimmten Parameterszenario
erfindungsgemäß möglich, eine
Vielzahl von Codierschaltungen zu erhalten, die jeweils beispielsweise Faltungscodes
mittels einer Vielzahl von Generatorpolynomen decodieren, die selektiv
aktiviert werden können.
-
Die
Abmessungen, Formen, Materialien, Komponenten, Schaltungselemente
und Kontakte, wie sie in der voranstehenden Beschreibung genannt
werden, sowie auch die dargestellten Details der Schaltung und der
Umsetzung sowie des Verfahrens zum Betreiben können in zahlreichen naheliegenden
Hinsichten verändert
werden, ohne den Umfang der Erfindung zu verlassen, wie er durch
die angefügten
Ansprüche
definiert ist.