1 / 32

Riistvara kirjelduskeel VHDL

Riistvara kirjelduskeel VHDL. L4, L5. Riistvara kirjelduskeel VHDL L6. Mäluga süsteemid VHDL-s L7. VHDL ja süntees. Atribuudid. Atribuut on väärtus, funktsioon, tüüp, vahemik, signaal või konstant, mida võib siduda ühe või enama märgendiga VHDL kirjelduses Ilma atribuutideta

amina
Download Presentation

Riistvara kirjelduskeel VHDL

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. Riistvara kirjelduskeel VHDL L4, L5. Riistvara kirjelduskeel VHDL L6. Mäluga süsteemid VHDL-s L7. VHDL ja süntees I207 - Digitaalloogika ja -süsteemid - L5

  2. Atribuudid • Atribuut on väärtus, funktsioon, tüüp, vahemik, signaal või konstant, mida võib siduda ühe või enama märgendiga VHDL kirjelduses • Ilma atribuutideta signal s: bit_vector (sz-1 downto 0); ... for i in 0 to sz-1 loop ... • Atribuutidega signal s: bit_vector (7 downto 0); ... for i in s’low to s’high loop ... for i in s’reverse_range loop ... I207 - Digitaalloogika ja -süsteemid - L5

  3. Atribuutide kasutamine • Seade- ja hoideajad mäluelementides • seadeaeg (setup time) – sisendsignaal peab olema stabiilne juba mingi aeg enne taktsignaali aktiivset fronti • hoideaeg (hold time) – sisendsignaal peab jääma stabiilseks mingi aeg pärast taktsignaali aktiivset fronti • Põhjuseks signaaliteede erinevad pikkused • Võib põhjustada metastabiilsust – väljund ei ‘0’ ega ‘1’ metastabiilsus I207 - Digitaalloogika ja -süsteemid - L5

  4. Atribuutide kasutamine • seadeaeg 3 ns & hoideaeg 5 ns process (clock,data_in) begin if clock'event and clock='1' then assert data_in'last_event >= 3 ns report "setup time violation" severity warning; data_out <= data_in; end if; if data_in'event and clock='1' then assert clock'last_event >= 5 ns report "hold time violation" severity warning; end if; end process; I207 - Digitaalloogika ja -süsteemid - L5

  5. Digitaalsed simulaatorid • Sama-aegsed operatsioonid • modelleerimine järjestikulises süsteemis • Simulatsioonitsükkel • signaalide järgmiste väärtuste leidmine • signaalide jooksvate väärtuste värskendamine • Tsükkelpõhised ja sündmustepõhised • cycle-based vs. event-based • Viite modelleerimine • ühikviide (unit-delay) • nullviide (zero-delay) • deltaviide (delta-delay) I207 - Digitaalloogika ja -süsteemid - L5

  6. leia uued väärtused värskenda väärtused Ühikviide • Peamiselt tsükkelpõhised simulaatorid • Igas simulatsioonitsüklis • arvuta (kõigi) signaalide uued väärtused • värskenda signaalide väärtused • suurenda simulatsiooniaega ühe ühiku võrra [ja korda tsüklit 1-st alates] I207 - Digitaalloogika ja -süsteemid - L5

  7. a b c x1 x2 x1 a y y b t t+1ns t+2ns c x2 x2=1 y=0 c=0 x1=1 b=1 time [ns] Ühikviide X1 <= a and b; x2 <= not c; y <= x1 xor x2; sündmuste jadad I207 - Digitaalloogika ja -süsteemid - L5

  8. leia uus väärtus, eemalda sündmus suurenda simul.aega lisa uus sündmus Nullviide • Sündmustepõhised simulaatorid • Simulatsioonitsükkel - tsükkel tsüklis • sündmuse alusel arvuta uus väärtus, eemalda sündmus • lisa uus sündmus sündmuste jadasse • korda 1-st alates kuni leidub jooksvale simulatsiooniajale planeeritud sündmusi • suurenda simulatsiooniaega ühe ühiku võrra[ja korda tsüklit 1-st alates] I207 - Digitaalloogika ja -süsteemid - L5

  9. a b c x1 x2 x1 a y y b t t t t t c x2 x1=1 x2=1 b=1 c=0 b=1 c=0 x2=1 c=0 x1=1 x1=1 x2=1 y=0 y=0 time [ns] Nullviide (#1) X1 <= a and b; x2 <= not c; y <= x1 xor x2; sündmuste jadad I207 - Digitaalloogika ja -süsteemid - L5

  10. a b c x1 x2 x1 a y y b t t t t t c x2 y=1 x2=1 b=1 c=0 b=1 x1=1 c=0 x1=1 y=1 c=0 c=0 x2=1 y=0 time [ns] Nullviide (#2) X1 <= a and b; x2 <= not c; y <= x1 xor x2; sündmuste jadad I207 - Digitaalloogika ja -süsteemid - L5

  11. leia uued väärtused kõikidele jooksvatele sündmustele eemalda vanad ja lisa uued sündmused suurenda simul.aega Deltaviide – VHDL • VHDL -viide ( -delay, -delay ) • Simulatsioonitsükkel - tsükkel tsüklis tsüklis • kõikide sündmuste jaoks arvuta uued väärtused (1. tsükkel) • eemalda kasutatud ja lisa uued sündmused sündmuste jadasse • korda 1-st alates kuni leidub jooksvale simulatsiooniajale planeeritud sündmusi • suurenda simulatsiooniaega ühe ühiku võrra[ja korda tsüklit 1-st alates] I207 - Digitaalloogika ja -süsteemid - L5

  12. a b c x1 x2 x1 a y y b t+ t+2  t c x2 b=1 c=0 x1=1 x2=1 y=0 time [ns] Deltaviide X1 <= a and b; x2 <= not c; y <= x1 xor x2; I207 - Digitaalloogika ja -süsteemid - L5

  13. Protsess • entity / architecture / component • struktuuri elemendid • process • mudeli käitumine • sisaldab ajastuse kontrolli • sama-aegselt täidetav käsk (ehk andmevoo käsk) == tundlikkuse nimistuga protsess I207 - Digitaalloogika ja -süsteemid - L5

  14. Protsess • Andmevoo käsk x <= a and b after 5 ns; • Ekvivalentne protsess process ( a, b ) begin x <= a and b after 5 ns; end process; I207 - Digitaalloogika ja -süsteemid - L5

  15. Protsess • Ekvivalentsed protsessid (järg) process begin wait on a, b; x <= a and b after 5 ns; end process; process variable tmp: bit; begin wait on a, b; tmp := a and b; wait for 5 ns; x <= tmp; end process; I207 - Digitaalloogika ja -süsteemid - L5

  16. Protsess • Tundlikkuse nimistu • sensitivity list process ( a, b ) begin x <= a and b after 5 ns; end process; process begin wait on a, b; x <= a and b after 5 ns; end process; I207 - Digitaalloogika ja -süsteemid - L5

  17. Protsess • Ajakontroll alguses või lõpus? process begin wait on a, b; x <= a and b after 5 ns; end process; process begin x <= a and b after 5 ns; wait on a, b; end process; I207 - Digitaalloogika ja -süsteemid - L5

  18. Ajakontroll • Omistamise viivitamine -- “ … after T; ” • Tundlikkuse nimistu • Ootekäsud • oota signaali sündmust: wait on x; • oota tingimuse täitumist: wait until x=’1’; • oota määratud aeg: wait for 20 us; • oota (igavesti): wait; • kombineeritult: wait on clk until clk=’1’ and ready=’1’ for 1 us; I207 - Digitaalloogika ja -süsteemid - L5

  19. Inertsiaal- ja transportviide output <= input after 10ns; -- VHDL’87 output <= [inertial] input after 10ns; -- VHDL’93 output <= transport input after 10ns; I207 - Digitaalloogika ja -süsteemid - L5

  20. Operatsioonid & avaldised • Omistamised • signaalile x <= avaldis [after aeg]; • muutujale x := avaldis; • avaldised avaldis operatsioon avaldis muutuja | signaal funktsioonipöördus • Kontrollvoo käsud • tingimuslikud – if-then-else, case • tsüklid – for-loop, while-loop • protseduuripöördus • ajakontroll I207 - Digitaalloogika ja -süsteemid - L5

  21. Kontrollvoo käsud • Tingimuslikud käsud • if-then-else [märgend:] if tingimusavaldis then operatsioonide jada elsif tingimusavaldis then operatsioonide jada else operatsioonide jada end if [märgend]; • tingimusavaldis - tõeväärtustüüpi • case [märgend:] case avaldis is when väärtus[| väärtus] => operatsioonide jada when others => null end case [märgend]; I207 - Digitaalloogika ja -süsteemid - L5

  22. Kontrollvoo käsud • Tsüklid [kordusmärgend:][iteratsiooniskeem] loop operatsioonide jada end loop [kordusmärgend]; iteratsiooniskeem ::= while tingimusavaldis| for loendur in vahemik exit [kordusmärgend] [when tingimusavaldis]; next [kordusmärgend] [when tingimusavaldis]; vahemik ::= avaldis to avaldis| avaldis downto avaldis| tüüp’range | ... I207 - Digitaalloogika ja -süsteemid - L5

  23. Kontrollvoo käsud • for-loop for I in my_array’range loop next when I<lower_limit; exit when I>upper_limit; sum := sum + my_array(I); end loop; • while-loop while a<10 loop a := a + 1; end loop; • loop loop exit when not a<10; a := a + 1; end loop; I207 - Digitaalloogika ja -süsteemid - L5

  24. Funktsioonid & protseduurid • Käitumuslik hierarhia • funktsioon (function) • kasutatav avaldistena • ei tohi sisaldada ajakontrolli käske • ainult sisendparameetrid (konstantidena) • protseduur (procedure) • kasutatav operatsioonina (lausena) • võib sisaldada ajakontrolli käske • sisendparameetrid (konstandid) • väljundparameetrid (muutajad/signaalid) I207 - Digitaalloogika ja -süsteemid - L5

  25. Funktsioonid & protseduurid • Deklareerimine • paketid (pakage) • arhitektuuri, protsessi, funktsiooni, protseduuri jne. deklaratiivne osa • Sisu • paketikeha (pakage body) • arhitektuuri, protsessi, funktsiooni, protseduuri jne. deklaratiivne osa – koos deklareerimisega I207 - Digitaalloogika ja -süsteemid - L5

  26. Funktsioonid -- ... function conv_boolean (a: signed) return boolean is begin if to_bit(a(a’low))=’1’ then return TRUE; else return FALSE; end if; end conv_boolean; -- ... function ”and” (l,r: signed) return signed is begin return signed(std_logic_vector(l) and std_logic_vector(r)); end; -- ... -- ... signal a, b, x: signed (7 downto 0); signal y: boolean; -- ... X <= a and b; -- ... y <= conv_boolean(a); I207 - Digitaalloogika ja -süsteemid - L5

  27. Protseduurid PACKAGE adder_elements IS -- full_adder : 1-bit full adder (declaration) PROCEDURE full_adder (CONSTANT a0, b0, c0: IN bit; VARIABLE o0, c1: OUT bit); END adder_elements; PACKAGE BODY adder_elements IS PROCEDURE half_adder (CONSTANT a0, b0: IN bit; VARIABLE o0, c1: OUT bit) IS BEGIN o0 := a0 XOR b0; c1 := a0 AND b0; END half_adder; PROCEDURE full_adder (CONSTANT a0, b0, c0: IN bit; VARIABLE o0, c1: OUT bit) IS VARIABLE c_1, c_2, o_1: bit; BEGIN half_adder ( a0, b0, o_1, c_1 ); half_adder ( o_1, c0, o0, c_2 ); c1 := c_1 or c_2; END full_adder; END adder_elements; I207 - Digitaalloogika ja -süsteemid - L5

  28. Paketid & teegid • Korduvkasutus • andmetüübid • funktsioonid / protseduurid • komponendid • Pakett (package) • deklaratsioonide kogum • Teek (library) • pakettide kogum • disainiüksuste (entity/architecture) kogum I207 - Digitaalloogika ja -süsteemid - L5

  29. IEEE standardloogika mudel • Std_Ulogic Type (IEEE 1164) • ’U’ uninitialized mudeli käitumine • ’X’ forcing unknown mudeli käitumine • ’0’ forcing 0 loogikanivoo (“transistor”) • ’1’ forcing 1 loogikanivoo (“transistor”) • ’Z’ high impedance ühendamata • ’W’ weak unknown mudeli käitumine • ’L’ weak 0 loogikanivoo (“takisti”) • ’H’ weak 1 loogikanivoo (“takisti”) • ’-’ don’t care (optimeerimiseks) I207 - Digitaalloogika ja -süsteemid - L5

  30. Üldistatud parameetrid • “generics” -- moodus parameetrite edastamiseks -- Address generator - entity library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; entity agener is generic ( bitwidth: positive ); port ( clock: in bit; reset, enable: in std_logic; start_address, stop_address: in unsigned(bitwidth-1 downto 0); address: out unsigned(bitwidth-1 downto 0) ); end agener; -- ... and somewhere in the architecture signal count: unsigned(bitwidth-1 downto 0); I207 - Digitaalloogika ja -süsteemid - L5

  31. Disaini struktureerimine • Kergem koodi hallata • Moodulite korduvkasutatavus I207 - Digitaalloogika ja -süsteemid - L5

  32. + / - < / > RG RG VHDL ja digitaalsüsteem process (a, b, c) begin   x <= f (a, b); y <= g (b, c); end process; process (clk) begin if clk’event and clk=’1’ then q <= d; end if; end process; Funktsionaalsed sõlmed Mäluelemendid I207 - Digitaalloogika ja -süsteemid - L5

More Related