Académique Documents
Professionnel Documents
Culture Documents
Conception VHDL Pour Fpga
Conception VHDL Pour Fpga
Pr : Karim TAHIRY
Plan du cours
Logique programmable
Langage VHDL
✓ Eléments fondamentaux du langage VHDL
✓ La déclaration d’entité et architecture
✓ Instructions concurrentes et séquentielles
✓ Machine à états finis
NIOS II
✓ Développement des applications
1
Les circuits intégrés à application
spécifique
2
Transistors nMOS et pMOS
Inverseur CMOS
Un inverseur CMOS contient:
VCC
un transistor pMOS relié à l’alimentation; et
un transistor nMOS relié à la masse.
A F
3
Portes logiques NON-ET et NON-OU
avec transistors CMOS
VCC VCC
A B G = (A + B)’
A B B 0 0
0 1
1 0
F
1 1
A
A
A B F = (AB)’ G
0 0
0 1
B A B
1 0
1 1
down’
4
Circuits CMOS: exemple 1 – conception
F = (A + B + C)’
10
5
Circuits intégrés de 1960 à nos jours
11
Logique programmable
Mémoire morte
Programmable Read Only Memory – PROM
Electrically Programmable ROM – EPROM
Erasable EPROM – EEPROM
ASIC sur mesure Réseau de logique programmable
Full-custom ASIC Programmable Logic Array - PLA
ASIC à cellules normalisées Circuit PAL
Programmable Array Logic™ - PAL
Cell-based ASIC
Circuit GAL
Réseau pré-diffusé de portes Generic Array Logic™ - GAL
Gate Array Circuit logique programmable complexe
Complex Programmable Logic Device – CPLD
Réseau prédiffusé programmable par l’utilisateur
Field-Programmable Gate Array – FPGA
12
6
Mémoires mortes programmables :
PROM
Mémoire morte programmable Exemple: ROM 16 × 8
(Programmable Read Only Memory – PROM) décodeur 4:16
une seule fois m15
(One Time Programmable – OTP). m14
m13
m12
A3 m11
Une PROM consiste en : m10
A2 m9
• un décodeur avec n signaux d’entrée et 2n m8
A1 m7
sorties; m6
A0 m5
• un réseau d’interconnexions m4
programmables entre 2n rangées et m m3
m2
colonnes; et, m1
m0
• m portes OU à 2n entrées.
13
On utilise une
représentation compacte
des portes logiques avec
plusieurs entrées. =
14
7
Rappel : décodeur
Un décodeur active une sortie unique qui A2 A1 A0
Décodeur 3:8
F1
F7 # A2 A1 A0 F7 F6 F5 F4 F3 F2 F1 F0
0 0 0 0 0 0 0 0 0 0 0 1
F6
1 0 0 1 0 0 0 0 0 0 1 0 F2
F5 2 0 1 0 0 0 0 0 0 1 0 0
A2
F4
3 0 1 1 0 0 0 0 1 0 0 0 F3
A1 4 1 0 0 0 0 0 1 0 0 0 0
F3 5 1 0 1 0 0 1 0 0 0 0 0
A0 F4
F2 6 1 1 0 0 1 0 0 0 0 0 0
7 1 1 1 1 0 0 0 0 0 0 0
F1 F5
F0 F0 = m0 = A2’A1’A0’
F1 = m1 = A2’A1’A0 F6
F2 = m2 = A2’A1A0’
etc. F7
15
16
8
PROM : exemple 1 – analyse des
fonctions logiques réalisées
Donner les fonctions logiques réalisées
par cette mémoire PROM.
décodeur 4:16
m15
D7 = m13 + m9 = A3A2A1’A0 + A3A2’A1’A0 m14
m13
m12
D2 = m12 + m8 + m4 + m0 = A1’A0’ A3 m11
m10
A3A2 D2
A2 m9
A1A0 00 01 11 10 m8
A1 m7
00 1 1 1 1 m6
0 4 12 8
A0 m5
m4
01 0 0 0 0 m3
1 5 13 9 m2
m1
11 0 0 0 0 m0
3 7 15 11
10 0 0 0 0
2 6 14 10
D7 D6 D5 D4 D3 D2 D1 D0
17
le problème du vote
Un comité composé de quatre personnes a
A B C D F
besoin d’un mécanisme de vote secret
0 0 0 0 0
pour les amendements sur la constitution
0 0 0 1 0
du comité.
F = A' BCD + AB'CD + ABC' D + ABCD'+ ABCD 0 0 1 0 0
18
9
PROM : exemple 2 – implémentation
d’une fonction logique
Programmer la PROM 16 × 8 pour F = A' BCD + AB'CD + ABC' D + ABCD'+ ABCD
implémenter le circuit du problème du
vote. = m7 + m11 + m13 + m15
décodeur 4:16
Étapes: m15
m14
m13
1. Choisir les ports d’entrée et de A A3
m12
m11
sortie. B m10
A2 m9
C m8
2. Écrire les équations de sortie en A1 m7
somme de produits D A0
m6
m5
m4
m3
3. Indiquer quelles connexions établir. m2
m1
m0
Observations:
• La minimisation des équations n’est pas toujours utile.
• L’ordre dans lequel on place les entrées est crucial. D7 D6 D5 D4 D3 D2 D1 D0
19
20
10
Connexions programmables pour
mémoires EPROM (et EEPROM)
Les connexions programmables des mémoires VCC VCC
EPROM et EEPROM utilisent des transistors au
lieu de diodes et de fusibles.
Les lignes verticales sont reliées à l’alimentation
par une résistance de rappel vers le niveau haut. F1
Les transistors de connexion permettent d’amener la
ligne verticale à zéro si la ligne horizontale
correspondante est à 1.
Les transistors peuvent être désactivés en les
programmant. F0
21
effectivement isolés électriquement. (a) Standard MOS transistor (b) EPROM transistor
22
11
EEPROM et mémoires Flash
Les mémoires EEPROM et Flash sont Pour ‘programmer’ la cellule, on place une
similaires aux mémoires EPROM, mais tension élevée sur la grille de contrôle et le
peuvent être effacées électriquement, sans drain du transistor. Comme un courant
rayons ultraviolets. élevé circule dans le canal, des électrons
sont attirés par la grille de contrôle et vont
L’isolant autour de la grille flottante est s’emmagasiner sur la grille flottante,
plus mince que dans le cas d’une cellule désactivant le transistor.
EPROM, et la grille flottante chevauche
partiellement le drain du transistor.
Source: wikipédia
23
Exemple 3 – implémentation de
fonctions logiques
Programmer la ROM 16 × 8 pour S=
implémenter le circuit donné ici. Cout =
Étapes: décodeur 4:16
m15
1. Choisir les ports d’entrée et de sortie. m14
m13
m12
2. Écrire les équations de sortie en 0 A3 m11
T2 Cout D7 D6 D5 D4 D3 D2 D1 D0
S Cout
24
12
Réseaux de logiques programmables :
PLA
Un PLA (Programmable Logic Array) est Exemple: PLA à 4 entrées, 3 sorties et 6 termes
similaire à une ROM, mais il ne réalise A3 A2 A1 A0
25
26
13
Réseau PLA: exemple – multiplexeur
4:1
Programmer le circuit PLA pour
implémenter le circuit d’un multiplexeur
4:1.
27
28
14
Réseaux logiques programmables :
circuit PAL (Programmable Array Logic)
Les portes ET ont une sortie de 0 par défaut.
Chaque patte de sortie est menée par un
tampon inverseur contrôlé par une fonction
logique.
Un PAL16L8 a:
• 10 entrées dédiées (pattes 1-9 et 11)
• 2 sorties dédiées (pattes 12 et 19)
• 6 pattes pouvant être utilisées Comme entrée
ou sortie (pattes 13-18)
29
A F = A’
30
15
Réseaux logiques programmables :
circuit PAL
On programme un
PAL en établissant
des connexions entre
les lignes verticales et
horizontales pour
former des sommes
de produits.
31
32
16
PAL 16R8
Un PAL peut avoir des
bascules en sortie.
Un PAL16R8 a:
• 8 entrées (pattes 2-9);
• 8 sorties avec bascule
(pattes 12-19);
• une patte d’horloge
(CLK); et,
• une patte de contrôle
de la sortie (OE’).
33
34
17
Circuits GAL: macro-cellule
Le schéma montre une macro-
cellule (Output Logic Macro
Cell – OLMC).
35
36
18
Exemple : famille CPLD MAX 7000S
de Altera
The multiple array matrix (MAX)
7000S est une famille des circuits
CPLD.
37
38
19
Exemple : famille CPLD MAX 7000S
de Altera
La macro-cellule est
programmée pour produire une
fonction logique séquentielle.
39
40
20
Exemple : famille CPLD MAX II de
Altera
Le MAX II diffère considérablement de la famille MAX
7000.
41
Ressemble à l’architecture de la
famille MAX 7000.
Le réseau d’interconnexions
permet d’établir des connexions
entre les blocs d’entrées-sorties
reliés aux pattes de la puce et les
blocs fonctionnels.
42
21
CPLD : Exemple - modes des marco-
cellules
Déterminer comment la macro-
cellule est configurée
(combinatoire ou séquentielle) et
le bit de données qui se trouve sur
la sortie (en I/O) pour chacune des
conditions suivantes. La bascule
est de type D.
43
22
Architecture FPGA
Un FPGA est composé à la base
de :
un réseau de blocs de logique
programmable (Configurable
Logic Block − CLB).
un réseau d’interconnexions
programmables entre les blocs.
des blocs d’entrée et de sortie
avec le monde extérieur
(Input/Output Block – IOB).
Architecture FPGA
Des FPGAs peuvent avoir des
dizaines de milliers de CLB en plus
de mémoire et d'autres ressources.
23
CLB: bloc logique configurable
CLB est utilisé pour réaliser la
logique combinatoire et
séquentielle.
47
Module logique
Module logique peut être configuré
pour la logique combinatoire,
logique séquentielle, ou une
combinaison des deux.
48
24
LUT
Une LUT est constituée d'un nombre
de cellules mémoire égal à 2𝑛 , où n est
le nombre de variables d'entrée.
Cellule SRAM
Mode écriture
✓ Bit de donnée depuis ‘Bit line’.
✓ Le transistor de commutation est
fermé par ‘word line’.
✓ la valeur logique sur ‘Bit line’ est
appliquée à l'entrée de l'inverseur haut.
✓ Lorsque le transistor de commutation
est ouvert, l‘inverseur conserve la
valeur logique.
Mode lecture
✓ Le transistor de commutation est
fermé par ‘word line’.
✓ La valeur logique sortie de l’inverseur
inférieur est ensuite appliquée à ‘Bit
line’.
50
25
Modèle simplifier d’un CLB
Ce CLB contient:
deux LUT.
deux bascules.
divers multiplexeurs.
Le multiplexeur H sélectionne F ou G
en fonction de la valeur de H1.
51
52
26
FPGA de Xilinx série 7: tranche de type L
Une tranche comprend:
53
54
27
Blocs de mémoire intégrée
De plus en plus de transistors … les
manufacturiers ajoutent de la Columns of embedded
mémoire. RAM blocks
Arrays of
programmable
55
56
28
Génération d’horloge
La génération et la distribution
du signal d’horloge est un
problème difficile.
dizaine d’horloges de
outside world Daughter clocks
used to drive
Clock
internal clock trees
Manager
fréquences différentes. etc.
or output pins
Special clock
pin and pad
Le générateur accepte en entrée
une horloge externe et génère
une ou plusieurs horloges
internes.
57
Distribution d’horloge
Pour distribuer l’horloge à
travers la puce tout en
minimisant le déphasage
d’horloge, on utilise un réseau Clock
tree
Flip-flops
en arbre dédié.
Ce réseau est alimenté soit par
une patte spéciale du FPGA à
laquelle est associé un
Special clock
amplificateur dédié, ou bien pin and pad
58
29
Microprocesseurs fixes
Plusieurs FPGA intègrent des microprocesseurs
fixes, ex. PowerPC.
Xilinx, Virtex-II Pro and Virtex-II Pro X Platform FPGAs: Complete Data Sheet, Nov. 2007.
Architecture résultante très performante, SoC-
sur-FPGA.
59
FPGA: Exemple-LUT
60
30
VHDL
V VHSIC
(Very High Speed Integrated Circuit)
H Hardware
D Description
L Language
61
VHDL
Les HDL ont été définis à l'origine pour
pouvoir modéliser le comportement à
plusieurs niveaux d'abstraction.
Haut niveau: spécifications (vitesse,
énergie).
Niveau algorithmique: Les spécifications
peuvent être divisées en sous-systèmes:
➢ CPU: pour effectuer le calcul.
➢ RAM: pour contenir les entrées et les sorties
du calcul.
Niveau de transfert de registre:
➢ Description de la manière dont les données
sont déplacées entre et dans les sous-
systèmes.
➢ Description de la manière dont les données
sont manipulées en fonction des entrées du
système.
62
31
VHDL
Niveau porte logique: est essentiellement
un schéma (graphique ou textuel) contenant
les composants et les connexions.
32
Historique
❑ 1980: le département de défense américain lance un appel d’offre pour un langage qui
permettrait de décrire tous les systèmes électroniques utilisés.
❑ 1999:Standard IEEE1076.6-1999
❑ La norme est révisée tous les 5 ans (P1076-87, P1076-93, P1076-2000, P1076-2002,
P1076-2006)
65
Introduction
❑ Programmation ou description ?
➢ Les objectifs du langage VHDL
Conception de circuits intégrés reconfigurable ou non (ASIC, FPGA…) :
SYNTHESE
Mise au point de modèle de simulations numériques (circuits virtuels) :
MODELISATION
➢ Le langage est capable de DECRIRE
des comportements concurrents ( // )
Les deux portes
Des comportements séquentiels travaillent en //
33
langage de programmation VHDL
VHDL n’est pas un langage de programmation comme le C, c’est
un langage de description du matériel (verilog, SystemC …).
67
Avantages du VHDL
❑ Langage complet qui couvre à la fois les phases de :
✓ spécification,
✓ modélisation,
✓ simulation,
✓ synthèse.
❑ Langage indépendant :
✓ standard IEEE (standardisé en 1987, complété en 1993),
✓ indépendant de la technologie du circuit,
✓ Independent des systèmes – hôtes (PC ou station de travail).
❑ Langage flexible : supporte différents niveaux de description
❑ description modulaire et hiérarchique
• les descriptions sont plus simples,
• la fiabilité est améliorée : chaque sous-ensemble peut être testé seul,
• les sous-ensembles sont réutilisables.
68
34
Structure du VHDL
Il existe 5 catégories d’unité de conception
69
Objets
❑ Quatre classes d’objets en VHDL :
➢ Les constantes
Comme les autres langages, elles ont une valeur fixe
➢ Les variables
Comme les autres langages, elles ont une valeur immédiatement modifiable par affectation
➢ Les signaux
Notion nouvelle, la valeur ne se modifie pas immédiatement
➢ fichier
fait référence à un stockage sur une mémoire de masse (disque) externe
Avant toute utilisation d’une constante, d’une variable ou d’un signal, il faut les déclarer.
70
35
Objets
❑ CONSTANT name : type := value;
✓ CONSTANT PI: Real := 3.1416;
✓ CONSTANT INDEX_MAX: Integer := 10*N; -- N doit être déclaré avant
71
Les opérateurs
❑ Opérateur logique : and, or, nand, nor, xor, xnor, sll, srl, sra, rol,
ror
❑ Opérateur de signe : -
72
36
Programmer en VHDL
❑ Définition de l’entité (boîte noire avec les ports d’entrée/sortie)
❑ VHDL est insensible à la casse. On écrit souvent les mots réservés du langage en
majuscule, le reste en minuscule.
L’entité
❑ L'entité définit les ports (vue externe) et leur mode (in, out, inout, buffer).
❑ Syntaxe:
entity nom_de_l_entite is
port(liste_des_port_avec_leur_mode);
end nom_de_l_entite;
74
37
L’entité
remarquez à la fin de la
définition du port, le
point-virgule se trouve
après la parenthèse
fermante.
X, Y et Z étant du même
mode et du même type,
ils peuvent être listés sur
la même ligne, séparés
par des virgules.
75
Bibliothèques
❑ Le mot ‘library’ est utilisé pour indiquer que des packages vont être ajoutés à la
conception VHDL à partir de la bibliothèque spécifiée.
❑ La syntaxe du paquet a trois champs séparés par un point.
Nom de la bibliothèque
76
38
Exemples d’entité
❑ Décrire les ports de circuits suivants par un segment d'entité VHDL.
77
Architecture
❑ Définition de signaux et d'autres objets internes
❑ Elle est toujours associée à une entité, une entité peut avoir plusieurs
architectures:
❑ Syntaxe
architecture nom_de_l_architecture of nom_de_l_entite is
{partie déclarative}
begin
{suite d’instructions concurrentes}
end nom_de_l_architecture;
78
39
Affectation
❑ Affectation des variables, constantes et génériques se fait par le signe
:=
❑ Exemple
Notez que “:=” est utilisé pour les signaux uniquement pour l'affectation de
valeur initiale. Il n'est pas utilisé pour les signaux dans les autres cas.
79
40
Structure d’un programme VHDL
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
ENTITY nom_de_l_entite IS
{port (liste_des_port_avec_leur_mode)}
END {nom_de_l_entite};
81
82
41
Exemple 1
❑ Donner le code VHDL de l’équation suivante:
83
Exemple 2
❑ Donner le code VHDL du circuit suivant:
84
42
Exemple 3
❑ Dessinez le circuit logique à implémenter avec le VHDL suivant
85
Types en VHDL
❑ Un type définit
86
43
Types, schéma global
87
Type scalaire
❑ énuméré
type T_FEU is (ROUGE, ORANGE, VERT);
signal FEU : T_FEU;
❑ entier
signal COMPT : integer range 0 to 15;
❑ Réel
signal MASSE : REAL;
44
Type énuméré
❑ Ce type déclare toutes les valeurs qu'un objet de ce type peut
prendre.
type T_FEU is (ROUGE, ORANGE, VERT);
signal FEU : T_FEU;
type ETAT is (INIT, LECT, ECR, ATT);
89
❑ Le type "std_logic" remplace le type "bit" pour permettre d’avoir 9 états différents
❑ exemple
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
signal SORTIE, Q: std_logic;
…
SORTIE <= ‘Z’; -- haute impédance
Q <= ‘1’;
90
45
Le type std_logic
❑ Le type std_logic :
‘ U ’ non initialisé
‘ X ’ non connu
‘ 0 ’ logique 0 Strong drive
‘ 1 ’ logique 1
‘ Z ’ haute impédance
‘ W ’ non connu
‘ L ’ logique 0 Weak drive
‘ H ’ logique 1
‘ - ’ don’t care
91
Type composite
Deux types sont considérés : tableau et record
❑ 2D
TYPE matrix2D IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;
92
46
Accès aux éléments
❑ Déclaration:
A,B: std_logic_vector(15 downto 0);
❑ Directement:
A(3) <= ‘1’;
B(15) <= ‘0’;
❑ Par tranches
A(15 downto 12) <= "1011";
A(10 downto 2) <= B(15 downto 7);
93
✓ Notation positionnelle
A(3 downto 1) <= ('0', '1', B(15));
✓ Par concaténation
signal A,B,C,D : std_logic;
signal BYTE : std_logic_vector(7 downto 0);
signal Z_BUS,A_BUS : std_logic_vector(3 downto 0);
Z_BUS <= A & C & D & B;
BYTE <= Z_BUS & A_BUS;
94
47
Exemples
SIGNAL A: STD_LOGIC; a <= ‘1’;
Enregistrement (record)
Ensemble d'éléments de types différents
type NAME is record
identifier : type_indication;
:
identifier : type_indication;
end record;
96
48
zone concurrente
❑ Le corps de l'architecture est une zone concurrente: les instructions s'exécutent toutes
en même temps (en parallèle).
97
Exemple
EX : 1
98
49
zone séquentielle
99
Processus
❑ Processus est une instruction concurrente complexe à écrire
dans une architecture
100
50
Syntaxe de processus
❑ Syntaxe de processus :
label : -- optionnel
process (liste de sensibilité)
{partie déclarative}
begin
suite d’instructions séquentielles
end process;
101
Processus
* architecture Arch of Ent is architecture Arch of Ent is
begin begin
Process (A, B)
begin
if (A = ’1’ and B = ’1’) then S1 <= ’1’;
S1 <= A and B; else S1 <= ’0’;
end if;
end process;
Process (B, C)
begin
S2 <= A when B = ’1’ else if (B = ’1’) then S2 <= A;
elsif (C = ’1’) then S2 <= not(A);
/A when C = ’1’ else
else S2 <= D;
D; end if;
end process;
51
Instructions séquentielles
❑ Ils s'écrivent uniquement dans une zone séquentielle
• instruction d'attente (wait)
• instruction conditionnelle (if)
• instruction case
• instruction de boucle (For)
103
Instructions wait
❑ Elle s’utilise pour suspendre un processus jusqu’un événement
➢ wait until condition;
wait until A=‘ 1 ’;
wait until CLK’event and CLK=’1’;
➢ wait for time expression;
wait for 5 ns;
➢ wait on signal;
wait on A , B
104
52
Instructions if
if condition then
sequential statements
[elsif condition then
sequential statements ]
[elsif condition then
sequential statements ]
[else
sequential statements ]
end if;
105
Instruction case
❑ Permet de sélectionner une suite d’instructions à exécuter en fonction de la valeur
d’une expression.
case EXPRESSION is
end case;
53
Instruction for
(sequential statements)
END LOOP
107
Exemple
Donner la description en langage VHDL (Entité et Architecture) avec (if, case)
Multiplexeur 4 voies
108
54
Exemple
Donner la description en langage VHDL (Entité et Architecture) avec (if, case)
décodeur 2 : 4
109
Exemple :
110
55
zone concurrente : Instruction when/else
Exemple :
111
entity R is process
port (D,CLK: in std_logic; begin
Q: out std_logic); wait until CLK'event and CLK='1';
end R; Q <= D;
architecture A of R is end process;
begin
process
begin process (CLK)
wait on CLK; begin
if CLK='1' then Q <= D; if CLK'event and CLK='1' then
end if; Q <= D;
end process; end if
end A; end process;
112
56
Machine à états finis
❑ Une machine à états est un circuit séquentiel ayant un nombre limité
(fini) d'états apparaissant dans un ordre ordonné. Un compteur est
un exemple de machine à états.
❑ Moore et la Mealy sont deux types fondamentaux de machines à
états.
❑ L’état interne est assuré dans des registres (bascules).
113
114
57
Machine de Moore
❑ Chaque bulle représente un état avec un identificateur.
116
58
Machine de Mealy
❑ La notation est similaire à celle
de la machine de Moore.
117
59
Exemple
On analyse un circuit pour en
comprendre le fonctionnement.
A
Analyser un circuit séquentiel D Q
119
Exemple
A
1.{A, B} 4. Diagramme d’états:
D Q
CLK 2. état 0: AB = « 00 »
reset
A+ = A xor B; état 1: AB = « 01 »
B Z
B+ = B’ or X; état 2: AB = « 10 »
D Q
X
Z = A nor B; état 3: AB = « 11 »
CLK
reset
-
reset
3. Tableau d’états: (état
initial)
État 0 État 1
A B X A+ B+ Z
0 0 0 0 1 1 0
1
0
0 0 1 0 1 1
0 1 0 1 0 0 État 3 1 État 2
0 1 1 1 1 0 Sortie: 0 Sortie: 0
1 0 0 1 1 0 -
1 0 1 1 1 0
1 1 0 0 0 0 C’est une machine de Moore,
1 1 1 0 1 0 la sortie ne dépend que de l’état présent.
120
60
Exemple
-
A reset
D Q État 0 État 1
(état
initial)
CLK Sortie: 1 Sortie: 0
reset
0 0
1
B Z
D Q
X
État 3 1 État 2
CLK
Sortie: 0 Sortie: 0
reset
-
121
Exemple
• Approche adéquate: library IEEE;
use IEEE.std_logic_1164.all;
process(CLK, reset) is
CLK begin
reset if (reset = '0') then
A <= '0';
B <= '0';
elsif (rising_edge(CLK)) then
D Q
B Z A <= A xor B;
X B <= x or not(B);
end if;
CLK end process;
reset
z <= not(A or B);
61
Exemple
architecture arch3 of cctsequentielex1 is
❑ Approche beaucoup plus puissante: type type_etat is (Etat0, Etat1, Etat2,
Etat3);
– identifier les états, les conditions de signal etat : type_etat := Etat0;
begin
transition et les sorties pour chaque process(CLK, reset) is
begin
état if (reset = '0') then
– pas besoin d’équations d’états etat <= Etat0;
elsif (rising_edge(CLK)) then
case etat is
– plus lisible, robuste, facile à maintenir when Etat0 =>
-
etat <= Etat1;
reset when Etat1 =>
(état État 0 État 1
if x = '0' then etat <= Etat2;
initial) else etat <= Etat3;
Sortie: 1 Sortie: 0
end if;
when Etat2 =>
etat <= Etat3;
0 0 when Etat3 =>
1
if x = '0' then etat <= Etat0;
else etat <= Etat1;
État 3 1 État 2 end if;
end case;
Sortie: 0 Sortie: 0 end if;
end process;
-
z <= '1' when etat = Etat0 else '0';
123 end arch3;
124
62
Trois styles de description d’une
machine à états en VHDL
125
126
63
Application: Contrôleur de distributeur
automatique
Pour implémenter cette machine d'état, nous aurons besoin d'un état initial
dans lequel la machine attendra jusqu'à ce qu'un client entre de l'argent (wait).
Si un dollar est entré, la machine affirmera le signal «Dispense» pour libérer
une bouteille d'eau et affirmera le signal «Change» pour donner un quart de
changement. Nous n'avons pas besoin d'un état supplémentaire pour la
condition où un dollar est entré car la machine va simplement affirmer les
signaux de sortie et retourner à l'état d'attente. Lorsque le client paie avec des
quarts, notre machine doit garder une trace du nombre de quarts reçus. Nous
aurons besoin de deux états intermédiaires qui gardent la trace du nombre de
quarts entrés (25ȼ et 50ȼ). Une fois le troisième quart entré, notre machine
confirmera le signal de «dispense» et reviendra à l'état d'attente.
127
Tableau d’états
Diagramme d’états
128
64
Application: Contrôleur de distributeur
automatique
129
130
65
Exemple
Donner le code VHDL pour implémenter la machine à états finis dans la figure suivante:
131
Nios Ⅱ
❑ System on Chip (SoC):
➢ Un système sur puce (SoC) est généralement défini comme une puce intégrant les
principaux éléments fonctionnels d’un produit final complet.
➢ Un système sur puce comprend généralement un processeur, une mémoire, des modules périphériques et
des modules matériels personnalisés.
132
66
Nios Ⅱ
❑ System on a Programmable Chip (SOPC):
➢ Contrairement à un système sur puce qui est fabriqué sur un circuit intégré et
ne peut être modifié à nouveau, un système sur puce programmable (SoPC),
ou d'un système programmable sur puce, est construit sur la logique
programmable.
➢ Sa structure peut être modifiée par l'utilisateur final, soit au moment de la
compilation, soit au moment de l'exécution, au moyen d'une reconfiguration
complète ou partielle.
❑ Processor Cores:
Nios Ⅱ
➢ Processeurs « hard » utilisent un processeur embarqué en plus des éléments logiques
normaux du FPGA. Les processeurs « hard » ajoutés à un FPGA constituent une
approche hybride.
▪ Altera propose un processeur embarqué ARM.
➢ Les processeurs « soft » peuvent être très simples et flexibles, permettant souvent au
concepteur de spécifier:
✓ Cependant, cette flexibilité a un coût. Les processeurs « soft » ont des fréquences
d'horloge plus lentes, consomment plus d'énergie qu'un processeur « hard » équivalent.
134
67
Nios Ⅱ
❑ Le processeur Nios II d’Altera est disponible en tant que modèle de référence à
synthétiser et à télécharger sur des FPGA.
❑ Les périphériques ‘custom’ peuvent être développés et intégrés au processeur. Ceci est
recommandé pour les fonction gourmandes en cycles CPU (hardware).
135
Nios Ⅱ
❑ QSys d’altera, outil graphique permettant la configuration des
périphériques et du processeur.
136
68
Nios Ⅱ
137
Nios Ⅱ
❑ Le processeur Nios II possède un certain nombre de fonctionnalités
pouvant être configurées par l'utilisateur pour répondre aux demandes du
système souhaité. Le processeur peut être implémenté dans trois
configurations différentes:
✓ Nios II / f est une version "rapide" conçue pour des performances
supérieures. Il offre le plus large éventail d’options de configuration
pouvant être utilisées pour optimiser les performances du processeur.
✓ Nios II / s est une version "standard" qui nécessite moins de ressources
dans un dispositif FPGA, ce qui est un compromis pour une performance
réduite.
✓ Nios II / e est une version «économique» qui nécessite le moins de
ressources FPGA, mais qui possède également le plus petit ensemble de
fonctionnalités configurables par l'utilisateur.
138
69
Nios Ⅱ
❑ Le processeur Nios II a une architecture RISC (Reduced Instruction
Set Computer).
139
70