-
Hintergrund der Erfindung
-
Technisches Gebiet
-
Die
vorliegende Erfindung bezieht sich auf ein Verfahren und System
für Fehler
korrigierende Codes allgemein und insbesondere auf ein Verfahren und
System zum Dekodieren von Faltungs-Codes. Besonders bezieht sich
die vorliegende Erfindung auf ein Verfahren und System zum Dekodieren
von Tailbiting-Faltungs-Codes.
-
Beschreibung des Standes
der Technik
-
Informations-Signale,
die zwischen einem Sender und einem Empfänger über einen Kommunikationskanal übertragen
werden, können
durch verschiedene Störungen
verfälscht
werden, die dem Kanal zugeordnet sind. Daher wird eine Technik,
die als Fehlerkorrektur-Kodierung bekannt ist, typischerweise dazu
verwendet, die Auswirkungen von Kanal-Störungen in einem Kommunikationskanal
zu mildern. Durch die Einführung
einer Redundanz in die zu übertragenden
Informations-Signale
kann die Kanalcodierung die Wahrscheinlichkeit verringern, dass
Kanal-Störungen die
Informations-Signale verfälschen.
In den meisten Fällen
hat sich die Technik der Kanalcodierung als ziemlich erfolgreich
verwiesen, selbst für
Langstrecken-Kommunikationen, wie zum Beispiel zwischen einer Basisstation
auf der Erde und einem Raumfahrzeug, das sich einem entfernten Planeten
nähert.
-
Faltungs-Codes
sind eine Klasse von Fehler korrigierenden Codes, die in der Technik
zur Milderung der Auswirkungen von Kanal-Störungen gut bekannt sind. Ein
Beispiel derartiger Faltungs-Codes, das als eine Norm für nordamerikanische
digitale Zellularfunk-Kommunikationen übernommen wurde, ist als IS-130
der internationalen Telekommunikations Union bekannt. IS-130 verwendet
eine Art von Faltungs-Code, der in der Technik auch als Tailbiting-Faltungs-Code
bekannt ist, bei dem ein Rahmen oder Block an Information codiert
und in einer blockweisen Art übertragen
wird. Der Ausdruck „Tailbiting" bezieht sich auf
die Tatsache, dass der Faltungscodierer in dem gleichen Codierungszustand
beginnt und endet. Obwohl der Decodierer weiß, dass der Kodierer in dem
gleichen Codierungszustand beginnt und endet, kennt der Decodierer
den Wert dieses Zustandes nicht. Dies heißt mit anderen Worten, dass der
anfängliche
Codierungszustand des Codierers den Decodierer unbekannt ist; und
dass tatsächlich für willkürliche Daten
der Codierer mit angenähert
der gleichen Wahrscheinlichkeit in irgendeinem der möglichen
Zustände
begonnen haben kann. Damit besteht die grundlegende Schwierigkeit,
die bei der Konstruktion eines Decodierers für Tailbiting-Faltungs-Codes auftritt, darin,
dass der Decodierer in der Lage sein muss, den anfänglichen
Codierungszustand des Codierers in sehr kurzer Zeit zu bestimmen.
-
In
dem Stand der Technik kann ein Decodierer maximaler Wahrscheinlichkeit,
der besser als ein Viterbi-Decodierer bekannt ist, zur Decodierung
von Tailbiting-Faltungs-Codes
verwendet werden. Ein Viterbi-Decodierer dekodiert eine aktuelle
verfälschte Folge
von empfangenen Signalen dadurch, dass die wahrscheinlichste Folge
von nicht verfälschten
Signale aufgefunden wird. Ähnlich
wie andere Arten von Decodierern kennt ein Viterbi-Decodierer ebenfalls nicht
den Startzustand eines Codierers, sodass der Viterbi-Decodierer
eine Viterbi-Decodierung in erschöpfender Weise für alle möglichen
Startzustände ausführen muss.
Obwohl das Ergebnis immer richtig ist, ist dieses Verfahren für viele
Anwendungen unannehmbar langsam. Wenn beispielsweise die Anzahl der
Speicherelemente in dem Codierer gleich K ist, so ist die zum Dekodieren
erforderliche Zeit immer 2K länger als
bei einem Codierer ohne Tailbiting. Als Ergebnis stellt ein Viterbi-Decodierer große Anforderungen
an Rechenleistungs-Ressourcen. Es ist daher selbstverständlich,
dass es wünschenswert
sein würde,
eine verbesserte Technik zur Decodierung von Tailbiting-Faltungs-Codes
zu schaffen, die gute Grade des Fehlerschutzes mit einer geringeren
Rechenlast ergeben würde.
-
Die
PH.D. DISSERTATION von HOWARD H. MA, mit dem Titel „Generalized
tailbiting convolutional codes",
1985, University of Massachusetts, Amherst, beschreibt ein zweistufiges
Verfahren, bei dem Kandidaten-Startzustände zunächst durch einen Kettenbruch-Algorithmus
identifiziert werden. Eine Viterbi-Decodierung wird dann für jeden
Kandidaten-Startzustand ausgeführt.
-
Zusammenfassung der Erfindung
-
Im
Hinblick auf das Vorstehende ist es daher ein Ziel der vorliegenden
Erfindung, ein verbessertes Verfahren und System zur Dekodierung
von Fehler korrigierenden Codes zu schaffen.
-
Es
ist ein weiteres Ziel der vorliegenden Erfindung, ein verbessertes
Verfahren und System zur Decodierung von Faltungs-Codes zu schaffen.
-
Es
ist ein zusätzliches
Ziel der vorliegenden Erfindung, ein verbessertes Verfahren und
System zur Decodierung von Tailbiting-Faltungs-Codes zu schaffen.
-
Gemäß dem Verfahren
und System der vorliegenden Erfindung wird ein Tailbiting-Faltungs-Code durch
einen Faltungs-Codierer mit einer Vielzahl von Codierungs-Zuständen codiert.
Ein erster Anfangs-Wert wird jedem der Codierungs-Zustände zugeordnet.
Ein Viterbi-Algorithmus wird dann einmal an einem Tailbiting-Faltungs-Code ausgeführt, um
einen End-Wert zu jedem der Codierungs-Zustände zuzuordnen. Nachfolgend
wird eine Teilmenge dieser Codierungs-Zustände ausgewählt, innerhalb derer der End-Wert
jedes Codierungs-Zustandes ein bestimmtes Kriterium erfüllt. Der
Viterbi-Algorithmus wird erneut an dem Tailbiting-Faltungs-Code für jeden
Codierungs-Zustand innerhalb der Teilmenge ausgeführt, um
den besten Codierungs-Zustand als den wahrscheinlichsten Anfangs-Codierungs-Zustand
für den
Tailbiting-Faltungs-Code zu bestimmen. Ein Trellis-Pfad dieses wahrscheinlichsten
Anfangs-Codierungs-Zustandes wird zur Decodierung des Tailbiting-Faltungs-Codes
verwendet.
-
Gemäß einem
weiteren Gesichtspunkt der Erfindung wird ein Computer-Programm-Produkt zum Decodieren
von Tailbiting-Faltungs-Codes geschaffen, bei dem der Satz von Tailbiting-Faltungs-Codes
durch einen Faltungscodierer mit einer Vielzahl von Codierungs-Zuständen codiert
wird, wobei das Computer-Programm-Produkt folgendes umfasst: Programmcode-Einrichtungen
zur Zuordnung eines identischen Anfangs-Wertes zu jedem der Codierungs-Zustände; Programmcode-Einrichtungen zur
Durchführung
eines Viterbi-Algorithmus einmal an einem Tailbiting-Faltungs-Code zur Zuordnung
eines End-Wertes zu jedem der Codierungs-Zustände; Programmcode-Einrichtungen
zur Auswahl einer Teilmenge der Codierungs-Zustände,
wobei der End-Wert für
jeden Codierungs-Zustand innerhalb der Teilmenge ein bestimmtes
Kriterium erfüllt;
Programmcode-Einrichtungen zur Bestimmung eines besten Codierungs-Zustandes
aus der Teilmenge als einen Anfangs-Codierungs-Zustand für den Tailbiting-Faltungs-Code;
und Programmcode-Einrichtungen zur Decodierung des Tailbiting-Faltungs-Codes unter Verwendung
eines Trellis-Pfades, der dem besten Codierungs-Zustand zugeordnet
ist.
-
Alle
Ziele, Merkmale und Vorteile der vorliegenden Erfindung werden aus
der folgenden ausführlichen
schriftlichen Beschreibung verständlich.
-
Kurze Beschreibung der
Zeichnungen
-
Die
Erfindung selbst sowie ihre bevorzugte Ausführungsform, weitere Ziele und
Vorteile hiervon werden am besten unter Bezugnahme auf die folgende
ausführliche
Beschreibung eines erläuternden Ausführungsbeispiels
verständlich,
wenn diese in Verbindung mit den beigefügten Zeichnungen gelesen wird,
in denen:
-
1 ein
Blockschaltbild eines Faltungs-Codierers nach dem Stand der Technik
ist;
-
2 ein
Trellis-Diagramm ist, das die Betriebsweise des Faltungs-Codierers nach 1 zeigt;
-
3 ein
Blockschaltbild eines eine hohe Rate aufweisenden Faltungs-Codierers mit Punktierung
ist, der in Verbindung mit einer bevorzugten Ausführungsform
der vorliegenden Erfindung zu verwenden ist;
-
4 ein
Logik-Ablaufdiagramm hoher Ebene ist, das ein Verfahren zur Decodierung
von Tailbiting-Faltungs-Codes gemäß einer bevorzugten Ausführungsform
der Erfindung zeigt; und
-
5 ein
Blockschaltbild eines Funksignal-Empfangssystems ist, in dem eine
bevorzugte Ausführungsform
der vorliegenden Erfindung gemäß 5 enthalten
sein kann.
-
Ausführliche Beschreibung einer
bevorzugten Ausführungsform
-
Die
vorliegende Erfindung kann in irgendeinem Zellular-Telefon-Kommunikationsnetzwerk
implementiert werden. Wie dies für
den Fachmann verständlich
ist, ist die vorliegende Erfindung auf Zellular-Basisstationen,
Zellular-Teilnehmereinheiten
und allgemein auf irgendwelche Kommunikationssysteme anwendbar,
die Tailbiting-Faltungs-Codes decodieren müssen.
-
Wenn
nunmehr auf die Zeichnungen und insbesondere auf 1 Bezug
genommen wird, so ist dort ein Blockschaltbild eines Faltungs-Codierers nach
dem Stand der Technik gezeigt. Wie dies gezeigt ist, schließt der Faltungs-Codierer 10 zwei
Einzelbit-Speicherzellen 11, 12 und zwei Addierschaltungen 13, 14 ein.
Die Speicherzelle 11 und die Addierschaltungen 13, 14 empfangen
zunächst
eine Folge von Informations-Signalen I (n) die zu codieren sind.
Die Speicherzelle 11 liefert dann bei jedem neuen Informations-Signal,
das die Speicherzelle 11 empfängt, ihren Inhalt an die Speicherzelle 12.
-
Der
Faltungs-Codierer 10 umfasst zwei Pfade, wobei jeder Pfad
eine Addierschaltung und Verbindungen zu dem Informations-Signal-Strom
und einer oder beiden Speicherzellen 11, 12 einschließt. Der
Ausgang N(n) des ersten Pfades, der die Addierschaltung 13 einschließt, wird
durch Addieren des aktuellen Signal-Bits und der zwei vorhergehenden
Signal-Bits erzeugt. Wenn die resultierende Summe ungeradzahlig
ist, gibt der Addierer 13 eine logische Eins aus, während, wenn
die resultierende Summe genadzahlig ist, der Addierer 13 eine
logische Null abgibt. Der Ausgang N(n) des zweiten Pfades, der die
Addierschaltung 14 einschließt, wird durch Addieren des
aktuellen Signal-Bits und des Signal-Bits erzeugt, das zwei Bits
früher
liegt, als das aktuelle Signal-Bit. Auch hier gibt, wenn die resultierende
Summe ungeradzahlig ist, der Addierer 14 eine logische Eins
ab; während,
wenn die resultierende Summe geradzahlig ist, der Addierer 14 eine
logische Null abgibt. Weil lediglich drei Bits zur Bestimmung eines Zwei-Bit-Ausganges
verwendet werden, wird gesagt, dass der Faltungs-Codierer 10,
der zwei Speicher hat, eine „Beschränkungslänge" von drei hat. Zusätzlich ist
der Faltungs-Codierer 10 auch als ein „Raten-1/2"-Faltungs-Codierer bekannt, weil er
für jedes zu
codierende Informations-Signal-Bit zwei Bits eines Ausgangssignals
erzeugt.
-
Unter
Bezugnahme auf 2 wird ein Tnellis-Diagramm
erläutert,
das die Betriebsweise des in 1 gezeigten
Faltungs-Codierens zeigt. Das Trellis-Diagramm beschreibt, wie die Zustände des
Faltungs-Codierers („Codierer") sich von einer
Informations-Signal-Bitzeit zur der nächsten ändern können. Ein Zustand des Codierers
ist einfach der Inhalt der Codierer-Speicherzellen zu irgendeiner
Zeit, gelesen als ein Zustands-"Wort". Sowohl auf der
linken als auf der rechten Seite des Trellis-Diagramms befinden sich
die zulässigen
Zustände
des Codierers – 00,
01, 10 und 11. Die auf der linken Seite des Trellis-Diagramms gezeigten
Zustände
stellen den aktuellen Zustand des Codierers dar, während die
Zustände auf
der rechten Seite des Trellis-Diagramm den nächsten Zustand des Codierers
darstellen.
-
Beginnend
an der oberen linken Seite des Trellis-Diagramms befindet sich der
Codierer in seinem Zustand 00, bei dem die zwei vorhergehenden Signal-Bits
beide Null sind (das heißt
die Inhalte der Speicher-Zellen 11 und 12 in 1 sind
beide 0). Wenn das aktuelle Signal-Bit eine Eins ist, so bewegt die
Ankunft eines nächsten
nachfolgenden Signal-Bits den Codierer zum Zustand 10. Dies heißt mit anderen
Worten, dass mit der Ankunft des nächsten nachfolgenden Signal-Bits
das Bit in der Speicher-Zelle 12 durch das Bit von der
Speicher-Zelle 11 (eine Null) ersetzt wird, und dass das
Bit in der Speicher-Zelle 11 durch das aktuelle Bit (eine
Eins) ersetzt wird. Dieser Übergang
ist durch die diagonale Linie dargestellt, die an dem aktuellen
Zustand 00 auf der oberen linken Seite des Trellis-Diagramm beginnt und
sich nach unten und quer zum nächsten
Zustand 10 erstreckt, dem zweiten Zustand von unten auf der rechten
Seite des Trellis-Diagramms. Bei diesem Zustands-Übergang
ist der Ausgang des Codierers eine 11, wie dies in Klammern auf
der diagonalen Linie angezeigt ist. Wenn jedoch das aktuelle Signal-Bit
eine Null anstelle einer Eins ist, so bewegt die Ankunft des nächsten nachfolgenden
Signal-Bits den Codierer auf den gleichen Zustand, 00 (die horizontale
Linie von der oberen linken Seite zur oberen rechten Seite des Trellis-Diagramms).
Bei diesem Zustands-Übergang
ist der Ausgang des Codierers eine 00, wie dies in Klammern über der
diagonalen Linie gezeigt ist.
-
Das
Trellis-Diagramm in 2 zeigt alle zulässigen Zustands-Übergänge des
Codierers mit einer durchgezogenen Linie an, die die jeweiligen
Zustände
verbindet. Wie dies gezeigt ist, sind einige Zustands-Übergänge nicht
zulässig.
Beispielsweise kann sich der Codierer nicht von dem Zustand 00 zu dem
Zustand 11 bewegen (es sei auf das Fehlen einer Linie hingewiesen,
die den Zustand 00 auf der linken Seite mit dem Zustand 11 auf der
rechten Seite verbindet). Dies beruht auf der Tatsache, dass die Bits
in den Speicher-Zellen (Zustände)
lediglich um ein Bit zu einer Zeit geändert werden können.
-
In 3 ist
ein Blockschaltbild eines eine hohe Rate aufweisenden Faltungs-Codierers mit Punktierung
gezeigt, der in Verbindung mit einer bevorzugten Ausführungsform
der vorliegenden Erfindung zu verwenden ist. Wie dies gezeigt ist,
schließt der
Faltungs-Codierer 30 fünf
Einzelbit-Speicherzellen 31–35, zwei Addierschaltungen 36, 37,
ein Punktierungs-Element 38 und einen Multiplexer 39 ein. Datenrahmen
werden über
Speicherzellen 31 eingegeben und über den Multiplexer 39 abgegeben. Durch
die Verwendung eines Punktierungs-Elementes 38 wird lediglich
ein M(n) als P(n) für
jeweils fünf N(n)
ausgegeben, sodass der Daten-Durchsatz des Faltungs-Codierers 30 beträchtlich
höher als
der des traditionellen Faltungs-Codierers ist, der in 1 gezeigt
ist.
-
Es
ist für
den Fachmann verständlich,
dass das Trellis-Diagramm für
den Faltungs-Codierer 30 ähnlich dem
in 2 gezeigten ist. Der Hauptunterschied besteht
darin, dass der Faltungs-Codierer 30 fünf Speicher-Zellen hat, sodass
ein Trellis-Diagramm
25 = 32 Codierungs-Zustände hat. Beim Betrieb an Nicht-Tailbiting-Codes hat ein Faltungs-Codierer
den Luxus, anzunehmen, dass sich der Faltungs-Codierer 30 in dem Codierungs-Zustand 00000
befand, wenn ein erstes Signal-Bit ausgesandt wurde. Dies ist jedoch
bei Tailbiting-Codes nicht mehr länger der Fall. Tatsächlich kann
für willkürliche Daten
der Faltungs-Codierer in einem der 32 möglichen Codierungs-Zustände mit
angenähert
der gleichen Wahrscheinlichkeit begonnen haben.
-
Beim
Stand der Technik gibt es einfaches jedoch sehr zeitraubendes Verfahren,
um den Anfangs-Zustand eines Faltungs-Codierers zu entziffern, der
Tailbiting-Codes verwendet. Wenn der Faltungs-Codierer nach 1 als
Beispiel betrachtet wird, so würde,
wenn Tailbiting-Codes verwendet würden, der Decodierungs-Prozess
damit beginnen, dass als erstes angenommen würde, dass der Anfangs-Zustand
des Faltungs-Codierers 00 ist. Dann wird der Viterbi-Algorithmus
ausgeführt,
wie dies in der Technik gut bekannt ist. Eine ausführlichere
Diskussion des Viterbi-Algorithmus
findet sich in der Veröffentlichung
von Lin et al mit dem Titel „Error
Control Coding: Fundamentals and Applications", Prentice Hall 1983 und diese Veröffentlichung
wird durch diese Bezugnahme hier mit eingefügt. Das Ergebnis des besten
Trellis-Pfades und dessen Wertigkeit oder Wert wird dann aufgezeichnet.
Dann wird angenommen, dass der Anfangs-Zustand des Faltungs-Codierers 01 ist,
und der Viterbi-Algorithmus wird erneut ausgeführt. Als nächstes wird der Viterbi-Algorithmus getrennt
mit der Annahme von Anfangs-Zuständen als
10 und 11 ausgeführt.
Von den vier Pfaden und Werten, die von allen den vorstehenden Durchläufen gesammelt
wurden, wird ein Pfad mit dem niedrigsten Wert als der Eingangs-Pfad
mit größter Wahrscheinlichkeit
ausgewählt.
Dieser Algorithmus ist immer richtig, jedoch für einen größeren Faltungs-Codierer, wie
dem Faltungs-Codierer 30, der 32 Zustände aufweist, unannehmbar langsam.
-
Es
wird nunmehr auf 4 Bezug genommen, in der ein
Logik-Ablaufdiagramm höherer
Ebene gezeigt ist, das ein Verfahren zur Decodierung von Tailbiting-Faltungscodes gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung zeigt. Die Tailbiting-Faltungscodes können durch
einen eine hohe Rate aufweisenden Tailbiting-Faltungscodierer mit
Punktierung codiert werden, der beispielsweise 32 Codierungs-Zustände hat,
wie dies für
den in 3 gezeigten Codierer gilt. Eine Konstante K für den Faltungs-Codierer
wird so zugeteilt, dass sie ⌊1/R⌋ ist, worin R
die Codierungs-Rate des Faltungs-Codierers ist, und in diesem Beispiel
dann K = ⌊5/4⌋ = 1 ist. Jedem der 32 möglichen
Codier-Zustände
des Faltungs-Codierers wird ein identischer Anfangs-Wert zugeordnet.
Der Anfangs-Wert
kann irgendeine Zahl sein, solange sie für alle Codierungs-Zustände die
gleiche ist. Dies heißt
mit anderen Worten, dass angenommen wird, dass alle 32 Codierungs-Zustände des
Faltungs-Codierers eine gleiche Wahrscheinlichkeit haben, dass sie
der Anfangs-Zustand sind. In diesem Beispiel ist der Anfangs-Wert
gleich 0, wie dies in Block 41 gezeigt ist. Ein modifizierter
Viterbi-Algorithmus wird dann einmal an dem Satz von Faltungs-Codes
ausgeführt,
um einen End-Wert für
jeden der 32 Codierungs-Zustände
zu liefern, wie dies im Block 42 gezeigt ist.
-
Der
modifizierte Viterbi-Algorithmus wird wie folgt ausgeführt: (1)
Setzen einer Zeit-Variable,
t, auf 1; (2) für
jeden Codierungs-Zustand Si, worin i = 1
bis 32 ist, Bestimmen eines Teil-Wertes, der jedem der zwei Trellis-Bögen in diesen
Zustand hinein zugeordnet ist; (3) Berechnen des Absolutwertes der
zwei Trellis-Bögen
durch Addieren, zu ihren Teil-Werten, des Wertes des Codierungs-Zustandes,
von dem sie zu dem Zeitpunkt t-1 ausgingen; (4) Aufnehmen des Bogen-Eintritts-Zustandes Si mit dem kleinsten Absolut-Wert, Z; (5)
Aufzeichnen von Z als den neuen Wert von S; für die Zeit t und Anhängen des
gewählten
Trellis-Bogens an seinen zugehörigen
Trellis-Pfad; (6) Vergrößern von
t um Eins; und (7), wenn t kleiner als L-1 ist worin L die Länge der
Informations-Folge ist, aus der der Tailbiting-Faltungscode erzeugt
wird, Wiederholen der Schritte (2) bis (7), anderenfalls Stoppen
des Durchlaufs.
-
Nachfolgend
wird der Codierungs-Zustand mit den niedrigsten End-Wert bestimmt,
wie dies im Block 43 gezeigt ist, und dieser kann als Smin bezeichnet werden. Alle Codierungs-Zustände mit
einem End-Wert, der die Bedingung Si – Smin < K
erfüllt,
werden unter einem Satz von Codierungs-Zuständen gruppiert, der als β-Satz bezeichnet
wird, wie dies im Block 44 gezeigt ist. Alle die Codierungs-Zustände in β werden dann
als „ungetestet" markiert, wie dies
im Block 45 gezeigt ist.
-
Eine
Feststellung wird dann getroffen, ob alle Codierungs-Zustände Si innerhalb von βgetestet wurden, wie dies im
Block 46 gezeigt ist. Wenn alle Codierungs-Zustände innerhalb
von β noch
nicht geprüft
sind, so wird der Wert eines Codierungs-Zustandes-im-Test auf Null
gesetzt, und der Wert aller anderen Codierungs-Zustände wird
auf unendlich gesetzt, wie dies im Block 47 gezeigt ist.
Der klassische Viterbi-Algorithmus wird dann ausgeführt, um
einen End-Wert und einen Trellis-Pfad für jeden Codierungs-Zustand
zu liefern, wie dies im Block 48 gezeigt ist. Der beste
End-Wert und der zugehörige Trellis-Pfad
für den
Codierungs-Zustand-im-Test werden aufgezeichnet, wie dies im Block 49 gezeigt
ist. Der Codierungs-Zustand-im-Test wird dann als „getestet" markiert, wie dies
im Block 50 gezeigt ist. Die im Block 47 bis zum
Block 50 gezeigten Schritte werden für alle „ungetesteten" Codierungs-Zustände innerhalb
von β ausgeführt.
-
Nachdem
alle Codierungs-Zustände
innerhalb von β getestet
wurden, wird der Codierungs-Zustand Si,
der den niedrigsten Wert von allen Codierungs-Zuständen innerhalb
von β hat,
lokalisiert, wie dies im Block 51 gezeigt ist. Es sei bemerkt,
dass j gleich der Anzahl von entsprechenden Codierungs-Zuständen-im-Test
ist. Schließlich
wird die Informationsfolge, die von dem Trellis-Pfad für diesen Codierungs-Zustand
mit dem niedrigsten Wert abgeleitet wird, gewonnen (aus dem Block 49),
wie dies im Block 52 gezeigt ist, und der Prozess tritt
am Block 99 aus.
-
Es
wird nunmehr auf 5 Bezug genommen, in der ein
Blockschaltbild eines Funksignal-Empfangssystems gezeigt ist, in
das eine bevorzugte Ausführungsform
der vorliegenden Erfindung gemäß 4 eingefügt werden
kann. Wie dies gezeigt ist, schließt das Funksignal-Empfangssystem 60 einen
Festwert-Speicher (ROM) 61, einen digitalen Signalprozessor
(DSP) 62, einen Speicher mit wahlfreiem Zugriff (RAM) 63 und
eine Signal-Empfangsschaltung 64 ein. Zusätzlich ist
das Funkempfänger-System 60 auch
mit einer Antenne 65 gekoppelt, die Analog- Funksignale x(t)
empfängt.
Die Analog-Funksignale x(t) werden dann in digitale Signale x(n)
durch die Signal-Empfangsschaltung 64 umgewandelt, die
zwischen der Antenne 65 und dem DSP 62 eingeschaltet
ist. Der ROM 61 speichert unter anderem Software, die zur
Steuerung des Betriebs des DSP 62 und zum Decodieren der
Tailbiting-Faltungscodes verwendet werden. Andererseits speichert
der RAM 63 unter anderem einen Puffer von Ausgangsrahmen,
die von der oben erwähnten
Software zu verarbeiten sind.
-
Wie
dies beschrieben wurde, ergibt die vorliegende Erfindung ein genaues
effizientes Verfahren, das ein Tailbiting-Faltungs-Decodierer verwenden
kann, um Tailbiting-Faltungscodes zu decodieren. Der Decodierer
der vorliegenden Erfindung ordnet zunächst einen Anfangs-Wert jedem
der 2
M möglichen
Anfangs-Zustände
des Codierers zu. Der Decodierer führt dann einmal einen Viterbi-Algorithmus aus,
um einen neuen Satz von 2
M End-Werten zu
bestimmen. Es sei bemerkt, dass dieser Satz von Werten eine Wahrscheinlichkeits-Dichtefunktion
umreißt, die
die wahrscheinlichsten Anfangs-Zustände des Codierers anzeigt.
Insbesondere ist, wenn S
x der End-Wert für den Zustand
X ist, die Wahrscheinlichkeit, dass der Codierer im Zustand X gestartet
wurde, durch die folgende Gleichung gegeben:
-
Mit
dieser Kenntnis kann der Decodierer eine kleinere Teilmenge, β, der 2M Zustände
auswählen, deren
Sx Werte minimal sind (das heißt deren
p(x) Werte maximal sind). Schließlich wird wie beim Stand der
Technik der Viterbi-Algorithmus erschöpfend an jedem der Anfangs-Zustände in β ausgeführt. Weil die
Anzahl der Zustände
in β wesentlich
kleiner als 2M ist, wird die Gesamt-Ausführungzeit
verglichen mit dem Stand der Technik dramatisch verringert, während die
Genauigkeit im Wesentlichen unbeeinflusst ist. Als Ergebnis ist
das Verfahren der vorliegenden Erfindung in der Lage, mit einer
sehr hohen Wahrscheinlichkeit den Pfad maximaler Wahrscheinlichkeit
eines Codierers zu finden. Das Verfahren der vorliegenden Erfindung
arbeitet in gleicher Weise gut mit eine niedrige Rate aufweisenden
(beispielsweise eine Rate von 1/2) und eine eine hohe Rate aufweisenden
(beispielsweise eine Rate von 4/5) Faltungscodes, bei denen eine
harte Entscheidung verwendende Decodierungs-Techniken verwendet
werden. Es arbeitet genauso gut, wenn weiche Entscheidungs-Techniken
verwendet werden.
-
Es
ist weiterhin wichtig, festzustellen, dass die Mechanismen der vorliegenden
Erfindung als ein Programm-Produkt in einer Vielzahl von Formen
verteilt werden können,
und dass die vorliegende Erfindung in gleicher Weise unabhängig von
der speziellen Art von Signale tragenden Medien anwendbar ist, die
tatsächlich
zur Durchführung
der Verteilung verwendet werden. Beispiele von Signale tragenden Medien
schließen
ohne Beschränkung
Medien vom beschreibbaren Typ, wie zum Beispiel Floppydisks oder
CD-ROMs und Medien vom Übertragungstyp ein,
wie zum Beispiel Analog- oder Digital-Kommunikations-Verbindungsstrecken.
-
Obwohl
die Erfindung unter Bezugnahme auf eine bevorzugte Ausführungsform
speziell gezeigt und beschrieben wurde, ist es für den Fachmann verständlich,
dass verschiedene Änderungen
hinsichtlich der Form und Einzelheiten ausgeführt werden können, ohne
von dem Grundgedanken und Schutzumfang der Erfindung abzuweichen.