Vous êtes sur la page 1sur 8

ENSIT Formation Ingénieur - GE - TP05 : Systèmes et Circuits Logiques

TP 05

CIRCUITS LOGIQUES PROGRAMMABLES CPLD-FPGA

L’objectif de ce TP est d’initier les élèves ingénieurs à l’implantation des circuits


combinatoires et séquentiels sur un composant logique programmable.

Pour cela, dans une première partie nous présentons des généralités sur les circuits
logiques programmables. Ensuite, dans une seconde partie, nous présentons d’une part la
cible technologique sur laquelle nous réaliserons nos circuits logiques : le FPGA et la carte
DE1 d’Altera et d’autre part le développement par le logiciel Quartus qui permet de passer
d’une description du circuit que l’on souhaite réaliser jusqu’à son implantation sur le
FPGA. Les exercices de préparation de ce TP font l’objet d’une troisième partie.

Nous rappelons les commandes Quartus utiles ainsi que le brochage des interrupteurs,
boutons poussoirs et leds en annexe.

I - Généralités sur les circuits logiques programmables:


Il y a quelques années, la réalisation d’un montage en électronique numérique
impliquait l’utilisation d’un nombre important de circuits intégrés logiques. Ceci avait pour
conséquences un prix de revient élevé, une mise en oeuvre complexe et un circuit imprimé de
taille importante.
Le développement des mémoires utilisées en informatique industrielle fut à l’origine
des premiers circuits logiques programmables (PLD : Programmable Logic Device). Ce type
de produit peut intégrer dans un seul circuit plusieurs fonctions logiques programmables par
l’utilisateur. Sa mise en oeuvre se fait très facilement à l’aide d’un programmeur, d’un micro-
ordinateur et d’un logiciel adapté.
Les circuits PLD disposent des entrées et des sorties programmables qui les rendent
flexibles et adaptables à différentes applications. Le nombre d’entrées, sorties, de connexions
programmables et le niveau d’intégration conduisent à la classification suivante des PLD :

Préparé par : CHERIF F. & SELLAMI A. TP 05 Page - 1 -


ENSIT Formation Ingénieur - GE - TP05 : Systèmes et Circuits Logiques

FPLA « Field Programmable Logic Array »


PAL « Programmable Array Logic »
GAL « Generic Array Logic »
CPLD « Complex Programmable Logic Device »
FPGA « Field Programmable Gate Array »

FPGA : Un FPGA est un composant logique programmable. La brique de base des FPGA
de la société Altera est le Logic Element (LE). Un LE est un élément configurable qui permet
de réaliser des opérations de logique combinatoire et/ou séquentielle élémentaires.

II - La carte DE1

Carte DE1

Préparé par : CHERIF F. & SELLAMI A. TP 05 Page - 2 -


ENSIT Formation Ingénieur - GE - TP05 : Systèmes et Circuits Logiques

Dans ce TP nous allons implanter nos circuits sur la carte DE1 de la société
ALTERA. Cette carte DE1 dispose d’un FPGA Cyclone II et de nombreux
périphériques. Dans ce TP nous n’utiliserons qu’une infime partie des possibilités offertes
par la carte. Seuls les leds, les boutons poussoirs et les interrupteurs seront utilisés. Le
circuit le plus complexe de ce TP n’utilise que 3 LE parmi les 18752 disponibles sur le
FPGA.

III - Le Logiciel Quartus


L’outil que nous utiliserons pour mettre en œuvre ce flot est Quartus. Il est développé
par la société Alt era.

Quartus permet d’implanter des circuits numériques dans les FPGA qu’elle produit. Le
flot de développement proposé dans cet outil comprend les étapes suivantes :

 description du circuit à réaliser (schématique et/ou textuelle ),


 simulation fonctionnelle à l’aide du banc de test,
 placement/routage,
 programmation et validation sur la carte FPGA.

1 - Saisie schématique du circuit


Lors de ce TP vous allez décrire vos circuits en schématique. Altera fournit avec son
logiciel Quartus des bibliothèques offrant de nombreuses fonctions. La bibliothèque
primitives que vous utiliserez comprend des opérateurs logiques élémentaires tels que des
bascules, des portes logiques et, ou,.. Quartus permet également de décrire les cricuits
textuellement à l’aide de langages de description matérielle tels que VHDL, Verilog ou
AHDL (langage spécifique Altera).
2 - Simulation fonctionnelle
Après avoir décrit le circuit en schématique et le banc de test associé, il est possible de
réaliser une première simulation du circuit dite fonctionnelle. Celle-ci permet de vérifier le
bon comportement du circuit sans prendre en compte les temps de propagation dans les
portes logiques : la description utilisée par cette simulation est indépendante de la
technologie. Si le comportement du circuit n’est satisfaisant, il est nécessaire de revoir sa
saisie schématique.

3 - Placement/routage
Le placement routage consiste à définir l’emplacement sur le composant cible les broches
d’entrées/sorties du FPGA. Le brochage du FPGA de la carte DE1 avec ses périphériques
(leds, interrupteurs, . . .) étant figé, il n’est pas envisageable de laisser le routeur décider de
leur routage : il est nécessaire de fixer la correspondance entre les broches d’entrées/sorties du
FPGA et les signaux d’entrées/sorties, cette étape est appelée assignation.

A l’issue du placement/routage, il est possible d’avoir un modèle précis du comportement


temporel.

4 - Programmation et vérification sur carte


Après compilation et assignation les fichiers de programmation du FPGA sont générés,

Préparé par : CHERIF F. & SELLAMI A. TP 05 Page - 3 -


ENSIT Formation Ingénieur - GE - TP05 : Systèmes et Circuits Logiques

souvent appelés bitstream. Deux types de fichiers sont générés. (1) un fichier .sof,
acronyme de SRAM Object File, qui permet de programmer la SRAM du FPGA. Ce type
de programmation est volatile : Il est à refaire à chaque mise en route du FPGA. (2) un
fichier .pof, acronyme de Programmer Object Files, qui est un fichier qui permet de
stocker le fichier de configuration de la SRAM du FPGA dans une mémoire EEPROM. Le
contenu de cette mémoire est lu à chaque démarrage de la carte pour programmer le
FPGA, ce qui permet de le reprogrammer automatiquement à chaque démarrage.

Une fois les fichiers de programmation générés, il est possible de programmer la carte et
vérifier le comportement du circuit dans son environnement réel. Dans notre cas, nous
programmerons la carte avec le fichier sof.

IV - Présentation du langage de description « VHDL »


Le langage de description VHDL dont l’abréviation anglaise est : « Very High
Description Langage » a été créé dans les années 70’ pour le développement de circuits
intégrés logiques complexes. Le VHDL a connu un véritable succès essentiellement à sa
standardisation en décembre 1987 par IEEE qui a permis d’en faire un langage unique pour la
description, la modélisation, la simulation, la synthèse et la documentation. De nos jours, plus
de 50% des projets numériques sont conçus en VHDL.
Le VHDL ne suit plus la démarche traditionnelle descendante (de la description jusqu'à la
réalisation ou la synthèse) mais se limite à une description directement issue des spécifications
techniques du produit qu’on souhaite obtenir.

Les deux programmes suivants, écrits en VHDL, permettent de réaliser, le premier un


multiplexeur à 4 entrées et le deuxième un décodeur 1 parmi 4

Multiplexeur à 4 entrées
library IEEE;
use IEEE.std_logic_1164.all;
entity multiplexeur is
port(
SW:in std_logic_vector (9 downto 0);
KEY :in std_logic_vector(3 downto 0);
LEDR :out std_logic_vector(9 downto 0);
LEDG :out std_logic_vector(7 downto 0));
end multiplexeur;
architecture multiplexeur of multiplexeur is
begin
process (SW)
begin
case SW(1 downto 0) is
when "00" =>LEDG(0)<=SW(6);
when "01" =>LEDG(0)<=SW(7);
when "10" =>LEDG(0)<=SW(8);
when "11" =>LEDG(0)<=SW(9);
when others =>LEDG(0)<=SW(6);
end case;
end process;
end multiplexeur;

Préparé par : CHERIF F. & SELLAMI A. TP 05 Page - 4 -


ENSIT Formation Ingénieur - GE - TP05 : Systèmes et Circuits Logiques

Décodeur 1 parmi 4
library IEEE;
use IEEE.std_logic_1164.all;
entity DECODEUR is
port(
SW:in std_logic_vector (9 downto 0);
KEY :in std_logic_vector(3 downto 0);
LEDR :out std_logic_vector(9 downto 0);
LEDG :out std_logic_vector(3 downto 0));
end DECODEUR;
architecture DECODEUR of DECODEUR is
begin
process (SW)
begin
case SW(1 downto 0) is
when "00" =>LEDG<="0001";
when "01" =>LEDG<="0010";
when "10" =>LEDG<="0100";
when "11" =>LEDG<="1000";
when others =>LEDG<="0000";
end case;
end process;
end DECODEUR;

V - Programmation graphique « Block Diagram/Schematic File »

La saisie des schémas des circuits doit comporter l’affectation des entrées et
des sorties par le nom qui correspond à chaque Interrupteur SW[i], bouton KEY[i], LEDR[i]
ou LEDG[i] (voir tableau en annexe)

 AND à 2 entrées

 NOR à 2 entrées

 OU EXCLUSIF

Préparé par : CHERIF F. & SELLAMI A. TP 05 Page - 5 -


ENSIT Formation Ingénieur - GE - TP05 : Systèmes et Circuits Logiques

 BASCULE T

VI - Travail Demandé

1- En se référant aux différentes commandes du logiciel Quartus en annexe :


Simuler le fonctionnement de tous les exemples présentés ci-dessus, puis
programmer dans l’FPGA et vérifier le fonctionnement sur la carte DE1

En VHDL : le Multiplexeur et Décodeur

En programmation graphique : la fonction AND, la fonction NOR, la fonction


OU EXCLUSIF et la BASCULE T

2- Réaliser le même travail en programmation graphique pour les circuits suivants :

- Registre à décalage à 3 bits

- Compteur asynchrone Modulo 8

- Compteur synchrone Modulo 10

Préparé par : CHERIF F. & SELLAMI A. TP 05 Page - 6 -


ENSIT Formation Ingénieur - GE - TP05 : Systèmes et Circuits Logiques

Annexe

commandes Quartus

- Création d’un projet : Créer un répertoire spécifique sur votre disque puis File / New
Project Wizard... seul le composant cible est à modifier, il s’agit d’un Cyclone II
EPC2C20F484C7, tout le reste peut garder les valeurs par défaut

- Ouverture d’un projet existant : depuis un explorateur de fichier double clic sur le
fichier d’extension qpf, depuis Quartus File / Open Project

- Création d’une page de schéma : File / New sélectionner : Block Diagram/Schematic File

- Création d’une page d’édition de fichier VHDL : File / New sélectionner : VHDL File

- dans la page de schéma Ajout d’un symbole : double clic sur feuille schéma, puis
chercher le symbole dans les bibliothèques

- Enregistrer VHDL file ou Schematic File avec le nom d’Entity

- Transformation d’un schéma en symbole : File / Create Update / Create Symbol Files for

Current File - Déroulement de tout le flot de conception : Processing / Start Compilation

- Création d’un chronogramme : File / New sélectionner : Vector Waveform File

- Ajout de signaux dans un chronogramme : dans la feuille waveform : clic droit : Insert /
Insert Node or Bus puis case Node Finder, filter input, output, list fait apparaître les
signaux.

- Simulation : Processing / Start Simulation, choisir Functional ou Timing selon le type de


simulation souhaité, ne pas oublier de générer le modèle de simulation (bouton Generate ...
simulation netlist) et de cocher la case Overwrite simulation ...

- fixer la correspondance des broches du FPGA : Tools / Import Assignements : selection du


fichier « DE1_pin_assignments »

- Visualiser et vérifier le brochage du composant : Assignements / Pin Planner

- programmer la carte : Tools / Programmer ; puis vérifier Hardware et valider Start

-Tester le fonctionnement du circuit sur la carte DE1

Préparé par : CHERIF F. & SELLAMI A. TP 05 Page - 7 -


ENSIT Formation Ingénieur - GE - TP05 : Systèmes et Circuits Logiques

Brochage du FPGA

Périphérique Broche FPGA


SW0 PIN_L22
SW1 PIN_L21
SW2 PIN_M22
SW3 PIN_V12
SW4 PIN_W12
SW5 PIN_U12
SW6 PIN_U11
SW7 PIN_M2
SW8 PIN_M1
SW9 PIN_L2
KEY0 PIN_R22
KEY1 PIN_R21
KEY2 PIN_T22
KEY3 PIN_T21
LEDR0 PIN_R20
LEDR1 PIN_R19
LEDR2 PIN_U19
LEDR3 PIN_Y19
LEDR4 PIN_T18
LEDR5 PIN_V19
LEDR6 PIN_Y18
LEDR7 PIN_U18
LEDR8 PIN_R18
LEDR9 PIN_R17
LEDG0 PIN_U22
LEDG1 PIN_U21
LEDG2 PIN_V22
LEDG3 PIN_V21
LEDG4 PIN_W22
LEDG5 PIN_W21
LEDG6 PIN_Y22
LEDG7 PIN_Y21

Préparé par : CHERIF F. & SELLAMI A. TP 05 Page - 8 -

Vous aimerez peut-être aussi