200 likes | 489 Views
Elektrotehnički fakultet, Univerzitet u Beogradu. V HDL (2). Osnovi digitalne elektronike , J . Popovi ć, 2006. IF. clk = 1 &. enable =1. Proces A. Proces A. A ž uriraj. B. Proces B. Proces B. Čekaj. na A. VHDL kod A rhitektura. Proces C.
E N D
Elektrotehnički fakultet, Univerzitet u Beogradu VHDL (2) Osnovi digitalne elektronike, J. Popović, 2006.
IF clk = 1 & enable =1 Proces A Proces A Ažuriraj B Proces B Proces B Čekaj na A VHDL kod Arhitektura Proces C Proces C Konkurentno Izvršavanje Rekapitulacija • Proces je nizsekvencijalnih koraka koji se izvršavaju konkurentno (paralelno) sa ostalim konkuretntim koracima i procesima • Model ponašanjau VHDLu • “ŠTA modul treba da radi?” • Opisuje algoritam koji modul izvršava • Osnovu ovog modela čine procesi
Proces architecture behavioral of REG_4 is begin process (D0, D1, D2, D3, Clk, Enable) variable D0Var, D1Var,D2Var, D3Var : bit ; begin if ( clk = '1' and Enable = '1' ) then D0Var =: D0 ; D1Var =: D1 ; D2Var =: D2 ; DVar =: D3 ; end if; Dout0 <= D0Var after 5 ns; Dout1 <= D1Var after 5 ns; Dout2 <= D2Var after 5 ns; Dout3 <= D3Var after 5 ns; end process; end architecture behavioral ; • Lista signala u okviru definicije procesa(sensitivity list), određuje kada se proces izvršava • U procesuse ne mogu deklarisati signali, samo varijable. Varijabla čuva informaciju o stanju u okviru procesa i nije vidljiva izvan procesa • Signalima se dodeljuju nove vrednosti isključivo po završetku procesa!
Konkurentno dodeljivanje vrednosti signala architecture behavioral ofS1isbeginadd_a_b: process (a, b) isbeginsum <= a + b;end process add_a_b; sub_a_b: process (a, b) isbeginsub <= a - b;end process sub_a_b; control: process (clk, a, b, c, d) isbeginif ( clk = '1' and c = '1' ) then Dout0 <= d; elseif ... end if; end process control; end architecture behavioral; • Jednostavni procesi se mogu napisati u jednoj liniji - konkurentno dodeljivanje vrednosti signala(paralelno se izvršava sa ostalim procesima) architecture behavioral ofS1isbeginsum <= a + b;sub <= a - b; control: process (clk, a, b, c, d) isbeginif ( clk = '1' and c = '1' ) then Dout0 <= d; elseif ... end if; end process control; end architecture behavioral;
Konkurentno dodeljivanje vrednosti signala architecture behavioral ofS1isbeginsum <= a + b;sub <= a - b; control: process (clk, a, b, c, d) isbeginif ( clk = '1' and c = '1' ) then Dout0 <= d; elseif ... end if; end process control; end architecture behavioral; • Paralelno se izvršava sa ostalim procesima (vrednost signala se menja odmah) • Aktivira se na promenu bilo kog operanda sa desne strane • Naredbe u okviru jednog procesa se izvršavaju sekvencijalno • Dodeljivanje vrednosti signalima se vrši na kraju procesa!
Strukturni model • “KAKO se sistem može realizovati?” • Sistem se opisuje kao kompozicija podsistema • Osnovu strukturnog modela čine komponente • moraju prvo biti deklarisane u tekućoj arhitekturi • obično su unapred opisane kao poseban entity/architecture par • Strukturni model se zasniva na instanciranju (pozivanju) komponenti • instancirane komponente rade konkurentno sa ostalim naredbama i procesima u arhitekturi • komponente se povezuju portovima ili signalima
Instanciranje iste komponente više puta deklarisanje komponenti instanciranje komponenti
Deklaracija komponente u arhitekturi • Sve komponente koje će se koristiti u arhitekturi moraju biti navedene u deklarativnom delu arhitekture component component_name [is] [generic (generic_list);] [port (signal_names: mode signal-type; signal_names: mode signal-type; ...);]end component [component_name]; Primer:component flipflop is generic (Tprop, Tsetup, Thold: delay_lenght);port (clk: in bit; clr: in bit; q: out bit);end component flipflop;
Instanciranje komponente • Komponenta se instancira u telu arhitekture label:[component] component_name [generic map(generic_association_list)] [port map (signal1, signal2,...)] *podaci u uglastim zagradama mogu da se izostave! • Ako se ista komponenta poziva više puta, svaka instanca mora da ima jedinstvenu labelu! • Component_name je naziv entitija u kome je definisana ta komponenta • Mapiranje portova (i generika) • preslikavanje konkretnih signala iz arhitekture na portove komponente
Mapiranje portova entityDRAM_controlleris port (rd, wr, mem: in bit;ras, cas, we, ready: out bit);end entity DRAM_controller; • Ako je komponenta definisana entitijem: • Eksplicitno mapiranje pridruživanjem naziva signala (redosled je proizvoljan): mem_controller: entity work.DRAM_controler (fpld)port map (rd => cpu_rd, wr =>cpu_wr, mem => cpu_mem, ras => mem_ras, cas => mem_cas, we => mem_we, ready => cpu_rdy) • Poziciono mapiranje portova: mem_controller: entity work.DRAM_controler (fpld)port map (cpu_rd, cpu_wr, cpu_mem, mem_ras, mem_cas, mem_we, cpu_rdy)
beh beh mem_controller: entity work.DRAM_controler (fpld)port map (rd => cpu_rd, wr =>cpu_wr, mem => cpu_mem, ras => mem_ras, cas => open, we => mem_we, ready => cpu_rdy) • Ako se je potrebno da neki port komponente ostane nepovezan, mapira se na sledeći način: • U strukturnom modelu može da postoji više hijerarhijskih nivoa. Na najnižem nivou se mora doći do modela ponašanja neke komponente!!! architecture structure structure structure behavior behavior behavior behavior
Vreme u VHDL-u • VHDL ima dobre mogućnosti za modelovanje ponašanja sistema u vremenu • Kašnjenje se specificira upotrebom rezervisane reči afteru bilo kojoj liniji gde se dodeljuje vrednost signalu • Primer:
Naredba wait for • Drugi način uvođenja vremenske dimenzije u VHDL je upotreba naredbewait for • Koristi se da suspendujeproces na neko određeno vreme • Primer:
Test bench • VHDL kod kojim se proverava ispravnost rada komponente za koju je prethodno napravljen model u VHDL-u • Sastoji se iz: • komponente koja se testira (DUT – design under test) • instancira se kao svaka druga komponenta • stimuli generatora (skup test vektora) • zadaju se u samom kodu ili čitaju iz posebnog fajla • alata kojim se proverava odziv DUT na zadate test vektore • to mogu biti tekstualne poruke tokom simulacije (na primer “Test upisa u memoriju je prošao”) • ili poseban simulator sa waveform editorom • Omogućava da se testiranje obavi kompletno u VHDL-u, mada se u praksi češće kombinuje sa drugim programima
Comp 1 VHDLmodel ponašanja VHDL Test bench Comp 1 VHDL RTL model Test_OK DUT Comp 1 VHDL gate model • Isti test bench se može koristiti za proveru rada različitih modela jedne komponente opisane u VHDL-u • Obično ne piše ista osoba VHDL kod za komponentu i njen test bench (da bi seizbegle “duple greške”) • Pisanje test bench-a je komplikovanije i dugotrajnije od pisanja VHDL modela za DUT!!!
Struktura test bench-a • Kao svaki drugi VHDL kod i test bench se sastoji iz: • ENTITY • ARCHITECTURE • Pošto test bench samo predstavlja okruženje u kome se testira DUT, entiti test bench-a ne sadrži deklaracije portova i generika! • Primer:
Arhitektura test bench-a • Ima istu strukturu kao arhitektura bilo kog VHDL koda • U deklarativnom delu arhitekture test bench-a se definišu stimuli – signali koji će se koristiti za testiranje DUT • U telu arhitekture se: • instancira komponenta koja se testira (DUT) • definišu vrednosti stimulija • Važe sva pravila koja su navedena ranije za arhitekturu VHDL koda • procesi se izvršavaju konkurentno • naredbe u okviru procesa se izvršavaju sekvencijalno • to znači da nije bitno da li se prvo instancira DUT ili zadaju stimuli vektori
Deklarisanje komponente i signala (stimulija) Instanciranje komponente koja se testira Proces u kome se definišu test vektori – stimuli
Softverski paketi • Profesionalni paket: Synopsys • pokriva sve faze HDL projektovanja • Za FPGA (uglavnom postoje besplatne web verzije) • softver kompanije Xilinx - ISE Foundation • softver kompanije Altera – Quartus • ModelSim • Active HDL • Evita – interaktivni tutorijal (sintaksa VHDLa nije u potpunosti ispoštovana!) • Iako je VHDL IEEE standard, svaki softverski paket manje ili više odstupa od tog standarda!
Literatura: • S. Sjoholm, L. Lindh, "VHDL for Designers", Prentice Hall, 1997. • M. John, S. Smith, "Application-Specific Integrated Circuits", Addison-Wesley, 1997. • J. Rabaey, A. Chandrakasan, B. Nikolić, "Digital Integrated Circuits - A Design Perspective", Second ed, Prentice Hall, 2003. • John F. Wakerly: “Digital Design – Principles and Practices and Xilinx 4.2i”, Prentice Hall Int., New Jersey, 2002.