Les Circuits FPGA “Field Programmable Gate Array”
Transcription
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 Richard.Grisel@sc.u-picardie.fr Richard.Grisel@sc.u-picardie.fr Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr Croissance industrielle 5 Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr Logic Array Block (Altera) 14 Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - Richard.Grisel@u-picardie.fr Logic Element (Altera) 15 Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - Richard.Grisel@u-picardie.fr Logic Element (Composants) 16 Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - Richard.Grisel@u-picardie.fr Table d ’exemples 17 Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr “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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr “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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr Interface saisie de schéma 42 Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr “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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr Introduction à la conception des FPGA 65 Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr “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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr “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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr “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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr “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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr La configuration des FPGA 112 Cours FPGA Médiathèque e-EEA - Richard Grisel - IUP GEII - 33 rue Saint Leu - 80039 Amiens Cedex - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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 - Richard.Grisel@u-picardie.fr 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