Č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
Price
ModelSimAltera Web Edition (1)
ModelSimAltera Starter Edition
ModelSimAltera Edition
Discontinued
FREE No license required
$945, includes software updates for one year Buy
1x
1.5x
2x
Simulation Performance Quartus® II Software Support Device Support
OS Support
Design Size Support
Quartus II Web Edition software
Quartus II Web Edition and Subscription Edition software
CPLDs and small FPGAs
All Altera devices (Including MAX® CPLDs, Arria, Cyclone, and Stratix series FPGAs)
Windows XP
Windows XP, Vista (32 bit) Red Hat Enterprise Linux 4 and 5 (32 bit) SUSE Enterprise Linux 10 (32 bit)
Small designs 10,000 executable line limit
A0B38APH Aplikace hradlových polí - přednáška 6
Small designs 10,000 executable line limit
All design sizes (2)
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,
A0B38APH Aplikace hradlových polí - přednáška 6
128 × 36
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
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
Total RAM Bits
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