Supp VHDL
Supp VHDL
Supp VHDL
Liste des ports : Les ports représentent les connexions entre l’entité et le reste du circuit. Il existe
différents types de ports, tels que les ports d’entrée (in), les ports de sortie (out), les ports bidirectionnels
(inout), etc.
syntaxe :
entity Nom_Entite is
Port (
Port1 : in Type1 ;
Port2 : out Type2
);
end Nom_Entite ;
- Déclaration de l’architecture
En VHDL, une ”architecture” est une partie essentielle de la description d’un circuit numérique. L’architecture
définit comment une entité donnée doit être mise en œuvre ou réalisée. C’est dans l’architecture que vous
décrivez le comportement ou la structure interne du circuit que vous souhaitez concevoir.
Il y a trois types principaux d’architectures en VHDL, chacun utilisé dans des contextes spécifiques :
Architecture Dataflow
Cette architecture décrit le comportement du circuit en termes de flux de données. Elle spécifie comment les
données circulent à travers le circuit en réponse aux changements d’entrée. L’architecture Dataflow utilise
souvent des équations logiques pour décrire les relations entre les signaux.
Exemple :
architecture Data_f of Nom_Entite is
begin
Y <= A AND B ;
end Data_f ;
1
ENSET
ECOLE NORMALE SUPÉRIEURE DE L'ENSEIGNEMENT
TECHNIQUE DE MOHAMMEDIA
UNIVERSITÉ HASSAN II DE CASABLANCA
Architecture Structurelle
L’architecture structurelle décrit le circuit en termes de composants interconnectés. Elle utilise des com-
posants (généralement entités préalablement définies) et des liaisons pour définir la structure du circuit.
Exemple :
architecture structure of Nom_Entite is
component port_AND
Port (
A : in STD_LOGIC ;
B : in STD_LOGIC ;
Y : out STD_LOGIC
);
end component ;
signal s1 : STD_LOGIC ;
begin
inst_1 : port_AND port map (A , B , s1 ) ;
Y <= s1 ;
end structure ;
Architecture Comportementale
L’architecture comportementale décrit le comportement du circuit en utilisant des processus. C’est sou-
vent une approche basée sur la programmation séquentielle, où le comportement est spécifié en termes
d’instructions exécutées séquentiellement en réponse à des événements ou à des conditions.
Exemple :
architecture Comportement of Nom_Entite is
begin
process (A , B )
begin
if A = ’1 ’ and B = ’1 ’ then
Y <= ’1 ’;
else
Y <= ’0 ’;
end if ;
end process ;
end Comportement ;
2
ENSET
ECOLE NORMALE SUPÉRIEURE DE L'ENSEIGNEMENT
TECHNIQUE DE MOHAMMEDIA
UNIVERSITÉ HASSAN II DE CASABLANCA
Integer : real :
Le type integer représente un entier signé. Le type real représente des nombres réels en virgule
flottante.
variable count : integer := 0;
variable pi_value : real := 3.14159;
generic :
boolean :
Le type generic est utilisé pour définir des
Le type boolean représente des valeurs de vérité paramètres génériques dans une entité ou une archi-
(true ou false). tecture.
signal flag : boolean := false ; generic (
data_width : integer := 8;
clock_period : time := 10 ns
);
3
ENSET
ECOLE NORMALE SUPÉRIEURE DE L'ENSEIGNEMENT
TECHNIQUE DE MOHAMMEDIA
UNIVERSITÉ HASSAN II DE CASABLANCA
Affectations sélectives
Les affectations sélectives, également appelées affectations conditionnelles, sont des instructions en VHDL
qui permettent de définir la valeur d’un signal en fonction de certaines conditions ou d’une sélection spécifiée.
Elles offrent une manière concise et élégante de décrire le comportement d’un circuit en fonction de diverses
situations.
Considérons l’entité suivante :
entity dec2_4 is
port (
e : in std_logic_vector (1 downto 0) ;
s : out std_logic_vector (3 downto 0)
);
end dec2_4 ;
with-Select when-else
Case if-elseif-else
4
ENSET
ECOLE NORMALE SUPÉRIEURE DE L'ENSEIGNEMENT
TECHNIQUE DE MOHAMMEDIA
UNIVERSITÉ HASSAN II DE CASABLANCA
Les boucles
En VHDL, il existe deux types de boucles principaux : la boucle for et la boucle while. Ces boucles sont
utilisées pour répéter un ensemble d’instructions un certain nombre de fois ou tant qu’une condition spécifiée
est vraie. Vous pouvez utiliser les instructions loop, next et exit pour contrôler le flux d’exécution à l’intérieur
d’une boucle ou d’un processus. Voici comment elles fonctionnent :
for-loop while-loop
La boucle while est utilisée pour répéter un ensem-
La boucle for est utilisée pour répéter un ensemble ble d’instructions tant qu’une condition spécifiée est
d’instructions un nombre prédéfini de fois. vraie.
i :=0;
for i in 0 to 3 loop while i < 4 loop
s ( i ) <= a ( i ) and b ( i ) ; s ( i ) <= a ( i ) and b ( i ) ;
end loop ; i := i + 1;
end loop ;
next exit
L’instruction next est utilisée pour passer à L’instruction exit est utilisée pour quitter
l’itération suivante d’une boucle. Elle permet de immédiatement une boucle. Elle permet de sortir
sauter une itération et de passer à la suivante. de la boucle avant qu’elle ne soit terminée.
for i in 0 to 9 loop for i in 0 to 9 loop
if i = 5 then if s = 10 then
next ; -- passer a l ’ iteration exit ; -- quitter la boucle
-- suivante si i est egal a 5 -- si s est egal a 10
end if ; end if ;
s <= s + 1; s <= s + 1;
end loop ; end loop ;
loop
L’instruction loop est utilisée pour créer une boucle infinie. Les instructions à l’intérieur de la boucle loop
sont répétées indéfiniment jusqu’à ce qu’une condition de sortie soit rencontrée.
loop
s <= s + 1;
if s = 10 then
exit ; -- sortir de la boucle si s est egal a 10
end if ;
end loop ;
5
ENSET
ECOLE NORMALE SUPÉRIEURE DE L'ENSEIGNEMENT
TECHNIQUE DE MOHAMMEDIA
UNIVERSITÉ HASSAN II DE CASABLANCA
Les Processus
Un processus (process) est une séquence d’instructions séquentielles, c’est-à-dire exécutées dans l’ordre
spécifié. La déclaration de processus délimite un domaine séquentiel de l’architecture dans laquelle la
déclaration apparaı̂t. Il y a deux types de processus
Processus Implicite
Toute phrase concurrente est un processus implicite avec un wait en implicite sur les signaux placés à droite
de l’affectation.
Exemples :
S <= A + B ;
-- ************
S <= A when select = 1 else
B when select = 2 else
" 0000 " ;
Processus Explicite
Un process explicite est un bloc séquentiel qui prend place obligatoirement dans le corps d’une architecture.
Un process, comme l’architecture, comporte une zone déclarative et un corps. Trois syntaxes peuvent être
utilisées pour la création d’un processus :
Lorsque la liste de sensibilité est présente, le processus ne peut pas contenir d’instruction
d’attente wait
Bien que les instructions au seins d’un process s’exécutent de façon séquentielle, le comportement d’assignement
est bien différent entre les signaux et les variables. Les variables sont instantanément assignées de leurs
nouvelles valeurs alors que les signaux change de valeur à la fin du process ou à la rencontre
d’une instruction wait.
6
ENSET
ECOLE NORMALE SUPÉRIEURE DE L'ENSEIGNEMENT
TECHNIQUE DE MOHAMMEDIA
UNIVERSITÉ HASSAN II DE CASABLANCA
L’instruction wait
Au lieu d’une liste de sensibilité, un processus peut contenir une instruction wait. L’utilisation de cette
instruction a deux raisons:
Suspendre l’exécution d’un process;
wait on : équivalente à une wait until : suspend le pro- wait for : relance le pro-
liste de sensibilité cess jusqu’à ce que une con- cess après un abs de temps
process
dition vraie. spécifié dans l’instruction.
begin process process
x <= a and b ; begin begin
wait on a , b ; wait until clk = ’1 ’; Q1 <= D1 ;
end process ; Q1 <= D1 ; wait for 10 ns ;
end process ; end process ;