Riistvara kirjelduskeel VHDL L4, L5. Riistvara kirjelduskeel VHDL L6. Mäluga süsteemid VHDL-s L7.
Download ReportTranscript Riistvara kirjelduskeel VHDL L4, L5. Riistvara kirjelduskeel VHDL L6. Mäluga süsteemid VHDL-s L7.
Riistvara kirjelduskeel VHDL L4, L5. Riistvara kirjelduskeel VHDL L6. Mäluga süsteemid VHDL-s L7. VHDL ja süntees © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 1 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 ... © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 2 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 © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 3 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; © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 4 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) © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 5 Ü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] leia uued väärtused © Peeter Ellervee värskenda väärtused I207 - Digitaalloogika ja -süsteemid - L5 6 Ühikviide a X1 <= a and b; x2 <= not c; y <= x1 xor x2; b c x1 a b x2 x1 c y y t x2 sündmuste jadad © Peeter Ellervee t+1ns t+2ns b=1 x1=1 c=0 x2=1 I207 - Digitaalloogika ja -süsteemid - L5 y=0 time [ns] 7 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] leia uus väärtus, eemalda sündmus © Peeter Ellervee lisa uus sündmus I207 - Digitaalloogika ja -süsteemid - L5 suurenda simul.aega 8 Nullviide (#1) a X1 <= a and b; x2 <= not c; y <= x1 xor x2; b c x1 a b x2 x1 c y y x2 sündmuste jadad t t t b=1 b=1 c=0 c=0 c=0 I207 - Digitaalloogika ja -süsteemid - L5 t x1=1 x2=1 x1=1 x2=1 x1=1 x2=1 © Peeter Ellervee t time [ns] y=0 y=0 9 Nullviide (#2) a X1 <= a and b; x2 <= not c; y <= x1 xor x2; b c x1 a b x2 x1 c y y x2 sündmuste jadad © Peeter Ellervee t t b=1 b=1 x1=1 y=1 x2=1 c=0 x1=1 y=1 c=0 y=0 c=0 c=0 x2=1 I207 - Digitaalloogika ja -süsteemid - L5 t t t time [ns] 10 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] leia uued väärtused kõikidele jooksvatele sündmustele © Peeter Ellervee eemalda vanad ja lisa uued sündmused I207 - Digitaalloogika ja -süsteemid - L5 suurenda simul.aega 11 Deltaviide a X1 <= a and b; x2 <= not c; y <= x1 xor x2; b c x1 a b x2 x1 c © Peeter Ellervee y x2 y t t+ b=1 x1=1 c=0 x2=1 I207 - Digitaalloogika ja -süsteemid - L5 t+2 y=0 time [ns] 12 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 © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 13 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; © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 14 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; © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 15 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; © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 16 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; © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 17 Ajakontroll Omistamise viivitamine -- “ … after T; ” Tundlikkuse nimistu Ootekäsud oota signaali sündmust: oota tingimuse täitumist: oota määratud aeg: oota (igavesti): wait on x; wait until x=’1’; wait for 20 us; wait; kombineeritult: wait on clk until clk=’1’ and ready=’1’ for 1 us; © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 18 Inertsiaal- ja transportviide output <= input after 10ns; output <= [inertial] input after 10ns; -- VHDL’87 -- VHDL’93 output <= transport input after 10ns; © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 19 Operatsioonid & avaldised Omistamised signaalile muutujale avaldised x <= avaldis [after aeg]; x := avaldis; avaldis operatsioon avaldis muutuja | signaal funktsioonipöördus Kontrollvoo käsud tingimuslikud – if-then-else, case tsüklid – for-loop, while-loop protseduuripöördus ajakontroll © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 20 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]; © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 21 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 ::= © Peeter Ellervee avaldis to avaldis | avaldis downto avaldis | tüüp’range | ... I207 - Digitaalloogika ja -süsteemid - L5 22 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; © Peeter Ellervee loop loop exit when not a<10; a := a + 1; end loop; I207 - Digitaalloogika ja -süsteemid - L5 23 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) © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 24 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 © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 25 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); © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 26 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; © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 27 Paketid & teegid Korduvkasutus andmetüübid funktsioonid / protseduurid komponendid Pakett (package) deklaratsioonide kogum Teek (library) pakettide kogum disainiüksuste (entity/architecture) kogum © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 28 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) © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 29 Ü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); © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 30 Disaini struktureerimine Kergem koodi hallata Moodulite korduvkasutatavus granulaarsus struktuuriüksus VHDL konstruktsioon jäme entity / architecture vastavused configuration jäme primaarne disainiüksus entity / architecture jäme/keskmine sama-aegsete käskude kordamine for / if - generate jäme/keskmine sama-aegsete käskude grupeerimine block keskmine järjestikuliste käskude grupeerimine process peen alamprogramm procedure / function © Peeter Ellervee I207 - Digitaalloogika ja -süsteemid - L5 31 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; © Peeter Ellervee Funktsionaalsed sõlmed +/- </> RG RG Mäluelemendid I207 - Digitaalloogika ja -süsteemid - L5 32