-
Hintergrund der Erfindung
-
I. Gebiet der Erfindung
-
Die
vorliegende Erfindung bezieht sich auf Datenkommunikationen. Insbesondere
bezieht sich die vorliegende Erfindung auf ein neues und verbessertes
Kommunikationssystem zum Vorsehen eines Fehlerschutzes bei einem
Dateitransfer über
die Luftschnittstelle (over the air), der kompatibel ist mit einem
IS-99-Kommunikationsformat.
-
II. Beschreibung verwandter
Techniken
-
Die
Komplexität
von modernen Kommunikationssystemen und die kritische Zeitspanne
bis zur Markteinführung
stellen eine große
Herausforderung für
das Design von Kommunikationssystemen dar. Die Komplexität rührt von
dem hohen Maß an
Signalverarbeitung, der großen
Anzahl von Hardwareblöcken,
komplizierten Datenprotokollen und unzähligen Betriebsmodi her. Typischerweise
wird ein Mikroprozessor benötigt,
um die Vielzahl von Aufgaben zu koordinieren und zu steuern.
-
Die
Komplexität
des Systems gestaltet das Design sowie das suchen und Beseitigen
von Fehlern schwer. Besondere Belastung besteht hinsichtlich der
Softwareentwicklung, da diese Stufe das gesamte System, oftmals
unter hohem Zeitdruck, integrieren muss. Um Systemkomplexität und Zeitdruck zu
bewältigen,
sind moderne Kommunikationssysteme mit der Fähigkeit ausgestattet herunterladbare Software
oder Microcode über
die Luftschnittstelle nach Systemeinsatz zu akzeptieren. Diese Systeme werden
anfänglich
mit nicht kompletter Softwarefunktionalität eingesetzt (deployed), wobei
weiterhin Pläne
bestehen, Upgrades hinsichtlich neuer Software-Releases durchzuführen, wenn
Merkmale hinzugefügt
werden oder Fehler entdeckt und entfernt werden sollen.
-
Das
Design eines Datentransfersystems muss auf das Problem des korrekten
Empfangs von einer großen
Anzahl von entfernten Stationen ausgerichtet sein. In einem typischen
Kommunikationssystem werden die Datenübertragungen zwischen einer zentralen
Station und den entfernten Stationen durch Einflüsse auf den Übertragungskanal
behindert, insbesondere durch additives Rauschen und Störsignale
(spurious signals) innerhalb der Übertragungsbandbreite. Diese
Signale können
zusätzlich
durch andere Phänomene,
wie z.B. Mehrwegausbreitung, verzerrt werden bevor es die entfernten
Stationen erreicht. Um diese Beeinträchtigungen (impairments) zu
bekämpfen,
und um die korrekte Detektierung durch die entfernten Stationen
zu verbessern, werden die Daten vor der Übertragung codiert.
-
Zwei
Klassen von Codierung, Blockcodierung und Faltungscodierung, werden
verwendet um einen korrekten Empfang zu verbessern. Ein Faltungscode
sieht eine gute Fehlerkorrekturfähigkeit vor,
gibt jedoch typischerweise korrelierte Fehlerbursts aus. Blockcodes
besitzen eine eingebaute Burstfehlerhandhabungsfähigkeit, wenn diese mit einem
geeigneten Level von Interleaving bzw. Verschachtelung kombiniert
werden. Tatsächlich
kann ein Reed-Solomon-Block-Code einen beliebigen Fehlerburst innerhalb
eines Symbols handhaben. Wenn Faltungscodierung alleine nicht den
benötigten Codierungsgewinn
erzeugtkann ein verketteter bzw. verknüpfter (concatenated) Code bestehend
aus einem Blockcode und einem Faltungscode, verwendet werden.
-
Ein
solches System, das ein hohen Betrag an Datentransfer zu vielen
entfernten Stationen benötigen
kann, ist ein Codemultiplex-Vielfachzugriffssystem(code
division multiple access = CDMA), das konform ist mit "TIA/EIA/IS-99 Data
Services Option Standard for Wideband Spread Spectrum Digital Cellular
System", worauf
im Folgenden als IS-99-Standard Bezug genommen wird. Gemäß dem IS-99-Standard
werden Daten in Datenrahmen partitioniert, blockcodiert um die Rahmenqualitätsindikatoren
oder Prüfsummenbits
bzw. CRC-Bits (cyclic redundancy check) zu erzeugen. Die Datenbits
und CRC-Bits werden faltungscodiert und über die Luft bzw. Luft schnittstelle
gesendet. Die entfernten Stationen empfangen und demodulieren das
Signal, faltungsdecodieren die Daten und verwenden die CRC-Bits
um zu bestimmen ob die Datenrahmen fehlerhaft empfangen wurden.
Die CRC-Bits erlauben eine Detektierung von Fehlern bei der Übertragung, sehen
jedoch nicht eine Fehlerkorrekturmöglichkeit vor.
-
Gemäß dem IS-99-Standard
werden die Datenrahmen codiert um Codekanalrahmen mit einer Breite
von 20 ms zu bilden. Auf der Vorwärtsverbindungsübertragung
von der zentralen Station zu den entfernten Stationen ist die Symbolrate
von jedem Codekanal 19,2 Ksps. Dies entspricht 384 Symbolen pro
Codekanalrahmen. Bei einer Verwendung von einem Raten-1/2-Faltungscodierer
um die Daten zu codieren kann die Datenrate bis zu 9,6 Kbps betragen. Bei
der 9,6 Kbps Datenrate gibt es 192 Bits pro Codekanalrahmen. Gemäß dem IS-99-Standard
bestehen die 192 Bits aus 172 Informationsbits, 12 CRC-Bits und
8-Code-Abschlussbits (code tail bits). Eine höhere Datenrate kann durch die
Verwendung von anderen Coderaten erhalten werden. Zum Beispiel wird
eine Datenrate von 14,4 Kbps erreicht durch Verwendung eines Rate-1/2-Faltungscodierers und
durch Löschen
von zwei aus jeden acht Symbolen, was einen Faltungscodierer mit
punktierter Rate-3/4
ergibt. In diesem Fall enthält
jeder Codekanalrahmen 576 Symbole oder 288 Bits.
-
Das
CDMA-Kommunikationssystem ist ein Voll-Duplex-Kommunikationssystem. Die entfernten Stationen
kommunizieren mit der zentralen Station auf einer unabhängigen Rückwärtsverbindung.
Bei Detektierung von nicht korrigierbaren Rahmenfehlern senden die
entfernten Stationen Aufforderungen an die Zentralstation um die
Datenrahmen, die fehlerhaft empfangen wurden, erneut zu senden.
Wenn die zentrale Station versucht eine große Softwaredatei zu einer großen Anzahl
von entfernten Stati onen herunterzuladen kann eine inadäquate Codierung
darin resultieren, dass viele inkorrekt empfangene Datenrahmen existieren.
Die zentrale Station kann einen Engpass hinsichtlich Anfragen von
vielen entfernten Stationen erfahren, die jeweils ein erneutes Senden von
unterschiedlichen Datenrah men anfragen. In diesem Szenario kann
die Übertragung
größerer Softwaredateien
zu vielen entfernten Stationen in hohem Maße durch einen inadäquaten Codierungsgewinn, vorgesehen
durch den IS-99-Standard, beeinträchtigt werden.
-
Der
Faltungscodierer einer CDMA-Zentralstation, die IS-99-Standardkonform
ist, besitzt Rate-1/2 (N = 2) mit einer Einflusslänge (constraint length)
von 9 (K = 9). Der Faltungscodierer codiert jedes Eingabebit in
N Codebits, was als Code-Ast bzw. Code-Branch gemäß dem Satz
von N Generatorpolynomen bezeichnet wird. Das Generatorpolynom G(x)
berechnet ein Codebit. Die N Codebits werden in einem N-Bitcodeast
kombiniert. Die Beschränkungslänge K des
Codierers ist die Anzahl von Datenbits, die in dem Codierungsprozess
verwendet wird und bestimmt die Fehlerkorrekturfähigkeit des Codes. Eine lange
Beschränkungslänge K wird
eine bessere Performance auf Kosten von zusätzlicher Hardware und Berechnungskomplexität ergeben.
Da jedes Eingabebit in N Codebits codiert wird, ist die Coderate
für den
Faltungscodierer 1/N. Andere Coderaten können von einem 1/N-Code durch
Punktierung (puncturing) der Codebits erhalten werden. Punktierte
Codes werden in J. Cain, G. Clark und J. Geist in "Punctured Convolutional
Codes of Rate (n – 1)/n
and Simplified Maximum Likelihood Decoding", IEEE Transaction on Information Theory,
IT-25, Seiten 97–100,
Januar 1979 behandelt. Tatsächlich
wird in dem CDMA-System, Rate-½-
und Rate-¾-Faltungscodierung
auf der Vorwärtsverbindungsübertragung
zwischen der Zentralstation und den entfernten Stationen verwendet,
wobei die Ratenauswahl von dem Betriebsmodus der Zentralstation
abhängt.
-
Ein
Viterbi-Algorithmus wird verwendet um die gesendeten Codebits an
dem Empfänger
zu decodieren. Ein Diskussion der Theorie und des Betriebes des
Viterbi-Decodierers ist in dem Artikel "Convolutional Codes and Their Performance
in Communication Systems" von
A. Viterbi, IEEE Transaction on Communication Technology, Band COM19,
Nr. 5, Oktober 1971, Seiten 821–835
enthalten. Der Viterbi-Algorithmus führt die Maximal-Wahrscheinlichkeits-Decodierung
des gesendeten Datenpfades aus. Für je den empfangenen Code-Ast
wird die Branch- bzw. Astmetrik für alle Äste, die in jedem Zustand eintreten,
berechnet und zu den entsprechenden vorherigen Pfadmetriken addiert.
Der beste Pfad, der in jedem Zustand eintritt wird ausgewählt und
als neue Pfadmetriken abgespeichert. Der ausgewählte Pfad wird in dem Pfadspeicher
gespeichert. In "Development
of Variable Rate Viterbi Decoder and its Performance Characteristics", Sechste Internationale
Konferenz über
digitale Satellitenkommunikation, Phoenix, AZ, September 1983, zeigt
Y. Yasuda et al. dass die überlebenden
Pfade mit der niedrigsten Pfadmetrik alle auf denselben Pfad konvergieren,
und zwar nach einer bestimmten Trace-Back- bzw. Rückverfolgungstiefe.
Somit wird ein Viterbidecodiertes Bit durch Verfolgen eines Pfades
zurück durch
die Trace-Back-Distanz
in dem Pfadspeicher erhalten.
-
Der
CRC-Blockcode, der in dem gemäß dem IS-99-Standard
ausgebildeten CDMA-Kommunikationssystem verwendet wird, ist ein
systematischer, zyklischer Linearblockcode. CRC-Blockcodierung ist auf
dem Fachgebiet bekannt und eine gute Abhandlung dieses Themas kann
in einer Anzahl von Dokumenten gefunden werden. In einem systematischen Blockcode
bilden die k Datenbits die ersten k Codebits des Codewortes. Die
n – k-Parity
bzw. -Paritäts-Bits
werden durch eine lineare Kombination der k Datenbits gemäß dem Generatorpolynom
g(x) gebildet. Aufgrund der linearen, systematischen und zyklischen
Eigenschaften des CRC-Blockcodes kann der Codierungsprozess leicht
mittels einfacher Schieberegister und Exklusiv-ODER-Gatter erreicht werden.
Da n Codebits für
k Datenbits gesendet werden ist die Co derate, oder die Reduktion
in der Datenrate, k/n.
-
In
einem mit dem IS-99-Standard konformen CDMA-System werden die Daten
mit einem CRC-Blockcode und einem Faltungscode codiert. Der CRC-Blockcode sieht nur
eine Fehlerdetektierungsmöglichkeit
vor und sieht nicht eine Fehlerkorrekturmöglichkeit bzw. -fähigkeit
vor. Diese Aufgabe des Vorsehens von Fehlerkorrekturen obliegt dem Faltungscode.
Wenn eine große
Softwaredatei von einer großen
Anzahl von entfernten Stationen heruntergeladen wird, ist die Anforderung
nach einem fehlerfreien Empfang besonders wichtig. Wenn die Performance
des Faltungscodes nicht alleine adäquat ist, ist eine zusätzliche
Codierung mit entweder einem Fehlerkorrekturblockcode oder Faltungscode nötig, um
einen fehlerfreien Empfang der Softwaredatei durch die entfernten
Stationen sicher zu stellen.
-
XP
000690051 beschreibt eine Performanceanalyse von zwei Fehlerkontrollschemata
basierend auf der Aneinanderfügung
von Reed-Solomon- und Faltungscodes. Das erste Schema ist ein ybrid-Selektiv-Wiederholungs-ARQ-Protokoll des Typs
I, wobei die Fehlerdetektierungsfähigkeit des RS-Außencodes
verwendet wird, um Anfragen hinsichtlich einer erneuten Übertragung
auszulösen. Das
zweite Schema ist ein Hybrid-Selektiv-Wiederholungs-ARQ-Protokoll des Typs
II, wobei die Fehlerkorrekturfähigkeit
an die variablen Kanalzustände angepasst
wird.
-
WO-A-96/22639
beschreibt ein Verfahren und eine Vorrichtung zum Anordnen verschiedener Datentypen
mit verschiedenen Raten in ein einmalig strukturiertes Format für die Übertragung.
Die Daten sind in Rahmen mit einer vorbestimmten Zeitdauer für die Übertragung
organisiert. Die Rahmen werden in Abhängigkeit von den Daten gemäß einer
von mehreren Raten organisiert. Vocoder-Daten werden von einem Vocoder
und einer von mehreren Raten vorgesehen und in Rahmen gemäß einem
vorbestimmten Format organisiert. Die Rahmen können so formatiert werden,
dass Vocoder-Daten mit Nicht-Vocoder-Daten gemeinsam vorgesehen
werden, um eine höchstmögliche Rahmendatenrate
zu erreichen.
-
Patent
Abstracts of Japan, Band 97, Nr. 4, 30. April 1997 beschreibt ein
Fehlerkorrektursystem. Ein Fehlerdetektierungscodecodierer generiert
einen CRC-Code und addiert diesen zu den Eingabedaten. Die resultierenden
Daten werden mit einem Reed-Solomon-Code codiert und dann mit einem Faltungscode
codiert. Der entsprechende Decodierer führt ein Decodieren mit einem
Faltungscode gefolgt durch ein Decodieren mit einem Reed-Solomon-Code und eine Fehlerdetektierung
mittels des CRC-Codes aus.
-
Zusammenfassung
der Erfindung
-
Die
vorliegende Erfindung sieht ein neues und verbessertes Kommunikationssystem
vor, das Fehlerschutz ausreichend für Dateitransfer über die Luftschnittstelle
vorsieht. Gemäß der vorliegenden Erfindung
werden Daten mittels eines verketteten Codes, der drei Codierungsschritte
aufweist, codiert und decodiert, wobei die Schritte das Blockcodieren oder
Faltungscodieren, das CRC-Blockcodieren und Faltungscodieren sind.
Die codierten Daten werden moduliert und über die Luft gesendet bzw. übertragen.
Die Vorrichtung und das Verfahren zum Codieren einer Datendatei
für den
Transfer über
die Luft gemäß erster
und zweiter Aspekte der Erfindung sind in den Ansprüchen 1 bzw.
14 angeführt.
Die Vorrichtung und das Verfahren zum Empfangen einer codierten
Datendatei, die über
die Luft transferiert wurde, gemäß dritter
und vierter Aspekte der Erfindung sind in Ansprüchen 6 bzw. 15 angeführt.
-
Es
ist ein Ziel dieser Erfindung einen fehlerfreien Datentransfer über die
Luft vorzusehen, während
die Konformität
mit dem IS-99-Standard beibehalten wird, und zwar durch Einsatz
von Reed-Solomon-Codierung, CRC-Blockcodierung
und Faltungscodierung. Die Datei wird in Datenrahmen partitioniert,
die Reed-Solomon-codiert werden. CRC-Blockcodierung wird dann auf
die Reed-Solomon-codierten Daten angewendet. Die CRC-codierten Daten werden
faltungscodiert. Die CRC-Blockcodierung und Faltungscodierung wird
gemäß dem IS-99-Standard
ausgeführt.
Der zusätzliche
Reed-Solomon-Codierungsschritt
sieht eine verbesserte Fehlerkorrekturfähigkeit vor, wobei die Kompatibilität mit dem IS-99-Standard
beibehalten wird.
-
Es
ist ein weiteres Ziel dieser Erfindung einen fehlerfreien Dateitransfer über die
Luft vorzusehen, während
die Konformität
zu dem IS-99-Standard beibehalten wird. Die Datei wird in Datenrahmen partitioniert
und in einem ersten Codierungsschritt codiert. Der erste Codierungsschritt
kann Blockcodierung oder Faltungscodierung sein. Die Ausgabe von
dem ersten Codierer wird CRC-blockcodiert. Die CRC-codierten Daten
werden dann faltungscodiert.
-
Die
CRC-Blockcodierung und Faltungscodierung wird gemäß dem IS-99-Standard ausgeführt. Der
zusätzliche
erste Codierungsschritt erhöht
den Codierungsgewinn, während
die Kompatibilität
mit dem IS-99-Standard beibehalten wird.
-
Es
ist noch ein weiteres Ziel der Erfindung einen fehlerfreien Datentransfer über die
Luft vorzusehen, und zwar durch Vorsehen eines ersten Codierungsschrittes
zusammen mit Faltungscodierung. Die Datei wird in Datenrahmen partitioniert
und mittels eines ersten Codierungsschritts codiert. Der erste Codierungsschritt
kann Blockcodierung oder Faltungscodierung sein. Wenn Blockcodierung
verwendet wird, wird Reed-Solomon-Codierung bevorzugt. Die Ausgabe
von dem ersten Codierungsschritt wird faltungscodiert. Die Ausgabedaten
werden dann über
die Luft transferiert.
-
Die
vorhergehenden Ziele, zusammen mit anderen Zielen, sowie Merkmale
und Vorteile dieser Erfindung werden im Folgenden noch offensichtlicher,
wenn auf die folgende Beschreibung, Ansprüche und die beigefügten Zeichnungen
Bezug genommen wird.
-
Kurze Beschreibung
der Zeichnungen
-
Die
Merkmale, Ziele und Vorteile der vorliegenden Erfindung werden noch
offensichtlicher aus der unten angeführten detaillierten Beschreibung, wenn
diese zusammen mit den Zeichnungen gesehen wird, in denen gleiche
Bezugszeichen Entsprechendes durchgängig identifizieren und wobei
die Figuren Folgendes zeigen:
-
1 ist
ein Blockdiagramm eines Digitalübertragungssystems;
-
2 ist
ein beispielhaftes Blockdiagramm des Codierers der Zentralstation;
-
3 ist
ein beispielhaftes Blockdiagramm des IS-99-Modulators und der Signalverarbeitung
innerhalb der Zentralstation;
-
4 ist
ein Diagramm, das den Inhalt der Datenquelle darstellt;
-
5 ist
ein Diagramm, das den Inhalt des Puffers nach dem CRC-Blockcodierer darstellt;
-
6 ist
ein beispielhaftes Blockdiagramm des IS-99-Demodulators und der
Signalverarbeitung innerhalb der entfernten Station;
-
7 ist
ein beispielhaftes Blockdiagramm des Decodierers der entfernten
Station;
-
8 ist
ein Diagramm eines Rate-(7, 3), GF(23)-Reed-Solomon-Codierers;
-
9 ist
ein Diagramm des Rate-(88, 80)-CRC-ßlockcodierers, der konform
ist mit dem IS-99-Standard;
-
10 ist
ein Diagramm des Rate-1/2, K = 9-Faltungscodierers, der mit dem
IS-99-Standard konform ist; und
-
11 ist
ein Diagramm eines Rate-3/4-Punktierungszustands von einem Rate-1/2-Faltungscodierer.
-
Detaillierte
Beschreibung der bevorzugten Ausführungsbeispiele
-
Bezug
nehmend auf die Figuren, zeigt 1 ein Blockdiagramm
eines Digitalübertragungssystems
der vorliegenden Erfindung. Ein solches System ist ein Codemultiplex-Vielfachzugriffs-
bzw. CDMA-Kommunikationssystem (CDMA = code division multiple access).
In dem beispielhaften Ausführungsbeispiel
enthält
die Zentralstation 2 einen großen Betrag von Information,
zum Beispiel eine große
Softwaredatei, die zu einer großen
Anzahl von entfernten Stationen 4 herunter geladen werden
soll. Zentralstation 2 codiert die Daten und sendet das
Signal über Vorwärtskanäle 10.
Entfernte Stationen 4 empfangen das Signal, decodieren
die Daten und senden Anfragen über
Rückwärtskanäle 12 und
zwar hinsichtlich einer erneuten Übertragung der Datenrahmen,
die fehlerhaft empfangen wurden. Die Vorwärts- und Rückwärtskanäle 10 und 12 können Satellitenübertragungskanäle oder
terrestrische Übertragungskanäle sein.
-
Das
beispielhafte Blockdiagramm des Codierers innerhalb der Zentralstation 2 ist
in der 2 gezeigt. Datenquelle 20 enthält den großen Datenbetrag, wie
zum Beispiel eine Softwaredatei. Die Daten werden in Datenrahmen
(siehe 4) partitioniert und zu dem Reed-Solomon-Codierer 22 gesendet. Der
Reed-Solomon-Codierer 22 codiert die Datenrahmen unter
Verwendung von Reed-Solomon-Blockcodierung und liefert die Reed-Solomon-codierten
Daten an Puffer 24. Steuerprozessor 26 verbindet
die Datenquelle 20, Reed-Solomon-Codierer 22 und Puffer 30.
Der Steuerprozessor 26 steuert die Art und Weise, auf die
Daten von Datenquelle 20 vorgesehen werden und den Betrieb
von Reed-Solomon-Codierer 22 und die Art und Weise, wie
die Reed-Solomon-decodierten Daten an Puffer 24 vorgesehen
werden. Für
die erneute Übertragung von
Datenrahmen weist Steuerprozessor 26 Datenquelle 20 an,
die angeforderten Datenrahmen vorzusehen. Steuerprozessor 26 kann
in einem Mikrocontroller, einem Mikroprozessor, einem Digitalsignalverarbeitungs-
bzw. DSP-Chip (DSP = digital signal processing) oder einem ASIC,
der zum Ausführen
der hierin beschriebenen Funktion programmiert ist, implementiert
sein.
-
Das
beispielhafte Blockdiagramm des IS-99-Modulators (IS-99-MOD) 30 und
der Signalverarbeitung innerhalb der Zentralstation 2 ist
in 3 gezeigt. Innerhalb des IS-99-Modulators 30 empfängt CRC-Blockcodierer 32 die
Reed-Solomon-codierten Daten, in Datenrahmen, vom Puffer 24 und CRC-Block-codiert die
Datenrahmen, um die CRC-Bits zu erhalten. Die Datenrahmen und die CRC-Bits
sind in dem Puffer 34 gespeichert. Faltungscodierer 36 empfängt die
CRC-codierten Daten vom Puffer 34, faltungscodiert die
CRC-codierten Daten und liefert die faltungscodierten Daten an Blockinterleaver
bzw. -verschachteler 38. Blockinterleaver 38 ordnet
die Bits um und sieht die interleavten Daten an Modulator (MOD) 40 vor.
Modulator 40 spreizt die interleavten Daten mit dem langen
Pseudorausch- bzw. PN-Code (PN = pseudo-noise), dem Walsh-Code und
den kurzen PNI- und PNQ-Codes. Die gespreizten Daten werden an Sender
(TMTR) 42 vorgesehen, der das Signal hochkonvertiert, filtert
und verstärkt.
Das resultierende HF-Signal wird durch Duplexer 44 gelenkt
und von Antenne 50 gesendet.
-
Die
CRC-Blockcodierung und Faltungscodierung wird gemäß dem IS-99-Standard ausgeführt. Somit
sind der CRC-Blockcode und der Faltungscode für einen gegebenen Betriebsmodus
vordefiniert. Der IS-99-Standard spezifiziert außerdem die genaue Reihenfolge,
mit der Daten in den Blockinterleaver 38 durch Faltungscodierer 36 eingeschrieben werden
und von Blockinterleaver 38 durch Modulator 40 ausgelesen
werden. Eine beispielhafte Darstellung des Inhalts der Datenquelle 20 ist
in der 4 gezeigt. Daten innerhalb der Datenquelle 20 werden in
Datenrahmen partitioniert. Zum Beispiel weist Datenrahmen 1 Datenbits
m11, m12, m13 und so weiter auf und Datenrahmen 2 weist Datenbits
m21, m22, m23 und so weiter auf. Die Größe eines Datenrahmens ist durch
den IS-99-Standard für
einen gegebenen Betriebsmodus vorbestimmt. Bei der 9,6 Kbps-Datenrate
gibt es zum Beispiel 172 Datenbits pro Datenrahmen. Jeder Datenrahmen
in der 4 wird aus Gründen
der Einfachheit mit nur neun Datenbits dargestellt. In einem Kommunikationssystem, das
unabhängig
zu dem IS-99-Standard betrieben wird, können Datenrahmengrößen mit
beliebigen Abmessungen, was in maximaler Performance und minimaler
Hardwarekomplexität
resultiert, innerhalb des Rahmens der vorliegenden Erfindung berücksichtigt
werden.
-
Reed-Solomon-Blockcode
ist ein nicht-binärer
Code, der auf Symbolen, zusammengesetzt aus mehr als einem Bit,
operiert. Daher werden die Datenbits von der Datenquelle 20 in
q-Bit-Symbole kombiniert. In dem beispielhaften Ausführungsbeispiel werden
die Datenbits innerhalb desselben Datenrahmens kombiniert, um ein
q-Bit-Symbol zu bilden. Zum Beispiel werden Datenbits m11, m12,
m13 von Datenrahmen 1 kombiniert, um das erste Datensymbol zu bilden. Ähnlich werden
Datenbits m21, m22, m23 und so weiter von Datenrahmen 2 kombiniert,
um das zweite Datensymbol zu bilden. Die Coderate (n, k) des Reed-Solomon-Codierers 22 bestimmt
die Länge
der Ausgabecodewörter.
Ein Rate-(n, k)-Reed-Solomon-Codierer 22 codiert k Datensymbole
in ein Codewort von n Codesymbolen. Die Coderate bestimmt die Fehlerkorrekturfähigkeit
des Blockcodes und die Speicheranforderungen. Die vorliegende Erfindung bezieht
sich auf die Verwendung einer beliebigen Coderate (n, k).
-
Reed-Solomon-Code
ist ein systematischer Blockcode. In einem systematischen Blockcode
bilden die k Datensymbole die ersten k Codesymbole des Codewortes.
Die verbleibenden n – k-Codesymbole,
auf die als die Paritäts- bzw. Parity-Symbole
Bezug genommen wird, werden durch eine lineare Kombination der k
Datensymbole gebildet.
-
In
dem beispielhaften Ausführungsbeispiel codiert
der Reed-Solomon-Codierer 22 die
Datenrahmen von der Datenquelle 20 spaltenweise und speichert
die Ausgabecodewörter
spaltenweise im Puffer 24. Verarbeitung der Daten in Datenquelle 20 spaltenweise
und Herausschreiben in den Puffer 24 spaltenweise resultiert
darin, dass Datensymbole, die Bits m11, m21, m31 und so weiter (siehe 4)
enthalten, in Codesymbole codiert werden, die Bits m11, m21, m31
und so weiter zusammen mit Parity-Symbolen, die Bits R11, R12 und
so weiter (siehe 5) enthalten, codiert werden.
In dem beispielhaften Ausführungsbeispiel
sind die k Datensymbole von k Datenrahmen und die n Codesymbole
des Codewortes werden über
n Rahmen geschrieben. Diese Verarbeitungsreihenfolge erhält die Originaldatenrahmen
und resultiert darin, dass die Reed-Solomon-Parity-Symbole nach
den Datenrahmen (siehe 4 und 5) angefügt werden.
Durch Erhalten der Originaldatenrahmen ist der Reed-Solomon-Codierungsschritt transparent
für die
nachfolgende Signalverarbeitung und erlaubt es die Reed-Solomon-codierten
Daten gemäß dem IS-99-Standard
ohne Modifikation der Hardware zu verarbeiten.
-
Alternativ
können
die Datensymbole ebenfalls durch ein anderes Ordnungsverfahren gebildet werden
und in einer anderen Reihenfolge codiert werden. Zum Beispiel können die
Datenbits von unterschiedlichen Datenrahmen kombiniert werden, um das
q-Bit-Symbol zu bilden. Somit können
Datenbits m11, m21, m31 und so weiter kombiniert werden, um das
erste Datensymbol zu bilden und Datenbits m12, m22, m32 und so weiter
können
kombiniert werden um das zweite Datensymbol zu bilden. Das Reed-Solomon-Codieren
kann dann zeilenweise ausgeführt werden.
Die zeilenweise Verarbeitung re sultiert in Codierung der Datensymbole,
die Datenbits m11, m12, m13 usw. enthalten. Die Reed-Solomon-Parity-Symbole
können
dann in dieselben Zeilen wie die Datensymbole geschrieben werden
oder können
an eine andere Stelle in dem Puffer 24 (z.B. angefügt an den
letzten Datenrahmen) geschrieben werden. Ein Erhalten der Originaldatenrahmen
wird bevorzugt, da die nachfolgende Codierung mit dem IS-99-Standard im
Einklang stehen kann. Die vorliegende Erfindung ist bei beliebigen
Ordnungsverfahren, die eingesetzt werden können um die Datensymbole zu
bilden und zu codieren, anwendbar.
-
Ein
beispielhaftes Blockdiagramm eines IS-99-Demodulators (IS-99-DEMOD) 80 und
die Signalverarbeitung innerhalb der entfernten Station 4 ist in
der 6 gezeigt. Das beispielhafte Blockdiagramm des
Decoders innerhalb der entfernten Station 4 ist in 7 gezeigt.
Der Decoder innerhalb der entfernten Station 4 führt die
umgekehrte Operation des Codierers innerhalb der Zentralstation 2 aus.
Bezug nehmend auf 6 wird das gesendete Signal an
Antenne 62 empfangen durch Duplexer 64 gelenkt und
an Empfänger
(RCVR) 66 geliefert. Empfänger 66 konvertiert
das Signal herunter, filtert, verstärkt und quantisiert das Signal
um das digitalisierte Basisbandsignal zu erhalten. Demodulator (DEMOD) 82 empfängt das
digitalisierte Basisbandsignal und führt die Entspreizungsfunktion
unter Verwendung des kurzen PN-Codes,
des Walsh-Codes und des langen PN-Codes aus. Die demodulierten Daten
werden an den Blockdeinterleaver 84 geliefert. Der Blockdeinterleaver 84 ordnet
die Bits in der umgekehrten Reihenfolge, die bei der Zentralstation 2 ausgeführt wurde,
um. Die deinterleavten Daten werden an den Viterbi-Decodierer 86 geliefert
und faltungsdecodiert. Die faltungsdecodierten Daten werden in dem
Puffer 88 gespeichert. CRC-Checkelement 90 empfängt die faltungsdecodierten
Daten und führt
den CRC-Check aus, um Rahmenfehler zu bestimmen. Die Demodulation
und die Decodierung, wie sie oben beschrieben ist, ist im Einklang
mit dem IS-99-Standard.
-
Die
nachfolgende Signalverarbeitung wird durch das Blockdiagramm, das
in 7 gezeigt ist, dargestellt. Die CRC-geprüften Daten
vom IS-99- Demodulator 80,
spezifisch CRC-Checkelement 90, werden an Puffer 102 vorgesehen.
Der Inhalt des Puffers 102 ist in 5 dargestellt
abzüglich
der CRC-Bits auf der rechten Seite. Der Reed-Solomon-Decodierer 104 empfängt die
CRC-geprüften Daten
vom Puffer 102 und kann Reed-Solomon-Decodierung auf die CRC-geprüften Daten
ausführen, was
in Übereinstimmung
mit der Verarbeitungsreihenfolge, die von dem Reed-Solomon-Codierer 22 verwendet
wird, ist. Die Reed-Solomon-decodierten Daten werden an die Datensenke 106 vorgesehen.
-
Typischerweise
ist der Reed-Solomon-Decodierer 104 nicht in der Lage,
das Codewort bis zu dem Zeitpunkt zu decodieren, bis alle Codesymbole für das Codewort
empfangen wurden. Für
Kommunikationen, die nicht die zusätzliche Decodierungsverzögerung tolerieren
können
und die nicht die zusätzliche
Fehlerkorrekturfähigkeit,
die von dem Reed-Solomon-Decodierer 104 vorgesehen wird,
benötigen, z.B.
Sprachkommunikation, können
die CRC-geprüften Daten
direkt zur Datensenke 106 vorgesehen werden. Für Kommunikationen,
in denen zusätzliche Decodierungsverzögerung toleriert
werden kann und wo zusätzliche
Fehlerkorrekturfähigkeit
benötigt
wird, wird der Reed-Solomon-Decodierer 104 verwendet, um
die CRC-geprüften
Daten zu decodieren.
-
Das
Steuerelement bzw. Controller 70 ist mit Puffer 102,
Reed-Solomon-Decodierer 104 und
Datensenke 106 verbunden. Steuerelement 70 bestimmt,
ob der Reed-Solomon-Decodierungsschritt ausgeführt werden muss, basierend
auf detektierten Rahmenfehlern von dem CRC-Prüfelement 90 und steuert
die Reed-Solomon-Decodierung. Speziell steuert das Steuerelement 70 die
Art und Weise wie die CRC-geprüften
Daten von dem Puffer 102 gelesen werden, den Betrieb des
Reed-Solomon-Decodierers 104 und die Art und Weise, wie
die Reed-Solomon-decodierten Daten an die Datensenke 106 vorgesehen
werden. Das Steuerelement 70 kann in einem Mikrocontroller,
einem Mikroprozessor, einem Digitalsignalverarbeitungschip bzw.
DSP-Chip oder einem
ASIC, der für
die oben beschriebenen Funktionen programmiert ist, implementiert
sein.
-
In
einem CDMA-Kommunikationssystem das konform ist mit dem IS-99-Standard, werden
die CRC-Bits nur dazu verwendet, Rahmenfehler zu detektieren, und
es gibt keine Fähigkeit,
Fehler innerhalb des Rahmens zu korrigieren. In der vorliegenden
Erfindung sieht der zusätzliche
Reed-Solomon-Decodierungsschritt
Fehlerkorrekturmöglichkeiten
vor und eliminiert die meisten Fehler. In gelegentlichen Fällen, in
denen der Reed-Solomon-Decodierer 104 nicht in der Lage
ist, die Fehler zu korrigieren, kann eine Frage hinsichtlich des
erneuten Sendens generiert werden. Die Anfrage wird vom Sender (TMTR) 68 bearbeitet,
durch Duplexer 64 gelenkt und von Antenne 62 (siehe 6)
gesendet bzw. übertragen.
An der Zentralstation 2 (siehe 3) wird
das Signal von Antenne 50 empfangen, durch Duplexer 44 gelenkt
und vom Empfänger-(RCVR)-Teilsystem 46 verarbeitet.
Das Empfängerteilsystem 46 liefert die
Anfrage an Steuerprozessor 26. Steuerprozessor 26 kann
ein erneutes Senden einiger oder aller Datenrahmen, die fehlerhaft
empfangen wurden (siehe 2) befehligen.
-
In
der vorliegenden Erfindung kann Steuerelement 70 mehrere
Funktionen in Abhängigkeit
von dem Ergebnis vom CRC-Prüfelement 90 ausführen. Für die folgende
Diskussion wird angenommen, dass ein Rate-(n, k)-Reed-Solomon-Code an der Zentralstation 2 verwendet
wird. Für
die Diskussion wird fernerhin das beispielhafte Ausführungsbeispiel
angenommen, wobei die Datenrahmen Bits innerhalb einer Zeile aufweisen
und die Reed-Solomon-Codewörter Symbole
innerhalb einer Spalte aufweisen.
-
In
dem ersten Szenario, wenn es keine Rahmenfehler gibt, kann das Steuerelement 70 den Reed-Solomon-Decodierungsschritt
auslassen, da es keinen Fehler zu korrigieren gibt. Weiterhin kann das
Steuerelement 70 eine Übertragung
einer Nachricht bzw. Mitteilung zu der zentralen Station 2 befehligen,
mit der bestätigt
wird, dass die k Datenrahmen ohne Fehler empfangen wurden. Da es
keinen Bedarf für
die Reed-Solomon-Parity-Symbole für diese Datenrahmen gibt, ist
die Übertragung
der Reed-Solomon-Parity-Symbole verschwenderisch. Daher kann die
Zentralstation 2 die Übertragung
der un nötigen
Reed-Solomon-Parity-Symbole für
die Codewörter,
die korrekt von der entfernten Station 4 empfangen wurden,
eliminieren.
-
In
dem zweiten Szenario, wenn die Anzahl von Rahmenfehlern größer als
Null jedoch kleiner oder gleich (n – k) ist, kann Steuerelement 70 den Reed-Solomon-Decodierer 104 anweisen,
Reed-Solomon-Decodierung auf die CRC-geprüften Daten unter Verwendung
von einem der vielen Ausführungsbeispiele
ausführen.
Es ist auf dem Fachgebiet bekannt, dass ein Reed-Solomon-Code mit n – k Parity-Symbolen, t Symbolfehler
korrigieren kann und gleichzeitig f gelöschte oder fehlende Symbole
innerhalb eines Codewortes füllen
kann vorausgesetzt dass (2t + f) ≤ (n – k). Steuerelement 70 kann
eine Reed-Solomon-Decodierung der CRC-geprüften Daten mittels eines der
drei Ausführungsbeispiele,
die unten beschrieben sind, anweisen. Die drei Ausführungsbeispiele
können
ebenfalls kombiniert werden um andere Reed-Solomon-Decodierungsprozesse zu ergeben.
Andere Ausführungsbeispiele
oder Kombinationen der unten beschriebenen Ausführungsbeispiele liegen innerhalb
des Rahmens der vorliegenden Erfindung.
-
In
dem ersten Ausführungsbeispiel
ersetzt für
jeden Rahmenfehler der von dem CRC-Prüfelement 90 detektiert
wurde, das Steuerelement 70 den gesamten Datenrahmen mit
Löschungen.
Steuerelement 70 weist dann die Reed-Solomon-Decodierung der
Datensymbole und die Löschungen
an, da es weiß,
dass die korrekten Werte der Löschungen
vom Reed-Solomon-Decodierer 104 berechnet
werden können.
-
In
dem zweiten Ausführungsbeispiel
weist Steuerelement 70 eine Reed-Solomon-Decodierung der Codewörter ohne
Modifikation der fehlerhaften Datenrahmen an. Das Ausführungsbeispiel
funktioniert gut, wenn die Fehlerereignisse innerhalb der Datenrahmen
eine kurze Dauer aufweisen. Innerhalb der Reed-Solomon-Decodierung,
wenn die Anzahl von Symbolfehlern in dem Codewort geringer als oder
gleich (n – k)/2
ist, weist die Reihenfolge der Fehlerlokatoren die Anzahl von Symbolfehlern
innerhalb des Codewortes an und der Reed-Solomon-Decodierer 104 ist
in der Lage, alle Symbolfehler in nerhalb des Codewortes zu korrigieren.
Codewörter
mit mehr als (n – k)/2
Symbolfehlern können
den Fehlerlokator in einen Fehlermodus bringen und darin resultieren,
dass der Fehlerlokator auf die falsche Position zeigt. Zum Beispiel
kann der Fehler bzw. Versagungsmodus bewirken, dass der Fehlerlokator
auf ein Symbol in einem Datenrahmen zeigt, der von dem CRC-Prüfelement 90 als
gut ausgewiesen wurde. Alternativ kann der Versagungsmodus bewirken, dass
der Fehlerlokator auf eine Position zeigt, die nicht existiert oder
mehrere Roots bzw. Lösungen
an einer Position besitzt. Codewörter
mit mehr als (n – k)/2
Symbolfehlern können
auf andere Weise, wie es unten beschrieben wird, gehandhabt werden.
-
In
dem dritten Ausführungsbeispiel
kann Steuerelement 70 den Schweregrad des Rahmenfehlers
schätzen
um den Reed-Solomon-Decodierungsprozess zu verbessern. Wie oben
angemerkt wurde, kann der Reed-Solomon-Decodierer 104 t Symbolfehler
korrigieren und gleichzeitig fünf
gelöschte
Symbole innerhalb eines Codewortes auffüllen, vorausgesetzt dass (2t
+ f) ≤ (n – k). Ein
Datenrahmen, der viele Fehlerbits enthält, kann mit Löschungen
vollständig
ausgetauscht werden, wohingegen ein Datenrahmen mit wenigen Fehlerbits
ohne Modifikationen verwendet werden kann. Steuerelement 70 ist
nicht in der Lage, den Schweregrad des Rahmenfehlers durch die Verwendung
der CRC-Prüfung
zu bestimmen, da dass CRC-Prüfelement 90 eine "harte" Anzeige für einen
Rahmenfehler, wenn dieser vorliegt, oder mehrere Bitfehlerbits innerhalb des
Datenrahmens vorsieht. Steuerelement 70 kann jedoch eine
beliebige "soft" bzw. "weiche" Metrik, wie zum
Beispiel die akkumlierte Viterbi-Metrik oder die erneut codierte
CRC-Symbolfehlerrate, verwenden um den Schweregrad des Datenrahmenfehlers
zu bestimmen. Wenn die weiche Metrik eine bestimmte Schwelle überschreitet,
tauscht Steuerelement 70 den gesamten Datenrahmen mit Löschungen
aus. Anderenfalls wird der Datenrahmen ohne Modifikation verwendet.
Steuerelement 70 weist dann die Reed-Solomon-Decodierung
der Codewörter,
die Löschungen
und/oder mögliche
Symbolfehler enthalten, an.
-
Und
in dem dritten Szenario, wenn die Anzahl der Rahmenfehler größer ist
als (n – k),
kann das Steuerelement 70 den Reed-Solomon-Decodierungsschritt
initiieren oder verzögern,
da möglicherweise
mehr Symbolfehler, die durch die Reed-Solomon-Decodierung 104 korrigiert
werden können,
vorliegen. CRC-Prüfelement 90 zeigt
einen Rahmenfehler an, wenn ein oder mehrere Bits innerhalb des
Datenrahmens fehlerhaft empfangen werden. Ein Rahmenfehler zeigt
nicht an, dass alle Bits innerhalb des Datenrahmens fehlerhaft empfangen
werden. Tatsächlich
können
die meisten der Bits innerhalb des fehlerhaften Datenrahmens korrekt
empfangen worden sein.
-
Steuerelement 70 kann
die Reed-Solomon-Decodierung der Codewörter sogar beginnen, wenn die
Anzahl von Rahmenfehlern größer ist
als (n – k)
durch Verwendung von entweder dem zweiten oder dritten Ausführungsbeispiel
oder einer Kombination der zweiten und dritten Ausführungsbeispiele, wie
es für
das zweite Szenario beschrieben ist. Somit kann Steuerelement 70 die
Reed-Solomon-Decodierung der Codewörter anweisen, ohne jegliche
Modifikation der Fehlerdatenrahmen. Alternativ kann Steuerelement 70 einige
der Fehlerrahmen durch Löschungen
austauschen, basierend auf einer Soft-Metrik, wie oben beschrieben, und kann
die Reed-Solomon-Decodierung der Codewörter, die Löschungen und/oder mögliche Symbolfehler
enthalten, anweisen.
-
Steuerelement 70 stellt
sicher, dass die Anzahl der gelöschten
Datenrahmen nicht (n – k) übersteigt.
Jeder Datenrahmen, der vollständig
durch Löschungen
ersetzt wird, reduziert die Fähigkeit
des Reed-Solomon-Decodierers 104 andere Symbolfehler in
dem Codewort zu korrigieren. Tatsache ist, dass f Löschungen
innerhalb eines Codewortes die Anzahl von redundanten Symbolen in
dem Codewort auf (n – k – f) reduziert
und den Reed-Solomon-Decodierer 104 begrenzt nur (n – k – f)/2 Symbolfehler
innerhalb des Codewortes zu korrigieren.
-
Alternativ,
in dem dritten Szenario, kann Steuerelement 70 die Reed-Solomon-Decodierung verzögern, wenn
die Anzahl von Rahmenfehlern größer ist
als (n – k)
oder wenn die Anzahl von Symbolfehlern größer ist als (n –k)/2. Steuerelement 70 kann die
erneute Übertragung
anfordern, und zwar unter Verwendung von einem von mehreren Ausführungsbeispielen.
In dem ersten Ausführungsbeispiel
kann Steuerelement 70 die erneute Übertragung von allen Datenrahmen,
die fehlerhaft empfangen wurden, oder von genug fehlerhaft empfangenen
Datenrahmen, um die Reed-Solomon-Decodierung der verbleibenden Datenrahmen
auszuführen,
anfordern. Wenn Steuerelement 70 z.B. bestimmt, dass die
Anzahl der Datenrahmen, die fehlerhaft empfangen wurden, (n – k) + 3
ist, kann Steuerelement 70 die erneute Übertragung von drei oder mehr
Datenrahmen beantragen. Nach korrektem Empfang von drei oder mehr
Datenrahmen, die zuvor fehlerhaft empfangen wurden, ist der Reed-Solomon-Decodierer 104 in
der Lage, alle Datenrahmen, die fehlerhaft empfangen wurden, zu
decodieren (und zu korrigieren). Nachdem genug Rahmen, die zuvor
fehlerhaft empfangen wurden, nachfolgend korrekt empfangen wurden,
so dass die Anzahl von Rahmenfehlern kleiner ist als (n – k), kann
Steuerelement 70 die Reed-Solomon-Decodierung initiieren.
In dem zweiten Ausführungsbeispiel
kann Steuerelement 70 die erneute Übertragung der fehlerhaft empfangenen
Codewörter
beantragen ohne Datenrahmenfehler zu berücksichtigen. Dieses Ausführungsbeispiel
kann effizienter sein als das erste Ausführungsbeispiel, da viele Rahmenfehler
vorliegen können,
jedoch nur einige wenige Codewortfehler. Tatsächlich kann Steuerelement 70 sich entscheiden,
das erste oder zweite Ausführungsbeispiel
zu verwenden, nachdem bestimmt wurde, welches Ausführungsbeispiel
in weniger erneuten Übertragungen
resultiert.
-
Als
ein Beispiel für
das dritte Szenario wird die Verwendung eines Rate(15, 11)-Reed-Solomon-Codes
angenommen, und es wird weiterhin ange nommen, dass die Zentralstation 2 zu
einer entfernten Station 4 sendet. Es wird weiterhin angenommen,
dass die entfernte Station 4 Datenrahmen 1, 3, 4, 7 und
9 fehlerhaft empfängt.
Reed-Solomon-Decodierer 104 ist in der La ge, zwei Rahmenfehler
oder weniger zu korrigieren oder die Werte von vier Löschungen
innerhalb des Codewortes zu berechnen.
-
Steuerelement 70 kann
den Reed-Solomon-Decodierungsschritt initiieren, sogar dann wenn die
Anzahl von Rahmenfehlern größer ist
als (n – k). Steuerelement 70 kann
die Reed-Solomon-Decodierung der Codewörter ohne jegliche Modifikation
der Datenrahmen, die fehlerhaft empfangen wurden, anweisen. Es kann
die hohe Wahrscheinlichkeit bestehen, dass jedes Codewort zwei Symbolfehler
oder weniger enthält,
obwohl es fünf
Rahmenfehler gibt. Wenn dies der Fall ist, ist Reed-Solomon-Decodierer 104 in
der Lage, alle Symbolfehler zu korrigieren, obwohl die Anzahl der
Rahmenfehler größer ist
als (n – k).
-
Steuerelement 70 kann
außerdem
einige Datenrahmen, die fehlerhaft emp fangen wurden, vollständig mit
Löschungen
basierend auf einer Soft-Metrik austauschen. Zum Beispiel kann Steuerelement 70 die
Datenrahmen 3 und 7 mit Löschungen
austauschen und eine Reed-Solomon-Decodierung der Codewörter, die
zwei Löschungen
und möglicherweise
bis zu einem Symbolfehler in einem gegebenen Reed-Solomon-Codewort
enthalten, anweisen. Die zwei Löschungen
reduzieren die Anzahl der redundanten Symbole von vier auf zwei.
Daher ist der Reed-Solomon-Decodierer 104 nur in der Lage,
einen Symbolfehler in jedem Codewort zu korrigieren.
-
Alternativ
kann die entfernte Station 4 eine Nachricht zu der Zentralstation 2 senden,
die anzeigt, dass die Datenrahmen fehlerhaft empfangen wurden. Steuerprozessor 26 innerhalb
der Zentralstation 2 kann die erneute Übertragung von einem oder mehreren
Datenrahmen anweisen, da der korrekte Empfang von nur einem Datenrahmen
durch die entfernte Station 4 es dem Reed-Solomon-Decodierer 104 ermöglichen
würde,
erfolgreich die anderen vier Datenrahmen, die fehlerhaft empfangen
wurden, zu decodieren.
-
Unter
Verwendung des obigen Beispiels wird weiterhin angenommen, dass
die zentrale Station 2 ebenfalls zu einer zweiten entfernten
Station 4 sendet und dass die zweite entfernte Station 4 die
Datenrahmen 1, 3, 5, 7 und 9 fehlerhaft empfängt. Die ersten und zweiten
entfernten Stationen 4 können
eine Nachricht an die Zentralstation 2 senden, die anzeigt, dass
die Datenrahmen fehlerhaft empfangen wurden. Steuerprozessor 26 kann
die erneute Übertragung
von nur einem Datenrahmen 1 anweisen, da der Empfang dieses Datenrahmens
durch die erste und zweite entfernte Station es den Reed-Solomon-Decodierern 104 in
jeder der zwei entfernten Stationen 4 ermöglichen
würde,
die anderen vier Datenrahmen, die fehlerhaft empfangen wurden, erfolgreich
zu decodieren. Daher erlaubt der korrekte Empfang des erneut gesendeten
Datenrahmens 1 es der ersten entfernten Station 4 die Datenrahmen
3, 4, 7 und 9, die fehlerhaft empfangen wurden, zu korrigieren. Ähnlich erlaubt
der korrekte Empfang des erneut übertragenen
Datenrahmens 1 es der zweiten entfernten Station 4 die
Datenrahmen 3, 5, 7 und 9, die fehlerhaft empfangen wurden, zu korrigieren.
Alternativ, kann Steuerprozessor 26 die erneute Übertragung
von allen Datenrahmen, die von beiden entfernten Stationen 4 fehlerhaft
empfangen wurden, anweisen. In diesem Fall werden die Datenrahmen
1, 3, 4, 5, 7 und 9 durch die Zentralstation 2 erneut gesendet. Zu
guter Letzt können
Steuerelemente 70 innerhalb der entfernten Station 4 den
Reed-Solomon-Decodierungsschritt initiieren, obwohl jede entfernte
Station 4 fünf
Rahmenfehler empfängt.
-
In
der vorliegenden Erfindung stellt der zusätzliche Codierungsgewinn, der
von dem zusätzlichen
Reed-Solomon-Codierungsschritt vorgesehen wird, einen korrekten
Datenempfang durch viele entfernte Stationen 4 sicher und
minimiert die Anzahl von Anfragen nach erneuter Übertragung. Zum Zwecke der
Darstellung wird die Verwendung eines Reed-Solomon-Blockcodes mit
k/n = 1/1,35 angenommen und es wird angenommen, dass 1350 Codesymbole,
die 1000 Datensymbole enthalten, gesendet werden. Weiterhin wird
angenommen, dass die Wahrscheinlichkeit der Löschung (z.B. mindestens n – k Symbole
in einem Codewort werden fehlerhaft empfangen) 20% ist. Es kann
gezeigt werden, dass die Übertragung
von 1350 Codesymbolen, die 1000 Datensymbole enthalten, von 999
aus 1000 entfernten Stationen 4 korrekt empfangen werden können. Somit
verbessert der Reed-Solomon- Codierungsschritt
die Codewortfehlerrate von 20% auf ungefähr 0,1%. Entfernte Stationen 4,
die die Codesymbole fehlerhaft empfangen, können die Zentralstation bzw.
zentrale Station 2 informieren, so dass die Datenrahmen
oder die Codewörter,
die Codesymbolen die fehlerhaft empfangen wurden entsprechen, erneut
gesendet werden. Das erneute Senden wird fortgesetzt, bis die Codesymbole
ohne Fehler empfangen werden.
-
Die
Theorie und der Betrieb von Reed-Solomon-Blockcodierung ist auf
dem Fachgebiet bekannt und in den zuvor zitierten Dokumenten beschrieben. Der
Betrieb des Reed-Solomon-Codierers und -Decodierers wird unten kurz
beschrieben um beim Verständnis
und der Würdigung
der vorliegenden Erfindung zu helfen.
-
In
einem Reed-Solomon-Blockcode werden q Datenbits kombiniert um ein
q-Bitsymbol zu bilden. Reed-Solomon-Code
erreicht die größtmögliche Codeminimumdistanz
(dmin) für
einen beliebigen linearen Code mit derselben Eingabe-(k)- und Ausgabe-(n)-Blocklänge. Die
Minimaldistanz bestimmt die Fehlerkorrekturfähigkeit des Codes. Der (n, k)-Reed-Solomon-Code
ist in der Lage, bis zu (n – k)/2
Symbolfehler innerhalb eines Blocks von n Codesymbolen zu korrigieren.
-
Ein
beispielhafter Reed-Solomon-Codierer ist in 8 für einen
Rate-(7, 3)-Code
definiert über GF(23) gezeigt, wobei q = 3, n = 7, k = 3 und
die Daten und Codesymbole sind definiert durch den Satz {0, 1, α, α2, α3, α4, α5, α6}.
Das Generatorpolynom ist g(x) = x4 + g3·x3 + g2·x2 + g1·x1 + g0 = x4 + α3·x3 + x2 + α·x1 + α3. Anfänglich
werden n – k
Register 136 auf 0 zurückgesetzt
und MUX1 130 und MUX2 138 werden in die "1"-Position gewählt, um es den k Datensymbolen zu
erlauben, zu den MUX-Ausgängen
gelenkt zu werden. Nachdem k Datensymbole eingeschoben wurden, werden
MUX1 130 und MUX2 138 in die "0"-Position
umgeschaltet, um es zu ermöglichen,
die n – k Paritätssymbole
von Registern 136 zu lesen. Die Koeffizienten des Generatorpolynoms
g(x) sind innerhalb des GF-Multiplizierers 132 gezeigt. „GF add" 134 sind
Galois-Feld-Addierer.
-
Der
erste Schritt im Decodieren des Reed-Solomon-Codes beinhaltet das
Berechnen eines Satzes von Syndromen von den empfangenen n Codesymbolen.
Die Syndrome zeigen an, ob ein Symbolfehler in dem Codewort aufgetreten
ist. Der Fehlerkoeffizient, σ(x)
des Fehlerpositionspolynoms wird unter Verwendung der Syndrome berechnet
und von hier werden die Fehlerlokatoren Xi und die Fehlerwerte Yi
berechnet. Mit den Fehlerlokatoren und Fehlerwerten wird die Position
der fehlerhaften Symbole bestimmt und korrigiert.
-
Der
CRC-Blockcode ist ebenfalls systematisch, zyklisch und linear. Daher
wird die Generierung der CRC-Bits auf dieselbe Art und Weise wie
für den Reed-Solomon-Code
erreicht. Tatsächlich,
da der CRC-Blockcode binär
ist, können
die Galois-Feld-Addierer durch einfache Exklusiv-ODER-Gatter ausgetauscht
werden und die Galois-Feld-Multiplizierer werden eliminiert. Das
Diagramm des Rate-(88, 80)-CRC-Blockcodierers für einen Betriebsmodus, der
von dem IS-99-Standard unterstützt
wird, ist in 9 gezeigt. Das Generatorpolynom
für Rate-(88,
80)-CRC-Blockcodierer ist g(x) = x8 + x7 + x4 + x3 + x + 1. Anfänglich werden die acht Register 152 auf
Null zurück
gesetzt und MUX1 150 und MUX2 156 werden in die "1"-Position gewählt, um es zu ermöglichen,
die Datenbits zu den MUX-Ausgängen
zu lenken. Nachdem achtzig Datenbits eingeschoben wurden, wird MUX1 150 und MUX2 156 in
die "0"-Position gebracht,
um es zu erlauben, die acht Paritätsbits von Registern 152 zu
lesen. Addieren 154 sind Modulo-2-Addierer, die in Exklusiv-ODER-Gattern implementiert
werden können.
-
Der
IS-99-Standard spezifiziert außerdem die
Verwendung des Rate(184, 172)-CRC-Blockcodierers für einige
Betriebsmodi. Das Generatorpolynom für Rate-(184,172)-CRC-Blockcodierer
ist g(x) = x12 + x11 +
x10 + x9 + x8 + x4 + x + 1.
-
Faltungscodierung
ist auf dem Fachgebiet bekannt und die Theorie und der Betrieb von
Faltungscodierung und Viterbi-Decodierung ist unter Bezugnahme auf
beliebige der zuvor zitierten Referenzdokumente ersichtlich. Die
Imp lementierung der Faltungscodierung und der Viterbi-Decodierung
wird im Kurzen unten beschrieben um eine Würdigung der vorliegenden Erfindung
zu ermöglichen.
-
Ein
Rate-1/2, K = 9-Faltungscodierer 36 gemäß dem IS-99-Standard ist in 10 gezeigt.
Die Eingabedatenbits werden gemäß dem Generatorpolynom
G(x) codiert, wobei G0 = 1EB (Hex) und G1 = 171 (Hex). Die neun
Register 180 werden durch die Constraint Lenght bzw. Einflusslänge K =
9 bestimmt. Addieren 182, 184 sind Modulo-2-Addierer.
Jedes Eingabedatenbit resultiert in zwei Codebits C0 und C1. Das
Codebitpaar bildet einen Codebranch bzw. -ast. Für einen Rate-1/2-Faltungscodierer
werden beide Codebits gesendet. Für einen Rate-3/4-Faltungscodierer,
punktiert von einem Rate-1/2-Faltungscodierer
werden drei Datenbits in sechs Codebits codiert und nur vier Codebits
werden gesendet. Die anderen zwei Codebits werden punktiert oder
gelöscht.
Der Rate-3/4-Punktierungszustand ist in der 11 gezeigt.
-
Faltungsdecodierung
ist auf dem Fachgebiet bekannt und jeder beliebige Trellis-Decodierer
kann eine Decodierung von faltungscodierten Daten ausführen. In
dem bevorzugten Ausführungsbeispiel wird
Viterbi-Decodierer 86 für
die Faltungsdecodierung verwendet. Viterbi-Decodierung wird ausgeführt durch
Berechnung eines Satzes von Ast- bzw. Branch-Metriken, Aktualisieren
der Pfadmetriken mit den Ast-Metriken, Bestimmen des Pfades mit
den minimalen Pfadmetriken und Speichern des überlebenden Pfades für jeden
Zustand in einem Pfadspeicher. Die Einflusslänge K bestimmt die Anzahl der
Zustände
und beeinflusst die Auswahl der Trace-Back-Tiefe. Diese zwei Parameter
definieren die Speicheranforderung des Pfadspeichers. Die Trace-Back-Tiefe bestimmt
außerdem
die Latenz in dem Viterbi-Decodierungsprozess.
Punktierte Codes, wie zum Beispiel der Rate-3/4-Code, der nicht in dem IS-99-Standard spezifiziert
ist, erhöhen
die Trace-Back-
bzw. Rückverfolgungstiefe
und die Latenz.
-
In
dem zweiten Ausführungsbeispiel
der vorliegenden Erfindung kann Reed-Solomon-Codierer 22 mit einem
ersten Faltungscodierer ausgetauscht wer den. Der erste Faltungscodierer
codiert Daten von Datenquelle 20 zeilen- oder spaltenweise und kann die Codebits
in Puffer 24 zeilen- oder spaltenweise einschreiben. Die
Daten können
in einer von möglichen
vier Reihenfolgen verarbeitet werden und die optimale Reihenfolge
wird durch die Systemkonstruktion bestimmt. Die Coderate und die
Einflusslänge
K des ersten Faltungscodierers sind Systemkonstruktionsparameter.
Unterschiedliche Coderaten resultieren darin, dass die Daten von
der Datenquelle 20 in unterschiedliche Datenrahmengrößen partitioniert
sind, da die CRC-codierte Rahmengröße des Puffers 34 (siehe 5)
durch den IS-99-Standard festgelegt ist. Die vorliegende Erfindung
richtet sich auf eine beliebige Kombination von Coderate und Einflusslänge für den ersten
Faltungscodierer.
-
In
dem zweiten Ausführungsbeispiel,
in dem der Reed-Solomon-Codierer 22 mit einem ersten Faltungscodierer
ausgetauscht ist, werden mehrere Designparameter bei der Konstruktion
des ersten Faltungscodierers in Betracht gezogen. Eine lange Einflusslänge resultiert
in einer komplexeren Decodierungsschaltung und erhöhter Latenz.
Die Coderaten der ersten Faltungscodierer und des Faltungscodierers 36 reduzieren
die effektive Datendurchsatzrate. Ein Rate-1/2-Erstfaltungscodierer
zusammen mit einem Rate-1/2-Faltungscodierer 36 resultiert
zum Beispiel in einer Gesamtdatendurchsatzrate von ¼. Die gesendeten
codierten Daten haben viermal die Größe der Originaldatei, was nicht
die Overheadbits mit einschließt.
Andere Punktierungsraten, wie zum Beispiel Rate-3/4, verbessern
die Datendurchsatzrate, sehen jedoch einen geringeren Codierungsgewinn vor.
Konstruktionskompromisse sollten bedacht werden. Als zusätzlicher
Punkt sollte bedacht werden, dass Viterbi-Decodierer 86 die
Tendenz besitzt, korrelierte Fehlerbursts auszugeben. Daher könnte ein Interleaving
zwischen dem Erstfaltungscodierer und Faltungscodierer 36 wünschenswert
sein.
-
Das
Blockdiagramm des Codierers innerhalb der Zentralstation 2,
gezeigt in 3 und 4 enthält zwei
separate Puffer 24 und 34. Die zwei Puffer 24 und 34 sind
nur aus Gründen
der Darstellung gezeigt. In der Praxis kann es möglich sein, Puffer 24 und 34 unter
Verwendung von einem Speicherblock, wie es in 5 gezeigt
ist, zu implementieren. Daten von Datenquelle 20 können in
eine Ecke des Speichers geschrieben werden. Reed-Solomon-Codierung
und CRC-Blockcodierung werden ausgeführt und die Paritybits von
diesen Codierungsschritten werden in separate Positionen desselben
Speichers geschrieben.
-
Blockinterleaver 38 führt ein
Verschachteln der Codebits von Faltungscodierer 36 aus.
Somit ist die Reihenfolge, in der Daten in den Blockinterleaver 38 geschrieben
werden und ausgelesen werden, spezifisch durch den IS-99-Standard definiert.
Das Interleaving "whitens" bzw. übertüncht den
Einfluss von Fehlerbursts, die durch Kanalbeeinträchtigungen bewirkt
werden. In einer Satellitenverbindung, wo die Kanalcharakteristiken
hauptsächlich "white" bzw. gleichförmig sind,
kann Blockinterleaver 38 eliminiert werden, ohne dabei
die Performance zu verschlechtern.
-
Die
vorhergehende Beschreibung der bevorzugten Ausführungsbeispiele wird vorgesehen
um es einem Fachmann zu ermöglichen,
die vorliegende Erfindung zu verwenden oder herzustellen. Die verschiedenen
Modifikationen dieser Ausführungsbeispiele
werden dem Fachmann leicht offensichtlich und die Grundprinzipien,
die hierin definiert sind, können
auf andere Ausführungsbeispiele
ohne die Verwendung erfinderischer Tätigkeit angewendet werden.
Somit ist die vorliegende Erfindung nicht als auf die hierin beschriebenen
Ausführungsbeispiele
beschränkt
anzusehen, sondern vielmehr sollte ihr der breitest mögliche Umfang,
wie er in den Ansprüchen definiert
ist, zugewiesen werden.