ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Nástroje a metody pro simulaci, tvorba TestBench souborů Speciální interní struktury FPGA násobičky, PLL, RAM Kurz A0B38FPGA Aplikace hradlových polí OPERAČNÍ PROGRAM PRAHA ADAPTABILITA Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Nástroje a metody pro simulaci 1. část přednášky Kurz A0B38FPGA Aplikace hradlových polí A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 2 z 49
Nástroje pro simulaci VHDL ModelSim profesionální nástroj pro simulování a debugování, výrobce : Mentor Graphics, jde o nejrozšířenější a nejvíce používaný software Xillinx ISE Webpack(free IDE for Xillinx FPGA) součástí instalace tzv. ISE simulator (ISIM) ALTERA - QUARTUS II obsahuje speciální limitovanou verzi ModelSimu Altera edition (omezení na 10 000 řádek zdrojového kódu) + real-time logický analyzátor Signal Tap A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 3 z 49
ISE Simulator (ISim) A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 4 z 49
ModelSim - Altera Products ModelSim-Altera Products Product Details ModelSim- Altera Web Edition (1) ModelSim- Altera Starter Edition ModelSim- Altera Edition Price Discontinued FREE No license required $945, includes software updates for one year Buy Simulation Performance Quartus II Software Support 1x 1.5x 2x Quartus II Web Edition software Quartus II Web Edition and Subscription Edition software Device Support CPLDs and small FPGAs All Altera devices (Including MAX CPLDs, Arria, Cyclone, and Stratix series FPGAs) OS Support Windows XP Windows XP, Vista (32 bit) Red Hat Enterprise Linux 4 and 5 (32 bit) SUSE Enterprise Linux 10 (32 bit) Design Size Support Small designs 10,000 executable line limit Small designs 10,000 executable line limit All design sizes (2) A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 5 z 49
ModelSim - Altera Starter Edition A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 6 z 49
ModelSim - Altera Starter Edition Umožňuje ověření chování VHDL kódů V rámci simulace lze vidět chování všech požadovaných signálů či proměnných - lze např. měnit časové měřítko, vyhledávat události (náběžné, sestupné hrany), lze VHDL kód krokovat! Jak na simulaci? nutné založit nový projekt vytvořit nový VHDL soubor, případně přidat již připravený VHDL soubor(y) po té zvolit příkaz Simulate zadefinovat signály, které mají být v simulaci obsaženy korektně nastavit dobu simulace (lze změnit defaultní nastavení v menu Simulation Run-time options výstup z kompilátoru defaultně se nezobrazuje v okně Transcipt opět lze změnit v menu Projekt Project settings Display compilator output A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 7 z 49
Alternativní způsob práce s VHDL Využít volně dostupné textové editory s podporou VHDL syntaxe a možností volání externích programů (PSPad http://www.pspad.com/cz/, Notepad++ http://notepad-plusplus.org/ ) Obecný postup konfigurace textového editoru pro využití ModelSimu : Vytvoření pracovní knihovny (složky) work pro výstup kompilátoru (F9) příkaz vlib work Přeložení zdrojového souboru ve VHDL (test_entity.vhd) (F10) příkaz vcom.exe vcom -93 -O0 -check_synthesis test_entity.vhd Přeložení testovací souboru VHDL (testbench.vhd) (F10) vcom.exe vcom -93 -O0 -check_synthesis testbench.vhd V případě potřeby smazání pracovní knihovny (složky) work (F11) vdel all Spuštění ModelSimu (F12) vsim.exe Pozn.: PSPAD umožňuje blokový komentář (hl.menu formát zakomentovat) A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 8 z 49
Program Notepad++ A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 9 z 49
Program PSPad A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 10 z 49
ModelSim příprava pro simulaci 1.krok Po provedení předchozích kroků je vidět složka work mezi knihovnami - další krok rozkliknout složku work A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 11 z 49
ModelSim - příprava pro simulaci 2.krok Další krok dvojklik na položku testbench, eventulně pravé tlačítko na myši kontextové menu položka Simulate A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 12 z 49
ModelSim - příprava pro simulaci 3.krok A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 13 z 49
ModelSim - příprava pro simulaci 4.krok A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 14 z 49
ModelSim - příprava pro simulaci 5.krok A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 15 z 49
ModelSim - příprava pro simulaci 6.krok Poslední krok nastavit dobu simulace Spustit ji pomocí příkazu Run dobu simulace Spuštění simulace příkaz RUN A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 16 z 49
ModelSim - příprava pro simulaci 7.krok A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 17 z 49
Workflow při tvorbě VHDL projektů 1. Vytvoření zdrojových VHDL kódů realizující požadované chování, resp. požadovanou funkci 2. Verifikace pomocí tzv. testbench souborů 3. Fitting na již konkrétním FPGA testování přímo na konkrétním HW Testbech = VHDL kód napsaný za účelem ověření původního zdrojového VHDL kódu Cílem je stimulovat testovanou entitu pokud možno pro všechny možné kombinace a snímat všechny výstupní signály Testbench obvykle nemá žádné vstupy a výstupy jeho deklace je prázdna bez deklarace portů A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 18 z 49
Přístupy pro vytváření testbench souborů Realizace entity, která generuje na vstupech testované entity všechny možné kombinace (pokud je to reálné a časově schůdné) a kontroluje všechny výstupy používají se tzv. test vektory, ty jsou umístěny v test_bench souboru nebo v externím souboru využívá se textio.all package (read,write, radline, writeline atd.) Realizace entity, jenž obsahuje algoritmus (typicky v rámci procesu), kterým lze ověřit chování entity (např. testování čítače) A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 19 z 49
Příklad 1: Ověření entity čítač A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 20 z 49
Testbench pro ověření entity s testovacími vektory A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 21 z 49
Testbench pro ověření entity s testovacími vektory - pokračování A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 22 z 49
Příklad 2: entita pro ověření A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 23 z 49
Testbench založený na algoritmu A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 24 z 49
Testbench založený na algoritmu - prokračování A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 25 z 49
Generování signálu CLK A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 26 z 49
Generování pulzu A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 27 z 49
Generování sekvence bitů A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 28 z 49
Generování testovacích vektorů A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 29 z 49
Speciální interní struktury FPGA násobičky, PLL, RAM 2. část přednášky Kurz A0B38FPGA Aplikace hradlových polí A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 30 z 49
Speciální vnitřní struktury dostupné na FPGA Současné obvody FGPA typicky obsahují: Paměťové bloky Obvody fázového závěsu (PLL) slouží pro násobení a dělení kmitočtu Vestavěné násobičky (výhodné zejména pro číslicové zpracování signálů) Aktuální řada Cyclone V FPGA + ARM A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 31 z 49
Paměťové bloky Např. Cyclone II obvody obsahují vestavěné paměťové struktury pro adresování vnitřní paměti umístěné přímo na FPGA obvodu Vestavěné paměťové bloky - složeny ze sloupců bloků typu M4K memory blocks ty mohou být použity v různých režimech, např. jako RAM, first-in first-out (FIFO) buffers nebo ROM. M4K představují paměť typu RAM o velikosti 4kB (celkem 1Mbit) - pracují až na frekvencích 250 MHz. Organizace M4K: 4K 1, 2K 2, 1K 4, 512 8, 512 9, 256 16, 256 18, 128 32, 128 36 A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 32 z 49
M4K bloky The M4K mají tyto charakteristické rysy: až 1 Mbit of RAM dostupný bez jakékoliv další logiky 4,096 paměťových bitů /blok (s paritními bitami 4,608 bits) Proměnná konfiguace připojení Skutečný dual-port přístup(one read and one write, two reads, or two writes) Při zápisu lze využít bitovou masku pro zapisované data Lze paměť inicializovat pomocí externího souboru max. mezní pracovní kmitočet : 250 MHz A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 33 z 49
Klíčové vlastnosti a režimy M4k bloků Packed mode Address clock enable Single-port mode Simple dual-port mode True dual-port mode Embedded shift register mode ROM mode FIFO buffer Simple dual-port mixed width support True dual-port mixed width support Memory Initialization File (.mif) Mixed-clock mode Power-up condition - Outputs cleared Register clears - Output registers only Same-port read-during-write - New data available at positive clock edge Mixed-port read-during-write Old data available at positive clock edge A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 34 z 49
Počet M4K bloků v rámci řady obvodů Cyclone II Device M4K Blocks Total RAM Bits EP2C5 26 119,808 EP2C8 36 165,888 EP2C15 52 239,616 EP2C20 52 239,616 EP2C35 105 483,840 EP2C50 129 594,432 EP2C70 250 1,152,000 A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 35 z 49
Režim Single-port mode A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 36 z 49
Režim Simple dual-port mode A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 37 z 49
Obvody PLL umístění na FGPA A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 38 z 49
Vnitřní struktur PLL A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 39 z 49
Vestavěné násobičky na obvodech řady Cyclone II A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 40 z 49
A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 41 z 49
Jedna 18bitová vestavěná násobička A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 42 z 49
Dvě 9-ti bitové vestavěné násobičky A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 43 z 49
Jak se tyto bloky využít v rámci svého projektu? Spustit MegaWizard Plug-In Manager Zvolit patřičný typ paměti A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 44 z 49
Příklad 1: vytvoření jednoduché single port RAM A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 45 z 49
Příklad 2: vytvoření hodinové signálu pomocí PLL A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 46 z 49
Integrace výstupu MegaWizard Plug-In Manager Po vytvoření vlastního bloku - MegaWizard Plug-In Manager vygeneruje soubory *. VHD - definuje architekturu nově vytvořeného modulu *.CMP - definuje vytvoření jedné komponenty Příklad: deklarace komponenty RAM_256x8 component RAM_256x8 PORT ( address : IN STD_LOGIC_VECTOR (7 DOWNTO 0); clock : IN STD_LOGIC ; data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); wren : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ; end component; A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 47 z 49
Jak lze využít nově vytvořené bloky? Vložit novou komponentu do architektury entity, před klíčové počáteční slovo begin V těle architektury je potřeba vložit novou instanci této komponenty pomocí příkazu: dut: RAM_256x8 port map ( addr,clock, sw, pos_btn(0), data_out); A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 48 z 49
Dotazy? A0B38APH Aplikace hradlových polí - přednáška 6 Snímek 49 z 49