Pannon Egyetem, MIK-VIRT, Veszprém
Dr. Vörösházi Zsolt
[email protected]
Tervezési módszerek programozható logikai eszközökkel 3. Xilinx ISE Design Suite integrált fejlesztő rendszer használata. ISim szimulációs eszköz használata
Mérnöktovábbképző tanfolyam
Tárgyalt ismeretkörök 3. előadás I.) Xilinx ISE Design Suite fejlesztő környezet, II.) Xilinx ISim integrált szimulátor használata.
2
Bemutatás egyszerű példán keresztül
I. XILINX ISE DESIGN SUITE (14.7)
3
Xilinx ISE Design Suite 14.7 Laborokon a Xilinx ISE Design Suite 14.7 integrált fejlesztő keretrendszert használjuk! • *ISE Project Navigator: integrált fejlesztő környezet, amelyből más program modulok indíthatók, mint pl: – Core Generator – IP magok paraméterezése – Schematic Editor – Kapcsolási rajz szerkesztő
• *ISim integrált szimulátor • PlanAhead – Teljes tervezési folyamat menedzselése • Xilinx Platform Studio (XPS) = EDK + SDK – Beágyazott rendszer firmware + szoftver együttes tervező / fejlesztő környezete • Timing Analyzer – Időzítési analizátor • FPGA Editor (FPGA chip layout) • *iMPACT– Bitstream (FPGA konfiguráció) letöltő program / debug • ChipScope: logikai analizátor * Következő előadáson részletesen tárgyaljuk és használjuk
4
Xilinx ISE Project Navigator
Xilinx CoreGenerator • Paraméterezhető IP-k (Intellectual Property, azaz ún. „Szellemi termékek”) adatbázisa, amelyeket kifejezette Xilinx FPGA eszközökre optimalizáltak. Különböző előre elkészített funkciók katalógusa, melyek paraméterei GUI-n keresztül konfigurálhatóak. Ezekből szimulálható, illetve szintetizálható, ált. titkosított (encrypted) forrásokat, leírókat generálhatunk, melyek beépíthetők a FW tervekbe. • A generálható IP-k rendkívül sokoldalúak, komplexitásuk az egyszerű FIFO-tól egészen a memória vezérlőkig, szűrőkig terjedhet. Van közöttük: – Legtöbb szabadon elérhető (freely available), mások – Licensz kötelesek (licensed), de időkorláttal kipróbálhatóak*
• Low-level - alap blokkok/ funkciók: – Komparátorok, számlálók, Shift Regiszterek, Ált. Regiszterek, Akkumulátorok – FIFOs, (soft-core) Memória vezérlők
• High-level - rendszer szintű funkciók: – – – –
Reed-Solomon Dekódoló – Kódoló, FIR szűrő, FFT (DSP alkalmazásokhoz) Szabványos busz interfészek (PCI™ , PCI-X™ …) Hálózati interfészek, összeköttetések (Ethernet, SPI-4.2, PCI …) PCI EXPRESS® mikroprocesszor interfészek 6
Xilinx ISE: Egyszerű példa • Digilent Nexys-2 FPGA kártyán található LED-ek, illetve kapcsolók összekötése (egyelőre anélkül, hogy a VHDL nyelvi elemeit részletesen tárgyalnánk) – Feladat: 8 kapcsoló (sw<7:0>) összekötése a 8 LED kijelzővel (led<7:0>)
• Főbb lépések a következők: – 1. Projekt létrehozása (Create project). – 2. HDL fileok létrehozása (újat) vagy hozzáadása (már meglévőt). – 3. HDL nyelvi szintaxis ellenőrzése (Check HDL syntax).
• ISE Project Navigator indítása: – Programok → Xilinx ISE Design Suite 14.7 → ISE → Project Navigator 7
1.a.) Projekt létrehozása Egy ISE projekt alapvető információkat tartalmaz a forrás fileokról (pl. HDL, EDIF), illetve a használt FPGA eszközről (target device) • a.) Project Navigator, File menü → New Project → (A New Project Wizard) New project ablaka jelenik meg. Adjuk meg a projekt nevét („sw8toled8”), és elérési útját. - Figyeljünk arra hogy az elérési út NE tartalmazzon ékezetet és white-space karaktereket! - A projekt neve, és majd a HDL forrás neve NE kezdődjön számmal, csak betűvel (de lehet bennük szám). - Lehetőség szerint a projekt neve és a forrás(ok) neve legyen eltérő, a későbbi hibaüzenetekben szereplő azonosítás végett. • Ellenőrizze, hogy a „Top-level” típus, azaz a legfelső hierarchia szinten lévő forrás típusa a HDL (lehet még EDIF/Schematic/NGC/NGO formátumot is hozzárendelni a projekthez).
8
1.a.) Projekt létrehozása
1
2
9
1.b.) Projekt beállításai Itt kell megadni a használt FPGA eszköz típusát. Ez a Digilent Nexys-2 kártya adatlapjában pontosan meg van adva, illetve ennek legtöbb paramétere az FPGA-s chip tokjáról is leolvasható. - Product Category: All - Family: Spartan3E - Device: XC3S1200E //(Nexys-2 1200K) #1-2. kártya XC3S500E //(Nexys-500K) #3-10. kártya, vagy - Package: FG320 - Speed grade: -4
• New Project Wizard -
Device Properties ablak.
Szükséges lehet azt is ellenőrizni, hogy a Xilinx XST szoftver van-e kiválasztva a szintézis eljáráshoz (mivel lehet külső gyártó szoftverét is alkalmazni) - Synthesis Tool: XST (VHDL/Verilog) //Xilinx Systhesis Tool for XST - Szimulátor: Isim (ISE beépített szimulátor modulja, később ModelSim XE-t használjuk) - Preferált nyelv: VHDL (lehetne akár verilog HDL is) Néhányszor ‘Next’-et kell nyomni a következő dialogus ablakokra majd ‘Finish’ . 10
1.b.) Projekt beállításai
!
11
2. Tervezői file (HDL) hozzáadása • Itt kell hozzáadni a meglévő, vagy létrehozni egy HDL forrás filet. – a.) Project menü + New Source. New Source Wizard - Select Source Type ablak jelenik meg. Itt a ‘VHDL Module’-t kell kiválasztani. A file
neve legyen „sw2led.vhd”. NEXT. – b.) A következő ablakban a port neveket lehet megadni, típusaikkal, illetve busz szélességükkel. • Port Type/Name/Bus: Input ‘sw’ – busz típus – (7:0) • Port Type/Name/Bus: Output ‘led’ – busz típus – (7:0)
•
Architektúra neve maradhat alap Behavioral (azaz viselkedési). NEXT – c.) Summary ablakra egy ‘Finish’ után egy új HDL szöveges szerkesztő jelenik meg a workplace window-ban Az ISE szoftver automatikusan generálja le a HDL forrásfile tartalmát, amely a headert, library neveket, entitás deklarációkat és egy üres architektúra vázat tartalmaz – d.) Alapértelmezettként, az ISE a következő library hozzárendeléseket generálja le : library IEEE; use IEEE.STD_LOGIC_1164.ALL; A fenti könyvtár IEEE szabvány, de lehet helyette még alkalmazni a IEEE.STD-LOGICARITH.ALL, vagy a IEEE.STD-LOGIC-UNSIGNED.ALL könyvtárakat is. – e.) a szöveges editor használható a VHDL forráskód szerkesztéséhez – f.) Ha szükséges ezek a lépések megismételhetőek, amikor több forrásfilet is hozzá kell adni a projekthez
12
2.a.) HDL modul létrehozása
1
2
13
2.b.) Portok megadása
3
14
2.c.)-e.) Generált HDL forrásfile library IEEE; use IEEE.STD_LOGIC_1164.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values -- use IEEE.NUMERIC_STD.ALL; -----
Uncomment the following library declaration if instantiating any Xilinx primitives in this code. library UNISIM; use UNISIM.VComponents.all;
entity sw2led is Port ( sw : in led : out end sw2led;
STD_LOGIC_VECTOR (7 downto 0); STD_LOGIC_VECTOR (7 downto 0));
architecture Behavioral of sw2led is begin
Ide kerülhetnek a felhasználói kódrészletek end Behavioral;
15
3.) Szintaxis ellenőrzés • Végül a HDL forrás(ok) szerkesztése után a Check Syntax segítségével lehet a nyelvi szintaxis ellenőrzést elvégezni – a.) A kívánt HDL forrás kiválasztása a Sources ablakban. – b.) Majd alatta a Processes ablakban, click [+] ikonon az XST Synthesize mellett, megjeleníthetők az egyes hierarchia szintek. – c.) Double-click a Check Syntax process-en.
• A transcript ablak jeleníti meg az ellenőrzés eredményét (riportolja az esetleges hibákat, és figyelmeztetéseket stb.) – Hiba/leáll a futtatás = vörös X , Figyelmeztetés/továbblép = sárga !
• Mindaddig amíg hiba van a forrásfile-ban (warning megengedhető), el kell végezni a korrekciót és a Szintaxis ellenőrzést. – I. ) Próbaképpen: a begin és end közötti részre adjuk meg először: sw <= led; //Ekkor hibát kapunk mivel az inputhoz rendeltük az output-ot, tehát a portok irányultságához képest ellentétesen van hajtva.
– II. ) Majd próbáljuk ki: led <= sw; // Ekkor OK. 16
3. a.) Check Syntax hiba
17
3. b.) Check Syntax OK.
18
View Technology Schematic
19
Bemutatás egyszerű példán keresztül
II. XILINX ISIM INTEGRÁLT SZIMULÁTOR 20
Felhasznált irodalom: •
Xilinx ISim In-depth tutorial (UG682): – www.xilinx.com/support/documentation/sw_manuals/xilinx14_3/ug682.pdf
•
Xilinx ISim User Guide (UG660): – www.xilinx.com/support/documentation/sw_manuals/xilinx14_7/plugin_ism.pdf
•
Digilent Nexys-2 reference manual: – http://digilentinc.com/Data/Products/NEXYS2/Nexys2_rm.pdf
•
Digilent Adept Suite: – http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,66,828&Prod=ADEPT2
21
Xilinx ISE + ISim • Xilinx ISE Design Suite (14.7) • Xilinx ISim integrált HDL szimulátor (14.7) – Ez egy alternatív lehetőség a helyett, hogy a kereskedelmi forgalomban kapható, piacvezető professzionális Mentor ModelSim szimulátort használjuk, – Létezik néhány ingyenes HDL szimulációs eszköz is, pl. Icarus Verilog, Verilator, GHDL, etc. – On-line szimulátorok: • http://www.edaplayground.com • http://iverilog.com/ 22
Eml.: új ISE project létrehozása • File -> New Project • Projekt neve: „myand2” • Top-level forrás file típusa: „HDL”
23
ISE projekt beállításai Kiválasztani: • Family: Spartan3E • Device: XC3S500E / XC3S1200E • Package: FG320 • Speed -4
• Synthesis tool: XST • Simulator: ISim ! • Preferred Language: VHDL
!
24
Új VHDL forrás létrehozása • Project → New Source… – VHDL Module kiválasztása
• File név („myand2g”)
1
2
25
Modul (entitás) név, portlista • Legyen két bemenete: (a,b) input irányultságú • Legyen egy kimenete: (c) output irányultságú
26
VHDL forráskód: AND kapcsolat
• CTRL+S: VHDL forrásfile mentése (*) • Check Syntax: fontos a helyes VHDL szintaxis ellenőrzése tesztelés és fordítás (szintetizálás) előtt.
27
Testbench: tesztkörnyezet összeállítása • „myand2g – Behavioral (myand2g.vhd)” kijelölése a forrás ablakban. Project → New Source • ① VHDL Test Bench kiválasztása • ② File név („myand2g_tb”) Konvenció: <_tb> jelölje a testbench-et mindig.
2
1
28
Testbench hozzárendelés
1
29
Testbench fájl megnyitása 1
• ① View: Simulation • ② [+] „myand2g_tb” megnyitása • ③[+] ISim simulator megnyitása
2
3
30
Testbench sablon módosítása ARCHITECTURE behavior OF myand2_tb IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT myand2g PORT( a : IN std_logic; b : IN std_logic; c : OUT std_logic ); END COMPONENT; --Inputs signal a : std_logic := '0'; signal b : std_logic := '0'; --Outputs signal c : std_logic; -- No clocks detected in port list. Replace
below with appropriate port name BEGIN
-- Instantiate the Unit Under Test (UUT) uut: myand2g PORT MAP ( a => a, b => b, c => c ); -- Stimulus process stim_proc: process begin -- hold reset state for 100 ns. wait for 100 ns; -- insert stimulus here a <= '1'; wait for 10 ns; b <= '1'; wait for 5 ns; a <= '0'; wait for 20 ns; b <= '0'; wait for 10 ns; wait; end process; END;
31
ISim szimulátor beállításai • Fontos: testbench kiválasztása • Processes ablak → [-]„ISim Simulator” • ① Jobb klikk Simulate Behavioral Model , majd Process Properties…
!
1
32
ISim Simulation Properties beállítások • Display level: „Advanced” • Simulation Runtime 200 ns • Other Compiler Options: -timeprecision_vhdl 1ns 2 3
1
ISim szimulátor indítása • Simulate Behavioral Model indításával – Waveform ablak nyílik meg, melyben – a gerjesztéseknek (stimulus) megfelelő kimeneti jelek vizsgálhatóak.
!
1
34
ISim felhasználói interfész: waveform ablak
35
ISE – szintézis / implementáció 1
• Sources ablak: „Implementation” kiválasztása • „myand2g – Behavioral” kiválasztása • Processes ablak: dupla kattintás „Synthesize – XST”
2
3
36
View RTL Schematic
37
View Technology Schematic
38
User Constraints: felhasználói megkötések • Sources ablak: „myand2g – Behavioral” kiválasztása • Project menü →New Source
• Implementation Constraint File kiválasztása a listából (.ucf) • File név (myand2g)
Két megoldás is van az FPGA fizikai lábak hozzárendelésére (assign pin constraints): a.) text editor (ISE) b.) grafikus Floorpan IO Editor (Pin Planner)
39
a.) FPGA lábak: text editor • Sources ablak: [+] „myand2g – Behivioral”
• Edit Constraints by text
– „myand2g.ucf” kiválasztása
• Processes ablak: User Constraints
40
a.) Assign Package Pins: myand2g.ucf • Master UCF fileok megnyitása Nexys2 500K / 1200K: – http://digilentinc.com/Data/Products/NEXYS2/Nexys2_500General_UCF.zip – http://digilentinc.com/Data/Products/NEXYS2/Nexys2_1200General_UCF.zip
#LEDs és #Switches szekciók átmásolása a myand2g.ucf fájlba: # Leds NET "Led<0>"
LOC = "J14"; # Bank = 1, Pin name = IO_L14N_1/A3/RHCLK7, Type = RHCLK/DUAL, Sch name = JD10/LD0
# Switches NET "sw<0>" LOC = "G18"; # Bank = 1, Pin name = IP, Type = INPUT, Sch name = SW0 NET "sw<1>" LOC = "H18"; # Bank = 1, Pin name = IP/VREF_1, Type = VREF, Sch name = SW1
„led<0>” átnevezése → „c”, „sw<0>” átnevezése → „b”, „sw<1>” → „a”. Végül: myand2g.ucf mentése.
41
b.) Assign Package Pins • Sources ablak: [+] „myand2g – Behivioral” • Processes ablak:
• Floorplan Design kiválasztása
– [+] Place & Route kiválasztása.
42
b.) Assign Package Pins • Layout menü -> IO Planning • Site-ok beállítása – a: H18 //SW1 – b: G18 //SW0 – c: J14 //LED0
43
Implement Design • Processes ablak: Implement Design
• Place and Route (PAR) Report ellenőrzése a Console-ban: LOCed IBUFs/IOBs.
Design Summary Report: Number of External IOBs Number of External Input IOBs Number of External Input IBUFs Number of External Output IOBs Number of External Output IOBs Number of External Bidir IOBs Number of Slices Number of SLICEMs
3 out of 232 2 2 1 1 0 1 out of 4656 0 out of 2328
1%
1% 0%
44
Programming File Properties • Processes ablak: Generate Programming File -> Properties… • Startup Options / FPGA Start-Up Clock to JTAG Clock. OK. • Start Generate Programming File
45
Adept Suite – FPGA konfigurálás lépései • ① USB kábel csatlakoztatása Nexys2 kártyához. Kártya bekapcsolása. • ② Digilent → Adept indítása • ③Config Tab
• ④Initialize Chain • ⑤Browse… „myand2g.bit” FPGA konfigurációs file (bitstream) • ⑥Program
3
2
4
1 46
Feladat 1.): teljes „Design Flow” • Switch-Led feladat implementálása FPGA-n – SW(7:0) összekapcsolása LED(7:0)-el, – Check Syntax -> Synthesis -> Implementation -> Generate bitstream lépések végrehajtása, – VHDL Testbench készítése („sw8toled8_tb”néven) és a .vhd forrásfile viselkedési szimulációja Xilinx ISim segítségével, – .bit (bitstream) letöltése a Spartan-3E FPGA-ra (Nexys2) az Adept Suite segítségével. – Ellenőrzés.
47
Feladat 2.) • A képen látható kombinációs logikai hálózat megtervezése és implementálása VHDL-ben („multi_gates.vhd” néven), amely a következő kapukat és összeköttetéseket tartalmazza: – – – –
SW(1:0) port -> ‘a’ és ‘b’ bemenetekre LED(5:0) port -> az egyes ‘<xyz>_gate(s)’ kezelésére Check Syntax -> Synthesis -> Implementation -> Generate bitstream VHDL Testbench készítése („multi_gates_tb.vhd” néven) és a .vhd forrásfile viselkedési szimulációja Xilinx ISim segítségével – .bit (bitstream) letöltése a Spartan-3E FPGA-ra (Nexys2) az Adept Suite segítségével. – Ellenőrzés.
48
Feladat 2.) library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity multi_gates is port( a : in STD_LOGIC; b : in STD_LOGIC; and_gate : out STD_LOGIC; nand_gate : out STD_LOGIC; or_gate : out STD_LOGIC; nor_gate : out STD_LOGIC; xor_gate : out STD_LOGIC; xnor_gate : out STD_LOGIC ); end multi_gates; architecture Behavioural of multi_gates is begin and_gate <= a and b; nand_gate <= a nand b; or_gate <= a or b; nor_gate <= a nor b; xor_gate <= a xor b; xnor_gate <= a xnor b; end Behavioural;
49