Úvod do vývojového prostředí Xilinx WebPack Petr Hampl
Autor: Petr Hampl Název díla: Úvod do vývojového prostředí Xilinx WebPack 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 se základy ovládání vývojového prostředí WebPack firmy Xilinx.
CÍLE V následujícím textu budete na jednoduchém příkladu seznámeni s jednotlivými fázemi návrhu jednoduchého sekvenčního logického obvodu. V první části textu jsou stručně popsány jednotlivé komponenty a periferie použitého vývojového kitu, Xilinx Spartan3E. V další části je na jednoduchém příkladu Johnsonova čítače demonstrováno, jak v tomto komplexním systému založit nový projekt, jak ověřit správnost návrhu behaviorální simulací. V poslední fázi je celý návrh implementován do zvoleného FPGA obvodu. Text je koncipován jako detailní návod, přičemž se předpokládá, že student má k dispozici vývojové prostředí Xilinx ISE Design Suite (doporučená verze 13.3).
LITERATURA [1]
LAFATA, Pavel; HAMPL, Petr; PRAVDA, Michal. Digitální technika. Praha: ČVUT, 2011. 164 s. ISBN 978-80-01-04914-3.
[2]
STRNAD, Ladislav. Základy číslicové techniky: cvičení. 1. vydání. Praha: ČVUT, 1996. 124 s. ISBN 80-01-01433-9.
[3]
HAVLAN, Martin. Konstrukce telekomunikačních zařízení: cvičení. Praha: ČVUT, 2004. 199 s. ISBN 80-01-03035-0.
[4]
PINKER, Jiří; POUPA, Martin. Číslicové systémy a jazyk VHDL. Praha: BEN technická literatura, 2006. 349 s. ISBN 80-7300-198-5.
[5]
ŠŤASTNÝ, Jakub. FPGA prakticky: realizace číslicových systémů pro programovatelná hradlová pole. Praha : BEN - technická literatura, 2010. 199 s. ISBN 978-80-7300-261-9.
[6]
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 Vývojový kit Spartan-3E ..................................................................................................... 6 1.1
Seznámení s přípravkem Xilinx Spartan-3E .............................................................. 6
1.2
Rozmístění klíčových komponent přípravku ............................................................. 7
1.3
Přehled a připojení základních vstupních/výstupních periferií přípravku 1/2 ........... 8
1.4
Přehled a připojení základních vstupních/výstupních periferií přípravku 2/2 ......... 10
2 Specifikace zadání .............................................................................................................. 12 2.1
Realizujte čtyřbitový Johnsonův čítač ...................................................................... 12
2.2
Schéma zapojení ....................................................................................................... 13
3 Úvod do prostředí Xilinx WebPack .................................................................................. 14 3.1
Založení nového projektu ......................................................................................... 14
3.2
Volba cílové platformy a simulátoru ........................................................................ 15
3.3
Realizace Johnsonova čítače .................................................................................... 17
3.4
Popis schematického editoru .................................................................................... 18
3.5
Pojmenování logických členů .................................................................................. 19
3.6
Pojmenování spojnic, definice vstupně/výstupních portů ........................................ 21
4 Simulace .............................................................................................................................. 22 4.1
Behaviorální simulace .............................................................................................. 22
4.2
Vytvoření testovacího souboru Test Bench.............................................................. 24
4.3
VHDL Test Bench .................................................................................................... 25
4.4
Spuštění simulátoru .................................................................................................. 28
4.5
Simulace činnosti čítače ........................................................................................... 29
5 Ověření funkce na reálném obvodu FPGA ...................................................................... 30 5.1
Zapojení přípravku ................................................................................................... 30
5.2
Režim Implementace ................................................................................................ 32
5.3
PlanAhead ................................................................................................................ 34
5.4
Syntéza a implementace pro zvolenou architekturu FPGA obvodu......................... 36
5.5
Příklad odstranění chyby vypsané v procesu Place & Route ................................... 38
5.6
Konfigurace obvodu programem iMPACT .............................................................. 40
5.7
Ověření funkčnosti obvodu ...................................................................................... 42
5.8
Test ........................................................................................................................... 43
5.9
Přehled ...................................................................................................................... 46
1 Vývojový kit Spartan-3E 1.1 Seznámení s přípravkem Xilinx Spartan-3E Pro urychlení vývoje výrobci programovatelných obvodů často nabízí přípravky – tzv. vývojové kity, jež disponují mimo vlastního programovatelného obvodu i řadou dalších doplňkových periferií. Typickým příkladem takového vývojového přípravku je Spartan-3E FPGA Starter Kit Board. Stručná charakteristika vybavení přípravku
Komponenta FPGA: Spartan 3E CPLD: CoolRunner Xilinx 4 Mbit Flash
Popis Xilinx XC3S500E, 232 využitelných I/O, 320 pinové FBGA pouzdro, více než 10.000 logických buněk Xilinx XC2C64A, 64 makrobuněk konfigurační paměť PROM
LCD display
64 MByte (512 Mbit) DDR SDRAM paměti, x16 datové rozhraní, 100+ MHz 16 MByte (128 Mbit) paralelní NOR Flash paměti (Intel StrataFlash) + 16 Mbits SPI serial Flash (STMicro) pro uložení konfigurace FPGA a uložení MicroBlaze kódu 2 řádky, 16 znaků
PS/2 port
pro připojení klávesnice nebo myši
VGA port
pro připojení monitoru
Ethernet port
10/100 Mbit/s
sériové porty
RS-232, dvojice 9 pinových konektorů 1xDTE+1xDCE USB rozhranní pro konfiguraci a ladění FPGA, CPLD a dalších obvodů vnitřní oscilátor 50 MHz, SMA vstup pro externí zdroj taktu, osmi pinová DIP patice pro přídavný oscilátor Hirose FX2, trojice 6 pinových rozšiřujících konektorů Digilent 4 výstupní D/A konvertory 2 vstupní A/D konvertory s programovatelným předzesílením 1 x otočný spínač s tlačítkovou funkcí, 4 x přepínač, 4 x tlačítko (mikrospínač) 8 indikačních LED diod
SDRAM paměť flash pamět
USB port zdroje taktu rozšiřující konektory A/D a D/A převodníky přepínače a tlačítka LED diody
1.2 Rozmístění klíčových komponent přípravku
Rozmístění hlavních komponent přípravku
7
1.3 Přehled a připojení základních vstupních/výstupních periferií přípravku 1/2 Na následujícím obrázku je uveden detailní pohled na jednodušší periferie přípravku.
Popis a označení vstupně/výstupních pinů přepínačů a LED diod
Posuvné přepínače Každý přepínač je připojen prostřednictvím plošného spoje k některému z pinů obvodu Spartan-3E. Pokud je přepínač v poloze „1“ (ON) je na příslušný pin přivedeno napětí 3,3 V, v opačném případě je daný pin uzemněn. Součástí zapojení není obvod odstraňující vliv zákmitů kontaktů. Odpovídající obvod je doporučeno implementovat přímo do FPGA.
8
Připojení přepínačů ke vstupům obvodu Spartan-3E
Přepínač
označení pinu SW0
L13
SW1
L14
SW2
H18
SW3
N17
8 LED diod Přehled výstupů, ke kterým jsou připojeny jednotlivé diody, je uveden v následující tabulce. Připojení LED diod k výstupům obvodu Spartan-3E
LED diodač
označení pinu LED 0
F12
LED 1
E12
LED 2
E11
LED 3
F11
LED 4
C11
LED 5
D11
LED 6
E9
LED 73
F9
9
1.4 Přehled a připojení základních vstupních/výstupních periferií přípravku 2/2
Popis a označení vstupně/výstupních pinů mikrospínačů a otočného přepínače
Tlačítka (mikrospínače) Tlačítka přípravku jsou připojena obdobným způsobem jako přepínače. V případě použití tlačítek je nebytné aktivovat interní pull-down rezistor, který zajistí připojení nulového napětí na vstup v době, kdy je kontakt mikrospínače rozpojen a odpovídající vstup FPGA obvodu je pak nezapojen. Uvedený problém není nutné řešit u posuvných přepínačů, pokud nepožadujeme ošetření vstupů i v době přepnutí přepínače. Připojení tlačítek ke vstupům obvodu Spartan-3E
tlačítko
označení pinu BTN_WEST
D18
BTN_NORTH
V4
BTN_EAST
H13
BTN_SOUTH
K17
10
Tlačítkový otočný přepínač V případě ROT_A a ROT_B kontaktů otočného přepínače je nezbytné aktivovat pool-up rezistor. Detailní rozbor zapojení obou kontaktů lze dohledat v uživatelském manuálu [6]. Připojení kontaktů otočného přepínače ke vstupům obvodu Spartan-3E
otočný spínač
označení pinu ROT_A
K18
ROT_B
G18
ROT_CENTER
V16
V předchozím textu jste se seznámili s uspořádáním klíčových komponent vývojového kitu Xilinx Spartan-3E se způsobem připojení základních periferií. Přičemž pro další návrh je nezbytné znát obvodové propojení těchto komponent s programovatelným obvodem Sparten-3E (FPGA). Nyní můžeme přistoupit k další části textu, návrhu a realizaci jednoduchého sekvenčního obvodu.
11
2 Specifikace zadání 2.1 Realizujte čtyřbitový Johnsonův čítač V následujícím textu se budeme zabývat realizací jednoduchého sekvenčního logického obvodu. Konkrétně půjde o realizaci čtyřbitového čítače čítajícího v Johnsonově kódu. V tabulce jsou uvedeny požadované stavy čítače. Jde o čítač modulo 8. Z tabulky je zřejmé, že jde o jistý druh kruhového posuvného registru. Johnsonův kód
N
q1 , q2 , q3 , q4
0
0 0 0 0
1
1 0 0 0
2
1 1 0 0
3
1 1 1 0
4
1 1 1 1
5
0 1 1 1
6
0 0 1 1
7
0 0 0 1
12
2.2 Schéma zapojení Návrh tohoto typu obvodu lze za předpokladu znalosti principu činnosti základních typů klopných obvodů provést intuitivně. Podrobný popis činnosti klopných obvodů lze nalézt např. v [1] nebo [4]. Pro vlastní realizaci zvolme klopné obvody typu D, jež jsou přímo součástí použitého FPGA obvodu Spartan3E. Logická hodnota na výstup qi je v případě prvních tří klopných obvodů
i = 1, 2,3 přenesena s dalším hodinovým pulzem na výstup qi +1 následujícího klopného obvodu. Na vstup prvního klopného obvodu je pak přivedena negace výstupu posledního klopného obvodu, tj. q1 <= not q4 (operátor <= zde má význam přiřazení signálu, podrobněji viz popis základní syntaxe jazyka VHDL [1]). Na výstupu q4 tohoto čítače je hodinový signál podělen, přičemž dělící poměr je dán vztahem:
k=
1 , 2n
kde n je počet bitů, resp. klopných obvodů, čítače. Je tak možné vytvořit děliče kmitočtů se střídou výstupního signálu 1:1.
Schéma zapojení čtyřbitového Johnsonova čítače modulo 8
13
3 Úvod do prostředí Xilinx WebPack 3.1 Založení nového projektu V době vytváření tohoto textu je k dispozici verze 13.3 vývojového prostředí ISE Design Suite. Dále uvedený postup je vytvořen pro tuto verzi, přičemž jej lze využít i pro starší a pravděpodobně i novější verze tohoto prostředí. Spusťte vývojové prostředí Xilinx ISE prostřednictvím zástupce v nabídce start: Start > Všechny programy > Xilinx ISE Design Suite 13.3 > ISE Design Tools > 64-bit Project Navigator nebo přímo zástupcem Xilinx ISE Design Suite 13.3 na ploše.
Po otevření vývojového prostřední bývá ve výchozí konfiguraci načten poslední otevřený projekt. Toto chování lze změnit volbou Always open last project v okně nastavení: Edit > Preferences… > ISE General. Vzhledem k tomu, že budeme vytvářet nový projekt, volbou z menu: File\Close Project stávající projekt uzavřeme a vytvoříme nový projekt: File > New Project s názvem „Johnson“ například v adresáři předmětu: „D:\A2B99DIT\Po0915“ viz obrázek. Protože náš první projekt bude vycházet ze schematického popisu navrhovaného obvodu, zvolte v seznamu Top-level source type: položku Schematic a pokračujte tlačítkem Next. Výchozí volba HDL je vhodná pro případ, kdy je projekt založen na popisu obvodu prostřednictvím některého z jazyků HDL (Hardware Description Language). Konkrétně lze použít jazyk VHDL (VHSIC Hardware Description Language) nebo Verilog.
14
3.2 Volba cílové platformy a simulátoru Vzhledem k tomu, že vývojové prostředí je totožné pro všechny programovatelné obvody firmy Xilinx, je nutné v následujícím okně zvolit cílovou platformu, na které bude náš projekt vyvíjen. Je možné vybrat jak konkrétní obvod (položky: Family, Device, Package, Speed), tak i celou vývojovou desku. Volbou: Evaluation Development Board: Spartan-3E Starter Board dojde k automatickému nastavení správného typu obvodu FPGA, tj. Spartan-3E (Family), označení obvodu (Device): XC3S500E, pouzdro (Package): FG320 a hodnota položky Speed, která globálně popisuje možnosti časování jednotlivých částí obvodu. Položka Simulator určuje typ simulačního nástroje, který bude v projektu použit. Je možné volit mezi následujícími simulátory: •
ISim: simulátor firmy Xilinx,
•
Modelsim: simulátor firmy Mentor Graphics,
•
Questa: simulátor firmy Mentor Graphics s podobnými vlastnostmi jako Modelsim, navíc umožňuje provádět pokročilé analýzy obvodu (Advanced Verification Methods).
V našem projektu zvolíme simulátor ISim (VHDL/Verilog) a jako preferovaný jazyk vybereme VHDL. Zbývající položky necháme ve výchozím nastavení, viz obrázek.
15
Pokračováním, tlačítko Next, je zobrazeno okno s přehledem dosud zadaných parametrů, jehož potvrzením, tlačítko Finish, je ukončen proces vytvoření nového projektu.
16
3.3 Realizace Johnsonova čítače Při implementaci modulu Johnsonova čítače použijeme schematický popis navrhovaného obvodu. Do projektu vložíme nový soubor se schématem. V okně Design klikneme pravým tlačítkem na název projektu a z kontextového menu vybereme první položku New Source…, případně je možné použít i ikonu z panelu nástrojů okna Desing. V následujícím dialogovém okně je možné zvolit typ nového souboru (modulu).
Mezi nejčastěji využívané moduly patří: •
Schematic: soubor se schématem, vytvořený v integrovaném schematickém editoru,
•
VHDL Modul: soubor s VHDL kódem, popisujícím funkci obvodu,
•
VHDL Library: obsahuje soubor předpřipravených a odladěných VHDL kódů,
•
VHDL Test Bench: soubor sloužící například k otestování navrhovaného modulu.
Zvolte typ Schematic a nově vytvářený soubor pojmenujte například „johnson“. Tlačítky Next a následně Finish ukončete průvodce přidáním nového souboru. Dále můžete pokračovat v tvorbě vlastního schématu.
17
3.4 Popis schematického editoru Na následujícím obrázku je okno s integrovaným editorem schémat. Současně jsou vyznačeny potřebné ovládací prvky nezbytné k vytvoření schématu.
Nejprve umístíme prostřednictvím nástroje Add Symbol na pracovní plochu potřebné logické členy: •
4x FDR: bistabilní klopný obvod typu D se synchronním resetem,
•
1x INV: invertor.
Jednotlivé logické členy jsou po výběru nástroje Add Symbol zobrazeny formou seznamu v podokně Symbols, kde jsou roztříděny do jednotlivých kategorií. Standardní logické členy naleznete v kategorii Logic, klopné obvody pak v kategorii Flip_Flop.
18
3.5 Pojmenování logických členů Logické členy jsou pojmenovány standardním způsobem (and, nand, or, nor, xor, inv, xnor), přičemž číslo v názvu součástky vyjadřuje počet vstupů součástky. Vyskytuje-li se v názvu součástky po čísle ještě písmeno b, za nímž následuje další číslo, označuje pak toto číslo počet negovaných vstupů. Např. „nand3b1“ představuje označení třívstupého hradla NAND s jedním negovaným vstupem. K dispozici jsou tři různé typy klopných obvodu: D, JK a T s různými variantami synchronních a asynchronních vstupů. Značení se skládá z několika písmen, např.: FDPE_1, Význam písmen ve zkratce je následující: •
F: klopný obvod (Flip-Flop),
•
D: klopný obvod typu D,
•
JK: klopný obvod typu JK,
•
T: klopný obvod typu T,
•
P: asynchronní vstup Preset,
•
C: asynchronní vstup Clear,
•
S: synchronní vstup Set,
•
R: synchronní vstup Reset,
•
E: vstup clock enable,
•
_1: negovaný hodinový vstup.
V projektu využijeme klopný obvod typu D se synchronním vstupem Reset: FDR. K dispozici jsou i další zajímavé kategorie předpřipravených modulů: •
Arithmetic: různé varianty sčítaček a násobiček,
•
Comparator: různé verze komparátorů (větší/menší - GT/LT, rovno - EQ),
•
Counter: různé varianty čítačů, např. Binary (B), BCD (D), Binary Carry Logic (C), Johnson (J), Ripple (R),
•
Decoders: dekodéry
•
Flip_Flop: klopné obvody řízené hranou hodinového pulzu, viz popis výše,
•
General: obecné symboly, např. GND, VCC, PullDown, PullUP,…
•
Latch: klopné obvody řízené úrovní
19
•
Logic: základní členy kombinační logiky (AND, NAND, OR, NOR, XOR, …),
•
Memory: paměti s různou délkou slova (1, 2, 4 ,8 bitů),
•
Mux: multiplexery,
•
Shift_Registers: posuvné registry.
V dalším kroku jednotlivé součástky propojíme prostřednictvím nástroje Add Wire. Vytvoření uzlu je ve schématu označeno modrým čtvercem.
20
3.6 Pojmenování spojnic, definice vstupně/výstupních portů Po vykreslení celého zapojení Johnsonova čítače je nutné pojmenovat jednotlivé vstupy a výstupy navrhovaného obvodu. Editor každé nově vytvořené spojnici přiřadí automatický název ve formátu: XLXN_34, kde číslo za podtržítkem vyjadřuje pořadové číslo spojnice ve schématu. Pro snadnější orientaci v návrhu je vhodné jednotlivé spoje přejmenovat tak, aby jejich název odpovídal signálu, který přenáší (např.: clock, reset, q1, q2, q3, q4). Volbou nástroje Add Net Name se současně automaticky stane aktivní záložka Options v panelech nástrojů, kde je možné zapsat nový název spojnice, např. „clock“. Kliknutím na spojnici dojde k jejímu přejmenování. V posledním kroku je nutné dodefinovat vstupní a výstupní porty prostřednictvím nástroje Add I/O Marker. Celé schéma je možné automaticky zkontrolovat nástrojem: Tools > Check Schematic. Kontrola však neodhalí funkční chyby návrhu. Případné chyby ve schématu jsou vypsány v okně Console.
21
4 Simulace 4.1 Behaviorální simulace V další části návrhu se budeme zabývat funkční – Behavioralní navrhovaného obvodu v simulačním nástroji ISim, jež je přímou vývojového prostředí Xilinx ISE Design Suite. Funkční simulací je simulace obvodu z hlediska principu jeho činnosti, tj. bez uvažování vlastností obvodu.
simulací součástí myšlena reálných
Vývojové prostředí umožňuje provádět simulace v různých fázích návrhu. Jednotlivé fáze návrhu je možné vidět v režimu Implementace v panelu Proceses (záložka Design): •
Desing Summary/Reports: statistiky návrhu (například využití jednotlivých částí komponent obvodu),
•
Design Utilities: umožňuje například zobrazit realizaci schématického popisu ve VHDL kódu,
•
User Constraints: v této části se provádí mapování vstupně výstupních pinů k jednotlivým signálům
•
Synthesize – XST: syntéza navrhovaného obvodu, zobrazení RTL ,
•
Implement Design: Translate, Map, Place & Route,
•
Generate Programming File: vytvoření souboru pro konfiguraci FPGA,
•
Configure Target Device: naprogramování obvodu,
•
Analyze Design Using ChipScope: Analýza návrhu programem ChipScope.
22
23
4.2 Vytvoření testovacího souboru Test Bench Test Bench: je testovací soubor umožňující simulovat (testovat) chování navrhovaného obvodu, za předem stanovených podmínek. Pro zápis tohoto souboru se zpravidla používá syntaxe jazyka VHDL případně Verilog. Soubor definuje hodnoty a časování vstupních signálů, dále může obsahovat popis očekávaných výstupních hodnot umožňující automatizovat celý testovací proces.
Nejprve přepněte prostředí z režimu Implementace do režimu Simulace. Přepnutím do režimu simulace je zpřístupněno menu pro výběr úrovně simulace, od nejjednodušší funkční (Behaviorální) až po simulaci s využitím modelu reálného obvodu po implementaci (Post-Route). Prozatím zvolte nejjednodušší metodu Behavioral. Připravte nový testovací soubor, VHDL testbench. Stejným způsobem jako v případě souboru se schématem využijte průvodce pro přidání nového souboru. Nejprve klikněte na ikonu New Source. V následujícím okně tentokráte zvolte jako typ nově vyvářeného souboru VHDL Test Bench. Po doplnění názvu souboru, např. „johnson_testbench“ pokračujte tlačítkem Next. V následujícím okně je možné vybrat zdrojový soubor modulu, pro který bude testbench vytvořen. Tlačítky Next a Finish v následujícím okně potvrďte ukončení průvodce.
24
4.3 VHDL Test Bench V předchozím kroku vytvořilo vývojové prostředí kostru pro nově vytvářený testbench. V takto vytvořeném VHDL modulu je použita komponenta johnson vycházející z vytvořeného schématu jako testovaná jednotka UUT - Unit Under Test. Strukturu a syntaxi vytvořeného souboru prostudujte. V kostře takto automaticky vytvořeného souboru nalezněte sekci začínající řádkem: -- *** Test Bench - User Defined Section ***
a končící řádkem: -- *** End Test Bench - User Defined Section ***
Tato část souboru je určena pro definici vstupních signálu pro naši testovanou jednotku UUT johnson. VHDL kód mezi výše uvedenými řádky nahraďte následujícím kódem: reset_gen : PROCESS BEGIN reset <= '1'; WAIT FOR 95 ns; reset <= '0'; WAIT; -- will wait forever END PROCESS; clock_gen : PROCESS BEGIN clock <= '1'; WAIT FOR 50 ns; clock <= '0'; WAIT FOR 50 ns; END PROCESS;
Výše uvedený kód popisuje dva procesy, přičemž první definuje vstupní signál reset a druhý hodinový signál clock. Detailní popis syntaxe lze nalézt například v literatuře [1] nebo [4].
25
Obsah celého souboru johnson_testbench.vhd je k nahlédnutí zde: -Vhdl test bench created from schematic D:\A2B99DIT\Po0915\Johnson\johnson.sch - Tue Jan 03 21:18:45 2012 --- Notes: -- 1) This testbench template has been automatically generated using types -- std_logic and std_logic_vector for the ports of the unit under test. -- Xilinx recommends that these types always be used for the toplevel -- I/O of a design in order to guarantee that the testbench will bind -- correctly to the timing (post-route) simulation model. -- 2) To use this template as your testbench, change the filename to any -- name of your choice with the extension .vhd, and use the "Source->Add" -- menu in Project Navigator to import the testbench. Then -- edit the user defined section below, adding code to generate the -- stimulus for your design. -LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; LIBRARY UNISIM; USE UNISIM.Vcomponents.ALL; ENTITY johnson_johnson_sch_tb IS END johnson_johnson_sch_tb; ARCHITECTURE behavioral OF johnson_johnson_sch_tb IS
26
COMPONENT johnson PORT( reset : IN clock : q4 : OUT q1 : OUT q2 : OUT q3 : OUT END COMPONENT; SIGNAL SIGNAL SIGNAL SIGNAL SIGNAL SIGNAL
reset clock q4 : q1 : q2 : q3 :
STD_LOGIC; IN STD_LOGIC; STD_LOGIC; STD_LOGIC; STD_LOGIC; STD_LOGIC);
: STD_LOGIC; : STD_LOGIC; STD_LOGIC; STD_LOGIC; STD_LOGIC; STD_LOGIC;
BEGIN UUT: johnson PORT MAP( reset => reset, clock => clock, q4 => q4, q1 => q1, q2 => q2, q3 => q3 ); -- *** Test Bench - User Defined Section *** reset_gen : PROCESS BEGIN reset <= '1'; WAIT FOR 95 ns; reset <= '0'; WAIT; -- will wait forever END PROCESS; clock_gen : PROCESS BEGIN clock <= '1'; WAIT FOR 50 ns; clock <= '0'; WAIT FOR 50 ns; END PROCESS; -- *** End Test Bench - User Defined Section *** END;
27
4.4 Spuštění simulátoru V předchozím bodu návrhu jsme vytvořili testovací soubor pro navrhovaný čítač. Nyní tento soubor využijte pro spuštění simulačního programu ISim. Důležité je, aby v okně Hierarchy byl označen soubor obsahující testbench „johnson_testbench.vhd“ a nikoliv soubor s testovaným modulem „johnson.sch“.
Poklepáním na položku Simulate Behavioral Model spusťte simulační program ISim. Při vytváření projektu jsme zvolili jako simulační nástroj, program ISim. Pokud bychom v tomto kroku návrhu zvolili například simulátor Modelsim, spustil by se stejným způsobem i tento nástroj.
28
4.5 Simulace činnosti čítače Ve výchozím nastavení je po spuštění simulátoru odsimulováno prvních 1 000 ns. Tuto výchozí hodnotu je možné změnit ve vlastnostech (Properties) procesu Simulate Behavioral Model Prozkoumejte jednotlivé panely nástrojů, primárně se zaměřte na panely vyznačené na obrázku.. Prostřednictvím ikony Zoom to Full View, zobrazte celý průběh všech signálů. Simulátor je možné ovládat i z příkazové řádky, okno Console. Například příkazem: # run 1.00us
je možné pokračovat v simulaci další mikrosekundu. Výsledek simulace odpovídá požadované činnosti obvodu, viz tabulka s Johnsonovým kódem. Pro přeuspořádání pořadí jednotlivých signálů je možné jednotlivé průběhy přesunout na požadované pozice. Vyzkoušejte si použití kurzorů, snažte se změřit periodu navrženého čítače, viz obrázek. Dále určete v jakém poměru je kmitočet hodinového signálu a výstupů jednotlivých klopných obvodů.
29
5 Ověření funkce na reálném obvodu FPGA 5.1 Zapojení přípravku Po úspěšném návrhu a ověření správnosti zapojení můžeme přistoupit k vlastnímu procesu implementace našeho čítače do reálného obvodu. Pro implementaci bude použit přípravek Spartan-3E FPGA Starter Kit Board popsaný v první části tohoto výukového modulu.
Připojte napájení, použijte 5 V napájecí zdroj dodaný k přípravku. Pokud je přepínač napájení (SWP) v poloze ON měla by se rozsvítit červená LED dioda (PWR LED). Zdroj a způsob načtení konfigurace se volí nastavením tří propojek J30 (jumper) na desce, podrobněji viz [6]. Konfigurace obvodu Spatran-3E může být po připojení napájení načtena například z některé z flash pamětí (Platform Flash PROM, SPI Serial Flash PROM, StrataFlash parallel Flash PROM) nebo prostřednictvím rozhraní JTAG. Pro naše testovací účely zvolíme poslední možnost. Propojeny by měly být pouze piny označené M1. Rozhraní JTAG je návrhovému nástroji zpřístupněné prostřednictvím konfiguračního USB portu. Dodaným USB kabelem propojte přípravek (strana kabelu s USB konektorem Typu B) s počítačem (konektor typu A).
30
Před první připojením přípravku k PC je doporučeno nejprve nainstalovat software Xilinx ISE Design Suite včetně ovladačů pro toto rozhraní. Po prvním připojení přípravku k PC je automaticky nainstalován a aktivován odpovídající ovladač. Pokud výše uvedený postup není dodržen, může se stát, že dojde k instalaci jiného ovladače, který neumožňuje korektně programovat obvod. Pokud proběhla správně inicializace USB portu, rozsvítí se zelená LED dioda (LD-G) umístěná v jeho blízkosti.
31
5.2 Režim Implementace V dalším kroku návrhu musíme specifikovat, ke kterým vstupům, resp. výstupům (piny FPGA obvodu), budou připojeny jednotlivé signály. Způsob připojení jednodušších periferií je popsán v úvodní části tohoto modulu. Detailnější popis lze dohledat v dokumentaci k přípravku [6].
Připojení výstupních portů Pro zobrazení stavu čítače zvolte libovolné čtyři diody z bloku osmi indikačních LED diod. Např.
Volba výstupních pinů
Připojení vstupních portů Navrhovaný čítač disponuje pouze dvěma vstupními signály, reset a clock. Vstupní signál reset ovládejte například přepínačem SW3 a signál clock generujte například jedním z kontaktů otočného přepínače.
Volba vstupních pinů Přepněte vývojové prostředí z režimu simulace zpět do režimu implementace (Implementation).
32
Pro přiřazení jednotlivých vstupních/výstupních signálů jednotlivým pinům FPGA obvodu je ve vývojovém prostředí připraven speciální program PlanAhead. Pro jeho spuštění rozbalte v záložce Design položku User Constraints a dvakrát klikněte na Floorplan Area/IO/Logic (PlanAhead). Následující okno informující o přidání nového souboru UCF (User Constraint File) do projektu potvrďte.
33
5.3 PlanAhead Program PlanAhead umožňuje detailně definovat, které signály budou připojeny na jednotlivé vývody (piny) FPGA obvodu. Ve výchozí konfiguraci programu není zobrazen pohled na pouzdro a jednotlivé piny obvodu. Volbou pokožky menu Window > Package je možné tento, pro návrháře plošného spoje, zajímavý pohled zapnout. Vlastní přiřazení jednotlivých signálu se provádí ve spodní části obrazovky, záložka I/O Ports. Klíčové prvky nezbytné pro tento úkol jsou opět vyznačeny v následujícím obrázku.
K jednotlivým signálům je nutné doplnit odpovídající vývody pouzdra, sloupec Site. Dále pak je nutné pro vstupní porty specifikovat ve sloupci PullType charakter vstupu (PullUu, PullDown, …), viz kapitola popisující periferie přípravku. Zavřete okno programu PlanAhead, v následujícím dialogu potvrďte uložení nově vytvořeného UCF souboru. Výstupem programu PlanAhead je textový soubor UCF (User Constraint File) jehož obsah je možné zobrazit například v textovém editoru přímo v prostředí WebPack.
Příklad výpisu obsahu souboru „johnson.ucf“ NET "clock" LOC = D18;
34
NET NET NET NET NET
"q1" LOC = F9; "q2" LOC = E9; "q3" LOC = D11; "q4" LOC = C11; "reset" LOC = N17;
NET "clock" PULLDOWN; NET "reset" PULLDOWN;
35
5.4 Syntéza a implementace pro zvolenou architekturu FPGA obvodu Dalšími kroky návrhu jsou syntéza (Synthesize), mapování na použitou technologii (Map) a rozmístění a propojení (Place & Route). Syntéza (Synthesize) je proces, při kterém návrhový software realizuje požadovaný obvod na základě z vysoce abstraktního zápisu většinou ve formě VHDL kódu. Při tomto procesu se syntetizátor (program provádějící syntézu) snaží optimálně ve zdrojovém VHDL kódu detekovat základní stavební bloky logických obvodů (kombinační logické obvody, registry, …), dochází zde například k volbě kódování vnitřních stavů sekvenčních logických obvodů. Mapování (Map) je proces, při kterém dochází ke konverzi – mapování technologicky nezávislého popisu obvodu (popsaného např. prostřednictvím netlistu), do struktur logických bloků dostupných ve zvoleném cílovém obvodu. Rozmístění a propojení (Place & Route). V tomto procesu dochází k výslednému rozmístění jednotlivých logických bloků získaných předchozím procesem mapování do matice zvoleného FPGA obvodu. Dále dochází k vytváření vhodné propojovací struktury mezi těmito bloky.
Spusťte jednotlivé kroky návrhu postupně dvojklikem na příslušný proces v záložce Design. Pokud daný proces návrhu proběhl korektně, je před jeho názvem zelené zatržítko. Při výskytu varovných hlášení se před daným procesem objeví symbol žlutého trojúhelníku s vykřičníkem, chyba je indikována červeným křížkem. Současně je vhodné sledovat výstupy jednotlivých kroků návrhu v okně Console. Pokud jste postupovali dle pokynů, měla by se v průběhu procesu (Place & Route) objevit následující chyba, viz obrázek.
36
Pokuste se vlastními silami (Internet, literatura, ...) vyhledat řešení, podrobný popis problému lze nalézt v okně Console. V případě, že se Vám řešení nepodaří nalézt v následujících 10 minutách, neztrácejte drahocenný čas a podívejte se na následující obrazovku.
37
5.5 Příklad odstranění chyby vypsané v procesu Place & Route Pokud jste chybové hlášení dočetli až do konce, pravděpodobně jste nalezli i řešení problému, jež vznikl v průběhu zpracování procesu Place & Route. Důvodem vzniku chyby je nestandartní propojení signálu clock přímo na jeden ze vstupů FPGA obvodu. Pro ověření funkce obvodu jsme se totiž rozhodli použít poněkud nevhodný zdroj hodinového signálu, jeden z kontaktů otočného přepínače. Návrhový software toto, pro praxi neobvyklé zapojení, označuje jako chybné, protože předpokládá použití v obvodu integrované architektury pro rozvod hodinového signálu.
Řešení Řešením je povolení takto nestandartního návrhu doplněním příslušného řádku: NET "clock" CLOCK_DEDICATED_ROUTE = FALSE;
do souboru UCF, viz následující obrázek.
Další spuštění procesu Place & Route by již mělo proběhnout bez chyb. Pro jistotu se podívejte do logu a zjistěte počet varovných a chybových hlášení. Předposledním krokem návrhu je vygenerování konfiguračního souboru, spusťte proces Generate Programming File.
38
Dále pak pokračujte vlastním naprogramování FPGA obvodu prostřednictvím rozhraní JTAG. Pro vlastní konfiguraci je v prostředí opět připravena speciální aplikace iMPACT. Pro její spuštění aktivujte proces Manage Configuration Proces (iMPACT).
39
5.6 Konfigurace obvodu programem iMPACT Program iMPACT umožňuje konfiguraci programovatelných obvodů na přípravku prostřednictvím rozhraní JTAG. Prostřednictvím položky z menu: Edit > Launch Wizard spusťte průvodce. V následujícím okně použijte výchozí nastavení, viz obrázek.
Pokud je přípravek připojen k PC proběhne jeho detekce a otevře se dialog pro výběr konfiguračního souboru pro FPGA obvod. Program si bohužel pamatuje poslední pracovní adresář, ujistěte se proto, že jste v adresáři správného projektu a vyberte soubor s příponou *.bit: johnson.bit. Volbu potvrďte tlačítkem Open. V dalším dialogu zamítněte konfiguraci Flash PROM tlačítkem No. Průvodce dále pokračuje dotazem na přiřazení konfiguračních souborů pro Flash paměť a obvod CPLD. V obou případech zamítněte volbu konfiguračního souboru tlačítkem Bybass. Poslední dialogové okno průvodce potvrďte tlačítkem OK. Klikněte pravým tlačítkem na první z obvodů a z kontextového menu vyberte první položku Program. Tímto krokem je dokončen proces programování FPGA obvodu.
40
Pokud byl proces programování úspěšný, objeví se v hlavním okně programu iMPACT zpráva Program Succeeded. Současně dojte i k rozsvícení oranžové diody označené XC-DONE.
41
5.7 Ověření funkčnosti obvodu Po naprogramování přípravku ověřte správnou činnost navrhovaného obvodu pootočením přepínače. Jaký je závěr z Vašeho testování? Pokud jste objevili nějaký problém, pokuste se identifikovat jeho příčinu.
42
5.8 Test 1. Zvolte správné pořadí při návrhu následujících procesů: mapování (Map), rozmístění a propojení (Place & Route), syntéza (Synthesize)?
a) mapování (Map), rozmístění a propojení (Place & Route), syntéza (Synthesize) b) syntéza (Synthesize), mapování (Map), rozmístění a propojení (Place & Route) c) rozmístění a propojení (Place & Route), mapování (Map), syntéza (Synthesize) správné řešení: b
2. K čemu slouží soubor UCF (User Constraint File)?
a) Obsahuje celý výpis (log) procesu návrhu (od procesu mapování až po syntézu) b) Obsahuje výstup automatizovaného procesu Place&Route, tj. rozmístění a propojení automaticky zvolených bloků. c) Přiřazuje jednotlivé signály jednotlivým vývodům FPGA obvodu. správné řešení: c
3. Jaký jazyk byl v právě vytvářené projektu použit pro tvorbu testovacího modulu (testbench file)?
a) VHDL b) Žádný, použili jsme schéma c) Verilog správné řešení: a
4. Který z režimů simulace poskytuje přesnější výsledky, tj. více se přibližuje reálné činnosti obvodu?
a) Behavioral b) Post Route c) Post-Map správné řešení: b
43
5. Jaké značení bude mít v knihovně součástek hradlo AND se třemi vstupy a jednou negací na výstupu?
a) and1b3 b) and3b1 c) nand3 správné řešení: c
6. Klopný obvod JK s asynchronním resetem bude v knihovně označen:
a) fdce b) fjkc c) ftc správné řešení: b
7. Klopný obvod D se synchronním resetem bude v knihovně označen:
a) fdc b) fjkc c) ftce správné řešení: a
8. Tříbitový Johnsonův čítač bude:
a) dělit hodinový kmitočet šesti. b) násobit hodinový kmitočet třemi. c) dělit hodinový kmitočet třemi. správné řešení: a
9. Soubor Testbench je:
a) definičním souborem pro program Benchmark umožňující otestovaní výkonu FPGA obvodu b) VHDL soubor sloužící k ověření správné činnosti zvoleného modulu c) binárním souborem pro program iMPACT, umožňující naprogramování a ověření funkce FPGA obvodu. správné řešení: b
44
10. VHDL modul je:
a) textový soubor s VHDL kódem popisujícím činnost obvodu b) textový soubor s binárním kódem popisujícím činnost obvodu c) nástroj umožňující vytvořit čítač s libovolným počtem stavů X (čítač modulo X) správné řešení: a
11. Projekt v prostředí Xilinx ISE Project Navigator může obsahovat:
a) Pouze jeden modul od každého typu b) Libovolný počet modulů o libovolném typu c) Pouze moduly shodného typu správné řešení: b
12. Pro definování vstupu a výstupů se v schematickém editoru používá nástroj:
a) Add I/O Net b) Add I/O Block c) Add I/O Marker správné řešení: c
13. Rozhraní JTAG se u přípravku používá:
a) pro konfiguraci jednotlivých programovatelných obvodů b) k distribuci taktovacího signálu c) rozvodu napájení správné řešení: a
14. Čítač modulo 4
a) je složen ze čtyř klopných obvodů b) cyklicky prochází čtyřmi stavy c) čítá v přímém kódu od hodnoty 000 do hodnoty 100 správné řešení: b
45
5.9 Přehled V průběhu tohoto krátkého textu jste se seznámili s realizací jednoduchého sekvenčního logického obvodu – Johnsonova čítače. Prostudovali jste dostupnou součástkovou základnu obvodu Spartan-3E. Na základě schematického popisu se Vám podařilo vytvořit ve schematickém editoru odpovídající realizaci navrhovaného obvodu. V další části jste se seznámili s možnostmi simulace navrhovaného obvodu v programu ISim. Osvojili jste si základní postupy práce v komplexním návrhovém prostředí Xilinx ISE Design Suite. Na praktickém příkladu jste dospěli k závěru, že mimo vlastního ověření funkčnosti obvodu simulací, je nezbytné obvod otestovat i po vlastní implementaci na zvolené cílové platformě.
46