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.

Posun úrovní: čtyři způsoby

Když matice z kapitoly 4 řekne „nesmí", je potřeba mezi ty dva čipy něco dát. Možnosti jsou čtyři a liší se cenou, rychlostí a tím, kolik z nich umí obousměrně.

1. Odporový dělič — 5 V → 3,3 V

Nejlevnější věc na světě: dva rezistory. Napětí se rozdělí v poměru, ve kterém jsou.

Vout = Vin · R2 / (R1 + R2)a nic víc v tom není
5 VR11800 Ωna 3,3V vstupR23300 ΩV_IH 2,0 Vmez pinu 3,6 V3,24 Včas (ns)015314661úroveň 3,24 V · hrana 38,4 ns · nejvýš 7,8 Mb/strvalý proud 0,98 mA · ztráta 4,9 mWúroveň i pin v pořádku
Vlevo schéma, vpravo skutečná hrana. Zvětši oba odpory desetkrát: úroveň se nezmění vůbec, ale hrana se zpomalí desetkrát — a to je celý ten kompromis.

Kde je háček: tytéž rezistory, které dělí napětí, dělají s kapacitou vstupu RC článek. Malé odpory znamenají rychlou hranu a trvalý proud; velké odpory šetří proud a zpomalí hranu. Ta dvě přání táhnou proti sobě a poměr se přitom nemění — obě sady 1k8/3k3 i 18k/33k dají stejných 3,24 V, ale liší se rychlostí stokrát.

Dělič je jednosměrný a pomalý. Na I²C, SPI nad pár MHz nebo na cokoli obousměrného se nehodí. Na tlačítko, na signál „hotovo" nebo na UART do 115 kBd je to naprosto v pořádku a nikdo se za to nemusí stydět.

2. Sériový rezistor a ochranná dioda v čipu

Skoro každý vstup má diody do napájení. Sériový odpor 1–10 kΩ omezí proud, který jimi teče, na neškodných pár set mikroampér, a dioda dorovná napětí na VDD + 0,3 V. Funguje to, používá se to, a přesto to není správně: proud teče do napájecí větve, a když je cílový obvod vypnutý, napájí ho ten signál. U mikrokontroléru se to pozná tak, že po vypnutí zůstane napůl naběhlý.

3. MOSFET — obousměrně, dvěma rezistory

Klasické zapojení se signálovým MOSFETem (BSS138): source na nižší straně, drain na vyšší, gate na nižší napájení, pull-upy na obou stranách. Když nižší strana stáhne k nule, tranzistor sepne a stáhne i vyšší. Když nižší strana pustí, vyšší ji vytáhne přes substrátovou diodu a pak pull-up. Je to obousměrné a nepotřebuje to vědět, kdo zrovna mluví — proto se takhle dělá I²C mezi doménami.

4. Budič — když to má být rychlé

Vyhrazený obvod (74LVC1T45, TXB0104, TXS0108). Dvě napájení, dva rezistory nepotřebuje, jede do desítek až stovek megabitů a některé si i samy poznají směr. Je to jediné řešení, které se nemusí obhajovat — a stojí desetinásobek dvou rezistorů.

způsobrychlostobousměrnětrvalý proud
děličdo ~1 Mb/sneano, pořád
sériový odpor + diodastřednínemalý, ale do napájení
MOSFET + pull-upydo ~2 Mb/sanojen když je nula
budičdesítky Mb/spodle typuzanedbatelný

Vzorce v této kapitole

V_out — dělič napětí
V_out = V_in · R2/(R1+R2) [V] Ohmův zákon