[Home](index.html) | Vivado | [Blokovni diagram](vivado-blok.htm) | [Enostaven IP](vivado-ip.htm) | [AXI IP](vivado-axi.htm) [SDK](sdk.htm) # Osnove programa Vivado 2017 Predstavili bomo najbolj osnovne korake idelave RTL projekta v programu Xilinx Vivado 2017. Projekt se nahaja v mapi, ki vsebuje datoteko z opisom projekta __projekt.xpr__ in podmape, med katerimi so: * projekt.runs, mapa z rezultati sinteze (synth_1) in implementacije (impl_1) * projekt.sdk, mapa procesorskega projekta (orodje SDK) * projekt.sim, mapa s simulacijskimi datotekami * projekt.srcs, mapa z izvornimi datotekami (sources_1) in omejitvami (constrs_1) ## Nov projekt V programu Vivado 2017 izberi **Create Project**, določi ime, npr. `project_add` in lokacijo `D:/designs/moja_mapa`. Pri izbiri imena in lokacije ne uporabljaj šumnikov in presledkov! Klikni Next in pusti privzeto izbiro RTL Project. V naslednjem oknu **Add Sources** klikni na Create File, izberi File type: `VHDL` in določi ime¸ npr. `add1`. Klikni OK in dvakrat Next, na koncu pa določi ciljno integrirano vezje **Default Part** ali ploščo (Boards). Po zadnji potrditvi se odpre tabela v kateri določi ime in zunanje priključke vezja: ![](./img/Vivado_add1.png) Na podlagi vnešenih podatkov program naredi datoteko z ogrodjem opisa vezja v jeziku VDHL. ## Delo s projektom V programu Vivado uporabljamo pri delu s projektom naslednja okna: * Flow Navigator na levi v obliki menija z glavnimi koraki izdelave in prevajanja projekta (ctrl+Q) * Sources prikazuje hierarhijo izvornih datotek * Properties prikazuje in omogoča nastavitve izbrane datoteke ali elementa blokovnega diagrama * Poročila se nahajajo v spodnjem oknu z več zavihki, med katerimi je tudi konzola za ukaze Tcl ![](./img/Vivado_navigator.png) Izvorna datoteka, ki smo jo naredili s programom Vivado ali pa vključili kot Design Source se pojavi v oknu **Sources** pod Design Sources in pod Simulation Sources. Datoteko odpri z dvoklikom in dokončaj opis vezja: ```vhdl library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity add1 is Port ( a,b : in STD_LOGIC_VECTOR (15 downto 0); sel : in STD_LOGIC_VECTOR (1 downto 0); r : out STD_LOGIC_VECTOR (15 downto 0)); end add1; architecture Behavioral of add1 is signal a1,b1,r1: unsigned(15 downto 0); begin a1 <= unsigned(a); b1 <= unsigned(b); r1 <= a1 when sel="00" else a1+1 when sel="01" else a1+b1 when sel="10" else a1-b1; r <= std_logic_vector(r1); end Behavioral; ``` Orodje Vivado že med tipkanjem kode opozarja na nekatere sintaktične napake in obarva ali podčrta ustrezno vrstico ter izpiše sporočilo, če se z miško zadržimo nad označenim delom. Ko zaključimo z opisom kode, shranimo datoteko in izvedemo analizo, prevajanje ali simulacijo. ## Analiza vezja Analiza vezja omogoča grafičen pregled gradnikov, ki nastanejo od prevajanju opisa vezja. Postopek analize in izdelave sheme na nivoju registrov poženemo z **Open Elaborated Design** iz menija na levi. Program bo začel izvajati sintezo vezja in prikazal shemo ali pa sporočilo o napakah, ki se pojavijo tudi v spodnjem oknu v zavihku *Messages*. Na shemi iz opisa našega vezja vidimo zunanje priključke, seštevalnike in izbiralnike: ![](./img/Vivado_rtl1.png) ## Simulacija Simulacijo izvedemo z Run Simulation, Run Behavioral Simulation. Simulator prevede vezje in če ni napak naredi izvršilno datoteko. Lahko se zgodi, da bo antivirusni program onemogočil izvajanje simulacije - v tem primeru definirajmo izjemo za skeniranje mape s projektom. Enostavno simulacijo izvedemo tako, da nastavimo stimulatorje na vhodne signale, izvedemo simulacijo za nek čas, spremenimo stimulatorje, ponovno izvedemo... S privzetimi nastavitvami v Vivadu se simulacija avtomatsko izvede za 1000 ns in najbolje, da se najprej postavimo na začetek: Run > Restart. V simulatorju z desnim klikom na vhodni signal nastavimo vrednost signala z izbiro Force Constant. Za uro izberemo Force Clock in nastavimo kot npr.: * Leading edge value: 0 * Trailing edge value: 1 * Period: 200 ns Po opravljenih nastavitvah poženemo simulator za določen čas: Run > Run For in opazujemo izhode. ![](./img/Vivado_sim.png) Prikaz oblikujemo tako, da izberemo enega ali več signalov, z desnim klikom izberemo Radix in vrsto (Binary, Unsigned, Signed...). Vse nastavitve so vidne tudi v spodnjem oknu v zavihku *Tcl Console*. Namesto klikanja z miško lahko v konzoli nastavljamo signale z ukazi. Poglejmo primer ukazov, ki nastavijo signal *sel* na dvojiško vrednost 0, signal *a* na desetiško vrednost 9 in izvedejo simulacijo za 200 ns: ```tcl add_force sel 0 add_force a -radix dec 9 run 200 ns ``` Če spremenimo datoteko VHDL je potrebno simulator ponovno zagnati z Run > Relaunch simulation, ki povzroči ponovno prevajanje vezja. V primeru napak preverimo sporočila v zavihku *Tcl Console*. Bolj obsežno simulacijo naredimo s testno strukturo v jeziku VHDL, ki jo moramo napisati sami ali uporabiti kakšen program za grafično izdelavo testne strukture, kot je: [grafTB](http://lniv.fe.uni-lj.si/grafTB.htm) ali avtomatično izdelavo ogrodja testne strukture, npr. [vhdl.lapinoo.net](http://vhdl.lapinoo.net/testbench/). Datoteko s testno strukturo dodamo v projekt kot simulacijsko datoteko: **Add Sources**, Add or create simulation sources in izvedemo simulacijo. ## Pakiranje IP Orodje **Vivado** omogoča grafično izdelavo digitalnega sistema iz komponent intelektualne lastnine (IP). Projket z opisom vezja v jeziku VHDL lahko preprosto pretvorimo (zapakiramo) v komponento IP z izbiro iz menuja *Tools > Create and Package NEW IP*, klikni *Next* in izbiro *Package your current project*. ![](./img/Vivado_add_ip.png) Izdelavo IP sprožimo v zavihku Review and Package s klikom na **Package IP**. Ob privzetih nastavitvah bo program naredil paket (*.zip) v katerem je: * opis komponente, nastavitev in vključenih datotek (*.xml), * izvorna datoteka (*.vhd), * opis grafičnega simbola (xgui, *.tcl)