Hlavní navigace

Rozšíření počtu vstupů portu

23. 7. 2009
Doba čtení: 5 minut

Sdílet

Paralelní port (v základním režimu) má jen 5 vstupů, což nemusí vždy stačit. Rozšiřování počtu vstupů je jednodušší než rozšiřování počtu výstupů, neboť není zapotřebí žádná součástka, která by si pamatovala stav. Stačí si přepnout vstup a přečíst. K tomuto účelu se prodávají hotové multiplexory, nebo lze použít hradla.

Přepínač vstupů

Otázka je, jak za pomoci logických hradel přepnout vstup. Poměrně snadné je hradlem vstup vypnout a zapnout. Použijeme-li jeden vstup hradla AND jako datový a druhý jako řídící, dostaneme pro log 1 na řídícím vstupu na výstupu hodnotu z datového vstupu. Pro log 0 na řídícím vstupu dostáváme vždy log 0 na výstupu. Pokud zapojíme tyto „vypínače“ na více datových vstupů (na každý jeden), a zapneme pouze jeden z nich, dostaneme pouze jeden signál a zbytek budou log 0. Můžeme tedy vše sečíst a máme na výstupu vybraný signál. Ke sčítání se použije hradlo OR. Jeho sčítání je sčítání ve smyslu booleovy algebry, nikoliv klasické matematiky, ale to v tomto případě nevadí, protože víme, že na jeho vstupech je jen jeden signál, zbytek jsou log 0.

Pokud bychom chtěli přepínat mezi dvěma signály, potřebujeme dvě dvouvstupová hradla AND a jedno dvouvstupové hradlo OR. Oba řídící signály můžeme generovat přímo z portu, ale lze si povšimnout, že oba řídící signály nesmí být současně v log 1 (jinak nečteme jeden vstup, ale jejich logický součet) a nemá smysl, aby byly současně v log 0 (čteme vždy log 0 bez ohledu na stav vstupu). Stačí tedy generovat jen jeden řídící signál a jako druhý použít jeho negaci.

Rozšíření počtu vstupů portu - schéma 1

Optimalizovaný přepínač

Toto zapojení obsahuje tři typy hradel, které se běžné vyrábějí v pouzdrech po čtyřech (AND a OR), nebo šesti (NOT) hradlech. Takže by přepínač jednoho vstupu obsahoval tři pouzdra integrovaných obvodů, což je poněkud nepraktické. Čtyři identické přepínače by obsahovaly čtyři pouzdra IO. Naštěstí lze obvod optimalizovat. Hradlo OR je možné nahradit hradlem AND, které má negované všechny vstupy a výstup. S negací výstupu problém není, stačí použít hradlo NAND … a s negací vstupů vlastně také ne, použijí-li se místo vstupních hradel AND hradla NAND. Na přepínání mezi dvěma signály tedy potřebujeme tři hradla NAND a jedno hradlo NOT. Dvouvstupová hradla NAND se vyrábějí po čtyřech (obvod 7400), spojením vstupů hradla NAND vzniká NOT, takže se nám celý přepínač podaří postavit z jednoho pouzdra 7400.

Rozšíření počtu vstupů portu - schéma 2

Takto lze postavit přepínače pro všech pět vstupů paralelního portu. Budou obsahovat 5 výstupních hradel, 10 vstupních a jedno zapojené jako NOT. Dohromady 16 hradel NAND, tedy 4 pouzdra. Zapojení je identické, hradlo NOT je společné (není důvod neřídit všechny přepínače jedním výstupem). Tady může nastat problém s tím, že na jeden výstup paralelního portu je připojeno 7 vstupů hradel. Na výstup TTL hradla by mělo jít připojit přes 10 vstupů, ale výstupy paralelního portu často nejsou úplně podle normy TTL. Pokud máte port oddělený (podstatné je, že zesílený), není to problém.

Pokud to výstup paralelního portu nezvládne, lze mu ulehčit o jeden vstup alternativním zapojením negátoru. Místo zapojení A NAND A = NOT A lze totiž použít A NAND 1 = NOT A, logická 1 je napájecí napětí TTL obvodů. Pokud by nepomohlo ani to, je nutné výstupní signál zesílit. Stačí hradlo NOT (stejně je tento signál potřeba negovaný i nenegovaný), ale žádné volné není, takže by to znamenalo další pouzdro IO. Lze také použít NPN tranzistor s odporem cca 4k7 v bázi (na paralelní port) a 1k v kolektoru (na +5V, kolektor je výstup), což je také negátor.

Na portech, kde jsem to používal, naštěstí tento problém nenastal.

Rozšíření počtu vstupů portu - schéma 3

Čtveřice společně ovládaných dvouvstupových multiplexorů se prodává jako jeden obvod, takže bych dnes (pokud bych nepotřeboval stejné zpoždění na všech vstupech, což u paraleního portu opravdu potřeba není) stavěl pětinásobný multiplexor z jednoho obvodu 7400 a jednoho 74157 (čtyřnásobný multiplexor), což zároveň sníží zátěž ovládacího výstupu paralelního portu.

Zpoždění signálů

Na každém hradle dochází ke zpoždění signálů. Toto zpoždění je závislé na napájecím napětí (s tím u TTL hýbat nelze) a na řadě obvodů. Obvody řady 74Fxx jsou z běžných obvodů nejrychlejší (lze je použít na 100MHz), 74HCTxx pracují do 40MHz (typické zpoždění hradla 7ns při 25 stupnich Celsia a napájecím napětí 4.5V, maximální zpoždění 22ns / –40 až +125 degC / 4.5V – viz datasheet). Zpoždění na hradle je uvedeno v datasheetu. Například pro 74HCT00 se udává typické zpoždění 10ns. Pokud je třeba spínat rychle (jednou instrukcí přepnout, druhou číst), 74HCT00 vyhoví (což nic nemění na tom, že je třeba vyzkoušet, zda to stihne sám port). Pokud na rychlosti příliš nesejde (není problém mezi přepnutím a čtením několik mikrosekund počkat), lze použít jakékoliv obvody.

Návrh

Je principiálně jedno, zda si na tento obvod navrhnete plošný spoj, nebo ho zaletujete na bastldesku (nepájivé kontaktní pole doporučuji jen na hraní a ozkoušení). V každém případě je nutné ke každému pouzdru IO dát jeho blokovací kondenzátor. Ten by měl být keramický (svitkové a elektrolytické mají velkou indukčnost) s kapacitou mezi 33nF a 330nF. Většinou se používá 100nF. Celá deska by měla mít v napájení elektrolytický kondenzátor cca 10uF až 100uF. Napájecí vodiče by měly mít větší průřez (šířka 1mm na plošňáku a pocínovat, na bastldesce většinou člověk příliš tenký drát nepoužije, protože se s ním špatně dělá) a měly by vést přímo (stačí pravoúhle). Datové a napájecí vodiče by neměly mít dlouhé souběhy (být společně vedené blízko u sebe) a také se doporučuje, aby vstupní a výstupní vodiče byly spíše dál od sebe.

CS24_early

Platí, že čím méně pouzder, tím méně práce, takže se nevyplatí šetřit na součástkách (nejste-li student potřebující ušetřit desetikorunu za cenu hodiny své práce, nebo neděláte-li mnohatisícikusové série na osazovacích strojích, kde bude ekonomická kalkulace složitější). Navíc je zpravidla použití méně pouzder i levnější, takže často lze „šetřit“ pouze že šuplíkových zásob. Na druhou stranu hradla jsou v šuplíkových zásobách častěji, což se hodí při víkendovém bastlení.

Složitější přepínače

Není problém z hradel navrhnout i mnohem složitější přepínače – třeba se čtyřiceti vstupy, pěti výstupy a ovládaný třemi signály (23=8 stavů). Nicméně osmi a šestnáctivstupové multiplexory lze koupit jako hotové součástky (74151A, 74150) a je efektivnější stavět z nich.

Byl pro vás článek přínosný?