Chap02 Langage VHDL Combinatoire
Chap02 Langage VHDL Combinatoire
Chap02 Langage VHDL Combinatoire
Chapitre 2
VHDL:
Circuits combinatoires
1/120
Chapitre 2: Langage VHDL: Circuits combinatoires
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoire Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
système numérique (approche HW)
Un système numérique (ou logique) peut varier d’un simple compteur
constitué de quelques bascules et portes logiques à un processeur GPP assurant des
dizaines d’opérations arithmétiques et logiques.
Tables de vérité,
Karnaugh, transition
3/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoire Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Systèmes numériques: Langages HDL
Les programmes à traiter par les outils de synthèse, doivent être écrits en l’un des
langages HDL (Hardware Description Language).
4/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoire Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Langage VHDL: Approches
Description Dataflow il s’agit de décrire l’acheminement des signaux ainsi que des
fonctions logiques les traitant. C’est une approche qui est proche de l’architecture
réelle. Contrôle total du résultat de synthèse.
5/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoire Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
VHDL: Design Flow
6/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL pour circuits combinatoires
Additionneur 1 bit complet (DataFlow)
Description de Multiplexeurs
7/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 1 bit complet : Equations
Commençons par un exemple simple, une description RTL d’un additionneur 1 bit complet.
A B Cin Cout S
A
B S
Cin S Cin A B
Cout Cout ( A.B ) (Cin.( A B ))
8/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 1 bit complet: code VHDL
En VHDL, tout système ou sous-système est décrit par 2 structures:
end Addcomplet;
9/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 1 bit complet: programme complet
Le package contenant les définitions des types utilisés Commentaires en VHDL
Type du signal
• VHDL est un langage fortement typé, c.a.d que chaque signal
doit avoir un type et on ne peut assigner la valeur d’un signal à
un autre d’une façon arbitraire.
11/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Types prédéfinis du langage VHDL
a <= ‘0’;
b <= ‘1’ ;
c <= a AND b;
d <= a OR b;
12/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Types prédéfinis du langage VHDL
B: std_logic_vector (1 to 8);
A <= “10010110”;
C <= A (2 to 5);
D <= “0101”;
• UNSIGNED: pour les entiers non signés codés sur un nombre de bits
A <= “10010110”;
B <= C & D; //concaténation
E <= A + B;
14/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Types prédéfinis du langage VHDL
15/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Librairies & Packages
D’autres types ainsi que les opérateurs permettant de les manipuler sont définis dans les
différents packages qui doivent être importés avec l’instruction use.
numeric_std • INTEGER
math_real • REAL
16/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Le Type STD_LOGIC
17/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
STD_LOGIC: l’état ‘Z’ ou Haute impédance
Pour la valeur « état haute impédance », iI s’agit d’un état ou le signal est
considéré comme étant complètement déconnecté du reste du circuit.
S <= ‘0’
‘0’ ~ 0V
S
S <= ‘Z’
S <= ‘1’
‘1’ ~ +V
S
18/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
STD_LOGIC: l’état ‘Z’ ou Haute impédance
Pourquoi l’état haute impédance? : Si plusieurs signaux (en sortie) sont
reliés à un même conducteur et émettent des niveaux de tensions différents
S S S S
Court-circuit
‘0’ ~ 0V ‘1’ ~ +V
S S S S
19/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Définition de nouveaux types
Il est possible de définir des signaux ayant de nouveau types composés qui seront
des tableaux de types existants.
Ou bien
• type mat_type is array (0 to 31) of std_logic_vector (7 downto 0)
Mot de 8 bits • matrice: mat_type
Si on inverse l’ordre des deux affectations: Cout <= (A AND B) OR (Cin AND (A XOR B));
S <= Cin XOR (A XOR B);
Les instructions en VHDL s’exécutent d’une façon parallèle et leur ordre n’a
aucun effet sur le résultat de synthèse (mais pas toujours):
entity Add_4bits is
port (A,B: in std_logic_vector (3 downto 0);
Cin: in std_logic;
S: out std_logic_vector (3 downto 0);
Cout: out std_logic);
end Add_4bits;
23/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 4 bits
Essayons maintenant de concevoir un programme VHDl pour la réalisation d’un
additionneur 4 bits:
A3 A2 A1 A0 B3 B2 B1 B0
Inputs outputs
A A A A B B B B S s S S C
3 2 1 0 3 2 1 0 3 2 1 0 o
Pour 4
Approche DataFlow bits: 0 0 0 0 0 0 0 0
inappropriée . . . . . . . .
29=512 . . . . . . . .
1 1 1 1 1 1 11
24/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 4 bits: architecture structurelle
25/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Description structurelle en VHDL (1/5)
Considérons tout d’abord cet exemple générique d’un système hiérarchique
pouvant être décrit d’une façon structurelle.
Ce système est composé de 3 sous-systèmes (2 identiques (composant_A) et
un 3ème correspondant au composant_B).
Ent1 compA
compB Sortie
Ent2 compA
in1
Ent Sor Composant_B
Composant_A In2 outb
component nom_composant
port (…………………..);
end nom_composant;
library ieee;
Déclaration des librairies
Use ieee.std_logic_1164.all;
entity compA is
Port (Ent: in std_logic; Sor: out std_logic);
end compA;
entity compB is
Port (in1,in2: in std_logic; outb: out std_logic);
end compB;
architecture archB of compB is
………..
………..
end archB;
29/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Description structurelle en VHDL (5/5): le programme complet ‘suite’
entity system is
port (Ent1, Ent2: in std_logic;Sortie: out std_logic) Déclaration de la section entité
du système entier
end system;
Begin
unit0: compA port map (Ent1,connex1);
• Instancier les composats et
unit1: compA port map (Ent2, connex2);
décrire les connexions entre :
unit2: compB port map (connex1, connex2, Sortie); instruction port map
end arch
30/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 4 bits : description structurelle
Exercice :
31/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 4 bits : description structurelle
32/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 4 bits : description structurelle
33/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 4 bits (description structurelle)
34/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Duplication de composants: l’instruction generate
• Pour décrire d’une façon structurelle une architecture, il faut faire des
35/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Generate & instructions concurrentes
• Les instructions à l’intérieur d’une boucle Generate peuvent être des
instructions concurrentes telles que des assignations de signaux.
37/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
L’instruction generate: decription structurelle de l’Additionneur 4 bits
38/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
L’instruction generate: decription structurelle de l’Additionneur 4 bits
39/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
L’instruction generate: decription structurelle de l’Additionneur 4 bits
40/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Lisibilité du code: Paramètres Génériques (1/2)
41/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Lisibilité du code: Paramètres Génériques (2/2)
42/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 4 bits: utilisation des opérateurs mathématiques
A B
(Cout)
S=A+B
43/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 4 bits: utilisation des opérateurs mathématiques (2/9)
end Add_4bits;
entity Adder is
port ( A, B : in unsigned(3 downto 0); S : out unsigned(3 downto 0);
Cout : out std_logic );
end;
Rq: On peut également utiliser le type integer (sans adaptation de la taille).Mais dans ce cas, on utilisera 32 bits pour chaque
signal (gaspillage)
45/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 4 bits: utilisation des opérateurs mathématiques (4/9)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE. STD_LOGIC_UNSIGNED.ALL;
entity Adder is
port ( A, B : in unsigned(3 downto 0); S : out unsigned (4 downto 0); );
end;
begin
46/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Conversions entre types
47/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Additionneur 4 bits: utilisation des opérateurs mathématiques (5/9)
‘0’&A = 0 A3A2A1A0
• Il faut coder A et B sur 5 bits sans changer leurs valeurs
En ajoutant (par concaténation: &) un ‘0’ à gauche: ‘0’&B = 0 B3B2B1B0
48/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Autres instructions concurrentes (combinatoires)
Évidement, les opérateurs arithmétiques et logiques ainsi que les simples assignations
ou affectations entre signaux ne sont pas suffisantes pour décrire le comportement de
circuits combinatoires plus évolués (Multiplexeur, Codeur,..).
• Signal1, … signalN, autre_signal peuvent être remplacés par des valeurs de même
type que signal_output.
• Signal1, … signalN, autre_signal peuvent être remplacés par des valeurs de même
type que signal_output.
50/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Autres instructions concurrentes (combinatoires): MUX 1:4
1. L’entité
51/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
Autres instructions concurrentes (combinatoires): MUX 1:4
52/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
53/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI
VHDL & Circuits VHDL & Circuits Synthèse: Exemples: Simulations Sous-
Introduction
Combinatoires Séquentiels Signal vs Variable FSM & Mémoires & Test programmes
54/120
Chapitre 3: Langage VHDL: Design & Synthèse – Emir DAMERGI