LinkLab linka je dohoda, ne drát

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

Kódování na lince: NRZ, Manchester a stejnosměrná složka

Až doteď jsme mlčky předpokládali, že jednička je vysoká úroveň a nula nízká. Tomu se říká NRZ a je to nejlevnější možnost — a taky ta, která má dva problémy.

NRZ11110000ManchesterNRZManchesternejdelší úsek beze změny4 bitů1 půlbitodchylka od nuly00šířka pásma
Zkus 0xF0 nebo 0x00 a sleduj obě stopy. NRZ na osmi stejných bitech nemá jedinou hranu; Manchester jich má osm.

Problém 1: dlouhý úsek bez hrany

Když přijde dvacet nul za sebou, na lince se dvacet bitů nic neděje. Příjemce nemá podle čeho doladit hodiny (kapitola 4) a odpočítat dvacet bitů bez opory je moc. Řešení jsou tři a všechna se používají:

  • Krátké rámce a start bit — cesta UARTu.
  • Vkládání bitů — cesta CANu a USB.
  • Kódování, které hranu vynutí — Manchester.

Problém 2: stejnosměrná složka

Když je v datech víc jedniček než nul, průměrné napětí na lince se posune. To by nevadilo, kdyby mezi vysílačem a příjemcem byl jen drát — jenže bývá tam transformátor nebo kondenzátor (kvůli galvanickému oddělení, kvůli bezpečnosti, kvůli rozdílným zemím). A ten stejnosměrnou složku neprojde. Rozhodovací úroveň příjemce se pomalu odplouvá a linka se rozpadne po delší sérii stejných bitů.

Manchester řeší obojí naráz. Každý bit se vysílá jako hrana uprostřed: jednička jako sestupná, nula jako náběžná. Tím je zaručeno, že hrana přijde každý bit, a zároveň je každý bit půl času nahoře a půl dole — stejnosměrná složka je přesně nula, ať jsou data jakákoli. Cena je dvojnásobná šířka pásma, což je hodně.

NRZNRZIManchester
symbolů na bit112
hrana zaručenanejen na nuláchvždy
stejnosměrná složkazávisí na datechzávisí na datechnula
kdeUART, SPI, CANUSB (+ stuffing)Ethernet 10BASE-T, RFID, DALI

A co dnešní rychlé linky

Zdvojnásobit šířku pásma je u gigabitových rychlostí neúnosné, takže se používají kódy, které zaručí hrany i vyváženost za mnohem menší cenu: 8b/10b posílá deset symbolů na osm bitů (režie 25 % místo 100 %) a 64b/66b u 10gigabitového Ethernetu jen 3 %. Princip je pořád ten samý — jen se sledují delší bloky a hlídá se běžící nevyváženost, tedy kolik nadbytečných jedniček se za dobu přenosu nasčítalo.

Vzorce v této kapitole

BW — šířka pásma Manchesteru
BW = 2 × bitová rychlost [Hz] kap. 12