VHDL Process... - (paristech.institutoptique.fr) au
Transcription
VHDL Process... - (paristech.institutoptique.fr) au
Liste de sensibilité des process ZĂƉƉĞůƐ hd/>/^d/KE^WZK^^ s,> WKhZ>^^h>^͕>^ sZZKh^͕>^KDWdhZ^͕>^ Z'/^dZ>>'͕͙ hŶƉƌŽĐĞƐƐ Ɛ͛ĞdžĠĐƵƚĞĞdžĐůƵƐŝǀĞŵĞŶƚƐŝƵŶĚĞƐƐŝŐŶĂƵdžůŝƐƚĠƐĚĂŶƐůĂ ůŝƐƚĞĚĞƐĞŶƐŝďŝůŝƚĠĂĠǀŽůƵĠ WŽƵƌƵŶĞďĂƐĐƵůĞ >< >Zʹ Z^d WŽƵƌƵŶǀĞƌƌŽƵ >;>ĂƚĐŚ ŶĂďůĞͿ ;ĞŶƚƌĠĞͿ >Zʹ Z^d >ĂůŽŐŝƋƵĞƐĠƋƵĞŶƚŝĞůůĞĞƐƚŶĠĐĞƐƐĂŝƌĞŵĞŶƚĚĠĐƌŝƚĞĚĂŶƐůĞƐ ƉƌŽĐĞƐƐ >ĂůŽŐŝƋƵĞĐŽŵďŝŶĂƚŽŝƌĞƉĞƵƚġƚƌĞĚĠĐƌŝƚĞŚŽƌƐƉƌŽĐĞƐƐ ;ŝŶƐƚƌƵĐƚŝŽŶƐĐŽŶĐƵƌƌĞŶƚĞƐͿŽƵĚĂŶƐƵŶƉƌŽĐĞƐƐ ;ů͛ŽƌĚƌĞĚĞƐ ŝŶƐƚƌƵĐƚŝŽŶƐĞƐƚŝŵƉŽƌƚĂŶƚͿ ^ƚƌƵĐƚƵƌĞĚ͛ƵŶƉƌŽĐĞƐƐ ͗ ĞƐŽŝŶ͗ŽĚĞƌůĂƐĞŶƐŝďŝůŝƚĠăĚĞƐĨƌŽŶƚƐ WŽƵƌƵŶĞďĂƐĐƵůĞ Library ieee; -- en-tête USE ieee.std_logic_1164; Entity Bascule_D is --entité port( D, CLK : in std_logic; Q : out std_logic); End Bascule_D ; process (liste de signaux) -- partie déclarative (si besoin) begin if SEL = … -- suite du code end process; VHDL – IOGS 2011-2012 ^LJŶĐŚƌŽŶĞ ƐLJŶĐŚƌŽŶĞ Exemple de bascule D Logique séquentielle et process ^LJŶĐŚƌŽŶĞ ƐLJŶĐŚƌŽŶĞ Architecture ARCHI of Bascule_D is -- architecture Begin Process(CLK) Begin if (CLK = ‘1’) then Q <= D; end if ; End process End ARCHI ; Notion d’attributs Exemple de bascule D WŽƵƌƵŶĞďĂƐĐƵůĞ Architecture ARCHI of Bascule_D is -- architecture Begin Process(CLK) Begin wait until (CLK=‘1’) Q <= D; End process End ARCHI ; CLK’envent : Q’right : ĨƌŽŶƚĚ͛ŚŽƌůŽŐĞ ďŝƚĚĞĚƌŽŝƚĞ ĚƵŵŽƚY Integer’range : /ŶƚĠƌġƚ͗ŵĞŝůůĞƵƌĞůŝƐŝďŝůŝƚĠ /ŶĐŽŶǀĠŶŝĞŶƚ͗ƵŶƐĞƵůƐŝŐŶĂůƚĞƐƚĂďůĞĂŝŶƐŝ ŐĂŵŵĞ ĚĞǀĂƌŝĂƚŝŽŶĚĞƐĞŶƚŝĞƌƐ ƉƉůŝĐĂƚŝŽŶ CLK’envent and CLK = ‘1’ Æ VHDL – IOGS 2011-2012 ĚĠƚĞĐƚĞ ƵŶĨƌŽŶƚŵŽŶƚĂŶƚ Ě͛ŚŽƌůŽŐĞ VHDL – IOGS 2011-2012 Bascule D avec Clear asynchrone džĞŵƉůĞƐ Bascule D avec Clear synchrone džĞŵƉůĞƐ džĞŵƉůĞƐ Entity Basc_D is --entité port( D, CLK, CLEAR : in std_logic; Q : out std_logic); End Basc_D ; Entity Basc_D is --entité port( D, CLK, CLEAR : in std_logic; Q : out std_logic); End Basc_D ; Architecture ARCHI of Basc_D is -- architecture Begin Process(CLK,CLEAR) Begin if CLEAR = ‘1’ then Q <= ‘0’ elsif (CLK’event and CLK = ‘1’) then Q <= D; end if ; End process End ARCHI ; Architecture ARCHI of Basc_D is -- architecture Begin Process(CLK,CLEAR) Begin if (CLK’event and CLK = ‘1’) then if CLEAR = ‘1’ then Q <= ‘0 else Q <= D; end if ; End process End ARCHI ; Å Clear asynchrone Å Mettre un else Registre à décalage džĞŵƉůĞƐ Entity REGISTRE is --entité port( D_IN, CLK : in std_logic; Q_OUT : out std_logic); End EXEMPLE ; Architecture ARCHI of REGISTRE is -- architecture Begin Signal S : std_logic Process(CLK) Begin if (CLK’event and CLK = ‘1’) then !! Les signaux ne sont S1 <= D_IN ; mis à jour qu’a la fin du Q_OUT <= S1; process end if ; End process End ARCHI ; ^Z/Wd/KE h>E'' s,>;^h/dͿ͗s,> ^dZhdhZ> VHDL structurel VHDL structurel WƌŝŶĐŝƉĞ Entity MA_FCT is Port( A,B,C,D,E,F,G,H,I: in std_logic_vector; S : out); End MA_FCT; ĐƌŝƌĞĚĞƐďůŽĐƐĚĞĐŽĚĞĚĠĐůĂƌĠƐĐŽŵŵĞĐŽŵƉŽƐĂŶƚƐ ZĠƵƚŝůŝƐĞƌĐĞƐĐŽŵƉŽƐĂŶƚƐ KŶƉĂƌůĞĚ͛ŝŶƐƚĂŶĐŝĂƚŝŽŶĚĞĐŽŵƉŽƐĂŶƚůŽƌƐƋƵ͛ŽŶĨĂŝƚĂƉƉĞůăƵŶ ŵŽĚƵůĞ >ĞĐŽĚĞĚĞƐĐŽŵƉŽƐĂŶƚƐƉĞƵƚġƚƌĞĚĂŶƐůĞŵġŵĞĨŝĐŚŝĞƌ͕ĚĂŶƐƵŶ ĂƵƚƌĞĨŝĐŚŝĞƌ͕ŽƵĚĠũăĐŽŵƉŝůĠ͘ Architecture ARCHIT of MA_FCT is Signal J,K,L : bit_vector -- Declarations Component : OR3 port ( A1,B1,C1 : in std_logic; S1: out std_logic); Component : AND3 port( A2,B2,C2 : in std_logic; S2: out std_logic); -- declaration composant /ŶƚĠƌġƚ UN : DEUX : TROIS: QUATRE: ĞƐŝŐŶŚŝĠƌĂƌĐŚŝƐĠ ƉƉĞůăĚĞƐĠůĠŵĞŶƚƐĚĠũăŵŝƐĂƵƉŽŝŶƚ OR3 port map(A,B,C,J); OR3 port map(D,E,F,K); OR3 port map(G,H,I,L); AND3 port map(J,K,L,S); -- description structurelle -- Ici S est générée End ARCHIT; VHDL – IOGS 2011-2012 VHDL – IOGS 2011-2012 VHDL structurel /ŶƚĠƌġƚ ZĠƵƚŝůŝƐĞƌĚĞƐĨŽŶĐƚŝŽŶƐ ůĂƌƚĠĚ͛ĠĐƌŝƚƵƌĞ /ŶĐŽŶǀĠŶŝĞŶƚ &ŝĐŚŝĞƌƐͨ ůŽƵƌƐ ͩ ƌĠĂƚŝŽŶĚĞƉĂĐŬĂŐĞƋƵŝĐŽŶƚŝĞŶŶĞŶƚůĞƐĐŽŵƉŽƐĂŶƚƐ ǀĞĐYƵĂƌƚƵƐ >͛ĂƐƉĞĐƚƐƚƌƵĐƚƵƌĞůÆ 'ƌĂƉŚŝƋƵĞ >͛ĂƐƉĞĐƚĂůŐŽƌŝƚŚŵŝƋƵĞÆ ƚĞdžƚƵĞůsŚĚů VHDL – IOGS 2011-2012