-
Die vorliegende Erfindung betrifft ein Verfahren zum Kodieren und Dekodieren
von Datenströmen, bei dem zur Kodierung aus Quelldatenströmen ein binärer
Code erzeugt und zur Dekodierung der binäre Code in die Quelldatenströme
zurückverwandelt wird.
-
Zur Zeit gibt es zahlreiche Kodierverfahren, um gleichspannungsfreie RLL-
Codes zu erzeugen. Viele der Verfahren arbeiten aus praktischen Erwägungen
mit Codeworten konstanter Länge (Blockkodierung). Ist die Anzahl der
Quellsymbole bzw. die Menge der Codeworte begrenzt und aufzählbar, so
werden oftmals Tabellen zur Kodierung und Dekodierung eingesetzt. Für die
Aufzeichnung von Daten auf optischen oder magnetischen Medien (CD, DAT,
DVD) sind EFM und EFMPlus bekannte Kodierverfahren. Klassische binäre
Kodierverfahren zur Erzeugung gleichspannungsfreier Signale sind der
Manchester-Code, der Differential-Manchester-Code, 3-aus-6, 8B10B (US
4,486,739) und CMI (coded mark inversion). Diese Verfahren arbeiten mit zwei
Signalzuständen ("0" und "1"). Ferner sind nichtbinäre Kodierverfahren bekannt,
wie der AMI-Code, der modifizierte AMI-Code, HDB-3
(PCM30-Übertragungsstrecken), der 4B3T-Code (ISDN national), MMS43 (ISDN Europa) oder das
spektrale Trellis-Shaping.
-
Existierende Verfahren zur Erzeugung lauflängenbeschränkter Codes erfüllen
nicht die Anforderungen spezieller Anwendungen. Entweder ist die
Codeeffizienz nachteilig, die Codewortlänge passt nicht, die Disparität liegt über
den Erfordernissen oder das Kodierverfahren ist für Low-Performance-Produkte
zu aufwendig. Insbesondere ist für die Funkübertragung eine Leitungskodierung
mit kleiner Disparität von Vorteil, um beim Funkempfänger die Drift der
Pegelschwellen im Demodulator (data slicer) möglichst klein zu halten. Einfach
und platzsparend lässt sich z. B. der 3-aus-6-Code realisieren. Es werden dabei
4 Bit lange Quellsymbole in 6 Bit lange Codeworte umgesetzt. Der Nachteil der
3-aus-6-Kodierung ist seine mäßige Effizienz; sie beträgt 4/6 = 66,7%; der
Kodierverlust also 50%. Dies kann sich beispielsweise bei batteriebetriebenen
Geräten mit Funkdatenübertragung negativ auf die Lebensdauer und/oder
Kosten auswirken.
-
Andere Kodierverfahren, wie 8B10B, haben eine höhere Codeeffizienz (E = 8/10
= 80%), sind aber sehr viel aufwendiger zu realisieren, da hier größere
Codeworttabellen und komplexe logische Verknüpfungen benötigt werden.
-
Allgemein scheitert die Kodierung mittels Tabellen bei größeren
Codewortlängen an der exponentiell wachsenden Anzahl von Codeworten. Es
wurden daher Verfahren zur Aufzählung ("Enumeration") von Codeworten
angegeben (s. Kautz 1965, Pátrovics u. Schouhamer Immink 1996).
Aufzählende Dekodierung wird über gewichtete Summen von Einzelsymbolen
empfangener Codeworte realisiert. Die Schwierigkeit bei diesem Verfahren
besteht in der Bestimmung der Gewichtskoeffizienten. Häufig werden zwei
Sätze von Koeffizienten benötigt (s. Tang u. Bahl 1970), deren Ermittlung eine
intellektuelle Herausforderung im Fachgebiet Kombinatorik ist. Mit zunehmender
Codewortlänge nimmt die Anzahl der Gewichtskoeffizienten und gleichzeitig die
Länge ihrer binären Repräsentation zu. Der Speicherbedarf für die Realisierung
eines Aufzählungsverfahrens mit Gewichtskoeffizienten wächst daher mit
zunehmender Codewortlänge quadratisch an und stößt somit schnell an
praktische Grenzen.
-
Nichtbinäre Kodierverfahren, wie AMI u. a., sind nicht anwendbar, wenn die zur
Verfügung stehende Hardware nur zwei Signalzustände verarbeiten kann.
-
Aufgabe der Erfindung ist es, ein Verfahren zum Kodieren und Dekodieren von
Datenströmen anzugeben, das einfach und kompakt realisierbar ist, eine hohe
Kodiereffizienz aufweist und einen zur Funkübertragung mit einfachen
technischen Übertragungsgeräten geeigneten Code erzeugt.
-
Diese Aufgabe wird bei dem Verfahren der eingangs genannten Art im
Wesentlichen dadurch gelöst, dass zur Kodierung der Datenströme ein
Quelldatenstrom in einen ternären Datenstrom konvertiert und aus dem ternären
Datenstrom (Zahlen zur Basis 3) mittels Zustandsübergängen der binäre Code
gebildet wird, wobei der binäre Code eine maximale Lauflänge von vier
aufeinanderfolgenden gleichen diskreten Signalzuständen und eine maximale
Disparität von zwei diskreten Abweichungen von der Pegelmitte zweier
Signalzustände oder von dem Nullpegel aufweist, und dass der binäre Code zur
Dekodierung mittels entsprechender Zustandsübergänge in den ternären
Datenstrom überführt und in den Quelldatenstrom konvertiert wird.
-
Damit wird aus einem Eingabedatenstrom (Quelldatenstrom) ein binärer
gleichspannungsfreier und lauflängenbeschränkter Code erzeugt. Durch die
vorherige Umwandlung in einen ternären Datenstrom lassen sich besonders
einfach Zustandsübergänge festlegen, die ohne das Festlegen von
speicherintensiven Codeworten die Erzeugung eines binären Codes
ermöglichen. Die Kodiereffizienz E ist das Verhältnis der Längen der
Quellsymbole in Bits zur Länge k der Codeworte bzw. kodierten Nachricht in Bits
wobei N ist die Anzahl gleichwahrscheinlicher Quellsymbole ist. Damit wird der
als relative Verlängerung einer Quellnachricht der Längen Bit durch die
Kodierung in eine Codesequenz der Länge k Bit bezeichnete Kodierverlust V
minimiert. Dies führt insbesondere bei batteriebetriebenen Geräten mit
Funkdatenübertragung zu einer verbesserten Batterieausnutzung und damit zu
einer höheren Betriebsdauer und/oder geringeren Kosten.
-
Unter den Randbedingungen einer maximalen Disparität des erzeugten Codes
von höchstens DMAX = ±2 und einer Lauffänge von maximal RLMAX = 4 lässt sich
die optimale Grenzeffizienz Eα des Kodierverfahrens angeben. Sie liegt bei
Eα ≍ 79,25%. Der theoretisch erreichbare minimale Codierverlust Vα bei Eα beträgt
ungefähr 26,2%.
-
Erfindungsgemäß bilden die Zustandsübergänge einzelne Ziffern ("0", "1", "2")
der Ternärdarstellung des Datenstroms auf jeweils zwei Binärstellen des binären
Codes ("OO", "OI", "IO" oder "II") ab.
-
Um eine eindeutige Abbildung zwischen Ternär- und der Binärdarstellung zu
erhalten, hängt bei einer bevorzugten Ausgestaltung des Verfahrens die
Definition der Zustandsübergänge von der laufenden Disparität des
Datenstroms ab. Die laufende Disparität ergibt sich dabei aus der Gesamtparität
des bisher berücksichtigten binären Codeworts. Wenn ausgehend von einer
Gleichspannungsfreiheit bspw. ein binärer Signalzustand "0" die Disparität D =
-1 und ein binärer Signalzustand "1" die Disparität D = +1 erzeugt, hat ein
binäres Codewort "OOI" in der Summe die Gesamtdisparität D = -1. Durch
Hinzufügen der Binärkombination "II" zu einem binären Codewort "IIOOI" wird
die Gesamtdisparität (laufende Disparität) auf D = +1 verändert. Wenn nun der
Zustandsübergang T2 bspw. derart von der laufenden Disparität D abhängt,
dass bei D < 0 T2 die ternäre Zahl "2" auf die Binärkombination "II" und bei D > 0
auf die Binärkombination "OO" abbildet, wird durch die Zustandsübergänge T0,
T1 und T2 eine eindeutige Abbildung zwischen den ternären Zuständen "0", "1",
"2" und den binären Zuständen "OI", "IO", "OO" bzw. "II" erreicht.
-
Zur Erzeugung der Startdisparität kann erfindungsgemäß ein Startbit oder die
Disparität einer vorherigen Bitsequenz verwendet werden, um einen definierten
Anfangszustand zu schaffen.
-
Insbesondere bei Computeranwendungen liegt der Quelldatenstrom als binärer
Quellcode vor. In diesem Fall wird der binäre Quelldatenstrom erfindungsgemäß
in Blöcken vorgegebener Blocklänge in den ternären Datenstrom konvertiert.
Vorzugsweise liegt die Blocklänge des binären Quellcodes bei 11, 19 oder 84
Bit, weil bei dieser Wahl die Kodiereffizienz sehr nah am erreichbaren Optimum
liegt.
-
Indem dem in binären Code konvertierten Datenstrom erfindungsgemäß eine
SYNC-Sequenz vorangestellt wird, wird eine Erkennung des Beginns einer
neuen pegelmäßig stärkeren Funkbotschaft ermöglicht, die einer pegelmäßig
schwächeren Nachricht überlagert ist. Für den Fall sich überlagernder
Nachrichten, der beim ungeregelten Funkbetrieb auftreten kann, wird so eine
Möglichkeit geschaffen werden, um eine Kollision von Funkbotschaften zu
erkennen. Bei ausreichend starken Empfangspegelunterschieden kann sich die
stärkere der beiden Funkbotschaften durchsetzen.
-
Dazu weist die SYNC-Sequenz vorzugsweise eine Taktsequenz mit einer Folge
alternierender Signalpegel und eine Startsequenz mit einer größeren Lauflänge
von aufeinanderfolgenden gleichen Signalzuständen als die maximale Lauflänge
des Datenstroms aufweist. Aufgrund der größeren Lauflänge kann die
Startsequenz in dem Datenstrom einfach identifiziert werden.
-
Um einen kodierten Datenstrom einfach an die Startsequenz anhängen zu
können, endet die Startsequenz erfindungsgemäß mit einer definierten
Disparität, insbesondere mit der Disparität null oder einer einfach positiven oder
negativen Disparität. So ist der Startzustand genau definiert.
-
Nachfolgend wird ein bevorzugtes Kodier- und Dekodierverfahren mit Bezug auf
die Zeichnung näher beschrieben. Dabei ergeben sich aus der Beschreibung
und/oder der Zeichnung weitere erfindungsgemäße Vorteile und Merkmale,
unabhängig von ihrer Zusammenfassung in den Ansprüchen oder deren
Rückbezügen.
-
Es zeigen:
-
Fig. 1 eine Tabelle mit einem Überblick über die Anzahl der Codeworte
CD(2n) mit Lauflängenbeschränkung mit ausgewogenem 0/1
Bitverhältnis für die verschiedenen Disparitäten;
-
Fig. 2 ein Aufbauschema eines binären Codes für ein Codewort mit 16
Bit Länge mit einer Lauflängenbegrenzung RLMAX = 4 und einer
maximalen Disparität DMAX = +/-2;
-
Fig. 3 einen Zustandsautomat zur Erzeugung des binären Codes gemäß
Fig. 2;
-
Fig. 4a und b den Aufbau einer SYNC-Sequenz;
-
Fig. 5 einen Zustandsautomat für die Empfangskodierung des binären
Codes gemäß Fig. 2;
-
Fig. 6 den Netto-Kodierungsoverhead von RLL-Code als Funktion der
Codewortlänge;
-
Fig. 7 die Netto-Kodierungseffizienz von RLL-Code als Funktion der
Codewortlänge und
-
Fig. 8 die prozentuale Abweichung von der Gleichspannungsfreiheit von
RLL-Code als Funktion der Codewortlänge.
-
Das im Folgenden beispielhaft beschriebene Verfahren zum Kodieren und
Dekodieren von Datenströmen ist insbesondere geeignet, einen
gleichspannungsfreien Signalstrom mit begrenzter Lauflänge zu generieren. Ein
gleichspannungsfreier Signalstrom wird beispielsweise für die Modulation eines
hochfrequenten Trägers zur Funkdatenübertragung oder für die
leitungsgebundene Datenübertragung auf speisespannungsführenden Leitungen
benötigt. Der Anwendungsschwerpunkt des erfindungsgemäßen Verfahrens
liegt auf der Erzeugung von effizienten Funktelegrammen für die
Messdatenübertragung.
-
Eine elementare Bedingung für die Gleichspannungsfreiheit von binären Codes
ist, dass - in der Summe - die Dauer eines Signalzustandes gleich der Dauer
des komplementären Signalzustandes ist. Für eine Datenübertragung mit
diskreten, konstanten Schritttakten in Binärkodierung bedeutet dies, dass die
Anzahl n von O-Bits gleich der Anzahl n von I-Bits sein muss. Die Länge der
Codeworte sei bspw. 2n. Dann ist die Anzahl C(2n) der Codeworte mit
ausgewogenen O/I-Bitverhältnis ohne Lauflängenbeschränkung
-
Führt man für die Kodierung eine Beschränkung der Anzahl aufeinander
folgender gleicher Signalzustände (Lauflängenbeschränkung, RLL-Code) über
die Abweichung eines Signalstroms von der Pegelmitte zweier Signalzustände
bzw. dem Nullpegel (Disparität D = DMAX) ein, dann ist die Anzahl CD(2n)
erzeugbarer Codeworte der Länge 2n Bit
-
Fig. 1 zeigt eine Tabelle mit einem Überblick über die Anzahl der Codeworte
CD(2n) unterschiedlicher Länge für verschiedene Disparitäten.
-
Für Disparitäten D = 1 und D = 2 lässt sich CD(2n) leicht angeben. Insbesondere
ist das Verhältnis von C2(2n)/C2(2n-2) konstant; d. h. eine systematische
Konstruktion der Codes liegt nahe. Der Fall D = 1 ist aus Gründen der
Kodiereffizienz (E = 50%, wie z. B. Manchester-Code) uninteressant. Für den
Fall D = 2 ergibt sich eine optimale Grenzeffizienz Eα von
-
Der Kodierverlust bei der Grenzeffizienz beträgt:
-
Nachfolgend werden nun der Aufbau und die Erzeugung des binären Codes mit
einer Lauflängenbeschränkung RLMAX = 4 und einer maximalen Disparität
DMAX = 2 detailliert beschrieben. Fig. 2 zeigt schematisch die Möglichkeiten zur
Erzeugung eines derartigen binären Codes, wobei die Gesamtdisparität des
Codeworts gegen die Anzahl der Bits dargestellt ist.
-
Ausgangspunkt vor dem Setzen des ersten Bits ist eine Disparität von D = 0.
Wenn das erste Bit bspw. ein I-Bit ist, hat die Disparität den Wert D = +1. Ist
auch das zweite Bit ein I-Bit erreicht die Disparität den maximalen Wert D = +2.
Um innerhalb der Grenzen der maximalen Disparität zu bleiben, besteht als
Möglichkeit für das nächste Bit nur das Setzen eines O-Bits. Es können nun
maximal 4 O-Bits gesetzt werden, um bei dem unteren Grenzwert der Disparität
bei D = -2 anzukommen. Aus dem Diagramm ist ersichtlich, dass der erzeugte
Code höchstens 4 gleiche Einzelsymbole "O" oder "I" in Folge aufweist, also
eine maximale Lauflänge von RLMAX = 4 hat. Die Disparität bewegt sich in den
Grenzen von +2 bis -2 und ist am Ende D = 0; der Code also DC-frei
(gleichspannungsfrei).
-
Es lässt sich nun ein Zustandsautomat angeben, der geeignet ist,
Eingangsdatenströme beliebiger Länge in gleichspannungsfreie
Ausgangsdatenströme (Codes) mit den gewünschten Eigenschaften DMAX = 2
und RLMAX = 4 zu konvertieren. Ein solcher Zustandsautomat ist in Fig. 3
dargestellt.
-
Ausgangspunkt für den Zustandsautomaten ist ein nicht dargestellter
Eingangsdatenstrom. Dieser kann in Abhängigkeit von der in ihm enthaltenen
Information beliebige Werte haben und binär dargestellt werden. Beispielsweise
können folgende binär dargestellten Eingangsdaten angenommen werden:
Eingangsdaten binär I I I I I I I I I I I I I I I I I I I (19 Bit, Wert: 219-1).
-
Diese Eingangsdaten werden in einem ersten, ebenfalls nicht dargestellten
Zwischenschritt in eine ternäre Zahl (Zahl mit Ziffern der Basis 3) konvertiert und
erhalten dadurch folgendes Aussehen:
Zwischenschritt ternär 2 2 2 1 2 2 0 1 2 0 0 1.
-
Ohne Beschränkung der Allgemeinheit befindet sich der Zustandsautomat in
einem der Zustände positiver oder negativer Disparität (D+ oder D-). Die
Zustände D+ bzw. D- können anfangs durch eine definierte SYNC-Sequenz
oder ausgehend vom Startzustand S durch die Zustandsübergänge T0 oder T1
mit einem gesonderten Startdatenbit erreicht werden. Je nachdem, ob dieses
erste Bit den Wert "O" oder "I" hat werden die Zustände D- bzw. D+ erreicht. Im
Startzustand sind die Zustandsübergänge dabei wie folgt definiert:
T0(S): setze im binären Ausgangscode das Bit "O" und
T1(S): setze im binären Ausgangscode das Bit "I".
-
Im vorliegenden Beispiel sei das erste Bit des Eingangscodes eine "I" und der
Zustandsübergang T1 wird angewendet. Dieser setzt im Ausgangscode ein I-Bit
und erzeugt damit ein Codewort mit positiver Disparität. Der Zustandsautomat
befindet sich daher im Zustand positiver Disparität D+.
-
Nun nimmt der Zustandsautomat die erste Ziffer (im Beispiel von rechts) des
ternären Zwischenschritts und ordnet sie einem der Zustandübergänge
T0(D+): setzte im binären Ausgangscode die Bitfolge "O I",
T1(D+): setzte im binären Ausgangscode die Bitfolge "I O" oder
T2(D+): setze im binären Ausgangscode die Bitfolge "O O"
zu, wobei die Ziffer "0" dem Zustandsübergang T0, die Ziffer "1" T1 und die
Ziffer "2" T2 zugeordnet wird.
-
Im Beispiel ist die erste ternäre Ziffer von rechts eine "1 ". Daher setzt der
Zustandsübergang T1(D+) im Ausgangscode die Bitfolge "I O" hinzu. Das
gesamte Ausgangscodewort lautet danach "I O I" und weist ebenfalls eine
einfach positive Disparität D+ auf. Für die nächsten beiden ternären Ziffern "0"
fügt der Zustandsübergang T0(D+) dem Ausgangswort jeweils die Bitfolge "O I"
hinzu, so dass insgesamt das Codewort "O I O I I O I" entsteht, das ebenfalls
positive Disparität aufweist. Mit der folgenden ternären Zahl "2" wird nun der
Zustandsübergang T2(D+) angewendet und fügt die Bitfolge "O O" hinzu zu dem
Gesamtcodewort "O O O I O I I O I". Diese Wort hat nun negative Disparität D-.
-
Bei Zuständen negativer Disparität D- sind die Zustandsübergänge nun wie folgt
definiert:
T0(D-): setzte im binären Ausgangscode die Bitfolge "O I",
T1(D-): setzte im binären Ausgangscode die Bitfolge "I O" oder
T2(D-): setze im binären Ausgangscode die Bitfolge "I I".
-
Für die folgende ternäre Zahl "1" wird daher der Zustandsübergang T1(D-)
angewendet. Bei entsprechender Anwendung der Zustandsübergänge erhält
man damit schließlich den folgenden Ausgangscode, wobei beim Wortende der
Zustandsübergang { }(D+) → "O" oder { }(D-) → "I" zum Erreichen eines
gleichspannungsfreien Endzustands E angewendet wird:
Ausgangscode binär O I I O O I I I O O O I I O I I O O O O I O I I O I
-
Im zuvor beschriebenen Beispiel wurde davon ausgegangen, dass die
gesamten zu konvertierenden Eingangsdaten aus einer Folge von 19 Bits und
einem zusätzlichen Startbit bestehen. In der Praxis sind die Eingangsdaten in
der Regel länger. Die Konvertierung großer Zahlen vom Dualsystem
(Zweiersystem) ins Ternärsystem (Dreiersystem) bereitet zwar prinzipiell keine
Schwierigkeiten, sie geht jedoch mit einem zunehmenden Rechenaufwand
einher. Eine Erleichterung bringt daher die Zerlegung der Eingangsdaten in
Blöcke fester Länge. Dabei werden die Blocklängen so gewählt, dass in der
entsprechenden Ternärdarstellung der Verschnitt möglichst klein wird, d. h. der
Zahlenbereich der Ternärdarstellung mit gegebener Stellenzahl gut ausgenutzt
wird.
-
Bei blockweiser Kodierung kann von dem Startzustand S in einen der
Arbeitszustände D- bzw. D+ übergegangen werden, indem das erste Bit des
Ausgangsdatenstroms fest oder zufällig oder das erste Bit des
Eingangsdatenstroms für die Übergänge T0 bzw. T1 gewählt wird.
-
Zu Beginn der Konvertierung, d. h. bei dem ersten zu konvertierenden Block,
wird also eine Disparität D+ bzw. D- vorgegeben. Bei allen folgenden
Eingangsdaten und auch über Blockgrenzen hinweg bewegt man sich nur
innerhalb der beiden Zustände D+ und D-. Erst am Ende des Kodiervorgangs,
d. h. nach der Kodierung des letzten Blocks von Eingangsdaten, wird die
Disparität beseitigt, indem ein letztes Bit zur Erzeugung vollständiger
Gleichspannungsfreiheit angehängt wird. Die Zustände S und E des
Zustandsautomaten sind in diesem Fall für die Kodierung eines einzelnen
Datenblocks irrelevant mit der Konsequenz, dass am jeweiligen Blockende
keine vollständige Gleichspannungsfreiheit erreicht wird, sondern erst am
Nachrichtenende.
-
Ist der Eingangsdatenstrom binär und besteht aus b Bits, dann kann also 1 Bit
zur Erzeugung der Startdisparität D+ bzw. D- direkt verwendet werden.
-
Betrachtet man die übrigen (b-1) Bit als Binärzahl, dann kann diese durch eine
Basiskonversion von Dualsystem in das Ternärsystem (Zahlen zur Basis 3)
überführt werden. Die einzelnen Ziffern 0, 1 und 2 der Ternärdarstellung
können nun direkt als Eingangsbedingungen T0, T1 und T2 der
Zustandsübergänge dienen. Um den Rechenaufwand klein zu halten, ist es
sinnvoll die restlichen (b-1) Bit der Dualdarstellung in Blöcken zu konvertieren.
Geeignete Blocklängen sind solche, deren Zweierpotenz nur wenig kleiner ist
als eine ganzzahlige Dreierpotenz:
2" ≍ 3''' ∧ 2" ≤ 3''' mit n, m ∈ N,
insbesondere
211 = 2048 ≍ 2187 = 37 bzw.
219 = 524288 ≍ 531441 = 312 bzw.
284 = 19342813113834066795298816 ≍ 19383245667680019896796723 = 353.
-
Die Codeeffizienz ist für den Fall (211 ↔ 37) E11/7 = 11/(2 × 7) ≍ 78,571%, für den
Fall (219 ↔ 312) E19/12 = 19/(2 × 12) ≍ 79,167% und für den Fall (284 ↔ 353) E84/53 =
84/(2 × 53) ≍ 79,245%.
-
Daher ist es bspw. vorteilhaft, den zu kodierenden Datenstrom in 11-Bit-Worte
aufzuteilen und diese blockweise in eine 7-stellige Ternärdarstellung zu
konvertieren. In einer weiteren Variante ist auch eine Aufteilung der binären
Eingangsdaten in 19-Bit-Worte möglich, die in eine 12-stellige Ternärdarstellung
konvertiert werden. In einer dritten Variante wird eine Aufteilung der binären
Eingangsdaten in 84-Bit-Worte vorgeschlagen, die in eine 53-stellige
Ternärdarstellung konvertiert werden. In allen drei Fällen werden die ternären
Ziffern {"0", "1", "2"} abhängig von der laufenden Disparität D (dem Zustand D+
oder D-) ohne Zwischenschritt in die vier möglichen Ausgangszustände {"OO",
"OI", "IO", "II"} überführt.
-
Es ist jedoch auch möglich, den Zustandsautomaten vollständig auf jeden Block
einzeln anzuwenden. Vorzugsweise würden dann die Bit-Datenblöcke in einer
Länge von 11+1, 19+1 bzw. 84+1 Bit gewählt, wobei das zusätzliche Bit zum
Verlassen des Startzustands S dient. Aus einem 11+1 Bit-Datenblock wird durch
Kodierung so ein 1 + 2 × 7 + 1 = 16 Bit RLL-Codewort, aus 19+1 Bit werden 1 +
2 × 12 + 1 = 26 Bit und aus 84+1 Bit werden 1 + 2 × 53 + 1 = 108 Bit. Man erzielt
hierbei nach jedem Datenblock Gleichspannungsfreiheit auf Kosten längerer
Codeworte und einer Verschlechterung der Kodiereffizienz (E11+1 = 12/16 < E11/7
= 11/(2 × 7); E19+1 = 20/26 < E19/12 = 19/(2 × 12); E84+1 = 85/108 < E84/53 =
84/(2 × 53)).
-
Zustandsautomaten mit äquivalenten Eigenschaften ergeben sich durch
Vertauschen der Eingangsbedingungen T0, T1 und T2 in den
Zustandsübergängen.
-
Für das Anwendungsgebiet der Funkdatenübertragung gelten spezielle
Randbedingungen. In Systemen mit mehreren gleichberechtigten Sendern,
deren Funkaussendungen nicht koordiniert sind, können Kollisionen der
Funkbotschaften auftreten. Eine Anforderung an solche Systeme ist, dass durch
Kollision gestörte Funkbotschaften erkannt werden. Weiterhin sollten
Funkbotschaften mit stärkerem Empfangspegel, die von Botschaften mit
schwächerem Empfangspegel überlagert sind, bei ausreichendem Störabstand
empfangen werden können. Insbesondere soll während des Empfangs einer
Funkbotschaft eine zeitlich später eintreffende Funkbotschaft mit stärkerem
Empfangspegel dazu führen, dass der laufende Empfang als gestört erkannt
und abgebrochen wird und die neue überlagerte, stärkere Botschaft empfangen
wird. Dazu wird den eigentlichen Daten eine SYNC-Sequenz vorangestellt, die
einem Funkempfänger dazu dient, sich auf die Signalstärke der empfangenen
Funkbotschaft einzustellen und anhand einer definierten binären Signalsequenz
den Schritttakt für den nachfolgenden Informationsteil zu gewinnen.
-
Die SYNC-Sequenz setzt sich aus einer Taktsequenz und einer Startsequenz
zusammen. Die Taktsequenz ist eine als Folge alternierender Signalpegel
definierte Schrittfrequenz. Die Taktsequenz ist so lang zu wählen, dass ein
Empfänger am Ende der Taktsequenz einen stabilen Betriebszustand erreicht
hat. Auf die Taktsequenz folgt die Startsequenz. Sie wird als Signalfolge
definiert, die eindeutig von dem RLL-Datenstrom unterscheidbar ist. Da es bei
der beschriebenen Kodierung keine reservierten Codeworte mit zulässiger
Lauflänge RLMAX = 4 gibt, weist die Startsequenz eine größere Lauflänge als der
RLL-Code auf, d. h. RLMAX > 4. Möglichkeiten für den Aufbau der SYNC-
Sequenz sind in den Fig. 4a und 4b dargestellt.
-
Die Unterscheidbarkeit der SYNC-Sequenzen von dem RLL-Datenstrom ist
durch fünf aufeinanderfolgende Nullen (Fig. 4a) bzw. durch eine Folge von fünf
Einsen (Fig. 4b) gegeben. Die Disparität am Ende der SYNC-Sequenz ist Null,
so dass sich ein durch den Zustandsautomaten kodierter Datenstrom nahtlos
anfügen lässt.
-
Ein Zustandsautomat für die Empfangsdekodierung ist in Fig. 5 dargestellt. Er
dient dazu, den binären Code wieder in den ursprünglichen Quellcode
zurückzuübersetzen. Das Funktionsprinzip ist dem Funktionsprinzip des in Fig. 3
dargestellten Zustandsautomaten zur Erzeugung des binären Codes
vergleichbar, wobei der vorliegende Zustandsautomat auch die SYNC-Sequenz
erkennen kann.
-
Ausgehend von dem Startzustand werden durch Abtastoperatoren "O" und "I"
zunächst die Bitwechsel in der Taktfrequenz verfolgt, die regelmäßig zwischen
den Zuständen B0 für das Bit "O" und B1 für das Bit "I" wechseln. Sobald der
regelmäßige Bitwechsel durch zwei aufeinanderfolgende Bits unterbrochen wird,
wird in der Stufe TS ein Test auf Vorliegen der definierten Startsequenz
durchgeführt. Bis in der Stufe TS eine gültige Startsequenz erkannt wird,
werden die vorbeschriebenen Schritte wiederholt.
-
Nach dem Erkennen einer Startsequenz wird zum Erkennen der Daten zunächst
in einen Zustand D0 mit der Disparität D = 0 übergegangen, die vor dem
Auslesen des binären Datencodes besteht. Um den Anfangszustand der
Disparität (D- oder D+) zu erkennen, wird zunächst das als Startbit zur
Festlegung der Startparität verwendete erste Bit durch die Operatoren "O" bzw.
"I" bestimmt. Dadurch gelangt man in den Zustand negativer (D-) oder positiver
(D+) Disparität. Nachfolgend werden jeweils die nächsten zwei Bit als Bitfolge
ausgelesen und durch die nachfolgenden Zustandsübergänge in ternäre Ziffern
übersetzt:
OI(D-/D+) setze ternäre Ziffer T0 = "0",
IO(D-/D+) setze ternäre Ziffer T1 = "1",
II(D-) setze ternäre Ziffer T2 = "2" und
OO(D+) setze ternäre Ziffer T2 = "2".
-
Ferner sind Zustandsübergänge OO(D-) bzw. II(D+) definiert. Wenn diese
Zustandsübergänge aufgrund der im binären Code vorgegebenen Bitfolge
angewendet werden müssen, ist dort ein Zustand mit einer Disparität
aufgetreten, der größer ist als die vorgegebene maximale Disparität DMAX = 2.
Dies bedeutet, dass das Datenwort (z. B. durch Überlagerung) gestört ist. Daher
werden von diesen Zustandsübergängen als Ausgangsdaten die "Ende der
Nachricht"-Anweisung { } gesetzt und der Zustandsautomat in den Zustand TS
überführt, um das Vorliegen einer neuen Startsequenz zu überprüfen.
-
Wenn in dem Datenstrom nur noch ein Bit vorhanden ist, bedeutet dies das
Ende der zu dekodierenden Daten. In diesem Fall wird der Zustandsautomat
durch Operatoren "I" bzw. "O" in den Endzustand E überführt.
-
Anschließend wird die ternäre Zahl in den Quellcode zurückkonvertiert.
-
Zwecks einfacherer Implementierbarkeit wird eine Variante vorgeschlagen, bei
der die SYNC-Sequenz mit einfach positiver bzw. einfach negativer Disparität
endet und die Kodierung des Quelldatenstroms in dem Zustand "D-" bzw. "D+"
beginnt. Dies erspart bei der Realisierung des Kodierverfahrens den
Startzustand "S" und beim Dekodieren den Zustand "D0".
-
In den Fig. 6, 7 und 8 werden der Netto-Kodierungsoverhead, die Netto-
Kodierungseffizienz und die prozentuale Abweichung von der
Gleichspannungsfreiheit von RLL-Code als Funktion der Codewortlänge gezeigt.
-
Das vorliegenden Kodier- und Dekodierverfahren kann einfach und platzsparend
realisiert werden. Dies spielt besonders für Produkte im Low-Cost-Segment eine
wichtige Rolle. Es erzeugt aus einem ternären Datenstrom binäre Codes
beliebiger Länge, die sich auf einfache Weise in einen Ternärdatenstrom zurück
dekodieren lassen. Unter der Randbedingungen von RLLMAX = 4 und DMAX = 2
liegt die Codeeffizienz dabei nahe einem theoretischen Optimum von 79,248%.
Ferner kommt das Verfahren ohne speicherintensive Codeworttabellen aus und
die Länge der erzeugten Codeworte ist prinzipbedingt nicht beschränkt. Durch
das konstante Verhältnis C2(2n)/C2(2n-2) lässt sich das Codewort für
verschiedene Codewortlängen systematisch konstruieren.