Cours FPGA
Cours FPGA
Cours FPGA
A. Jilbab Page 1
FPGA EEIN
Sommaire
I. Les circuits programmables ............................................................................................................ 3
1. Généralités .................................................................................................................................. 3
2. Les FPGA...................................................................................................................................... 4
3. Déroulement de la conception ................................................................................................... 5
II. La programmation VHDL ................................................................................................................. 6
1. Introduction ................................................................................................................................ 6
2. Entité et architecture .................................................................................................................. 6
3. Structure d’un programme VHDL ............................................................................................... 7
III. Manipulation des données en VHDL........................................................................................... 8
1. Données traitées par VHDL ......................................................................................................... 8
2. Les types en VHDL ....................................................................................................................... 8
3. Les opérateurs............................................................................................................................. 9
4. Les signaux .................................................................................................................................. 9
5. Les processus (process)............................................................................................................. 10
6. Résumé d’instructions .............................................................................................................. 11
IV. Les premiers PAS en VHDL ........................................................................................................ 13
Initiation à la programmation sous ISE de chez Xilinx ...................................................................... 13
Implémentation sur FPGA ................................................................................................................. 16
V. Description comportementale et structurelle .............................................................................. 20
Additionneurs ................................................................................................................................... 20
Compteurs......................................................................................................................................... 21
Registre à Décalage ........................................................................................................................... 22
VI. Les machines à états ................................................................................................................. 24
Les automates de Moore .................................................................................................................. 24
A. Jilbab Page 2
FPGA EEIN
A. Jilbab Page 3
FPGA EEIN
2. Les FPGA
Granularité plus fine que les CPLD (macrocellules-complexes mais +nombreuses) avec un
réseau de routage réparti (non centralisé contrairement aux CPLD)
A. Jilbab Page 4
FPGA EEIN
3. Déroulement de la conception
Spécification
Validation fonctionnelle
Design correct
non
oui
Validation temporelle
Spécifications
non temporelles
oui
Programmation
A. Jilbab Page 5
FPGA EEIN
1. Introduction
Langage formel pour la spécification des systèmes digitaux, aussi bien au niveau
comportemental que structurel
Utilisation :
o description des systèmes
o Simulation
o aide à la conception
o documentation
Caractéristiques principales :
o description à plusieurs niveaux
o simulation activée par événements (event-driven)
o Modularité
o Extensibilité
o langage général, fortement typé, similaire à Ada
2. Entité et architecture
VHDL nous intéresse en tant que langage pour la description, simulation et synthèse
des systèmes digitaux
A. Jilbab Page 6
FPGA EEIN
Au plus haut niveau d’abstraction, un système digital est vu comme une “boîte noire”,
dont on connaît l’interface avec l’extérieur mais dont on ignore le contenu
En VHDL la boîte noire est nommée entité (entity)
Une entité doit toujours être associée avec au moins une description de son contenu,
de son implémentation : c’est l’architecture
library ieee;
use ieee.std_logic_1164. all;
entity Telecom is
port (
Déclaration des
entrées/sorties ); Nom de
end Telecom; l’entité
A. Jilbab Page 7
FPGA EEIN
Constantes :
constant pi : real := 3.1416;
constant index_max : integer is 10*N;
Variables :
Valeur modifiable immédiatement par une affectation (:=)
variable stop : boolean;
variable etat : CodeDEtat := ST0;
Signaux :
Modélisation de l’entrée/sortie d’un dispositif. C’est une forme d’onde qui change
avec le temps : la modification a lieu à la prochaine itération de la simulation (retard
delta)
On peut également créer de nouveaux types, en fonction des types prédéfinis, par exemple :
type HuitBits is range 0 to 255;
type CodeDEtat is (init, ST1, ST2, exit);
type word is array (0 to 31) of bit;
type EtatsLogiques is record
valeur : integer range -127 to 128;
force : integer;
end record;
Pour la synthèse, les types de données les plus utilisés sont std_logic, pour les données à un
bit, et std_logic_vector, pour les bus
A. Jilbab Page 8
FPGA EEIN
Ces types ne sont pas prédéfinis : pour les utiliser, il faut déclarer le paquet (package)
std_logic_1164, qui fait partie de la bibliothèque (library) IEEE :
library ieee;
use ieee.std_logic_1164. all ;
use ieee.std_logic_unsigned. all ;
Une donnée de type std_logic possède une valeur parmi neuf possibles :
o 'U‘ uninitialized
o 'X’ forcing unknown
o '0’ forcing 0
o '1’ forcing 1
o 'Z’ high impedance
o 'W’ weak unknown
o 'L’ weak 0 (pull-down)
o 'H’ weak 1 (pull-up)
o '-’ don’t care
o Pour une affectation, les valeurs utilisées sont: 'X’, '0’, '1’, 'Z'
3. Les opérateurs
Opérations logiques :
and or nand nor xor xnor
Opérations de comparaison :
= /= < <= > >=
Opérations de décalage
sll srl sla sra rol ror
Opérations d’addition :
+ - &
Opérations de signe :
+ -
Opérations de multiplication :
* / mod rem
Opérations diverses :
not abs **
4. Les signaux
Pour connecter les différents composants d’un système, VHDL utilise les signaux (signal),
équivalent des fils ou câbles d’interconnexion dans le monde réel. Exemple :
signal s : std_logic := '0';
•••
s <= '1’ after 10ns, '0’ after 18ns, '1’ after 25ns;
A. Jilbab Page 9
FPGA EEIN
On peut associer certains attributs aux signaux, qui produisent une valeur.
Deux exemples d’attributs sont:
o s’ event :
vrai si un événement arrive pendant le delta présent (c’est-à-dire, si le
signal s change de valeur)
o s’ active:
vrai si une transaction arrive pendant le delta présent (c’est-à-dire, si le
signal s est évalué, qu’il change ou pas de valeur)
A. Jilbab Page 10
FPGA EEIN
Un processus ne peut pas être déclaré à l’intérieur d’un autre processus.
6. Résumé d’instructions
A. Jilbab Page 11
FPGA EEIN
Exemples
A. Jilbab Page 12
FPGA EEIN
A. Jilbab Page 13
FPGA EEIN
exemple.vhd
A. Jilbab Page 14
FPGA EEIN
Configurer les ports d’entrées sorties selon l’entité souhaitée
library ieee;
use ieee.std_logic_1164. all;
use ieee.std_logic_unsigned. all;
entity exemple is
port (a, b : in std_logic_vector(3 downto 0);
op, clk, reset : in std_logic;
c : out std_logic_vector(3 downto 0));
end exemple;
architecture test of exemple is
signal moinsb, opb, aopb : std_logic_vector(3 downto 0);
begin
moinsb <= not b + "0001";
opb <= b when op='0'
else moinsb;
aopb <= a + opb;
process (reset, clk)
begin
if reset='0'
then c <= "0000";
else if (clk’ event and clk='1')
then c <= aopb;
end if ;
end if ;
end process ;
end test ;
A. Jilbab Page 15
FPGA EEIN
Objectif
Initiation au logiciel de CAO ISE pour l’implémentation sur circuit FPGA. Nous allons
écrire, en VHDL, un programme de base pour s’initier à charger une carte FPGA :
Manipulation
A. Jilbab Page 16
FPGA EEIN
Le fichier généré automatiquement est le suivant :
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity toplevel is
Port ( switches : in STD_LOGIC_VECTOR (3 downto 0);
sevenseg : out STD_LOGIC_VECTOR (6 downto 0);
anodes : out STD_LOGIC_VECTOR (3 downto 0));
end toplevel;
architecture Behavioral of toplevel is
begin
end Behavioral;
A. Jilbab Page 17
FPGA EEIN
Cette étape permet de faire correspondre à nos entrées sorties des pins de FPGA
Si on néglige cette étape, les pins sont assignés par le logiciel Xilinx aléatoirement
Pour cela créer un nouveau fichier “Universal Constraints File” (.ucf).
o "Project → New Source"
A. Jilbab Page 18
FPGA EEIN
Synthesis, Place+Route, Programming File
Chargement de la cible
A. Jilbab Page 19
FPGA EEIN
Additionneur 1 bit
Sn-1 S1 S0
A. Jilbab Page 20
FPGA EEIN
Compteurs
L’objectif est concevoir et de manipuler un compteur/décompteur synchrone. Nous équiperons
ce compteur successivement d’une Reset synchrone/asynchrone, d’un UP/Down, et d’une
entrée de pré-chargement. Ce compteur nous servira pour la réalisation d’un effet à base de
LED de type K 2000.
Diviseur de fréquences
Le circuit DE2 étant équipé uniquement de deux horloges à 50MHz et 27MHz, il faudra dans
un premier temps élaborer une horloge présentant des fréquences plus faibles (1~10Hz).
Compteur simple
Faire évoluer le circuit précédent pour obtenir un compteur présentant une entrée de
remise à zéro asynchrone « RAZ ».
Lier cette « RAZ » l’entrée physique : SW17
Synchroniser ensuite la « RAZ » sur le front montant de l’horloge.
Effet K 2000
A. Jilbab Page 21
FPGA EEIN
Registre à Décalage
Il s’agit d’implémenter un registre à décalage de différentes façons. Dans un premier temps
vous effectuerez une implémentation directe, ensuite vous réaliserez le même composant en
combinant des multiplexeurs avec des bascules D.
S0
S1
REG_DEC
CLOCKK
Q3 Q2 Q1 Q0
4 entrées/4 sorties
1 entrée horloge
2 entrées de sélection qui permettent de choisir le mode :
D Q
Implémentation II d’un registre à décalage
A. Jilbab Page 22
FPGA EEIN
o Vérifier la validité fonctionnelle et temporelle du
circuit par simulation.
S1 S1 S1 S1
U1 U2 U3 U4
S0 S0 S0 S0
U5 U6 U7 U8
D Q D Q D Q D Q
Q Q Q Q
CLOCK
Q2 Q1 Q1
0 0 Q3 Q2 Q1 Q0 Pas de changement
0 0 I3 I2 I1 I0 Chargement parallèle
A. Jilbab Page 23
FPGA EEIN
Marche Arrêt
ma=1
Marche Arrêt RAZ = 1
ma=0
Implémenter l’automate de Moore à : quatre états (S1, S2, S3, S4), trois entrées (X1,X2,
RAS), deux sorties (S1, S2) suivants :
E1
S1 =0
X1 = 1 X1 = 0
S2 = 1
E2 RAZ = 1 X2 = 1 E3
S1 = 1 S1 = 0
S2 = 0 S2 = 0
X1 = 1 X1 = 0
E4
S1 = 1
S2 = 1
A. Jilbab Page 24