hdb301a.png

Edit v4.002 from 2004-11-17 to 2020-04-20 by MJa+HSc

HDB-3-Code

(/116/ S. 371, 4.1.8.2 HDB-3-Code)
= (High Density Bipolar, zu dt. "hohe Dicht bipolarer Zeichen") ist eine Erweiterung des AMI-Codes. Der Zusatz "3" sagt aus, dass bei diesem Leitungscode nicht mehr als drei "0" Zustände in Folge auftreten.

Algorithmus

hdb301a.png
Abb. 01: Ein Beispiel der HDB-3-Codierung
Für denn HDB3-Code gelten folgende Regeln:
  1. Folgen vier (oder mehr) "0" Zustände aufeinander, so wird das vierte "0" Datenbit durch ein Verletzungsbit (V-Bit) ersetzt. Dieses Verletzungsbit nimmt hierbei die gleiche Polarität an wie das letzte vorangegangene "1" Datenbit.
  2. Liegt zwischen dem letzten Verletzungsbit und dem nach Regel 1 einzusetzenden nächsten Verletzungsbit eine gerade Anzahl von "1" (MJa: oder "0") Datenbits, so muss das Erste der "0" Datenbit auf "1" gesetzt werden. Dieses Bit wird als Bipolar -Bit (B -Bit) bezeichnet. Die Polarität dieser Bipolar Bit entspricht der AMI Regel, d.h. es wird mit der entgegen gesetzten Polarität zum Vorgänger "1" Datenbit gesetzt. Das Bipolar-Bit und das folgende Verletzungsbit besitzen stets die gleich Polarität.
Um den HDB-3-Code generieren zu können muss man also Vergangenheit und Zukunft kennen.

Erläuterung zum HDB-3-Code

hdb301b.png
Abb. 02: Manuelle Analyse mit Beispieldaten

Um ihn zu generieren ist es sehr nützlich eine solche Übersichtstabelle zu erstellen. Hier kann man folgendes erkennen:
  • Ein schwarzes Datenbit (Lfd. Nr. 4) wird gesetzt, wenn in der Eingabe "intBD" eine 1 steht. Die Richtung des Datenbits ist abhängig vom Wert des Richtungsweisers "intBitHL" =  1.
    Was setzt das schwarze Datenbit?
    • Den Einsenzähler "intBDAnz1" um eine Stelle erhöhen, z.B. von 1 auf 2,
    • Den Nullenzähler "intBDAnz0" auf 0 setzen und
    • Den Richtungsweiser negieren, z.B. von 1 auf -1.
  • Ist kein schwarzes Datenbit (Lfd. Nr.6) gesetzt, d.h. in der Eingabe steht eine 0 wird
    • der Nullenzähler "intBDAnz0" wird um eine Stelle erhöht, z.B. von 0 auf 1.
  • Ein rotes Verletzungsbit (Lfd. Nr. 9) wird gesetzt wenn der Nullenzähler "intBDAnz0" den Wert 4 hat. Die Richtung des Verletzungsbit ist abhängig vom Wert des Richtungsweisers "intBitHL" =  1
    Was setzt das rote Verletzungsbit?
    • den Einsenzähler "intBDAnz1" wieder auf 0, z.B. von 3 auf 0
    • den Nullenzähler "intBDAnz0" wieder auf 0, z.B. von 4 auf 0, obwohl in der Eingabe eine 0 steht.
    • der Verletzungsbit Zähler "intBVAnz" wird um eine Stelle erhöht, z.B. von 0 auf 1
  • Ein blaues Bipolar Bit (Lfd. Nr. 12) wird gesetzt, wenn
    • die Summe der nächsten 4 Bit den Wert 0 hat, ("intBSumme" = 0),
      der Einsenzähler "intBDAnz1" eine gerade Zahl z.B. 2, und
    • der Verletzungsbit Zähler "intBVAnz" einen Wert größer als 0 im Bsp. 1 hat.
    • Die Richtung ist abhängig vom Richtungsweisers "intBitHL" =  -1.
    Was setzt ein blaues Bipolar Bit?
    • NICHTS!
    Achtung, das blaue Bipolar Bit verändert nicht denn durch die Eingabe ("intBD") 0 hoch gezählten Nullzähler ("intBDAnz0"), obwohl es im HDB-3 Datenstrom ein gesetztes Daten Bit darstellt!