# HDB3-Code

Der HDB3-Code (High Density Bipolar) ist ein Leitungscode aus dem Bereich der Telekommunikation.

## Kurzdefinition

Der HDB3-Code basiert auf dem AMI-Code, bei welchem allerdings lange Nullfolgen zum Synchronisationsverlust führen können. Zur Vermeidung von Synchronitätsverlusten werden beim HDB3-Code sogenannte Codeverletzungsregeln genutzt. So wird die vierte Null in Folge durch eine Eins in falscher Polarität ersetzt.

## Ersetzungstabelle

| | Anzahl von Pulsen seit letzter Ersetzung | Anzahl von Pulsen seit letzter Ersetzung |
| Letzter Puls | Ungerade | Gerade |
| Negativ | 000− | +00+ |
| Positiv | 000+ | −00− |

## Trivialerklärung

HDB3 bedeutet, dass niemals vier Nullen hintereinander übertragen werden. Falls vier Nullen übertragen werden müssen, so wird die AMI-Code-Regel verletzt und eine Null mit einer "falschen Eins" übertragen. Falsche Eins bedeutet hierbei, dass sie das "falsche" Vorzeichen hat (nämlich dasselbe wie die letzte Eins). An sich würde das schon genügen, um die Übertragung von beliebig vielen Nullen und Einsen hintereinander zu ermöglichen. Bei bestimmten Kombinationen von Nullen und Einsen verschiebt sich dabei jedoch der Gleichspannungsanteil des Signals. Um dem entgegenzuwirken, wird HDB3 verwendet. Vereinfacht ausgedrückt, funktioniert der HDB3-Code folgendermaßen:

### Sender

Der Sender merkt sich, in welche Richtung (Plus oder Minus) die letzte Eins ging. Wenn jetzt die nächste "falsche Eins" (also vier Nullen) übertragen werden muss, wird nach der oben angeführten Ersetzungstabelle vorgegangen.
Diese vier Sequenzen entsprechen dabei viermal Null.

### Empfänger

Der Empfänger wertet eine positive oder negative Spannung als Eins. Kommt es jetzt zu einer Verletzung der AMI-Code-Regel (zwei Einsen mit selber Polarität), wird diese falsche Eins als Null gewertet. Kommt jedoch eine solche Verletzung nicht nach drei Nullen, sondern nach zwei, wird auch die erste Eins, die eigentlich als richtige Eins auf der Leitung war, als Null gewertet (die zweite falsche Null auch).

## Beispiele

* Signale, welche in AMI und HDB3 codiert sind. Beide haben als Startvoraussetzung, dass die letzte übertragene 1 negativ ( - ) war, und dass die letzte Codeverletzung vor einem Bit stattfand. (Das Signal vor dem hier gezeigten war zum Beispiel ++–.)
* Zur Erklärung der Art der Codeverletzungen ist eine zusätzliche Zeile eingefügt die die zu Englisch balancing (B) und violating (V) Ersetzungspulse enthält.
| Input | 10000110 |
| AMI | +0000−+0 |
| HDB3 | +B00V−+0 |
| HDB3 | +−00−+−0 |
| Input | 101000001100001100000001 |
| AMI | +0−00000+−0000+−0000000+ |
| HDB3 | +0−000V0+−B00V−+B00V000+ |
| HDB3 | +0−000−0+−+00+−+−00−000+ |
| Input | 101000010000110000111000011110000101 |
| AMI | +0−0000+0000−+0000−+−0000+−+−0000+0− |
| HDB3 | +0-000V+000V-+B00V-+-000V+-+-B00V+0- |
| HDB3 | +0-000-+000+-+-00-+-+000+-+-+-00-+0- |
| Input | 10000000000 |
| AMI | +000000000 |
| HDB3 | +B00VB00V00 |
| HDB3 | +-00-+00+00 |

## Vorteile

* Sichere Taktrückgewinnung aus dem Signal, ohne dass ein Scrambler eingesetzt werden muss.
* geringer Gleichspannungsanteil des Signals

## Nachteile

* Wie beim AMI-Code ist ein Leitungstreiber notwendig, der die drei verschiedenen Pegel erzeugen kann. Verglichen mit einer einfachen binären Übertragung ist auch eine entsprechend aufwändigere Empfangsschaltung notwendig.

## Anwendung

Der HDB3-Leitungscode wird unter anderem auf PCM30-Übertragungsstrecken eingesetzt.