Université Ibn Tofail Année Universitaire
2024/2025
Ecole Nationale des Sciences
Appliquées, Kénitra
TP 1 : INITIATION A LA PROGRAMMATION VHDL
Première approche du logiciel simulateur de VHDL Quartus II
I- Synthèse : Circuits logiques programmables et outils de conception
Un circuit logique programmable se définit comme un composant électronique standard contenant des
modules de
Logique combinatoires et séquentiels, dont les interconnexions internes sont désignées par
programmation
(interconnexions entre différentes cellules logiques ; voir cours). Il peut être configuré et reconfiguré par
l’utilisateur, pour la réalisation de diverses fonctions logiques (numériques).
Plusieurs solutions sont possibles pour programmer un circuit logique programmable. Elles dépendent
essentiellement de l’outil de développement (outil de conception) utilisé. Les phases de programmation sont :
Saisie de la description du circuit logique.
Fichier d’entrée
Compilation pour la vérification de la description. (description)
Simulation, synthèse (Netliste) et vérification. Compilateur
Insertion du circuit à programmer et programmation.
Fichier de
configuration
La figure ci-contre résume les
différentes étapes de programmation Simulateur Programmateur
d’un tel circuit.
Le synthétiseur de l’outil de conception assistée par ordinateur (CAO) génère dans un premier temps une
Netlist qui décrit la connectivité de l’architecture. Puis l’outil de placement-routage place de façon optimale tous
les composants et effectue le routage entre les différentes cellules logiques.
VHDL (Very high-speed integrated circuits Hardware Description Language) est un langage de description de
matériel, destiné à représenter le comportement ainsi que l’architecture d’un système électronique logique ; en
particulier des circuits numériques programmables (ASIC, FPGA, CPLD,…etc.).
Actuellement, le marché des circuits programmables est toujours en pleine croissance. Deux fournisseurs
particuliers se disputent principalement ce marché : Xilinx et Altera (environ 80% du marché entre eux deux).
Par conséquence, les principaux fabricants de circuits logiques programmables proposent une version
gratuite mais limitée de leurs outils de simulation et de synthèse. Pour débuter en VHDL, nous citons quelques
environnements de programmation permettant la saisie d’un fichier VHDL.
Intel / Altera : Quartus II , Max+plus II , Modelsm,…etc.
Xilinx : ISE,...etc.
II- Structure générale d’une description VHDL
D’une manière générale, un système numérique est vu comme une "boîte noire". En VHDL, la "boîte noire"
est nommée entité (entity) et une entité doit toujours être associée avec au moins une description de son
contenu, de son implémentation : c’est l’architecture. Une description VHDL est donc composée de deux
parties indissociables :
L’entité (entity) : elle décrit l’extérieur l’interface du composant et permet ainsi de définir les entrées/sorties.
Pour déclarer l’entité on donne un nom et on précise la liste des différents signaux d’entrés/sorties (ports
d’E/S).
L’architecture (architecture) : décrit l’intérieur du composant. Elle contient les instructions VHDL permettant
de réaliser le fonctionnement attendu. Elle comporte une partie de déclaration et un corps de programme.
III- Présentation du logiciel
Le logiciel Quartus II permet entre autres, la description d’un projet (système numérique), sa compilation,
sa simulation logique et temporelle, son analyse temporelle et la programmation d’un circuit cible (CPLD ou FPGA).
Description graphique Simulation Choix du circuit
ou textuelle fonctionnelle cible, simulation
Programmation
La description du système numérique (logique) peut être faite à l’aide d’une des entrées suivantes :
Editeur de texte : pour l’utilisation du langage VHDL ou VERILOG.
Editeur graphique : permet d’utiliser les composants prédéfinis des bibliothèques fournies par le logiciel.
Editeur de chronogrammes : avec lequel on représentera l’évolution temporelle et celle attendue des sortie
Editeur de texte Editeur graphique Editeur de chronogrammes
A chaque description est associé un symbole graphique du composant ainsi réalisé. L’éditeur graphique
permettra alors de relier éventuellement ces composants les uns aux autres. Chaque sous-ensemble puis le
système global est ensuite compilé, puis simulé par le simulateur logique, puis analysé et envoyé vers le circuit
cible via le programmateur.
III-1- Début d’un projet
Lorsque vous ouvrez Quartus II, vous devez créer un projet pour renseigner toute les données du micro-
contrôleur. Vous devez d’abord cliquer sur « New Project Wizard »
Cliquez sur « Next ».
Sur cette page vous devez renseigner le nom de votre projet, ainsi que le nom de l’entité qui va être dans votre projet.
Sur cette page, n’ajoutez aucun fichier, cliquez simplement sur « Next ».
Pour finaliser votre création de projet vous devez vérifier que vous avez bien saisi les bonnes
informations et ensuite cliquez sur « Finish ».
Pour écrire votre code, vous devez premièrement créer un fichier VHDL où vous pourrez rentrer le code.
Cliquez pour cela dans File -> New…
Nous voulons un fichier en VHDL car c’est le langage que nous utilisons, sélectionnez « VHDL File ».
Notre fichier est maintenant créé et nous pouvons ensuite passer à l’écriture de notre programme, le
programme sera écrit dans la zone rouge.
IV- Exercice d’application
Soit le code de description VHDL du circuit numérique suivant :
library ieee;
use ieee.std_logic_1164.all;
entity CIRCUIT is
port (A,B :in std_logic;
S1,S2,S3,S4,S5,S6,S7:out std_logic); S1
end CIRCUIT; S2
A S3
architecture DESCRIPTION of CIRCUIT is CIRCUIT
S4
begin B S5
S1 <= A and B; S6
S2 <= A or B; S7
S3 <= A xor B;
S4 <= not A;
S5 <= A nand B;
S6 <= A nor B;
S7 <= not(A xor B);
end DESCRIPTION;
Faire les étapes mentionnées au paragraphe III-2 précédent : Saisir le code VHDL du circuit donné, sauvegarder,
compiler, corriger les erreurs si nécessaires, simuler et vérifier les résultats via waveform editor ?
Tracer les chronogrammes des sorties pour le cas ci-dessous.
Noms : ……………………………………………………………… Note :…………………………
Remarque : N’oublier pas de rendre le rapport de TP !
Exercice 1 : Additionneur complet de 1 bit (affectation inconditionnelle)
Ecrire le code de description VHDL qui permet de réaliser un additionneur complet 1 bit, comme le montre la figure
suivante :
A B Cin S Cout
A B Cin
ADD
Cout S
1- Sauvegarder, compiler, corriger les erreurs si nécessaires, simuler et vérifier les résultats via Waveform editor ?
2- Visualiser les chronogrammes des entrées/sorties et remplir le tableau ?
Exercice 2 : Multiplexeur 2 vers 1 (affectation inconditionnelle)
Ecrire le code de description VHDL qui permet de réaliser le multiplexeur 2 vers 1 de la figure suivante :
MUX 2 : 1
E0 C S
S
0 E0 S = C E0 + C E1
E1
1 E1
C
1- Sauvegarder, compiler, corriger les erreurs si nécessaire, simuler et vérifier les résultats via Waveform editor ?
2- Visualiser les chronogrammes des entrées / sorties
3- Donner le code de description VHDL de ce circuit ?
..................................................................
..................................................................
Exercice 3 : Démultiplexeur 1 vers 4 (affectation conditionnelle)
1- Ecrire et compiler le code de description VHDL du circuit de
la figure en utilisant l’instruction When ... else … ?