Cvičení 1 Logická hradla Prvním příkladem pro seznámení s logickými obvody bude realizace několika hradel. Pomocí tohoto návodu je naprogramujeme do přípravku Digilent Spartan-3 a vyzkoušíme přímo v praxi. Postupujeme krok za krokem podle bodů, cílem je fungující aplikace v přípravku. Zadání: Do přípravku naprogramujeme funkce čtyř 2vstupových hradel: AND, OR, NAND a XOR. Jejich funkci popisuje následující čtveřice tabulek, SW7 až SW0 jsou vstupy hradel, LED7 až LED4 jsou jejich výstupy. Nula znamená neaktivní stav, jednička aktivitu. Jsou-li tedy např. vstupy SW7 a SW6 aktivní u hradla AND, je aktivní i výstup. AND NAND OR XOR SW7 SW6 LED7 SW5 SW4 LED6 SW3 SW2 LED5 SW1 SW0 LED4 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 0 1. Spuštění vývojového prostředí Spustíme počítač v laboratoři a přihlásíme se do Windows sítě podle instrukcí cvičícího V domácím adresáři (připojeno jako disk H) si založíme v kořeni adresář BI-SAP. o Důležité! V adresářové cestě se nikde nesmějí vyskytovatt mezery. Raději ani nepoužívejte diakritiku. Spustíme Project Navigator: Start Programy Xinx ISE 9.2i Project Navigator Popis základních částí plochy návrhového systému:
V nabídce File vybereme příkaz New Project Okna průvodce New Project vyplníme podle vzoru určujeme tak jméno projektu, jeho umístění a typ programovatelného obvodu, který použijeme. Dejte si pozor na správný typ Package, zde se často chybuje a zapojení pak nebude zdánlivě funkční! Poslední tři okna průvodce jen přeskočíme pomocí tlačítka Next
Používejte jméno projektu podle tohoto příkladu gates a práci si zálohujte, nic nemažte v průběhu semestru může být vaše práce hodnocena (viz způsoby zálohování)
Výsledek po vytvoření projektu:
3. Vytvoření nového schématu A) Vytvoření prázdného schématu: V prázdném projektu vytvoříme soubor se schématem našeho zapojení: V nabídce Project vybereme příkaz New source Okno New Source vyplníme podle vzoru: Zvolíme typ souboru Schematic a název schématu gates
Výsledek po vytvoření prázdného schématu:
V seznamu Sources v našem projektu přibude nové schéma gates Pravá část plochy programu se změní na editor schémat. V levé horní části plochy je nyní aktivní záložka Symbols. Tato záložka je přítomna pouze v případě, že je otevřené okno se schématem. Mezi záložkami se lze libovolně přepínat. V levé dolní části plochy je nyní aktivní záložka Options. Tato záložka je přítomna pouze v případě, že je otevřené okno se schématem. S pomocí záložky Symbols a Options lze kreslit a ovlivňovat již nakreslené schéma. V případě potřeby je možné kdykoliv zvolit záložku Sources a Processes sloužící k manipulaci s vytvořeným projektem.
Pro pohodlnější práci si kreslící plochu zvětšíme pomocí View, Zoom, In. Nyní začneme kreslit schéma zadané úlohy. B) Vložení hradel do schématu Pomocí záložky Symbols zvolíme správné hradlo. Zkontrolujeme, zda máme zvoleno v položce Categories All Symbols, jinak bychom vybírali součástku pouze ze zvolené knihovny, nikoliv ze všech dostupných. Hradlo vybereme pomoci položky Symbol Name Filter, kde postupně vpisujeme jméno hradla a to takto: AND2 = 2vstupové hradlo AND NAND2 = 2vstupové hradlo NAND OR2 = 2vstupové hradlo OR XOR2 = 2vstupové hradlo XOR Jiná hradla mají například tyto názvy: AND3 = 3vstupové hradlo AND AND3B1 = 3vstupové hradlo AND s jedním negovaným vstupem OR8 = 8vstupové hradlo OR atd. Podobně lze postupovat pro další hradla jako je XOR, OR, NOR, INV (negace). Po nalezení vhodné součástky je nutné součástku označit, a to v položce Symbols. Pak již stačí součástku umístit do schématu. Změnu orientace součástky je možné v záložce Symbols a položce Orientation. Kreslení jednoho typu součástky ukončuje klávesa ESC. Příklad vložení hradla XOR a OR:
Upravit C) Propojení součástek pomocí vodičů Jednotlivé součástky spojíme vodiči použijeme k tomu nabídku Add Wire nebo zvolíme ikonu. Stačí klepnout na začátek vodiče na výstupu nebo vstupu hradla a tažením myší ho vést k cíli. Vstupy a výstupy připojené přímo na port (vstup a výstup ze schématu) není nutné opatřovat vodiči. Port je možné připojit přímo ke vstupu (výstupu) hradla.
Kreslení vodiče lze ukončit klávesou ESC. V případě, že jste nakreslili čáru špatně, lze ji označit (nezapomeňtee předtím klávesou ESC zrušit aktuální kreslící režim) a následně smazat. Pokud chceme odstranit pouze část vodiče, v záložce Options vybereme volbu Select the line segment Vodič lze přejmenovat tím, že jej vybereme a s pomocí pravého tlačítka myši zvolíme položku Rename selected net. Pozor! Vodiče se stejným jménem jsou propojené. Toto bývá častá chyba, kdy jeden vodič je rozdělen na dva se stejným jménem. Tuto vlastnost lze použit pro propojování jednotlivých částí schématu a tím schéma zpřehlednit. Pozor! Nezapomeňte si svůj návrh během své práce ukládat. Předejdete tak zbytečným nepříjemnostem. D) Přidání portů Porty slouží k připojení schématu s hierarchicky nadřazeným schématem, popřípadě jsou připojeny k vývodům samotného čipu. Vybereme nabídku Add I/O marker nebo zvolíme ikonu. Vstupní nebo výstupní smysl je určen automaticky. Jména portů jsou automaticky zvolena podle názvu vodiče, ke kterým je port připojen. Název lze změnit dvojitým poklepáním na značku portu. Otevře se okno Object Properties, v poli Name přepíšeme text na námi zvolený. Vizte následující obrázek:
Výsledné schéma vypadá takto:
E) Kontrola správnosti navrženého schématu V nabídce Tools vybereme položku Check Schematic. Pokud vše proběhloo v pořádku, ve spodní časti okna v záložce Console se objeví informace o bezchybné kontrole.
Pokud ale například pojmenujete 2 vodiče stejným jménem, objeví se informace o chybě. Chybný vodič pak naleznete pomocí nástroje vyhledávání, který najdete v nabídce Edit Find nebo pomocí ikony. Pro vyhledávání vodičů zvolte What = Nets. Chybu lze také zvýraznit klepnutím na chybovou hlášku v konzoli (na jméno souboru).
4. Vytvoření nového schématu se začleněním předchozího schématu Začlenění vytvořeného schématu do nového schématu si vyzkoušíme až v dalším příkladu. Pro tento jednoduchý příklad si vystačíme pouze s jednou úrovní schématu. 5. Simulace chování obvodu
Simulace je nedílnou součástí návrhu a je důležité ji provést. Pro takto jednoduchý příklad simulaci přeskočíme. Simulace slouží k otestování správného chování námi navrženého obvodu. 6. Propojení vývodů čipu se schématem Chceme-li nahrát náš obvod do přípravku, musíme definovat, jak se mají vývody ze schématu připojit na vývody našeho FPGA obvodu. Protože periferie (přepínače, tlačítka, LED) jsou na přípravku již napevno připojeny k vývodům FPGA obvodu, musíme hodnoty vývodů volit podle periferií, které chceme využívat. Jednotlivé perferie mají přímo na desce uvedeno v závorkách číslo pinu. Například přepínač SW7 je připojen k pinu K13 programovatelného obvodu FPGA. Souboru, ve kterém se ukládají informace o propojení schématu s vývody obvodu, se říká Implementation Constraints File. Tento soubor vytvoříme pomocí nabídky Project New Source. Okno New Source vyplníme podle vzoru: Zvolíme typ souboru Implementation Constraints File a název souboru gates.
Ostatní okna potvrdíme Next a Finish. Pokud se v záložce Sources neobjeví položka gates.ucf, máme patrně zvolen režim zobrazování souborů pro simulaci. Upravme v záložce Sources položku Source for na Synthesis/Implementation. Nyní v záložce Sources vybereme položku gates.ucf. V záložce Processes rozbalíme položku User Constraints a 2x poklepemee myší na položce Assign Package Pins.
Objeví se okno umožňující přiřadit jednotlivé porty schématu k vývodům obvodu FPGA.
Čísla vývodů obvodu FPGA se vpisují do sloupečku Loc (Location). Nyní si určíme, kam které vývody připojíme: Vstupům A, B, C, D, E, F, G, H přiřadíme přepínače SW7, SW6, SW5, SW4, SW3, SW2, SW1, SW0, tedy piny FPGA budou K13, K14, J13, J14, H13, H14, G12 a F12 (čísla vývodů-pinů jsou uvedena v závorkách přímo na přípravku). Výstupům P, Q, R, S přiřadíme LED7, LED6, LED5, LED4, tedy vývody FPGA budou P11, P12, N12 a P13. Po vyplnění soubor uložíme a okno zavřeme. Při dotazu na Bus Delimiter zvolíme XST Default. Vyplněná tabulka přiřazení vývodů schématu s vývody obvodu FPGA:
7. Překlad návrhu (Implementace) Implemetnace slouží k přeložení schématu do formy vhodné k naprogramování FPGA obvodu. Nejprve v záložce Sources zkontrolujeme, která položka je označena jako vrchol (TOP). V našem případě schéma, které je v hierarchii nejvýše. Tato položka je označena ikonkou tvořenou třemi čtverci, z nichž jeden je zelený. Pokud tomu tak není, pomocí pravého tlačítka vybereme tuto položku a zvolíme Set as Top Module. V záložce Sources vybereme položku označenou jako TOP.
V záložce Processes vidíme několik možností. Pro vytvoření souboru vhodného pro naprogramování obvodu FPGA je nutné postupně projít všechny kroky (Synthesize - XST, Implement Design, Generate Programming File) Tyto kroky můžeme pouštět postupně, popřípadě můžeme pustit vše najednou. 2x poklepeme na položce Generate Programming File a tím docílíme toho, že se provede vše najednou. Při hledaní chyb v návrhu doporučují pokračovat postupně a v případě, že se v záložce Console neobjeví Error, pokračovat dalším krokem.
Jednotlivé kroky lze pouštět opakovaně, a to s pomocí pravého tlačítka a patřičné volby (ReRun). Aktuální průběh Implementace lze sledovat v záložce Console. Pokud vše proběhlo v pořádku, jsou jednotlivé kroky implementacee označeny zeleným kolečkem s fajfkou.
Informace o možných doporučení a úpravách jsou označeny žlutým trojúhelníkem s vykřičníkem. Červeným kolečkem s křížkem jsou označeny kroky, které neproběhly. Ty jsou důsledkem chyb v návrhu. Pokud je překlad bez chyb, můžeme přejít k naprogramování obvodu. Připojte přípravek k napájecímu zdroji. Programovací kabel připojte k programovacímu konektoru. Zkontrolujte, zda zkratovací propojky J8 a JP1 jsou zkratovány tak, jak je zobrazeno na tomto obrázku: Rozbalte nabídku Generate Programming File v Processes, poklepejte na Configure Device (impact). Okno, které se objeví, odsouhlaste (Finish). Objeví se dva chipy a dialog pro otevření souboru. Zde vyberte Váš bitstream (.bit).
Další dialog přeskočte (zvolte Bypass).
Klikněte levým tlačítkem kamkoliv doprázdna (bug v ISE). Pravým tlačítkem klikněte na levý chip a zvolte Programm. Zkontrolujte, aby checkbox Verify nebyl zaškrtnut. Klikněte OK