1 / 20

V HDL (2)

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.

aviva
Download Presentation

V HDL (2)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Elektrotehnički fakultet, Univerzitet u Beogradu VHDL (2) Osnovi digitalne elektronike, J. Popović, 2006.

  2. 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

  3. 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!

  4. 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;

  5. 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!

  6. 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

  7. Instanciranje iste komponente više puta deklarisanje komponenti instanciranje komponenti

  8. 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;

  9. 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

  10. 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)

  11. 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

  12. 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:

  13. 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:

  14. 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

  15. 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!!!

  16. 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:

  17. 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

  18. Deklarisanje komponente i signala (stimulija) Instanciranje komponente koja se testira Proces u kome se definišu test vektori – stimuli

  19. 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!

  20. 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.

More Related