Použití schematického editoru pro návrh kombinační logiky Pavel Lafata
Autor: Pavel Lafata Název díla: Použití schematického editoru pro návrh kombinační logiky Zpracoval(a): České vysoké učení technické v Praze Fakulta elektrotechnická Kontaktní adresa: Technická 2, Praha 6
Inovace předmětů a studijních materiálů pro e-learningovou výuku v prezenční a kombinované formě studia
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
VYSVĚTLIVKY
Definice
Zajímavost
Poznámka
Příklad
Shrnutí
Výhody
Nevýhody
ANOTACE Tento modul seznamuje studenty s možností návrhu a realizace základních kombinačních bloků v jazyce VHDL s využitím schematického editoru a knihoven značek.
CÍLE Díky tomuto modulu získají studenti znalost pro návrh a realizaci převodníků binárních kódů, včetně úpravy a vyjádření funkčního zápisu. Ten je posléze realizován pomocí jazyka VHDL v prostředí schematického editoru s využitím předpřipravených knihoven značek a schémat. Výsledný návrh převodníku je implementován do výukového přípravku a jeho funkčnost je tak ověřena.
LITERATURA [1]
STRNAD, Ladislav. Základy číslicové techniky: cvičení. 1. vydání. Praha : ČVUT, 1996. 124 s. ISBN 80-01-01433-9.
[2]
HAVLAN, Martin. Konstrukce telekomunikačních zařízení: cvičení. Praha : ČVUT, 2004. 199 s. ISBN 80-01-03035-0.
[3]
PINKER, Jiří; POUPA, Martin. Číslicové systémy a jazyk VHDL. Praha : BEN technická literatura, 2006. 349 s. ISBN 80-7300-198-5.
[4]
Spartan-3 Generation Configuration User Guide. In Spartan-3 Generation Configuration User Guide, Extended Spartan-3A, Spartan-3E, and Spartan-3 FPGA Families [online]. verze 1.6, 26. října, 2009 [cit. 2011-08-08]. Dostupné z WWW:
.
Obsah 1 Návrh převodníku kódů ...................................................................................................... 6 1.1
Princip převodníku, typy kódů ................................................................................... 6
1.2
Převodní tabulka ......................................................................................................... 7
1.3
Minimalizace funkčního zápisu.................................................................................. 8
1.4
Návrh převodníku pomocí kombinační logiky ........................................................... 9
1.5
Realizace převodníku pomocí hradel typu NAND................................................... 10
2 Realizace převodníku pomocí schematického editoru .................................................... 11 2.1
Založení nového projektu a jeho základní nastavení (1/2) ....................................... 11
2.2
Založení nového projektu a jeho základní nastavení (2/2) ....................................... 12
2.3
Vytvoření modulu v rámci projektu ......................................................................... 13
2.4
Hlavní okno projektu ................................................................................................ 14
2.5
Popis hlavního okna editoru ..................................................................................... 15
2.6
Nákres schématu (1/3) .............................................................................................. 16
2.7
Nákres schématu (2/3) .............................................................................................. 18
2.8
Nákres schématu (3/3) .............................................................................................. 19
2.9
Uložení projektu a jeho syntéza ............................................................................... 20
2.10
Další položky projektu v menu Design .................................................................... 21
2.11
Definice a přiřazení vstupně-výstupních prvků (1/2) ............................................... 22
2.12
Definice a přiřazení vstupně-výstupních prvků (2/2) ............................................... 23
2.13
Implementace převodníku do přípravku (1/2) .......................................................... 24
2.14
Implementace převodníku do přípravku (2/2) .......................................................... 25
2.15
Ověření funkčnosti převodníku ................................................................................ 26
2.16
Shrnutí realizace převodníku pomocí schematického editor .................................... 27
3 Návrh a realizace jiných převodníků kódů ...................................................................... 28 3.1
Návrh a realizace dalších převodníků kódu ............................................................. 28
3.2
Test ........................................................................................................................... 29
1 Návrh převodníku kódů 1.1 Princip převodníku, typy kódů Číselný kód představuje soubor pravidel pro jednoznačné přiřazení znaku (symbolu, čísla) hodnotě daného čísla na určené pozici. Účelem aplikace různého způsobu kódování je využití kladných vlastností jednotlivých druhů kódů při přenosu informací, při jejich zpracování či ukládání [1]. Převodníky kódů jsou kombinační obvody, které ze vstupních kódů vytvářejí kódy jiné. Úkolem převodníků je převádět jeden druh kódu na jiný a obráceně. Mezi nejznámější binární (dvojkové) kódy patří BCD kód, ve kterém je každá desítková číslice vyjádřena jako čtyřmístné binární číslo [1]. Další skupinu pak tvoří váhové kódy, které každému řádovému místu přiřazují jiný váhový koeficient. Jinými příklady kódů pak mohou být kódy s posunutím, typickým představitelem je např. kód F+3, kdy výsledná kódová složka představuje posun o hodnotu 3 oproti přímému kódu. Dalšími skupinami pak mohou být kódy se změnou v n-řádech (nejznámějším je Grayův kód), kódy 1 z n a jiné.
1.2 Převodní tabulka Pro popis funkce převodníku je nejdůležitější tzv. převodní tabulka. Převodní tabulka specifikuje chování převodníku a vyjadřuje postup, jak z určitého kódu získat kód jiný. Z převodní tabulky lze následně sestavit funkční popis převodníku. Prvním krokem je však obvykle vytvoření Karnaughovy mapy [1]. Pro minimalizace logických funkcí se využívá nejčastěji právě Karnaughova mapa, rovinný rozvoj tělesa, metoda Quine-McCluskey. Účelem procesu minimalizace je získání minimální formy jednotlivých funkcí převodníku. To nám obvykle umožní ušetřit potřebné prostředky při jeho realizaci a celkově zjednoduší výsledné zapojení. Uveďme proto příklad návrhu a realizace převodníku kódu z přímého dvojkového BCD na váhový kód 5421. Sestavme nejprve převodní tabulku. Převodní tabulka pro váhový kód 5421.
Kód 5421 N(10)
f4
f3
f2
f1
0
0
0
0
0
1
0
0
0
1
2
0
0
1
0
3
0
0
1
1
4
0
1
0
0
5
1
0
0
0
6
1
0
0
1
7
1
0
1
0
8
1
0
1
1
9
1
1
0
0
7
1.3 Minimalizace funkčního zápisu V druhém kroku sestavme čtveřici Karnaughových map pro funkce převodníku f1, f2, f3 a f4 a tyto funkce minimalizujme. Pro každou z funkcí, které popisují jedno řádové místo převodníku, sestavíme vlastní Karnaughovu mapu, ve které pomocí smyček přes podstatné (jednotkové) body a neurčité stavy provedeme minimalizaci formy.
Karnaughovy mapy pro minimalizaci funkcí převodníku.
Zapišme výsledek minimalizace pro jednotlivé funkce. f 1 = ad ∨ acd ∨ abc
f 2 = ab ∨ ad ∨ bc f 3 = ad ∨ abc f 4 = d ∨ ac ∨ bc
8
1.4 Návrh převodníku pomocí kombinační logiky Minimalizované logické funkce vyjádřené v předchozí kapitole můžeme nyní realizovat pomocí kombinační logiky. Funkce f1, f2, f3 a f4 jsme pomocí Karnaughových map vyjádřili pomocí tzv. minimální normální disjunktní formy. Minimální normální disjunktní forma se označuje též jako součtová forma a obsahuje tolik součinů (konjunkcí), kolik má daná logická funkce jednotkových (podstatných) bodů, tedy bodů, ve kterých funkce nabývá hodnoty logické jedničky. Kromě ní existuje rovněž minimální normální konjunktní forma (označovaná též jako součinová forma), která vychází z nepodstatných bodů funkce (nulových bodů a neurčitých stavů). Výchozí formy pro realizaci pomocí kombinační logiky.
Výchozí algebraická forma (úplná či minimalizovaná normální forma) Disjunktní (součtová)
Použité logické hradlo NAND (negovaný logický součin) NOR (negovaný logický součet) AND-OR-INVERT (dvojice členů logických součinů následovaná logickým součtem a logickou negací)
Konjunktní (součinová)
Nyní můžeme přistoupit k realizaci vlastního převodníku pomocí logických hradel NAND. Výchozí minimální formy z předchozí kapitoly je potřeba ještě upravit, k čemuž v Booleově algebře slouží De Morganovy zákony a pravidla pro vytváření negací [1]. f 1 = ad ∨ acd ∨ abc = ad ⋅ acd ⋅ abc f 2 = ab ∨ ad ∨ bc = ab ⋅ ad ⋅ bc f 3 = ad ∨ abc = ad ⋅ abc f 4 = d ∨ ac ∨ bc = d ⋅ ac ⋅ bc
9
1.5 Realizace převodníku pomocí hradel typu NAND Díky sérii předchozích úprav funkcí můžeme již přistoupit k vlastní realizaci převodníku pomocí hradel typu NAND (negovaný logický součin).
Realizace převodníku pomocí hradel typu NAND.
Při návrhu logického obvodu pomocí kombinační logiky je nejprve nutné vyjít z jeho funkčního popisu, ať již ve formě pravdivostní tabulky, mapy, či algebraického zápisu. S výhodou lze využít proces minimalizace (mapou, tělesem, metodou Quine-McCluskey), což v řadě případů zjednoduší výslednou realizaci a sníží počet použitých hradel. Pomocí De Morganových zákonů a pravidel pro vytváření negaci je vhodné výslednou formu před vlastní realizací upravit pro použití konkrétních logických hradel. Minimalizovanou formu, ať již v podobě disjunktní či konjunktní, je následně možné přímo realizovat pomocí elementárních logických hradel (obvykle NAND, NOR, AND-OR-INVERT).
10
2 Realizace převodníku pomocí schematického editoru 2.1 Založení nového projektu a jeho základní nastavení (1/2) Prvním krokem při spuštění návrhového prostředí ISE Webpack od společnosti Xilinx je založení nového projektu. Klikněte proto na tlačítko New Project, nebo v základním menu v položce File zvolte New Project. V následném okně je potřeba pojmenovat projekt a zvolit výchozí typ návrhu, v našem případě pomocí schematického editoru značek a symbolů. V názvu projektu se vyvarujte použití interpunkčních znamének (háčky, čárky), speciálních znaků (vykřičník, hvězdička, křížek a jiné) a název projektu by rovněž neměl začínat číslicí (na druhém až posledním místě v názvu projektu se číslice nacházet již může). Potvrďte úvodní nastavení projektu tlačítkem Next, jak ukazuje následující obrázek.
Úvodní obrazovka při založení nového projektu.
V dalším okně, které se objeví po potvrzení předchozích údajů, je potřeba detailněji specifikovat typ a parametry použitého přípravku a zvoleného programovacího jazyka, simulátoru a editoru. Následující nastaveni a volba parametrů a typu přípravku má přímý vliv na konečnou implementaci programu či schématu do zvoleného přípravku a může podstatným způsobem ovlivnit chod vlastního programu. Nastavené parametry lze v již založeném projektu měnit a upravovat, věnujte však tomuto nastavení náležitou pozornost!
11
2.2 Založení nového projektu a jeho základní nastavení (2/2) V druhém okně zvolme typ použitého přípravku, jeho parametry, verzi a parametry použitého programovacího jazyka a schematického editoru. Podívejme se proto nejprve na následující obrázek s nastavením.
Detailní specifikace projektu a typu použitých nástrojů.
Jako první zvolme typ přípravku. V našem případě se jedná o výukový kit s označením Xilinx Spartan-3E, toto označení nalezneme a vybereme v položce Family. Při jejím zvolení by mělo automaticky dojít k výběru typu pouzdra, Package, v následující položce. Pokud se tak nestane, zvolte typ pouzdra označený FG320. Poslední položka v horní polovině okna s názvem Speed nastavuje parametry pro rychlost zpracovávání a vykonávání instrukcí a pro proces optimalizace. Ve spodní polovině okna pro nastavení vlastností projektu stojí za zmínku výběr programů pro syntézu navrženého VHDL kódu či schématu a také simulační program. V komplexním balíku ISE od společnosti Xilinx jsou již obsaženy oba tyto nástroje, program pro syntézu kódu s názvem XST a simulátor ISim. Je však možné využít libovolný program jiného výrobce a v těchto dvou položkách ho pak zvolit. Poslední důležitou položkou je výběr verze (standardu) jazyka VHDL, obvykle jí bývá z důvodu zachování zpětné kompatibility starší standard VHDL93, pro využití moderních funkcí jazyka VHDL je možné zvolit položku VHDL200X [2], [3]. Po odsouhlasení nastavených parametrů pomocí kliknutí na tlačítko Next se objeví již jen zkrácený textový výpis s informacemi o projektu, který kliknutím na tlačítko Finish potvrďte.
12
2.3 Vytvoření modulu v rámci projektu Po úspěšném založení projektu klikněte pravým tlačítkem myši na název projektu v okně editoru zcela vlevo a volbou New Source přidejte nový zdrojový modul, který bude obsahovat vlastní schéma převodníku. Ke stejnému účelu lze rovněž využít ikonu s názvem New source a s obrázkem nového dokumentu (prázdný list s hvězdičkou), která se nachází rovněž v levém okně zcela nahoře v levé liště. Tímto postupem dojde k otevření nového dialogového okna, ve kterém se specifikuje typ a název vlastního modulu obsahujícího schéma převodníku či jeho VHDL kód. Toto okno je uvedeno rovněž na následujícím obrázku.
Dialogové okno pro vytvoření nového modulu v rámci projektu.
V levé části, v seznamu dostupných typů modulů, zvolme typ s názvem Schematic. Tato volba specifikuje způsob vytvoření převodníku (obecně jakéhokoliv programu), v našem případě tedy pomocí schématu a značek z dostupných knihoven základních prvků. Důležité je rovněž modul vhodně pojmenovat, přičemž platí stejná pravidla, jako v případě pojmenování celého projektu, která byla uvedena v předchozí části. Zkontrolujte rovněž, zda je zaškrtnuto okénko ve spodní části dialogového okna tak, aby došlo k vzájemnému propojení modulu a nadřazeného projektu. Pokud je vše správně nastaveno, potvrďte kliknutím na tlačítko Next a v následujícím textovém okně klikněte na Finish. V rámci jednoho projektu může být samozřejmě definováno větší množství modulů a to dokonce různých typů. V jednom modulu může být například vlastní program (který může být dále členěn do několika navzájem propojených modulů), v jiné skupině modulů pak např. simulační a testovací program (posloupnost) atd. Modularita a rozdělení větších celků na menší elementární části, kdy každá vykonává jednu základní funkci a dohromady pak všechny tvoří celkový výsledný program, je jednou z klíčových vlastností jazyka VHDL [2], [3].
13
2.4 Hlavní okno projektu Ve spodní části programu se nachází lišta se záložkami pro snadné a rychlé přepínání hlavních oken celého projektu. Na první záložce se obvykle nachází první obrazovka projektu, která obsahuje všechny základní a podstatné informace.
Základní obrazovka s informacemi a vlastnostmi projektu.
V hlavní části se nachází tabulka s informacemi o projektu. Jednotlivé položky v tabulce jsou postupně doplňovány v souvislosti s tím, jak probíhají jednotlivé fáze projektu od nákresu schématu (či napsání programu v jazyce VHDL), přes fázi syntézy, simulace, přiřazení vstupně-výstupních prvků, až po samotnou implementaci do přípravku. V tomto okně se lze mimo jiné dozvědět o náročnosti navrženého programu (kolik % kapacity FPGA pole bylo daným programem obsazeno), je zde uveden přehled všech varování i zjištěných chyb návrhu a podobně. Pod lištou se záložkami se nachází textová konzole, kde jsou jednotlivé fáze projektu rozepsány podrobněji v textové verzi. Pro obsluhu programu ISE je, kromě základního ovládání pomocí myši a klávesnice, možné využít i dávkové bloky příkazů a skriptů spouštěných v příkazové řádce.
14
2.5 Popis hlavního okna editoru Po úspěšném vytvoření modulu převodníku se objeví hlavní okno schematického editoru.
Hlavní okno schematického editoru.
V něm se nachází nejdůležitější sada ikon na liště po levé straně vlastní plochy pro kreslení schématu. Z nich jsou nejdůležitější zejména první se symbolem šipky, která umožňuje uchopení již nakreslených objektů, jejich úpravu, přemístění, výběr větší skupiny a podobně. Třetí ikonou je pak volba pro kreslení propojů mezi jednotlivými bloky, elementárními logickými hradly, vstupy a výstupy a v reálném prostředí tak nahrazuje zapojení pomocí propojovacích vodičů. Jednotlivé propoje lze navíc pojmenovávat a označovat (pro zlepšení přehlednosti) pomocí další, čtvrté ikonky. V pořadí sedmá ikona odshora se symbolem tlusté šipky s krátkým vývodem umožňuje definovat vstupy a výstupy jednotlivých elementů, bloků, nebo celého schématu. Jedná se o důležitou funkci, kdy jsou jednotlivým programovým výstupům následně přiřazeny reálné výstupy na použitém přípravku (např. přepínače, tlačítka, LED diody apod.) [4]. Každý ze vstupů i výstupů lze samozřejmě libovolně pojmenovat. Osmá ikonka odshora s obrázkem logické značky otevírá knihovny předdefinovaných elementárních logických členů, hradel, bloků a celků. Po kliknutí se v levém okně otevře nabídka dostupných schematických symbolů, které lze využít pro nakreslení schématu a realizaci požadovaného návrhu. Další ikonky pak umožňují provádět některé dodatečné úpravy a operace, zakreslit pomocné prvky, označení, provést uspořádání a rotaci jednotlivých elementárních bloků a jiné.
15
2.6 Nákres schématu (1/3) Prvním krokem je vytvoření vstupních proměnných. Je samozřejmě možné využít stejný způsob, jaký byl použit u náčrtku převodníku v předchozí kapitole, tj. na vstupy každého hradla zakreslit samostatně vstupní proměnné. V našem případě při nutnosti vytvořit čtveřici samostatných bloků pro funkce f1, f2, f3 a f4 by to však bylo velmi zdlouhavé a pracné. Mnohem jednodušší a rychlejší je vytvořit samostatnou sběrnici pomocí čtyř vodičů (pro čtyři proměnné) a vstupy jednotlivých hradel připojovat k vybraným vodičům sběrnice.
Nakreslení sběrnice pro čtyři vstupní proměnné.
Klikněte proto na ikonu pro nakreslení vodiče a vytvořte čtveřici svislých vodičů, které tvoří pomyslnou sběrnici. Dále pak klikněte na ikonku pro vytvoření vstupuvýstupu s názvem Add I/O Marker a v okamžiku, kdy najedete myší na konec jednoho z vodičů, objeví se kolem něho malý rámeček (prostředí ISE podporuje systém uchopení a přichycení) a následně klikněte. Tím se na konci vodiče objeví vstupní šipka, do které se vloží automaticky generovaný název vstupní proměnné (obvykle XLXN_ a číslo). Vzhledem k tomu, že v našem návrhu máme vstupní 16
proměnné pojmenované písmenky a, b, c, d, je optimální tyto automaticky generované názvy přejmenovat. Klikněte proto na první ikonku lišty s nabídkou schematického editoru s obrázkem černé šipky, následně přejeďte myší na vstup, který chcete přejmenovat, klikněte na něho pravým tlačítkem a z krátkého menu zvolte položku Rename Port. Zde vyplňte požadovaný název a potvrďte.
17
2.7 Nákres schématu (2/3) Nyní zvolte v základní liště ikon schematického editoru ikonu pro otevření knihovny elementárních bloků a hradel (osmá odshora) a v levém okně se vám otevře kompletní nabídka všech použitelných prvků. V horní polovině okna knihoven se nachází seznam základních kategorií, jsou zde například prvky spadající do kategorie sekvenční logika, prvky pro aritmetické operace, prvky kombinační logiky, paměti, čítače, dekodéry a další. Pro potřeby našeho projektu vystačíme s prvky, které obsahuje knihovna kombinační logiky (hradel) s názvem Logic. Po jejím zvolení se v dolní části levého okna v sekci Symbols objeví seznam jednotlivých prvků, které tato knihovna obsahuje. S ohledem na mezinárodní normu, jsou jednotlivá hradla kombinační logiky pojmenována anglickými názvy: and, inv, nand, nor, xor a podobně. U každého hradla je navíc obvykle uvedena dvojice čísel. První číslo v názvu specifikuje celkový počet vstupů daného hradla, zatímco druhé číslo vymezuje, kolik z celkového počtu těchto vstupů je negovaných (invertovaných). Negovaný vstup (nebo výstup) je vždy označen kroužkem. Například tedy označení and2b1 vyjadřuje, že se jedná o hradlo logického součinu AND, které má celkem dva vstupy, z nichž jeden je negovaný (druhý je tedy tím pádem přímý).
18
2.8 Nákres schématu (3/3) Postupně tedy z knihovny Logic vyberte potřebná hradla pro realizaci převodníku, přičemž vycházejte z nákresu zapojení, které jsme vytvořili v předchozí kapitole pro všechny čtyři výstupní funkce f1, f2, f3 a f4. Pro propojení jednotlivých hradel navzájem použijte ikonku pro vložení propojky. K připojení vstupních proměnných na jednotlivá hradla využijeme připravenou sběrnici a propojíme vstupy hradel na jednotlivé vodiče sběrnice podle toho, která z proměnných má vstupovat do konkrétního hradla. Při potřebě negované vstupní proměnné použijeme jednoduše hradlo s negovaným vstupem. Při úspěšném připojení vstupů hradel na sběrnici proměnných se kolem propojky na sběrnici objeví symbol plného čtverečku. Pokud se tento čtvereček neobjeví, není propojení vodičů úplné a propoj tak není funkční! Nezapomeňte rovněž vytvořit výstupy z každého bloku převodníku f1, f2, f3 a f4. Provedeme to opět stejným způsobem, jako v případě definování vstupů. Tedy po kliknutí na příslušnou ikonkou Add I/O Marker na hlavní liště editoru označte konkrétní výstup hradla a opět pomocí kliknutí pravým tlačítkem myši a volby Rename Port přejmenujte výstup do požadovaného formátu (f1, f2, f3, f4).
Ukázka realizace funkce f1 pomocí schematického editoru.
19
2.9 Uložení projektu a jeho syntéza Po dokončení nákresu celého schématu převodníku (tedy všech čtyř jeho funkcí f1, f2, f3, f4) uložte modul či rovnou celý projekt. V hlavní liště programu se za tímto účelem nachází ikonka diskety pro uložení pouze samostatného modulu, či sousední ikonka několika disket pro uložení celého projektu. Stejnou operaci lze pak provést i volbou menu File a výběrem položek Save, Save As a Save All. Uložený projekt je potřeba nyní syntetizovat. Syntéza v jazyce VHDL představuje proces, kdy se z obecného kódu VHDL či schématického nákresu provede jeho realizace pomocí konkrétních hradel a členů, obsažených v daném hradlovém poli FPGA [3]. V levé spodní části programu přelistujte na záložku s názvem Design. V levé části se tak otevře hlavní nabídka s jednotlivými fázemi projektu. Označte v horní polovině vlastní modul s nákresem převodníku (bude pojmenovaný názvem, který jste zadali při jeho vytvoření a bude mít příponu .schm) a v dolní části okna dvojklikem levým tlačítkem klikněte na položku Synthesize-XST. Tím se spustí proces syntézy. V konzolové sekci hlavního okna lze sledovat pomocí textových příkazů a informací údaje o právě prováděné syntéze, včetně případných varování (Warnings) či chyb v návrhu (Errors). Pokud proběhne celá syntéza správně a bez problémů, zobrazí se u ní v menu Design zelený potvrzovací symbol (OK).
Spuštění procesu syntézy projektu.
20
2.10 Další položky projektu v menu Design V menu Design pomocí křížku rozbalte položku s názvem Design Utilities a dvojklikem spusťte čtvrtou volbu s názvem View HDL Functional Model. Dojde tak k otevření nového okna, ve kterém bude uveden funkční popis navrženého schématu převodníku pomocí jazyka VHDL a kde lze rovněž zkontrolovat jeho správnou funkčnost. Opět v menu Design tentokrát rozbalte položku Synthesize-XST a dvojklikem levým tlačítkem myši spusťte první položku View RTL Schematic. V následujícím okně ponechte první volbu a tlačítkem OK potvrďte. V nově otevřeném okně označte v levém sloupečku položku s názvem modulu převodníku, v prostřední části okna klikněte na tlačítko Add a v pravé dolní části obrazovky klikněte na tlačítko Create Schematic. Tím se na obrazovce otevře nové okno se symbolem celého převodníku (vstupy a, b, c, d a výstupy f1, f2, f3 a f4), které se pomocí dvojího kliknutí rozevře a lze nahlédnut podrobně do vnitřní struktury realizace. Pomocí ovládacích prvků v hlavní liště (různé druhy a typy přiblížení či vykreslení se symbolem lupy), lze zobrazit jednotlivé detaily realizace, či celé schéma oddálit a zobrazit komplexně na celé obrazovce.
Ukázka části RTL schématu navrženého převodníku.
RTL schéma ukazuje navržený objekt (program, schéma) tak, jak bude realizován v daném konkrétním FPGA hradlovém poli.
21
2.11 Definice a přiřazení vstupně-výstupních prvků (1/2) Dalším krokem implementace navrženého převodníku do výukového přípravku Xilinx Spartan-3E je přiřazení vstupů a výstupů převodníku konkrétním prvkům na desce přípravku. Na přípravku se nachází velké množství vstupních i výstupních prvků ovladačů, periferií, pro potřeby jednoduchého převodníku kódu se však nejlépe hodí série čtyř přepínačů umístěných v pravém dolním rohu a jako výstup mohou jednoduše posloužit indikační LED diody, které se nacházejí nad těmito přepínači. Každý z těchto prvků je připojen k jednomu (či více) vstupně-výstupním pinům (I/O pin) hradlového pole FPGA. Přepínače, které mají jen dva základní stavy (vypnuto, zapnuto), LED diody (svítí, nesvítí), tlačítka (stisknuto, nestisknuto) a další jsou připojeny k jednomu pinu hradlového pole, zatímco některé prvky, které mohou nabývat více stavů (otočný přepínač), jsou připojeny k více pinům. Každý z uvedených pinů má své konkrétní označení (podle místa, kde je k FPGA poli připojen) a tyto piny jsou obvykle sdružovány do skupin (tzv. bank). Konkrétní připojení ovládacích prvků lze nalézt v manuálu přípravku Xilinx Spartan-3E [4] a pro naše potřeby realizace převodníku uveďme jednotlivá označení čtveřice přepínačů a čtveřice LED diod (přípravek obsahuje celkem 8 indikačních LED diod, využijeme však pouze 4 pro výstupní funkce) a jejich přiřazení pro vstupy (proměnné a, b, c, d) a výstupy (funkce f1, f2, f3, f4) převodníku.
Vstupní proměnná a
Ovládací prvek přípravku Přepínač 1
Vstupní proměnná b
Přepínač 2
L14
Vstupní proměnná c
Přepínač 3
H18
Vstupní proměnná d
Přepínač 4
N17
Výstupní funkce f1
LED dioda 1
F12
Výstupní funkce f2
LED dioda 2
E12
Výstupní funkce f3
LED dioda 3
E11
Výstupní funkce f4
LED dioda 4
F11
Vstup/výstup převodníku
22
Označení daného pinu v hradlovém poli FPGA L13
2.12 Definice a přiřazení vstupně-výstupních prvků (2/2) V záložce projektu Design rozbalte menu User Constraints a klikněte levým tlačítkem myši na položku Floorplan Area/IO/Logic. V informačním okně, které se následně objeví, potvrďte vytvoření nového souboru s příponou .ucf, který bude obsahovat výše zmíněné přiřazení. Spustí se pomocný program s názvem PlanAhead. V hlavním okně programu je model FPGA pole Spartan-3E, ve kterém lze označovat jednotlivé bloky a zobrazovat o nich informace v levé části okna. V levé části programu se pak nachází trojice informačních oken, kde pomocí jednotlivých záložek lze listovat a volit požadované funkce. Velké textové okno (konzole) vyplňuje spodní část celého programu. Ve zcela spodní části konzolového okna klikněte na záložku s názvem I/O Ports. Objeví se skupina (balík) portů s názvem Scalar ports, kterou rozbalte pomocí křížku. Zde se pak nachází kompletní seznam všech vstupů a výstupů, v námi navrženém programu či schématu. Kliknutím na konkrétní port se u něho objeví podrobnější informace, např. zda se jedná o vstup či výstup (input, output), rozhodovací úroveň mezi oblastí logické jedničky a nuly atd. Zde je potřeba u každého vstupu i výstupu ve sloupečku s názvem Site zvolit konkrétní označení pinu a přiřadit tak daný vstup či výstup konkrétnímu prvku na výukovém přípravku. Po kliknutí do dané položky se otevře seznam dostupných pinů, nebo lze pomocí klávesnice přímo označení pinu dopsat. Vyplněnou tabulku na základě přiřazení uvedeného v předchozí tabulce zachycuje následující obrázek.
Správně vyplněné údaje pro vstupy a výstupy převodníku na základě údajů z předchozí tabulky.
Soubor obsahující toto přiřazení (s příponou .ucf) je uložen v běžném textovém formátu, lze ho proto otevřít a jednoduše editovat v jakémkoliv textovém editoru.
23
2.13 Implementace převodníku do přípravku (1/2) V prvním kroku připojte vlastní přípravek Xilinx Spartan-3E pomocí volného USP portu počítače. Zapněte přípravek přepínačem ON/OFF, který se nachází v jeho levé horní části. Postupně dojde k inicializaci přípravku, instalaci ovladačů v systému počítače, a pokud je celá tato fáze úspěšně dokončená, rozsvítí se zelená indikační LED dioda umístěná na desce vedle konektoru USB. Po úspěšné přiřazení vstupů a výstupů a jeho uložení zavřete pomocný program PlanAhead a vraťte se do hlavní nabídky projektu a menu Design. V tomto menu dvojklikem levým tlačítkem myši spusťte fázi Configure Target Device. Program postupně projde jednotlivé kroky implementace a bude každý z nich pomocí symbolů označovat, pokud proběhl v pořádku a korektně, či zda se nevyskytla někde chyba. O možných varováních, chybách a dalších důležitých informacích o celém procesu, se lze dočíst v textovém výpisu v konzoli hlavního okna a v podrobnostech o projektu na jeho úvodní straně. V informačním okně, které se po ukončení hlavní fáze překladu a implementace objeví, klikněte na tlačítko OK (vytvoření nového souboru pro implementaci). Dojde ke spuštění pomocného programu s názvem ISE iMPACT, který slouží k vlastnímu naprogramování přípravku. Automaticky proběhne navázání komunikace s připojeným přípravkem, pokud by přesto k tomu nedošlo, klikněte dvojklikem levým tlačítkem myši na položku Boundary Scan a pomocí pravého tlačítka zvolte v následném menu položku Initialize Chain. V hlavním okně programu ISE iMPACT se zobrazí trojice programovatelných hradel (jedno je FPGA pole a druhá dvě pak typu CPLD, podrobnější popis lze nalézt v [4]) tak, jak ilustruje následující obrázek.
Okno programu ISE iMPACT s připojeným přípravkem Xilinx Spartan-3E.
24
2.14 Implementace převodníku do přípravku (2/2) V dialogovém okně s dotazem, zda požadujete přiřazení konfiguračního souboru k jednotlivým částem přípravku, klikněte na tlačítko Yes. V nově otevřeném okně pak označte soubor s názvem projektu a příponou .bit (měl by být v celém projektu pouze jeden a pomocí nastaveného filtru jej lze snadno identifikovat) a klikněte na tlačítko Open (stejnou funkci provede i dvojklik levým tlačítkem myši na daný soubor). V dalším okně pak klikněte na tlačítko No (nepožadujeme dodatečné naprogramování dostupné paměti) a v dalších dvou oknech klikněte vždy na tlačítko Bypass. Díky volbě Bypass dojde k vynechání naprogramování dvojice CPLD hradel. Ty lze využít při realizaci složitějších programů, kdy je například nutné daný program rozdělit a část umístit do FPGA pole a část do pole CPLD, což však není v našem případě nutné. Při správném postupu podle předchozího návodu se bude pod značkou FPGA hradla nacházet název souboru s uloženým projektem, zatímco pod oběma zbývajícími CPLD obvody informace o tom, že mají být při procesu naprogramování přeskočeny (Bypass). Nyní klikněte pravým tlačítkem myši na ikonu FPGA hradlového pole a z následného menu zvolte položku Program. Dojde k naprogramování přípravku (nahrání zvoleného programu do FPGA pole), což je potvrzeno hláškou Program Succeeded.
Správně provedená příprava a naprogramování přípravku.
25
2.15 Ověření funkčnosti převodníku Po úspěšném naprogramování přípravku se v jeho pravé horní části rozsvítí oranžová indikační LED dioda signalizující, že v paměti je uložen program. Opětovné vymazání programu lze provést vypnutím napájení přípravku (přepínačem ON/OFF v levém horním rohu), případně stisknutím tlačítka s názvem PROG, které se nachází napravo od oranžové indikační LED diody. Ověřte nyní správnost navrženého převodníku kódů a jeho implementaci v rámci přípravku Xilinx Spartan-3E. Pomocí přepínačů v pravém dolním rohu nastavte postupně všechny kombinace odpovídající přímému BCD kódu a na indikačních LED diodách nad přepínači sledujte výsledek převodu. Zkontrolujte jeho správnost porovnáním s tabulkou převodníku uvedenou v první kapitole.
26
2.16 Shrnutí realizace převodníku pomocí schematického editor Prvním krokem vlastní realizace je založení nového projektu, ve kterém je nutno vytvořit modul typu schéma, který bude obsahovat vlastní nákres převodníku. Pro nakreslení schématu lze využít knihovny předpřipravených značek, propojovací vodiče, je rovněž nutné definovat a pojmenovat vstupy a výstupy jednotlivých elementů či celých bloků. V dalším kroku je potřeba provést syntézu projektu a v této fázi je vhodné ověřit správnost návrhu pomocí kontroly vytvořeného zapojení (případně i VHDL kódu). Pokud je vše v pořádku, lze přistoupit k fázi přiřazení vstupů a výstupů modulů k jednotlivým vstupně-výstupním prvkům na reálném přípravku. Posledním krokem je pak implementace celého projektu do přípravku a ověření funkčnosti.
27
3 Návrh a realizace jiných převodníků kódů 3.1 Návrh a realizace dalších převodníků kódu V úvodní kapitole byly zmíněny různé druhy a typy binárních kódů, přičemž tyto kód lze rozdělit do několika základních kategorií. Uveďme proto převodní tabulky několika dalších binárních kódů. Převodní tabulky pro několik vybraných binárních kódů.
Kód 84-2-1
Grayův kód
Kód F+3
N(10) f4 f3 f2 f1 f4 f3 f2 f1 f4 f3 f2 f1 0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
1
1
1
0
0
0
1
0
1
0
0
2
0
1
1
0
0
0
1
1
0
1
0
1
3
0
1
0
1
0
0
1
0
0
1
1
0
4
0
1
0
0
0
1
1
0
0
1
1
1
5
1
0
1
1
0
1
1
1
1
0
0
0
6
1
0
1
0
0
1
0
1
1
0
0
1
7
1
0
0
1
0
1
0
0
1
0
1
0
8
1
0
0
0
1
1
0
0
1
0
1
1
9
1
1
1
1
1
1
0
1
1
1
0
0
Proveďte návrh a realizaci převodníků pro kód 84-2-1, Grayův kód a kód F+3 pomocí jejich převodních tabulek uvedených výše a s využitím stejného postupu, jako v popsané ukázce návrhu převodníku kódu 5421. Navržené převodníky a jejich schémata nakreslená pomocí editoru ISE Webpack postupně implementujte do přípravku Xilinx Spartan-3E a ověřte jejich funkčnost.
28
3.2 Test 1. Kód s označením 84-2-1 je kód typu. a) Kód s pousvem. b) Kód se změnou v n řádech. c) Váhový kód. d) Kód typu 1 z n. správné řešení: c
2. Karnaughova mapa se používá. a) Při převodu vyjádření forem logické funkce (disjunktní, konjunktní) b) Při procesu minimalizace logické funkce. c) V případě uplatnění zákona agresivity logické jedničky. d) V případě hledání negace logické funkce. správné řešení: a, b, d
3. Grayův kód je kódem typu. a) Kód se změnou v n řádech. b) Kód typu 1 z n. c) Kód s pousvem. d) Váhový kód. správné řešení: a
4. Disjunktní forma logické funkce. a) Vychází z nulových bodů funkce. b) Vychází z podstatných bodů funkce. c) Vychází z nepodstatných bodů funkce. d) Se označuje také jako součinová forma. správné řešení: b
29
5. Konjunktní forma logické funkce. a) Vychází z podstatných bodů funkce. b) Vychází z jednotkových bodů funkce. c) Se označuje také jako součtová forma. d) Vychází z nepodstatných bodů funkce. správné řešení: d
6. Výchozí formou při realizaci logické funkce pomocí hradel typu NAND je. a) Konjunktní forma. b) Součinová forma. c) Disjunktní forma. d) Smíšená kombinace disjunktní a konjunktní formy. správné řešení: c
7. Výchozí formou při realizaci logické funkce pomocí hradel typu NOR je. a) Konjunktní forma. b) Součtová forma. c) Disjunktní forma. d) Smíšená kombinace disjunktní a konjunktní formy. správné řešení: a
8. Pravidla pro vytváření negací logických funkcí se nazývají. a) Mooreovy zákony. b) De Morganova pravidla. c) Mealyho pravidla. d) Shannonovy zákony. správné řešení: b
30
9. Základní balík pro obsluhu a naprogramování produktů od společnosti Xilinx se nazývá. a) Xilinx iSIM b) Xilinx iPROG c) Xilinx ISE d) Xilinx iMPACT správné řešení: c
10. Logické hradlo s názvem nor3b2 v prostředí schematického editoru označuje. a) Hradlo logického součtu se 3 přímými vstupy. b) Hradlo logického součtu s 3 negovanými vstupy. c) Hradlo logického součinu se 3 přímými vstupy. d) Hradlo negovaného logického součtu se 3 vstupy, z nichž 2 jsou negované. správné řešení: d
11. Logické hradlo s názvem nand2 v prostředí schematického editoru označuje. a) Hradlo logického součinu se 2 přímými vstupy. b) Hradlo logického součtu se 2 přímými vstupy. c) Hradlo negovaného logického součinu se 2 přímými vstupy. d) Hradlo negovaného logického součtu se 2 přímými vstupy. správné řešení: c
12. Logické hradlo s názvem xor4 v prostředí schematického editoru označuje. a) Hradlo negovaného logického součinu se 4 negovanými vstupy. b) Hradlo logické neekvivalence se 4 přímými vstupy. c) Hradlo negovaného logického součtu se 4 přímými vstupy. d) Hradlo logické ekvivalence se 4 přímými vstupy. správné řešení: b
31
13. Projekt v prostředí Xilinx ISE může obsahovat. a) Libovolný počet různých typů modulů. b) Pouze jeden modul. c) Více modulů avšak stejného typu. d) Maximálně dva moduly různých typů. správné řešení: a
32