CESR Release fel.mzf.cz
Transkript
CESR Release fel.mzf.cz
CESR Release fel.mzf.cz January 06, 2016 CONTENTS 1 Obsah 1.1 O tomto materiálu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Seznam otázek ke zkoušce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Otázky 2.1 Číslicové signály a součástky . . . . . . . . . . 2.2 Technologie CMOS, BiCMOS . . . . . . . . . . 2.3 Dynamická logika . . . . . . . . . . . . . . . . 2.4 Členy s otevřeným kolektorem a třístavové členy 2.5 Kombinační obvody . . . . . . . . . . . . . . . 2.6 Návrh kombinačních obvodů . . . . . . . . . . . 2.7 Realizace kombinačního obvodu pamětí . . . . . 2.8 Základní funkční bloky . . . . . . . . . . . . . . 2.9 Přechodné děje v kombinačních obvodech . . . . 2.10 Klopné obvody . . . . . . . . . . . . . . . . . . 2.11 Registry . . . . . . . . . . . . . . . . . . . . . . 2.12 Čítače . . . . . . . . . . . . . . . . . . . . . . . 2.13 Principy časovacích obvodů . . . . . . . . . . . 2.14 Sekvenční obvody . . . . . . . . . . . . . . . . 2.15 Metastabilita . . . . . . . . . . . . . . . . . . . 2.16 Pipeline . . . . . . . . . . . . . . . . . . . . . . 2.17 Paměti . . . . . . . . . . . . . . . . . . . . . . 2.18 Programovatelné logické obvody . . . . . . . . 2.19 Rušení v elektronických systémech . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 3 7 . 7 . 12 . 16 . 16 . 21 . 24 . 25 . 25 . 35 . 41 . 50 . 57 . 64 . 73 . 82 . 87 . 89 . 108 . 108 3 Další poznámky 115 3.1 CMOS logické členy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 4 Search 117 i ii CESR, Release Note: Pokud máte nějaké příklady, či konkrétní otázky/odpovědi ze zkoušky, bylo by super, když by se tu mohly objevit v dalších sekcích. Kdybyste něco měli, tak můžete v jakémkoliv formátu posílat na [email protected]. Doporučuji si přečíst stránku O tomto materiálu, a to nejlépe ještě před tím, než se začnete na zkoušku učit. CONTENTS 1 CESR, Release 2 CONTENTS CHAPTER ONE OBSAH 1.1 O tomto materiálu Tento materiál se snaží přistoupit ke zkoušce z předmětu CESR odlišným způsobem, než většina běžně dostupných materiálů. Nejde o vysoce koncentrovaný materiál typu “zapamatuj a napiš do testu”. Materiál se zakládá na seznamu otázek ke zkoušce. To není definitivní seznam otázek, které by se u zkoušky objevili, pouze doporučení, co se učit. Z tohoto materiálu by mělo být jasné, co je důležité, a co není. Poznámky pod čarou (footnotes) jsou jen pro doplnění. Čísla většinou mají nižší důležitost než text. V podstatě jde o nadpisy: • 1.1 jsou velmi důležité • 1.1.1 jsou sice méně důležité, ale pořád dost důležité • 1.1.1.1 jsou více méně doplnění pro úplnost Čím hlouběji se propracujete, tím lépe :) Jelikož víc lidí víc ví, můžete svou troškou přispět na [email protected]. Materiál byl vytvořen pomocí nástroje Sphinx. Původně je to nástroj pro tvorbu dokumentace, ale velmi dobře se dá využít i na poznámky tohoto typu. To je důvod, proč je část v angličtině, nechtělo se mi přepisovat celý template ;). 1.2 Download PDF verze těchto poznámek je dostupná, ovšem jde o verzi, jako je v současné podobě na webu. Až bude kompletní webová verze, bude automaticky i PDF verze. Toto platí i pro epub verzi. HTML/zip verze je tato webová verze zabalená v zipu. Po rozbalení spust’te index.html a můžete tuto stránku prohlížet bez připojení k internetu. Jde o to, že webová verze vypadá asi nejlíp ze všech. Verze PDF Epub HTML/zip Datum vytvoření 6/1/2016 6/1/2016 6/1/2016 Odkaz CESR.pdf CESR.epub CESR.zip 1.3 Seznam otázek ke zkoušce Z roku 2014/15. Jde pouze o doporučený seznam. 1. Číslicové signály a součástky. Logické členy, obecné vlastnosti. Charakteristiky, napět’ové úrovně. 3 CESR, Release 2. Technologie CMOS, BiCMOS. Příkon, statické a dynamické parametry, vliv zátěže (rozvětvení), nevyužité vstupy, ochrana vstupů, hystereze. Vlivy parazitních kapacit. Slučitelnost různých technologií. 3. [0 %] Dynamická logika. Princip, zapojení, činnost, vlastnosti. 4. Členy s otevřeným kolektorem a třístavové členy. Sběrnice, budiče sběrnice, terminátory pasivní a aktivní. Vliv délky spojů. Řízení přístupu na sběrnici. 5. Kombinační obvody. Pravidla pro práci s logickými výrazy. Pravdivostní tabulka. Mintermy a implikanty. Neurčené stavy. Minimalizace logických funkcí, skupinová minimalizace, tabulka implikantů. Mapy a jejich použití. 6. [50 %] Návrh kombinačních obvodů. Možnosti realizace - obvody malé integrace a multiplexory - rozklad funkce. 7. [10 %] Realizace kombinačního obvodu pamětí - konstrukce tabulky obsahu paměti z výrazu. 8. Základní funkční bloky. Často používané kombinační obvody - dekodéry, multiplexory, komparátory, prioritní kodér a prioritní řetězec, sčítačky a možnosti zrychlení činnosti. U všech: popis log. výrazem, přechodné děje. 9. Přechodné děje v kombinačních obvodech. Zpoždění a hazardy. Vznik hazardu a jeho prognóza - z výrazu, z mapy a z obvodu. Vliv úprav výrazů. Projevy hazardů v číslicových systémech, metody odstranění. Změny dvou a více proměnných. Dynamický hazard. Grayův kód a jeho význam. Souběhy signálů - vznik, význam. 10. Klopné obvody, chování (RS, D, T, JK), reakce na hodinový impuls (řízení hranou, úrovní, Master-Slave), podmínky bezchybné funkce, metastabilita. Nastavení počátečního stavu - prostřednictvím vstupů R,S nebo multiplexoru. Blokování činnosti KO. Transformace KO - D na T, T/D, JK. 11. Registry, datové a posuvné, podmínky správného časování hod. impulsů. Nulování a přednastavení u posuvných registrů. Posuvy o větší počet míst na obě strany. Lineární čítače s max. délkou cyklu. 12. Čítače asynchronní a synchronní, binární a modulo, reverzivní. Časové diagramy asynch. a synch. čítače. Čítače s předvolbou (přednastavením). Návrh čítačů v kódu bin., modulo, Gray. Blokování v koncovém stavu. Provedení reverzivních čítačů. Čítače s programovatelným modulem. 13. Principy časovacích obvodů. Zkrácení, prodloužení a stabilizace délky impulsu. Využití zpoždění hradel. Monostabilní KO, MKO-NR a MKO-R. Synchronní časovače, využití čítačů. Detektory hrany. Impulsněšířkový modulátor (PWM). 14. Sekvenční obvody. Přechodová a výstupní funkce, Mealyho a Mooreho automat. Synchronní a asynchronní sekvenční obvody. Popis stavovým grafem, stavovou tabulkou, stavovými rovnicemi. Neurčené stavy a jejich projevy. Nastavení počátečního stavu - různé možnosti. Analýza sekv. obvodu (od schématu k tabulce či grafu). Návrh synch. sekv. obvodů - kódování stavů, výběr KO, návrh budících funkcí. 15. [95 %] Dynamické vlastnosti sekvenčních obvodů. Časování a max. kmitočet hodinových impulsů, časování vstupních a výstupních signálů, předstih a přesah pro celý systém. Možnost vzniku falešných výstupních impulsů. Vliv zpoždění v rozvodu CLK a nestability hran CLK (jitter). 16. Metastabilita a její projevy v sekvenčních obvodech. Vzorkovače, jejich činnost a spolehlivost, vliv souběhů signálů. Předávání dat mezi nesynchronními systémy (sféry synchronizace). Korespondenční provoz (“handshake”) - princip a obvodové řešení (pomalý zdroj dat, rychlý příjemce). 17. Pipeline, vlastnosti, zrychlení systému, vedení signálů přes registry. 18. Paměti. Paralelní a sériový přístup. Pamět’ové obvody RAM statické, seskupení a ovládání. Obvody dynamické (DRAM, SDRAM), ovládání, obnovování obsahu, typické průběhy cyklů, práce po stránkách, latence. Paměti ROM, (EPROM), EEPROM, FLASH, programování obsahu a mazání u EEPROM a FLASH. Paměti FLASH „NOR“ a „NAND“. Speciální typy pamětí - FIFO, dvojbránová. Arbitrážní obvody u DPM. 19. [0 %] Programovatelné logické obvody. Principy realizace programovatelných spojů. SPLD- matice AND, makrobuňky. Cesty signálů při realizaci kombinačních a sekvenčních systémů. Obvody CPLD - propojovací matice, I/O obvody. Obvody FPGA. Typické vlastnosti. 4 Chapter 1. Obsah CESR, Release 20. Rušení v elektronických systémech. Vnější rušení, cesty pro vstup rušivých signálů, jejich omezení. Optrony, diferenční přenos. 21. Vnitřní rušení - rozvod napájení, přeslechy, sběrnice, dlouhé spoje. 1.3. Seznam otázek ke zkoušce 5 CESR, Release 6 Chapter 1. Obsah CHAPTER TWO OTÁZKY Otázky jsou zde trochu jinak, než v sekci Seznam otázek ke zkoušce, protože jsou drobet jinak poskládané. 2.1 Číslicové signály a součástky Číslicové signály a součástky. Logické členy, obecné vlastnosti. Charakteristiky, napět’ové úrovně. 2.1.1 Úroveň integrace součástek Pro představu, co znamenají různé úrovně integrace: Název Malá integrace Střední integrace Vysoká integrace Velmi vysoká integrace Ultra vysoká integrace Označení (en) SSI MSI LSI VLSI ULSI Počet tranzistorů 1 - 10 10 - 500 500 - 20k 20k - 1M 1M a více Počet log. členů 1 - 12 13 - 99 100 - 9,999 10k - 99,999 100k a více Zdroj 2.1.2 Rozhodovací úrovně Technologie ALS 2 HC 3 HCT 4 CMOS 5 Vcc (V) 4.5 5.5 2-6 4.5 5.5 5 - 15 Vr 1 1.4 0.5*Vcc 1.3 0.5*Vcc Pozn.: nezapojený vstup TTL se chová jako kdyby tam nebyl. Více v části o BiCMOS Pozn.: všechny vstupy by se měly vždy “ošetřit”, aby nikde nevznikl nežádoucí stav 1 Rozhodovací úroveň Low-power Schottky (TTL) 3 High-speed CMOS Wiki: HC logic 4 CMOS technologie se vstupní úrovní TTL kvůli kompatibilitě CMOS s TTL Wiki: CMOS-TTL 5 Complementary metal–oxide–semiconductor 2 Advanced 7 CESR, Release 2.1.3 Spojení více log. členů Při spojování více log. členů je důležité dodržet správné vstupní a výstupní napětí. Jak je vidět na obrázku, výstupní napětí předcházející členu musí být 0 - U OLmax pro log. 0 a U OHmin - Ucc pro log. 1. Vždy musí platit: • U OHmin > U IHmin • U OLmax < U ILmax Pozn.: Značení je zde: <I/O><H/L><min/max>, I - input, O - output, H - high (log. 1), L - low (log. 0) 2.1.4 Převodní charakteristika Jednoduše: závislost U nějaký opakovač). 8 out na U in . Následující obrázek ukazuje převodní charakteristiku neinvertujícího členu (čili Chapter 2. Otázky CESR, Release Pro člen s hysterezí bude vypadat převodní charakteristika následovně: A na to se váže odstavec o rozkmitání. Rozkmitání Těsně kolem U ref se chová člen jako zesilovač. Pomalý přeběh napětí může člen rozkmitat (cca 10 ns přeběh). Pokud nelze zaručit dost rychlé signály, tak je potřeba přidat/použít člen s hysterezí. Hystereze je hezky vidět na následujícím obrázku. Vlevo, kdy se signál motá kolem U ref , bude výstup skákat mezi 1/0, zatímco s hysterezí se člen překlopí až za U ref . Vzdálenost mezi U ref a 1 nebo 0 bude vždy 1/2 · ∆U . 2.1. Číslicové signály a součástky 9 CESR, Release 2.1.5 Dynamické vlastnosti hradel t pHL a t pLH udávají zpoždění signálu při přepnutí z jednoho logického stavu do druhého. Čili t pHL udává: pokud se změní vstup z H -> L, jak dlouho potrvá, než se ustálí hodnota na výstupu. Měří se vždy v hodnotě 50% Vcc. Pro představu všech časů, které jsou pro dynamické vlastnosti důležité, viz následující obrázek: Max. frekvence fmax = 1 tr +tf , kde t r je doba náběhu (rise) a t f doba “spadnutí” (fall). Určuje se mezi 10% a 90% úrovně signálu. 2.1.6 Zatížení součástek CMOS CMOS je v současné době nejpoužívanější technologie, tady se zatížení projevuje jako kapacitní zátěž. Ta ovlivňuje dynamické vlastnosti, hlavně časy t pHL a t pLH , a to samozřejmě negativně. To znamená, že na výstup jednoho členu nemůžeme napojit libovolné množství dalších, protože každý k celkové kapacitě přidá svou trošku + kapacita vodičů, a to ve výsledku značně ovlivní doby přeběhů. To se musí vejít do nějakého požadavku na rychlost systému. 10 Chapter 2. Otázky CESR, Release Pozn.: výstupní rozvětvení je počet vstupů číslicových součástek na výstup jedné dané součástky. Pozn.: nestandardní zátěž jsou LEDky, rezistory, atd. Standardní jsou další logické členy. 2.1.7 Bipolární technologie Zatížení Nelze zanedbat vstupní proud součástek, což vytváří úbytek napětí a to vede ke zhoršení napět’ových úrovní. Na vinně jsou výstupní obvody bipolárních členů. Na levém obrázku: na výstupu členu je 1 (U OH ) a nějaká zátěž (at’ už standardní nebo ne), odebírá proud I OH . Jak je vidět, čím více proudu zátěž odebírá, tím klesá výstupní napětí tohoto členu. A samozřejmě, pokud klesne napětí pod U OHmin , není splněné pravidlo pro napět’ové hladiny. Pozn.: Pro nestandardní zátěž je tyto charakteristiky nutné znát. Jakmile se na výstup navěsí nestandardní zátěž, už by se signál neměl nikam dále zavádět. O technologii Transistor - transistor logic (TTL) je takto nazvaná, jelikož tranzistory obstarávají jak logickou funkci, tak i funkci zesílení výstupu. Pozn.: existují pak i Diode - transistor logic a Resistor - transistor logic, obojí z let 195x a 196x. 2.1. Číslicové signály a součástky 11 CESR, Release Odběrová charakteristika Tenhle graf ukazuje závislost odebíraného proudu na vstupním napětí log. členu. Jak je vidět, kolem U ref se zvedá odběr, protože jsou na chvilku otevřené “oba tranzistory” (invertor, jinak jich tam bude víc). Samozřejmě, že čím déle bude trvat přechod mezi stavy 1/0, tím větší bude tento odběr. Spotřeba se snižuje v případě technologií TTL-LS (Low-power Schottky) a TTL-ALS (Advanced Low-power Schottky). 2.2 Technologie CMOS, BiCMOS Technologie CMOS, BiCMOS. Příkon, statické a dynamické parametry, vliv zátěže (rozvětvení), nevyužité vstupy, ochrana vstupů, hystereze. Vlivy parazitních kapacit. Slučitelnost různých technologií. 2.2.1 Vnitřní zapojení Negace 12 Chapter 2. Otázky CESR, Release Funguje to tak, že 1 na vstupu otevře tranzistor N a celé vstupní napětí jde do země. Tranzistor P je zavřený, takže se Ucc nemá jak dostat na výstup a Y bude 0. A opačně: pokud je A = 0, pak se otevře horní tr. P a napětí Ucc se objeví na výstupu. Současně tranzistor N bude zavřený, takže Ucc nemůže jít dolů na zem, může se objevit jedině na Y. Tento a další logické obvody poskládané z jednotlivých součástek najdete v dokumentu CMOS logické členy. Některé z těchto zapojení se mohou objevit u zkoušky, proto doporučuji projít i tohle. 2.2.2 Vstupní obvody Na vstupu CMOS součástek bude vždy něco jako je na obrázku: Protože mají MOS tranzistory vysoký vstupní odpor (109 Ω), může i malý náboj prorazit oxid pod hradlem. Funguje to zhruba takto: • Pokud přijde na vstup záporné napětí (co to tam má co dělat, že?), tak jde přes diodu na zem. Jenže dioda má svůj vlastní úbytek, takže z např. -10 V se -9.3 V protlačí na zem a zůstane -0.7 V. • Pokud přijde kladné napětí větší než Ucc, bude procházet přes horní diodu. Takže když přijde 10 V, tak 0.7 V zůstane na diodě a promítne se dál, a zbytek se protlačí do zdroje. Tzn. na výstupu zůstane 5.7 V. • A pokud je signál v rozmezí 0 - Ucc, tak 0 V žádnou diodu neotevře, na výstupu je 0, všechno OK. Pokud přijde 5 V jako log. 1, tak rozdíl na diodě bude 0 V, neotevře se, a těch 5 V zase v klidu projde dál. 2.2.3 Parazitní kapacita Stejně jako u TTL, během přechodu z jednoho log. stavu do druhého, jsou na krátký okamžik propustné obě větve tranzistorů. To vytvoří vyšší odběr proudu ze zdroje. 2.2. Technologie CMOS, BiCMOS 13 CESR, Release Výpočet Symbol Cp ∆U f Qp Icc ∆t Význam parazitní kapacita napět’ový skok (budeme předpokládat Ucc) frekvence přepínání 1/0 náboj, který je potřeba k nabití parazitní kapacity proud, který parazitní kapacitu nabíjí čas, po který se parazitní kapacita nabíjí (doba přechodu mezi 1 a 0) Qp = Cp · ∆U = Icc · ∆t Z toho chceme Icc : Icc = Cp · ΔU Δt Víme, že: f= 1 Δt takže to přepíšeme: Icc = Cp · ∆U · f A už vidíme, že čím větší parazitní kapacita, čím větší napět’ový skok a čím větší pracovní frekvence, tím větší odběr proudu ze zdroje. Pro ztracený výkon jednoduše: 2 ·f Ucc · Icc = Cp · Ucc Jelikož je Ucc konstantní, dá se říct, že příkon CMOS členů roste lineárně s pracovní frekvencí. Z toho vztahu taky vidíme, proč se stále snižuje napájecí napětí všech zařízení. A pro porovnání TTL a CMOS: 2.2.4 Rozdíly oproti TTL • Rozdíl v chování nevyužitých vstupů 14 Chapter 2. Otázky CESR, Release • CMOS nepotřebuje proud pro řízení tranzistorů - nižší spotřeba • CMOS jsou náchylnější na zničení statickým nábojem 2.2.5 Kompatibilita Pozn.: V poznámce u napět’ových úrovní je zmínka o kompatibilitě CMOS s TTL Todo víc info 2.2.6 BiCMOS Jde o kombinaci bipolární technologie a CMOS. Z obou to nejlepší. Bipolární tranzistory pracují s vyššími proudy, a proto jsou z nich udělané výstupní obvody. Logicky unipolární technologie je pak použitá na vstupní obvody a střední bloky, tedy na realizaci logické funkce. BiCMOS se hodí na sběrnice, kde se nachází vysoká kapacitní zátěž. Nevyužité vstupy TTL Jako kdyby tam ten vstup nebyl. Neteče jím žádný proud. To ovšem znamená, že jsou obvody náchylné k rušení. Jak to řešit: • Nechat vstup volně viset (ale rušení...) • Spojit s vedlejším vstupem (v 0 OK, v 1 se zdvojnásobí vstupní proud, ale ten je i tak malý, takže taky OK) • Pro OR/NOR lze vstup připojit na zem • Pro AND/NAND lze vstup připojit přes odpor na Ucc CMOS a BiCMOS Zde se nevyužitý vstup nesmí nechat nezapojený. Kvůli vysoké impedanci by stačil malý proud a na nevyužitém vstupu by se objevilo poměrně vysoké napětí. Pokud by toto napětí mělo úroveň někde kolem referenční úrovně, zvýšilo by to podstatně i napájecí proud. Řešení v tomto případě je stejné jako u TTL, akorát odpadá nutnost přidat odpor, protože vstupní proud CMOS je stejně nula. 2.2. Technologie CMOS, BiCMOS 15 CESR, Release 2.3 Dynamická logika Dynamická logika. Princip, zapojení, činnost, vlastnosti. 2.4 Členy s otevřeným kolektorem a třístavové členy Členy s otevřeným kolektorem a třístavové členy. Sběrnice, budiče sběrnice, terminátory pasivní a aktivní. Vliv délky spojů. Řízení přístupu na sběrnici. 2.4.1 Otevřený kolektor O co jde Jde o členy, které namísto výstupu o určitém napětí (nebo proudu), jsou přivedeny na bázi NPN tranzistoru (nebo na gate MOSFETu, pak se to nazývá open drain). Emitor tranzistoru je připojen na zem. Ještě se k tomu přidává pull-up resistor (ve skriptech vnější rezistor 6 ) Jak to funguje Když je tranzistor sepnutý, napětí jde přes pull-up resistor a přes tranzistor do země. Tzn. vstup 1 vytvoří výstup 0. A vstup 0 tranzistor nesepne, tzn. celé napětí Ucc bude na výstupu jako log. 1. Z toho vyplývá, že tohle zapojení funguje jako obyčejná negace. 6 16 Fun fact: “pull up resistor” v googlu -> 1.79e6 výsledků, “vnější rezistor” -> 180e3 výsledků Chapter 2. Otázky CESR, Release A když jich spojíme víc na jednu sběrnici, tak není problém. Pokud budou tranzistory všech vstupních členů nesepnuté, bude na všech výstupech tedy log. 1, tak stále bude na sběrnici jenom jedno Ucc, nic se nesčítá. Když budou na výstupech log. 0 (tranzistory sepnuté), tak stále jen jedno Ucc jde do jedné země. To znamená, že jich můžeme spojit jakékoliv množství. Když se signálů dostane na sběrnici více, jediné, co se stane, je, že se signály zkreslí, ale nic se nezničí. K čemu se to hodí • Ty tranzistory na výstupu někdy vydrží větší napětí/proud než samotný IC, takže kde je napětí nad 5V, lze to využít na spínání. • Interrupty na sběrnici (jedna sběrnice, potřebujeme přerušit procesor, tak je jedno odkud to přijde, prostě tam jeden člen nahodí signál a ostatním je to jedno) • Podobně jako interrupty, taky resety, resp. všude, kde nastane nějaká událost a je potřeba nějakému procesoru říct, že k ní došlo 2.4.2 Třístavové členy Takže kromě stavů 1/0 tu máme ještě stav vysoké impedance (značení Z). 2.4. Členy s otevřeným kolektorem a třístavové členy 17 CESR, Release Pozn.: CS - chip select Pokud je CS = 1, tak W = 0 a Y = 1. 0 zavře tr. N, 1 zavře tr. P. V tu chvíli bude na výstupu stav Z. No a pokud bude CS = 0, tak výstup záleží na X, tzn. může být bud’ 0 nebo 1. Celkem tedy 3 stavy. Kromě toho tu přibudou další dynamické parametry. Pokud je totiž CS = 0, tak cesta signálu je jasná, stačí t t pLH . Ale blokování/odblokování chvilku trvá, takže: pHL a • Zablokování: – L -> Z - t pLZ – H -> Z - t pHZ • Odblokování: – Z -> L - t pZL – Z -> H - t pZH Pozn.: všechny tyhle doby budou obvykle v jednotkách ns K čemu je to dobré Budiče sběrnice Pozn.: anglicky bus driver Třístavové členy používají pro připojení různých obvodů na sběrnice. V jednom okamžiku může být připojen pouze jeden takový člen. Ostatní musí být zablokované. Pokud by se na sběrnici odblokovaly dva a oba v opačných stavech, tekl by tam velký proud (100+ mA) a došlo by pravděpodobně na kouřové signály. td;dr - můžeme si vybírat zdroj signálu 2.4.3 Sběrnice Dlouhé vedení Za dlouhé vedení se považuje i 10 cm. Všechno je tam rušeno, některé signály pomalu přechází kolem U r a k tomu všemu se objeví nějaký ten překmit a proto mají ty členy, kam signály putují, hysterezní charku. Abychom zamezili odrazům na vedení (to si určitě všichni pamatujeme, co je), bylo by potřeba vedení zakončit odporem, stejně velkým jako je charakteristická impedance vedení (Z 0 ). Na DPS je to blízko 100 Ω. Někdy se používají jenom odpory, někdy i kondíky, všechno se nazývá terminátor. 18 Chapter 2. Otázky CESR, Release Terminátory jsou na obou stranách, protože není jasné, kde sběrnice začíná a kde končí. Obousměrné budiče Pozn.: DIR - direction Klasicky CS připojuje/odpojuje člen na sběrnici a DIR řídí ještě směr signálu. Hodně se to používá u pamětí (čtení/zápis) a taky u programovatelných logických obv. PLD a FPGA. 2.4.4 Terminátory Pasivní Pasivní terminátor - pasivní součástky. 2.4. Členy s otevřeným kolektorem a třístavové členy 19 CESR, Release • Ve stavu log. 1 je výstupní proud budičů velký, v log. 0 nulový • Velká spotřeba proudu ze zdroje Ucc • Menší spotřeba než u předchozího terminátoru, ale pořád dost vysoká • R1 ||R2 = R0 = Z0 , pro Z0 = 100 Ω je vhodné R1 = 180 Ω, R2 = 220 Ω, takže paralelně 99Ω. • Poměr R1 /R2 se volí tak, aby po odpojení všech budičů bylo napětí na sběrnici v pásmu U H . Pro hodnoty výše a Ucc = 5 V to je 2.75 V. • R1 a R2 jsou velké, kvůli nižšímu odběru proudu z Ucc • Impedanční zakončení je starost R0 • R1 a R2 udržují požadované napětí na sběrnici, pokud není žádný budič připojen • C blokuje střídavé signály • Časová konstanta R0 C se volí 4x zpoždění signálů na vedení 20 Chapter 2. Otázky CESR, Release Aktivní Funguje to jako bistabilní klopný obvod. Pokud je A = 1, pak je B = 0 a tudíž znova A = 1. A opačně. Pokud se uvolní cesta přes sběrnici někam dál, tak proud teče tudy, takže v bodě A bude 0. Tím se celý BKO překlopí a už tak zůstane. Tzn. pokud je stav stále stejný, tenhle aktivní terminátor neodebírá skoro žádný proud a je tak velmi úsporný. Pak ovšem na sběrnici zůstává poslední stav před odpojením všech budičů. 2.5 Kombinační obvody Kombinační obvody. Pravidla pro práci s logickými výrazy. Pravdivostní tabulka. Mintermy a implikanty. Neurčené stavy. Minimalizace logických funkcí, skupinová minimalizace, tabulka implikantů. Mapy a jejich použití. Pozn.: Tahák na Booleovu algebru 2.5.1 Pár pojmů • Součtová (disjunktní) forma - logická funkce vyjádřená jako součet mintermů • Součinová (konjunktní) forma - logická funkce vyjádřená jako součin maxtermů • Mintermy - elementární funkce (součin proměnných) z úplného tvaru • Maxtermy - elementární funkce (součet proměnných) z úplného tvaru • Koncová forma - po zjednodušení z úplného tvaru • Implikant - elementární funkce z konečného tvaru • Minimální forma - ještě vyhodíme některé implikanty Příklad n 0 1 2 3 4 5 6 7 a b c y y’ 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 P y= m(0, 1, 3, 4, 6) = abc + abc + abc + abc + abc 2.5. Kombinační obvody 21 CESR, Release Takže např. abc je minterm. Celá funkce y je ve formě, která se nazývá úplná součtová (disjunktní) normální forma (ÚDNF). Q y = M (2, 5, 7) = (a + b + c) · (a + b + c) · (a + b + c) A tady (a + b + c) je maxterm. Celá funkce y je ve formě, která se nazývá úplná součinová (konjunktní) normální forma (ÚKNF). 2.5.2 Neurčené stavy Jsou stavy, které nemůžou nastat. Světlo bud’ svítí, nebo nesvítí a zároveň jeho spínač je on/off. Takže jsou jisté stavy, které nemůžou nastat. A pokud nastanou, tak je něco špatně. V pravdivostní tabulce se pak označují “-” (jako nezájem). 2.5.3 Minimalizace log. funkce Pokud zjednodušíme log. funkci tak, že už to dál nejde, tak se její forma už nenazývá úplná, ale koncová (KDNF/KKNF). Jednotlivé členy už nejsou mintermy/maxtermy, ale implikanty. Tabulka implikantů Máme úplnou formu: y = abc + abc + abc + abc A zjednodušili jsme ji na koncovou formu: y = ac + bc + ab Následuje tabulka, kde “Ano” znamená, že implikant zahrnuje/pokrývá minterm: Implikanty ac bc ab Mintermy abc abc Ano Ano Ano abc abc Ano Ano Ano Pokryté musí být všechny mintermy. Kdyby nebyly, tak jsme zjednodušovali až moc a vynechali jsme něco, co tam mělo zůstat. Když tady ale vyhodíme řádek s implikantem bc, budou všechny mintermy pořád pokryté: Implikanty ac ab Mintermy abc abc Ano Ano abc abc Ano Ano Takže výborně, zbavili jsme se dalších členů a obvod se tím zjednoduší. Tímto jsme dostali formu, které říkáme minimální disjunktní forma (MDNF). Btw, někdy může být těchto forem víc, záleží, co vypustíme a co zbude. Skupinová minimalizace To se dělá tak, že se jednotlivé funkce (samozřejmě jich tu je víc) zjednodušují zvlášt’ a pak se napíše tabulka všech implikantů, tj. ze všech funkcí. No a stane se, že některé funkce mají společné implikanty, takže lze pak využít obvod pro jeden implikant pro více funkcí. Občas kvůli tomu nesmíme zjednodušovat moc, ale to je případ od případu. 22 Chapter 2. Otázky CESR, Release 2.5.4 Karnaughova mapa Máme takovouhle pravdivostní tabulku: a 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 b 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 c 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 d 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 y 1 0 1 0 0 0 1 0 1 0 1 0 0 1 1 1 Vytvoříme mapu: Pozn.: Modrá oblast se s červenou překrývají, proto je část fialová. Super barvičky, co? Získáme rovnici: y = bd + cd + abd A jak se to vytvoří: 1. Červená oblast: (a) Pokrývá a celou oblast? Ne, jen částečně, takže a tam nebude 2.5. Kombinační obvody 23 CESR, Release (b) Pokrývá b celou oblast? Ani kouskem, ale negace b zabírá celou oblast, takže tam bude b v negaci (c) Pokrývá c celou oblast? Ne, zase jenom kouskem, takže zahodit. (d) Pokrývá d celou oblast? Zase v negaci 2. Modrá oblast: (a) a a b pokrývají modrou oblast jenom částí, takže nic (b) c ji pokrývá celou, takže bude c (c) d ji nepokrývá vůbec, takže bude d v negaci 3. Zelená oblast: (a) a, b i d pokrývají celou oblast, takže všechny budou v implikantu (b) c zase zabírá jen kousek, takže nic Pravidla tvorby • Každý bod mapy vyjadřuje jen jednu řádku v pravdivostní tabulce, kde je 1. Ne víc, ne míň. • Těmi pruhy kolem mapy musíme samozřejmě pokrýt všechny možnosti tabulky, takže se nesmí překrývat celé, vždy jen částí. To znamená, že v mapě musí být bod, ve kterém se “sejdou všechny pruhy” a bod, ve kterém nebude ani jeden. • Oblasti, které v mapě vybíráme, musí mít velikost mocniny 2. Nelze vybrat třeba 3 jedničky v řadě. • Oblasti můžeme vybírat i za hranicemi mapy, tj. že ta oblast přeteče na druhou stranu. Použití Tohle je sranda tak do 4 proměnných, pak už se značně zapotíte. Takže se to v praxi moc nehodí, protože takhle jednoduché obvody nejsou obvyklé. 2.6 Návrh kombinačních obvodů Návrh kombinačních obvodů. Možnosti realizace - obvody malé integrace a multiplexory - rozklad funkce. 2.6.1 Shannonova věta o rozkladu Vždycky rozkládáme podle nějaké proměnné. Hodí se to k tomu, že z funkce uděláme dvě, a výsledné obvody se spojí multiplexorem. y = d(b + ac) Rozložíme podle a: 1. Dosadíme: a = 0; y0 = bd 2. Dosadíme: a = 1; y1 = d(b + c) 3. Slepíme to dohromady: y = a · y0 + a · y1 = a · (bd) + a · (d(b + c)) Slepuje se to takhle: y =x·A+x·B 24 Chapter 2. Otázky CESR, Release x ... proměnná A ... co mi zbylo, když jsem dosadil 0 B ... co mi zbylo, když jsem dosadil 1 Vždycky se násobí dvojce “negace + 0” a “nenegace + 1”. Ta proměnná, podle které jsme rozkládali, bude řídit vstup multiplexoru. 2.7 Realizace kombinačního obvodu pamětí Realizace kombinačního obvodu pamětí – konstrukce tabulky obsahu paměti z výrazu. K čemu: • Převodníky kódů • Tabulka hodnot funkcí (sin, cos, ...) - možné generování periodické funkce • U PLD 2.8 Základní funkční bloky Základní funkční bloky. Často používané kombinační obvody - dekodéry, multiplexory, komparátory, prioritní kodér a prioritní řetězec, sčítačky a možnosti zrychlení činnosti. U všech: popis log. výrazem, přechodné děje. 2.8.1 Dekodér Vstup: binární kód Výstup: kód 1zN 1zN znamená, že jenom 1 z N výstupů bude aktivní. Pozice toho výstupu odpovídá kombinaci na vstupu. Takže N = 2k , kde k je počet bitů na vstupu. N je pak počet bitů na výstupu. Vstup EN znamená Enable. Jednoduše on/off. Pozn.: Zablokovaný dekodér bude mít na výstupu neaktivní stav (log. 1), zatímco třístavový člen tam bude mít stav Z (vysokoimpedanční stav). 2.7. Realizace kombinačního obvodu pamětí 25 CESR, Release x2 0 0 0 0 1 1 1 1 x1 0 0 1 1 0 0 1 1 x0 0 1 0 1 0 1 0 1 y7 1 1 1 1 1 1 1 0 y6 1 1 1 1 1 1 0 1 y5 1 1 1 1 1 0 1 1 y4 1 1 1 1 0 1 1 1 y3 1 1 1 0 1 1 1 1 y2 1 1 0 1 1 1 1 1 y1 1 0 1 1 1 1 1 1 y0 0 1 1 1 1 1 1 1 Použití Vybrání jednoho z N obvodů. Velmi často se prý vybírají 3stavové členy, všechny na jedné sběrnici. Vnitřní zapojení x1 0 0 1 1 y0 y1 y2 y3 26 x0 0 1 0 1 y3 1 1 1 0 y2 1 1 0 1 y1 1 0 1 1 y0 0 1 1 1 = x0 · x1 = x0 · x1 = x0 · x1 = x0 · x1 Chapter 2. Otázky CESR, Release Přechodné děje Pokud se mění aspoň dva vstupy skoro současně, tak se může vyskytnout falešný impulz. Může se to obecně stát na kterýchkoliv výstupech. 2.8.2 Multiplexor Vstup: binární kód (adresa) a N datových vstupů Výstup: vstup zvolený adresou Kromě multiplexoru pro jednobitové vstupy existují i multiplexory skupinové (na obrázku). Vnitřní zapojení 2.8. Základní funkční bloky 27 CESR, Release Funguje to hodně podobně jako dekodér. Navíc se akorát jednotlivé výstupy ještě násobí se vstupy, resp. se tu násobí adresa a vstup. Tím se stane, že vlastně zase bude aktivní jenom jeden výstup, takže ho můžeme s klidným svědomím sečíst s ostatními, protože ty aktivní nebudou. Přechodné děje O tom se sice ve skriptech nepíše, ale vzhledem k podobnosti s dekodérem bych řekl, že když se bude měnit adresa ve více než jednom bitu, že by mohlo nastat, že budou dva vstupy chtít proplout na výstup. Takže by se pak mohly na výsledném ORu tlouct. 2.8.3 Demultiplexor Vstup: binární kód (adresa) a 1 datový vstup Výstup: datový vstup na příslušném výstupu (zvoleném adresou) Abych dlouho nenapínal, demultiplexor je opak multiplexoru. Adresa tady vybírá výstupní kanál. Ten vybraný je aktivní a ostatní jsou v 0. 28 Chapter 2. Otázky CESR, Release Vnitřní zapojení Tady v podstatě využíváme dekodéru na vybrání vstupu. 2-to-4 decoder je vlastně to, čemu se ve skriptech říká 1zN. Je to jedno a to samé, i na wiki tomu říkají oběma způsoby. Přechodné děje Ve skriptech opět ticho. Tady to vypadá, že při změnách na adresovém vstupu by mohlo dojít k tomu, že bude na krátkou dobu aktivní víc než jeden výstup. Ono jestli je tam dekodér – u něj falešný impulz může nastat – tak pak může i tady. 2.8.4 Prioritní kodér Opak dekodéru. 2.8. Základní funkční bloky 29 CESR, Release Vstup: kód 1zN Výstup: binární kód Stejně jako má dekodér aktivní vždy jen jeden výstup, tak i kodér potřebuje mít jen jeden vstup aktivní. Jenže ono to není tak jednoduché, zajistit se to nedá. Takže i když bude aktivních vstupů více než 1, tak my potřebujeme z nich vybrat jen jeden – stejně jako kdyby na vstupu byl aktivní pouze 1. A to uděláme tak, že těm vstupům přiřadíme prioritu. x7 1 0 0 0 0 0 0 0 0 30 x6 1 0 0 0 0 0 0 0 x5 1 0 0 0 0 0 0 x4 1 0 0 0 0 0 x3 1 0 0 0 0 x2 1 0 0 0 x1 1 0 0 x0 1 0 y2 1 1 1 1 0 0 0 0 - y1 1 1 0 0 1 1 0 0 - y0 1 0 1 0 1 0 1 0 - z 1 1 1 1 1 1 1 1 0 Chapter 2. Otázky CESR, Release Vnitřní zapojení Jak to funguje: pokud je x7 = 1, tak přes negaci se deaktivuje AND vedoucí k dalšímu bloku, takže priorita je na prvním vstupu. Zároveň ta log. 1 otevře ten druhý AND (víc vlevo) a tím na horní 3s člen přivede +U H . Ten se tudíž otevře a na sběrnici propluje binární kód. Pokud x7 = 1, tak v druhém členu řetězce už +U H nebude. Namísto toho bude P = 0. Tzn. i když by náhodou x6 bylo taky 1, tak už se 3s člen nemůže otevřít, protože +U H mu ukradl první blok řetězce. Když ale bude x7 = 0, tak první P bude +U H , takže si prioritu může ukrást nějaký jiný blok. Centralizovaný kodér Až do ted’ to byl kodér s prioritním řetězcem. Centralizovaný kodér vznikne z pravdivostní tabulky. Prostě si jenom napíšete log. funkce z té tabulky výše a podle toho se centralizovaný kodér sestaví z bloků AND/OR/NOT. Přechodné děje Tak jediné, co se tu může měnit, jsou vstupy x. Když se bude měnit jenom jeden, tak asi OK, ale když se budou měnit dva a víc? Imho je to taky v pohodě. Možná by se mohlo stát, že když x7 půjde do 1 a předtím byl x6 taky 1, tak než P za x7 padne do 0, tak už bude na sběrnici tlačit 111. Možná by to ještě vadilo, třeba když by šel x7 do 1 a P by proplouvalo až třeba do posledního bloku. To by mohlo trvat dlouho, takže by možná vznikl impulz na jednom bitu sběrnice. No pokud to někdo náhodou víte s jistotou, tak napište. 2.8.5 Komparátor K = (an ≡ bn ) · (an−1 ≡ bn−1 ) · ... K - výstup a - jedno vstupní číslo 2.8. Základní funkční bloky 31 CESR, Release b - druhé vstupní číslo Takže ta rovnice říká: porovnáme první bit a s prvním bitem b, pokud jsou stejné -> 1, pokud ne -> 0. A pak všechny tyhle části vynásobíme, takže výstup K bude 1, pouze pokud budou všechny bity a a b shodné. Na obrázku je vidět, že některé komparatory mají i porovnávací funkce >, <. 2.8.6 Sčítačka Aritmetická sčítačka - abychom nemuseli počítat na prstech. a 0 0 1 1 0 0 1 1 b 0 1 0 1 0 1 0 1 c in 0 0 0 0 1 1 1 1 s 0 1 1 0 1 0 0 1 c out 0 0 0 1 0 1 1 1 a - vstup 1 b - vstup 2 c in - přenos z předchozí sčítačky c out - přenos pro další sčítačku Jak to funguje: úplně jednoduše se použije aritmetický součet. 0 + 0 = 0, 0 + 1 = 1, 1 + 1 = 2. Pokud je ovšem výsledek větší než 1, tak už se to samozřejmě nevejde do jednoho bitu, takže informace o tom, že výsledek přetekl rozsah se zapíše na c out . Následující sčítačka už bude tudíž vědět, že je o řád výše. 32 Chapter 2. Otázky CESR, Release Pro více bitů se samozřejmě dají sčítačky řetězit: Tady je problém s tím, že přenosy se s každým blokem zpožd’ují. Řešení je: 2.8. Základní funkční bloky 33 CESR, Release Tohle se nazývá sčítačka se zrychlením přenosů. Prostě se přenosy c generují současně pro všechny bloky. Je to rychlejší, ale taky složitější na zapojení. 2.8.7 Odčítačka Ta funguje tak, že se k jednomu číslu přičítá to druhé s otočeným znaménkem. To se v binární soustavě řeší dvojkovým doplňkem. To se znegují všechny bity a pak se přičte 1. P /M mění funkci mezi sčítáním (0) a odčítáním (1). Ta 1 totiž jde c in , což, jak je napsáno výše, přičte jedničku kvůli dvojkovému doplňku. Zároveň se všechny bity vstupního čísla B protáhnout XORem, což je zneguje (tj. že XOR vlastně funguje jako řízená negace). 34 Chapter 2. Otázky CESR, Release 2.8.8 Převodník kódu Je to obecně obvod, který převádí jeden kód na druhý. Do této skupiny můžeme zařadit dekodér a možná i prioritní kodér. Pro LED segmenty se třeba používá kód BCD (binary-coded decimal). U tohoto převodníku nehrají hazardy roli, yay! Prý je to vzácný případ. 2.9 Přechodné děje v kombinačních obvodech Přechodné děje v kombinačních obvodech. Zpoždění a hazardy. Vznik hazardu a jeho prognóza - z výrazu, z mapy a z obvodu. Vliv úprav výrazů. Projevy hazardů v číslicových systémech, metody odstranění. Změny dvou a více proměnných. Dynamický hazard. Grayův kód a jeho význam. Souběhy signálů – vznik, význam. 2.9.1 Hazardy O co jde Někdy se - při změně vstupu - na výstupu obvodu objeví impulz, který by se tam objevit neměl. Nelze se spolehnout, že někde budou nebo nebudou. Symboly ã ... a může být 1/0 bez vlivu na výstup a l ... a se mění mezi 1/0 a ↑ ... a se změní 1 -> 0 a ↓ ... a se změní 0 -> 1 abc̃d znamená: a = 1, b = 0, c = se mění mezi 1/0 (ale je to jedno), d = 1 Maximální zpoždění Máme: tpLH = 5ns a tpHL = 3ns. b = 0, c = 0/1, d = 1 a mění se a. Když jde a z 0 -> 1: 1. d = 1, a jde do 1, takže člen 2 (AND) jde taky do 1, započítáme tpLH 2. f šlo do 1, b = 0, takže g půjde taky do 1, započítáme další tpLH 2.9. Přechodné děje v kombinačních obvodech 35 CESR, Release 3. e bude vždycky 1, protože b = 0, takže člen 4 (NAND) půjde do 0 (na obou vstupech je 1), a tudíž započítáme tpHL tp = 2 · tpLH + tpHL = 2 · 5 + 3 = 13 ns Takhle to projdeme pro všechny stavy a dojdeme k maximálnímu zpoždění. To se pak hodí při návrhu. 2.9.2 AND, OR Co se tu stalo: signál b přišel o chvíli déle než signál a. Čekali bychom, že to půjde následovně: 1. 0*1 = 0 2. 1*0 = 0 3. 0*1 = 0 Jenže na krátkou dobu bude a = b = 1 a tudíž jejich součin taky 1. Tím vznikne falešný impulz. To samé se pak děje u OR-u. 2.9.3 Výrazy Booleova algebra funguje jen v ustáleném stavu. Resp. by se dalo říct, že platí pořád, ale pro každý okamžik musíme výstup počítat znovu, jak je vidět na obrázku. Z obrázku vidíme, že a · a 6= 0 (vstupy měly být k sobě opačné a tudíž měla být na výstupu 0, ale nebyla). Stejně tak a + a 6= 1. I když použijeme nějaké pravidlo pro zjednodušení log. funkce, tak v přechodném ději nemusí platit tak docela, jako třeba ab + ab 6= a. 36 Chapter 2. Otázky CESR, Release Hazard je např. vyloučený na 3 vstupém ANDu, kde jeden ze vstupů je 0. Logicky, když se proti sobě mění zbylé dva, tak výstup bude pořád 0. Ale k čemu to je, he? No když tohle víme, můžeme člen blokovat jenom v době, kdy se na něm nějaké vstupy mění. Takže co se tady děje: výstupy z členů 2 a 3 jdou proti sobě. Na členu 1 je 0, takže ten nic neblokuje, a proto může nastat hazard. Nastal by, pokud by oba výstupy byly na krátkou chvíli v 0, pak by i výstup y byl 0, namísto očekávané 1. Na pravém obrázku jsme přidali další člen. Ten má na výstupu pořád 1, takže i y musí být pořád 1. I když se členy 2 a 3 sejdou v 0, člen 4 výstup ponechá v 1. Tím sice pomocí 8 hradel generujeme log. 1, ale co na tom? Hazard tam není. Hledání hazardu z výrazu Když máme log. funkci a chceme zjistit, jestli v takovém případě dojde k hazardu, musíme ji rozložit podle proměnné, která se bude měnit, podle Shannona. Po rozložení nám vyjde něco ve tvaru: y = x · A + x · B + C. Když potom bude A = 1, B = 1 a C = 0, dostaneme soustavu 3 rovnic. Jestli jde vyřešit, pak hazard nastane. Pokud nejde vyřešit, hazard nenastane. A, B i C jsou logické výrazy a všechny musí platit najednou, což zapsáno vypadá jako A · B · C = 1. Takže když budeme mít funkci: y = b · d + bc + ab a měnit se bude b. Použijeme Shannona: y = b(a) + b(c + d) + 0 Z toho vidíme, že: A = a, B = (c + d) a C = 0. Když mají platit všechny, tak to dosadíme do vztahu výše: a · (c + d) · 1 = 1 ac + a · d = 1 Řešení: 1. a = 0, c = 1 2. a = 0, d = 0 2.9. Přechodné děje v kombinačních obvodech 37 CESR, Release Pokud by se stalo, že nenajdeme takovou kombinaci proměnných, aby dohromady daly 1, tak to znamená, že řešení neexistuje a hazard nenastane. Tady jsme ale řešení našli, takže hazard vznikat bude. A to dokonce ve dvou případech: ˜bl 1. acd, 2. ac̃d, b l Vysvětlení (pro 1. řešení): • a = 0, takže dáme negaci • b jsme použili pro rozložení, takže se mění • c = 1, takže bez negace • d tu není vůbec, takže s vlnovkou, protože se může měnit jak chce, stejně se neprojeví Tuto metodu lze použít jen pro jednu měnící se proměnnou. Jakmile se mění dvě a více, existuje mnohem více kombinací, jak se mohou vzájemně měnit a je proto lepší použít jiné metody na odstranění hazardů. Vliv úprav na hazardy Máme dva typy úprav: • Hazard měnící – spojování mintermů • Hazard neměnící – vytýkání před závorky, roznásobení závorek, DeMorgan Takže když si navrhneme obvod a zjistíme, že v něm jsou hazardy a pak použijeme hazard měnící úpravu, všechno je v tahu a musíme se po hazardech podívat znovu. Pak se dokonce může stát, že se hazardů zbavíme úplně. 2.9.4 Mapy Takže jak víme, jedna oblast v mapě, je jeden jeden implikant. Na obrázku vidíme přeskok mezi ac a ab. Pak tu máme čárkovaně další oblast, která je nám pro zjednodušení k ničemu, byla by tam navíc. Ale při zjišt’ování existence hazardu se nám hodí, pohybujeme se mezi dvěma buňkami tabulky v rámci té nadbytečné oblasti. A vidíme, že se tak mění proměnná a. Takže když do výrazu zahrneme i tu nadbytečnou smyčku, měl by se hazard eliminovat (za cenu složitějšího obvodu). 2.9.5 Grayův kód Je to binární kód, kde dvě po sobě jdoucí hodnoty se liší pouze v jednom bitu. Původně byl navržen pro eliminaci falešných impulzů, dnes se používá pro opravu chyb v dig. komunikacích. 38 Chapter 2. Otázky CESR, Release Binární kód 000 001 010 011 100 101 110 111 Grayův kód 000 001 011 010 110 111 101 100 Když si označíme pozice u obou kódů: b2 b1 b0 (binární) a g2 g1 g0 (Grayův), můžeme zapsat vztahy pro převod: Binární na Grayův g2 = b2 (MSB) g1 = b2 ⊕ b1 g0 = b1 ⊕ b0 (LSB) Čili pro n bitů obecně: • MSB zůstane stejný • Každá další pozice v Grayově kódu je předchozí pozice v binárním XOR stejná pozice v binárním (7 -> 7 a 6 -> 6 a 5 -> 5 a 4 -> atd...) Grayův na binární b2 = g2 (MSB) b1 = g2 ⊕ g1 b0 = g2 ⊕ g1 ⊕ g0 (LSB) A obecně pro n bitů: • MSB zůstane • Každý další bit je XOR všech významnějších, vč. sebe sama. (7 -> 7 a 6 -> 7 a 6 a 5 -> 7 a 6 a 5 a 4 -> atd...) 2.9.6 Odstranění hazardů Filtr 2.9. Přechodné děje v kombinačních obvodech 39 CESR, Release Jak je vidět, falešný impulz se sice zmenší, ale nezmizí úplně (x -> y). Graf z ukazuje průběh s větší časovou konstantou RC. Tohle řešení má několik problémů: • Každý impulz se zpomaluje a tím se zpomaluje všechno za filtrem. • Záleží na délce impulzu, takže ty delší falešné impulzy klidně můžou projít dál Tj. tahle metoda ne-e. Registr Jak tohle funguje: náš milý kombinační obvod plný nevyzpytatelných hazardů sype výstup do registru (Y). Ty se do registru zapíší signálem WR (write) a zůstanou tam až do dalšího WR. No a podle grafu je vidět, že když se změní 40 Chapter 2. Otázky CESR, Release vstup kombinačního obvodu (X), chvíli trvá, než se to ustálí na výstupu (Y) a teprve po ustálení zapíšeme hodnotu do registru (WR) a výstup bude už správný (Z). Stane se totiž to, že hazard vznikne při změně vstupu. Ale vstup se mění dál, až se konečně rozhodne, že už se měnit nebude, a v tu chvíli vypustíme signál WR a tu ustálenou hodnotu pošleme dál. Může se zdát, že generování impulzu WR přináší další složitosti do obvodu, tedy synchronizaci. Jenže tu v každém rozumném obvodu stejně mít budeme, takže takhle je to dobře. 2.9.7 Dynamický hazard Dynamický hazard vzniká kombinací měnících se vstupů a alespoň jednoho vstupu, kde se může objevit statický hazard (to je to, o čem se tak dlouho mluvilo v téhle kapitole). Jak je vidět na grafu: vstup a se mění, vstup b měl být konstantní, ale v nějakém předchozím obvodu nastal hazard, čímž se pokazil i výstup y. Opravit to lze celkem jednoduše: zbavíme se statického hazardu. Potom se v součinu a a b nemá šanci nějaký další hazard projevit. 2.10 Klopné obvody Klopné obvody - chování (RS, D, T, JK), reakce na hodinový impuls (řízení hranou, úrovní, Master-Slave), podmínky bezchybné funkce, metastabilita. Nastavení počátečního stavu - prostřednictvím vstupů R,S nebo multiplexoru. Blokování činnosti KO. Transformace KO - D na T, T/D, JK. 2.10. Klopné obvody 41 CESR, Release 2.10.1 RS S 0 0 1 1 R 0 1 0 1 Q Q 0 1 0 Q’ Q’ 1 0 0 R - reset S - set Přechod z S = R = 1 do S = R = 0 je zakázaný. Není totiž jasné, do jakého stavu se má RS dostat, takže se dostane do pseudo-náhodného stavu, který je daný drobnými rozdíly v hradlech. Zakázaný je ale jenom přechod, ne ten stav samotný. 42 Chapter 2. Otázky CESR, Release Pomocí NAND S’ 0 1 0 1 R’ 0 0 1 1 Q 1 0 1 Q Q’ 1 1 0 Q’ Zde je zakázaný přechod z S’ = R’ = 0 do S’ = R’ = 1. 2.10. Klopné obvody 43 CESR, Release 2.10.2 D D mění stav jenom se synchronizačním/hodinovým impulzem CLK. • CLK = 0 - R a S jsou 0, takže stav Q zůstává stejný • CLK = 1 - na R bude D’ a na S bude D, takže ve výsledku na Q bude D Řízení úrovní D 0 1 - CLK 1 1 0 Q 0 1 Q Q’ 1 0 Q’ 1. Žádný efekt, CLK je 0 44 Chapter 2. Otázky CESR, Release 2. Na výstup Q se přenese vstup D se zpožděním tpDQ 3. Tady jsou změny zakázány. Tj. v intervalu [ts , th ]. 4. Tady už by měl být výstup konstantní ts - setup time = doba předstihu th - hold time = doba přesahu Pokud tyto doby dodržíme, výstup se bude držet na nastavené hodnotě celý zbytek periody CLK. Pokud je nedodržíme, může vzniknout metastabiliní stav. Řízení hranou 1. CLK = 0, žádné změny 2. CLK = 1 a zároveň náběžná hrana D, takže se hodnota uloží (se zpožděním tpDQ ) 3. CLK = 1, ale už tu není žádná hrana, takže se nic nezmění Zase se tu musí dodržet doby ts a th , jinak zase může vzniknout metastabiliní stav. 2.10. Klopné obvody 45 CESR, Release Poslední 3 řádky tabulky, kdy se Q nemění - žádná náběžná hrana. “-” znamená, že se hodnota nemění. Proto se bude výstup měnit pouze u prvních 2 řádků, kdy jde CLK z 0 do 1. A vnitřní zapojení je tak složité, že to snad ani nemá cenu snažit se zapamatovat. To prostě nejde. 2.10.3 JK J - jump - set K - kill - reset Tady je to podobné jako s D. Poslední 3 řádky CLK brání zápisu hodnoty. Hodnota se nezmění ani u prvního řádku, protože je J = 0. Takže pak tu máme 2. řádek, kdy se Q nastaví na 1, protože J (set) je 1. Opačně pro J = 0. A očividně J = K = 1 obrací/neguje uloženou hodnotu. 2.10.4 T T jako toggle. Asynchronní Tohle se přepíná každou náběžnou hranou na T. Krásně se to dá využít v Minecraftu na otevírání dveří, apod. Zmáčknu tlačítko jednou - dveře se otevřou, zmáčknu ho podruhý - dveře se zavřou. 46 Chapter 2. Otázky CESR, Release Synchronní Tady je to podobné, ale náběžná hrana musí být udělaná signálem CLK a zároveň musí být T = 1, jinak se obvod nepřepne. 2.10.5 Podmínky bezchybné funkce • Dodržení doby předstihu a doby přesahu • Minimální strmost hrany CLK • Minimální doba trvání CLK ve stavu 1 • Minimální prodleva CLK ve stavu 0 (tj. než se zase hejbne do 1) Nedodržením jedné z podmínek vzniká metastabilita. 2.10.6 Řízení Master-Slave Jak to funguje: 1. CLK = 1 - aktivuje se Master a deaktivuje se Slave 2. Tím se vlastně na Master uloží hodnota na vstupu (ukládá se celou dobu, kdy je CLK = 1, ale teprve v CLK = 0 je viditelná) 2.10. Klopné obvody 47 CESR, Release 3. CLK se přepne do 0, Master drží hodnotu, kterou si uloží Slave To znamená, že se všechno stihne v jedné periodě CLK (no, jinak by to bylo celkem k ničemu). 2.10.7 Nastavení hodnot klopných obvodů Na obrázku je vidět D, který má asynchronní vstupy R’ (reset) a S’ (set). Tj. např. po připojení napájení lze nastavit počáteční stav všech klopáků. 2.10.8 Blokování klopných obvodů Jak se to nedělá: nepoužívá se jednoduchý AND jako on/off, protože kdo by ho řídil? A kdy by se to spínalo/rozpínalo? Takhle by to mohlo ukrojit kus pulzu, a ten zbytek už by nemusel klopák překlopit, a jsme zase u metastability. Takže jak se to dělá: 48 Chapter 2. Otázky CESR, Release Pokud je EN = 0 (enable), tak je aktivní R’, což vždycky nastaví 0 na výstup Q. Na CLK nesaháme, to jde dovnitř do klopáku a až na výstup Y. Takže z toho už vyplývá, že na vyrobení stavu Y = 1 potřebujeme, aby byl EN = 1 a zároveň CLK v náběžné hraně. Ke konci grafu je vidět, že když najednou chceme výstup utnout tím, že dáme EN = 0, tak to nejde hned. V tu chvíli totiž ještě bylo CLK = 1, takže R’ byl neaktivní. Teprve když CLK padlo do 0, tak se aktivoval R’ a Q šel taky do nuly. Tzn. že okamžité zablokování není možné a projeví se vždy až po celé periodě CLK. A to byl cíl, kterého bylo třeba dosáhnout. Pomocí multiplexoru Tohle vypadá mnohem jednodušeji. Při EN = 1 je všechno v pohodě, funguje standardně jako každé jiné D. Ale když je EN = 0, tak Q = D, a tím vlastně blokujeme KO. On funguje dál, ale žádná změna vstupu se neprojeví. Signál EN nelze měnit v oblasti náběžné hrany CLK. 2.10. Klopné obvody 49 CESR, Release 2.10.9 Transformace KO Moc toho v téhle kapitole není. Těch možností transformace je dost, ale kdo si to má sakra všechno pamatovat? Synchronní D na asynchronní T 2.11 Registry Registry - datové a posuvné, podmínky správného časování hod. impulsů. Nulování a přednastavení u posuvných registrů. Posuvy o větší počet míst na obě strany. Lineární čítače s max. délkou cyklu. 50 Chapter 2. Otázky CESR, Release R’ - reset WR - WRite 2.11.1 Datový registr 2.11.2 Posuvný registr 2.11. Registry 51 CESR, Release Funguje to jednoduše: s každým pulzem CLK se data posunou doprava: SD 1 0 0 0 0 - Q (1-4) 1011 1101 0110 0011 0001 0000 V tabulce každá řádka odpovídá jednomu pulzu CLK. Začalo se se stavem 1011 a na vstupu pro další cyklus byla připravená log. 1. Data na pravé straně se ztrácí. Použití: • Převod sériových dat na paralelní - data se sází na SD a po pár cyklech si je můžeme vyzvednout z výstupů Q • Převod paralelních dat na sériová - registr nacpeme daty (rozhodně nebudeme v první fázi nic cpát na SD) a potom začneme cykly posouvat data ven, takže na posledním Q už budou sériová. Časování tpCQ ≥ th TCLK ≥ tpCQ + ts 52 Chapter 2. Otázky CESR, Release 2.11.3 Podmínky časování Jelikož se registr skládá z KO (hranou řízený nebo úrovní), tak se časování řídí pravidly pro časování KO. Rozdíly mezi hranou a úrovní Úrovní řízený registr: • Je jednodušší • Uložení nebo průchod dat je možný po celou dobu (je transparentní), kdy WR = 1 (ne jen při hraně) Hranou řízený: • Vyžaduje stálý přísun zápisových pulzů, takže nikdy není transparentní. 2.11.4 Nulování a přednastavení Některé registry mají - stejně jako KO - funkce set a reset. Akorát se tady tomu říká preload. Pro přednastavení je většinou potřeba aktivovat vstup PE = 1 (preload enable), tím se přepne multiplexor a namísto posouvání dat se všechny KO nastaví podle jejich vstupů D. Až je to nastaveno, tak se zase přepne PE = 0 a data se začnou posouvat pomocí CLK. Přednastavení je synchronní - používáme CLK, zatímco nulování je asynchronní - je nezávislé na CLK. (Pro lepší přehlednost jsem to vybarvil :o)) 2.11. Registry 53 CESR, Release 2.11.5 Posun na obě strany Jak to funguje: Když je DIR = 1, tak je vstupe SDL a funguje to jako posuvný registr zmíněný výše. Pokud je DIR = 0, tak se vlastně propojí výstupy n-tého KO se vstupem toho předchozího (vlevo). Takže při CLK ten úplně vpravo pošle data tomu předposlednímu. Předposlední je pošle tomu před-předposlednímu. Atd. až je druhý pošle prvnímu a první je pošle do p.. data se ztratí. 2.11.6 Posun o jiný počet míst Se dělá podobně jako posun na obě strany. Akorát si představte, že se nespojí jeden za druhým, ale třeba ob jeden. Takže potom se třeba z 5. KO posunou na 3. a z něj na 1. 2.11.7 Kruhový registr Jednoduše: co leze ven - a jinak by se ztrácelo - zase zavedeme zpátky na vstup (z posledního na první). Použití: • Řídící impulzy • Třeba posouvání textu na LED panelu (i když by byl asi uPC jednodušší) 54 Chapter 2. Otázky CESR, Release Twisted ring counter Taky Johnsonův čítač nebo Möbiův. Vnikne tak, že vezmu poslední Q v negaci a to zapojím na vstup prvního KO. No, vypadá to spíš jako hračka, ale generuje to Grayův kód. 2.11. Registry 55 CESR, Release 2.11.8 Lineární čítač Ta krabička vlevo, to je XOR některých výstupů Q. Takže když budu mít 4 výstupy a vezmu Q2 a Q3, XOR na ně a co z toho vyleze, to půjde na vstup, tak dostanu řadu: 0001 - 1000 - 0100 - 0010 - 1001 - 1100 - atd... Mrkněte na wiki, tam je hezký obrázek. Využití to najde v šifrování, protože lineární čítač generuje pseudonáhodný signál, i když periodický. Ale i funkce ve spoustě standardních knihoven programovacích jazyků používají taky pseudonáhodné generátory. Ono to ve spoustě případů stačí. Mimochodem počáteční stav se nazývá seed. 56 Chapter 2. Otázky CESR, Release 2.12 Čítače Čítače asynchronní a synchronní, binární a modulo, reverzivní. Časové diagramy asynch. a synch. čítače. Čítače s předvolbou (přednastavením). Návrh čítačů v kódu bin., modulo, Gray. Blokování v koncovém stavu. Provedení reverzivních čítačů. Čítače s programovatelným modulem. 2.12.1 Co to je • Každý čítač má vnitřní stav • Těch stavů má určitý konečný počet • Jakmile dosáhne posledního stavu, začne se vše opakovat • Žádné dva stavy se neopakují • Čítač má výstupy, kde to binární číslo často odpovídá dekadickému (ale taky lze využít pro Grayův kód) Druhy čítačů • Inkrementující a dekrementující - bud’ počítá nahoru nebo dolů • Reverzivní - umí obojí a lze to přepínat • Binární - je ten, který má délku cyklu M = 2k , (k - počet bitů), takže není nikde utnutý • Dekadický - má cyklus s délkou M = 10 • Modulo M - ten je zkrácený na délku M, která nespadá do žádné z předchozích kategorií • Asynchronní a synchronní 2.12. Čítače 57 CESR, Release 2.12.2 Asynchronní čítač Jak to funguje: první impulz nastaví Q0 = 1, takže T1 = 0. Pak přijde další impulz a nastaví Q0 = 0 a T1 = 1, takže Q1 = 1. Atd... Nevýhoda je zpoždění signálu, takže se to moc použít nikde nedá. Jediná výjimka je použití jako dělič kmitočtu. Pro počítání dolů: 58 Chapter 2. Otázky CESR, Release 2.12.3 Synchronní čítač Všechny KO se překlápí současně. Pokud CLK impulzy splňují podmínky časování, pak na výstupu čítače nebudou falešné impulzy. Jenže pokud za čítač dáme další KO, může se stát, že výrobní odchylky na jednotlivých KO poruší podmínky časování a tím můžou způsobit falešné impulzy na výstupu následujícího KO. 2.12. Čítače 59 CESR, Release Příklad 4-bitového synchronního čítače Tedy: máme stav 0000 a následující má být 0001. Budící funkce je to, jak se k tomu stavu dostaneme. My totiž víme, že Q0 = D0, Q1 = D1, atd... takže nový stav čítače je pro nás nový stav všech KO typu D. Takže to je pro nás budící funkce pro KO D. Pokud bychom to chtěli postavit z KO typu T, tak na to musíme trochu jinak. T totiž přepínají s každým impulzem, namísto posouvání hodnoty jako u D. A proto T musí měnit hodnotu tam, kde se mění starý stav na nový. Takže u 0000 -> 0001 se mění Q0 (LSB). Tzn. že budící funkce pro T musí být 0001 (T0 = 1). Např. pro 1101 -> 1110 se mění dva bity, takže budící funkce by byla 0011. tl;dr Budící funkce je: • pro T - starý stav XOR nový stav • pro D - nový stav Potom se udělá to, že se vytvoří rovnice pro starý stav. Pro to naše T to bude: T3 T2 T1 T0 60 = Q3 Q2 Q1 Q0 + Q3 Q2 Q1 Q0 = Q2 Q1 Q0 = ... = Q1 Q0 = Q0 =1 Chapter 2. Otázky CESR, Release Lze samozřejmě využít i Karnaughovu mapu. A tady ty dva ANDy, to je přesně to, co se v odstavci Synchronní čítač označuje jako krabička s nápisem Kombinační obvody. No a pokud bychom chtěli, aby čítal dolů, nebo aby čítal v Grayově kódu, tak jenom na začátku napíšeme jinak tabulku přechodů (tj. starý stav -> nový stav) a pak už postupujeme stejně. 2.12.4 Reverzivní čítače Dva způsoby: 1. Vstup UP a DN (down), směr je řešený přivedením CLK na jiný vstup 2. CLK je pořád na jednom vstupu, ale druhý vstup ovládá směr čítání (DIR) 1/0 2.12.5 Nulování a přednastavení Pro synchronní čítače Je stejné jako u přednastavení posuvného registru. 2.12. Čítače 61 CESR, Release Pro asynchronní čítače Tady je to trochu složitější. DI - data in LD - load CLR - clear Pokud chceme nastavit data: • DI budou data, co chceme nastavit • LD’ = 0 (aktivní - nezapomeňte na negaci) • CLR = 0 (neaktivní) • R’ a S’ se řídí podle DI – S’ = 0 (aktivní) je při DI = 1 – R’ = 0 (aktivní) je při DI = 0 Pokud chceme KO vynulovat: • LD’ = 1 (neaktivní) • CLR = 1 (aktivní) • R’ = 0 (aktivní) 62 Chapter 2. Otázky CESR, Release • S’ = 1 (neaktivní) • DI nerozhoduje Stačí si pamatovat, jak to má fungovat, že to má 3 vstupy a zbytek se už dá nakreslit. Snad se nic nestane, pokud zapomenete, který vstup je aktivní v 0, protože pak stačí jenom přidat negaci... 2.12.6 Přenosy Asynchronní Opět je problém se zpožděním, protože signál musí putovat po celé kaskádě. Synchronní Takže jakmile jsou všechny Q v posledním stavu (1111), tak se ANDem vygeneruje signál CY (carry), nebo v případě dekrementujícího čítače BO (borrow). Ještě se to musí vynásobit signálem UP/DN, jinak by ten impulz vznikl o stav nebo půl stavu dříve. 2.12.7 Čítač modulo M Dva způsoby: • Synchronní čítač - už na začátku si navrhnu tabulku přechodů, aby se cyklus zkrátil • Asynchronní čítač - ve stavu, kdy chci skončit, kombinačním obvodem vynásobím/sečtu ten stav a tím výsledkem vyresetuju všechny KO 2.12. Čítače 63 CESR, Release 2.12.8 Programovatelné modulo Funguje to tak, že se na začátku nastaví dělící poměr (M) na vstup DI (data in), tím se čítač přednastaví. Potom si vesele čítá dál a až přeteče, tak se vygeneruje BO, který spustí LD (load) a znovu se načte počáteční stav. Pokud změníme dělící poměr M, tak se to projeví po dalším přetečení. Úprava impulzu tu znamená, že se zajišt’uje správné časování. Protože u synchronního čítače se musí LD ukončit aspoň o tsLC před dalším CLK (tady na DN). 2.13 Principy časovacích obvodů Principy časovacích obvodů. Zkrácení, prodloužení a stabilizace délky impulsu. Využití zpoždění hradel. Monostabilní KO, MKO-NR a MKO-R. Synchronní časovače, využití čítačů. Detektory hrany. Impulsně-šířkový modulátor (PWM) 2.13.1 Co to je Časovací obvody slouží ke generování nebo úpravě signálů v čase - zkrácení, prodloužení, atd... Jsou zase synchronní a asynchronní. Synchronní mají tu výhodu, že se všechno vztahuje na periodu CLK. Takže jestli je nepřesné CLK, tak by se to nemělo v zásadě projevit, protože se od toho odvíjí funkce všech obvodů stejně. 2.13.2 Asynchronní časovací obvody Ty jsou založeny na přechodných dějích. Vzpomeňte si na YTE a RC obvody. Mají ovšem velké nevýhody: • Malá strmost hran může způsobit rozkmitání. 64 Chapter 2. Otázky CESR, Release • Malá přesnost časování (no ono už jenom když budete chtít nastavit časovou konstantou kondíkem, který má toleranci třeba 20%...) • Časová nestálost časování (a asi i teplotní, trochu se to zahřeje a odpor i kondík budou mít drobet jiné hodnoty a časová konstanta se taky změní). Zpoždění Takže bud’ takhle, nebo za sebe naházíme několik opakovačů/invertorů. Pak to zpoždění teda bude celý násobek tp d. Detektor změn 2.13. Principy časovacích obvodů 65 CESR, Release 2.13.3 Monostabilní KO Je taky asynchronní, ale zaslouží si vlastní odstavec. Existují dvě varianty: • Znovu spustitelný (retriggerable) – MKO-R • Ne-znovu spustitelný (zatracená čeština) (non-retriggerable) – MKO-NR A taky nevím, proč se plete česká zkratka s anglickou... 66 Chapter 2. Otázky CESR, Release Retriggerable je jako schodišt’ák. Non-retriggerable je jako když v PC hře skáčete - nemůžete odletět, takže stisknete mezerník a začne se počítat čas skoku a jak jste ve vzduchu, hra ignoruje další stisk mezerníku. Retriggerable by zajistil chování jako ve hře Flappy Bird. Tyhle KO se dělají v integrované verzi, kde se běžně dosahuje stavu, že kolísání Ucc o 5% a teploty 0 - 75 C nehýbe s dobou tw o méně než 1% (no ve skriptech je napsáno zlomky procenta, ale to je takové neurčité. Takže asi bude víc typů s různou přesností, atd...) 2.13. Principy časovacích obvodů 67 CESR, Release 2.13.4 Synchronní časovací obvody Detektor hran 68 Chapter 2. Otázky CESR, Release Jak na to: dva za sebou jdoucí KO typu D. To znamená, že když se změní D1, tak o jednu periodu za ním se změní D2. Simple enough. No a všechno ostatní se dělá kombinančními obvody. Nejlépe si to nakreslete, pak vyzkoušejte pár kombinací s ANDy a jednu s XORem a máte to. To, jestli se trefíte to značení jako na tomhle grafu, to je jedno. Tady třeba může být otázka u zkoušky, abyste navrhli synchronní obvod, který vygeneruje impulz, když se vstup změní, a to se zpožděním X taktů. Tzn. to je případ nahoře Y3. A zpozdit by se to dalo dalšími KO typu D. Už samotný obv. nahoře bude mít zpoždění 1 takt. Generování impulzu dané délky MKO-NR Jak to funguje: impulz START nastaví Q na 1. Ta jednička se začne posouvat v posuvném registru doprava. Zatím je ale na konci registru 0, tu znegujeme, takže v tom ANDu jsou dvě jedničky a Y = 1. To se děje až to dé doby, než se 2.13. Principy časovacích obvodů 69 CESR, Release ta původní jednička vsune na konec registru, pak nastane stav Y = 0. To by celkem už mohlo fungovat i bez toho ORu na začátku. Ten ale zaručí to, že se do registru budou sypat další jedničky a tím se vytvoří druhá část impulzu. V podstatě ty jedničky tam vytvoří stejně dlouho část impulzu i v 0. Délka impulzu je dána pouze délkou registru. A ta délka je celým násobkem periody CLK. Taky může být u zkoušky. Tohle je taky jinak řečeno synchronní MKO-NR. Takže se ten impulz nedá prodloužit. Tady to je druhá možnost. Máme Q = 0. Čítač je zastavený, protože Q’ = 1 a na CLR ho resetuje. Když přivedeme impulz na START, tak se Q = 1, takže náš požadovaný impulz právě začal. Q’ = 0, čítač čitá a jakmile se jeho stav rovná reg. délky, tak se vyresetuje KO, což zase začne resetovat i čítač a náš impulz skončil. Zase to je synchronní MKO-NR. Hlavní rozdíl oproti předchozí verzi je ten, že 1. verze na N stavů potřebuje N klopných obv., zatímco druhá verze se stejným množstvím KO udělá až 2N stavů. Ovšem, má to i jednu nevýhodu - a to dost podstatnou - na výstupu komparátoru můžou vznikat falešné impulzy. Ale i to má řešení: 70 Chapter 2. Otázky CESR, Release V grafu jsou falešné impulzy čárkovaně (lajna K). My znegujeme CLK, takže na NANDu bude 1 v druhé půlce periody CLK. Takže pokud vznikne falešný impulz v první půlce periody CLK, nic se nestane. V druhé půlce ale už falešné impulzy odezní, takže tam můžeme KO resetovat. A je to! 2.13. Principy časovacích obvodů 71 CESR, Release MKO-R Jediné, co tu je navíc, je OR u STARTu. Tzn. že bud’ se čítač vyresetuje dosažením hodnoty reg. délky, a nebo ho vyresetujeme ručně. Takže Q = 1 a čítač si čítá a čítá a pak někdo přijde a zmáčkne START a bum, čítač je na 0, Q je pořád ještě 1 a my musíme čekat o to dýl, než komparátor vyresetuje KO. 2.13.5 PWM PWM zná asi každý, kdo se do ted’ drží na FEL. Pokud i tak ne, mrkněte na wiki. Uavg = U1 · t1 T T - perioda impulzů t1 - doba, kdy je impulz v 1 U1 - amplituda signálu Uavg - střední hodnota napětí, co nám PWM generuje 72 Chapter 2. Otázky CESR, Release Takže ty ANDy před RSkem jsou zase kvůli eliminaci falešných impulzů. CLK je tam v negaci, takže pokud se má něco stát, stane se v druhé půlce periody CLK. No a potom čítač čitá a jak jsou všechny bity = 0, tak ten obrovský OR nastaví výstup PWM na 1. Pak se čítá od 0 dál, jakmile se rovná stav čítače reg. délky, tak komparátor hodí 1 a vyresetuje RS. Taky by to určitě šlo pomocí CO/BO výstupů čítače. Tak, ted’ čítáč má M stavů. V registru délky je číslo N. Celková doba, než čítač proběhne všechny stavy je proto: T = M · TCLK Zatímco doba, než se trefí do N je: t1 = N · TCLK Takže ted’ to výstupní napětí je dáno poměrem N/M. A my můžeme zjistit relativní chybu nastavení t1 . Když vezmeme 1 bitový čítač, tak ten má 2 stavy. To znamená, že můžeme bud’ mít úplnou nulu na výstupu nebo signál se střídou 1:1. To je chyba 50%. Když vezmeme 2 bitový čítač, tak už je to 25%. Atd. Počet bitů 1 2 3 4 5 6 7 8 Relativní chyba 50% 25% 12.5% 6.25% 3.13% 1.56% 0.78% 0.4% 2.14 Sekvenční obvody Sekvenční obvody. Přechodová a výstupní funkce, Mealyho a Mooreho automat. Synchronní a asynchronní sekvenční obvody. Popis stavovým grafem, stavovou tabulkou, stavovými rovnicemi. Neurčené stavy a jejich projevy. Nastavení počátečního stavu - různé možnosti. Analýza sekv. obvodu (od schématu k tabulce či grafu). Návrh synch. sekv. obvodů - kódování stavů, výběr KO, návrh budících funkcí. 2.14. Sekvenční obvody 73 CESR, Release Mrkněte taky na wiki. 2.14.1 Přechodová funkce Tato funkce vyjadřuje: mám současný vnitřní stav a současný vstupní a stav a jak se tím změní následující vnitřní stav. S t+1 = f (S t , I t ) S t - současný vnitřní stav S t+1 - následující vnitřní stav I t - současný vstupní stav (signály na vstupu) 2.14.2 Výstupní funkce Tahle funkce říká, jak budou vypadat výstupy sekvenčního obvodu. Mealyho automat Tady to závisí na vnitřním stavu a stavu vstupů Ot = g(S t , I t ) Mooreho automat A tady jenom na vnitřním stavu. Ot = g(S t ) 2.14.3 Asynchronní sekvenční obvody Jsou ty, které mění svůj vnitřní stav hned po změně vstupního stavu. Plus nějaké to zpoždění součástek uvnitř. 2.14.4 Synchronní sekvenční obvody Změny vnitřního stavu se odehrávají v pevně daných okažicích určený hodinovým signálem. Všechno je tu jasnější co se týče časování, takže tyhle jsou častější. 74 Chapter 2. Otázky CESR, Release 2.14.5 Popis grafem Říká se tomu stavový diagram. Obsahuje jak přechodovou funkci, tak výstupní. Mooreho automat Jak na to: S jsou vnitřní stavy, I jsou vstupní stavy a O jsou výstupní. Víme, že v případě Mooreho automatu jsou výstupní stavy závislé jenom na vnitřním stavu. Takže z obrázku vidíme, že ve stavu S0 je na výstupu stav O0. Pokud v tomhle stavu přivedem na vstup stav I1, dostane se automat zase do stejného stavu S0. Teprve stav I0 nebo I2 ho přepnou do stavu S1, kde má ovšem výstup zase O0. Např. vstupním stavem I2 ho pak můžeme přepnout z S1 do S3. A tady odsud už žádná cesta nevede. 2.14. Sekvenční obvody 75 CESR, Release Mealyho automat Výstup Mealyho automatu závisí jak na vnitřním stavu, tak na vstupním stavu. Funguje to víceméně jako Mooreho automat, takže vstupními stavy I přepínáme vnitřní stavy S. Rozdíl je ve výstupech. Tak třeba jsme ve stavu S1 a na vstup přivedeme I1. V tu chvíli se automat přepne do stavu S0 a na výstupu bude stav O2. Kdybychom ovšem místo toho přivedli na vstup I2, tak se automat přepne zase do S1 a výstup už bude jiný, totiž O0. Tady je vidět, že výstup závisí i na vstupu, ne jenom na vnitřním stavu. 2.14.6 Popis rovnicemi Přechodová funkce se popisuje takhle: Si αIj → Sk tedy vnitřní stav S v kombinaci se vstupním stavem I vytvoří jiný vnitřní stav S. Pro výstupní funkci takhle: Si αIj : Ok Takže když se vrátíme k Mealyho automatu v předchozím odstavci, tak můžeme napsat: S1 αI1 → S0 – pro přechodovou funkci 76 Chapter 2. Otázky CESR, Release S1 αI1 : O2 – pro výstupní funkci Pro Mooreho automat budou všechny výstupní vypadat např. S0 : O0 2.14.7 Popis tabulkou Následující tabulky se vztahují zase k těm obrázkům nahoře. Mooreho automat Přechodová funkce: S0 S1 S2 S3 I0 S1 S2 S2 S3 I1 S0 S0 S0 S3 I2 S1 S3 S2 S3 Výstupní funkce: S0 S1 S2 S3 O0 O1 O2 O3 Mealyho automat Přechodová funkce: S0 S1 S2 I0 S1 S2 S2 I1 S0 S0 S0 I2 S0 S1 S0 Výstupní funkce: S0 S1 S2 I0 O0 O2 O0 I1 O1 O2 O0 I2 O1 O0 O0 Tady je zase hezky vidět, že u Mealyho automatu závisí výstup i na vstupech. 2.14.8 Kódování stavů • Vstupní kód – přiřazuje vstupní signály vstupnímu stavu I • Vnitřní kód – přiřazuje vnitřní signály vnitřnímu stavu S • Výstupní kód – přiřazuje výstupní signály výstupnímu stavu O Tedy ke každému stavu je potřeba určit kombinaci signálů. Počet signálů, které potřebujeme k zakódóvání stavů můžeme určit z následující nerovnosti: 2k−1 < n ≤ 2k 2.14. Sekvenční obvody 77 CESR, Release n - počet stavů k - minimální počet signálů Pro 5 stavů to znamená 3 signály (4 < 5 < 8). Jenže 23 = 8, takže třemi signály pokryjeme celkem 8 stavů. 3 kombinace tudíž budou navíc. Těm se říká nevyužité stavy. Při kódování musí mít: • 1 stav -> 1 kombinaci signálů • 1 kombinace signálů -> 1 stav Pro zakódování 5 vstupních stavů vytvoříme následující kód: I0 I1 I2 I3 I4 x2 · x1 · x0 x2 · x1 · x0 x2 · x1 · x0 x2 · x1 · x0 x2 · x1 · x0 000 001 010 011 100 Kde je 0, tam je x a kde je 1, tam je x. I5, I6, I7 jsou ty tři nevyužité stavy, takže je kódovat nebudeme. 2.14.9 Návrh sekvenčního obvodu Kódování stavů Pokud bychom chtěli zakódovat Mealyho automat z úvodu, pak by to bylo: Vstupní kód: I0 I1 I2 x1 · x0 x1 · x0 x1 · x0 000 001 010 Vnitřní kód: S0 S1 S2 78 Q1 · Q0 Q1 · Q0 Q1 · Q0 000 001 010 Chapter 2. Otázky CESR, Release Tahle tabulka je jenom graf přepsaný do rovnic a za stavy je zde dosazený vstupní/vnitřní kód. Budící funkce Ted’ si musíme zvolit klopné obvody, takže bud’ D/T/JK... Jde to s kterýmkoliv typem, ale pro D budou jednodušší budící funkce. Tady zase platí to, co jsem psal u čítačů. Zvolíme si tedy D. Z tabulky přechodů kousek výš musíme napsat rovnice pro D1 a D0. Píše to stejně jako když máme tabulku 1/0 a píšeme logickou funkci. Takže hledáme ty řádky, kde D1 = 1. To je řádek 3 a 6 (není tam negace). A bereme starý stav: D1 = Q1 · Q0 · x1 · x0 + Q1 · Q0 · x1 · x0 A pro D0 by to byly řádky 1 a 5. Pokud bychom to chtěli udělat s T místo D, tak musíme vybírat ty řádky, kde se Q mění ze starého stavu na nový. Takže pro T1 řádky 3 a 7, tam se Q1 mění (z 1 do 0 nebo z 0 do 1, ale mění). Pro JK bychom museli udělat jednu funkci pro přechody z 0 do 1 a druhou pro přechody z 1 do 0, ale v každém případě úplně stejným způsobem. A tím by byl návrh téměř kompletní. Pak už jenom z rovnic nakreslit schéma a je to. 2.14. Sekvenční obvody 79 CESR, Release 2.14.10 Časování Maximální frekvence CLK TCLK ≥ tpCQ + tpKmax + ts fCLK = 1 TCLK tpKmax - maximální zpoždění kombinačních obvodů tp CQ - doba překlopení KO (od CLK po ustálení výstupu Q) ts - doba předstihu KO Proč Takhle vypadá sekvenční obvod. Když přijde impulz CLK, tak se překlopí KO a trvá to tp CQ. Potom signály doputují ke kombinačním obvodům, kde se propletou, pak se se počká na odeznění hazardů a to trvá tpKmax (od konce KO do konce kombinačních obv.). Potom pro další cyklus je potřeba dodržet dobu předstihu těch KO, takže tady se přičte ts . 80 Chapter 2. Otázky CESR, Release Doba předstihu/přesahu Z toho, co je napsáno v předchozím odstavci, můžeme hned určit dobu předstihu sekvenčního obvodu. Takže se změní vstup, po tpKmax se ustálí budící signály E, pak musíme počkat ts kvůli KO a pak můžeme změnit vstup a kvůli tomu potřebujeme další impulz CLK. Takže celkem musíme počkat: tss ≥ tpKmax + ts A než se zase rozhodneme vstup změnit, musíme počkat dobu přesahu sekvenčního obvodu. Každý KO má dobu přesahu th , to jsme si řekli už v kapitole klopné obvody. Pak ale víme, že kombinačním obvodům to taky chvilku trvá, takže už můžeme sázet vstupy, ještě než oni skončí. Minimální doba, za kterou to stihnou, je tpKmin . O tuhle dobu se nám to tedy zkrátí: ths ≥ th − tpkmin 2.14. Sekvenční obvody 81 CESR, Release 2.14.11 Nastavení počátečního stavu Funkce tohoto obvodu: • Základní je hysterezní člen, odpor a kondík. Při náběhu napájení je napětí na kondíku malé, takže hysterezní člen má na svém výstupu 0. Jakmile se kondík dostatečně nabije, hysterezní člen se překlopí a KO se přestane nulovat. • Dioda umožňuje vybít kondenzátor v případě krátkodobého výpadku napájení. • Tlačítko vnutí 0 na vstup hysterezního členu a vyvolá tak reset od uživatele. • Člen s otevřeným kolektorem umožňuje reset vyvovat obvodům (ne-člověk). To se hodí u větších systémů (jako třeba když programujete arduino, taky se dá resetovat softwarově i hardwarově). 2.15 Metastabilita Metastabilita a její projevy v sekvenčních obvodech. Vzorkovače, jejich činnost a spolehlivost, vliv souběhů signálů. Předávání dat mezi nesynchronními systémy (sféry synchronizace). Korespondenční provoz (“handshake”) - princip a obvodové řešení (pomalý zdroj dat, rychlý příjemce). 82 Chapter 2. Otázky CESR, Release 2.15.1 Co to je Metastabilita je jev, kdy v důsledku špatného časování signálů nastane na KO stav, který nemůžeme předvídat. 2.15.2 Dvojitý vzorkovač Na grafu vidíme, že impulz na D1 začíná zhruba ve stejnou dobu jako hrana CLK. Jenže to je jasně nedodržená podmínka časování. Ten impulz D1 měl být stabilní už dobu předstihu (ts ) před hranou CLK. Z toho jsou možné dvě situace: 1. KO se na chvíli bude snažit se přepnout, ale nepodaří se to, takže po první periodě CLK nebude vstupní signál D1 zaznamenám. V druhé periodě už vidíme, že je D1 stabilní, takže se KO překlopí správně. To znamená, že se celý průběh o jeden takt zpozdí. 2. KO se přeci jenom překlopí a po první periodě CLK bude D1 na výstupu Q1. V tom případě v druhé periodě bude signál dál pokračovat přes druhý KO. Z toho vyplývá, že na Q2 bude vždy správně časovaný signál. Důležité je, že na Q1 nemůžeme předvídat stav po první periodě, a tudíž za to ani nemůžeme postavit další obvody na zpracování. Proto je tam druhý KO, za kterým už bude signál správně, i když nemůžeme odhadnout, jestli bude o takt zpožděný nebo ne. 2.15. Metastabilita 83 CESR, Release Podmínkou, aby dvojitý vzorkovač fungoval je, že perioda CLK musí být větší než doba trvání metastabilního stavu. Jenže tahle doba není známá. Závisí na době mezi hranou CLK a hranou vstupního signálu a to přece jenom nemůžeme spolehlivě určit. To znamená, že žádný vzorkovač nefunguje na 100%. A aby se vstupní signál vůbec zaznamenal - jak je vidět na obrázku - musí být jeho trvání dlouhé alespoň dvojnásobek periody CLK (btw na obrázku vidíme vlastně jenom půlku periody). Takže vlastně frekvence vzorkování (CLK) musí být aspoň 2x vyšší než frekvence vzorkované signálu (Zase ten Shannon). No a pokud máme signálu víc (říká se tomu vektor), tak už nám dvojitý vzorkovač nepomůže. Pak se totiž může změnit 1 z X vstupů dřív než ostatní, např.: 1000 -> 0000 -> 0111. Takže dekadicky to mělo být z 8 na 7, ale mezitím se tam objevila 0! Wow. No kdyby to měly být třeba souřadnice rakety, tak útočník sestřelí sám sebe... 2.15.3 Handshake 84 Chapter 2. Otázky CESR, Release Jak to funguje: 1. RQ (request) signál požádá o data. Tím nastaví RS vlevo na 1, takže SD (Send Data) = 1. 2. Levá strana pošle data do registru a přijde signál ACK (Acknowledge - potrvrzení), že jsou data v pohodě. Tím se zároveň nastaví pravý RS na 1, tedy DV (Data Valid) = 1. No a zároveň se ještě levý RS překlopí do 0, takže SD = 0, aby nikdo nic neposílal. 3. Ted’ si příjemce dat zjistí, jestli DV = 1 a když jo, tak si data může v klidu přečíst. Až si je zchroustá, nastaví RQ = 1, čímž se vynuluje pravý RS a DV = 0, takže nemůže nic číst, dokud zase nedojdou nová data. Takže když to shrnem: zleva se hrnou data, zprava se čtou. Když přijdou data, zůstanou v registru, dokud je příjemce nepřečte. To znamená, že zdroj dat čeká. Teprve až když si příjemce řekne, tak mu pošle nová data. Když by teoreticky zdroj mohl dodávat data rychleji, než je příjemce může zpracovávat, nic se neděje, protože je pošle vždy, až když si o ně příjemce řekne. V opačném případě, kdy bude zdroj pomalý a příjemce rychlý, se taky nic neděje, protože příjemce má hotovo, pošle RQ, takže zdroj má SD = 1. Jenže zdroj ještě není ready, takže nenastaví ACK na 1, tudíž příjemce čeká. 2.15.4 Synchronizace více subsystémů Máme dva (nebo víc) systémy, každý zpracovává data. Každý je vyplivne po jiné době, takže je nemůžeme jen tak spojit dohromady. Vyřešíme to tak, že tam přidáme nějaký kousek, který zaručí, že budou všechny obvody dostávat a vydávat data, kdy mají. 2.15. Metastabilita 85 CESR, Release FBx jsou funkční bloky, tj. to, co zpracovává data. Každý blok má svůj registr, kam mu ta data připravíme. Samozřejmě každý blok má vstup DI a výstup DO. No a dole je Generátor synchronizačních impulzů. Ten řídí to, kdy se data kam posouvají. Jak vidíme, jeho výstupy jsou signály WR (write). 86 Chapter 2. Otázky CESR, Release Na grafu vidíme, že generátor vytvořil WR1, čímž se vstupní data na DI1 zapsala do registru FB1 a začalo zpracování. Po zpracování se data objevila na výstupu DO1 a generátor vytvořil WR2, který data zase předal FB2. Opět je potřeba dodržet podmínky časování, takže data na DI musí být stabilní před dobou předstihu a ještě celou dobu přesahu. Samozřejmě, že když máme spoustu bloků a každý jinak rychlý, bychom mohli synchronizovat podle toho nejpomalejšího, ale to by se zpomalil celý systém. Proto stačí, aby každý FB měl výstupní signál, který říká, že už skončil zpracování. Všechny tyhle signály nacpeme generátoru synch. impulzů a on pak může posouvat data vždy po dokončení dílčího zpracování. Říká se tomu variabilní časování. 2.16 Pipeline Pipeline, vlastnosti, zrychlení systému, vedení signálů přes registry. Pipeline je způsob, jak urychlit zpracování nějakého signálu. Spočívá v rozdělení systému do sekcí. Každá z nich má svoje zpoždění tp a součet všech logicky dá dohromady zpoždění celého systému. Mezi oddělené kousky se pak dají registry: 2.16. Pipeline 87 CESR, Release A všechny registry mají společné CLK. To znamená, že jedním CLK se posunou data mezi všemi sekcemi. Jinak řečeno: 1. 1. sekce data zpracuje a má je připravená na výstupu 2. CLK zapíše data do registru a 1. sekce si dál hledí svého. Ve stejném okamžiku už ale 2. sekce zpracovává nová data. 3. Dalším taktem se to opakuje, takže data z bodu 1. budou ted’ u třetí sekce Takhle to prolézá celým systémem (pipeline - trubka). • V tpi je zahrnuto i odeznění falešných impulzů. • Signály na vstupu registru musí být stabilní minimálně ts před hranou CLK. • tpCQ trvá překlopení KO registru • Každá sekce má jiné zpoždění, takže musíme vzít to nejvyšší - tpM AX 88 Chapter 2. Otázky CESR, Release Periodu CLK tudíž můžeme určit součtem těchto tří dob: TC LK ≥ tpM AX + ts + tpCQ No a pokud použijeme tu nejmenší periodu (nejvyšší frekvenci), tak můžeme spočítat dobu, za kterou data projdou celou pipeline: tDD = N · tpM AX + N · (ts + tp CQ) N je počet sekcí. Každá má ts a tpCQ , takže se to jednoduše vynásobí. Samozřejmě by šlo tpM AX taky hodit do druhé závorky, ale je tu asi naznačeno, že je to něco jiného. Kdybychom použili původní systém bez pipeline, tak by namísto N · tpM AX byla suma všech tp : PN tpc = 1 tpi To by logicky znamenalo, že jsme systém spíš zpomalili. Jenže, když do původního systému budeme cpát data pravidelně, tak: 1. Musíme přivést data 2. Počkáme tpc 3. Data lze zpracovávat v dalších blocích 4. A můžeme přivést další data a opakuje se to od 1. Ale když tam dáme pipeline, tak můžeme cpát data ne s periodou tpc , ale s periodou TCLK , která je podstatně kratší. A ve stejném rytmu se budou zpracovaná data objevovat na výstupu. Musí tam teda ty data ale plynout pravidelně. Pak se dá spočítat celkové zrychlení: apl = P tpi TCLK Takže např. sekce se zpožděními: 7, 7, 6, 8, 10 ns, tpCQ = 4ns a ts = 2ns. TCLK spočítáme na (minimálně) 16 ns 38 (62.5 MHz). Zrychlení bude: apl = 7+7+6+8+10 = 16 = 2.375 16 Zrychlení může být i N, tedy podle počtu sekcí, ale to se málokdy stane, že by měly všechny sekce stejné zpoždění. 2.17 Paměti Paměti. Paralelní a sériový přístup. Pamět’ové obvody RAM statické, seskupení a ovládání. Obvody dynamické (DRAM, SDRAM), ovládání, obnovování obsahu, typické průběhy cyklů, práce po stránkách, latence. Paměti ROM, (EPROM), EEPROM, FLASH, programování obsahu a mazání u EEPROM a FLASH. Paměti FLASH „NOR“ a „NAND“. Speciální typy pamětí - FIFO, dvojbránová. Arbitrážní obvody u DPM. Tuhle kapitolu jsem si dovolil rozdělit - je toho dost, takže to snad takhle bude přehlednější. 2.17.1 Energeticky závislé Paměti. Paralelní a sériový přístup. Pamět’ové obvody RAM statické, seskupení a ovládání. Obvody dynamické (DRAM, SDRAM), ovládání, obnovování obsahu, typické průběhy cyklů, práce po stránkách, latence. Paměti ROM, (EPROM), EEPROM, FLASH, programování obsahu a mazání u EEPROM a FLASH. Paměti FLASH „NOR“ a „NAND“. Speciální typy pamětí - FIFO, dvojbránová. Arbitrážní obvody u DPM. Vybavovací doba - tAC - doba od začátku čtecího cyklu do vydání platných dat. 2.17. Paměti 89 CESR, Release Paralelní vs. sériový přístup Paralelní Tady vidíme, že máme vstup ADR na adresu, ten je vícebitový, řídící signály (R/W’) a vstup pro data (ty jsou také vícebitové). Pokud jsou DI a DO sloučené, pak určitě budeme potřebovat další řídící signál, který určí směr. (No ono by možná stačilo R/W’ i na tohle...) 90 Chapter 2. Otázky CESR, Release Sériový Tady se používá třívodičové spojení pro SPI. Podle wiki se to používá třeba pro připojení SD karet. O SPI se víc mluví v MPP. V podstatě tu jsou ty vodiče takhle: • SI - slave in • SO - slave out • SCK - CLK Master v tomhle případě bude asi něco v PC, co bude řídit operační systém... 2.17. Paměti 91 CESR, Release Statické RAM (SRAM) Vybavovací doba těchto pamětí jde i pod 10 ns. Jsou velmi rychlé a používají se pro cache procesorů. Data se ukládají pomocí kladné zpětné vazby, což je takový BKO (bistabilní KO). Bud’ ho přepneme do 1 nebo do 0, podle dat. A on si tu hodnotu pamatuje, dokud ji zase nepřepíšeme. Řídící signály jsou tady: • CS’ - chip select • OE’ - output enable • WR’ - write (někdy taky WE’ - write enable) CS’ 1 0 0 0 OE’ 0 1 WR’ 1 0 1 funkce čtení zápis - DI/DO Z DO DI Z Icc nízký plný plný plný Z - stav vysoké impedance Nezapomeňte, že jsou ty řídící signály v negaci, takže jsou aktivní v 0. 92 Chapter 2. Otázky CESR, Release Čtení Takže když chci data číst: 1. Odblokuju obvod - CS’ = 0 2. Povolím výstup - OE’ = 0 3. Zablokuju vstup - WR’ = 1 (co se tam má co zapisovat, když chci číst) 4. Na výstupu DI/DO (pokud jsou společné, jinak jenom DO) budu mít připravená data Tady je vidět ta doba tAC - od té doby, co jsem ADR řekl, jaká data chci, do té doby, než data vylezou na DO. tCZD - jak dlouho trvá než se projeví CS’ tOZD - doba od OE’ po data Imho to CZD bude znamenat něco jako C - chip select, Z - vysoká impedance, D - data 2.17. Paměti 93 CESR, Release Zápis U zápisu je to maličko složitější: tAW - doba odstupu zápisového pulzu od ADR tW P - trvání zápisového pulzu tDS - předstih dat kolem zápisového pulzu tDH - přesah dat kolem zápisového pulzu Jinými slovy, data jsou na DI připravená od začátku. ADR vybere, kam se zapíše. Pak musím počkat tAW , než můžu aktivovat WR’. Jak se WR’ aktivuje, data se začnou zapisovat do paměti. Ted’ musí WR’ být pořád aktivní a to po dobu tW P . A ke konci, když už ho můžu zase deaktivovat, tak od začátku tDS do konce tDH se data nesmí měnit. 94 Chapter 2. Otázky CESR, Release Dynamické RAM (DRAM) Tady se k zapamatování používají kondíky. Kondík je bud’ vybitý nebo nabitý. To se zjistí komparátorem a referenčním napětím. Jenže ten kondík se vybíjí samovolně, takže se musí jednou za čas znovu dobít. DRAM je oproti SRAM levnější - pamět’ové buňky jsou jednodušší a proto se jich na stejnou plochu vejde víc. Na jeden bit je potřeba jenom jeden tranzistor a kondík. Ten kondík má kapacitu v řádu fF - femto Farad. To je 10−15 F. Fakt hodně málo. DRAM (resp. potom SDRAM) se používají jako hlavní pamět’ PC, telefonů, tabletů, PS, atd... U DRAM jsou také jiné řídící signály: • RAS’ - ovládání řádkové adresy • CAS’ - ovládání sloupcové adresy • R/W Čtení Čtecí cyklus pak taky vypadá jinak než u SRAM: 1. RAS’ zapíše řádkovou adresu do registru řádkové adresy (RAS’ je aktivní v 0, takže na doběžnou hranu). 2. Do čtecích zesilovačů se přivede napájení. 2.17. Paměti 95 CESR, Release 3. Řádkový dekodér vybere danou řádku a podle stavu jednotlivých buněk se překlopí čtecí zesilovače. 4. Ted’ se přivede adresa sloupce a signálem CAS’ se zapíše do registru (zase na doběžnou hranu). 5. Sloupcový dekodér vybere skupinu čtecích zesilovačů (jeden byte (no někdy třeba dva, podle toho, jak je definovaná velikost slova)). 6. Nakonec se odblokují 3s členy, aby se vyčtená data objevila na výstupu. tRAC - vybavovací doba - tady od hrany RAS’ do platných dat (podobně jako tAW u SRAM) - bývá kolem 50 ns tCAC - taky vybavovací doba, ale od hrany CAS’ tRH - doba nabíjení sloupců tRC - celková doba čtecího cyklu - byvá kolem 100 ns (takže jo, DRAM je fakt pomalejší) 96 Chapter 2. Otázky CESR, Release Zápis Ten rámeček u dat je oblast, kde se data už nesmí měnit. Jinak to je podobné jako u čtecího cyklu. Tj. RAS’ -> WR -> CAS’. Obnovování nábojů na kondíkách Dělá se to tak, že se jednou za čas někam strčí obnovovací cyklus. Vždycky při čtecím nebo zápisovém cyklu se totiž obnoví všechna data na řádce. Takže stačí dodat adresu řádku, aktivovat RAS’ a řádka se obnoví. Jenže my potřebujeme obnovovat celou pamět’, ne jen to, co zrovna čteme. Takže existuje několik možností: • Blokové obnovování (burst refresh) - prostě se proleze celá pamět’ a obnoví se řádek po řádku (ale trvá to dlouho) • Obnovování rozložené v čase (time-distributed refresh) - namísto obnovení celé paměti se obnoví kousek, pak zase kousek a pak zase kousek a mezitím se zřejmě dá číst i zapisovat • Skryté obnovování (transparent refresh) - tady to řídí procesor tak, že vždycky někam mezi čtecí a zápisové cykly hodí ty obnovovací, když se pamět’ nevyužívá • Nedělat to vůbec - pokud se čte celá pamět’, pak to není třeba (pamět’ grafické karty - ten obraz se tam asi mění celý, takže není třeba nic obnovovat) Na ty obnovovací cykly se používá čítač adres - ten čítá a projíždí tím všechny řádky. Když se k tomu přihodí ještě multiplexor a řídící obvody k tomu, vznikne řadič dynamické paměti. Řadič obsluhuje celou pamět’. Jenom dostává povely, co kam zapsat, co odkud číst. Všechny cykly a časování a obnovování už je na něm. 2.17. Paměti 97 CESR, Release Čtení po stránkách Namísto vybrání kousku řádky vybere řadič celou řádku do čtecích zesilovačů. Pak se začne zvyšovat adresa sloupce, aby se mohla celá řádka přečíst byte po bytu. A samozřejmě tam ten řadič musí cpát CAS’. Takže zjednodušeně: když chci 8 bytů, tak je nebudu číst po 1 bytu, ale přečtu všech 8 a pak je po jednom šoupu ven. Takže namísto 8 čtení řádky je tam jenom 1 čtení řádky. Tím se celý čtecí cyklus urychlí. Synchronní DRAM (SDRAM) SDRAM funguje jako DRAM s jedním důležitým rozdílem - všechno je tu synchronní. Všechny řídící signály, adresové vstupy i datové vstupy/výstupy se hýbou v rytmu CLK. Díky tomu se taky může zajistit lepší spolupráce s dalšími obvody v systému (procesor, ...). Zrychlení se tady dosáhne tak, že jakmile se přečte řádka, začne vnitřní čítač zvyšovat sloupcovou adresu, a tudíž se data hrnou na výstup rychlostí CLK, což můžou být jednotky ns v periodě. To ale znamená, že se to vyplatí jen u čtení/zápisu většího množství dat. Říká se tomu dávkové čtení/zápis (burst read/write). MODE - registr režimu Matice buněk a ty věcičky okolo se nazývají pamět’ový blok (memory bank). Těch bývá několik (2, 4, ...). To taky urychluje pamět’, protože se může z jednoho číst, do druhého zapisovat, ve třetím může zrovna probíhat obnovovací cyklus. 98 Chapter 2. Otázky CESR, Release Čtení/zápis 1. Při náběžné hraně CLK se přivede adresa bloku (MSB) a adresa řádku 2. Zároveň se přivede RAS’ 3. Máme zapsanou adresu řádku a po dvou taktech přivedem adresu sloupce a CAS’ 4. Tím se ale - narozdíl od DRAM - přednastaví čítač adresy sloupce 5. Současně s CAS’ přivádíme WE’, pokud chceme zapisovat 6. Po chvilce máme data na výstupu, yay! A ta chvilka - od CAS’ do prvních dat - se nazývá latence, nebo doba latence. Počet vydaných slov (at’ už je to 1 byte nebo 2) se nazývá délka dávky. Je to naprogramováno v řídících obvodech a může to být 1, 2, 4, 8 nebo prostě celý řádek. 2.17. Paměti 99 CESR, Release DDR (SDRAM) DDR je vylepšená SDRAM. DDR znamená Double Data Rate. Čítač sloupců je tady inkrementován navíc i doběžnou hranou CLK, takže 2x během jedné periody CLK. Proto Double. 2.17.2 Energeticky nezávislé Paměti. Paralelní a sériový přístup. Pamět’ové obvody RAM statické, seskupení a ovládání. Obvody dynamické (DRAM, SDRAM), ovládání, obnovování obsahu, typické průběhy cyklů, práce po stránkách, latence. Paměti ROM, (EPROM), EEPROM, FLASH, programování obsahu a mazání u EEPROM a FLASH. Paměti FLASH „NOR“ a „NAND“. Speciální typy pamětí - FIFO, dvojbránová. Arbitrážní obvody u DPM. 100 Chapter 2. Otázky CESR, Release Read only memory (ROM) Když to porovnáme s DRAM, jsou téměř totožné. Akorát tu odpadají cesty pro zápis, protože je read-only. Jedna buňka tu je taky dost podobná, ale přece jiná. Je tu akorát trandík mezi řádkem a sloupcem: 2.17. Paměti 101 CESR, Release Při výrobě se funkční tranzistory vyrobí s tenkou vrstvou oxidu křemíku, zatímco ty nefunkční s tlustou vrstvou. Jak je ta vrstva tlustá, tak se nedokáže vytvořit vodivý kanál. Takže když tam naženeme napětí, tak tam zůstane, zatímco u funkčního projde na zem. Tím se rozliší 0 od 1. Programmable ROM (PROM) Dřív se přepalovaly spojky velkými proudy. Potom někoho napadlo to udělat v technologii CMOS (hallelujah): Mezi řídícím hradlem a zbytkem je vložená další vodivá vrstva. Je ale izolovaná oxidem křemíku. Říká se jí plovoucí hradlo (floating gate). Na tohle hradlo lze naházet elektrony, takže to hradlo bude nabité záporně. No a pokud vybudíme řádek (dáme tam log. 1), tak: • U nenabitých plovoucích hradel se vytvoří kanál a sloupec se zkratuje na zem - log. 0 • U nabitých se to kladné napětí sníží o to, co je nabité na plovoucím hradle, a tím je to napětí malé a nestačí k vytvoření kanálu - log. 1 Jak tam dostat elektrony 1. Lavinová injekce - na koncích kanálu je elektrické pole, které elektrony urychlí. Energie je tak vysoká, aby elektrony dokázaly vytvořit omezený lavinový průraz. Zároveň se vychýlí kladným napětím na řídícím hradle. Takže mají dohromady takovou energii, aby proletěly tou vrstvou oxidu a dostaly se na plovoucí hradlo. Jmenuje se to FAMOS (Floating-gate Avalanche-Injection MOS). Doba programování se pohybuje v jednotkách mikrosekund. 102 Chapter 2. Otázky CESR, Release 2. Použití kvantového jevu - elektrony přemístíme přes vsrtvu oxidu, naženeme ho tam vyšším napětím. Že prý stačí kolem 20V. Upp se značí programovací napětí. Doba programování se pohybuje v jednotkách milisekund - to je hodně. Tomuhle se prý říká tunelování elektronů. Vlevo je nabití, vpravo vybití. Erasable PROM (EPROM) Používá buňku FAMOS. K programování je potřeba programátor - zařízení, které dodá programovací napětí (tady okolo 12V) a nacpe data do paměti. Trvanlivost dat bývá desetiletí - záleží na teplotě. Vymazání se provádí pomocí UV záření - zase je na to potřeba extra mašinka - o vlnové délce 254 nm. Trvá to asi 15 minut. Záření dodá elektronům energii a ty jsou schopné se osvobodit ze svého vězení v podobně plovoucího hradla. A pak budou všude samé log. 1. Cyklů mazání/programování může být u EPROM jen málo - desítky. Navíc to musíte furt tahat z DPSky a nesmíte ohnout ani ulomit vývody. Takže pro dnešní použití na nic. Electrically Erasable PROM (EEPROM) Tady se využívá tunelování v obou směrech. Buňka má 2 tranzistory - pamět’ový a výběrový: 2.17. Paměti 103 CESR, Release Pamět’ový tr. má plovoucí a řídící hradlo, zatímco ten výběrový plovoucí nemá. Mazání a opětovné programování může být provedeno víckrát než u EPROM, cca to jsou desítky až stovky tisíc cyklů. FLASH FLASH kombinuje lavinovou injekci pro naprogramování s tunelováním pro mazání. 1 buňka = 1 trandík. Je to ale tak jednoduchý, že nejde mazat bit po bitu, ale musí se mazat po blocích (sektorech). Sektor se vybírá MSB adresy. Programování je rychlé (jako blesk - flash!), ale mazání pomalé. Takže když chceme přepisovat, musí se nejdřív smazat blok a pak přepsat celý znovu (takže asi se data vyčtou, kousek změní a to se zapíše). Jelikož tam je jenom jeden tranzistor, tak se ta pamět’ dá dobře nahustit (proto jsou flashky tak levné). Přepisovací cykly jsou omezené zhruba jako u EEPROM, takže 10k, 100k, ... cyklů. Tohle číslo platí pro buňku, ne pro celou pamět’. Takže když si to řadič nebo filesystem (nebo kdo) dobře rozprostře, tak celá pamět’ vydrží mnohem déle (to se dělá dneska u SSD, ale nesmíte ho mít úplně plnej). Programování je celkem snadné díky tomu, že už v čipu FLASH paměti je integrovaný řadič programování. Kromě toho i větší napětí na tunelování je přítomno, dělá to nábojová pumpa (nebylo to v AESR?). Tzn. že pro svojí aplikaci si do obvodu švihnete FLASHku, připojíte Ucc a zbytek už se děje uvnitř. Čtení probíhá jako u SRAM. Zápis a mazání je odlišné podle výrobce. Zápis je pomalejší než u RAM. Data se nasunou do registru, což je rychlá operace, a pak se jeho vývody propojí se sloupci a data se nasunou do buněk. Ale pořád je to pomalejší. Vybavovací doba je zhruba 10x vyšší než u SRAM, kde to bylo 10 ns, takže tady bych čekal 100 ns. Trochu se to povedlo zrychlit jako u SDRAM (vnitřní čítač sloupcové adresy). NOR FLASH Až do ted’ se povídalo o NOR FLASH. Ta se nazývá NOR, protože zapojení tranzistorů připomíná hradlo NOR. 104 Chapter 2. Otázky CESR, Release NAND FLASH Tady to pro změnu připomíná NAND. Spojení je tady jednodušší, horší je ale přístup k bitům, už je nelze číst po jednom. Hlavní výhoda NAND FLASH je vysoká hustota buněk a tudíž i nižší cena. To jsou všechny ty naše flashky. Podle všeho je NAND pomalejší ve čtení, ale rychlejší v zápisu než NOR. 2.17.3 Speciální paměti Paměti. Paralelní a sériový přístup. Pamět’ové obvody RAM statické, seskupení a ovládání. Obvody dynamické (DRAM, SDRAM), ovládání, obnovování obsahu, typické průběhy cyklů, práce po stránkách, latence. Paměti ROM, (EPROM), EEPROM, FLASH, programování obsahu a mazání u EEPROM a FLASH. Paměti FLASH „NOR“ a „NAND“. Speciální typy pamětí - FIFO, dvojbránová. Arbitrážní obvody u DPM. Dvojbránová pamět’ (DPM) DPM - dual-port memory. Je to SRAM, která umožňuje čtení ze dvou bran. Každá brána má zvlášt’ adresu, data a řídící signály. Účel paměti je ve výměně dat mezi dvěma částmi systému. Tyhle dvě části pak vůbec nemusí být v synchronismu. Vlastně to je jako komunikace mezi dvěma procesy v PC. 2.17. Paměti 105 CESR, Release Takhle by to mohlo fungovat pouze, pokud se dokážou ty dvě části L/P střídat, takže když L čte, P musí zpracovávat, a pak se prohodí. A to taky nejde úplně vždycky. Pro lepší přístup se používá následující verze: 106 Chapter 2. Otázky CESR, Release Takže každá buňka nemá jenom 1 sloupec, ale 2 sloupce. Takže lze číst zároveň ze dvou stran. Co se ale nesmí stát, je zápis z obou stran. Pokud jsou data stejná, tak OK, ale pokud nejsou, nastane nedefinovaný stav. Není možné zaručit, co se tam nakonec uloží. Jelikož jsou adresy i řídící signály nezávislé, je možné číst i zapisovat na různých místech zároveň. Jediný problém je zápis na stejné místo, to se musí vyloučit. Arbitrážní obvody To je obvod, který právě řeší zápis ze dvou (nebo více) stran do stejného místa. Pokud se tedy sejdou dva požadavky, dostane prioritu ten první. Pokud přijdou současně, tak náhodně. Důležitý je hlavně adresový komparátor. Pokud arbitrážní obvod přijde na to, že uživatel nemůže zapisovat, hodí mu na BUSY’ 0. FIFO First in - first out. Tedy fronta (queue). Tady odpadají adresy - pořadí je vždy jasné. Data se většinou skládají na pevné pozice a posouvá se jenom ukazatel na ně (pointer). FIFO se používá jako vyrovnávací pamět’ mezi dvěma systémy, které krátkodobě nemusí fungovat ve stejném rytmu. Ale nejde to pořád. Pokud máme systém A -> FIFO -> B, tak je jasné, že když bude A trvale rychlejší, tak se FIFO brzo zaplní. FIFO paměti můžou obsahovat indikaci naplnění/vypráznění: 2.17. Paměti 107 CESR, Release • FF - full FIFO • EF - empty FIFO • HF - half empty FIFO Takže je dobré si před zápisem zkontrolovat, jestli není FIFO plná, a pokud je, tak se zápisem počkat. FIFO je vlastně DPM, ale jedna brána umožňuje jenom zápis a druhá jenom čtení. Adresy se generují čítači. Akce Zápis Zápis Čtení Zápis Čtení Atd.. Čítač zápisu 1 2 2 3 3 Čítač čtení 0 0 1 (čtu data z pozice 1) 1 2 Kromě toho tam je zase komparátor adresy, který zjistí, jestli je pamět’ plná/prázdná a když tak zablokuje jeden z čítačů. Existuje i synchronní verze, která zavádí CLK podobně jako SDRAM. 2.18 Programovatelné logické obvody 2.19 Rušení v elektronických systémech Rušení v elektronických systémech. Vnější rušení, cesty pro vstup rušivých signálů, jejich omezení. Optrony, diferenční přenos. Vnitřní rušení - rozvod napájení, přeslechy, sběrnice, dlouhé spoje. 2.19.1 Vnější Vnější rušení proniká do obvodů z míst, jako jsou WiFi, mobilní sítě, prostě všechno co lítá vzduchem. Jelikož mají elektronické systémy svoje vstupy a výstupy, bondování čipu k pouzdru, cestičky na DPS, tak se tyto kusy kovu chovají 108 Chapter 2. Otázky CESR, Release jako anténa. Jelikož se dnešní systémy taktují poměrně vysokou frekvencí (GHz) a provozují na sníženém napájecím napětí (např. 3.3 V), tak jsou vůči tomuto rušení náchylné. Čím menší napětí potřebujeme k přepnutí tranzistoru, tím snažší samozřejmě bude ho přepnout z vnějšku nějakým rušením. Analogové signály jsou obecně náchylnější k rušení, takže je dobré co nejdříve přejít na digitální. Proto se vyrábějí čidla rovnou digitální (teplotní a kdovíjaká...). Čidlo naměří hodnotu (analogově) a hned v sobě ji převede na číslicový signál a z pouzdra už vede jenom to číslo. Galvanická vazba Rušení ze sítě asi všichni známe. To by mohlo pronikat do napájecích obvodů, a jak víme, na napájení závasisí některé vlastnosti hradel, např. rychlost přechodu 0/1. Ale i bez toho to může zahýbat s 1/0 v celém systému. Odstranění dosáhneme galvanickou vazbou, tj. trafo: Cívky jsou navinuty proti sobě, což znamená, že se magnetické pole požere. Ty cívky právě to RF rušení odfiltrují. 2.19. Rušení v elektronických systémech 109 CESR, Release Kapacitní vazba Takže máme tady dva nějaké členy, které jsou spojené a mezi tím spojením a něčím venku působí parazitní kapacitní vazba. Může to být cokoliv, to je v tuhle chvíli jedno, ale mění se tam napětí v čase. No a z YTE víme, že: ic = Cp · du dt A takovýhle parazitní proud nám proniká do vedení. Jelikož má předchozí člen svůj výstupní odpor, vznikne nám tam navíc ještě úbytek napětí: u = ic · Ro Řešení: 1. Snížit výstupní odpor - toho docílíme použitím výkonových budících členů. 2. Snížit/potlačit parazitní kapacitu - to můžeme udělat několika způsoby: (a) Použít stínění - to by šlo na vnější vodiče, ale co cestičky na DPS? (obrázek nahoře) (b) Kroucení - natočíme signálový vodič se zemnícím do spirály (c) Střídání signálového vodiče se zemnícím na DPS Kroucení: Střídání vodičů: 110 Chapter 2. Otázky CESR, Release Induktivní vazba Je častá u průmyslových systému u 50 Hz. Prostě a jednoduše: magnetické pole indukuje proud, kam jenom může. Jenže nemůžeme použít magnetické stínění (prý to jde jen u VF). Takže se snažíme, aby dopad byl co nejmenší. Víme, že magnetický tok se zvyšuje s indukcí a plochou: Φ=B·S Indukce je tady v tom případě zdroj rušení, takže ten neovlivníme. Ale pokusíme se ovlivnit plochu, tzn.: 1. Vodiče táhneme blízko sebe (v jednom kabelu nejlépe) - tím se samozřejmě zmenší celková plocha 2. Vodiče můžeme kroutit, čímž taky trochu eliminujeme rušení 3. Použijeme diferenční přenos 4. Nebo použijeme optron Diferenční přenos 2.19. Rušení v elektronických systémech 111 CESR, Release Pokud se nějaké rušení naindukuje na vodič, je nám to fuk. Komparátor vyhodnocuje rozdíl, takže my máme obě cesty zkreslené stejně, ale jejich rozdíl zůstává stejný. V případě vyššího napětí může dojít k průrazu vstupu diferenčního zesilovače (kolem 100V, nebo podle toho, jak je zesilovač konstruovaný). Optron Tohle řešení je pomalejší, do stovek kHz. Nicméně, rušení nám může způsobit akorát změnu intenzity diody. Ale na druhé straně ten fototranzistor jenom spíná a zřejmě když si zvolíme vhodnou úroveň, tak úplně eliminujeme rušení. 2.19.2 Vnitřní Přeslechy Přeslech je, že v důsledku vazby mezi vodiči se přenáší část signálu z jednoho vodiče na druhý. Samozřejmě ta vazba je v tomto případě elmag.: Řešením je vložit mezi signálové vodiče ty zemnící. Potom ta vazba nebude mezi signálovými tak silná, ale část půjdu na zem. Neznamená to ovšem úplnou eliminaci. 112 Chapter 2. Otázky CESR, Release Nepřizpůsobené vedení Dlouhé vedení při frekvencích v GHz znamená už kolem desítek cm. A jak víme, nepřizpůsobené vedení způsobuje odrazy. Funguje to jako vstupní obvod CMOS. Takže vyšší napětí než Vcc jde nahoru, nižší než nula na zem. Zůstane jen to, co má. 2.19. Rušení v elektronických systémech 113 CESR, Release Rozvod napájení Snahou je snížit impedanci vedení Z0 = q L C. Řešení: 1. Snažit se o co nejmenší počet ohybů. 2. Všechny ohyby tvořit zkosené nebo úplně oblé, namísto pravých úhlů. 3. Napájecí vodiče táhnout co nejblíž u sebe 4. Bezindukční kondenzátory kolem členů - krátké přívody, kapacita stačí desítky nF Ohyby vodičů: Vodiče u sebe: 114 Chapter 2. Otázky CHAPTER THREE DALŠÍ POZNÁMKY Zde jsou další poznámky, které se nevešly do otázek samotných, nebo by působily nepřehlednost. 3.1 CMOS logické členy 3.1.1 Negace Y =A Funguje to tak, že 1 na vstupu otevře tranzistor N a celé vstupní napětí jde do země. Tranzistor P je zavřený, takže se Ucc nemá jak dostat na výstup a Y bude 0. A opačně: pokud je A = 0, pak se otevře horní tr. P a napětí Ucc se objeví na výstupu. Současně tranzistor N bude zavřený, takže Ucc nemůže jít dolů na zem, může se objevit jedině na Y. 115 CESR, Release Todo doplnit další členy Krásně načasovaná reklama od hostingu (zobrazuje se dole pod stránkou) :’D 116 Chapter 3. Další poznámky CHAPTER FOUR SEARCH • search 117