SlideShare une entreprise Scribd logo
1  sur  75
DEPARTEMENT DE GENIE ELECTRIQUE
1
Chargé de Cours : Abderahman Adoum OUMAR
Cours de VHDL (Very High Hardware description langage)
Niveau d’étude : II
Année académique: 2016-2017
Prérequis
Electronique Numérique
 Logique combinatoire
 Logique Séquentielle
2
Préambule :
•Horaire du cours : 25 heurs
- 10H de CM + 15H de TD .
•Moyen pédagogique :
- Support du cours ;
•Evaluation :
- Un DS écrit ;
- Examen écrit.
Objectif du module :
Ce cours est la suite thématique de l’électronique Numérique . il a pour
objectif de :
• Modéliser le composant de base de l’électronique numérique
◦- logique combinatoire
- logique séquentiel
• savoir utiliser un langage de programmation comme le VHDL
• A fin d’implémenter dans un environnement de carte programmable
Sommaire détaillé
PARTIE I: CONCEPTION DES CIRCUITS PROGRAMMABLES
PARTIE II: SYNTHESE DE LOGIQUE VHDL
PARTIE III: LES OBJECTS VHDL
5
PARTIE I: CONCEPTION DES CIRCUITS PROGRAMMABLES
6
PRESENTER L’EVOLUTION ET L’ENVIRONNEMNT CIRCUIT PROGRAMMABLES
 PLD : Programmable Logic Device;
 CPLD : Complex PLD;
 PAL: Programmable Array Logic;
 GAL: Generic Array Logic;
 FPGA : Field Programmable Gate Array;
 ASIC : Application-specific integrated circuit,
Implantation des circuits numériques
• Avec des éléments discrets
• Avec des microprocesseurs, micro contrôleurs, DSP
• Avec des circuits à architecture programmable PAL, GAL,
FPGA Avec des circuits intégrés ASIC
PLD : Programmable Logic Device, CPLD : Complex PLD, PAL: Programmable Array Logic,
GAL: Generic Array Logic,
FPGA : Field Programmable Gate Array, ASIC : application-specific integrated circuit
7
Circuit avec des éléments discrets.
•Circuit figé
•Circuit imprimé difficile à modifier
•Intégration limitée
•Coût élevé
•Justifié pour de petits circuits
8
CIRCUITS A FONCTIONNEMENT PROGRAMMABLE
• A base de microprocesseurs, microcontrôleurs, DSP
• En modifiant le programme on modifie la fonction
• Plus souple que les circuits à éléments discrets
• Vitesse limitée (mais qui augmente sans cesse)
• Parallélisme compliqué (mais faisable)
• Intégration encore limitée
• Adapté à des opérations séquentielles
9
DSP(Digital signal processing)
10
Utilisé dans le montage audio-visuel
Circuit à architecture programmable
• Une quantité importante de portes logiques
• Des matrices d'interconnections programmables
• Modification du fonctionnement sur le circuit (ISP)
• Souplesse assurée
• Coût de fabrication faible (pour un nombre limité)
• Intégration forte
• Adapté à des applications gourmandes en logique
• Temps de développement dépend de l'application
• Compliqué pour implanter des algorithmes complexes
11
Les ASIC (Application Specific Integrated Circuit)
• Coût très bas mais pour de gros tirages
• Temps de développement important
• Pas de modifications une fois fabriqué
• Nécessitant un fondeur pour la fabrication
12
ASIC ou FPGA
13
ASIC
Haute performance
Basse consommation
Bas prix si gros tirage Coût de développement faible
Mise rapide sur le marché
Réconfigurablilité
FPGA
Evolution : méthodes de CAO
14
Conception physique
Conception structurelle TTL
Conception logique
Synthèse comportementale
Conception fonctionnelle RTL
(Transfert de régistres) Register Transfer Level
un outils de développement : QUARTUS
15
Déroulement d’une programmation
16
17
Démonstrateurs
Carte d’Evaluation Live Design d’Altium
18
Programmation JTAG
19
20
Specifications
FPGA
• Cyclone II EP2C35F672C6 FPGA and
EPCS16 serial configuration device
I/O Devices
• Built-in USB Blaster for FPGA configuration
• 10/100 Ethernet, RS-232, Infrared port
• Video Out (VGA 10-bit DAC)
• Video In (NTSC/PAL/Multi-format)
• USB 2.0 (type A and type B)
• PS/2 mouse or keyboard port
• Line-in, Line-out, microphone-in
(24-bit audio CODEC)
• Expansion headers (76 signal pins)
Memory
• 8-MB SDRAM, 512-KB SRAM, 4-MB Flash
• SD memory card slot
Switches, LEDs, Displays, and Clocks
• 18 toggle switches
• 4 debounced pushbutton switches
• 18 red LEDs, 9 green LEDs
• Eight 7-segment displays
• 16 x 2 LCD display
• 27-MHz and 50-MHz oscillators, external SMA clock input
CARTE FPGA
FPGA(Environnement de développement)
21
Afficheur
Interrupteur
Boutton switch
Interface de programmation Quartus
22
Programmation de la carte FPGA
23
VVHSIC
(Very High Speed Integradted Circuit)
HHardware
DDescription
LLanguage
24
PARTIE II: SYNTHESE DE LOGIQUE VHDL
II.1.Définition
VHDL sont les initiales de VHSIC Hardware Description
Langage, VHSIC étant celles de Very High Scale Integrated
Circuit. Autrement dit, VHDL signifie : langage de description
matériel s'appliquant aux circuits intégrés à très forte intégration.
25
II.2.Généralités
L'évolution des technologies induit une complexité croissante des circuits intégrés qui
ressemblent de plus en plus aux systèmes complets d'hier. Aujourd'hui, on intègre dans une
puce ce qui occupait une carte entière il y a quelques années. La simulation logique globale du
système au niveau "porte" n'est plus envisageable en termes de temps de simulation. C'est
donc tout naturellement que des simulateurs fonctionnels ont commencé à être utilisés en
microélectronique. Dans les années 70, une grande variété de langages et de simulateurs était
utilisée. Cette diversité avait pour conséquence une non portabilité des modèles et donc une
impossibilité d'échange entre les sociétés. Un des rôles de VHDL est de permettre l'échange de
descriptions entre concepteurs. Ainsi peuvent être mises en place des méthodologies de
26
modélisation et de description de bibliothèques en langage VHDL. L'effort de
standardisation d'un langage tel que VHDL était nécessaire par le fait qu'il ne
s'agissait pas de construire un seul simulateur VHDL (contrairement à la
quasi-totalité des autres langages), mais de permettre l'apparition d'une
multitude d'outils (desimulation, de vérification, de synthèse, ...) de
constructeurs différents utilisant la même norme. Ceci garantit une
bonne qualité (la concurrence) et l'indépendance de l'utilisateur visà vis
des constructeurs de ces outils.
27
II.3.Historique
Au début des années 80 la nécessité d’un langage non ambigu des systèmes matériels
pour intégration à grande échelle (plusieurs milliers , voire millions, de portes) . On peut
grâce à ce langage créer des fonctions électroniques avec une totale abstraction
matérielle. La normalisation pour permettre au code écrit d’être portable, c’est à dire
qu’une description écrite pour un circuit peut être facilement utilisée pour un autre
circuit. Indépendance vis-à-vis des fournisseurs.
La Norme définitive adoptée en 1987 : IEEE Std 1076 qui l’impose comme une nouvelle
norme internationale. La norme a été revue en 93, 2000 et 2002 Les premiers outils de
synthèse en 1995. Le VHDL permet le mariage du matériel avec le logiciel, c'est à dire que
VHDL ne fait pas de différence entre un logiciel (par exemple une fonction de test) et une
fonction électronique. Il peut de plus intégrer les stimulis, les retards et les fonctions
spéciales.
28
II.4.Les principales caractéristiques du langage VHDL
Un langage s’applique à plusieurs niveau de descriptions
Le langage VHDL couvre tous les niveaux partant des portes
logiques de base jusqu'aux systèmes complets (plusieurs
cartes, chacune comprenant plusieurs circuits). Il s'applique tout
aussi bien au niveau structurel qu'au niveau comportemental,
en passant par le niveau transferts de registres ou RTL
(Register Transfer Logic).
29
A-Description comportement
Le circuit est décrit sans tenir compte de la réalisation concrète sur un
composant donné (Elle ne comporte aucune horloge et les largeurs des
bus ne sont pas spécifiées.). On utilise les fonctions de haut niveau
d’abstraction de VHDL. Le code est donc portable, mais il dépend
entièrement du synthétiseur pour le résultat (si un tel synthétiseur
existait, ce qui n’est pas encore le cas). Ce style de description permet en
particulier de spécifier le circuit sous forme d’un algorithme.
30
B-Description par flot de données
Le circuit est décrit grâce à plusieurs couche de registres (bascules D) reliées
par de la logique combinatoire. On utilise généralement une liste
d'instructions concurrentes d'affectations de signaux du type "<signal> <=
<expression> " où <expression> peut représenter un simple signal, ou une
expression utilisant des opérateurs logiques, arithmétiques ou relationnels,
ou une expression conditionnelle. C’est la manière traditionnelle d’écrire du
VHDL et qui donne généralement les meilleurs résultats avec les
synthétiseurs commercialisés. Ce niveau de description est souvent appelé
"logiques à transfert de registres" ou RTL (Register Transfer Logic).
31
C-Description structurelle de niveau Bas
Le circuit est décrit par sa structure, sous forme d’une liste de composants instanciés et des
interconnexions les reliant. En fait, c’est l’équivalent littéral d’un schéma représentant
l’interconnexion de portes élémentaires issues d'une bibliothèque.
D-Description structurelle de niveau Haut
Le circuit est découpé en blocs fonctionnels de haut niveau qui sont reliés entre eux. Il s’agit
toujours d’un schéma, mais il représente des composants qui peuvent être écrit en
comportemental ou en RTL (mais aussi en structurel bas niveau). On retrouve en général ce
type de description dans le design supérieur d’une description hiérarchique (top level
design).
32
II.5.synthèse
La synthèse est définie comme une succession d'opérations permettant
à partir d'une description de circuit dans un domaine fonctionnel
(description comportementale) d'obtenir une description équivalente dans
le domaine physique (description structurelle). Le processus de synthèse
peut être défini comme une boîte noire ayant en entrée une description
abstraite en termes de langage de description matériel, et comme sortie
une description structurée en termes de dispositifs interconnectés (une
netlist)
33
II.5.1 Intérêt de la synthèse
Le premier intérêt de la synthèse est de permettre une description la plus abstraite possible
d'un circuit physique. Le concepteur a de moins en moins de détails à donner. Par exemple,
pour décrire un compteur, la description détaillée des signaux de contrôle explicitement
utilisés n'est pas indispensable. Seule la fonctionnalité de comptage et les contraintes de
synthèse (qui peuvent être des contraintes de temps, d’optimisation, de circuit cible, etc…)
doivent être indiquées. Le but de l'abstraction est de réduire et de condenser les descriptions
au départ et, par conséquent, de faciliter leur correction en cas d'erreurs. L'autre avantage de
l'abstraction est la portabilité.
34
II.6.Différence entre un langage de programmation et VHDL
VHDL n’est pas un langage de programmation comme le C, c’est un langage de description
matériel. Il est important de bien comprendre la différence entre les deux :
• un langage de programmation est destiné à être traduit en langage machine puis à être
exécuté par un microprocesseur.
• un langage de description matériel comme VHDL décrit une réalité matérielle, c’est-à-dire
le fonctionnement d’un système numérique. Il va être traduit (synthétisé) en un
ensemble de circuits logiques combinatoires et séquentiels qui vont être implémentés
dans un circuit intégré. Il n’y a aucun microprocesseur pour exécuter la description VHDL
dans un circuit intégré.
35
PARTI III Structure du VHDL(OBJECTIFS)
36
Il existe 5 catégories d’unité de conception:
Une unité de conception est une partie de programme qui peut être compilée
séparément. Cet aspect modulaire est la base de la structuration de la
description. Le support du programme est un fichier texte qui peut contenir une
ou plusieurs unités. Par défaut le résultat de compilation sera placé dans une
bibliothèque ayant comme nom logique WORK.
Pour la compilation de plusieurs unités, un certain ordre devra être respecter à
cause de leur dépendance éventuelle.
III.2 Structure du VHDL
• L’entité (mot clé entity)
Décrit un système vu extérieur (boîte noire)
• L’architecture (mot clé architecture)
Décrit l’intérieur (le fonctionnement) d’une boîte noire.
• La configuration (mot clé configuration):
choisir l’architecture d’un composant quand il y en a plusieurs.
• La déclaration de paquetage (mot clé package)
c’est une unité de conception permettant de regrouper des définitions de
types, de constantes ou des déclarations de sous- programmes.
• Le corps de paquetage (mot clé package body)
optionnel sert à instancier des constantes ou à décrire les sous-programmes.
37
III.2.Structure hiérarchique
38
Au niveau supérieur, on se contente de décrire les
Entrées et Sorties du module global
Au niveau intermédiaire, on se contente de décrire la
façon dont s’associent les fonctions A, B et C.
Au niveau inférieur, pour chaque fonction, on peut aller jusqu’à
décrire le fonctionnement des portes de base, NAND, XOR…
Dans un langage de programmation (C ou Pascal), les opérations décrites sont exécutées les unes
après les autres dans l’ordre précis décrit dans l’algorithme.
En VHDL, les différentes tâches décrites se déroulent simultanément.
III.3.Domaine concurrent et séquentiel
Description d’un système matériel
• description d’action concurrentes (ex. plusieurs blocs d’un circuit peuvent fonctionner en
parallèle
• description d’action en séquence (ex. automates)
Deux jeux d’instructions en VHDL
• Instructions concurrentes : elles s’exécutent en même temps
• Instructions séquentielles : elles s’exécutent les une après les autres
39
III.4.Classes d’objets
Quatre classes d’objets en VHDL :
• Les constantes
Comme les autres langages, elles ont une valeur fixe
• Les variables
Comme les autres langages, elles ont une valeur immédiatement modifiable par affectation
• Les signaux
Notion nouvelle, la valeur ne se modifie pas immédiatement :variable + notion temporelle
(valeurs datées)
• fichier (n’est pas abordé dans ce cours)
ensemble de valeurs qui peuvent être lues ou écrites
40
III.5. Types d’objets
Les objets d’un programme VHDL sont tous typés.
Avant toute utilisation d’une constante, d’une variable ou d’un signal, il faut les déclarer.
La déclaration des objets s’effectue uniquement dans la partie déclarative du programme.
41
III.5.1 Les opérateurs
42
Six classes de priorité
III.5.2. Opérateur logique
43
III.5.3. Opérateur de Comparaison
44
III.5.3. Opérateur arithmétique et autre
45
III. 6. Programmer en VHDL
1. Définition de l’entité (boîte noire avec les ports d’entrée/sortie)
2. Définition de l’architecture interne de cette boîte noire
3. Déclaration des constantes, des signaux, des fonctions, des procédures, des blocs
hiérarchiques utilisés dans le programme
4. Corps du programme consistant
les instructions concurrentes
Les instructions séquentielles encapsulées dans des « process »
5- (Les commentaires sont précédés de deux tirés : -- exemple)
46
L’IEEE (Institut of Electrical and Electronics Engineers): les a normalisées et plus particulièrement la
bibliothèque IEEE1164.
47
Déclaration des bibliothèques
• L'entité définit les ports (vue externe) et leur mode (in, out, inout,
buffer)
• Paramétrer le modèle (paramètres génériques)
• Syntaxe:
entity nom_de_l_entite is
{generic(liste_des_parametres)}
{port(liste_des_port_avec_leutr_mode)}
end {nom_de_l_entite}
48
Entité
Entité
49
Rôle de l’entité
Son rôle est uniquement de décrire le câblage du module, vu de l'extérieur. Elle liste les signaux d'entrée
et de sortie de la structure et indique leur mode et nature . La liste des entrées et sorties est entre ( ) et
annoncée par le mot-clef: PORT
Le mode décrit le sens des signaux:
in signal d'entrée, unidirectionnel
out signal de sortie, unidirectionnel
inout signal d'entrée-sortie, bidirectionnel
buffer signal de sortie, unidirectionnel, mais réentrant
50
Rôle de l’entité
Le type décrit la nature des signaux, les types courants sont:
☯ bit peut prendre 2 valeurs, 0 ou 1
☯ bit_vector (N downto 0) définit un bus, l (l'indice de gauche étant toujours le Most
Significant Bit
ou bit_vector (0 to N) écriture déconseillée car 0 désignerait alors le poids fort. L'indice le
plus faible peut ne pas être 0.
☯ boolean peut prendre 2 valeurs FALSE et TRUE
☯ std_logic peut prendre les valeurs 0, 1, U (indéterminé) ou Z (haute impédance)
☯ integer entier, positif ou négatif, sur 32 bits
☯ character caractères a, b, c… A, B, C….1,2,3…..
51
Exemple d’entité
52
Exemple d’entité
53
Architecture
1. Définition de signaux et d'autres objets internes
2. Description du fonctionnement ou de la structure de l’entité à l’aide d’instructions concurrentes
son rôle est de décrire un fonctionnement possible de l'entité et cette description peut être
structurelle ou comportementale.
Syntaxe:
architecture nom_de_l_architecture of nom_de_l_entite is
{partie déclarative}
begin
{suite d’instructions concurrentes}
end nom_de_l_architecture;
54
III.7.Description structurelle
On va définir par instructions l'équivalent
littéral d'un schéma structurel, ce qui n'est
ni simple ni pratique, ni vraiment le but du
VHDL.
55
sel
selb
e1
e0
s1
s0
U0
U1
U2
U3
ARCHITECTURE modele2 OF multiplexeur IS
COMPONENT ET
PORT (a,b: IN BIT;
s: OUT BIT);
END COMPONENT;
COMPONENT OU
PORT (a,b: IN BIT;
s: OUT BIT);
END COMPONENT;
COMPONENT NOT
PORT (a: IN BIT;
s: OUT BIT);
END COMPONENT;
SIGNAL selb,s1,s0: BIT;
BEGIN
U0: ET PORT MAP (sel,e1,s1);
U1: ET PORT MAP (selb,e0,s0);
U2: NOT PORT MAP (sel,selb);
U3: OU PORT MAP (s1,s0,s);
END modele2;
Hiérarchisation
Conception d’un bloc et son utilisation dans un autre circuit: instanciation ou
instanciation multiple
1. Première étape: écrire l’entité et l’architecture du module
2. Deuxième étape: introduire ce module au circuit appelant (ce module s’appellera «
component »)
3. Troisième étape: instanciation du module
56
component AND_2
port (
a : in bit;
b : in bit;
s : out bit);
end component;
Déclaration:
Le mot clé component sert à déclarer le prototype d'interconnexion. La syntaxe est presque
identique à celle de l'entité :
57
Pour créer rapidement un composant, une opération copier/coller de l'entité en enlevant le littéral "IS" suffit.
entity AND_3 is
port(
e1 : in bit;
e2 : in bit;
e3 : in bit;
s : out bit);
end AND_3;
architecture arc of AND_3 is
signal z : bit;
component et
port (
a : in bit;
b : in bit;
s : out bit);
end component;
begin
inst1 : et port map (a=>e1,
b=>e2 , s=>z);
inst2 : et port map (z, e3, s);
end arc;
Dans cet exemple , 2 instances de composant "and2" sont appelées pour
créer une porte ET à 3
entrées.
L'association des ports du composants aux signaux de l'instance se fait à
l'aide de la
clause port map.
La syntaxe des associations est soit
1- par nom où chaque broche du composant est associée à un signal
: cas de inst_1
2- positionnelle où l'ordre des signaux correspond à l'ordre des
broches : cas de inst_2
Pour que ça marche, il faut avoir
créer le component et dans le
même répertoire, comme suit
Entity et is
port( a: in bit; b: in bit;
s: out bit);
End et;
Architecture aetb of et is
Begin
S<= a and b;
End aetb;
Déclaration et instanciation des composants
Instanciation : L'instanciation d'un composant se fait dans le corps de l'architecture de cette façon NOM_INSTANCE>:<NOM_COMPOSANT> port map (LISTE DES
CONNEXIONS);
58
Découpage de votre projet en fonctions: création de composants adéquats
Assemblage des composants créés pour structurer votre projet
MOT CLE: PORTMAP
 Ma Référence :port map ( liste ordonnée de signaux) ;
ou
 Ma Référence : port map ( port=> signal , port => signal ) ;
exemple: additionneur 4 bits.
etape 1: je crée un composant ADDITIONNEUR 1 bits
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY fa IS
PORT (
Ci, X, Y: IN STD_LOGIC;
S, Cout: OUT STD_LOGIC);
END fa;
ARCHITECTURE Dataflow OF fa IS
BEGIN
Cout <= (X AND Y) OR (Ci AND (X XOR Y));
S <= X XOR Y XOR Ci;
END Dataflow;
Instanciation (placement) de composants déjà crées
59
III.7.Description comportementale
Le comportement du module en cours de conception est
directement décrit à l'aide d'instructions séquentielles ou sous
forme de flux de données.
60
On veut créer le
multiplexeur ci-contre
S = E1 si Cde = 0
S = E2 si Cde =1
En-tête indiquant les bibliothèques IEE à utiliser
Library ieee;
Use ieee.std_logic_1164.all;
Entity mux_2 is
port (E1, E2, Cde: in bit;
S: out bit);
End mux_2
Architecture arch1_mux_2 of mux_2 is
Begin
S<=E1 when CDE=‘0’else E2;
End arch1_mux_2;
Déclaration d’identité
Déclaration d’architecture
<= est obtenu avec < et = et signifie « prend la valeur »
Noter qu’un état logique est entre ‘apostrophes’
On constate que l'on n'a pas cherché à indiquer le type de porte nécessaire pour que le
fonctionnement se réalise. Seul le flux de données est cité.
61
library ieee;
use ieee.std_logic_1164.all;
entity mux_2 is
port (E1,E2,Cde: in bit;
S:out bit);
end mux_2;
architecture arch2_mux_2 of mux_2 is
begin
S<=(E1 and (not(Cde))) or (E2 and Cde);
end arch2_mux_2;
Une autre architecture du même multiplexeur est donnée
ci-dessous, toujours sous forme comportementale (noter
que l'entité ne change absolument pas)
Ces deux séquences d’instructions sont
équivalentes. Il existe un lien permanent
entre A,B et C.
.
A := B;
B := C;
B := C;
A := B;
Ces deux séquences d’instructions ne sont
pas équivalentes
A <= B;
B <= C;
B <= C;
A <= B;
Domaine concurrent Domaine séquentiel
Il existe une instruction concurrente particulière appelée process (processus) qui comporte à
l’intérieur des instructions séquentielles. A l’intérieur du process, l’ordre d’écriture des instructions
est important
L’ordre d’écriture des instructions concurrentes n’est pas important
architecture nom de l'architecture of nom de la spécification d'entité is
déclarations;
begin
instructions concurrentes;
end {nom de l'architecture};
III.8 Séquentiel / concurrent
 Rappel du contenu d’une architecture
62
III.9.Instructions concurrentes
 Il existe 7 instructions concurrentes en VHDL:
- affectation simple de signal
- affection conditionnelle de signal
- affectation sélective de signal
- instanciation de composant
- instruction GENERATE
- instruction PROCESS
- appel de procédure
 Peuvent disposer d'un label. Ce label optionnel peut permettre de localiser
rapidement toutes les actions parallèles d'une structure et donc d'améliorer la
lisibilité d'un programme VHDL.
 Sont essentiellement utilisées au niveau du corps de l’architecture
63
III.10.Fonctionnement concurrent
En langage VHDL, les instructions d'une architecture sont évaluées (ce qui signifie "testées et exécutées") en
permanence et simultanément. Ce type de fonctionnement est appelé parallèle ou concurrent et correspond au cas de
l'électronique combinatoire.
64
On distingue 3 types d'instructions concurrentes:
1- Equations logiques classiques où on utilise l'assignation inconditionnelle <=
library ieee;
use ieee.std_logic_1164.all;
entity demi_add is
port (A,B: in bit;
S1,S2:out bit);
end demi_add;
architecture arch1_exemple_2 of demi_add is
Begin
S2<= A and B;
S1<= A or B;
end arch1_exemple_2;
Fonctionnement concurrent
2- Instructions conditionnelles du type when….. else.
65
library ieee;
use ieee.std_logic_1164.all;
entity mux_4 is
port (A,B,C:in bit;
SEL:in bit_vector(1 downto 0);
S:out bit);
end mux_4;
architecture arch1_mux_4 of mux_4 is
begin
S<= A when (SEL="00") else
B when (SEL="01") else
C when (SEL="10") else '0';
end arch1_mux_4
Assignation conditionnelle
Structure WHEN/ELSE
signal <= signal1 when expresion_boolénne else
………
signal1xx when expresion_boolénne else
signal par défaut;
---- Solution 1: with WHEN/ELSE -------------
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY encoder IS
PORT ( x: IN STD_LOGIC_VECTOR (3 DOWNTO 0);
y: OUT STD_LOGIC_VECTOR (1 DOWNTO 0));
END encoder;
ARCHITECTURE encoder1 OF encoder IS
BEGIN
y <= "00" WHEN x="0001" ELSE
"01" WHEN x="0010" ELSE
"10" WHEN x="0100" ELSE
"11" WHEN x="1000" ELSE
"ZZZ";
END encoder1;
Exemple d’application:
encodeur clavier pour PIC
Intérêt: réduire le nombre d’entrée du PIC
Fonctionnement concurrent
66
with expression select
signal1 <= signal1when valeur 1,
signal2 when valeur2,
------
signal par défaut when others
;
Le multiplexeur: on aiguille une enrée vers la
sortie en fonction d’un numéro d’aiguillage
MUX
1 voie parmi 4
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_arith.all;
Entity combi3 is
port(
c: in integer range 0 to 3;
e: in std_logic_vector(3
downto 0);
s:out std_logic);
End combi3;
Architecture archi1 of combi3 is
Begin
With c select
s<=e(0) when 0,
e(1) when 1,
e(2) when 2,
e(3) when 3;
End archi1;
Assignation sélective
Fonctionnement concurrent
67
Exemple: décodeur 7 segments
68
Utilisation d’une table (LUT Look-Up Table: table de correspondance) pour décrire le système
Cette table se comporte un peu comme une table de vérité, et désigne sa sortie en fonction de ses entrées et du contenu
de la table. Le gain de vitesse peut être significatif, car rechercher une valeur en mémoire est souvent plus rapide
qu'effectuer un calcul important.
Carte DE2:
Anode commune
Segment actif à ‘0’
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity decod7seg is
port(
iDigit: IN std_logic_vector (3 downto
0);
oSeg: OUT std_logic_vector (6 downto
0));
end decod7seg;
architecture arch_dec_7seg_v1 of decod7seg is
-- definition d'un nouveau type tableau de 16 elements de 7 bits
type ROM is array(15 downto 0) of std_logic_vector(6 downto 0);
--initialisaion du tableau
-- tableau vu comme une memoire(LUT)
signal LUT:ROM:=(
"1000000","1111001","0100100","0110000","0011001","0010
010","0000010",
"1111000","0000000","0011000","0001000","0000011","1000
110","0100001",
"0000110","0001110");
begin
-- pour indexer tableau il faut un entier
-- fonction de conversion conv_integer dan IEEE.std_logic_unsigned.all
oSeg<=LUT(conv_integer(iDigit));
end arch_dec_7seg_v1;
Il faut
• En VHDL, une zone séquentielle existe dans laquelle une suite d'instructions
s’exécutent les unes après les autres.
• Cette zone se trouve dans les process, fonctions et procédures.
En langage VHDL, pour décrire un fonctionnement séquentiel, il faut faire appel à
un "processus" (process), soit un groupe bien délimité d'instructions, qui répond à 3
critères.
⌦ le processus s'exécute à chaque changement d'état d'un des signaux
auquel il est sensible. On définit derrière le mot process (la liste des
signaux auquel le processus est sensible)
⌦ les instructions du processus s'exécutent séquentiellement.
⌦ les modifications que subissent alors les signaux ne sont effectives
qu'à la fin du processus.
69
III.11.Fonctionnement séquentiel.
• Process est une instruction concurrente complexe à écrire dans une architecture.
• Process définit une zone séquentielle.
• Les différents process d'une architecture s'exécutent tous en parallèle.
• Syntaxe de process :
label : -- optionnel
process (liste de sensibilité)
{partie déclarative}
begin
suite d’instructions séquentielles
end process;
• Un process s'exécute quand un des signaux de la liste de sensibilité change de
valeur.
Fonctionnement séquentiel.
70
Un exemple
library ieee;
use ieee.std_logic_1164.all;
entity mux_2 is
port (E1,E2,Cde: in bit;
S:out bit);
end mux_2;
architecture arch3_mux_2 of mux_2 is
begin
process (Cde,E1,E2)
begin
if (Cde='0') then
S <= E1;
else S <= E2;
end if;
end process;
end arch3_mux_2;
En plaçant E1 et E2 dans la liste de
sensibilité du processus, on obtient un
fonctionnement équivalent au
combinatoire
Fonctionnement séquentiel.
71
Syntaxe de l'instruction processus
[Label1:] process (Liste_De_Sensibilité)
-- ↑ Signaux_activant_le_processus
--zone de déclaration
begin
--Zone pour instructions
-- séquentielles ....
end process;
un process
• s’active lorsqu’un des signaux de sa liste de
sensibilité (ses entrées) change de valeur,
• et se rendort lorsque toutes les instructions
séquentielles ont été évaluées une fois (end process)
L’exécution des instructions à l’intérieur d’un process
est séquentielle
• Le temps simulé est stoppé durant l’exécution d’un
process, donc
• les affectations aux signaux ne prennent effet
qu’après l’endormissement du process (fin de
l’exécution de l’algorithme)
72
Réveil du process
Exemple: bascule D latch.
Rappel: elle fonctionne sur niveau
Processus activé
73
Instructions séquentielles
Elles s'écrivent uniquement dans une zone séquentielle
• instruction d'attente (wait)
• instruction d'affectation (temporisée)
• instruction conditionnelle (if)
• instruction case
• instruction de boucle
74
Bibliographie
◦ Certaines illustrations et exemples proviennent de cours ou d’ouvrages présents ci-dessous
◦ Introduction à la Synthèse logique Philippe LECARDONNEL & Philippe LETENNEUR
◦ Le langage de description VHDL T. BLOTIN
◦ VHDl J.maillefert
◦ Circuit Design with VHDL Volnei A. Pedroni
◦ Un lien bien utile pour l’étudiant GEII
◦ http://perso.orange.fr/xcotton/electron/coursetdocs.htm
75

Contenu connexe

Similaire à Cours VHLD.pptx

Cours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.comCours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.commorin moli
 
416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdfRihabBENLAMINE
 
ADMINISTRATION SYST ME ET R SEAUX
ADMINISTRATION SYST ME ET R SEAUXADMINISTRATION SYST ME ET R SEAUX
ADMINISTRATION SYST ME ET R SEAUXMonica Waters
 
TelCar : Solution de lecture des informations de bord de véhicule
TelCar : Solution de lecture des informations de bord de véhiculeTelCar : Solution de lecture des informations de bord de véhicule
TelCar : Solution de lecture des informations de bord de véhiculeGhassen Chaieb
 
VoIP-kobbane2018_1_.pdf
VoIP-kobbane2018_1_.pdfVoIP-kobbane2018_1_.pdf
VoIP-kobbane2018_1_.pdfAlKir1
 
Projet reseau-de-kherfallah-ipm-2010-2011
Projet reseau-de-kherfallah-ipm-2010-2011Projet reseau-de-kherfallah-ipm-2010-2011
Projet reseau-de-kherfallah-ipm-2010-2011Boubaker KHERFALLAH
 
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL   PROGRAMMATION ET _ETAPES pour comprendreCOURS VHDL   PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendreMariamHafsa
 
Presentation concernant les fondements des réseaux.pptx
Presentation concernant les fondements des réseaux.pptxPresentation concernant les fondements des réseaux.pptx
Presentation concernant les fondements des réseaux.pptxwiem12wiem1
 
Nuit du Hack 2K16 - Scénarios d'attaques sur un système industriel
Nuit du Hack 2K16 - Scénarios d'attaques sur un système industrielNuit du Hack 2K16 - Scénarios d'attaques sur un système industriel
Nuit du Hack 2K16 - Scénarios d'attaques sur un système industrielDavid Bigot
 
PowerPoint Techno large bandes LP3.pptx
PowerPoint Techno large bandes LP3.pptxPowerPoint Techno large bandes LP3.pptx
PowerPoint Techno large bandes LP3.pptxTninFofana
 
Cablage structuré
Cablage structuréCablage structuré
Cablage structuréaziz rafa
 
ITN_Module_6.pptx
ITN_Module_6.pptxITN_Module_6.pptx
ITN_Module_6.pptxserieux1
 
Chapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSIChapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSIMohamed Lahby
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfHouBou3
 
administration des systemes et des reseaux.pptx
administration des systemes et des reseaux.pptxadministration des systemes et des reseaux.pptx
administration des systemes et des reseaux.pptxEyaSarhani
 
Composants reconfigurables
Composants reconfigurablesComposants reconfigurables
Composants reconfigurablesPeronnin Eric
 

Similaire à Cours VHLD.pptx (20)

Cours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.comCours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.com
 
416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf
 
Tiny os_2
Tiny os_2Tiny os_2
Tiny os_2
 
PDH,sdh,wdm.pptx
PDH,sdh,wdm.pptxPDH,sdh,wdm.pptx
PDH,sdh,wdm.pptx
 
ADMINISTRATION SYST ME ET R SEAUX
ADMINISTRATION SYST ME ET R SEAUXADMINISTRATION SYST ME ET R SEAUX
ADMINISTRATION SYST ME ET R SEAUX
 
TelCar : Solution de lecture des informations de bord de véhicule
TelCar : Solution de lecture des informations de bord de véhiculeTelCar : Solution de lecture des informations de bord de véhicule
TelCar : Solution de lecture des informations de bord de véhicule
 
VoIP-kobbane2018_1_.pdf
VoIP-kobbane2018_1_.pdfVoIP-kobbane2018_1_.pdf
VoIP-kobbane2018_1_.pdf
 
Projet reseau-de-kherfallah-ipm-2010-2011
Projet reseau-de-kherfallah-ipm-2010-2011Projet reseau-de-kherfallah-ipm-2010-2011
Projet reseau-de-kherfallah-ipm-2010-2011
 
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL   PROGRAMMATION ET _ETAPES pour comprendreCOURS VHDL   PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
 
Architectures bigdata
Architectures bigdataArchitectures bigdata
Architectures bigdata
 
Presentation concernant les fondements des réseaux.pptx
Presentation concernant les fondements des réseaux.pptxPresentation concernant les fondements des réseaux.pptx
Presentation concernant les fondements des réseaux.pptx
 
Nuit du Hack 2K16 - Scénarios d'attaques sur un système industriel
Nuit du Hack 2K16 - Scénarios d'attaques sur un système industrielNuit du Hack 2K16 - Scénarios d'attaques sur un système industriel
Nuit du Hack 2K16 - Scénarios d'attaques sur un système industriel
 
PowerPoint Techno large bandes LP3.pptx
PowerPoint Techno large bandes LP3.pptxPowerPoint Techno large bandes LP3.pptx
PowerPoint Techno large bandes LP3.pptx
 
Cablage structuré
Cablage structuréCablage structuré
Cablage structuré
 
ITN_Module_6.pptx
ITN_Module_6.pptxITN_Module_6.pptx
ITN_Module_6.pptx
 
Chapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSIChapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSI
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdf
 
administration des systemes et des reseaux.pptx
administration des systemes et des reseaux.pptxadministration des systemes et des reseaux.pptx
administration des systemes et des reseaux.pptx
 
Composants reconfigurables
Composants reconfigurablesComposants reconfigurables
Composants reconfigurables
 
Metrique
MetriqueMetrique
Metrique
 

Dernier

GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 

Dernier (15)

GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 

Cours VHLD.pptx

  • 1. DEPARTEMENT DE GENIE ELECTRIQUE 1 Chargé de Cours : Abderahman Adoum OUMAR Cours de VHDL (Very High Hardware description langage) Niveau d’étude : II Année académique: 2016-2017
  • 2. Prérequis Electronique Numérique  Logique combinatoire  Logique Séquentielle 2
  • 3. Préambule : •Horaire du cours : 25 heurs - 10H de CM + 15H de TD . •Moyen pédagogique : - Support du cours ; •Evaluation : - Un DS écrit ; - Examen écrit.
  • 4. Objectif du module : Ce cours est la suite thématique de l’électronique Numérique . il a pour objectif de : • Modéliser le composant de base de l’électronique numérique ◦- logique combinatoire - logique séquentiel • savoir utiliser un langage de programmation comme le VHDL • A fin d’implémenter dans un environnement de carte programmable
  • 5. Sommaire détaillé PARTIE I: CONCEPTION DES CIRCUITS PROGRAMMABLES PARTIE II: SYNTHESE DE LOGIQUE VHDL PARTIE III: LES OBJECTS VHDL 5
  • 6. PARTIE I: CONCEPTION DES CIRCUITS PROGRAMMABLES 6 PRESENTER L’EVOLUTION ET L’ENVIRONNEMNT CIRCUIT PROGRAMMABLES  PLD : Programmable Logic Device;  CPLD : Complex PLD;  PAL: Programmable Array Logic;  GAL: Generic Array Logic;  FPGA : Field Programmable Gate Array;  ASIC : Application-specific integrated circuit,
  • 7. Implantation des circuits numériques • Avec des éléments discrets • Avec des microprocesseurs, micro contrôleurs, DSP • Avec des circuits à architecture programmable PAL, GAL, FPGA Avec des circuits intégrés ASIC PLD : Programmable Logic Device, CPLD : Complex PLD, PAL: Programmable Array Logic, GAL: Generic Array Logic, FPGA : Field Programmable Gate Array, ASIC : application-specific integrated circuit 7
  • 8. Circuit avec des éléments discrets. •Circuit figé •Circuit imprimé difficile à modifier •Intégration limitée •Coût élevé •Justifié pour de petits circuits 8
  • 9. CIRCUITS A FONCTIONNEMENT PROGRAMMABLE • A base de microprocesseurs, microcontrôleurs, DSP • En modifiant le programme on modifie la fonction • Plus souple que les circuits à éléments discrets • Vitesse limitée (mais qui augmente sans cesse) • Parallélisme compliqué (mais faisable) • Intégration encore limitée • Adapté à des opérations séquentielles 9
  • 10. DSP(Digital signal processing) 10 Utilisé dans le montage audio-visuel
  • 11. Circuit à architecture programmable • Une quantité importante de portes logiques • Des matrices d'interconnections programmables • Modification du fonctionnement sur le circuit (ISP) • Souplesse assurée • Coût de fabrication faible (pour un nombre limité) • Intégration forte • Adapté à des applications gourmandes en logique • Temps de développement dépend de l'application • Compliqué pour implanter des algorithmes complexes 11
  • 12. Les ASIC (Application Specific Integrated Circuit) • Coût très bas mais pour de gros tirages • Temps de développement important • Pas de modifications une fois fabriqué • Nécessitant un fondeur pour la fabrication 12
  • 13. ASIC ou FPGA 13 ASIC Haute performance Basse consommation Bas prix si gros tirage Coût de développement faible Mise rapide sur le marché Réconfigurablilité FPGA
  • 14. Evolution : méthodes de CAO 14 Conception physique Conception structurelle TTL Conception logique Synthèse comportementale Conception fonctionnelle RTL (Transfert de régistres) Register Transfer Level
  • 15. un outils de développement : QUARTUS 15
  • 17. 17
  • 18. Démonstrateurs Carte d’Evaluation Live Design d’Altium 18 Programmation JTAG
  • 19. 19
  • 20. 20 Specifications FPGA • Cyclone II EP2C35F672C6 FPGA and EPCS16 serial configuration device I/O Devices • Built-in USB Blaster for FPGA configuration • 10/100 Ethernet, RS-232, Infrared port • Video Out (VGA 10-bit DAC) • Video In (NTSC/PAL/Multi-format) • USB 2.0 (type A and type B) • PS/2 mouse or keyboard port • Line-in, Line-out, microphone-in (24-bit audio CODEC) • Expansion headers (76 signal pins) Memory • 8-MB SDRAM, 512-KB SRAM, 4-MB Flash • SD memory card slot Switches, LEDs, Displays, and Clocks • 18 toggle switches • 4 debounced pushbutton switches • 18 red LEDs, 9 green LEDs • Eight 7-segment displays • 16 x 2 LCD display • 27-MHz and 50-MHz oscillators, external SMA clock input CARTE FPGA
  • 23. Programmation de la carte FPGA 23
  • 24. VVHSIC (Very High Speed Integradted Circuit) HHardware DDescription LLanguage 24 PARTIE II: SYNTHESE DE LOGIQUE VHDL
  • 25. II.1.Définition VHDL sont les initiales de VHSIC Hardware Description Langage, VHSIC étant celles de Very High Scale Integrated Circuit. Autrement dit, VHDL signifie : langage de description matériel s'appliquant aux circuits intégrés à très forte intégration. 25
  • 26. II.2.Généralités L'évolution des technologies induit une complexité croissante des circuits intégrés qui ressemblent de plus en plus aux systèmes complets d'hier. Aujourd'hui, on intègre dans une puce ce qui occupait une carte entière il y a quelques années. La simulation logique globale du système au niveau "porte" n'est plus envisageable en termes de temps de simulation. C'est donc tout naturellement que des simulateurs fonctionnels ont commencé à être utilisés en microélectronique. Dans les années 70, une grande variété de langages et de simulateurs était utilisée. Cette diversité avait pour conséquence une non portabilité des modèles et donc une impossibilité d'échange entre les sociétés. Un des rôles de VHDL est de permettre l'échange de descriptions entre concepteurs. Ainsi peuvent être mises en place des méthodologies de 26
  • 27. modélisation et de description de bibliothèques en langage VHDL. L'effort de standardisation d'un langage tel que VHDL était nécessaire par le fait qu'il ne s'agissait pas de construire un seul simulateur VHDL (contrairement à la quasi-totalité des autres langages), mais de permettre l'apparition d'une multitude d'outils (desimulation, de vérification, de synthèse, ...) de constructeurs différents utilisant la même norme. Ceci garantit une bonne qualité (la concurrence) et l'indépendance de l'utilisateur visà vis des constructeurs de ces outils. 27
  • 28. II.3.Historique Au début des années 80 la nécessité d’un langage non ambigu des systèmes matériels pour intégration à grande échelle (plusieurs milliers , voire millions, de portes) . On peut grâce à ce langage créer des fonctions électroniques avec une totale abstraction matérielle. La normalisation pour permettre au code écrit d’être portable, c’est à dire qu’une description écrite pour un circuit peut être facilement utilisée pour un autre circuit. Indépendance vis-à-vis des fournisseurs. La Norme définitive adoptée en 1987 : IEEE Std 1076 qui l’impose comme une nouvelle norme internationale. La norme a été revue en 93, 2000 et 2002 Les premiers outils de synthèse en 1995. Le VHDL permet le mariage du matériel avec le logiciel, c'est à dire que VHDL ne fait pas de différence entre un logiciel (par exemple une fonction de test) et une fonction électronique. Il peut de plus intégrer les stimulis, les retards et les fonctions spéciales. 28
  • 29. II.4.Les principales caractéristiques du langage VHDL Un langage s’applique à plusieurs niveau de descriptions Le langage VHDL couvre tous les niveaux partant des portes logiques de base jusqu'aux systèmes complets (plusieurs cartes, chacune comprenant plusieurs circuits). Il s'applique tout aussi bien au niveau structurel qu'au niveau comportemental, en passant par le niveau transferts de registres ou RTL (Register Transfer Logic). 29
  • 30. A-Description comportement Le circuit est décrit sans tenir compte de la réalisation concrète sur un composant donné (Elle ne comporte aucune horloge et les largeurs des bus ne sont pas spécifiées.). On utilise les fonctions de haut niveau d’abstraction de VHDL. Le code est donc portable, mais il dépend entièrement du synthétiseur pour le résultat (si un tel synthétiseur existait, ce qui n’est pas encore le cas). Ce style de description permet en particulier de spécifier le circuit sous forme d’un algorithme. 30
  • 31. B-Description par flot de données Le circuit est décrit grâce à plusieurs couche de registres (bascules D) reliées par de la logique combinatoire. On utilise généralement une liste d'instructions concurrentes d'affectations de signaux du type "<signal> <= <expression> " où <expression> peut représenter un simple signal, ou une expression utilisant des opérateurs logiques, arithmétiques ou relationnels, ou une expression conditionnelle. C’est la manière traditionnelle d’écrire du VHDL et qui donne généralement les meilleurs résultats avec les synthétiseurs commercialisés. Ce niveau de description est souvent appelé "logiques à transfert de registres" ou RTL (Register Transfer Logic). 31
  • 32. C-Description structurelle de niveau Bas Le circuit est décrit par sa structure, sous forme d’une liste de composants instanciés et des interconnexions les reliant. En fait, c’est l’équivalent littéral d’un schéma représentant l’interconnexion de portes élémentaires issues d'une bibliothèque. D-Description structurelle de niveau Haut Le circuit est découpé en blocs fonctionnels de haut niveau qui sont reliés entre eux. Il s’agit toujours d’un schéma, mais il représente des composants qui peuvent être écrit en comportemental ou en RTL (mais aussi en structurel bas niveau). On retrouve en général ce type de description dans le design supérieur d’une description hiérarchique (top level design). 32
  • 33. II.5.synthèse La synthèse est définie comme une succession d'opérations permettant à partir d'une description de circuit dans un domaine fonctionnel (description comportementale) d'obtenir une description équivalente dans le domaine physique (description structurelle). Le processus de synthèse peut être défini comme une boîte noire ayant en entrée une description abstraite en termes de langage de description matériel, et comme sortie une description structurée en termes de dispositifs interconnectés (une netlist) 33
  • 34. II.5.1 Intérêt de la synthèse Le premier intérêt de la synthèse est de permettre une description la plus abstraite possible d'un circuit physique. Le concepteur a de moins en moins de détails à donner. Par exemple, pour décrire un compteur, la description détaillée des signaux de contrôle explicitement utilisés n'est pas indispensable. Seule la fonctionnalité de comptage et les contraintes de synthèse (qui peuvent être des contraintes de temps, d’optimisation, de circuit cible, etc…) doivent être indiquées. Le but de l'abstraction est de réduire et de condenser les descriptions au départ et, par conséquent, de faciliter leur correction en cas d'erreurs. L'autre avantage de l'abstraction est la portabilité. 34
  • 35. II.6.Différence entre un langage de programmation et VHDL VHDL n’est pas un langage de programmation comme le C, c’est un langage de description matériel. Il est important de bien comprendre la différence entre les deux : • un langage de programmation est destiné à être traduit en langage machine puis à être exécuté par un microprocesseur. • un langage de description matériel comme VHDL décrit une réalité matérielle, c’est-à-dire le fonctionnement d’un système numérique. Il va être traduit (synthétisé) en un ensemble de circuits logiques combinatoires et séquentiels qui vont être implémentés dans un circuit intégré. Il n’y a aucun microprocesseur pour exécuter la description VHDL dans un circuit intégré. 35
  • 36. PARTI III Structure du VHDL(OBJECTIFS) 36 Il existe 5 catégories d’unité de conception: Une unité de conception est une partie de programme qui peut être compilée séparément. Cet aspect modulaire est la base de la structuration de la description. Le support du programme est un fichier texte qui peut contenir une ou plusieurs unités. Par défaut le résultat de compilation sera placé dans une bibliothèque ayant comme nom logique WORK. Pour la compilation de plusieurs unités, un certain ordre devra être respecter à cause de leur dépendance éventuelle.
  • 37. III.2 Structure du VHDL • L’entité (mot clé entity) Décrit un système vu extérieur (boîte noire) • L’architecture (mot clé architecture) Décrit l’intérieur (le fonctionnement) d’une boîte noire. • La configuration (mot clé configuration): choisir l’architecture d’un composant quand il y en a plusieurs. • La déclaration de paquetage (mot clé package) c’est une unité de conception permettant de regrouper des définitions de types, de constantes ou des déclarations de sous- programmes. • Le corps de paquetage (mot clé package body) optionnel sert à instancier des constantes ou à décrire les sous-programmes. 37
  • 38. III.2.Structure hiérarchique 38 Au niveau supérieur, on se contente de décrire les Entrées et Sorties du module global Au niveau intermédiaire, on se contente de décrire la façon dont s’associent les fonctions A, B et C. Au niveau inférieur, pour chaque fonction, on peut aller jusqu’à décrire le fonctionnement des portes de base, NAND, XOR… Dans un langage de programmation (C ou Pascal), les opérations décrites sont exécutées les unes après les autres dans l’ordre précis décrit dans l’algorithme. En VHDL, les différentes tâches décrites se déroulent simultanément.
  • 39. III.3.Domaine concurrent et séquentiel Description d’un système matériel • description d’action concurrentes (ex. plusieurs blocs d’un circuit peuvent fonctionner en parallèle • description d’action en séquence (ex. automates) Deux jeux d’instructions en VHDL • Instructions concurrentes : elles s’exécutent en même temps • Instructions séquentielles : elles s’exécutent les une après les autres 39
  • 40. III.4.Classes d’objets Quatre classes d’objets en VHDL : • Les constantes Comme les autres langages, elles ont une valeur fixe • Les variables Comme les autres langages, elles ont une valeur immédiatement modifiable par affectation • Les signaux Notion nouvelle, la valeur ne se modifie pas immédiatement :variable + notion temporelle (valeurs datées) • fichier (n’est pas abordé dans ce cours) ensemble de valeurs qui peuvent être lues ou écrites 40
  • 41. III.5. Types d’objets Les objets d’un programme VHDL sont tous typés. Avant toute utilisation d’une constante, d’une variable ou d’un signal, il faut les déclarer. La déclaration des objets s’effectue uniquement dans la partie déclarative du programme. 41
  • 42. III.5.1 Les opérateurs 42 Six classes de priorité
  • 44. III.5.3. Opérateur de Comparaison 44
  • 46. III. 6. Programmer en VHDL 1. Définition de l’entité (boîte noire avec les ports d’entrée/sortie) 2. Définition de l’architecture interne de cette boîte noire 3. Déclaration des constantes, des signaux, des fonctions, des procédures, des blocs hiérarchiques utilisés dans le programme 4. Corps du programme consistant les instructions concurrentes Les instructions séquentielles encapsulées dans des « process » 5- (Les commentaires sont précédés de deux tirés : -- exemple) 46
  • 47. L’IEEE (Institut of Electrical and Electronics Engineers): les a normalisées et plus particulièrement la bibliothèque IEEE1164. 47 Déclaration des bibliothèques
  • 48. • L'entité définit les ports (vue externe) et leur mode (in, out, inout, buffer) • Paramétrer le modèle (paramètres génériques) • Syntaxe: entity nom_de_l_entite is {generic(liste_des_parametres)} {port(liste_des_port_avec_leutr_mode)} end {nom_de_l_entite} 48 Entité
  • 50. Rôle de l’entité Son rôle est uniquement de décrire le câblage du module, vu de l'extérieur. Elle liste les signaux d'entrée et de sortie de la structure et indique leur mode et nature . La liste des entrées et sorties est entre ( ) et annoncée par le mot-clef: PORT Le mode décrit le sens des signaux: in signal d'entrée, unidirectionnel out signal de sortie, unidirectionnel inout signal d'entrée-sortie, bidirectionnel buffer signal de sortie, unidirectionnel, mais réentrant 50
  • 51. Rôle de l’entité Le type décrit la nature des signaux, les types courants sont: ☯ bit peut prendre 2 valeurs, 0 ou 1 ☯ bit_vector (N downto 0) définit un bus, l (l'indice de gauche étant toujours le Most Significant Bit ou bit_vector (0 to N) écriture déconseillée car 0 désignerait alors le poids fort. L'indice le plus faible peut ne pas être 0. ☯ boolean peut prendre 2 valeurs FALSE et TRUE ☯ std_logic peut prendre les valeurs 0, 1, U (indéterminé) ou Z (haute impédance) ☯ integer entier, positif ou négatif, sur 32 bits ☯ character caractères a, b, c… A, B, C….1,2,3….. 51
  • 54. Architecture 1. Définition de signaux et d'autres objets internes 2. Description du fonctionnement ou de la structure de l’entité à l’aide d’instructions concurrentes son rôle est de décrire un fonctionnement possible de l'entité et cette description peut être structurelle ou comportementale. Syntaxe: architecture nom_de_l_architecture of nom_de_l_entite is {partie déclarative} begin {suite d’instructions concurrentes} end nom_de_l_architecture; 54
  • 55. III.7.Description structurelle On va définir par instructions l'équivalent littéral d'un schéma structurel, ce qui n'est ni simple ni pratique, ni vraiment le but du VHDL. 55 sel selb e1 e0 s1 s0 U0 U1 U2 U3 ARCHITECTURE modele2 OF multiplexeur IS COMPONENT ET PORT (a,b: IN BIT; s: OUT BIT); END COMPONENT; COMPONENT OU PORT (a,b: IN BIT; s: OUT BIT); END COMPONENT; COMPONENT NOT PORT (a: IN BIT; s: OUT BIT); END COMPONENT; SIGNAL selb,s1,s0: BIT; BEGIN U0: ET PORT MAP (sel,e1,s1); U1: ET PORT MAP (selb,e0,s0); U2: NOT PORT MAP (sel,selb); U3: OU PORT MAP (s1,s0,s); END modele2;
  • 56. Hiérarchisation Conception d’un bloc et son utilisation dans un autre circuit: instanciation ou instanciation multiple 1. Première étape: écrire l’entité et l’architecture du module 2. Deuxième étape: introduire ce module au circuit appelant (ce module s’appellera « component ») 3. Troisième étape: instanciation du module 56
  • 57. component AND_2 port ( a : in bit; b : in bit; s : out bit); end component; Déclaration: Le mot clé component sert à déclarer le prototype d'interconnexion. La syntaxe est presque identique à celle de l'entité : 57 Pour créer rapidement un composant, une opération copier/coller de l'entité en enlevant le littéral "IS" suffit.
  • 58. entity AND_3 is port( e1 : in bit; e2 : in bit; e3 : in bit; s : out bit); end AND_3; architecture arc of AND_3 is signal z : bit; component et port ( a : in bit; b : in bit; s : out bit); end component; begin inst1 : et port map (a=>e1, b=>e2 , s=>z); inst2 : et port map (z, e3, s); end arc; Dans cet exemple , 2 instances de composant "and2" sont appelées pour créer une porte ET à 3 entrées. L'association des ports du composants aux signaux de l'instance se fait à l'aide de la clause port map. La syntaxe des associations est soit 1- par nom où chaque broche du composant est associée à un signal : cas de inst_1 2- positionnelle où l'ordre des signaux correspond à l'ordre des broches : cas de inst_2 Pour que ça marche, il faut avoir créer le component et dans le même répertoire, comme suit Entity et is port( a: in bit; b: in bit; s: out bit); End et; Architecture aetb of et is Begin S<= a and b; End aetb; Déclaration et instanciation des composants Instanciation : L'instanciation d'un composant se fait dans le corps de l'architecture de cette façon NOM_INSTANCE>:<NOM_COMPOSANT> port map (LISTE DES CONNEXIONS); 58
  • 59. Découpage de votre projet en fonctions: création de composants adéquats Assemblage des composants créés pour structurer votre projet MOT CLE: PORTMAP  Ma Référence :port map ( liste ordonnée de signaux) ; ou  Ma Référence : port map ( port=> signal , port => signal ) ; exemple: additionneur 4 bits. etape 1: je crée un composant ADDITIONNEUR 1 bits LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY fa IS PORT ( Ci, X, Y: IN STD_LOGIC; S, Cout: OUT STD_LOGIC); END fa; ARCHITECTURE Dataflow OF fa IS BEGIN Cout <= (X AND Y) OR (Ci AND (X XOR Y)); S <= X XOR Y XOR Ci; END Dataflow; Instanciation (placement) de composants déjà crées 59
  • 60. III.7.Description comportementale Le comportement du module en cours de conception est directement décrit à l'aide d'instructions séquentielles ou sous forme de flux de données. 60 On veut créer le multiplexeur ci-contre S = E1 si Cde = 0 S = E2 si Cde =1 En-tête indiquant les bibliothèques IEE à utiliser Library ieee; Use ieee.std_logic_1164.all; Entity mux_2 is port (E1, E2, Cde: in bit; S: out bit); End mux_2 Architecture arch1_mux_2 of mux_2 is Begin S<=E1 when CDE=‘0’else E2; End arch1_mux_2; Déclaration d’identité Déclaration d’architecture <= est obtenu avec < et = et signifie « prend la valeur » Noter qu’un état logique est entre ‘apostrophes’
  • 61. On constate que l'on n'a pas cherché à indiquer le type de porte nécessaire pour que le fonctionnement se réalise. Seul le flux de données est cité. 61 library ieee; use ieee.std_logic_1164.all; entity mux_2 is port (E1,E2,Cde: in bit; S:out bit); end mux_2; architecture arch2_mux_2 of mux_2 is begin S<=(E1 and (not(Cde))) or (E2 and Cde); end arch2_mux_2; Une autre architecture du même multiplexeur est donnée ci-dessous, toujours sous forme comportementale (noter que l'entité ne change absolument pas)
  • 62. Ces deux séquences d’instructions sont équivalentes. Il existe un lien permanent entre A,B et C. . A := B; B := C; B := C; A := B; Ces deux séquences d’instructions ne sont pas équivalentes A <= B; B <= C; B <= C; A <= B; Domaine concurrent Domaine séquentiel Il existe une instruction concurrente particulière appelée process (processus) qui comporte à l’intérieur des instructions séquentielles. A l’intérieur du process, l’ordre d’écriture des instructions est important L’ordre d’écriture des instructions concurrentes n’est pas important architecture nom de l'architecture of nom de la spécification d'entité is déclarations; begin instructions concurrentes; end {nom de l'architecture}; III.8 Séquentiel / concurrent  Rappel du contenu d’une architecture 62
  • 63. III.9.Instructions concurrentes  Il existe 7 instructions concurrentes en VHDL: - affectation simple de signal - affection conditionnelle de signal - affectation sélective de signal - instanciation de composant - instruction GENERATE - instruction PROCESS - appel de procédure  Peuvent disposer d'un label. Ce label optionnel peut permettre de localiser rapidement toutes les actions parallèles d'une structure et donc d'améliorer la lisibilité d'un programme VHDL.  Sont essentiellement utilisées au niveau du corps de l’architecture 63
  • 64. III.10.Fonctionnement concurrent En langage VHDL, les instructions d'une architecture sont évaluées (ce qui signifie "testées et exécutées") en permanence et simultanément. Ce type de fonctionnement est appelé parallèle ou concurrent et correspond au cas de l'électronique combinatoire. 64 On distingue 3 types d'instructions concurrentes: 1- Equations logiques classiques où on utilise l'assignation inconditionnelle <= library ieee; use ieee.std_logic_1164.all; entity demi_add is port (A,B: in bit; S1,S2:out bit); end demi_add; architecture arch1_exemple_2 of demi_add is Begin S2<= A and B; S1<= A or B; end arch1_exemple_2;
  • 65. Fonctionnement concurrent 2- Instructions conditionnelles du type when….. else. 65 library ieee; use ieee.std_logic_1164.all; entity mux_4 is port (A,B,C:in bit; SEL:in bit_vector(1 downto 0); S:out bit); end mux_4; architecture arch1_mux_4 of mux_4 is begin S<= A when (SEL="00") else B when (SEL="01") else C when (SEL="10") else '0'; end arch1_mux_4
  • 66. Assignation conditionnelle Structure WHEN/ELSE signal <= signal1 when expresion_boolénne else ……… signal1xx when expresion_boolénne else signal par défaut; ---- Solution 1: with WHEN/ELSE ------------- LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY encoder IS PORT ( x: IN STD_LOGIC_VECTOR (3 DOWNTO 0); y: OUT STD_LOGIC_VECTOR (1 DOWNTO 0)); END encoder; ARCHITECTURE encoder1 OF encoder IS BEGIN y <= "00" WHEN x="0001" ELSE "01" WHEN x="0010" ELSE "10" WHEN x="0100" ELSE "11" WHEN x="1000" ELSE "ZZZ"; END encoder1; Exemple d’application: encodeur clavier pour PIC Intérêt: réduire le nombre d’entrée du PIC Fonctionnement concurrent 66
  • 67. with expression select signal1 <= signal1when valeur 1, signal2 when valeur2, ------ signal par défaut when others ; Le multiplexeur: on aiguille une enrée vers la sortie en fonction d’un numéro d’aiguillage MUX 1 voie parmi 4 Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_arith.all; Entity combi3 is port( c: in integer range 0 to 3; e: in std_logic_vector(3 downto 0); s:out std_logic); End combi3; Architecture archi1 of combi3 is Begin With c select s<=e(0) when 0, e(1) when 1, e(2) when 2, e(3) when 3; End archi1; Assignation sélective Fonctionnement concurrent 67
  • 68. Exemple: décodeur 7 segments 68 Utilisation d’une table (LUT Look-Up Table: table de correspondance) pour décrire le système Cette table se comporte un peu comme une table de vérité, et désigne sa sortie en fonction de ses entrées et du contenu de la table. Le gain de vitesse peut être significatif, car rechercher une valeur en mémoire est souvent plus rapide qu'effectuer un calcul important. Carte DE2: Anode commune Segment actif à ‘0’ library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity decod7seg is port( iDigit: IN std_logic_vector (3 downto 0); oSeg: OUT std_logic_vector (6 downto 0)); end decod7seg; architecture arch_dec_7seg_v1 of decod7seg is -- definition d'un nouveau type tableau de 16 elements de 7 bits type ROM is array(15 downto 0) of std_logic_vector(6 downto 0); --initialisaion du tableau -- tableau vu comme une memoire(LUT) signal LUT:ROM:=( "1000000","1111001","0100100","0110000","0011001","0010 010","0000010", "1111000","0000000","0011000","0001000","0000011","1000 110","0100001", "0000110","0001110"); begin -- pour indexer tableau il faut un entier -- fonction de conversion conv_integer dan IEEE.std_logic_unsigned.all oSeg<=LUT(conv_integer(iDigit)); end arch_dec_7seg_v1; Il faut
  • 69. • En VHDL, une zone séquentielle existe dans laquelle une suite d'instructions s’exécutent les unes après les autres. • Cette zone se trouve dans les process, fonctions et procédures. En langage VHDL, pour décrire un fonctionnement séquentiel, il faut faire appel à un "processus" (process), soit un groupe bien délimité d'instructions, qui répond à 3 critères. ⌦ le processus s'exécute à chaque changement d'état d'un des signaux auquel il est sensible. On définit derrière le mot process (la liste des signaux auquel le processus est sensible) ⌦ les instructions du processus s'exécutent séquentiellement. ⌦ les modifications que subissent alors les signaux ne sont effectives qu'à la fin du processus. 69 III.11.Fonctionnement séquentiel.
  • 70. • Process est une instruction concurrente complexe à écrire dans une architecture. • Process définit une zone séquentielle. • Les différents process d'une architecture s'exécutent tous en parallèle. • Syntaxe de process : label : -- optionnel process (liste de sensibilité) {partie déclarative} begin suite d’instructions séquentielles end process; • Un process s'exécute quand un des signaux de la liste de sensibilité change de valeur. Fonctionnement séquentiel. 70
  • 71. Un exemple library ieee; use ieee.std_logic_1164.all; entity mux_2 is port (E1,E2,Cde: in bit; S:out bit); end mux_2; architecture arch3_mux_2 of mux_2 is begin process (Cde,E1,E2) begin if (Cde='0') then S <= E1; else S <= E2; end if; end process; end arch3_mux_2; En plaçant E1 et E2 dans la liste de sensibilité du processus, on obtient un fonctionnement équivalent au combinatoire Fonctionnement séquentiel. 71
  • 72. Syntaxe de l'instruction processus [Label1:] process (Liste_De_Sensibilité) -- ↑ Signaux_activant_le_processus --zone de déclaration begin --Zone pour instructions -- séquentielles .... end process; un process • s’active lorsqu’un des signaux de sa liste de sensibilité (ses entrées) change de valeur, • et se rendort lorsque toutes les instructions séquentielles ont été évaluées une fois (end process) L’exécution des instructions à l’intérieur d’un process est séquentielle • Le temps simulé est stoppé durant l’exécution d’un process, donc • les affectations aux signaux ne prennent effet qu’après l’endormissement du process (fin de l’exécution de l’algorithme) 72
  • 73. Réveil du process Exemple: bascule D latch. Rappel: elle fonctionne sur niveau Processus activé 73
  • 74. Instructions séquentielles Elles s'écrivent uniquement dans une zone séquentielle • instruction d'attente (wait) • instruction d'affectation (temporisée) • instruction conditionnelle (if) • instruction case • instruction de boucle 74
  • 75. Bibliographie ◦ Certaines illustrations et exemples proviennent de cours ou d’ouvrages présents ci-dessous ◦ Introduction à la Synthèse logique Philippe LECARDONNEL & Philippe LETENNEUR ◦ Le langage de description VHDL T. BLOTIN ◦ VHDl J.maillefert ◦ Circuit Design with VHDL Volnei A. Pedroni ◦ Un lien bien utile pour l’étudiant GEII ◦ http://perso.orange.fr/xcotton/electron/coursetdocs.htm 75