ISE Webpack - navod
(k navodu patri jeste tento archiv
https://www.ordoz.com/gdg2vhdl/GDG_RTL_2019-05-26.tgz )
posilam slibovany step-by-step navod, jak zacit s ISE Webpack s integrovanym ISim - ten je ve free verzi limitovan na 50 000 radku kodu, coz nam prozatim staci. Pokud by jsme vsak do simulace chteli zapojit i model Z80, ROM a RAM, tak uz nam Webpack licence zrejme stacit nebude. Lze si vsak na mesic vyzadat zkusebne plnou licenci.
ISE je velikansky moloch, ktery obsahuje obrovske mnozstvi nastroju pro modelovani kodu pro FPGA a CPLD. Posledni verze ISE 14.7 ma nejake problemy s Win10 a proto ji maji ke stazeni ve dvou variantach. Pro stazeni instalacniho baliku je potreba zaregistrovat se na jejich webu - na tuto registraci vam vystavi licenci.
Varianta, ktera je oznacena (Win10) ma ke stazeni cca 7GB a funguje tak, ze si do pocitace nainstaluje virtualni PC s predinstalovanym Linuxem, ve kterem uz je nachystane ISE tak, ze se jej v ramci moznosti snazi integrovat do Win10 desktopu - moc pohodlne mi to neprislo.
https://www.xilinx.com/support/download ... ndows.htmlDruha varianta je instalator pro Win7 , XP a Linux - nejlepsi je IMHO stahnout Ful DVD Single file, ktery ma 7.7 GB
https://www.xilinx.com/support/download ... -14_7.htmlJa tady ma vmware workstation s vygenenoranym licencnim klicem, takze mi prislo lepsi nainstalovat si do nej Win7 a pouzit tu druhou variantu, protoze ta se od te Win10 verze lisi jeste tim, ze obsahuje podporu ke starsim FPGA chipum, ktere tady mam.
Po instalaci spustte ISE Design Suite a vyzadejte si Webpack licenci. Zvolte novy projekt, nastavte mu nazev napr. GDG_model. Nastavte Top-level source type: HDL. Volba soucastky je v tuto chvili asi celkem bezpredmetna. Ja nastavuji Family: Spartan3E, Device: XC3S1200E, Package: FG320. Dale pak Simulator: ISim, Preferred language: VHDL. OK.
Mate otevreny novy projekt, vlevo nahore je okno Design, ve kterem buidou umisteny nase VHDL modely. Vlevo dole je Process window, ze ktereho budeme spoustet ruzne akce a v okne dole nas zajimaji Errors a Warnings.
Vybalte obsah prilozeneho archivu do adresare projektu - tedy ./ISE_projects/GDG_model/RTL.
V design window jsou radio buttony Implementation a Simulation. Zvolte implementaci, kliknete nejprve levym mysitkem na nazev soucastky (xc3s1200...), nasledne pravou myskou vyvolat menu a v nem Add source. Bezte do adresare ./RTL/WHID_entity - v nem oznacte vsechny elementy a dejte otevrit a OK. Obsah podadresare ./tests klidne vynechte - jsoui v nem jen tesbenche k tem elementum a zbytecne by vam tam prekazely.
Nyni znova Add source, oznacte ty 3 soubory v adresari RTL, otevrit, a v nasledujicim okne zmente u TEST_GDG_internal.vhd policko Association z All na Simulation a OK.
Kresleni schematu podle RTL:
========================
Schema modelu celeho GDG je uz ponekud neprehledne, proto jsem tam nachystal modul s delickou hodin pro CPU. V implementaci kliknout na GDG_module_CPU, pak pr. myskou v menu zvolit Set as top module. Znovu oznacit GDG_module_CPU - pokud uz nemate a v procesnim okne u nej mate nove volby. V procesnim okne rozkliknout Synthesize - XST a bud 2x kliknout na View RTL Schematics, pripadne nekdy dvojklik nezabira a je potreba otevrit si nad nim menu a zvolit Rerun All. Ve wizardu si zvolte treba zobrazeni top-level bloku. Nyni vidite cely modul jako jednu soucastku. Dvakrat na ni kliknete a otevre se schema - muzete samozrejme rozkliknout i dalsi uroven a zobrazit obsah entit, ale to uz je pro nase ucely neprehledne. Dole mate moznost vyhledat jednotlite elementy, piny, nety...
Simulace:
========
V design window zvolte Simulation, klik na TEST_GDG_internal. V procesnim okne rozkliknout oznacit Simulate Behavioral Model, pravym tlacidlem menu a Process Properties. Tam nastavit pozadovanou delku simulace - napr. 1 ms. Nasledne dvojklik, nebo rerun all nad Simulate Behavioral Model. Nakompiluje se simulace a otevre se ISim. IMHO to neni uplne nejintuitivnejsi program... Roler okna se zobrazenim signalu si vytahnete uplne nahoru - tam jsou fungujici (zelene) signaly na kterych se i neco deje. Hned potom - nikam neklikat, CTRL + koleckem mysi k sobe provedete zoom tak, ze uvidite hrany jednotlivych signalu. jak uz jsem napsal, tak to simulacni okno je trochu bitva. Lze si v nem vlevo rozkliknout cely simulovany modul a vytahnout si ven i signaly, ktere nejsou uvedeny jako vstupne vystupni porty.
Kliknete zpatky do ISE a v simulaci si dvojklikem otevrete TEST_GDG_internal. Rollerem sjedte az na konec souboru, tam je videt kod simulace. Za radkem 627 si muzete pridat:
wait for i_CLK0_period * 10; -- pockat 10 taktu CLK0
i_NTPL <= '1'; -- prepnout na CPU = CLK0 / 4
Ulozit. Kdyby jste chteli nyni znova spustit simulaci, tak to skonci s chybou, protoze mate otevreny ISim a zkompilovany modul nejde prepsat. Ukoncete nejprve ISim a potom dvojklik a nebo rerun all, pokud jste uz pred tim kliknuli a skoncilo to s chybou. V pripade, ze jste udelali v kodu nejakou chybu, tak se vam simulace nespusti a v dolnim okne Errors naleznete nejake povidani o tom co se mu nelibilo.
Nyni v simulacnim okne vidite co zpusobila zmena urovne na i_NTPL.
Obcas se mi stane, ze si v design window v simulaci rozkliknu ten test a kliknu na entitu, treba proto, abych v ni neco zeditoval. Nevsimnu si, ze mi zustala nahore v simulacich oznacena entita a nikoliv TEST a v procesnim okne spustim simulaci. Ta se nakompiluje, ale v ISim jsou pak samozrejme nesmysly.
Vytvoreni nove vlastni simulace:
===========================
V design window zvolte implementaci, klik na soucastku, pr. tlaco -> New source. Source type vyberte VHDL Test Bench. Filename napr. TEST_module_CPU - doporucuji umistit jej do adresare RTL. V Associate Source oznacte GDG_module_CPU - ISE za vas vytvori vetsinu potrebneho kodu. Pokusi se sam identifikovat vstupni hodinove signaly (v tomto pripade naprosto blbe a vyrobi k nim procesy.
Najedte na radek 152, smazte tam vsechny spatne vytvorene konstanty a vytobte tam novou:
constant i_CLK0_period : time := 56.387 ns;
Na radku 211 zacina -- Clock process definitions
Tady opet smazte vsechny procesy pracujici s temi spatne identifikovanymi hodinovymi signaly, tzn az po radek 253 -- Stimulus process.
Misto nich nadefinujte spravny proces pro i_CLK0:
-- Clock process definitions
i_CLK0_process :process
begin
i_CLK0 <= '0';
wait for i_CLK0_period/2;
i_CLK0 <= '1';
wait for i_CLK0_period/2;
end process;
V casti -- Stimulus process si pripadne asi budete chtit predefinovat ten pocatecni wait a doplnte co potrebujete - priklad je k videni v TEST_GDG_internal.
V Simulate Behavioral Model si nezapomente nastavit process properties.
PS: cist se mi to uz po sobe nechce - snad nebude mnozstvi preklepu vetsi, nez male.
Michal