Obvod, který „žije“…

… aneb co to vlastně jsou ty konečné automaty a sekvenční obvody?

V tomhle článku bych rád přiblížil všem zájemcům konečné automaty a jejich obvodové zapojení. Hned na začátku upozorňuji, že jde o popis používaný při výuce v dětských kroužcích a slouží k pochopení funkce a k zjištění:, „jak to zapojit, aby to dělalo co chceme“.

Definic typů konečných automatů a jejich teoretických popisů je plný internet, takže zde to nebudu opakovat a rovnou vás odkážu na stránky školy, kde jsem studoval – ČVUT FEL.

[1], [2]

Zde se také poprvé zrodila myšlenka elektronické stavebnice, která by konstrukci sekvenčních a synchronních sekvenčních obvodů umožňovala. Stavebnice vznikla. jmenuje se Saimon a informace o ní naleznete zde.

Obvod, který žije? Co si pod tím představit

Pro tento článek předpokládám, že se spínači a rezistory je čtenář schopen ledky zapojit tak, aby svítily. Dokonce s dvěma tranzistory, několika rezistory, kondenzátory a googlem je bude umět rozblikat. Tím už se v obvodu něco děje – totiž bliká nám to.

Obvod, který vám zde chci ukázat a naučit vás ho vytvořit, bude „žít“ mnohem více. Budou v něm mimo jiné tři ledky – červená, zlutá (oranžová) a zelená. Budu ho nazývat semafor. Nebude jen blikat, bude měnit světla tak, jak se sluší na správný semafor na křižovatce s přechodem pro chodce. Pro ty, kdo si hned nevzpomenou, jak vlastně takový semafor funguje, je připraven popis a obrázek.

Krok 1: slovní popis „co to má dělat“

Nejdříve popis: Na semaforu svítí zelená, auta mohou projíždět. Pokud chodec stiskne tlačítko pro chodce, semafor zhasne zelenou, rozsvítí oranžovou, ta chvíli svítí, pak zhasne oranžová a rozsvítí se červená. Auta musí zastavit a chodec může přejít vozovku. Dále se k rozsvícené červené přidá rozsvícená oranžová, auta se připravují na jízdu, nakonec červená s oranžovou zhasnou a rozsvítí se opět zelená. A auta mohou jezdit dál. Kombinace „jak to svítí“ jsou celkem čtyři. Tyto kombinace budu nazývat stavy. Očíslovaní těchto stavů jsem k obrázku napsal ve dvojkové soustavě: 0=00bin, 1=01bin, 2=10bin, 3=11bin.

Stavy se stále opakují. Číslování stavů je: zelená = stav obvodu 0. Oranžová = stav obvodu 1. Logické by teď bylo, kdyby následující stav, tedy rozsvícená červená, byl stav obvodu 2. Na obrázku ale vidíme, že číslo stavu je 11 binárně, tedy trojka. Je to jen proto, že sekvenční obvod je jednodušší, pokud stavy, které jsou po sobě, se v binárním zápisu liší jen v jednom bitu (01 a 10 se liší v obou bitech). Všimněte si, že na obrázku se vždy následující stav od předchozího liší pouze změnou jedné jedničky nebo nuly na její opak. Samozřejmě by to šlo i číslováním stavů 0,1,2,3, ale takhle to bude jednodušší obvod.

Krok 2: nakreslit si, jak jdou stavy po sobě

Nuže máme teoretický popis činnosti semaforu. Poznámka – zatím budeme vytvářet semafor, který své stavy mění stále dokola, a až později ho vylepšíme o tlačítko pro chodce. Dobré v tomhle kroku je si nakreslit obrázek s čísly stavů, abychom věděli, kolik jich vlastně je a jak jdou po sobě.

Šipky ukazují, v jakém pořadí obvod mění stavy. Tenhle popis připomíná konečný automat.

Co to tedy sekvenční obvod je a jak souvisí s konečným automatem?

Tak, a teď jak zapojit obvod, aby nám dokázal stavit měnit, čili aby se ledky rozsvěcely a zhasínaly tak, jak jsme si to právě popsali. Jaké na to potřebujeme součástky? Všechno popořádku. Nejprve si řekneme, co to synchronní sekvenční obvod je. Jeho popis je na dalším obrázku.

Pro náš článek postačí tato definice: Konečný automat je teoretický popis (model), který nám říká, jaké stavy existují a jak se po sobě mění (čtyři stavy světel semaforu). Synchronní sekvenční obvod (dále jen SSO) je jeho obvodové zapojení (jaké součástky propojit, aby to fungovalo).

Na dalším obrázku uvedu součástky ze stavebnice Saimon, je samozřejmě možné si je obstarat jinde a zapojit například na nepájivém poli.

Začnu tím srdcem SSO – paměťovým obvodem. Ve stavebnici Saimon je to integrovaný obvod IO-3, typ 74175. Kdo si vygooglí, co to je za obvod, dostane odpověď: klopný obvod typu D se čtyřimi vstupy A,B,C,D a čtyřimi výstupy A,B,C,D.

Jak klopný obvod funguje? Pokud mu přivedeme na vstupy kombinaci nul a jedniček, tak výstupy zatím nic nedělají. Aby si obvod stav vstupů „zapamatoval“, je potřeba provést změnu z logické 0 na logickou 1 na vývodu CLOCK, který je na stavebnici Saimon označen jako „ZAPSAT“ a má číslo 87. Pokudsoučástku zapojujete v nepájivém poli, je ještě třeba vývod /WE připojit na log.1; na Saimonu je to již zapojené. Obvod si zapamatuje vstupy – stejná kombinace nul a jedniček se objeví na výstupech. A to přesně ve chvíli, kdy na vývodu ZAPSAT probíhá změna log.0 na log.1, říká se tomu náběžná hrana a toto chování je vlastní právě pro klopný obvod typu D.

IO 74175 má navíc ještě další čtyři výstupy, které mají nad písmenkem čáru (dále jen /A, /B, /C, a /D). K čemu jsou, uvedu na příkladu. Pokud bude na výstupu A log.1, tak na výstupu /A bude log.0. A obráceně. Nazývá se to komplementární výstup, má opačnou logickou hodnotu oproti výstupu A. V obvodu je totiž zabudovaná funkce NOT, která jak víme, mění log.0 na log.1 a obráceně, což se nám bude pro zapojení SSO hodit – ušetří nám to logické funkce v kombinačním obvodu.

Další obvod je kombinační obvod pro změnu stavů. Zde se trochu rozepíšu. Princip je takový: Po zapnutí obvodu by měly být výstupy IO-3 nastaveny všechny na log.0. Pro semafor potřebujeme jen dva vstupy/výstupy, zvolím A a B. Teď je třeba sestavit takový obvod, který z těch dvou nul, což je stav 00, „udělá“ stav 01. Čili změní z A=0 a B=0 na A=0 a B=1. A tuto změnu přivedeme na vstupy klopných obvodů.

Teď přichází na řadu hodinový obvod. Ve stavebnici Saimon je to IO-1, což je časovač NE555. Kdo by opět googlil, najde mnoho různých zapojení tohoto obvodu, z nichž  se nám hodí dvě: astabilní a monostabilní zapojení.

Astabilní znamená, že obvod na svém výstupu stále mění log.0 na log.1 a zase zpět. Tempo, jakým se to děje, můžeme měnit potenciometrem.

Monostabilní zapojení znamená (pro naše účely), že obvod změní stav výstupu z log.0 na log.1 (například po stisku spínače), chvilku počká (zvolíme kapacitou kondenzátoru, jak bude dlouhá), a pak výstup opět vrátí do stavu log.0.

Astabilní zapojení je dobré ve chvíli, kdy se stavy mají měnit automaticky stále dokolečka. Monostabilní zapojení je dobré, pokud chceme přejít do následujícího stavu pouze stiskem spínače. Pro náš obvod vyberu astabilní zapojení.

Co na astabilní zapojení NE555 odpoví Google? Zde jsem si vypůjčil schéma ze stránky www.mylms.cz

A tak bude zapojení obvodu vypadat ve stavebnici Saimon:

Kondenzátor C2 je již ve stavebnici zapojen, rovněž vývody, které vedou na napájení nebo zem. Potenciometrem určujeme rychlost hodinového pulsu (blikání). Pokud ledku u IO-3 jumperem zapneme, můžeme sledovat, jak nám to rychle bliká, hodnota kondenzátoru C1 22 mikrofaradů zajistí očima sledovatelné blikání.

Výstup hodinového signálu přivedeme na hodinový vstup klopného obvodu 74175, čili drátkem spojíme zdířku 50 (výstup NE555) a zdířku 87 (ZAPSAT).

Krok 3: napsat si do tabulky, jak se mění výstupy na vstupy

V předchozím odstavci jsem ukázal, že po zapnutí je na výstupech klopného obvodu A=0 a B=0. To je stav 0. Ten je potřeba při hodinovém pulsu změnit na stav A=0 a B=1, čili stav 0 změnit na stav 1. To ale není vše, musíme také vymyslet, jak udělat změnu z A=0 a B=1 na A=1 a B=1 (změna ze stavu 01 na stav 11) a pak z A=1 a B=1 na A=1 a B=0 (změna stavu 11 na stav 10) a nakonec zase na A=0 a B=0, což je počáteční stav. K tomu bude sloužit kombinační obvod. Ten, jednoduše řečeno, z výstupů 74175 „udělá“ bity pro vstupy 74175 , které určí další stav.

Stav se objeví na výstupech klopného obvodu po přijetí hodinového signálu. Zapíšu do tabulky to, co je v grafu v odstavci Krok2.

 

Na prvním řádku vlevo je stav po zapnutí, 00. Pomocí kombinačního obvodu ho musíme změnit na stav, který je vpravo. Výstupy 74175 přivést přes kombinační obvodu na vstupy 74175 a čekat na hodinový signál z NE555. S druhým řádkem musíme provést to samé, stejně tak se třetím a čtvrtým. Kombinační obvod musíme vymyslet. Naštěstí hlavy pomazané vymyslely jednoduchý způsob, jak to udělat.

Krok 4: navrhnout kombinační obvod pro změny stavů

Pro každý vstup je potřeba vytvořit jeden kombinační obvod. V našem případě budou tedy obvody dva, máme dva vstupy A a B.

Obvod pro vstup A „vezme“ oba výstupy A a B, a „udělá“ z nich správný bit podle tabulky pro vstup A pro každý stav. Stejně tak bude fungovat kombinační obvod pro vstup B. Pro přehlednost jsem nakreslil dvě tabulky, každou pro jeden obvod.

V tomhle případě můžeme kombinační obvod odhadnout (později vás seznámím s mapami, které budeme používat v případě, že odhadnout kombinační obvod je mimo schopnosti běžného smrtelníka).

Kombinační obvod pro vstup A

Všimněte si, že v první tabulce jsou sloupce výstup B a vstup A stejné. Kombinační obvod může být funkce: A = B. Vstup A lze rovnou propojit drátkem s výstupem B. Kombinační obvod pro vstup A se tak skládá pouze z drátku.

Kombinační obvod pro vstup B

Dále si všimněte, že v druhé tabulce je sloupec vstup B přesně opačný sloupci výstup A. Opak, to už známe – to je logická funkce NOT. Kombinační obvod je zapojení funkce: B = NOT A. Obvod 74175 má funkce NOT pro všechny výstupy již zabudované, jsou to ty komplementární, s čárkou nad písmenkem. Stačí propojit drátkem výstup /A se vstupem B.

Abychom mohli vidět, jak obvod mění stavy, přivedeme ještě výstupy A a B na vstupy číslicovky. Vše jsem nakreslil do schématu.

Krok 5 – navrhnout kombinační obvod pro ledky

Poslední, co zbývá, je navrhnout kombinační obvody, přes které připojíme ledky semaforu. Kombinační obvody musí být tři, pro každou ledku zvlášť. Když počítáme i obvody pro vstupy, tak to bude třetí, čtvrtý a pátý obvod. Napíšu do tabulky, v jakém stavu budou ledky svítit a v jakém ne. 0 znamená nesvítí, 1 znamená svítí.

Pohledem do tabulky zjistíme funkce pro ledky.

Kombinační obvod pro zelenou ledku

Zelená svítí pouze v případě, že A i B jsou rovny 0. Známe podobnou funkci – AND. Ale ta funguje v případě, že A i B by byly rovny 1. Když budeme negovat oba výstupy a pak uděláme logický součin AND, tak to bude fungovat. Kombinační obvod je zapojení funkce: ZELENÁ = (NOT A) AND (NOT B). Negace už máme vestavěné v obvodu 74175. Funkci AND umíme zapojit pomocí dvou funkcí NAND. Jak na to, je schematicky znázorněné přímo na desce stavebnice. Abychom jeden NAND ušetřili (na žlutou ledku budeme totiž potřebovat tři) prozradím, jak z funkce NAND udělat pro tento případ funkci AND: stačí zapojit zelenou ledku obráceně.

Kombinační obvod pro žlutou ledku

Žlutá (ano, správně má být na semaforu oranžová) svítí ve stavech A=0 a B=1, nebo A=1 a B=0. To je logická funkce XOR – vylučovací OR. Kombinační obvod je zapojení funkce: ŽLUTÁ = A XOR B. Tu na stavebnici musíme složit ze tří funkcí NAND, jak je znázorněno ve schématu na obrázku níže.

Kombinační obvod pro červenou ledku

Červená svítí ve dvou stavech, a když se podíváme na tabulku vlevo, shoduje se s výstupem A. Kombinační obvod je zapojení funkce ČERVENÁ = A.

Schéma hotového sekvenčního obvodu je na následujícím obrázku:

Tak. A máme synchronní sekvenční obvod hotový. Podle návrhu konečného automatu.

Můžeme to ještě vylepšit?

Následující úprava je už jen má vlastní, nevychází z návrhu konečného automatu v grafu. Můžeme přidat tlačítko pro chodce. Bude to fungovat takto: na semaforu bude stále svítit zelená, teprve když chodec zmáčkne tlačítko, začne semaforový cyklus – žlutá, červená, červená+žlutá, zelená. Tlačítko jsem zapojil s použitím trochy logického myšlení. Obvod 74175 má vývod /WE (Write Enable). Čára nad ním znamená, že se aktivuje logickou nulou. Ve stavebnici Saimon je vyveden na zdířku 80 a nazván SMAZAT. Pokud bude přiveden na log.0, tak obvod nebude měnit stavy. Stačí ho tedy přes tlačítko zapojit někam, kde je pouze při rozsvícené zelené logická 0, v ostatních případech logická 1. Stiskem tlačítka se SMAZAT odblokuje, začne cyklus a po znovu rozsvícení zelené se opět zablokuje.

Semafor s tlačítkem pro chodce je na následujícím schématu.

Závěrem

Synchronní sekvenční obvod je pro nás obvodovým zapojením konečného automatu. Jde o to navrhnout stavy, které se budou v obvodu měnit, udělat si graf, jak jdou za sebou, to sepsat do tabulky, navrhnout kombinační obvody pro změny stavů a pro výstupy (v tomhle případě ledky, myšleno výstupy sekvenčního obvodu, nikoliv výstupy paměťového členu) a vše zapojit. Chce to i hodně logického myšlení. V dalším článku ukážu návrh složitějšího obvodu, kdy už nám nestačí kombinační obvody odhadnout pohledem na tabulky. Budeme muset použít Karnaughovy mapy, z kterých se naučíme kombinační funkce jednoznačně vyčíst.

Zde je odkaz na video zapojeného obvodu

Poznámka:

Po zapojení jsem zjistil, že obvod NE555 s hodnotou kondenzátoru 22 mikrofaradů bliká moc rychle. Aby semafor byl hezky sledovatelný, zvolil jsem hodnotu kondenzátoru 100 mikrofaradů.

Těším se na vás v dalším článku.


Edit 14.8. – opravena chyba v textu a nahrazen chybný obr.7 (tabulka přechodů)