Les Circuits FPGA “Field Programmable Gate Array”

Les Circuits FPGA
“Field Programmable Gate Array”
Universitéde
dePicardie
PicardieJules
JulesVerne
Verne
Université
IUPGEII
GEII--33
33rue
rueSaint
SaintLeu
Leu--80039
80039Amiens
AmiensCedex1
Cedex1
IUP
RichardGRISEL,
GRISEL,Professeur
Professeurdes
desUniversités
Universités
Richard
[email protected]
[email protected]
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Avant-Propos
Ce document correspond aux transparents du cours sur les FPGA donné
à l ’IUP GEII d ’Amiens. Après une introduction générale et un aperçu
technologique il fait surtout référence aux produits de la famille Xilinx qui
correspondent aux circuits utilisés pour les TP à l ’IUP GEII.
Une partie de ces transparents correspond à une adaptation des
supports accessibles sur le site de Xilinx (www.xilinx.com) .
Je suis à la disposition des collègues pour toute discussion sur ce sujet
Amiens, le 24 mai 2002
R. Grisel
2
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Positionnement dans l’arbre généalogique des C.I.
Source: Dataquest
Logic
Standard
Logic
Programmable
Logic Devices
(PLDs)
SPLDs
(PALs)
ASIC
Gate
Arrays
Cell-Based
ICs
CPLDs
Acronymes
SPLD = Simple Prog. Logic Device
PAL = Prog. Array of Logic
CPLD = Complex PLD
FPGA = Field Prog. Gate Array
Full Custom
ICs
FPGAs
Resssources
Configurable Logic Blocks (CLB)
—
—
—
Mémoires, Look-Up Table
AND-OR
Portes élémentaires
Input / Output Blocks (IOB)
—
Bidirectionnels, latches, inverseurs, pullup/pulldowns
Interconnections ou Routage
—
Local, interne par feedback, et global
3
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
CPLDs et FPGAs
CPLD
Complex Programmable Logic Device
Architecture
Densité
FPGA
Field-Programmable Gate Array
“PAL/22V10-like”
Combinatoire
“Gate array-like”
Plus de registres + RAM
Faible à moyenne
0.5-10K portes logiques
Moyenne à forte
1K à 1M “gates”
“Timing” précis
Environ 250 MHz
Dépend de l’application
Max. 150MHz (2002)
Performance
Interconnexion
“Matricielle”
Incrementale
4
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Croissance industrielle
5
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Structure générale d ’un CPLD
Structure « Somme de Produits »
Le temps d ’arrivée est pré-défini
Matrice d ’Interconnexions
Les ressources de « routage » sont faibles
6
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Structure générale d ’un FPGA
Interconnexions
Bloc fonction
Entrée/Sortie Programmable :
- IN
- OUT
- HIZ
- Registre
- « Trigger » de Schmitt
La structure est principalement « symétrique »
Le temps d ’établissement dépend du routage
7
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Programmation par « antifusible »
CMOS standard (3 masques en +)
Surface < 1µm2
10 à 20v (10 mA sur la connexion)
Ron : 40 à 100 Ω (Si amorphe)
100 à 600 Ω (Oxyde - Nitride - Oxyde, ONO)
8
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Programmation par « SRAM »
Cellule de base (5 transistors MOS quelques dizaines
de µm2)
Transistor d ’interconnexion
Fonction logique programmable
Multiplexeur
(R,C) est élevé
Le procédé de fabrication est standard
La programmation est « volatile » (disparition avec l’alimentation), on peut aussi
envisager une « reconfiguration » en cours de fonctionnement
9
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Programmation par cellule EPROM ou
EEPROM
Principe : Capture de charges par effet « tunnel » sur la grille flottante (10 à 25V)
et augmentation du seuil de conduction, la libération se fait par UV (EPROM) ou
par effet inverse (EEPROM)
Utilisation : B = A/ (grille non chargée, fonction inverseur) ,
B indépendant de A (grille chargée, OFF permanent)
Permet le ET cablé, une cellule occupe quelques µm2
10
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Récapitulation des caractéristiques
Technologie
Volatile
Re-Prog
Surface
R
C
FAB
SRAM
Oui
Oui in-situ
Large
500 - 1K
10 - 10 fF
0
Anti-fusible ONO
Non
Non
Petite (anti-fusibles)
100 - 400
Large (transistors de
prog.)
3 - 5 fF
+3
Anti-fusible Si Amorphe
Non
Non
Petite (anti-fusibles)
40 - 80
Large (transistors de
prog.)
1.2 fF
+3
EPROM
Non
Oui - extérieur
Petite
2k - 4k
10 - 20 fF
+3
EEPROM
Non
Oui in-situ
2 x EPROM
2k - 4k
10 - 20 fF
+3
11
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Fabricants de FPGA
Nom
Architecture
Bloc Logique
Programmation
Xilinx
(www.xilinx.com)
Symétrique
"Look Up Table" SRAM
Registre
ACTEL
(www.actel.com)
Symétrique
Multiplexeur
QuickLogic
(www.quicklogic.com)
Symétrique +
Embedded
MX + portes de Anti-fusible
base
"ViaLink"
Cypress
(www.cypress.com)
CPLD - EPLD
PLD
SRAM
ou
EEPROM
Altera
(www.altera.com)
CPLD
LUT + registre
SRAM
Anti-fusible
Flash
12
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Exemple : Altera Flex 6000 CPLD
5V, 0.42 micron, 3 couches de métallisation
1 Logic Array Bloc (LAB) de 10 Logic Elements (LE = 1 LUT
à 4 entrées, 1 registre programmable, + chemins de carry et
cascade)
Interconnexion directe LE vers I/O pour rapidité
13
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Logic Array Block (Altera)
14
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Logic Element (Altera)
15
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Logic Element (Composants)
16
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Table d ’exemples
17
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Méthodologie de développement
Librairie
Librairie
Point d’entrée (schémas, ABEL, VHDL)
avec librairies et simulation fonctionnelle
Implémentation :
Partitionnement - Placement (la logique dans
les blocs logiques)
Routage (les interconnexions)
Rétro-Annotation des temps de propagation
“Vue interne” du “Layout”
Programmation
PROM - EPROM (Programmateur)
Téléchargement direct (SRAM - FLASH)
par cable (série - // - USB)
Simulation
Placement - Routage
Rétro-Annotation
18
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Présentation des XC9500 CPLDs Xilinx
3
JTAG
Controller
JTAG Port
In-System
Programming Controller
5 volt in-system
programmable (ISP)
CPLDs
5 ns pin-to-pin
Function
Block 1
I/O
I/O
I/O
I/O
Blocks
I/O
Global
Clocks
Global
Set/Reset
Global
TriStates
Function
Block 2
FastCONNECT
Switch Matrix
36 à 288 macrocellules
(6400 gates)
10,000 cycles
programme/efface
Compatibilité IEEE 1149.1
JTAG
Function
Block 3
3
1
Function
Block 4
2 or 4
19
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
XC9500 - Architecture
Uniformité, même “timing” pour toutes les broches (pins),
achitecture PAL-like
Matrice d’interconnexion FastCONNECT routage 100% et
utilisation 100%
Bloc fonctionnel flexible
—
—
—
—
—
36 entrées et 18 sorties
Expansion possible à 90 termes produits par macro-cellule
Validation des termes produits et “three-state” global
“Global” clock
Set/Reset globaux 3.3V/5V I/O operation
I/O en mode 3,3 ou 5V
Interface IEEE 1149.1 JTAG
20
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
XC9500 - Bloc fonctionnel
Global
Clocks
AND
Array
3
Global
Tri-State
2 or 4
Macrocell 1
I/O
Macrocell 18
I/O
ProductTerm
Allocator
36
From
FastCONNECT
To
FastCONNECT
Chaque bloc fonctionnel s’apparente à un 36V18 !
21
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
XC9500 - Produits
9536
9572
95108
95144
95216
95288
36
72
108
144
216
288
“Usable
Gates”
800
1600
2400
3200
4800
6400
tPD (ns)
5
7.5
7.5
7.5
10
10
Registres
36
72
108
144
216
288
Max I/O
34
72
108
133
166
192
PC84
TQ100
PQ100
PQ160
PQ100
PQ160
Macrocellules
Boitiers
VQ44
PC44
PC44
PC84
TQ100
PQ100
PQ160
HQ208
BG352
HQ208
BG352
22
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Famille XC9500XL 3.3V
XC9536XL XC9572XL XC95144XL XC95288XL
Macrocells
36
72
144
288
Usable Gates
800
1600
3200
6400
tPD (ns)
4
5
5
6
fSYSTEM
200
178
178
151
Packages
(Max. User
I/Os)
BGA
CSP
44PC (34) 44PC (34)
64VQ (36) 64VQ(52)
100TQ (72) 100TQ (81)
144TQ (117) 144TQ (117)
208PQ (168)
352BG (192)
48CS (36) 48CS (38) 144CS (117)
23
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Architecture de la Série XC4000
CLB
Slew
Rate
Control
CLB
Switch
Matrix
D
CLB
Q
Passive
Pull-Up,
Pull-Down
Vcc
Output
Buffer
Pad
Input
Buffer
CLB
Q
Programmable
Interconnect
D
Delay
I/O Blocks (IOBs)
C1 C2 C3 C4
H1 DIN S/R EC
S/R
Control
G4
G3
G2
G1
F4
F3
F2
F1
G
Func.
Gen.
DIN
H'
EC
RD
1
Y
G'
H'
S/R
Control
DIN
SD
F'
D
G'
Q
H'
H'
K
Q
D
G'
H
Func.
Gen.
F
Func.
Gen.
SD
F'
F'
1
EC
RD
X
Configurable
Logic Blocks (CLBs)
24
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
CLB (Configurable Logic Block) XC4000E/X
2 générateurs de fonction
à 4 entrées (“Look Up
Tables”)
- 16x1 RAM ou
G4
fonction logique
G3
2 Registres
G2
- Configurable en FlipG1
Flop ou Latch
- Polarité des “clocks”
indépendantes
- Set/Reset Synchrone et F4
F3
Asynchrone
F2
F1
C1 C2 C3 C4
H1 DIN S/R EC
S/R
Control
DIN
F'
G'
G
Func.
Gen.
F
Func.
Gen.
Q
YQ
H'
H
Func
.Gen.
EC
RD
1
G'
H'
Y
S/R
Control
DIN
F'
G'
SD
Q
D
XQ
H'
H'
K
SD
D
1
EC
RD
X
F'
25
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
“Look Up Tables”
La logique combinatoire est stockée dans une “LUT” SRAM de 16x1 bit
Exemple:
Look Up Table
4-bit address
Combinatorial Logic
A
B
A B C D
Z
C
D
La capacité dépend du nombre
d’entrées, pas de la complexité de
l’équation
On peut utiliser chaque
générateur, soit comme fonction
logique, soit comme SRAM
double-port rapide
WE
G4
G3
G2
G1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
0
0
0
1
0
1
0
1
Z
0
0
0
1
1
1
(2 4 )
2
= 64K !
. . .
1
1
1
1
1
1
1
1
0
0
1
1
0
1
0
1
0
0
0
1
G
Func.
Gen.
26
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Bloc Entrée/Sortie (I/O) XC4000
Les aires en gris ne figurent pas dans la série XC4000E
27
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Routage des FPGA Xilinx
1) Interconnexion Directe Rapide (Fast Direct Interconnect) CLB vers CLB
2) Interconnexions d’usage général (General Purpose Interconnect) par des
matrices de commutation
3) “Long Lines”
—
—
—
Réparties autour du circuit
Clocks globales, faible
temps de montée
2 “Tri-states” par CLB pour
les bus
CLB
CLB
Switch
Matrix
CLB
CLB
Switch
Matrix
CLB
CLB
CLB
CLB
28
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Autres ressources des FPGA
Buffers “Tri-state” pour les BUS (BUFT’s)
Clock Globale et “buffers” rapides (BUFG’s)
Decodeurs Larges (DECODEx)
Oscillateur Interne (OSC4)
Reset Global pour toutes les bascules et Latches (STARTUP)
Ressources spéciales des CLB
—
—
—
Logic “Fast Carry” à l’intérieur des CLB
RAM Double Port Synchrone
Logique “Boundary Scan” (JTAG)
29
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Vue interne d’un circuit
Programmable Interconnect Points, PIPs (Blanc)
Matrice
“Switch”
Routed Wires (Bleu)
Interconnexion
Directe
(Vert)
CLB
(Rouge)
“Long Lines”
(Violet)
30
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Famille XC4000XL
4005XL
4010XL
4013XL
4020XL
4028XL
Cellules
466
950
1,368
1,862
2,432
Typ Gate Range*
3 - 9K
7-20K
10-30K
13-40K
18-50K
Max. RAM bits
6K
13K
18K
25K
33K
I/O
Initial Packages
112
PC84
PQ100
PQ160
PQ208
160
PC84
PQ100
PQ160
PQ208
192
224
256
PQ160
PQ208
PQ240
BG256
PQ160
PQ208
PQ240
BG256
BG352
BG352
(Logic + Select-RAM)
(no Logic)
BG256
* 20-25% of CLBs as RAM
Cellules
Typ Gate Range*
(Logic + Select-RAM)
Max. RAM bits
(no Logic)
I/O
Initial packages
* 25-30% of CLBs as RAM
HQ208
HQ240
4036XL
4044XL
4052XL
4062XL
4085XL
40125XV
3,078
22-65K
3,800
27-80K
4,598
33-100K
5,472
40-130K
7,448
55-180K
10,982
78-250K
42K
51K
62K
74K
100K
158K
288
HQ208
HQ240
BG352
BG432
PG411
320
352
384
448
544
HQ240
HQ240
HQ240
BG432
PG411
BG560
BG432
PG411
BG560
BG432
PG475
BG560
PG559
BG560
PG559
31
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Choix CPLD ou FPGA?
CPLD
FPGA
Non-volatil
Reconfiguration par SRAM
Test JTAG
“fan-in” important
Excellent pour architecture de
type “computer”, DSP, systèmes
séquentiels
Compteurs et FSM rapides
“Design Flow” de type ASIC
Logique Combinatoire
Cours “avancée”
“Projets étudiants”, cours de
base
Largement utilisé
Logique de Contrôle
Nécessite une PROM pour
fonctionnement non-volatil
32
Logiciels de configuration et développement
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Base Logicielle Xilinx
ALLIANCE Series
Software Backplane
Foundation Series
Librairies et Interfaces
des vendeurs de CAO
Implémentation
(logiciel) “Mapping”,
Placement, Routage,
Génération des bits de
programmation
Outils complets
Avec schématique,
simulation, synthèse
VHDL et Verilog
34
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
“Flow” de conception
Design Entry
HDL or Schematic
Synthèse ou
Générateur de “Netlist”
Simulation
Fonctionnelle
“Netlist”
Implémentation
Fichier
BIT
Configuration
Rapports
“Netlist” de
Simulation
Simulation “Timing”
35
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Outils de conception
Outils standard (CAO), entrée et vérification
Les outils d’Implémentation Xilinx implementent le système
—
—
—
—
—
Le système est optimisé (performance et surface)
Interface graphique ou ligne de commande (BATCH)
Accès facile vers les autres outils
Gestion et “tracage” des différentes versions
~
Foundation
ou Alliance
Functional Simulation
Design
Entry
Schematic, State Mach., HDL
Code, LogiBLOX, CORE Gen
Simulator
Back Annotation
M1 Design Manager
Xilinx
Verification
Static Timing Analysis,
In-Circuit Testing
Design Implementation
36
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Support des partenaires et librairies
Xilinx supporte les environnements de simulation et d’entrée suivants :
—
—
—
Synopsys, Cadence, Mentor Graphics, Aldec (Foundation)
Viewlogic, Synplicity, OrCad, Model Technologies, Synario, Exemplar et autres
fournisseurs de librairries et interfaces
Les fichiers sont aux formats standard de l’Industrie :
–
–
–
VHDL, Verilog, et netlist EDIF
SDF “Standard Delay files”
Librairies VITAL (VHDL Initiative Towards Asic Libraries)
Les librairies Xilinx
—
—
Composants optimisés pour être utilisés dans tout FPGA ou CPLD Xilinx
Large jeu de fonctions
–
–
—
Comparateurs, Fonctions Arithmétiques, mémoires
Interfaces DSP et PCI
Facile à utiliser avec ABEL, VHDL, Verilog, saisie de schéma
37
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Libraries, Macros & Attributes
Les librairies sont communes pour tous les points d’entrée ( text, schéma, Foundation,
Synopsys, Viewlogic, etc.)
—
Librairies Unifiées :
–
—
Fonctions booléennes, Circuits TTL,
Registres, Additionneurs, RAM,
fonctions de base
Librairies “LogiBlox” :
–
–
Blocs de tailla variable pour les
additionneurs, registres, RAM, ROM,
etc.
Les paramètres sont définis par des
attributs du composant
Les “interfaces” des librairies sont spécifiques à chaque point d’entrée
Les attributs sont des paramètres de propriété des éléments (composants)
Le guide “Online” donne les explications complètes et détaillées
38
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Technologie “Core Design”
Création optimale de “Core” & Fourniture de “Core” externe
Data sheets
“Cores” paramétrables
CoreLINX:
Outils Web pour
télécharger des
nouveaux “Cores”
SystemLINX:
Outils systèmes de partenaires en liaison directe avec le “core generator”
39
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Introduction aux outils “Foundation” Xilinx
“User - Friendly”
Standard de l’Industrie
Caractéristiques:
—
—
—
—
—
Schematique (partenariat avecla compagnie Aldec)
IEEE VHDL, Verilog, ABEL
Editeur de Machine d’états graphique
Simulation Interactive
Partenariat exclusif avec Synopsys, “leader” mondial de la synthèse logique
Synopsys
Aldec
Xilinx
40
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Fenêtre de départ : “Project Manager”
Intègre tout les outils au sein de la plateforme d’entrée
FSM
HDL
Schéma
41
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Interface saisie de schéma
42
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Entrées ABEL et VHDL textuelles
A partir du menu schéma (ou la
comande “HDL Editor”),
Hierarchy -> New Symbol
Wizard… pour la création.
Choix de l’éditeur HDL & Assistant
du langage pour apprendre à partir
d’exemples.
Synthèse vers fichier EDIF.
1
5
4
3
2
43
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Editeur de machines d’états graphique
Relation directe avec la machine
d’état (Etats, transitions, etc...)
Synthèse de la Machine en ABEL ou
VHDL
Visualisation du code généré par
l’éditeur HDL
Création automatique du symbole
pour utilisation dans l’outil de
schéma
44
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Simulation
• Génération des
“stimulus” facile et
rapide
– Commande par clavier
(“Toggle”)
– Clock intégrée
– Formules paramétrables
• “Debugging” aisé
– Visualisation des traces
– Ajout ou retrait des
signaux facile
– Accès au simulateur du
schéma
– Codage des valeurs par
couleur dans le schéma
• Editeur de Script
45
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Que dire de l’implémentation ?
Le process est un peu plus que “Place & Route”
Il y a plusieurs phases
— Translation: Combinaison des fichiers multiples en une seule “Netlist”
— “Mapping”: Affectation des symboles logiques de la “Netlist” (Portes et
fonctions) en terme de composants physiques (CLB et IOB)
— Place & Route: Placement des composants dans les CLB sur le circuit,
connexion, et extraction des rapports de temps de propagation (délais)
— “Timing” : Génération d’une “Netlist” rétro-annotée avec les délais
extraits pour les outils de simulation
— Configuration: Génération du “bitstream” (flow de bits) pour la
configuration du circuit
46
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Terminologie utilisée
Projet
—
Fichier source, a un répertoire de travail et une famille associée
Version
—
—
Une translation par les outils Xilinx (Netlist) du (des) schéma(s)
Il y a une nouvelle version à chaque modification
Révision
—
—
Une implémentation d’une Netlist Xilinx
Plusieurs révisions correspondent à des options différentes en terme
d’implémentation
Type du circuit, “Part type”
—
Spécifié lors de la translation (version); peut être modifié lors d’une
nouvelle version
47
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Boite à outils des Programmes
Moteur de conception “Flow Engine”
—
Controle les points de départ/d’arrêt et les
options utilisateurs
Analyseur de Temps “Timing Analyzer”
—
Rapport sur les délais internes
Formateur de fichier de PROM “PROM File
Formatter”
—
Création du fichier de programmation de la
PROM
“Deboggueur” Matériel “Hardware Debugger”
—
Télécharge la configuration par le câble
“Xchecker”, série ou JTAG
Editeur de circuit “EPIC Design Editor”
—
Vue du routage au niveau circuit interne
48
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Qu’est le moteur de conception (Flow
Engine) ?
Interface graphique vers les outils
d’implémentation Xlinx
— Implémentation avec un simple
CLICK OU
— Ajustement de l’implémentation par
l’intermédiaire d’un certain nombre
d’options
Intégré dans “Foundation Project Manager”
et “Alliance Design Manager”
— Ces deux outils proposent des
fonctions de gestion de projets
comme le contrôle de la version
— Le “Foundation Project Manager”
permet aussi l’accès aux points
d’entrée et aux outils de simulation
Translate
Map
Place & Route
Timing (Sim)
Configure
Flow Engine
Foundation Project Manager or
Alliance Design Manager
49
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Démarrage du “Flow Engine”
Fenêtre “Foundation Project Manager”
50
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
“Flow Engine”
Phases
d’Implementation
Etat de
l’Implementation
Messages
Bouttons de contrôle
51
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Fonctionnalités de la saisie
de schéma :
“Schematic Design”
52
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Sommaire
Introduction aux librairies
(bibliothèques) Unifiées Xilinx
Techniques et astuces pour une
conception réussie
53
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Librairies Xilinx Unifiées
La librairie unifiée contient des composants de
taille FIXE UNIQUEMENT
Pour une fonction avec moins d’entrées, ne
connecter que celles utilisées, l’optimiseur
supprimera la logique inutilisée
Les composants sont optimisés pour chaque
famille de produit
—
Choisir la famille dans la saisie de schéma
54
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Contenu des librairies Unifiées
Fonctions Logiques Combinatoires (comme les portes AND,
INV, NAND, OR, NOR, XNOR, et XOR)
— Rangées par taille (nombre d’entrées)
Bascules, “Buffers” d’I/O, “buffers” “tri-state”, et d’autres
symboles spécifiques aux architectures
Composants plus larges de taille fixe avec des options
(compteurs, additionneurs, accumulateurs, etc.)
55
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Composants de type “Architecture”
BUFT - “buffers” internes tri-state
BUFG - “global clock buffer” pour les signaux à fort “fan-out”
IBUF/OBUF - “input/output buffers” pour le “bypass” des
registres des IOB
IPAD/OPAD - “input/output pads” nécessaire pour les
affectations des entrées/sorties aux broches du circuit
ILD/IFD/OFD - Latch” et Bascule des IOB
56
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Composants “larges”
Fonctions Arithmetiques - “Full Adders”, “Accumulators”, et
“Adder/Subtractors”
Comparateurs - identité et amplitude
Compteurs - binaire, BCD, Johnson, Ripple, et Carry
Registres de données et à décalage
Decodeurs et Multiplexeurs
Bascules, Latches - D, T, JK, à chargement, contrôle
asynchrone/synchrone
57
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Composants spéciaux
Composant “Boundary Scan”
— BSCAN
Global Reset
— STARTUP permet l’accès au réseau global set/reset et au réseau
“tri-state” global
Oscillateur intégré
— OSC4 permet l’utilisation d’une horloge interne pour des
applications ne nécessitant pas de précision particulière
58
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Conventions de notation
Fonctions combinatoires
— <Fonction_logique><nombre_d’entrées> (AND2, AND3, NOR4)
— On peut toujours insérer un inverseur (logique négative, positive)
Composants
— <Fonction><Largeur><Entrées_de_contrôle>
— CB4CLE = Compteur, Binaire, 4 bits, Clear, Load, Enable
— Le entrées de contrôle sont référencés par une seule lettre
–
–
–
C = clear asynchrone
R = reset asynchrone
Il sont listés par ordre de priorité
59
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Sommaire (2)
Introduction aux librairies
(bibliothèques) Unifiées Xilinx
Techniques et astuces pour une
conception réussie
60
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Noms des composants, “Instance”
Si vous n’en mettez pas, ils seront donnés par défaut, par
exemple : $I152
— Les rapports sont plus faciles à lire (surtout en cas d’erreurs) si les
noms sont “parlants”
Donnez un nom aux lignes (bus et fils) connectés aux bascules
Un port IOB a comme nom, le nom du fil entre la broche et la
primitive de la fonction IOB
CLB Q2
IOB IN1
IN1
D Q
Q2
61
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Noms des composants
Composants et fils particulièrement importants ( et donc à
nommer explicitement) :
— Blocs hiérarchiques
— Controles des bascules
–
Clock, clock-enables, resets, etc.
— Sorties des bascules
— L’entrée et la sortie des “buffers” de sortie
— Les signaux particuliers
62
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Utiliser des caractères et noms lisibles
Caractères permis
— Alphanumeriques : A - Z, a - z, 0 - 9, souligné _, tiret — Caractères réservés
–
Pour les bus <>
–
“Slash” / pour les hiérarchies
–
Le signe Dollar $ pour les noms d’instances
Au moins une lettre
Les noms peuvent être “case-sensitive”
— Dépend du point d’entrée et/ou du langage
63
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Guide pour les structures hiérarchiques
Mettre les I/O pads au niveau le plus haut de la hiérarchie
Les noms d’instance (composants) conservent les
informations hiérarchiques
— SUB2/NET5
Il n’y a pas de limite au nombre de niveaux
— Cependant, plusieurs niveaux impliquent des noms plus longs
64
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Introduction à la
conception des FPGA
65
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Objectifs
Utiliser de manière efficace les structures
hiérarchiques
Améliorer la performance et l’efficacité des circuits
en appliquant des techniques de conception
majoritairement synchrones
66
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Sommaire (1)
Conception Hiérarchique
Conception Synchrone
67
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Conception Hiérarchique
Niveau HAUT
Définition des I/O
Machines d’état
“Data Paths”
One-hot
Binaire
Enumération
Pipelines
MX/ DEMX
Arithmétique
Compteurs
ADD/SUBB
Décalage
Accumulateurs
Blocs fonctionnels
Taille standard
RAMS
Fonctions Spécifiques
Logiblox
RAM
“Cores”
Coregen
Fonctions Paramétrables
FIFOs
Filtres FIR
RAM
Ré-utilisation, compréhension,
“Debug” aisé
68
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Intérêts de l’utilisation de la conception
hiérarchique
Choix du meilleur mode d’entrée par rapport au type de
logique concerné
Lecture aisée de la conception “Design readability”
— Compréhension des fonctionnalités et des chemins de données
— “Debug” plus facileEasy to reuse parts of a design
Réutilisation aisée de certaines parties
Utilisation efficace des outils de synthèse
— Voir la section concernée
69
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Méthode de conception (Point d’entrée)
HDL pour :
— Machines d’état
— Logique de contrôle
— Fonctions avec bus
Schémas pour :
— Niveau haut (Regroupement “visuel”)
— Logique en chemins de données (Data Path)
— Logique à optimiser “manuellement”
“Mixed mode” fait le mélange des deux
70
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Lecture aisée de la hiérarchie
Choisir des blocs hiérarchiques avec :
— Minimum de connexions entre les blocs
— Donnée logiques entre chaque bloc
Garder séparé les différents domaines en terme d’horloge
— Permet de voir clairement les différentes interactions (si il y en a)
Choisir des noms simples et descriptifs (pour les blocs et les
signaux)
71
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
“Réutilisation”
Construire un ensemble de blocs accessibles par tous les
concepteurs
—
—
—
—
“Bancs “ de registres
FIFOs
Fonctions “standard”
Fonctions utilisateurs communes à l’entreprise
Nommer les blocs par fonction et par famille cible (Xilinx)
— Permet une localisation facile Easy to locate the block you want
— Exemple: REG_4X8_SP (banc de regsitres 4x 8-bit r, famille
Spartan)
Prévoir un répertoire utilisateur différent du répertoire d’install
— Evite les problèmes lors des “upgrade”
72
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Sommaire (2)
Conception Hiérarchique
Conception Synchrone
73
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Conception synchrone
Pourquoi faire du synchrone?
Application aux FPGA Xilinx
74
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Eléments de réponse ?
Les circuits synchrones sont plus fiables
— Les évènements sont échantillonnés par des front d’horloge à des
intervalles bien définis
— Les sorties d’un étage ont un cycle complet d’horloge pour atteindre
l’étage suivant
–
Les décalages pour les arrivées de données sont tolérés dans la
même période d’horloge
Les circuits asynchrones sont moins fiables
— Un délai peut avoir une valeur spécifique (par exemple 12ns?)
— Des délais multiples peuvent être en relation (par ex.. DATA arrive
5ns avant SELECT)
75
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Quelques “clés”
Pour Xilinx FPGA
Réduction des problèmes d’horloge (“Clock skew”)
Diviseurs
Comment éviter les “glitches” entre les clock et les
Set/Reset asynchrone
Le réseau global Set/Reset
Comment sélectionner l’encodage pour une machine
d’état
Comment gérer les logiques à retenu
Comment construire des compteurs efficaces
76
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
“Clock Skew”
INPUT
3.1
D Q_A
CLOCK
3.0
3.1 D Q_B
3.0
12.5
A
3.3 D Q_C
B
C
Ce registre ne fonctionne pas à cause des délais d’horloge
2 cycles
3 cycles
Clock
A&C
Clock
B Clock
Q_A
Q_A
Q_B
Q_B
Q_C
Q_C
Fonctionnement souhaité
Fonctionnement en fonction des délais
77
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Utilisation du “Global Buffer” pour réduire
les effets de délai sur les horloges
“Global buffers” sont connectés à des lignes spécifiques
— Ces lignes minimisent les délais de propagation
Tous les FPGAs Xilinx intègrent des “global buffers”
Différent types
— XC4000E/L et Spartan ont 4 BUFGPs et 4 BUFGSs
— XC4000EX/XL/XV ont 8 BUFGLSs
— Virtex contient 4 BUFGs et BUFGDLLs
Vous pouvez toujours choisir comme composant un symbole de
type BUFG et le logiciel choisira pour vous le “buffer” approprié
pour la famille choisie
— La plupart des outils de synthèse acceptent les paramètres de type
“glmobal buffer” pour les signaux d’horloge
78
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Diviseur d’horloge classique
On introduit un délai entre CLK1 et CLK2
L’utilisation de BUFG doit réduire le délai sur CLK2
D
D
Q
CLK2
Q
BUFG
CLK1
BUFG
79
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Recommandation pour les diviseurs
Pas de délai dans ce cas (Utilisation du clock enable CE)
D
Q
CLK2_CE
D
Q
CE
CLK1
BUFG
80
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Eviter les transitoires sur les horloges (“Glitch”)
Les bascules répondent très rapidement, donc elles peuvent interpréter
un transitoire comme étant un signal actif
Ne jamais alimenter une bascule par une sortie de logique combinatoire
— Also known as “gating the clock”
MSB
0111
0111
1111
1000 peut passer par :
1000 car le MSB bascule plus vite
MSB
Délai plus court
FF
LSB
Binary
Counter
Transitoire possible ici
81
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Exercice
Compléter le circuit pour avoir la fonction précédente sans
transitoire sur l’horloge
INPUT
D
D
Q3
Q2
Q1
CE
Q
Q0
FF
CLOCK
Counter
82
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Réponse
Utilsation du “Clock Enable”
INPUT
D
D
Q3
Q2
Q1
Q
CE
Q0
FF
CLOCK
Counter
83
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Eviter les transitoires Set/Reset
Ces transitoires sur entrées asynchrones peuvent donner un
fonctionement incorrect
Clear Asynchrone
INPUT
Binary
Counter
Q[x]
FF
Q
D
CLR
RESET
Q[0]
CLOCK
84
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Solution
Convertir en Reset/Set synchrone si possible
Reset Synchrone
INPUT
Binary
Counter
Q[x]
FF
Q
D
R
RESET
Q[0]
CLOCK
85
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Set/Reset global (GSR)
Est connecté automatiquement à toutes les
bascules (CLB et IOB) par un réseau
spécifique
—
Permet d’économiser des ressources de
routage
On utilise GSR en “instantiant” la primitive
STARTUP
—
Q1
GSR
Q2
GTS
STARTUP
CLK
Q3
Q4
DoneIn
Quelques outils de synthèse intègrent GSR
86
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Global Set/Reset
A utiliser si vous souhaitez un signal externe de remise à
zéro général (voire sur le modèle RESET de CPU)
Ne pas utiliser si :
— Vous utilisez la famille Virtex
–
Beaucoup de routage disponible, et plus rapide que GSR
— Vous n’avez pas de Reset général
— Vous voulez quelques set/reset synchrones
— Vous ne voulez pas de reset sur les bascules IOB
87
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Encodage des machines d’état
Il y a principalement 2 types d’encodage
Encodage complet: possible par minimum de bascules
—
—
Exemple: S1 = 00, S2 = 01, S3 = 10, S4=11
L’affectation des états peut suivre une séquence binaire simple (suite
binaire classique) ou plus complexed (Gray, Johnson,etc..)
Encodage “One-Hot” : Une bascule par état
—
S1 = 0001, S2 = 0010, S3 = 0100, S4 = 1000
88
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Considérations sur l’encodage
Complet
— Moins de bascules
— Nécessite de la logique de décodage (pour les états)
–
–
Risque d’avoir plusieurs niveaux logiques (baisse des performances)
Une affectation soignée des états peut simplifier le décodage
“One-Hot”
— Plus de bascules (mais il y en a beaucoup de disponibles)
— Pas de logique de décodage pour les états (1:actif; 0:inactif)
–
Peut simplifier la logique de décodage de l’état suivant (augmentation
des performances)
Les autres schémas s’intercalent entre ces deux extrémités
— Permettant un compromis vitesse/surface éventuellement
89
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Les machines d’état et les FPGA
Pour des performances sûres, utiliser l’encodage “One-Hot”
— Il y a pléthore de bascules dans les FPGA
Famille Virtex: Il existe un bloc “SelectRAM” pour
implémenter les machines d’état
— La RAM est initialisée avec un programme de type “microcode”
(Grafcet cablé)
RAM Contents
Addresse RAM =
Etat actuel + Entrées de la machine d’état
Etat suivant
Sorties de la machine
90
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Logique de retenue (“Carry”)
L’utilisation de la logique de retenue augmente les performances
—
Exemples XC4003E-3
–
–
–
–
Additionneur 16-bit sans carry
Additionneur 16-bit avec carry
Additionneur 32-bit sans carry
Additionneur 32-bit avec carry
10 CLBs & 38Mhz
8 CLBs & 63Mhz
21 CLBs & 27Mhz
17 CLBs & 44Mhz
Accès à la logique avec retenue (“Carry logic”)
— “Macros” de bibliothèques avec “carry logic” (x=taille)
–
–
–
–
–
Accumulateurs ACCx
Additionneurs ADDx
Additionneurs/Soustracteurs ADSUx
Compteurs CCx
Comparateurs COMPMCx
91
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Le comportemental
La plupart des outils de synthèse intégrent les possibilités de
retenue pour les fonctions arithmétiques
— Addition (SUM <= A + B)
— Soustraction (DIFF <= A - B)
— Comparaisons (if A < B then…)
92
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Efficacité des compteurs
Rapide TC
Petite
Taille
CE
Compteur
Grande taille
Avec Carry
Lente
Q0
10-bit SR
Q6
Q9
Pré-diviseur pour les compteurs rapides, sans chargement
— Les LSB basulent + rapidement
— Les bits restants ont plus de temps pour se positionner
Utiliser le code Gray ou Johnson en cas de besoind e décodage des sorties
— Un bit change par transition ce qui élimine les transitoires (“glitches”)
Utiliser un registre à décalage à retour linéaire pour la rapidité
— Utile si on a juste besoin de l’état final
— De même quand toute séquence “régulière” est nécessaire (par exemple un
compteur d’adresse de FIFO)
93
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
La synthèse peut-elle être
efficace
94
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Sommaire
Introduction à la synthèse logique
Astuces de synthèse
95
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Méthodologie “HDL” pour Xilinx
Il faut comprendre ou intégrer deux notions essentielles:
1 L’imbrication des styles de codage
2 Tirer avantage de l’architecture (Xilinx ici)
Pour les circuits Xilinx, les particularités interviennent
surtout pour les familles Virtex
96
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
“Design Flow” de synthèse
Ce procédé consiste en deux étapes:
— Transformation en logique booléenne de type générique, indépendante
des contraintes liées à l’ASIC ou au FPGA choisi
— Optimisation spécifique à une architecture (par ex. Xilinx), donc sous
contraintes et dépendant des possibilités “Hardware” (Silicium)
Après l’étape de synthèse, on est “paré” pour l’implémentation
97
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Qu’arrive-t-il concrètement?
Prenons un exemple simple
Cet exemple conduit à une “Netlist”, puis une implémentation
assign BUS12 = (SEL == 0)
? ADD1 : ADD2;
Synthèse
always @(posedge CLK)
ADD123 <= BUS12 + ADD3;
always @ (posedge CLK)
INT1 <= ADD123 & ABUS;
always @ (posedge CLK)
DOUT <= INT1 & BBUS;
endmodule
Implémentation
98
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Sommaire
Introduction à la synthèse logique
Astuces de synthèse
99
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Astuces ?
Les choix faits à l’étape de synthèse peuvent influencer
grandement l’implémentation
— C’est à cet emplacement que votre stratégie de codage “HDL”
a une influence
Quelles sont les décisions importantes?
—
—
—
—
“Instantiation” ou “codage logiciel”
Choix de la hiérarchie initiale
Utilisation des parenthèses pour contrôler la structure finale e
Connaître le meilleur type de codage par rapport à l’outil de
synthèse
100
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
“Instantiation”
Les composants créés par le générateur de coeurs
(“core”) et les autres boites noires doivent être
“instantiés”.
Certaines architectures spécifiques doivent aussi être
instantiées
RAM/ROM
Bscan
SRL16
Readback
WOR
MUXF6
OSC
WAND
DLL
101
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Instantiation ou référence logicielle
Il faut “instantier” un composant quand on sait exactement
quelle ressource est nécessaire.
Xilinx recommande la référence logicielle quand c’est
possible
— Cela assure la portabilité (du code)
— Les outils de synthèse ne peuvent pas estimer les délais pour les
composnats “instantiés”.
Xilinx recommande l’utilisation du système “Core Generator”
pour créer les “ALU”, multiplieurs rapides, Filtres FIR, etc...
Qui seront “instantiés” dans le système.
102
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Guides pour la hiérarchie
Guides
— Utiliser la hiérarchie pour isoler les technologies
–
–
–
Placer les blocs spécifiques à une technologie de manière
hiérarchique pour pouvoir les ré-utiliser
Tous les opérateurs arithmétiques doivent être dans le même
process (ou blocs) pour permettre un partage des ressources
Isoler les blocs logiques (machines d’état, logique combinatoire,
“data paths”, etc)
–
Des optimisations particulières peivent être mises en oeuvre dans ce
cas
— Le nombre maximum de lignes par bloc doit être inférieur à 400
–
Les modules sont plus faciles à lire, comprendre, synthétiser et
“debogguer”
103
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Guides pour la hiérarchie (suite)
“Une bonne hiérarchie”
— Se donner des limites entre les différents modules pour minimiser
le “routage” entre les modules
–
–
Les systèmes sont plus faciles à lire et à tester
Les résultats sont répétitifs
— Séparer les horloges par hiérarchie
–
–
Les intercations entre horloges sont ainsi clairement définies
Il est possible de tester indépendamment les différentes sections
avant leur intégration dans le système complet
104
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Exemple à ne pas suivre
Logic A
Bloc 1
DQ
Logic B
Logic C
DQ
Bloc 2
L’outil de synthèse doit décider comment optimiser les
logiques B et C ensemble
— Cela peut donner des niveaux logiques supplémentaires
Quand on simule le bloc 2, on ne connait pas les délais
intoduits par le bloc 1
105
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Une solution à ce problème
Logic A
Block 1
D Q
Logic B & C
D Q
Block 2
L’outil de synthèse n’a pas à prendre de décision
B & C seront optimisés de la même manière
Quand on simule le bloc 2, on sait que le délai introduit par le
bloc 1 correspond à un délai de type “ Clock to Q”.
106
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
De l’utilisation des parenthèses
Quels sont les avantages et inconvénients de ces deux
exemples?
Exemple
Exemple1:1:Pas
Pas de
deparentheses
parentheses
OUT1
<=
I1
OUT1 <= I1 ++ I2
I2 ++ I3
I3 ++ I4
I4
Exemple
Exemple2:2:Avec
Avecdes
desparenthèses
parenthèses
OUT2
<=
(I1
+
I2)
OUT2 <= (I1 + I2) ++ (I3
(I3 ++ I4)
I4)
I1
I1
I2
I2
OUT2
I3
I4
I3
OUT1
I4
107
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Réponses
Quels sont les avantages et inconvénients de ces deux
exemples? ?
— Le plus long chemin pour OUT1 est à travers 3 additionneurs
– Cette structure est utile si I4 arrive tardivement par rappoort aux autres
– On peut utiliser I4 pour les signaux qui changent le plus fréquemment
— Pour OUT2, on passe seulement à travers 2 additionneurs.
Exemple
Exemple1:1:Sans
Sansparenthèses
parenthèses
OUT1
<=
I1
OUT1 <= I1 ++ I2
I2 ++ I3
I3 ++ I4
I4
Exemple
Exemple2:2:Avec
Avecparenthèses
parenthèses
OUT2
OUT2 <=
<= (I1
(I1 ++ I2)
I2) ++ (I3
(I3 ++ I4)
I4)
I1
I1
I2
I2
OUT2
I3
I4
I3
OUT1
I4
108
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Il faut expérimenter avec le
“synthétiseur”
Apprendre ce qui se passe pour des petits systèmes
Prendre une fonction “complexe”
— La coder de différentes manières
— Essayer d’instantire des composants
— Essayer différentes options de synthèse
Lancer cet exemple à travers l’outil de synthèse et voir ce
qui se passe
— Qui est le plus rapide ?, le plus petit en taille ?
— Quelle méthode donne globalement les meilleurs résultats ?
109
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Expérimentation ?
De manière générale, ne laisser pas l’outil de synthèse
décier à votre place
— Prendre les décisions de choix des fonctions avant le codage
— Soyer familier des problèmes de vitesse, surface, flexilbilité qui
peuvent vous permettre d’atteindre vos objectifs
Plus votre horloge est rapide, plus votre connaissance de
la technologie utilisée est primordiale
110
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
La synthèse de type “Bottom-Up”
Construire un jeu de fonctions standards ré-utilisables
— MUXs, Bancs de registres, FIFOs, additionneurs, compteurs et
autres fonctions standard
Compiler du bas vers le haut
— Synthetiser chaque module de niveau bas séparément la première
fois
— Mélanger ces blocs de niveau bas pour avoir une estimation des
ressources par module et par sous-section
— S’assurer de l’adéquation “bloc-spécification” avant de l’ajouter au
système complet (taille correcte, vitesse ? , surface?)
111
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
La configuration des FPGA
112
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Sommaire
Introduction
Le procédé de configuration des FPGA
Modes Maître série et esclave
“Daisy-chains”
113
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Introduction
Qu’est ce que la configuration?
— C’est le chargement des données dans le FPGA
Source
Sourcede
de
Données
Données
de
deconfiguration
configuration
FPGA
FPGA
Logique
Logique
de
decontrôle
contrôle
(optionelle)
(optionelle)
114
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Introduction
Quand configure-t-on?
— Mise sous tension
— A la demande
Pourquoi faut-il configurer?
— La mémoire de configuration est volatile (SRAM)
Qu’est-til nécessaire de savoir à ce sujet?
— Ce qui se passe
— Comment définir les modes de configuration (et les “daisy-chains”)?
— Comment identifier les problèmes ?
115
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Sommaire
Introduction
Le procédé de configuration des FPGA
Modes Maître série et esclave
“Daisy-chains”
116
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Procédé de configuration
Il faut connaître le fonctionnement :
— Modes de configuration
— Broches de configuration
117
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Modes de configuration
Le mode de configuration spécifie comment le FPGA va
interagir avec :
— Les données source
— La logique de contrôle externe (si elle existe)
On peut choisir entre :
—
—
—
—
Modes série
Mode SelectMAP
Mode “Boundary Scan”
Voire plus (dépend des familles de FPGA)
118
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Modes de configuration:
Modes série
Les données sont chargées bit par bit
(CCLK est l’horloge)
Maître série (“Master serial”)
— Le FPGA pilote la clock de configuration
(CCLK)
— Le FPGA fournit toute la logique de
contrôle
Esclave série (“Slave serial”)
— Nécessite une logique de contrôle
externe pour générer CCLK
– Microprocesseur
– Cable “Xilinx serial download cable”
– Un autre FPGA (“Maître”)
CCLK
Serial
Serial
Data
Data
Serial
Serial
Data
Data
FPGA
FPGA
Data
Data
FPGA
FPGA
CCLK
Control
Control
Logic
Logic
119
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Configuration :
Mode SelectMAP
CCLK est pilotée par une logique
externe
Les données sont chargées 1
octet par CCLK
Byte-Wide
Byte-Wide
Data
Data
Data
Control Signals
FPGA
FPGA
CCLK
Control
Control
Logic
Logic
120
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Mode de configuration :
“Boundary Scan”
Nécessite logique de contrôle
externe
Les signaux de contrôle et les
données sont présentés sur les
broches “boundary scan” (TDI,
TMS, TCK)
Serial
Serial
Data
Data
Data
FPGA
FPGA
Control Signals
Les données sont chargées 1
bit par TCK
Control
Control
Logic
Logic
121
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Broches de Configuration
Des broches spécifiques sont utilisées sur le FPGA pendant la
configuration
Des broches n’ont pas la même fonction selon le mode de
configuration
— Par Exemple: CCLK est une sortie pour certains modes et une entrée
pour d’autres
Certaines broches sont utilisés uniquement dans des modes
particuliers
— Exemple: CCLK n’est pas utilisée en mode “Boundary Scan”
122
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Description des broches de configuration (1)
Broches de mode “Mode Pins” (M0, M1, M2)
— Entrées de définitions du mode de configuration à utiliser
PROGRAM
— Broche d’entrée active à l’état bas qui initialise la configuration
CCLK (Configuration Clock)
— Entrée ou Sortie, dépend du mode de configuration
— Fréquence jusqu’à 10MHz (voir le “Data Book” de la famille concernée))
DIN
— Entrée série pour les données de configuration
123
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Description des broches de configuration (2)
DOUT
— Sortie vers le circuit suivant en “daisy chain”
— Utilisée uniquement en “daisy-chain”
INIT
— Broche bi-directionnelle (Drain ouvert)
— Drapeau d’erreur et de stabilisation d’alimentation
DONE
— Broche bi-directionnelle (Drain ouvert)
— Indique la fin du processus de configuration
Quelques broches supplémentaires sont utilisées de manière
spécifique (fonction du mode de configuration)
124
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Procédé de configuration
Quatre étapes majeures:
Configuration
Memory
Clear
— Reset de la mémoire de
configuration
— Initialisation
Initialization
— Chargement des données
de configuration
— Démarrage
Load
Configuration
Data
Start-up
125
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Phase de reset de la mémoire
Inhibition des broches I/O avec
résistances optionnelles de
“pull-up”
No
VCCO_2
>1.0V?
Yes
INIT et DONE sont mises à
l’état bas
Clear
FPGA
Memory
No
La mémoire du FPGA est
remise à zéro
—
Test de la broche PROGRAM à
la fin de chaque passe
PROGRAM au niveau haut,on
reset une dernière fois
PROGRAM
High?
Yes
Clear
Memory
One More
Time
On passe à l’intialisation
Initialization
126
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Phase d’Initialisation
La broche INIT est relâchée
— On peut la maintenir au niveau bas de
manière externe pour donner un délai à la
configuration
Configuration
Memory
Clear
Release
INIT
On échantillonne les broches de mode
No
— Elles deviennent actives
INIT
High?
On charge les données de configuration
Yes
Sample
Mode
Pins
Load
Configuration
Data
127
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Phase de chargement de la configuration
Le FPGA commence à recevoir des
données
Un CRC est testé avant et après
chaque trame de données
—
En cas d’erreur, INIT est positionné à
l’état bas et le reste des données est
ignoré
Si le test CRC est correct, on passe
au démarrage (“start-up”)
Initialization
Load
Data Frames
CRC
Correct?
No
Pull INIT
Low
Yes
Start-Up
128
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Phase de démarrage
Phase de transition entre la configuration et le
fonctionnement normal
L’ordre des évènements est programmable
Load
Configuration
Data
Release
DONE
— Par l’intermédiaire des options du logiciel
La séquence par défaut est :
—
—
—
—
On relache la broche DONE
Toutes les I/O deviennent actives
Le “write enable” global est relaché
Le “Global reset” est relaché
Le FPGA est opérationnell
Activate
I/O Pins
Release
GWE
Release
GSR
FPGA is Operational
129
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Sommaire
Introduction
Le procédé de configuration des FPGA
Modes Maître série et esclave
“Daisy-chains”
130
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Mode maître série
Broches de mode à 0
Le FPGA pilote CCLK (sortie)
Flot de données bit par bit
(DIN)
Les données sont stockées
dans un PROM série
131
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Mode esclave série
Broches de mode à 1
Le FPGA reçoit CCLK (entrée)
Flot de données bit par bit
(DIN)
Mode utilisé avec le cable de
téléchargement série (PC vers
carte)
132
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Sommaire
Introduction
Le procédé de configuration des FPGA
Modes Maître série et esclave
“Daisy-chains”
133
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Rappel sur la “daisy-chain” ?
On peut connecter plusieurs FPGA en série pour la
configuration pour :
— Permettre la configuration de plusieurs circuits à partir d’une même
source
— Avoir le minimum de “routage” sur la carte
Le premier circuit de la chaine doit être en maître série ou en
esclave série
Tous les autres doivent être en esclave série
134
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Exemple de « daisy-chain »
Il faut combiner les fichiers de configuration dans la PROM (outils PROM File Formatter ou
PROMGen), les circuits sont programmés les uns à la suite des autres dans le sens de la chaîne
135
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Création de la “Daisy-Chain”
Connecter les broches PROGRAM
— Pour que tous les circuits soient (re)programmés ensemble
Connecter les broches CCLK
— Pour que les FPGA soient synchronisés ensemble par rapport aux
données de configuration
Connecter les broches DONE
— Pour que tous les FPGA démarrent ensemble
Connecter chaque DOUT au DIN du circuit suivant
— Pour assurer que chaque FPGA reçoit ses données de configuration
Connecter les broches INIT
— Pas obligatoire mais recommandé pour avoir un seul indicateur d’erreur
136
Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - [email protected]
Comment fonctionne la “daisy-chain”
Le premier FPGA est d’abord configuré en premier
— DOUT reste à 1 jusqu’au remplissage de la mémoire de
configurationl
— On passe ensuite au circuit suivant dans la chaine
La séquence de démarrage commence quand tous les
circuits sont configurés
137