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

Documents pareils