Zadání 1. úlohy pro cvičen
Transkript
Úloha číslo 1: KOM pro vysílač navigační bóje Verze dokumentu 2016.V1.0 ze dne 30. září 2016 Obsah Zadání ............................................................................................................................................................................ 1 Objasnění zadání na příkladu KOM obvodu pro maják EA ........................................................................................... 2 Řešený příklad s dlouhou posloupností MHL2 .............................................................................................................. 7 Návrh logické funkce ................................................................................................................................................. 7 Ověření ve vývojovém prostředí Quartus a na vývojové desce Altera DE2 ............................................................ 11 Dodatek: ...................................................................................................................................................................... 13 Zadání Vytvořte kombinační obvod KOM, který překóduje posloupnost čísel binárního čítače na jednobitovou posloupnost morseovky, takže se na výstupu Y obvodu KOM objeví Vámi zadaná posloupnost nul a jedniček. Ta odpovídá Morseovu kódu čtyřpísmenného identifikátoru odvozeného od Vašeho jména (dle možností) jako zcela unikátního identifikátoru v rámci všech cvičení. Při jeho návrhu se navíc přihlíželo i k přibližně stejné složitosti pro všechny studenty (relativní složitost obvodu leží v intervalu <0,923; 1,077>). Upozornění: Úlohu každý řeší zvlášť, protože každý má jinou posloupnost. .Upřesnění požadavků Start Start-Stop Reset Čítač KOMx Stop Y Morseovka Posuvný registr LED diody Pozn. V úloze navrhujete pouze KOM, ostatní obvody najdete v knihovně Obrázek 1 - Principielní schéma KOM vytvořte ve dvou verzích, jako KOM1 v jazyce VHDL (=soubor typu *.vhd), kde přímo napíšete nalezené logické rovnice z Karnaughových map. Nic jiného než logické rovnice a definice signálů se v bloku architektury VHDL u KOM1 nepovolují. Teprve po odladění KOM1 vytvořte KOM2 jako samostatný Quartus II Block/Schematic File (=soubor typu *.bdf), kde rovnice přepíšete do logického schématu. V úloze si tak dobře ujasníte vztah mezi různými popisy logických obvodů a zjistíte, proč se pro obvody používá VHDL. V KOM2 smíte použít libovolný počet obvodů NOT, AND, NAND, OR, NOR, a XOR, symbolů pro vstupy (input), výstupy (output), logické 1 (VCC) a 0 (GND), avšak nejvýše jen jeden čtyřvstupový multiplexor. Výhody skýtající použití multiplexoru najdete v řešeném příkladu a budou i tématem 2. přednášky. Jiné typy obvodů než výše vyjmenované se v KOM2 nedovolují. KOM1 i KOM2 vyzkoušejte napřed pomocí simulátoru. Po vyzkoušené KOM1 i KOM2 udělejte i posuvný registr, takže Morseovka Vám poběží jako světelný had, a připojte bzučák, abyste morseovku slyšeli také ve sluchátkách. Úlohu v této podobě předveďte cvičícímu. Úloha musí obsahovat při předvádění jak KOM1, tak KOM2, mezi nimi lze přepínat multiplexorem řízeným přepínačem. Pozn. Není žádné omezení na testovací obvod pro předvedení KOM1 a KOM2. V něm lze použít cokoliv. 1 Objasnění zadání na příkladu KOM obvodu pro maják EA Maják EA, který byl vysvětlený na 1. přednášce, má zadanou posloupnost 010001011100. Čítač 0 1 2 3 4 5 6 7 8 9 10 11 KOMx-výstup STOP 0 0 0 0 0 0 0 0 0 0 0 1 Y vysílající morseovkou EA 0 1 0 0 0 1 0 1 1 1 0 0 Výstup KOM-STOP je v logické '1‘ jen v době posledního bitu posloupnosti, případně i v dalších následujících, ale ty nás nezajímají, protože se tyto výstupy neuplatní. Logické rovnice se navrhovaly na první přednášce. Obrázek 2 - Maják EA z první přednášky V nalezených rovnicích pouze přeznačíme D, C, B, A na X3, X2, X1, X0, aby se jasněji ukázalo, že bit je nejnižším (X0). Napíšeme tedy Y = (X0+X3).(X1'+X2); K rovnici doplníme výstup STOP ve stavu 11, zde stačí pomocí operace spojit bity AND, které jsou při stavu čítače 11 v logické jedničce, takový stav bude první. STOP = X3 . X1 . X0; Obvod nazveme KOM1ea, pro rozlišení od hlavní úlohy, a v jazyce VHDL napíšeme přímo jeho rovnice, viz 2. přednáška (v následujícím kódu jde o tučně vyznačené řádky). Nezapomeňte, že závorky jsou ve VHDL zcela nutné. 2 library ieee; use ieee.std_logic_1164.all; entity KOM1ea is port ( X0,X1,X2,X3 : in std_logic; STOP, Y : out std_logic ); end entity; architecture behavioral of KOM1ea is begin Y <= (X0 or X3) and (not X1 or X2); STOP <= X3 and X1 and X0; end architecture; Pro práci doma využijte s výhodou simulátoru - ten bude probrán na cvičení. Přeložíte samotný KOM1ea a ten simulujete pomocí souboru typu University program VWF (*.wvf - Vector Waveform File). Obrázek 3 - Výstup simulátoru V laboratoři si můžete funkci KOM1ea vyzkoušet třeba v zapojení dole, kde vidíte i stav čítače. Hodiny si generujete sami pomocí tlačítka KEY[2]. Hodiny mezi start_stop a čítačem jsou negované (NOT inst7 dole), aby se čítání provedlo při jedné hraně hodin (sestupné při stisku KEY[2]) a rozhodovalo se o následném stavu RUN (řízení čítání) při druhé hraně hodin (náběžné při uvolnění KEY[2]). Zamezí se tím zpoždění reakce start_stop o jeden hodinový cyklus, více přednášky. Obrázek 4 - Ruční generování hodin Pozor, pokud chcete použít KEY[3] místo KEY[2], můžete, ale musíte vložit i KEY[2], a nechat ho nezapojený, protože v Quartusu nelze přeskakovat v podobných řadách "pinů" FPGA, typu YYY[x]. 3 Obrázek 5 - Generování hodin pomocí KEY[3] Jakmile jste odladili KOM1, překreslete rovnice do schematického editoru. Obrázek 6 - KOM2 jako grafické vyjádření KOM1 Oba KOMx lze najednou otestovat v následujícím zapojení Obrázek 7 - Testování KOM1 a KOM2 pomocí pomaloběžného děliče Používá se zde již hodinový vstup 50 MHz, CLOCK_50, vydělený na pomaloběžné hodiny 1 Hz. Pro StartStop obvod se naopak používají rychlejší hodiny 2kHz, aby vstup reagoval i na krátké stisknutí. Výběr signálů STOP z KOM1ea a KOM2ea se řídí multiplexorem. 4 Obrázek 8 - Finální schéma pro předvedení Ve finálním zapojení zrychlíme frekvenci na 5 Hz, protože pomalá morseovka není příliš čitelná, přidáme multiplexor i na výstup a dále posuvný registr a bzučák. V této formě lze již předvést vyučujícímu. V návrhu je obvod shift18bus, který neexistuje v knihovně obvodů. Ten jsme si sestavili sami ze dvou knihovních obvodů a uložili ho do svého projektu pod názvem shift18bus. Když k němu vygenerujeme 5 symbolický popis (menu File -> Create / Update -> Create Symbols Files for Current File... ), můžeme ho vložit do schématu. Obrázek 9 - Náš vlastní obvod shift18bus sestavený ze dvou obvodů Obrázek 10 - Vložení našeho obvodu 6 Řešený příklad s dlouhou posloupností MHL2 Časování odpovídá normě pro Mezinárodní morseovku: tečka trvá 1 dobu; mezi tečkou a čárkou činí také 1 dobu; čárka má délku 3 doby; mezi znaky se klade pauza dlouhá též 3 doby. Proč posloupnost začíná 0 a končí dvojicí 00? Na začátku, ve stavu STOP, se nic nevysílá. Zato při trvalém běhu majáku (tlačítko START je pořád stisknuté) se objeví správná pauza 3 doby, neboť Vaše binární posloupnost začíná 0 a končí 00, takže při nepřetržitém vysílání bude poslední znak oddělený od prvního mezerou mezi znaky o délce tří dob, tj. 000. Jak převést jinou posloupnost? Běžně jsou známé různé mnemotechnické pomůcky: M jako mává, H jako hrachovina, L lupíneček, či žertovné tabulky, jako třeba alkoholická morseovka. Pro čísla nic není, ale jejich kódy mají jasnou strukturu. Zde nutno poznamenat, že mnemotechnické pomůcky se ve skutečné radiotelegrafii nikdy nepoužívaly, protože operátory by jedině zpomalovaly, takže jejich učení se naopak velmi přísně zakazovalo. Telegrafisté poslouchali morseovku podobně jako hudbu a vnímali znaky jako jednotlivé tóny melodie. Pro převod existují některé weby, např. http://morseovka.pitevna.cz/prevodnik/ Návrh logické funkce Pro zkrácení rovnic si zavedeme dočasné označení proměnných, abychom se vyhnuli psaní indexů, jejichž opomenutím se dělají časté chyby. Budeme psát KOM- označenívstupu: X0 X1 X2 X3 X4 X5 Naše tabulka: f e d c b a Nejdříve zadanou binární posloupnost přepíšeme do pravdivostní tabulky, viz další strana: 7 Stav 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 d 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 e 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 f 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Y (KOM výstup morsovky) 0 1 1 1 0 1 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 0 X X X X X X X X X X X X X X výstup STOP) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 X X X X X X X X X X X X X X Minimalizace logické funkce Karnaughovou mapou by byla velice složitá z tak velké pravdivostní tabulky. Využijeme raději dva postupy pro její zjednodušení. Pro výstup Y použijeme Shannonovu expanzi, zatímco pro STOP uplatníme znalost chování obvodu. 8 Začneme Shannonovou expanzí výstupu Beacon: Pravdivostní tabulku rozdělíme na 4 menší pravdivostní tabulky ("Shannon cofactors") po 4 proměnných s tím, že další dvě proměnné mají konstantní hodnotu, budou "splitting variables", viz 2. přednáška: a = 0, b = 0 Stav 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 c 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 d 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 e 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 f 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Y (KOM výstup morsovky) 0 1 1 1 0 1 1 1 0 0 0 1 0 1 0 1 ---------------------------------------------------------------------------------------------------------------------------------a = 0, b = 1 Stav 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 c 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 d 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 e 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 f 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Y (KOM výstup morsovky) 0 1 0 0 0 1 0 1 1 1 0 1 0 1 0 0 ---------------------------------------------------------------------------------------------------------------------------------a = 1, b = 0 Stav 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 c 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 d 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 e 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 f 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Y (KOM výstup morsovky) 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 ---------------------------------------------------------------------------------------------------------------------------------- 9 a = 1, b = 1 Stav 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 c 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 d 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 e 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 f 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Y (KOM výstup morsovky) 0 0 X X X X X X X X X X X X X X Nyní již řešíme minimalizace logických funkcí pomocí jednoduchých Karnaughových map se 4 proměnnými pro výstup Y (KOM výstup morseovky), které označíme Yab = f(c,d,e,f), kde a b budou čísla logických hodnot vstupů a, b. Nemusím řešit kontradikce Y11 = 0 10 Po výstup STOP vyžijeme chování obvodu. Víme, že čítač bude čítat od nuly až ke stavu STOP, poté se opět vynuluje. Náš stav STOP se generuje v čísle 49, které má kód: 4910 = 1100012 = 2^5 + 2^4 + 1 Číslo 49 musí být prvním číslem v číselné řadě 0 až 49, které bude mít jedničkové bity v 5., 4. a 0. bitu. Žádné jiné se nemůže objevit dříve, protože jinak by bylo větší než 49, což je v rozporu s povahou aritmetické číselné řady. Pro výstup Y (KOM výstup STOP) stačí tedy rovnice: Ověření ve vývojovém prostředí Quartus a na vývojové desce Altera DE2 Rovnice napřed ověříme ve VHDL Všimněte si, že v komentářích se nepoužívá diakritika, VHDL ji nezná! library ieee; use ieee.std_logic_1164.all; entity KOM1 is port ( X0, X1, X2, X3, X4, X5 : in std_logic; STOP, Y : out std_logic ); end entity; architecture behavioral of KOM1 is signal a, b, c, d, e, f : std_logic; signal Y00, Y01, Y10, Y11 : std_logic; begin -- Preznacime signaly, na rozdil od programovani se tím v hardwaru nevytvori nove promenne! a <= X5; b <= X4; c <= X3; d <= X2; e <= X1; f <= X0; Y00 <= (e and f) or (not c and e) or (not c and f) or (d and f); Y01 <= (not e and f) or (c and not d and f) or (not c and d and f) or (c and not d and not e); Y10 <= (c and e) or (d and e) or f; Y11 <= '0'; -- Naprogramujeme multiplexor -Y <= (not a and not b and Y00) or (not a and b and Y01) or (a and not b and Y10) or (a and b and Y11); -- Poznamka, VHDL zna i primy prikaz pro sestaveni multiplexoru, -- ktery muzete pouzivat v dalsich ulohach. Zde jen pro zajimavost: -- with std_logic_vector'(a & b) select -Y <= Y00 when "00", Y01 when "01",Y10 when "10", Y11 when "11"; STOP <= a and b and f; end architecture; 11 Návrh vyzkoušíme v simulátoru Obrázek 11 - Výstup simulátoru Pro spojení jednotlivých tabulek v symbolickém KOM2 použijeme s výhodou rovněž multiplexor, na jehož adresní vstupy přivedeme proměnné, podle nichž jsme prováděli Shannonovu expanzi, tedy a a b. Jednotlivé tabulky vytvoříme jako jednoduché čtyřvstupové logické funkce Yab=f(c,d,e,f). Ty pojmenujeme třeba podle hodnot a a b vstupů jako KOMa0b0, KOMa0b1 a KOMa1b0. Funkci KOMa1b1 nevytváříme, ta se redukovala na 0, tedy na uzemnění. Každou funkci můžeme případně samostatně otestovat v simulátoru, což je výhoda oproti nakreslení celé funkce v jednom schématu. Nakonec vytvoříme symbolické soubory pro naše KOMa0b0, KOMa0b1 a KOMa1b0. Vložíme obvody do nového schématu a pomocí multiplexoru z knihovny DCE/basic sestavíme výslednou funkci: Jak jsme se zmínili v úvodu, v našem případě: X0 odpovídá f, X1 odpovídá e, X2 odpovídá d, X3 odpovídá c, X4 odpovídá b, X5 odpovídá a. Kde provést změnu v symbolickém editoru? Stačí jen v označení vývodů (pins) nahoře sestaveného obvodu KOM Vlastní zapojení pro vyzkoušení obvodu je stejné jako u majáku EA s jediným rozdílem, za Start-Stop obvod zařadíme 8bitový čítač. 12 Dodatek: Mohli jsme samozřejmě vytvořit KOMx pomocí jedné rovnice - vyšlo by nám něco podobného jako: Po úpravách: A z toho bychom dostali rozlehlé, nepřehledné schéma, takže jsme to radši vůbec nedělali: ~o~ 13
Podobné dokumenty
Číslicová technika
funkcí jednotlivých hradel, přičemž toto zapojení je možné využít skutečně pouze jen jako
„náhradní,“ vzhledem k jeho velké ekonomické a prostorové náročnosti. Jedinou výjimkou, kdy
je možné využít...
5 až 25 bodů termín do 9. týdne cvičení, tj. do
VGA_BLANK - je v '0', pokud je neviditelná část obrazu, tj. zatemňovací pulzy, jinak zůstává v ‘1‘;
VGA_HS - je v '0' jen po dobu horizontálního synchronizačního pulzu, tj. jen po dobu 3.81 µs....
Logické obvody a jejich zapojení 1
zkoumat logické výstupy v závislosti na vstupech. Jednoduše řečeno, vidíme, jestli
dioda svítí, nebo nesvítí2.
Kombinací propojení zdířek L1 až L8 s napájením můžeme rozsvěcovat různé
skupiny světe...
Studijní text - MATEMATIKA online
Mocninné řady jsou funkční řady, jejichž členy tvoří mocninné funkce s přirozeným exponentem (jsou
tedy vlastně polynomy nekonečně velkého stupně). Oborem konvergence každé mocninné řady je buďto j...
Zpráva o činnosti 2013 - Městská knihovna Jablonec nad Nisou, po
uživatelům studijních míst pro práci na PC. Čtenářům s vlastní technikou jsme ke konci roku nabídli přístup
na internet prostřednictvím wi-fi.
V rámci výkonu regionálních funkcí proběhly dva aktivy...
Apacer přichází s SSD+ Optimizer
zrychluje SSD, což se nám tedy moc nezdá. Ano, u HDD
může velká fragmentace souborů opravdu výkon hodně
zpomalit, ale u flash paměti? Zkrátka jde o to, že Apacer
oznámil spolupráci se známou softwa...