Run Length Limited

Run Length Limited (RLL) ist eine Gruppe von Leitungscodes, welche im Bereich der Telekommunikation und bei Speichermedien wie magnetischen Plattenspeichern als Schreibverfahren verwendet werden. Diese Codes sind dadurch gekennzeichnet, dass bei ihnen die Länge einheitlicher Datenfolgen aus den Zuständen Logisch-0 oder Logisch-1 beschränkt ist. Von dieser Eigenschaft leitet sich die Bezeichnung ab.

Erste RLL-Codes wurden von IBM 1972 patentiert und ab 1979 kommerziell in dem Direct Access Storage Device IBM 3370 für die Großrechnerserie 4300 eingesetzt.[1][2] Einfache RLL-Codes wurden in den 1980er und 1990er Jahren im Bereich der Datenaufzeichnung von Festplatten verwendet. Sie werden mit Adaptierungen auch heute noch in dem Bereich der magnetischen Datenaufzeichnung und bei optischen Speichermedien wie Compact Disc (CD) angewandt.

Einteilung

RLL-Codes werden in der Literatur durch zwei Parameter d und κ klassifiziert und in der Form (d,κ)-RLL geschrieben. Der Parameter d spezifiziert die minimale und κ die maximale Anzahl von logisch-0, die zwischen zwei logisch-1 in der Datenfolge auftreten können. κ kann als Grenzfall eines entarteten RLL-Code auch unendlich sein.

Wird der RLL-Code in Verbindung mit dem differentiellen NRZI-Leitungscode verwendet, wie es bei Anwendung der RLL-Codes bei magnetischen Speichermedien üblich ist, können damit bei dem Lesevorgang der Datenfolge genügend viele Signalflanken für die Taktrückgewinnung gewährleistet werden. Diese dynamische Taktrückgewinnung aus den Datensignal ist bei mechanischen Laufwerken und deren Gleichlaufschwankungen bei nur ungefährer Vorgabe der Umdrehungsgeschwindigkeit für die Synchronisation wesentlich.

Alle RLL-Codes lassen sich mittels eines endlichen Automaten beschreiben, welcher über κ+1 Zustände verfügen muss. Ein bestimmter RLL-Code kann dann als eine Zustandsdiagrammmatrix eindeutig angegeben werden, nur die Angabe (d,κ)-RLL klassifiziert nicht einen bestimmten RLL-Code.

Ein weiterer wesentlicher Parameter ist die minimale Länge n der benötigten Codewörter, welche eine gegebene (d,κ) Bedingung erfüllen. Die Längen der konkret gewählten Codewörter können einheitlich sein, müssen dies aber nicht sein. Bei einheitlicher Codewortlänge wird jedes Nutzdatenbit bzw. fixer Block von Nutzdatenbits der Länge k eindeutig einen Codewort der Länge n zugeordnet, wobei die Bedingung gilt: n > k. Ein Beispiel ist der 4B5B-Code, der 4 Nutzdatenbits eindeutig einem 5 Bit langen Codewort zuordnet. Das Verhältnis k/n ist die Coderate R. Die Anzahl k an Informationsbits, welche einer Codewortsequenz der Länge N(n) trägt, ist allgemein gegeben als:

Die Kapazität C(d,κ) eines RLL-Codes ist

und kann über das Shannon-Hartley-Gesetz mittels der größten Eigenwerte λ der Zustandsübergangsmatrix bestimmt werden. Tabellen der Kapazität als Funktion von (d,κ) finden sich in einschlägiger Literatur.[3]

Die Effizienz eines bestimmten RLL-Codes ist das Verhältnis aus seiner Coderate R und seiner Kapazität C(d,κ). Bei praktischen Anwendungen wird üblicherweise versucht, RLL-Codes mit möglichst großer Effizienz einzusetzen.

Varianten

(0,1)-RLL – FM

Der einfachste (0,1)-RLL-Code mit fixer Codewortlänge und einer Rate von ½ wird in Kombination mit der differentiellen Leitungscodierung NRZI auch als Frequency Modulation (FM) bezeichnet und durch folgende Codierungstabelle beschrieben:

EingangsdatenCodewort
010
111

(1,3)-RLL – MFM

Bei magnetischen Speichermedien wie Disketten findet der (1,3)-RLL Code Anwendung, auch unter der Bezeichnung Modified Frequency Modulation (MFM) bekannt. Auch dieser Code weist eine Rate von ½ auf:

EingangsdatenCodewort
0x0
101

Der Zustand von x hängt von dem vorherigen Datenbit ab: x ist 1 wenn das vorherige Datenbit 0 war, und 0 wenn das vorherige Datenbit 1 war.

(0,2)-RLL

Ein (0,2)-RLL Code mit fixer Blocklänge ist unter anderem der ursprünglich von IBM für magnetische Speicher entwickelte (0,2)-RLL-Code, welcher zu der Gruppe der Group-Coded Recording (GCR) -Codes zählt. Er ist eine Variante eines 4B5B-Code, aber nicht mit diesem identisch. Außerdem existieren von verschiedenen anderen Firmen weitere GCR-Codes, welche keine (0,2)-RLL-Codes sind, d. h. nicht alle GCR-Codes sind automatisch (0,2)-RLL.

EingangsdatenCodewort
000011001
000111011
001010010
001110011
010011101
010110101
011010110
011110111
EingangsdatenCodewort
100011010
100101001
101001010
101101011
110011110
110101101
111001110
111101111

Ein weiterer sehr einfacher (0,2)-RLL-Code, allerdings mit variabler Datenlänge und fixer Codewortlänge, ist folgender:

EingangsdatenCodewort
001
1010
1111

(2,7)-RLL

Nachfolgender nicht trivial zu konstruierender (2,7)-RLL-Code mit sowohl variabler Datenlänge als auch variabler Codewortlänge wurde in den 1980er und 1990er Jahren von Herstellern von Festplatten mit „RLL-Aufzeichnung“ verwendet (er stammt von Peter Franaszek). Er erfüllt sowohl die Präfixbedingung und weist eine fixe Coderate von ½ auf. Es existieren davon einige Varianten, in folgender Tabelle ist eine mögliche Variante angegeben:

EingangsdatenCodewort
100100
111000
011001000
010100100
000000100
001000100100
001100001000

(1,7)-RLL

Ein (1,7)-RLL-Code mit einer fixen Rate von 2/3, welcher durch eine boolesche Bildungsvorschrift gekennzeichnet ist und sich dadurch leicht in der Digitaltechnik ohne Tabelle realisieren lässt, ist folgender Code:

EingangsdatenCodewort
00 00101 000
00 01100 000
10 00001 000
10 01010 000
00101
01100
10001
11010

Die Bildungsvorschrift lautet: Genügt die Eingangsdatenfolge der Form (x, 0, 0, y) wird daraus das Codewort (NOT x, x AND y, NOT y, 0, 0, 0) gebildet. Genügen die Eingangsdaten nicht dieser Form, wird aus den Eingangsdaten (x, y) das Codewort (NOT x, x AND y, NOT y) gebildet. Da dieser Code nicht die Präfixbedingung erfüllt, ist die Reihenfolge der Zeilen bei der Codewortbildung wesentlich.[4]

Erwähnenswert sind auch gleichanteilsfreie RLL-Codes. Die Gleichanteilsfreiheit ist dann erfüllt, wenn jede Datenwortfolge durchschnittlich die gleiche Anzahl von Einsen und Nullen aufweist. Anders ausgedrückt, ergibt jede Datenwortfolge eine Folge von Codewörtern, welche bei antipodaler Repräsentation, d. h. logisch-0 erhält den Wert −1, logisch-1 den Wert +1, einen Gleichwert von 0 aufweist. Diese Eigenschaft ist dann wichtig, wenn die Codefolge über Kanäle übertragen werden soll, die keine Gleichsignale übertragen können, beispielsweise Funkkanäle oder Impulstransformatoren zur galvanischen Trennung in elektrischen Schaltungen.

Nachfolgend ein gleichanteilsfreier (1,7)-RLL-Code:

EingangsdatenCodewort
00x01
01010
10x00
11 00010 001
11 01x00 000
11 10x00 001
11 11010 000

Der Zustand von x hängt von dem letzten unmittelbar davor aufgetretenen Bit des Codewortes ab: x ist 1 wenn das letzte Codebit 0 war, und 0 wenn das letzte Codebit 1 war.

Literatur

  • John G. Proakis, Masoud Salehi: Communication Systems Engineering. 2. Auflage. Prentice Hall, 2002, ISBN 0-13-095007-6.

Einzelnachweise

  1. J. M. Harker, D. W. Brede, R. E. Pattison, G. R. Santana, L. G. Taft: A Quarter Century of Disk File Innovation. In: IBM Journal of Research and Development. Band 25, Ausgabe 5, 1981, S. 677–690, doi:10.1147/rd.255.0677.
  2. P. A. Franaszek: Run-Length-Limited Variable Length Coding with Error Propagation Limitation. 1972, US-Patent Nr. 3689899
  3. John G. Proakis, Masoud Salehi: Communication Systems Engineering. 2. Auflage. Prentice Hall, 2002, ISBN 0-13-095007-6, S. 512.
  4. C. Denis Mee, Eric D. Daniel: Magnetic Storage Handbook. 2. Auflage. McGraw Hill, 1996, ISBN 0-07-041275-8.