# Eight-to-Fourteen-Modulation

Eight-to-Fourteen-Modulation (EFM) bezeichnet einen Leitungscode, der beliebige 8-Bit-Folgen auf 14-Bit-Folgen mit bestimmten anwendungsverursachten Eigenschaften abbildet. Die EFM wird bei der Datenaufzeichnung auf optischen Datenträgern wie Compact Disc (CDs), Minidiscs und Laserdiscs verwendet. Das Verfahren EFM und dessen Erweiterung EFMPlus wurde von Kees A. Schouhamer Immink entwickelt und ist im Industriestandard ECMA-130 festgelegt.

## Beschreibung

Jedem Byte wird ein 14 Bit langes Codewort aus einer standardisierten Tabelle zugeordnet. Zwischen diesen 14-Bit-Codewörtern werden drei Trennbits eingefügt. Für CD-Audio wird die Tabelle im Red Book (EN 60908) und für CD-ROM im Yellow Book (ECMA-130) festgelegt.

### D/k-Bedingung

Auf einer CD sind die Daten in einer Spur in Form von Vertiefungen (Pits) und dazwischenliegenden Spurabschnitten ohne Vertiefungen (Lands) gespeichert. Ein kurzer Spurabschnitt von ca. 1/3 Mikrometer Länge (eine Bitzelle) entspricht einem Bit. Eine Eins repräsentiert einen Übergang von Pit zu Land oder von Land zu Pit, Nullen repräsentieren keinen Übergang (NRZ-M-Codierung). Damit eine CD zuverlässig hergestellt und abgespielt werden kann (damit die Pits und Lands lang genug sind, um vom Laser sicher erkannt zu werden), müssen sich zwischen den Einsen mindestens 2 und maximal 10 Nullen befinden (sogenannte d/k-Bedingung). Durch einen Code, der die d/k-Bedingung erfüllt, brauchen Lands und Pits nur noch 1/3 der Länge zu haben, die sie haben müsste, wenn zwei Einsen (zwei Bitzellen, die einen Übergang haben und damit Anfang und Ende, sprich die Länge, des Pits bzw. des Lands bestimmen) unmittelbar aufeinanderfolgen dürften. Obwohl mehr als doppelt so viele Bits abgespeichert werden müssen, passt wegen der auf 1/3 verkürzten Länge einer Bitzelle im Ergebnis 50 % mehr Information auf die CD.
Bei 14 verwendeten Bits gibt es unter den 2$^{14}$ = 16384 möglichen Kombinationen 267, die die d/k-Bedingung erfüllen.
8-to-14-Kodierung (Ausschnitt) :
| Datenbyte | Datenbyte | Datenbyte | 14-Bit-Kodierung |
| dez. | hex. | binär | 14-Bit-Kodierung |
| 0 | 00 | 0000.0000 | 0100100.0100000 |
| 1 | 01 | 0000.0001 | 1000010.0000000 |
| 2 | 02 | 0000.0010 | 1001000.0100000 |
| 3 | 03 | 0000.0011 | 1000100.0100000 |
| 4 | 04 | 0000.0100 | 0100010.0000000 |
| 5 | 05 | 0000.0101 | 0000010.0010000 |
| 6 | 06 | 0000.0110 | 0001000.0100000 |
| 254 | FE | 1111.1110 | 0001000.0010010 |
| 255 | FF | 1111.1111 | 0010000.0010010 |

### Trennbits

Um sicherzustellen, dass auch im Übergangsgebiet zwischen zwei 14-Bit-Codewörtern der Mindestabstand von 2 und der Höchstabstand von 10 Nullen (d. h. mindestens 3 und höchstens 11 Bitzellenlängen zwischen zwei Übergängen) gewahrt bleibt, werden zwischen den Codewörtern zusätzlich 3 sogenannte Trennbits (000, 001, 010 oder 100) eingefügt. Da in den Fällen, in denen 10 Nullen am Ende eines 14-Bit-Codes und 10 Nullen am Anfang des nachfolgenden 14-Bit-Codes durch keine der 3 vorstehenden Trennbitkombinationen die d/k-Bedingung gewährleistet werden kann, müssen von den o.a. 267 vorhandenen Codewörtern diejenigen mit 9 und 10 Nullen am Anfang und diejenigen mit 9 und 10 Nullen am Ende eliminiert werden. Dies sind 11 Kombinationen, und so können gerade alle 2$^8$ = 256 verschiedenen Werte der 8 Bits des zu speichernden Bytes durch je eine Kombination dargestellt werden.
Ein so codiertes Signal würde – nach dem Zufallsprinzip – mal Abschnitte mit mehr Lands und mal Abschnitte mit mehr Pits aufweisen. Dieser Wechsel würde im hochfrequenten Signal zusätzlich unerwünschte niederfrequente Signalanteile erzeugen, die den Spurfolgemechanismus des CD-Players stören würden. Das Auftreten dieser niederfrequenten Signalanteile wird bei der Codierung durch entsprechende Trennbitauswahl unterdrückt, allerdings ist dies nur möglich, soweit die d/k-Bedingung alternative Trennbitauswahl zulässt, was aber durch die vier möglichen Trennbit-Worte ausreichend abgedeckt ist.
In vielen Fällen besteht nämlich die Möglichkeit, die eine oder die andere Trennbitkombination zu wählen. Beispielsweise kann man bei 3 Nullen am Ende des Codewortes und drei oder vier Nullen am Anfang des nächsten Codewortes jede der 4 vorhandenen Trennbitkombinationen wählen. Man wählt die, die zu einer Unterdrückung der niederfrequenten Signalanteile führt. Dabei berechnet man einfach laufend vom ersten Codewort an, wie viele Bitzellen auf den Lands liegen, und zieht die Bitzellen, die in den Pits liegen, davon ab. Das Ergebnis (der sogenannte laufende digitale Summenwert „DSW“) liegt nach dem ersten Codewort irgendwo zwischen +8 und −8. Dann berechnet man unter Einsatz der verschiedenen in der jeweiligen Situation zulässigen Trennbitkombinationen (d/k-Bedingung), wie sich der DSW bis zum Ende des nächsten Codewortes entwickeln würde. Man wählt unter den Alternativen diejenige Trennbitkombination aus, bei der der DSW möglichst nah bei 0 liegt. So fährt man fort und wählt immer die Trennbitkombination, die den DSW nahe 0 bringt. Dadurch gibt es nie mal mehr Lands und mal mehr Pits, was niederfrequente Signalanteile verursacht, sondern immer gleichmäßig viele Lands und Pits und damit ein niederfrequenzarmes Signal (auch gleichstromminimalisiert genannt).

## EFMplus

EFMplus ist die auf DVDs benutzte Modulation des Datenstroms. 8-Bit-Datenworte werden direkt auf 16-Bit-Codewörter umcodiert und dann aufgezeichnet. Das Wort Fourteen, für das das F im Namen steht, ist bei EFMplus nur historisch bedingt, denn 14-Bit-Codewörter spielen hier keine Rolle.
Die Polarität des Signals muss sich auch hier alle 3 bis 11 Takte (d/k-Bedingung, siehe oben) ändern. Unterschiedliche Codiertabellen je nach Vorgängercodewort sorgen dafür, dass dies für alle Kombinationen von Nachbarcodeworten passiert und dass das Signalspektrum kaum niederfrequente Anteile enthält, die das Tracking stören würden. Das Verfahren ist komplexer als EFM, dafür werden nur 16 statt 17 Zeittakte für 8 Datenbits benötigt, d. h. es passen ca. 7 % mehr Ursprungsdaten auf die Disc.
Unter den 2$^{16}$ = 65536 möglichen Kombinationen gibt es 566 16-Bit-Codewörter, die die d/k-Bedingung erfüllen. Aus diesen eliminiert man dann noch diejenigen, die 10 Nullen am Anfang oder am Ende haben. Dann kann man 4 Codiertabellen generieren, von denen jede 256 verschiedenen Codewörter enthält, die die 256 möglichen Bytes repräsentieren können. Dabei kommen in der ersten Codiertabelle (Status 1) 256 Codewörter mit ausschließlich 2 bis 9 Nullen am Anfang vor, in der zweiten und dritten Codiertabelle (Status 2 und 3) je 256 Codewörter mit ausschließlich 0 bis 5 Nullen am Anfang, und in der vierten Codiertabelle (Status 4) 256 Codewörter mit ausschließlich 0 oder 1 Null am Anfang. In vielen Fällen gibt es Überschneidungen, d. h. dasselbe Codewort kann z. B. sowohl in der Status-1- wie auch in der Status-2-Codiertabelle stehen, repräsentiert dann aber dasselbe Byte. Gleiches gilt für Codewörter in den Status-3- und Status-4-Codiertabellen. Die Status-2- und Status-3-Codiertabellen sind so gefertigt, dass sie sich nicht überschneiden. Alle Codewörter in der Status-2-Codiertabelle haben an Bitposition 3 und 15 jeweils eine Null, alle Codewörter in der Status-3-Codiertabelle haben an Bitposition 3 und 15 wenigstens eine Eins. Anhand dieses Merkmals kann man bei den Codewörtern mit 0 bis 5 Nullen am Anfang feststellen, ob sie aus der Status-2- oder der Status-3-Tabelle stammen.
Abhängig von der Anzahl Nullen, die ein Codewort am Ende hat, wird das nächste Codewort aus der entsprechenden Status-Codiertabelle gewählt. Endet das letzte Codewort z. B. auf 6 bis 9 Nullen muss das nächste Codewort aus der Status-4-Codiertabelle gewählt werden, in der nur Codewörter mit 0 oder 1 Null am Anfang stehen, endet er z. B. auf 0 oder 1 Null, muss das nächste Codewort aus der Status-1-Codiertabelle gewählt werden, in der nur Codewörter mit 2 bis 9 Nullen am Anfang stehen. Dadurch wird sichergestellt, dass immer wenigstens 2 und nie mehr als 10 Nullen auf eine Eins folgen (d/k-Bedingung). Dies stellt eine um 50 % erhöhte Datendichte sicher (siehe EFM). Dies sichert jedoch noch nicht die Unterdrückung niedriger Frequenzen, die unerwünscht sind, weil sie den Spurfolgemechanismus (Tracking) stören.
Die Besonderheit des Codes liegt bei den Codewörtern, die auf 2 bis 5 Nullen enden. Diese Codewörter stehen in derselben Status-Codiertabelle jeweils zweimal und repräsentieren dabei zwei verschiedene (8-Bit-)Bytes, sie sind also nicht eindeutig. Deshalb kann ein Decoder, wenn er im Datenstrom auf ein solches Codewort trifft, dieses nicht ohne eine Zusatzinformation entschlüsseln, die angibt, welches Byte denn durch dieses zweideutige Codewort repräsentiert wird. Diese Information befindet sich im nachfolgenden Codewort: Da diese zweideutigen Codewörter auf 2 bis 5 Nullen enden, muss das jeweils nachfolgende Codewort 0 bis 5 Nullen am Anfang haben (d/k-Bedingung), also entweder aus der Status-2- oder der Status-3-Codiertabelle stammen. Stammt dieses Nachfolge-Codewort aus der Status-2-Codiertabelle (d. h. hat es an Bitposition 3 und 15 jeweils eine Null) repräsentiert das zweideutige vorangehende Codewort das eine Byte, anderenfalls das andere.
Durch diese Doppeltbelegung von Codewörtern werden in allen vier Codiertabellen jeweils wenigstens 88 Codewörter frei, die in vier sogenannten Alternativcodiertabellen aufgenommen werden und damit 88 (der 256 möglichen) Bytes noch einmal in allen 4 Status repräsentieren (hier werden nicht zwei unterschiedliche Bytes durch dasselbe Codewort repräsentiert, sondern dasselbe Byte durch zwei unterschiedliche Codewörter). Die Codewörter der Alternativcodiertabellen sind so gewählt, dass sie den laufenden digitalen Summenwert (siehe EFM) gegenteilig beeinflussen zu dem Einfluss, den das Codewort desselben Status der Hauptcodiertabelle hat. Bei der Codierung wird in den Fällen, in denen das Codewort alternativ aus der Haupt- oder der Alternativcodiertabelle gewählt werden kann, so gewählt, dass der laufende digitale Summenwert möglichst dicht bei null bleibt.
Bei den restlichen 168 Bytes, für die es nur die Haupttabelle und keine Alternativtabelle gibt, kann der digitale Summenwert (und damit der niederfrequente Signalanteil) noch dadurch beeinflusst werden, dass es manchmal zulässig ist, anstelle eines Codewortes aus der Status-1-Tabelle ein Codewort aus der Status-4-Tabelle (oder umgekehrt) zu verwenden. Dies ist nur zulässig, wenn die Anzahl der Nullen am Ende des vorangehenden Codewortes und die Anzahl Nullen am Anfang des nachfolgenden Codewortes insgesamt nicht die d/k-Bedingung (mindestens 2, maximal 10 Nullen) verletzen, was von Fall zu Fall geprüft werden muss. In diesen Fällen wird bei der Codierung das Codewort verwendet, das den digitalen Summenwert möglichst dicht bei null hält.
Durch beide Maßnahmen wird – wie bei der EFM-Modulation – das Signal möglichst frei von niederfrequenten Signalanteilen gehalten.

### Beispiel EFMplus

Zum Beispiel entsprechen 00000101 und 00000110 im Zustand 1 dem Wort 0010000000100100. 00000101 im Zustand 1 verlangt jedoch als nächsten Zustand 2, wobei 00000110 als nächsten Zustand 3 fordert. Das Wort 00000111 wird im Zustand 2 zu 0100000000010010 und im Zustand 3 zu 0010000001001000 codiert. Beim Decodieren wird deshalb in einem Fall 0010000000100100 zu 00000101 und im anderen Fall zu 00000110 decodiert.