introduction aux fpgas concepts de...
TRANSCRIPT
H.Boumeridja Département d’Infotronique
Avril 2012
---------------------------------
INTRODUCTION AUX FPGAS
CONCEPTS DE BASE, ARCHITECTURE
ET APPLICATIONS
-----------------------
POSITION DU PROBLÈME
ÉVOLUTION DE LA TECHNOLOGIE DES CIRCUITS FPGA
TECHNOLOGIE DE PROGRAMMATION ET USAGE DES CIRCUITS FPGA
TERMINOLOGIE: PROGRAMMABLE OU PROGRAMMÉE
FPGA: PASSÉ ET PRÉSENT
FPGA: DÉFINITION ET CARACTÉRISTIQUES
ARCHITECTURE DES FPGAS
STRUCTURE GÉNÉRALE DE SPARTAN ET DE VIRTEX
CONCEPTION ET IMPLÉMENTATION SUR FPGA
ANNEXE
PLAN
L’INTÉRÊT DES CIRCUITS LOGIQUES PROGRAMMABLES SE JUSTIFIE PAR :
LE COÛTS TRÈS IMPORTANT DES ASICS,
LE TEMPS DE DÉVELOPPEMENT D ’UN ASIC,
LA NON FLEXIBILITÉ DES SOLUTIONS ASIC,
« DÉMOCRATISATION » DES FPGA.
Position du problème
Evolution de la Technologie des Circuits FPGA XILINX
LES DIFFÉRENTES « FAMILLES » FPGA XILINX
* Produits obsolètes
Industrie FPGAs : Principaux Producteurs
Xilinx, Altera, Lattice, Actel.
Xilinx Inc. www.xilinx.com Altera Corp. www.altera.com Atmel Corp. www.atmel.com Lattice Semiconductor Corp. www.latticesemi.com Actel Corp. www.actel.com QuickLogic Corp. www.quicklogic.com
Circuits de Logique Programmable (Configurable): FPGA et Autres
FPGA
Technologie CMOS
Performances (fréquence, consommation, densité) bonnes
Temps de développement moyen (sur site)
Coût de développement limité
….et…
Description par langage normalisé
Portabilité
« Design re-use »
Technologie de Programmation Technologie de Programmation
& Usage FPGA
Dans un CLP, la programmation consiste à relier ou non 2 lignes de connexion.
Technologie de Programmation et Usage : FPGA
Technologie de Programmation et Usage : FPGA
La technologie originale utilisée pour les premiers dispositifs programmables, les mémoires ROM, étaient des fusibles. Le dispositif inclut un fusible à chaque lien programmable.
Le principe du fusible repose sur l’utilisation d’un métal conducteur qui fond et coupe le circuit lorsqu’il est chauffé par un courant électrique.
Pour programmer le dispositif, il faut appliquer une tension élevée (typiquement 2 à 3 fois la tension nominale du dispositif) à des pattes choisies.
Une fois les fusibles fondus, le circuit est programmé.
L’inconvénient principal de cette technologie est qu’on ne peut programmer le dispositif qu’une seule fois. Les fusibles occupent aussi beaucoup d’espace sur la puce. Cette technologie n’est plus utilisée.
1. FUSIBLE
PROGRAMMABLE UNE SEULE FOIS : SYSTÈMES CONFIGURABLES
Les anti-fusibles fonctionnent de façon contraire à un fusible.
Le dispositif non programmé ne contient que des liens qui ne sont pas encore
établis.
Pour effectuer une connexion, il faut faire passer un courant élevé à travers
l’anti-fusible pour fermer le circuit.
Technologie de Programmation et Usage FPGA
2. ANTI-FUSIBLE ou anti-fuse
Reprogrammable un grand nombre de fois => Systèmes Reconfigurables
Technologie de Programmation et Usage FPGA
L’acronyme SRAM signifie mémoire RAM statique ( porte 4 ou 6 transistors).
Elle a plusieurs avantages. Il est facile de programmer et d’effacer le dispositif.
Cependant, dès que l’alimentation est coupée, la puce perd toute son
information de configuration.
Ensuite, dans un système déployé, le fichier des bits de configuration doit être
entreposé dans une mémoire ROM sur la planchette. Cette mémoire peut être lue
par quiconque voudrait voler la propriété intellectuelle du design.
3. SRAM
Les manufacturiers de FPGA permettent de chiffrer le fichier et d’entreposer la clé dans un registre spécial non volatile sur le FPGA.
Malgré tous ces désavantages, la technologie SRAM reste de loin la plus
populaire pour les applications générales.
Technologie de Programmation et Usage FPGA
RÉSUMÉ DES TECHNOLOGIES DE PROGRAMMATION POUR FPGA
USAGE USAGE
PRODUCTION DʼUN FAIBLE VOLUME DES CIRCUITS
FABRICATION DES PROTOTYPES: IMPLÉMENTATION ET TEST DES CIRCUITS AVANT LA
FABRICATION DʼASIC.
CONCEPTION DES SYSTÈMES RECONFIGURABLES.
PRODUCTION DʼUN FAIBLE VOLUME DES CIRCUITS
FABRICATION DES PROTOTYPES: IMPLÉMENTATION ET TEST DES CIRCUITS AVANT LA
FABRICATION DʼASIC.
CONCEPTION DES SYSTÈMES RECONFIGURABLES.
TERMINOLOGIE:
PROGRAMMÉE ET PROGRAMMABLE?
TERMINOLOGIE:
PROGRAMMÉE ET PROGRAMMABLE?
Logique programmée = configuration "temporelle"
Exécution d'instructions l'une à la suite de l'autre.
Logique programmable = configuration "spatiale"
Opérations en parallèle, dont l'interconnexion (variable) fixe la
fonction.
FPGA Xilinx : Passé et Présent FPGA Xilinx : Passé et Présent
1984 : Sur le marché.
Évolution: familles 2000, 3000, 4000, Spartan, Virtex, Virtex II, Virtex II-
Pro, Virtex 4, Virtex 5 ...
Architecture proche, mais avec plus de ressources:
Virtex: 8 couches en 150nm et 9 couches en 130nm.
Aujourd'hui des circuits avec beaucoup de ressources logiques et dʼI/O (de
lʼordre de 1000).
En plus de CLB: Blocs de mémoire RAM, circuits multiplicateurs
dédicacés, μP, ou des IP spécifiques,...
COMMENT FAIRE DES CIRCUITS LOGIQUES PROGRAMMABLES ? COMMENT FAIRE DES CIRCUITS LOGIQUES PROGRAMMABLES ?
Un circuit classique contient :
des portes logiques ;
des connections entre les portes logiques ;
des éléments de mémorisation (registre et/ou mémoire) ;
des entrées-sorties;
une (ou des) horloges;
une structure hiérarchique.
Le CLP doit donc avoir les mêmes fonctionnalités, avec la notion de
« programmabilité ».
Rappelez vous!
D’ou…
Définition de
FPGA
D’ou…
Définition de
FPGA
Un FPGA est un CI qui contient des blocs de logiques configurables et des interconnexions configurables entre ces blocs.
Un FPGA réalise une fonction logique complexe.
Il est programmable, et reprogrammable dans son environnement. Cette configuration se fait sur place ( Field Programmable).
Les circuits FPGA XILINX sont disponibles en de nombreuses configurations de taille, de vitesse et de prix.
Des outils logiciels puissants et automatiques permettent de réaliser facilement un système sur FPGA.
CARACTÉRISTIQUES PRINCIPALES DES FPGA’S CARACTÉRISTIQUES PRINCIPALES DES FPGA’S
Rapidité
Coût
Versatibilité
Fonctionnement
Intégration
Reconfigurabilité
Rapidité
Coût
Versatibilité
Fonctionnement
Intégration
Reconfigurabilité
LES FPGAs Circuits digitaux configurables présentent des architectures distribuées.
FPGAs permettent la réalisation des circuits combinatoires ou séquentiels.
FPGAs se réalisent en VLSI ou ULSI (échelle d’intégration), en TECHNOLOGIE CMOS
exclusivement.
Leur architectures flexibles, s’adaptent à certains types d’applications complexes
comme celles du traitement de signal.
Possèdent des ressources spécifiques pour le calcul de la propagation de la
retenue, pour la réalisation de circuits arithmétiques.
Possèdent aussi des ressources logiques pour la réalisation des unités de
mémoires. Cela facilite l’implémentation de circuits complexes comme les
sytèmes embarqués basés sur les microprocesseurs.
Permettent la reconfiguration partielle sans affecter le fonctionnement du reste
du circuit.
Architectures
des FPGAs
Blo
ck R
AM
s
Blo
ck R
AM
s
Configurable Logic Blocks
I/O Blocks
Tous les FPGAs de Xilinx contiennent les mêmes
ressources de bases:
SLICES (GROUPÉS DANS DES CLBS: blocs logiques configurables )
Comprennent de la logique combinatoire et
ressources de registre.
IOBs
Interface entre FPGA et le monde extérieur.
INTERCONNEXION PROGRAMMABLE
AUTRES RESSOURCES
Mémoire,
Multiplieurs,
“Global clock buffers”,
DCM,etc…
CLB CLB
CLB CLB
Logic cell
Slice
Logic cell
Logic cell
Slice
Logic cell
Logic cell
Slice
Logic cell
Logic cell
Slice
Logic cell
Configurable logic block (CLB)
CLB & SLICES
The Design Warrior’s Guide to FPGAs
Devices, Tools, and Flows. ISBN 0750676043
Copyright © 2004 Mentor Graphics Corp. (www.mentor.com)
SLICES Doivent permettre la réalisation de n’importe quel circuit
combinatoire ou séquentiel par eux mêmes ou par plusieurs
blocs(slices) groupés.
Architectures des FPGAs
Slice 0
LUT LUT Carry Carry
LUT LUT Carry Carry D Q
CE
PRE
CLR
D Q CE
PRE
CLR
Chaque Slice possède quatre sorties
Deux sorties enregistrées,
Deux sorties non enregistrées
La logique de la retenue ou Carry logic
s’éxécute verticalement et vers le haut
seulement.
BLOCS D’E/S
Permettent de configurer les caractéristiques des terminaux
d’entrée/sortie de l’FPGA.
1.Utilisation du terminal comme entrée:
• Bistable pour la mémorisation.
• Choix d’entrée directe ou mémorisée à travers le bistable.
• Niveau logique: ttl, cmos, etc.
2.Utilisation du terminal comme sortie:
• Bistable de mémorisation.
• Choix de sortie directe ou mémorisée à travers le bistable.
• Courant de sortie maximal,etc.
La fonction d’un IOB est de permettre le passage d’un signal dans/ dehors
du circuit.
Pour cela, dépendement de l’interface électrique, cet élément doit avoir les
ressources suivantes:
Sorties configurables de type Tri-State ou Open-Collector.
Entrées avec possiblité de pull-up ou pull-down programables.
Registres de sortie.
Registres d’entrée.
La dispersion des ressources logiques dans les FPGAs nécessitent de disposer des ressources d’interconnexion flexibles.
Cette flexibilité s’obtient grâce aux lignes d’interconnexion de différentes longitudes, qui se distribuent par différentes formes à l’intérieur des FPGAs.
Les lignes d’interconnexion se connectent entre elles par des connexions configurables, réalisées de différentes formes dans différents FPGAs, dépendant de la technologie.
RESSOURCES
D’INTERCONNEXION
LIGNES (CHEMINS)
D’INTERCONNEXION
TYPES DE LIGNES D’INTERCONNEXION
Architectures des FPGAs
CHEMINS D’INTERCONNEXION DIRECTS
MOINS DE RETARD MAIS MOINS DE FLEXIBILITÉ
LIGNES (CHEMINS) D’INTERCONNEXION
LIGNES (CHEMINS) D’INTERCONNEXION
CHEMINS D’INTERCONNEXION SEGMENTÉS (INDIRECTS)
PLUS DE FLEXIBILITÉ MAIS PLUS DE
RETARD.
CONNEXIONS CONFIGURABLES: TYPES DE CONNEXIONS CONFIGURABLES
CONNEXIONS CONFIGURABLES
CONNEXIONS CONFIGURABLES ENTRE LIGNES DIRECTES PAR MULTIPLEXEURS
CONNEXIONS CONFIGURABLES ENTRE LIGNES DIRECTES PAR DES POINTS DE CONNEXIONS PROGRAMMABLES SIMPLES.
CONNEXIONS CONFIGURABLES
EXEMPLE CONCRET
Connexions configurables entre lignes segmentées par des points de connexion programmable simple.
CONNEXIONS CONFIGURABLES
POINT DE CONNEXION PROGRAMMABLE COMPOSÉ
CONNEXIONS CONFIGURABLES
MATRICES DE COMMUTATION DES FAMILLES 3000 ET 4000 DE XILINX
CONNEXIONS CONFIGURABLES
Un CLB comprend une LUT 4 entrées et une bascule D (D Flip-Flop).
La bascule D permet la réalisation de fonctions logiques séquentielles.
La configuration du multiplexeur 2 vers 1 de sortie autorise la sélection
des deux types de fonction, combinatoire ou séquentielle.
AVANT BLOCS LOGIQUES INTERNES : BLOC LOGIQUE COMBINATOIRE « CLB »
BLOCS LOGIQUES INTERNES : NOTION DE LUT
Le concept du FPGA est basé sur l'utilisation d'une LUT (LookUp Table)
comme élément combinatoire de la cellule de base (SLICE).
En première approximation, cette LUT peut être vue comme une
mémoire (16 bits en général) qui permet de créer n’importe quelle
fonction logique combinatoire de 4 variables d’entrées appelée aussi
générateur de fonction.
Pour implémenter les fonctions combinatoires, le concepteur programme les tables de vérité dans les LUTs et utilise la sortie directe.
A B C D Y
0 0 X X 0
0 1 X X 1
1 0 X X 1
1 1 X X 0
Table de Vérité
Entrées
(ABCD)
Sortie
00XX 0
01XX 1
10XX 1
11XX 0
LUT
BLOCS LOGIQUES INTERNES : NOTION DE LUT: IMPLÉMENTATION DES FONCTIONS COMBINATOIRES
IMPLÉMENTATION D’UNE XOR2
La logique combinatoire est stockée dans les Look-Up Tables (LUTs)
Appelées aussi Générateurs de fonction “Function Generators (FGs)”
Leur capacité est limitée par le nombre d’entrées, et non pas de leur compléxité.
Délai à travers la LUT est constant.
A B C D Z
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 1
0 1 0 0 1
0 1 0 1 1
. . .
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 1
LOGIQUE COMBINATOIRE
A
B
C
D
Z
BLOCS LOGIQUES INTERNES : NOTION DE LUT: IMPLÉMENTATION DES FONCTIONS COMBINATOIRES
CHAQUE LUT PEUT
IMPLÉMENTER N’IMPORTE
QUELLE FONCTION DE
QUATRE ENTRÉES.
BLOCS LOGIQUES INTERNES : NOTION DE LUT: IMPLÉMENTATION DES FONCTIONS COMBINATOIRES
x 1 x 2 x 3 x 4
y
x 1 x 2
y
LUT
x 1
x 2 x 3
x 4
y
0
x 1
0
x 2 x 3 x 4
0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1
y
0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0
0
x 1
0
x 2 x 3 x 4
0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1
y
1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
x 1 x 2 x 3 x 4
y
x 1 x 2 x 3 x 4
y
x 1 x 2
y
x 1 x 2
y
LUT
x 1
x 2 x 3
x 4
y
0
x 1
0
x 2 x 3 x 4
0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1
y
0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0
0
x 1
0
x 2 x 3 x 4
0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1
y
0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0
0
x 1
0
x 2 x 3 x 4
0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1
y
1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
0
x 1
0
x 2 x 3 x 4
0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1
y
1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
Et si c’était une fonction à 5
entrées, combien de luts va t-elle
utiliser?
LUT LUT LUT LUT
X5 X4 X3 X2 X1 Y
0 0 0 0 0 0
0 0 0 0 1 1
0 0 0 1 0 0
0 0 0 1 1 0
0 0 1 0 0 1
0 0 1 0 1 1
0 0 1 1 0 0
0 0 1 1 1 0
0 1 0 0 0 1
0 1 0 0 1 0
0 1 0 1 0 0
0 1 0 1 1 1
0 1 1 0 0 1
0 1 1 0 1 1
0 1 1 1 0 1
0 1 1 1 1 1
1 0 0 0 0 0
1 0 0 0 1 0
1 0 0 1 0 0
1 0 0 1 1 0
1 0 1 0 0 0
1 0 1 0 1 0
1 0 1 1 0 0
1 0 1 1 1 1
1 1 0 0 0 0
1 1 0 0 1 1
1 1 0 1 0 0
1 1 0 1 1 1
1 1 1 0 0 0
1 1 1 0 1 1
1 1 1 1 0 0
1 1 1 1 1 0
LUT LUT LUT LUT
OUT
BLOCS LOGIQUES INTERNES : NOTION DE LUT: IMPLÉMENTATION DES FONCTIONS COMBINATOIRES
Probablement 2 luts.
Biensur.
Pour implémenter les fonctions séquentielles, “il” utilise un flip-flop et réalimente la sortie séquentielle dans une des entrées de la LUT si c’est nécessaire.
• Implémenter Flip Flop D dans un bloc:
LUT FF-D
clk
Q
D
enable reset
BLOCS LOGIQUES INTERNES : NOTION DE LUT: IMPLÉMENTATION DES FONCTIONS SÉQUENTIELLES
Résumé : Trois Types de Blocs
1. Le CLB: un ensemble régulier de blocs logiques (LB pour Logic Block) identiques; ces blocs présentent une structure interne programmable permettant d'y implanter une ou plusieurs fonctions logiques combinatoires ou séquentielles.
2. Sur le pourtour du circuit, un ensemble sortie ( interfacer les monde extérieur tension, sortance,
2. Sur le pourtour du circuit, un ensemble de blocs d'entrée-sortie (I/O block) destinés à interfacer les signaux internes avec le monde extérieur (niveau de tension, sortance, etc).
3. Un réseau d'interconnexions programmables: ce réseau sert à connecter les blocs logiques entre eux ainsi qu'avec les blocs d'entrée-sortie.
FPGA : Zoom Les interconnexions sont représentées sur la figure: 1.
2.
Les interconnexions sont représentées sur la figure: 1. Les liaisons sont assurées par des canaux de lignes horizontales et
verticales sur lesquels les blocs logiques viennent se connecter (connection block).
2. Le routage des signaux est assuré par des boîtiers d'interrupteurs programmables (Switch box) situés au croisement des canaux.
Structure du CLB de SPARTAN
LUTs
MUXs
Bascules
Structure Générale d'un CLB: Mini-Système Séquentiel
Circuit séquentiel
Le bloc logique configurable (CLB: configurable logic block) est l'élément fondamental d'un circuit intégré programmable.
CFG mem: La mémoire de configuration représente l'ensemble des éléments de mémoire destinés à fixer l'architecture de travail du bloc. Ces éléments sont répartis sur toute la surface du bloc.
Interconnexions Programmables: Définition
Le réseau de connexions est un élément fondamental de l'organisation d'un circuit intégré programmable. Il a un impact direct sur les performances du circuit par son influence sur les délais de transmission des signaux. Il intervient dans le coût de fabrication vu la surface qui doit lui être attribuée (environ 80% de la surface du circuit) et vu les exigences qu'il génère sur le choix de la technologie (nombreuses couches de métallisation).
Interconnexions Programmables: Topologie Générale du Réseau
Elle résulte de la disposition adoptée pour les blocs fonctionnels du
Elle résulte de la disposition adoptée pour les blocs fonctionnels du circuit (CLB et IOB). Le réseau est formé à partir de trois sous-réseaux: 1. un réseau de routes est-ouest, 2. un réseau de routes nord-sud, 3. un réseau configuré en anneau à la périphérie du circuit.
Interconnexions Programmables: Topologie Générale du Réseau
Structure d'interconnexion hiérarchique sur
Structure d'interconnexion hiérarchique sur différents niveaux de métallisation
– niveaux supérieur: routes globales (longues).
– niveaux intermédiaires: routes semi-globales.
– niveaux inférieurs: routes locales (courtes).
sans oublier: – distribution des alimentations (VDD et GND).
– distribution des horloges.
– distribution des infos de configuration.
Interconnexions Programmables: Connexion entre Blocs
Pour utiliser les ressources de manière optimale: différentes longueurs de pistes sont nécessaires.
connexions possibles (flexibilité) via PIP(point de contact programmable).
CLB
Interconnexions Programmables: Point de Contact Programmable (PIP)
Point de contact = connexion entre deux pistes différentes
– Typiquement connexion horizontale/verticale
Point de contact programmable = connexion
Programmable entre deux pistes.
Exemple de raccordement d'un CLB
En général, un seul point de contact utilisé
Interconnexions Programmables: Le Switch Un switch ("commutateur" en français) est un élément de routage
Un switch ("commutateur" en français) est un élément de routage qui permet toute une série de configurations de chemins à partir de deux axes perpendiculaires.
Élément de routage à 6 points de contact.
– avantage: compact et flexible.
Quelques routages possibles
Interconnexions Programmables: Switch Box
La « switch box » rassemble une série de switches au croisement de routes nord-sud et est-ouest.
Matrices d'interconnexions (Programmable Switch Matrix)
Interconnexions Programmables: Couches de métallisation
Une exploitation efficace des connexions => disposer de plusieurs niveaux de métallisation afin de permettre le croisement des pistes.
Il est intéressant de disposer d'au moins quatre niveaux de métallisation, à savoir: 1. un niveau pour organiser l'alimentation des circuits (VDD et
GND), 2. un niveau pour les liaisons locales, 3. un niveau pour les liaisons nord-sud, 4. et un niveau pour les liaisons est-ouest.
En pratique, la plupart des FPGA récents exploitent des
technologies à 5 et 6 couches de métallisation.
IOB: IN, OUT, INOUT
L'information peut être transmise directement
ou mémorisée dans une mémoire aussi bien à
l'entrée qu'à la sortie. Pour la voie de sortie, un
multiplexeur permet de contourner ou non la
mémoire; pour la voie d'entrée, il existe deux
chemins d'accès différents.
L'état actif des horloges de synchronisation
(output clock, input clock) et de la donnée sortante
peut être inversé par un circuit programmable
formé d'un inverseur et d'un multiplexeur.
Le signal d'entrée peut être éventuellement
retardé (bloc "Delay") de manière à permettre son
échantillonnage.
IOB: IN, OUT, INOUT
L'information peut être transmise directement
ou mémorisée dans une mémoire aussi bien à
l'entrée qu'à la sortie. Pour la voie de sortie, un
multiplexeur permet de contourner ou non la
mémoire; pour la voie d'entrée, il existe deux
chemins d'accès différents.
L'état actif des horloges de synchronisation
(output clock, input clock) et de la donnée sortante
peut être inversé par un circuit programmable
formé d'un inverseur et d'un multiplexeur.
Le signal d'entrée peut être éventuellement
retardé (bloc "Delay") de manière à permettre son
échantillonnage.
BLOCS D’ENTRÉE/SORTIE
Exemples: Architecture de la série XC4000
Exemples: :Architecture SPARTAN 3E
• 1 bloc CLB = 4 « slices » •
•
• 1 bloc CLB = 4 « slices » • 1 slice = 2 tables de look-up
(LUT) • + 2 bascules sur front (flip-
flop) ou niveau (latches)
Xilinx Spartan 3E: 12345
Xilinx Spartan 3E: 1) Configurable Logic Blocks (CLBs) 2) Input/output blocks (IOBs) 3) Block RAM 4) Multiplier blocks 5) Digital Clock Manager(DCM)
SLICE : ¼ Tranche CLB
Chaque SLICE contient :
•
•
•
•
•
•
•
Chaque SLICE contient :
• Deux générateurs de fonction (F & G).
• Deux éléments du stockage.
• Des portes de la logique arithmétique.
• Grands multiplexeurs.
• Une large fonctionnalité.
• Une logique de retenue rapide.
• Une chaîne de cascade horizontale (porte OU).
• BLOCS LOGIQUES ADDITIONNELS: MULTIPLIEURS DE 18 x 18 BITS.
FAMILLE VIRTEX II DE XILINX
• BLOCS LOGIQUES ADDITIONNELS: DIGITAL CLOCK MANAGER (DCM): PLL DIGITAL.
FPGA NOMENCLATURE
XC3S50 -4 PQ 208 C
Device Type
Speed Grade
Package Type
Temperature Range C= Commercial (Tj= 0º C to 85ºC) I=Industrial (Tj= -40ºC C to 100ºC)
Number of Pins
QUELLES SONT LES CARACTÉRISTIQUES IMPORTANTES D’UNE CONCEPTION SUR UN FPGA?
QUELLES SONT LES CARACTÉRISTIQUES IMPORTANTES D’UNE CONCEPTION SUR UN FPGA?
Conception et Implémentation pour FPGA Conception et Implémentation pour FPGA
Conception synchrone • On obtient en général de bien meilleurs résultats
avec un FPGA en adoptant un style de conception synchrone.
• Les structures asynchrones sont mal adaptées aux FPGAs.
Bascules vs loquets • Il est donc grandement avantageux de toujours
utiliser des bascules. • cela améliore la qualité de l’analyse statique des
délais ce qui permet de mieux estimer la performance du circuit.
Initialisation globale
Il est avantageux d’utiliser un signal unique pour initialiser toutes les bascules parce que la plupart des FPGAs comportent un chemin spécial pour accomplir cette tâche.
Génération et distribution de signaux d’horloge
Quand on génère un signal d’horloge il est important de prendre en considération le routage de celui-ci aux différentes bascules du circuit.
On spécifie à l’outil de synthèse qu’un certain signal est un signal d’horloge => Le synthétiseur utilise l’un des tampons spéciaux disponibles sur le FPGA ainsi que les circuits réservés pour la distribution de l’horloge.
Pour les outils de Xilinx, on insére le symbole « BUFG » à la sortie du générateur d’horloge.
Conception et Implémentation pour FPGA Conception et Implémentation pour FPGA
Quelques Principes Importants en Conception Numérique
De bons outils de conception et d’analyse ne garantissent pas le succès mais facilitent la tâche.
Le système qui doit être conçu devra éventuellement être fabriqué et testé. On gagne beaucoup à tenir compte de la testabilité du système pendant sa conception.
La logique programmable est d’une grande utilité à cause de la flexibilité qu’elle offre au concepteur.
Éviter les systèmes asynchrones.
Porter une attention particulière à la synchronisation entre deux systèmes synchrones
APPLICATIONS des FPGAs
Prototypage de nouveaux circuits ; Prototypage de nouveaux circuits ;
Fabrication de composants spéciaux en petite série ;
Traitement de signal;
Systèmes de commande à temps réel ;
Imagerie médicale.
Conclusion
Dans le FPGA, il y a des
).
Dans le FPGA, il y a des "ressources":
traitement (CLBs, blocs combinatoires, LUT).
mémorisation (données).
configuration (mémoires de configuration).
communication (interconnexions).
Annexe: Logique Fixe et Logique Programmable
ANNEXE
• Un anti-fusible est fabriqué en plaçant du silicium amorphe entre deux conducteurs métalliques. Le silicium amorphe conduit très mal le courant et peut être considéré comme un isolant. En lui appliquant une tension élevée, cependant, on transforme le silicium amorphe en silicium polycristallin conducteur. Le circuit électrique ainsi formé entre les deux conducteurs métalliques s’appelle un via.
• La Figure ci-dessous illustre un anti-fusible avant et après sa programmation.
FABRICATION D’UN ANTI-FUSIBLE
Le grand DÉSAVANTAGE de la technologie anti-fusible est que le
dispositif n’est programmable qu’une seule fois. Plusieurs FPGAs sur le
marché présentement utilisent pourtant cette technologie.
Un AVANTAGE important des anti-fusibles est leur immunité aux
radiations, une caractéristique essentielle pour les applications spatiales.
La compagnie ACTEL est un important manufacturier de FPGA à
technologie anti-fusible.
AVANTAGES ET INCONVÉNIENTS
DE LA CONFIGURATION ANTI-FUSIBLE
Environnement d’Applications des
Circuits Programmables (FPGA)
Complexité du circuit moyenne ou élevée
– Jusqu’à 200.000 portes équivalentes.
– Jusqu’a 5.000 équations logiques et bistables.
– Jusqu’à 500 terminaux d’E/S de l’utilisateur.
– Jusqu’à 500 MHz de fréquence d’horloge.
– Jusqu’à 100 kbytes de RAM interne.
– Jusqu’à 50 MACs hardware.
Champs d’Application
Secteur Industriel automobile
Champs d’Application
Secteur de Télécommunications ADSL, Satélite
Champs d’Application
Secteur Aérospatial
Champs d’Application
Secteur Scientifique et Médical
Champs d’Application
Secteur Informatique
Caractérisitques des FPGAs
• Capacité logique élevée: intégration de systèmes complexes, systèmes en un circuit (SOC)…
Champs d’Application
• Secteur industriel automobile
• Secteur de télécommunications ADSL, satélite
• Secteur scientifique acquisition des données
• Secteur aérospatial
• Secteur informatique
Caractéristiques des FPGAs
• Traitement des données en parallèle:
traitement de signal: audio, vidéo, acquisition de données.
Types de Circuits Implémentés
Circuits d’interface complexes
Transfert et mémorisation de données: Ethernet, USB, CAN,etc…
Circuits de traitement de signal.
Systèmes en un circuit ( SOC : System On Chip ):
microprocesseur + mémoire + périphériques.
Circuits Reconfigurables.
Types de circuits implémentés
Circuits d’interface complexes
Types de circuits implémentés: Systèmes en un Circuit
• Consistent à implémenter en un unique circuit intégré les
circuits suivants:
Un microprocesseur
Une ou plusieurs unités de mémoires de programme et/ou de
données
Les périphériques du microprocesseur.
Types de circuits implémentés: Systèmes en un Circuit - Exemple
Types de circuits implémentés Circuits Reconfigurables
Applications qui nécessitent un changement dans la fonction de
l’FPGA en un temps très réduit.
Jusqu’à 1997, le temps de configuration ne pouvait pas être
inférieur aux milisecondes.
Possibilité de reconfiguration ou reconfigurabilité partielle.
Réalisation de différents algorithmes de traitement de signal à
différents instants:
Modulation/démodulation
Transmission/reception
Codification/décodification
Compression/décompression du son, video,etc.
Caractérisitques des FPGAs
• Capacité logique élevée: intégration de systèmes
complexes, systèmes en un circuit (SOC)…