Académique Documents
Professionnel Documents
Culture Documents
ISET Sousse –
2020-2021
© R. Hertelli
Introduction générale
I. Introduction au langage VHDL
II. VHDL : Le Langage
III. VHDL en logique combinatoire
IV. VHDL en logique séquentielle
© R. Hertelli
1. Introduction
2. Réalisation d’un projet
3. Flot de conception pour un circuit
numérique
4. Démarche de développer d’une application
de logique
© R. Hertelli
Caractéristiques :
Standard (indépendant du logiciel échange facile)
Méthodologies de conception diverses
Outil complet (design, simulation, synthèse)
Haut niveau d’abstraction (indépendant de la technologie)
© R. Hertelli
© R. Hertelli
Comportementale
RTL
Porte logique
Circuit (transistor)
© R. Hertelli
Comportementale
RTL
Porte logique
Circuit (transistor)
© R. Hertelli
Comportementale
RTL
Porte logique
Circuit (transistor)
© R. Hertelli
Comportementale
RTL
Porte logique
Circuit (transistor)
© R. Hertelli
Comportementale
RTL
Porte logique
Circuit (transistor)
© R. Hertelli
de logique programmable
Pour développer une application de logique programmable, il faudra
suivre la démarche présenté ci- dessous:
1 • Saisie du texte VHDL (ou de schéma)
2 • Vérification Génération d’une NETLIST
3 • Simulation fonctionnelle
4 • Choix d’un composant et routage
5 • Simulation temporelle
6 • Programmation du composant et test
© R. Hertelli
© R. Hertelli
© R. Hertelli
Déclaration des ports: Elle permet de décrire les broches d'entrées et de sorties du
modèle.
© R. Hertelli
Exemple : Comparateur
ENTITY comparateur IS
PORT( 8
SIGNAL a : IN bit_vector(7 DOWNTO 0);
SIGNAL b : IN bit_vector(7 DOWNTO 0); 8
SIGNAL egal : OUT bit);
END comparateur;
© R. Hertelli
© R. Hertelli
© R. Hertelli
© R. Hertelli
exemple 1:
multiplexeur deux entrées a et b et une sortie s.
© R. Hertelli
OU ENCORE:
s <= a WHEN sel = '0' ELSE b ;
-- représentation comportementale
OU ENCORE:
WITH sel SELECT
s <= a WHEN '0' ,
b WHEN '1',
'0' WHEN OTHERS;
-- autre représentation comportementale
© R. Hertelli
Les chiffres doivent être inférieurs à la base, et peuvent prendre les valeurs 0 à F inclusivement.
Un littéral composé de bits peut être exprimé en bases 2, 8 ou 16, avec les spécificateurs de base B,
O et F, respectivement : B"11111111", O"377", X"FF".
Tout texte placé après deux tirets et jusqu’à la fin d’une ligne est un commentaire, ce qui est semblable
au ‘//’ de C. Il n’y a pas de commentaires en bloc (/* … */) en VHDL.
© R. Hertelli
Lors de la déclaration d’un objet, on spécifie sa catégorie, son identificateur et son type. On
peut aussi lui assigner une valeur initiale
© R. Hertelli
type source
catégorie valeurs
ou sous-type de la définition
type source
catégorie valeurs
ou sous-type de la définition
31
natural sous-type prédéfini 0 à 2 1
positive sous-type prédéfini 1 à 2 31 1
typiquement
real type prédéfini –1.7014111E±308 à
1.7014111E±308
‘U’ : valeur inconnue, pas
initialisée
‘X’ : valeur inconnue forcée
scalaires ‘0’ : 0 forcé
‘1’ : 1 forcé
Package
std_logic ‘Z’ : haute impédance (pas
std_logic_1164
connecté)
‘W’ : inconnu faible
‘L’ : 0 faible
‘H’ : 1 faible
‘-‘ : peu importe (don’t care)
© R. Hertelli
© R. Hertelli
Le corps d’une architecture contient des énoncés qui sont réputés être exécutés de
façon concurrente. Les trois sortes d’énoncés concurrents les plus utilisés pour la
description d’un circuit sont :
• les assignations de signaux concurrentes, choisies et conditionnelles;
• les instanciations de composantes; et,
• les processus.
library ieee;
use ieee.std_logic_1164.all;
entity combinatoire1 is
port (
A : in std_logic;
B : in std_logic;
C : in std_logic;
F : out std_logic
);
end combinatoire1;
© R. Hertelli
© R. Hertelli
© R. Hertelli
begin
© R. Hertelli
En VHDL, les variables sont utilisées à l’intérieur des processus pour garder des
valeurs de façon temporaire, pour calculer des valeurs devant être utilisées dans des
expressions subséquentes, ou encore pour séparer de longs calculs sur plusieurs
énoncés.
© R. Hertelli
-- énoncé if-then-else
if ( condition ) then
énoncés;
elsif ( condition ) then
énoncés;
else
énoncés;
end if;
-- énoncé case
case ( expression ) is
when ( choix unique, plusieurs séparés par ‘|’, ou gamme de valeurs )
=> énoncés;
when ( choix unique, plusieurs séparés par ‘|’, ou gamme de valeurs )
=> énoncés;
when others => énoncés;
end case;
© R. Hertelli
Fonction
Une fonction est un sous-programme qui retourne un
résultat unique. La valeur retournée peut être d’un type
scalaire ou composé. Une fonction peut accepter des
paramètres en entrée. Ces paramètres ne peuvent pas être
modifiés par la fonction. On utilise un appel de fonction
dans une expression.
© R. Hertelli