Proč se posílá po jednom drátě
Osm vodičů vedle sebe pošle bajt najednou. Jeden vodič ho musí poslat po bitech, tedy osmkrát pomaleji. A přesto všechno rychlé, co dnes existuje — USB, PCIe, SATA, Ethernet — je sériové. To vypadá jako krok zpátky a není.
Proč paralelní sběrnice prohrály
- Rozjezd hran (skew). Osm vodičů není stejně dlouhých. Když jeden bit dorazí o kousek dřív, musí se čekat na nejpomalejší — a čím rychleji se to žene, tím větší podíl periody ten rozdíl zabírá. U jednoho vodiče žádný rozdíl mezi vodiči být nemůže.
- Přeslechy. Vodiče vedle sebe se ovlivňují, a čím ostřejší hrany, tím víc.
- Cena. Osm vodičů, osm budičů, osm vstupů, konektor s osmi kontakty navíc.
Sériová linka nic z toho nemá, takže se u ní dá jít na frekvence, kde by paralelní sběrnice neposlala nic — a osminásobek frekvence je víc než osminásobek vodičů. IDE končilo na 133 MB/s se čtyřiceti vodiči; SATA po dvou vodičích udělá 600 MB/s.
Ale za to se platí, a tahle labka je hlavně o té ceně: u jednoho vodiče se najednou musí vyřešit, kde bajt začíná, jak rychle jde, který bit je první a jak se pozná, že dorazil celý. U paralelní sběrnice to řešily ty vodiče navíc. Linka není drát — linka je dohoda.
Čtyři otázky, na které musí každý protokol odpovědět
| otázka | UART | SPI | I²C | CAN |
|---|---|---|---|---|
| kde začíná? | start bit | signál výběru | podmínka START | bit SOF |
| jak rychle? | dohoda předem | hodiny na drátě | hodiny na drátě | dohoda + resynchronizace |
| který bit první? | nejnižší | obvykle nejvyšší | nejvyšší | nejvyšší |
| je celý? | parita (slabá) | nic | potvrzení příjemcem | CRC-15 |
Ten poslední řádek stojí za pohled. SPI nemá žádnou kontrolu. Když do dat skočí rušení, dostanete jinou hodnotu a nikde se nic nedozvíte — a proto si čidla po SPI často nesou vlastní kontrolní součet uvnitř zprávy.