LogicLab jednička je rozsah, ne číslo

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.

Open-drain: výstup, který umí jen dolů

Běžný výstup má dva tranzistory: jeden táhne k napájení, druhý k zemi. Open-drain má jenom ten spodní. Umí tedy vyrobit nulu — a jedničku ne. Ta vzniká tak, že tranzistor vypne a nikdo drát nedrží; vytáhne ho rezistor.

V_DDR1č. 1pustilč. 2pustilč. 3pustilč. 4pustilnikdo netáhne → rezistor vytáhne jedničkujedničku nikdo nevysílá; je to nepřítomnost nulyneteče žádný proud
Čtyři zařízení na jednom drátě. Jezdcem se přidávají ta, která táhnou k nule — a je vidět, že od prvního z nich se na drátě už nic nemění.

Proč by někdo dělal výstup, který umí míň

Protože takové výstupy se dají spojit. Když spojíš dva normální výstupy a jeden pošle jedničku a druhý nulu, teče mezi nimi zkratový proud (kapitola 10). Když spojíš dva open-drainy, nemůže se to stát: ani jeden neumí táhnout nahoru, takže se nemají čím přetlačovat. Výsledek je logický součin — wired-AND: dokud drží aspoň jeden nulu, je na drátě nula.

drát = A ∧ B ∧ C ∧ …a ta logika není nikde nakreslená, je to fyzika drátu

Kde se to používá a proč zrovna tam

kdeproč
I²C (obě linky)víc zařízení, obousměrně, a rozhodčí při souběhu adres
přerušení od více čipůjeden pin místo osmi; kdokoli může zavolat
1-Wire, SMBus, PMBustotéž o patro níž
reset a povoleníkdokoli smí držet čip v resetu, nikdo ho z něj nesmí vytáhnout násilím
posun úrovnírezistor jde na jiné napájení než čip — kapitola 6

Co za to

Tři věci, a všechny tři jsou v příští kapitole vyčíslené:

  1. Hrana nahoru je exponenciála, ne skok. Rychlost linky se najednou určuje rezistorem a kapacitou drátu, ne čipem.
  2. Proud teče, kdykoli je na drátě nula — a čím rychlejší hranu chceš, tím větší rezistor to nesmí být, tím větší proud.
  3. Nikdo ti nesmí odpovědět „jedničkou", takže ztracený nebo zaseknutý účastník se pozná jen tím, že drát zůstane dole. Zaseknuté I²C je přesně tohle.

CAN je totéž jinými prostředky. Dominantní stav přebije recesivní úplně stejnou úvahou, jen na diferenciálním páru — a arbitráž bez kolize, kterou popisuje LinkLab, je wired-AND s tímhle chováním. Jedno pravidlo, dvě sběrnice.

Vzorce v této kapitole

wire — wired-AND
wire = A ∧ B ∧ C [—]