Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Langage de programmation
du matériel VHDL
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Répitition
VHDL est utilisé pour
• Décrire des circuits numériques
• Décrire des machines à états
• Préparer des signaux de test pour simuler le
component réalisé
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Répitition
Une fois le programme en VHDL est écrit, il faut
maintenant le réaliser
• Synthèse logique : générer des fonctions
logiques à partir du programme
• Implémentation : adapter la logique synthétisée
à la cible (FPGA, CPLD)
• Génération : Générer un fichier binaire à télé-
charger sur le « device »
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Répitition / Niveau d’abstraction
Comportementale
RTL
Logique
Layout
VHDL
Synthèse
Comportementale
Synthèse
logique
Placement
routage
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Structure du VHDL
Il existe 5 catégories d’unité de conception
• 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)
• La déclaration de paquetage (mot clé package)
• Le corps de paquetage (mot clé package body)
Circ
uit p
rincip
al
Pa
cka
ge
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Le minimum design en VHDL
Deux unités obligatoires
• L’entité
• L’architecture
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Le minimum design en VHDL
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Le minimum design en VHDL / Résultat de la synthèse
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Exemple simple
L’entité (entity) déclare la vue externe du circuit :
les ports d’entrée-sorties et leur mode et leur type.
Elle peut aussi déclarer des paramètres (generic).
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Exemple simple en VHDL
Exemple: L’entité du circuit ci-contre qu’on
appellera « nand_gate»
Nom d‘entité Type de port
Semicolon
Nom du port
Mode de port
IN|OUT|INOUT|BUFFER
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Exemple simple
L’architecture définit le fonctionnement du circuit.
Zone exécutable
Zone des déclarations
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Exemple
On remarque l’opérateur d’affectation <=
Les opérateurs logiques "and", "or", "nor", "nand"
et "not » font parti des opérateurs connus du
langage.
On remarque aussi que -- est utilisé pour des
commentaires.
Il existe deux parties dans l’architecture
- avant begin : zone des déclarations
- Après begin : la partie « zone exécutable".
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Exemple
Les signaux INP1, INP2 et INP3 sont des signaux
internes reliant les components logiques
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Principe de concurrence
Tous les mêmes
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Principe de concurrence
Dans une architecture, toutes les instructions sont
exécutées en parallèle : elles sont concurrentes et
non pas « séquentielles ».
La partie après "begin" dans une architecture est
une zone concurrente.
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Décrire des délais
Dans des circuits réels, les portes logiques
présentent des délais.
operations concurrent
delays 2 ns 3 ns
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Délai dans les affectations
Une affectation sera déclenchée quand un évènement
arrive (présence d’un changement)
• Un évènement est un changement de valeur d’un signal
• Pour l’instruction ci-dessous, cet évènement est le
passage de C de 0 à 1.
• Cependant, l’affectation se concrétise après 10 ns.
C
D
INP2
10 ns
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Délai dans les affectations Synthèse
Attention: l’instruction d’affectation retardé est importante en
simulation, par contre n’a aucun effet en synthèse.
L‘outil de synthèse ignore « after »
Pour la synthèse :
Le circuit qui sera réalisé présentera un délai qui dépendra de
la technologie utilisé, longueur des câblage, etc.
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
TD Realiser un Demi additionneur
Le demi additionneur est un circuit combinatoire qui permet
de réaliser la somme arithmétique de deux nombres A et B
chacun sur un bit.
A la sotie on va avoir la somme S et la retenu R ( Carry).
Demi-Additionneur
A
B
S
R
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
TD Realiser un Demi additionneur
Pour trouver la structure ( le schéma ) de ce circuit
on doit en premier dresser sa table de vérité
A B R S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
demi additionneur en VHDL
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Synthèse demi additionneur
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Code VHDL non snythétisable
Pour tester un module VHDL, il faut lui associer un module
générateur de signaux (non synthétisable) : le testbench.
Le testbench est un module VHDL spécial (disponible dans la liste
des nouveaux modules lors de l’ajout de fichier source).
Il inclut le module à tester comme un composant et lui associe des
signaux.
L’écriture d’un testbench est automatisée avec Xilinx ISE.
Il reste ensuite à écrire un scénario de test animant les signaux
d’entrée du module en test.
On utilisera alors la même syntaxe qu’un module classique mais
avec des instructions spécifiques.
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Testbench non snythétisable
Le VHDL n'est pas seulement utilisé dans la conception de la logique
dans les FPGA et les ASIC.
mais aussi pour la description et la fonction des environnements de
test dans les simulations, dits bancs d'essais « Testbench »
Comme ce code est toujours uniquement simulé et jamais synthétisé,
on peut ici utiliser tous les éléments de langage et les constructions de
VHDL.
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Testbench non snythétisable
=1
résultats
attendus
Générateur
de stimulus
Device Under Test (DUT)
Testbench
OK
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Testbench demi additionneur
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Hiérarchie en VHDL
Un bloc conçu, testé, et fonctionnel peut être
réutilisé. On l’appelle component.
Dans un design qui utilise ce component
• On déclare entité du component
• On instancie un exemplaire de ce component
dans la zone concurrente
• On procède au câblage de ce component
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Déclaration du component
instancie un exemplaire de ce
component dans la zone
concurrente
Déclarer l’entité
du component
procède au câblage
Instanciation du component
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Instructions concurrentes ou séquentielles
En VHDL, il existe deux types d’instructions
• Instructions concurrentes
à écrire dans la zone concurrente de l’architecture
elles sont exécutées simultanément
l’ordre de l’écriture n’a pas d’importance
• Instruction séquentielles
à écrire dans les « process »
elles sont exécutées dans l’ordre
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Les instructions du mode « concurrent »
Affectation conditionnelle :
Cette instruction modifie l’état d’un signal suivant le résultat d’une
condition logique entre un ou des signaux, valeurs, constantes.
SIGNAL <= expression when condition
[else expression when condition]
…
[else expression];
Y <= A when SEL = “00“ else
B when SEL = “01“ else
C when SEL = “10“ else
D;
condition
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Exemple Affectation conditionnelle :
Remarque : l’instruction [else expression] n’est pas obligatoire mais elle
fortement conseillée, elle permet de définir la valeur du SIGNAL dans le
cas où la condition n’est pas remplie.
F prend la valeur de A quand B =’1’ sinon F prend la valeur ‘0’
F <= A when ( B = ‘1’) else ‘0’;
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Instruction concurrente sélective
Cette instruction permet d’affecter différentes valeurs à un
signal, selon les valeurs prises par un signal dit de sélection.
with SIGNAL_DE_SELECTION select
SIGNAL <= expression when valeur_de_selection,
[expression when valeur_de_selection,]
[expression when others];
Remarque: l’instruction [expression when others] n’est pas obligatoire
mais fortement conseillée, elle permet de définir la valeur du SIGNAL
dans le cas où la condition n’est pas remplie.
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Exemple Multiplexeur 4 vers 1
with SEL select
OUT2 <= IN1 when "00",
IN2 when "01",
IN3 when "10",
IN4 when "11",
'0' when others;
• La condition se fait sur un seul objet (comme le signal sel ci-dessous)
• Le mot clé others doit être utilisé pour couvrir les cas non spécifiés
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Exemple Codeur sept-segment (with-select)
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Les instructions du mode séquentiel
Un process est une partie de la description d’un circuit dans laquelle
les instructions sont exécutées séquentiellement c’est à dire les unes
à la suite des autres.
Il permet d’effectuer des opérations sur les signaux en utilisant les
instructions standard de la programmation structurée comme dans les
systèmes à microprocesseurs.
L’exécution d’un process est déclenchée par un ou des changements
d’états de signaux logiques. Le nom de ces signaux est défini dans la
liste de sensibilité lors de la déclaration du process.
[Nom_du_process :] process(Liste_de_sensibilité_nom_des_signaux)
Begin
-- instructions du process
end process [Nom_du_process] ;
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Les instructions du mode séquentiel
Process est une instruction concurrente : donc à écrire dans une
architecture (après begin)
• Règles de fonctionnement d’un process :
1) L’exécution d’un process a lieu à chaque changement d’état d’un signal
de la liste de sensibilité.
2) Les instructions du process s’exécutent séquentiellement.
3) Les changements d’état des signaux par les instructions du process sont
pris en compte à la fin du process.
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Les instructions du mode séquentiel Les deux principales structures utilisées dans un process.
L‘assignation conditionnelle L‘assignation sélective
if condition then
instructions
[elsif condition then instructions]
[else instructions]
end if ;
Exemple:
if (CLK=’1’) then Out <= ”0000”;
end if ;
case signal_de_slection is
when valeur_de_sélection =>
instructions
[when others => instructions]
end case;
Exemple:
case SEL is
when “000” => S1 <= E1;
when “001” => S1 <= ‘0’;
when “010” | “011” => S1 <=’1’;
-- La barre | permet de réaliser
-- un ou logique entre les deux
-- valeurs “010” et “011”
when others => S1 <= ‘0’;
end case;
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Exemple Codeur sept-segment (case /when)
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Déclaration d‘une bascule
entity BASCULE is
port (
D,CLK : in std_logic;
S : out std_logic);
end BASCULE;
architecture ArchBasc of BASCULE is
begin
PRO_BASCULE : process (CLK)
begin
if ( CLK’event and CLK = ‘1’ )then
S <= D;
end if;
end process PRO_BASCULE;
end ArchBasc;
D’après les règles de fonctionnement énoncées
précédemment, seul un changement d’état du signal
CLK va déclencher le process et par conséquent
évaluer les instructions de celui-ci.
Seul le signal CLK fait partie de la liste de
sensibilité.
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Déclaration d‘une bascule
entity BASCULE is
port (
D,CLK : in std_logic;
S : out std_logic);
end BASCULE;
architecture ArchBasc of BASCULE is
begin
PRO_BASCULE : process (CLK)
begin
if ( CLK’event and CLK = ‘1’ )then
S <= D;
end if;
end process PRO_BASCULE;
end ArchBasc;
L’instruction if (CLK'event and CLK='1') then permet
de détecter un front montant du signal CLK. La
détection de front est réalisée par l’attribut event
appliqué à l’horloge CLK.
Si on veut un déclenchement sur un front
descendant, il faut écrire l’instruction suivante : if
(CLK'event and CLK='0').
-
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Déclaration d‘une bascule
entity BASCULE is
port (
D,CLK : in std_logic;
S : out std_logic);
end BASCULE;
architecture ArchBasc of BASCULE is
begin
PRO_BASCULE : process (CLK)
begin
if ( rising_edge (CLK) )then
S <= D;
end if;
end process PRO_BASCULE;
end ArchBasc;
-Les bibliothèques IEEE possèdent deux instructions
permettant de détecter les fronts montants
rising_edge(CLK)
-ou descendants
falling_edge(CLK).
-
Si la condition est remplie alors le signal de sortie
S sera affecté avec la valeur du signal d’entrée D.
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Instruction Loop
La boucle contient du code qui va être exécuté répétitivement un nombre de
fois qui dépend de sa condition d’arrêt.
Les boucles For, loop et while sont très pratique pour simplifier le code.
Le nombre d’itération doit être statique !
Elle existe trois formes :
La boucle infinie , la boucle for, la boucle while:
La boucle infinie :
La boucle infinie, comme son nom l’indique, ne s’arrête jamais (sauf exécution
de l’instruction exit).
La boucle for:
La boucle est contrôlée par un indice qui lui-même varie selon un schéma
donné en tête : il parcourt une étendue ( RANGE) qui est donnée
explicitement : 2 to 9 ; ou par référence à un type ou un objet : A’RANGE.
[Label:] for I in 1 to 10 loop …end loop;
[Label:] for I in 10 downto 1 loop …end loop;
[Label:] for I in A’RANGE loop …end loop;
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Instruction Loop
PROCESS (clock)
VARIABLE max_cnt : INTEGER := 0;
BEGIN
FOR i IN counter'RANGE LOOP
IF counter(i) > max_cnt THEN
max_cnt := counter(i);
END IF;
END LOOP;
END PROCESS;
Le langage VHDL reconnait les attributs
sur les tableaux et les signaux.
‘LEFT
‘RIGHT
‘HIGH
‘LOW
‘LENGTH
‘RANGE
‘REVERSE
CLK’EVENT
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Instruction Loop
TYPE BusData is bit_vector(7 DOWNTO 0);
TYPE MEM IS array (4 DOWNTO 0) OF BusData ;
SIGNAL BUSDataI: BusData ;
SIGNAL FIFO : MEM ;
BUSDataI 'LEFT : renvoie 7;
BUSDataI 'LENGTH : renvoie 8;
FIFO'RIGHT : renvoie 0;
FIFO'RANGE : renvoie 4 downto 0;
Les principaux attributs pour les tableaux
Les principaux attributs pour les signaux
CLK'EVENT : renvoie un BOOLEAN indiquant si le signal
CLK a changé.
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Instruction Loop
La boucle while:
La boucle est contrôlée par l’évaluation d’une
condition. Tant que la condition est vraie, la
séquence d’instructions est exécutée. Si la
condition est fausse avant d’entrer dans la boucle,
la séquence n’est pas exécutée du tout.
[Label:] while condition loop…end loop;
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Instructions contextuelles
Certaines instructions n’ont pas de sens que dans
certaines contextes: dans une boucle, ou dans un
sous-programme. On pourrait y ranger les instructions
wait et break qui ne peuvent pas exister dans une
fonction (une fonction s’exécute à temps de
simulation strictement nu, même pas un delta) et donc
non plus dans un procédural puisque sa définition fait
appel à une fonction équivalence.
Exit, ext label, exit when, next, next label, next when
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Compteur à 3 bits synthétisable avec remise à zéro RESET (Remise à zéro
asynchrone / Synchrone)
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Use ieee.std_logic_unsigned.all;
entity CMP3BITS is
PORT (
CLOCK : in std_logic;
RESET : in std_logic;
Q : out std_logic_vector(2 downto 0));
end CMP3BITS;
architecture DESCRIPTION of CMP3BITS is
signal CMP: std_logic_vector (2 downto 0);
begin
process (RESET,CLOCK)
begin
if RESET ='1' then
CMP <= "000";
elsif ( rising_edge(CLOCK) then
CMP <= CMP + 1;
end if;
end process;
Q <= CMP;
end DESCRIPTION;
architecture DESCRIPTION of CMP3BITS is
signal CMP: std_logic_vector (2 downto 0);
begin
process (CLOCK)
Begin
if rising_edge(CLOCK) then
if RESET ='1' then
CMP <= "000";
else
CMP <= CMP + 1;
end if;
end if;
end process;
Q <= CMP;
end DESCRIPTION;
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Syntaxe résumée du langage VHDL
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Syntaxe résumée du langage VHDL
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Syntaxe résumée du langage VHDL
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Syntaxe résumée du langage VHDL
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Syntaxe résumée du langage VHDL
Laboratoire d’Informatique Systèmes et Télécommunications
Universitè Abdelmalek Essaadi
Dipl.-Ing Mohammed Bsiss
Mohammed Bsiss
Travaux dirigés TD1
CLK_IN
Diviseur
CLK_OUT
CO
MPT
EU
R
BIN
AIR
EEN_COMPT
Décodeur
SEGMENT [6 : 0]
NOMBRE [3:0]
a
b
g
f
ce
d
RESET