Contact us on +420 720 756 100 or xlukaskrejcik@gmail.com.

Sekvenční obvod semafor

Úvodem

V tomhle článku bych rád přiblížil všem, kteří mají zájem, jaký je hlavní účel elektronické stavebnice Saimon. A to je návrh konečných automatů a jejich obvodové zapojení. Půjde zde o popis, který jsem používal na dětských kroužcích a slouží k pochopení funkce a k zjištění - „jak to zapojit, aby to dělalo to, co chceme“. Než se do toho pustíte, můžete se rovnou podívat, co vlastně jdeme tvořit. Zde je odkaz na video Senafor na Saimon 1

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 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 ukáži, bude dělat mnohem více. Budou v něm tři ledky – červená, zlutá (správně by měla být oranžová) a zelená. Budu ho nazývat semafor. Nebude jen blikat, bude svítit jako semafor pro automobily na přechodu pro chodce. Zde mám připravený popis a obrázek, jak vlastně semafor funguje. Celý návrh rozložím do několika kroků.

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

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. Počet kombinací „jak to svítí“ je celkem čtyři. Tyto kombinace budu nazývat stavy obvodu. Očíslovaní těchto stavů jsem k obrázku napsal ve dvojkové soustavě: Stav 0=00bin, stav 1=01bin, stav 2=10bin, stav 3=11bin.

Stavy semaforu

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 (bližší vysvětlení je v třetím dílu návodu na Saimon 1). 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.

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

Máme tedy teoretický popis, co chceme, aby to dělalo. Poznámka - zatím budeme vytvářet semafor, který své stavy mění pořád dokolečka, 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ě.

Graf přechodů

Šipky ukazují, v jakém pořadí obvod mění stavy. Jedná se o popis konečného automatu.

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

Pro náš článek použijeme tohle vysvětlení: 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).

SSO na Saimonu

Začnu paměťovým blokem. Na stavebnici Saimon je to integrovaný obvod IO-3, typ 74175. Jedná o klopný obvod typu D. Má čtyři vstupy A,B,C,D a čtyři výstupy A,B,C,D a čtyři komplementární výstupy A,B,C,D. Jak klopný obvod použít? Na vstupy přivedeme nuly nebo jedničky. Výstupy zatím nic nedělají. Aby si obvod vstupy „zapamatoval“, je potřeba provést změnu z logické 0 na logickou 1 na zdířce ZAPSAT (číslo 87). Obvod si zapamatuje vstupy - stejná kombinace nul a jedniček se objeví na odpovídajících 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á ještě čtyři komplementární výstupy, ty mají nad písmenkem čáru. K čemu jsou – uvedu na příkladu. Pokud bude na výstupu A log1, tak na výstupu A s čarou bude log0. A obráceně. Komplementární výstup znamená, že má opačnou hodnotu oproti výstupu A. Je tam zabudovaná funkce NOT, která jak víme, mění log0 na log1 a obráceně, což se nám bude pro zapojení SSO hodit – ušetří nám to logické funkce v kombinačním obvodu pro změnu stavů SSO.

Další blok je kombinační obvod pro změnu stavů. Princip je takový: Po zapnutí obvodu by měly být výstupy IO-3 nastaveny všechny na log0. Pro semafor potřebujeme jen dva vstupy/výstupy (máme 4 stavy, což je binárně dvojciferné číslo). Zvolím A a B. Teď je třeba sestavit takový obvod, který z dvou nul (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ého obvodu.

Další důležitý obvod je hodinový obvod. Na stavebnici Saimon je to IO-1, což je časovač NE555.

V návodech naleznete dvě zaponení: Astabilní a monostabilní. Astabilní znamená, že obvod na svém výstupu stále mění log0 na log1 a zase zpět. Tempo, v jakém se toto děje, můžeme měnit potenciometrem. Monostabilní zapojení znamená (pro naše účely), že obvod na chvilku změní log0 na log1 (například po stisku spínače), chvilku počká (zvolíme kondenzátorem jak bude dlouhá), a pak opět nastaví stabilně log0.

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í.

555 na Saimonu

Astabilní zapojení obvodu na stavebnici Saimon. 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. Nazývá se tabulka přechodů.

Tabulka přechodů

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 navrhnout. Ukážeme si jednoduchý způsob, jak to udělat.

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

Pro každý vstup paměťového obvodu je potřeba vytvořit jeden obvod logické funkce.

Logická funkce může mít více vstupů (v našem případě na tyto vstupy přivedeme výstupy A a B obvodu 74175). Výstup má vždy jen jeden. Takže v našem případě potřebujeme dvě logické funkce pro dva vstupy A a B obvodu 74175.

A a B jsou zde vstupy navrhované logické funkce (zároveň výstupy klopného obvodu 74175). Logická funkce prvního obvodu pro (vstup A 74175) kombinuje výstupy A a B obvodu 74175 (vstupy funkce). Výsledek je správný bit podle tabulky pro první obvod. Stejně tak bude fungovat obvod logické funkce pro druhý obvod. Pro přehlednost jsem nakreslil obě tabulky. Říkáme jim pravdivostní tabulky logické funkce.

Tabulka přechodů2

Jak z tabulky vyčíst zapojení obvodu? V tomhle případě můžeme kombinační obvod odhadnout. Pravdivostní tabulky se podobají funkcím, které známe.

Kombinační obvod pro vstup A

Všimněte si, že v první tabulce jsou sloupce výstup B a vstup A stejné. Obvod bude velmi jednoduchý. Vstup A lze rovnou propojit drátkem s výstupem B.

Logická funkce pro vstup A je tedy definována předpisem: A = výstup B. Kombinační obvod pro vstup A se tak skládá pouze z drátku.

Kombinační obvod pro vstup B

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. Logická funkce pro vstup B je tedy definována předpisem:B = NOT výstup 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 s čarou” 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.

Semafor 1

Krok 5 – navrhnout kombinační obvod pro ledky

Poslední, co zbývá, je navrhnout kombinační obvod, přes který připojíme ledky semaforu. Logické funkce musí být tři, výstup každé z nich bude ovládat jednu ledku. 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í.

Tabulka přechodů2

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.

Logická funkce pro zelenou ledku je definována předpisem: ZELENÁ = (NOT A) AND (NOT B).

Negace máme opět 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á svítí ve stavech A=0 a B=1, nebo A=1 a B=0. To je logická funkce XOR – vylučovací OR. Logická funkce pro žlutou ledku je definována předpisem: ŽLUTÁ = výstup A XOR výstup 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 (vysvětlení je možné najít v návodu Saimon 1, díl 2).

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. Logická funkce pro červenou ledku je definována předpisem ČERVENÁ = výstup A.

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

Senafor s ledkami

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

Následující úprava je už jen má vlastní logická úvaha. Nevychází z návrhu našeho konečného automatu. Přidal jsem tlačítko pro chodce. Funguje takto – na semaforu bude stále zelená. Když chodec zmáčkne tlačítko, začne semaforový cyklus – žlutá, červená, červená+žlutá, zelená. Tlačítko jsem zapojil na zdířku SMAZAT obvodu 74175. Čára nad nápisem SMAZAT znamená, že se aktivuje logickou nulou. Pokud bude přiveden na log0, tak obvod nebude měnit stavy. Stačí ho tedy přes tlačítko zapojit někam, kde je pouze při rozsvícené zelené nastavena log0, v ostatních případech log1. 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éma.

Senafor s ledkami

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í. Pro složitější SSO vznikly přídavné moduly stavebnice.

Saimon 2 – Logické funkce: Obsahuje logické funkce OR a AND se dvěma, třemi a čtyřmi vstupy pro dosažení většího počtu stavů, než jen 4. S druhou číslicovkou pak lze na stavebnici vytvořit například hry videostop a časovaná bomba.

Saimon 3 – Paralelně a sériově: Obsahuje paralelní paměť 4x16 bitů, kterou lze nahradit kombinační obvod pro změnu stavů SSO. Kombinační obvod pak bude tvořen pouze pamětí, a ušetříme spoustu obvodů logických funkcí. Pro změnu čísla stavů lze použít čítač nebo posuvný registr.

Pro kombinační obvody s větším počtem vstupů je již velmi obtížné odhadnout logickou funkci podle pravdivostní tabulky. Návod na Saimon 2 se věnuje Karnaughovým mapám, pomocí kterých logickou funkci minimalizujeme a určíme.

Na modulu Saimon 3 v podstatě naprogramujeme tabulku přechodů do paralelní paměti a kombinační obvod je hotov.

Pomocí modulu Saimon 4 lze semafor přímo naprogramovat ve vývojovém prostředí a spojit si tak dohromady „drátkování“ a programování.

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

Video - Senafor na Saimon 1