0% ont trouvé ce document utile (0 vote)
11 vues7 pages

AEV2 Print

Transféré par

Mohamed KOUISSI
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
11 vues7 pages

AEV2 Print

Transféré par

Mohamed KOUISSI
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

12/10/2012

Pourquoi utiliser des


langages HDL?
 Pour accélérer la conception de circuits
(raisons économiques)
 Pour permettre la conception de circuits très
complexes ( milliards de portes logiques)
[Link]@[Link]
Version 2013  Pour pouvoir représenter les systèmes
numériques selon différents axes
LANGAGES DE DESCRIPTION d’abstraction
D’ARCHITECTURES  Pour utiliser et/ou améliorer le code pour des
systèmes futures

Le VHDL: Qu’est-ce que c’est, et à quoi Langages de réference


cela sert-il?
• VHDL
 VHDL: VHSIC Hardware Description – Origine : DoD américain
Language – Syntaxe ADA
 VHSIC: Very High Speed Integrated Circuit – Meilleure abstraction
(projet de grande envergure du DoD • Verilog
(Departement of Defense) Américain, mis en – Origine : industrie
place dans les années ’80 – Syntaxe proche du C
 Principe de base: Définir un langage de – Plus simple d’apprentissage, plus concret
description de matériel qui puisse être utilisé • Saisie de schémas
pour simuler du matériel numérique
• Outil dépendant
 Extension: Utilisation du même langage pour
la synthèse automatique de circuits

VHDL: Est-ce le seul HDL? Soft/hard

 Il existe plusieurs autres langages de • Software Programming Language


description de matériel, entre autres: – Compilation en langage machine
 Verilog (Très populaire aux États-Unis, utilisé aussi – Exécution séquentielle
en Europe, au Japon et au Canada) • Hardware Description Language
– Synthèse en « portes et câbles »
 UDL/1 (Utilisé à un certain moment au Japon)
– Exécution concurrente
 Estérel (langage académique – Français) – Exécution séquentielle en simulation (Test benchs)
 HardwareC (langage académique – Stanford)
 Verilog est plus simple que le VHDL, mais est
un peu moins utilisé

1
12/10/2012

Savoir-faire utilité du VHDL

• Pièges
– Exécution concurrente  langage standard et international
– « Optimisations »  permet la description sous forme texte d’un système
– Synthèse (guidage, asynchronisme…) numérique
– Problèmes hardware (Routage, clock skew…)  pour implantation dans un FPGA
• Remèdes  pour implantation dans un ASIC (circuit intégré spécifique)
– Simulation  pour simulation avec niveau d’abstraction plus ou moins poussé (niveau
– Rapports de synthèse système ou niveau porte logique)
– Visualisation à l’oscilloscope, analyseur logique
 langage indépendant
 de l’environnement utilisé (Quartus, ISE...)
 de la cible finale (EPLD Altera, FPGA Xilinx, ASIC, etc...)

flot de conception en VHDL

VHDL 1. description sous forme texte


...
x <= a AND b;
...
compilation

a
2. synthèse logique x
b

placement / routage
x

 intérêt et principes du VHDL 3. implantation physique a programmation (FPGA)


b ou
 structure et syntaxe du langage fabrication (ASIC)
 exemples

points abordés VHDL

 Présentation
 intérêt du VHDL Very High Speed Integrated Circuit Hardware Description
 flot de conception Language
 niveaux de description
 différence avec un langage de programmation Lancé dans les années 80

 Syntaxe Objectifs:
 structure d’une description VHDL
 répondre à une complexité croissante des systèmes numériques
 description d’un système combinatoire
 rester indépendant de la technologie utilisée
 description d’un système séquentiel (bascules, compteurs, machines (analogie: un programme est écrit en C sans se soucier de l’ordinateur sur
d’état) lequel tournera l’application...)

2
12/10/2012

différents niveaux de description possibles VHDL: concepts de base


1. haut niveau / comportemental  Les questions à se poser
On définit la réponse des sorties aux entrées, sans se préoccuper de ce  On identifie les fonctions et on les dessine sur papier
qu’il faut pour le réaliser  On repère et nomme les entrées de chaque blocs ( on évite d’utiliser les
...
mêmes noms)
a IF enable = ‘1’ THEN  On répertorie les signaux INTERNES (mot clé SIGNAL)
b x IF (a=1) OR (b=1) THEN
enable x <= ‘1’;  Le bloc est-il combinatoire ou séquentiel?
ELSE ‘0’;  Si séquentiel alors description avec le mot clé PROCESS + instructions
END IF; autorisées
ELSE ‘0’;
END IF;  Le bloc est-il utilisé plusieurs fois
...
2. bas niveau / structurel  Si oui il vaut mieux créer un composant (entity+ architecture)
La description est proche du circuit électrique, on descend au niveau  Sinon le bloc est synthétiser par les lignes de codes directement
des portes logiques ...
x <= (a OR b) AND enable;
...

Rappel

différents niveaux de description possibles (suite) Structure d’un fichier VHDL

description de haut niveau library ieee; Permet d’accéder à d’autres descriptions


use ieee.std_logic_1164.all; définies dans des diverses librairies.
Rem. : Plusieurs couples entity/architecture sont possibles au
sein d ’un même fichier. Les clauses library et use ne sont pas
globales. Leur effet s’arrête dès la déclaration d’une nouvelle
entity. D'office il y a Standard et Work
entity essai is
 permet la simulation du comportement dans les toutes port (a,b : in std_logic;
c : out integer); Description de l’interface
premières phases de conception
end essai;
 permet l’échange d’informations sous forme standardisée
entre différentes équipes de conception architecture archi1 of essai is
Signal s1, s2 : std_logic;
 ne permet pas forcément de synthétiser la logique begin a
Description du c
correspondante . s1
comportement de
. s2
end archi1; l’entité. Pour une même b
entité plusieurs
architectures sont
possibles.

 le VHDL n’est pas un langage de programmation ENTITY

le VHDL décrit la structure matérielle (figée) d’un système numérique 1ère étape: définir un symbole pour le composant à décrire

programmation: description en VHDL: boîte noire + ports d’entrée/sortie


les instructions sont exécutées de les fonctions sont réalisées de façon
façon séquentielle (les unes après concurrente (tout en parallèle)
ENTITY adder IS
les autres) exemple: additionneur 1 bit
PORT ( A,B,Cin : IN BIT;
Sum,Cout : OUT
programme VHDL BIT );
informatique A END adder;
... ... Sum
a = 1; a <= ‘1’; incorrect:
B adder
Cin Cout
... ... (car contradictoire)
a = 0; correct: a <= ‘0’; remarques:
... ... Vcc 1. le caractère de fin de ligne est ;
d’abord a prend la valeur 1,
puis a prend la valeur 0 2. pas de distinction majuscule / minuscule
a

3
12/10/2012

PORT ARCHITECTURE (suite)

PORT ( nom1, nom2 : mode type ); autre description équivalente:

ENTITY adder IS -- déclaration du composant


BIT PORT ( A, B, Cin : IN BIT ;
direction des données par rapport BIT_VECTOR Sum, Cout : OUT BIT );
BOOLEAN END adder;
au composant INTEGER, REAL
IN (port lu par le composant) TIME ARCHITECTURE arch2 OF adder IS -- description du composant
OUT (port écrit par le composant) BEGIN
BUFFER (flot bidirectionnel mais 1 seule source à la fois) Sum <= ‘1’ WHEN (A=‘1’ AND B=‘0’ AND Cin=‘0’) OR (etc...) ELSE ‘0’;
INOUT (flot bidirectionnel mais plusieurs sources possibles – exemple d’un bus) Cout <= ‘1’ WHEN (etc...) ELSE ‘0’;
LINKAGE (flot inconnu) END arch2;

remarques:
1. le séparateur entre les noms est , arch1: description structurelle (proche du schéma électrique)
2. après -- tout est pris comme commentaire
arch2: description comportementale (le schéma ne se déduit pas
jusqu’à la fin de la ligne
directement)

PORT (suite) Les paramètres génériques

Ils sont déclarés dans l'entity


exemples:
Ils permettent de paramétrer des composants
 PORT ( d, ck : IN BIT ); -- 2 bits en entrée une valeur par défaut peut être définie (":=")
l'instanciation se fait grâce à "generic map(…)"
 PORT ( q : OUT BIT_VECTOR(3 DOWNTO 0) ); -- 1 bus 4 bits en sortie
 PORT ( q : OUT BIT_VECTOR(0 TO 3) ); -- idem ci-dessus entity mux is
generic (width : integer :=8);
 PORT ( q : OUT INTEGER RANGE 0 TO 15 ); -- 1 bus 16 bits en sortie port (sel :in std_logic;
a,b : in std_logic_vector (width-1 downto 0);
 LIBRARY ieee; -- même chose c : out std_logic_vector (width-1 downto 0));
USE ieee.std_logic_1164.all; -- que end mux;
PORT ( d, ck : IN STD_LOGIC; -- ci-dessus
q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); architecture behav of mux is
begin
c<=a when sel='0' else b;
end behav;

comp1 : mux generic map ( 4)


port map(sel=>seldata, a=> dataa, b=> datab, c=>data);
comp2 : mux port map (sel=>seladr, a=>adra, b=> adrb, c=>adr);

ARCHITECTURE Opérateurs

 décrit le fonctionnement du composant principaux opérateurs :


 similaire au schéma du composant
AND
 l’ ARCHITECTURE possède son nom propre,  nom de l’ENTITY OR
NOT
XOR
ENTITY adder IS -- déclaration du composant NAND
PORT ( A, B, Cin : IN BIT ; NOR
Sum, Cout : OUT BIT ); & (concaténation)
END adder; + (addition)
ARCHITECTURE arch1 OF adder IS -- description du composant - (soustraction)
BEGIN /= (différent)
Sum <= A XOR B XOR Cin; * (multiplication )
/ (division - limité à des puissances de 2 pour ALTERA)
Cout <= (A AND B) OR (Cin AND (A XOR B));
END arch1;

4
12/10/2012

ARCHITECTURE (suite) PROCESS (IF ... ELSE)

PROCESS: suite d’instructions que le compilateur doit lire en totalité


 pour de la logique combinatoire, il faut prévoir TOUTES les lignes de la pour générer la logique correspondante
table de vérité, sinon le compilateur VHDL génère une fonction de
mémorisation (logique séquentielle) ENTITY mux4_1 IS
PORT (e3, e2, e1, e0 : IN BIT;
c : IN INTEGER RANGE 0 TO 3;
ARCHITECTURE ... OF ... IS

sans PROCESS
ENTITY composant IS s : OUT BIT);
in1 s1 .....
PORT ( in1, in2 : IN BIT ; END mux4_1;
in2 composant s2 s1 <= e1 AND e2;
out1, out2 : OUT BIT ); ..... ARCHITECTURE archi1 OF mux4_1 IS
END composant;

avec PROCESS
s2 <= e1 OR e2; BEGIN
..... PROCESS(c)
ARCHITECTURE demo OF composant IS END ...; 1 fonction logique BEGIN
BEGIN IF (c = 0) THEN s <= e0;
s1 <= in1 WHEN (in2=‘1’) ELSE ‘0’; avec ELSE ELSIF (c = 1) THEN s <= e1;
s2 <= in1 WHEN (in2=‘1’) ; sans ELSE 1 autre fonction logique ELSIF (c = 2) THEN s <= e2;
END demo; ELSIF (c = 3) THEN s <= e3;
END IF;
END PROCESS;
END archi1;

ARCHITECTURE (suite) PROCESS (CASE)

logique synthétisée:
ENTITY mux4_1 IS
PORT (e3, e2, e1, e0 : IN BIT; même exemple que précédemment
out1 <= in1 WHEN (in2=1) ELSE ‘0’; out2 <= in1 WHEN (in2=1) ;
c : IN INTEGER RANGE 0 TO 3;
s : OUT BIT);
in1 in1 D Q s2 e0
s1 END mux4_1;
in2 e1
in2 enable ARCHITECTURE archi2 OF mux4_1 IS e2 MUX s
BEGIN e3
latch PROCESS(c)
BEGIN
CASE c IS c1 c0
WHEN 0 => s <= e0;
WHEN 1 => s <= e1;
liste des signaux dont un changement
WHEN 2 => s <= e2;
retour à 0 d’état influe sur les signaux calculés
WHEN 3 => s <= e3;
dans le PROCESS (liste de sensibilité)
END CASE;
END PROCESS;
effet mémoire END archi2;

SIGNAL PROCESS (IF ... THEN / CASE)

SIGNAL : nœud ou bus interne permettant un calcul intermédiaire  remarques concernant les tests (avec IF ... THEN ou CASE):

 il faut lister tous les cas possibles, sinon une fonction de mémorisation est créée
 il est possible d’utiliser la syntaxe WHEN OTHERS => ...

ENTITY xor3 IS  on peut introduire un IF au sein d’un CASE ou inversement


PORT ( in1, in2, in3 : IN BIT ;  on peut tester des INTEGER (exemple: IF c = 3 -- base 10
output : OUT BIT ); IF c = 16#13# -- base 16)
END xor3; des BIT (exemple: IF s = ‘1’)
in1 a
ARCHITECTURE archi OF xor3 IS in2 des BUS (exemples: IF s = «1100» -- base 2
SIGNAL a : BIT; output IF s = X«2C » -- hexa)
BEGIN in3
a <= in1 XOR in2;  remarques concernant les PROCESS
out <= in3 XOR a ;  il est possible de définir plusieurs PROCESS dans une même architecture; ils sont
END archi; alors indépendants et concurrents (chacun donne lieu à une logique indépendante
des autres)

5
12/10/2012

PROCESS (IF ... THEN / CASE) BOUCLE, variable de boucle

exercices: a a
x3 b  sert à effectuer une description itérative (simplifie l’écriture)
x2 c f b
1. décrire un décodeur 7 segments DECODEUR
d g
x1
7 SEGMENTS  ne correspond à rien de physique
e
x0 f e c
g
d
exemple n°1:

2. décrire un comparateur de 2 mots de 4 bits (utiliser un PROCESS + IF...)


e3 s3 = e3 OR e2
s = 1 dans les cas suivants: e2 s2 = e2 OR e1
3 • P(3)=1 et Q(3)=0 réseau_OR
P e1 s1 = e1 OR e0
P>Q s • [P(3)=Q(3)] et [P(2)=1 et Q(2)=0]
3 e0 s0 = e0
• [P(3)=Q(3)] et [P(2)=Q(2)] et [P(1)=1 et
Q
Q(1)=0]
• [P(3)=Q(3)] et [P(2)=Q(2)] et [P(1)=Q(1)] et
[P(0)=1 et Q(0)=0]

VARIABLE BOUCLE, variable de boucle (suite)

Une variable ENTITY reseau_OR IS


PORT (e : IN BIT_VECTOR(3 DOWNTO 0);
 sert à effectuer un calcul intermédiaire s : OUT BIT_VECTOR(3 DOWNTO 0) );
 permet au compilateur de générer la logique correspondante END reseau_OR ;
 ne correspond à rien de physique ARCHITECTURE iteratif OF reseau_OR IS
BEGIN
PROCESS(e)
exemple: BEGIN
s(0) <= e(0);
FOR i IN 1 TO 3 LOOP
s(i) <= e(i) OR e(i-1);
3 2 la sortie s indique en binaire le
e compte_1 s END LOOP;
nombre de bits d’entrée à 1
END PROCESS;
END iteratif ;

VARIABLE (suite) Schémas ou VHDL?

ENTITY compte_1 IS remarque générale: Après compilation d’un système décrit en VHDL, on ne
PORT (e : IN BIT_VECTOR(2 DOWNTO 0); connaît généralement pas le schéma électrique final et les
s : OUT INTEGER RANGE 0 TO 3 );
fonctions physiquement utilisées.
END compte_1;
ARCHITECTURE combinatoire OF compte_1 IS
BEGIN
Ici, l’utilisation de la
PROCESS(e) description sous forme graphique description en VHDL
VARIABLE nombre_1 : INTEGER; variable revient à écrire
BEGIN plus simplement la table  schéma physique maîtrisé  souple pour des systèmes complexes
nombre_1 := 0; de vérité du système
IF e(2) = ‘1’ THEN nombre1 := nombre_1 +1;  proche de la structure matérielle  description indépendante de la technologie
(travail effectué par le (réutilisable en cas de changement)
END IF;
compilateur).  vite fastidieux pour des systèmes
IF e(1) = ‘1’ THEN nombre1 := nombre_1 +1;
complexes  schéma physique final inconnu (dépend
END IF;
du compilateur)
IF e(0) = ‘1’ THEN nombre1 := nombre_1 +1;  compatibilité non garantie entre différents
END IF; éditeurs graphiques
s <= nombre_1;
END PROCESS;
END combinatoire ;
Syntaxe du langage
33

6
12/10/2012

C’est l’outil qui choisit!

illustration avec le comparateur vu précédemment:

description
graphique
(portes XOR
et AND):

description VHDL:

Les Testbenchs
 Pour générer des stimulis et valider le design vhdl.
 Possibilité ( nécessité) d'utiliser des ressources VHDL non synthétisable, description
uniquement fonctionnelle

Vhdl à Vérification manuelle sur chronogramme :


stimuli - fastidieux, voire impossible si design
tester
complexe
- taux de couverture ?

Vhdl à Vérification automatique :


stimuli Comparaison - Efficace mais
tester
Des - validité du modèle comportementale ?
résultats - Vitesse ?
Modèle
comportementale

Fichier Modèle Fichier


stimuli C, Matlab, Scilab…. Résultat Comparaison
Des Vérification automatique :
lecture Vhdl à Ecriture résultats - Très efficace
stimuli tester Résultat

Génération d’un chronogramme


la durée s'exprime avec un type physique : fs, ps, ns, us, ms
signal <= valeur after durée absolue, valeur after durée absolue ,… ;

H <= "00", "01" after 10 NS, "10" after 20 NS;


clk<= not clk after 50 ns; -- génération d’une horloge à 10 MHz,
attention initialiser clk à la déclaration

label : wait on liste_signal until condition for durée; -- dans des process
 wait on : attente sur évènements
 wait until : attente de conditions (s’il a eu un événement sinon la condition
n’est pas testée)
 wait for : attente pour un certains temps
-- méthode simple mais lourde
constant Period: TIME := 25 NS;
...
Stimulus: process
begin
A <= "0000";
B <= "0000";
wait for Period;
A <= "1111";
wait for Period;
B <= "1111";
wait for Period;
wait;
end process;

Vous aimerez peut-être aussi