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.

Tri-state, sběrnice a spor

Open-drain řeší sdílený drát tím, že nikdo neumí táhnout nahoru. Druhé řešení je opačné: budiče umí obojí, ale umí se odpojit. Tomu třetímu stavu se říká vysoká impedance, značí se Z a není to napětí — je to nepřítomnost budiče.

11budič 1povolenZbudič 2odpojenZbudič 3odpojenjeden budič — přesně takhle to má být2,40 V
Tři budiče na jedné sběrnici. Nula povolených znamená plovoucí drát, jeden je správně, dva jsou zkrat přes dva tranzistory.

Tři stavy, z toho dva jsou napětí

stavco drží drátkdy je správný
1horní tranzistor k VDDkdyž mluvím a posílám jedničku
0dolní tranzistor k zemikdyž mluvím a posílám nulu
Znikdovždycky jindy

Co se stane, když se dva potkají

Jeden drží jedničku, druhý nulu. Mezi napájením a zemí je pak cesta přes dva sepnuté tranzistory a nic jiného v ní není:

I = VDD / (RON,H + RON,L)u 74LVC to je 3,3 V / 60 Ω ≈ 55 mA

Padesát pět miliampér nezničí nic okamžitě, a v tom je ta past — spor se obvykle neprojeví jako porucha, ale jako teplo, propad napájení a občasná chyba jinde na desce. Napětí na drátě přitom sedí někde uprostřed, často přímo v zakázaném pásmu, takže všechny ostatní vstupy na téhle sběrnici v tu chvíli čtou náhodná čísla — i ty, které se sporu neúčastní.

Kde spor vzniká i u správně napsaného kódu: při přepínání směru. Jeden budič se odpojuje, druhý se zapíná, a když se ta dvě zpoždění překryjí, vznikne spor na desítky nanosekund při každé výměně. Řešení je mrtvý čas — táž myšlenka jako u H-můstku v BridgeLabu, jen o tři řády rychleji.

A plovoucí sběrnice je vlastní problém

Když se odpojí všichni, drát nedrží nikdo. Není to nula ani jednička — je to kus mědi s kapacitou, který si drží poslední náboj a pomalu ho ztrácí, a mezitím sbírá všechno, co kolem prolétne. U CMOS vstupů to znamená příčný proud a topení (kapitola 1). Proto má každá sběrnice slabý pull-up nebo pull-down — ne kvůli logice, ale aby drát nikdy nezůstal bezprizorní.

Vzorce v této kapitole

I — proud při sporu
I = V_DD/(R_ON,H + R_ON,L) [A]