ele106 cours+tp vol1

Upload: soap-mactavish

Post on 16-Jul-2015

230 views

Category:

Documents


0 download

TRANSCRIPT

Conservatoire National des Arts et Mtiers

Polycopi de cours ELE106

Version du 12/07/2010

Conception numrique en VHDL

C.ALEXANDRE

1

INTRODUCTION A LA CONCEPTION EN VHDL .............................................................................. 1 1.1 1.2 1.3 1.3.1 FAMILLES DE CIRCUITS INTEGRES NUMERIQUES .................................................................................... 1 LES FPGA............................................................................................................................................. 4 CONCEPTION DUN DESIGN .................................................................................................................... 7 Saisie du design ............................................................................................................................... 7Saisie de schma ....................................................................................................................................7 Langage de description de bas niveau....................................................................................................7 Langage de description matriel ............................................................................................................8 1.3.1.1 1.3.1.2 1.3.1.3

1.3.2 1.4 1.5 1.5.1 1.5.2

La chane complte de conception en VHDL .................................................................................. 8 LA MAQUETTE FPGA.......................................................................................................................... 10 INTRODUCTION AU LANGAGE VHDL .................................................................................................. 12 Dfinition....................................................................................................................................... 12 Gnralits .................................................................................................................................... 12Ncessit ..............................................................................................................................................12 Un peu d'histoire ..................................................................................................................................13

1.5.2.1 1.5.2.2

1.5.3

Les principales caractristiques du langage VHDL...................................................................... 14Un langage s'appliquant plusieurs niveaux de descriptions...............................................................14 La portabilit........................................................................................................................................15 La lisibilit ...........................................................................................................................................15 La modularit .......................................................................................................................................16 Le couple entit architecture ................................................................................................................17 Les principaux objets manipuls ..........................................................................................................18 Les types ..............................................................................................................................................18 Fonctionnement concurrent..................................................................................................................19 Fonctionnement squentiel...................................................................................................................20

1.5.3.1 1.5.3.2 1.5.3.3 1.5.3.4 1.5.3.5 1.5.3.6 1.5.3.7 1.5.3.8 1.5.3.9

1.5.4 1.5.5 1.5.6

VHDL par rapport aux autres langages........................................................................................ 21 Normes et extensions ..................................................................................................................... 22 La synthse .................................................................................................................................... 23dfinition ..............................................................................................................................................23 La synthse automatique de circuits : dans quel but ?..........................................................................23

1.5.6.1 1.5.6.2

1.5.7 1.5.8 2

Diffrences entre un langage de programmation et VHDL........................................................... 24 Bibliographie................................................................................................................................. 24

LOGIQUE COMBINATOIRE................................................................................................................. 25 2.1 2.1.1 INTRODUCTION,2.1.1.1 2.1.1.2 2.1.1.3 2.1.1.4 2.1.1.5 2.1.1.6VARIABLES ET FONCTIONS LOGIQUES ....................................................................... 25

Les oprateurs fondamentaux........................................................................................................ 26INV (NON) ..........................................................................................................................................26 AND (ET) ............................................................................................................................................26 OR (OU)...............................................................................................................................................27 NAND (NON ET) ................................................................................................................................27 NOR (NON OU) ..................................................................................................................................28 XOR (OU exclusif) ..............................................................................................................................28

i

2.1.1.7 2.1.1.8

XNOR (NON OU exclusif) ................................................................................................................. 29 Portes universelles ............................................................................................................................... 29

2.1.2 2.1.3 2.1.4

Algbre de BOOLE ........................................................................................................................30 Expression dune fonction logique ................................................................................................32 Simplification des fonctions logiques ............................................................................................33Simplification algbrique .................................................................................................................... 34 Simplification par les tableaux de Karnaugh ....................................................................................... 34

2.1.4.1 2.1.4.2

2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7

CIRCUITS LOGIQUES COMBINATOIRES..................................................................................................40 Circuits logiques fondamentaux ....................................................................................................40 Le dmultiplexeur ..........................................................................................................................42 Le dcodeur ...................................................................................................................................43 Le multiplexeur ..............................................................................................................................44 Lencodeur de priorit ...................................................................................................................45 Les mmoires .................................................................................................................................46 Buffer bidirectionnel 3 tats ..........................................................................................................47La porte 3 tats .................................................................................................................................... 47 Notion de bus....................................................................................................................................... 47

2.2.7.1 2.2.7.2

2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.5 3

CARACTERISTIQUES TEMPORELLES .....................................................................................................50 Caractristiques temporelles .........................................................................................................50 Etats transitoires............................................................................................................................51 DESCRIPTION EN VHDL ......................................................................................................................56 Introduction ...................................................................................................................................56 Portes combinatoires .....................................................................................................................57 Multiplexeurs (mmorisation implicite).........................................................................................60 Assignation inconditionnelle de signal : squentiel contre concurrent .........................................68 Dmultiplexeur - dcodeur ............................................................................................................69 Encodeur de priorit......................................................................................................................71 Mmoire ROM ...............................................................................................................................73 buffer bidirectionnel trois tats......................................................................................................74 EXERCICES ..........................................................................................................................................76

REPRESENTATION DES NOMBRES...................................................................................................83 3.1 3.1.1 LES CODES ...........................................................................................................................................83 Entiers naturels..............................................................................................................................83Base dun systme de numration ....................................................................................................... 83 Changement de base ............................................................................................................................ 85 3.1.1.1 3.1.1.2

3.1.2 3.1.3

Entiers signs.................................................................................................................................87 Nombres rels ................................................................................................................................89Virgule flottante................................................................................................................................... 89 virgule fixe .......................................................................................................................................... 90

3.1.3.1 3.1.3.2

3.1.4

Des codes particuliers ...................................................................................................................90

ii

3.1.4.1 3.1.4.2 3.1.4.3 3.1.4.4 3.1.4.5 3.1.4.6

Le code BCD........................................................................................................................................90 Le code Gray........................................................................................................................................91 Le code Johnson...................................................................................................................................93 Le code 1 parmi N................................................................................................................................94 Le code ASCII .....................................................................................................................................94 Les codes dtecteurs et/ou correcteurs derreurs..................................................................................95

3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.3 3.3.1 3.3.2

LES CIRCUITS ARITHMETIQUES ............................................................................................................ 95 Ladditionneur/soustracteur.......................................................................................................... 95 Dbordement de calcul.................................................................................................................. 97 Le comparateur ............................................................................................................................. 98 Le multiplieur ................................................................................................................................ 99 Le diviseur ................................................................................................................................... 102 DESCRIPTION EN VHDL.................................................................................................................... 105 Reprsentation des nombres en VHDL........................................................................................ 105 Le package std_logic_arith ......................................................................................................... 106Les types signed et unsigned .....................................................................................................106 Les fonctions de conversion...............................................................................................................106 conv_integer .................................................................................................................................106 conv_unsigned ..............................................................................................................................106 conv_signed ..................................................................................................................................107 conv_std_logic_vector ..................................................................................................................107 Conversion de types proches (closely related)..............................................................................107 Oprateur arithmtiques : +, -, * ........................................................................................................108 Oprateurs de comparaison : =, =, /= ................................................................................108 Fonctions de dcalage : SHL, SHR ....................................................................................................109

3.3.2.1 3.3.2.2 3.3.2.2.1 3.3.2.2.2 3.3.2.2.3 3.3.2.2.4 3.3.2.2.5 3.3.2.3 3.3.2.4 3.3.2.5

3.3.3 3.3.4

Les packages std_logic_unsigned et std_logic_signed................................................................ 109 Exemples...................................................................................................................................... 110Additionneur simple non sign ou sign ............................................................................................110 Additionneur avec retenue entrante et sortante ..................................................................................111 Additions multiples sans gestion de retenue ......................................................................................112 Comparateur.......................................................................................................................................113 Multiplieur .........................................................................................................................................116

3.3.4.1 3.3.4.2 3.3.4.3 3.3.4.4 3.3.4.5

3.4 4

EXERCICES ........................................................................................................................................ 117

LOGIQUE SEQUENTIELLE ................................................................................................................ 121 4.1 4.2 4.3 4.4 4.5 4.6 4.6.1 CIRCUITS SEQUENTIELS ASYNCHRONES ............................................................................................. 121 BISTABLES SYNCHRONISES SUR UN NIVEAU ...................................................................................... 127 BASCULES D MAITRE-ESCLAVE (MASTER-SLAVE D FLIP-FLOP) ......................................................... 129 BASCULES D SYNCHRONISEES SUR UN FRONT (EDGE-TRIGGERED D FLIP-FLOP) ................................ 130 BASCULES USUELLES ........................................................................................................................ 131 CARACTERISTIQUES TEMPORELLES DES CIRCUITS SEQUENTIELS SYNCHRONES ................................. 133 Dfinitions ................................................................................................................................... 134

iii

4.6.2 4.6.3 4.6.4 4.6.5 4.7 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.8 4.8.1 4.8.2 4.8.3

Calcul de la frquence maximale dhorloge dune bascule D.....................................................135 Calcul de la frquence maximale dhorloge dans le cas gnral ................................................137 Mtastabilit ................................................................................................................................138 Distribution des horloges : clock skew ..................................................................................140 REGLES DE CONCEPTION ....................................................................................................................143 Influence des alas de commutation ............................................................................................143 Rgles de conception synchrone ..................................................................................................144 Le rle du CE...............................................................................................................................145 Asynchrone contre synchrone......................................................................................................146 Le reset.........................................................................................................................................147 CIRCUITS ELEMENTAIRES ..................................................................................................................152 Les bascules lmentaires............................................................................................................152 Le registre....................................................................................................................................152 Le registre dcalage .................................................................................................................153Dfinition........................................................................................................................................... 153 Applications....................................................................................................................................... 155 Le SN74LS178, registre dcalage polyvalent de 4 bits .................................................................. 155

4.8.3.1 4.8.3.2 4.8.3.3

4.8.4

Les compteurs ..............................................................................................................................157Introduction ....................................................................................................................................... 157 Compteurs binaires asynchrones et synchrones................................................................................. 158 Ralisation des fonctions supplmentaires ........................................................................................ 161 Mise en cascade de compteurs........................................................................................................... 162 Ralisation de compteurs modulo quelconque................................................................................... 164 Action sur l'entre Clear synchrone.............................................................................................. 164 Rappel des cas possibles d'alas................................................................................................... 165 Influence de lala ........................................................................................................................ 165 Action sur lentre LOAD synchrone........................................................................................... 167

4.8.4.1 4.8.4.2 4.8.4.3 4.8.4.4 4.8.4.5 4.8.4.5.1 4.8.4.5.2 4.8.4.5.3 4.8.4.5.4

4.8.5 4.8.6 4.8.7 4.8.8 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.6 4.9.7 4.10 5

Laccumulateur de somme ...........................................................................................................167 Laccumulateur de produit : MAC...............................................................................................169 Les monostables...........................................................................................................................170 Circuit de dtection de front ........................................................................................................171 DESCRIPTION EN VHDL ....................................................................................................................172 Latch transparent et bascule D....................................................................................................172 Registre ........................................................................................................................................176 Registre dcalage......................................................................................................................177 Compteur .....................................................................................................................................179 Accumulateur...............................................................................................................................181 MAC.............................................................................................................................................182 Circuit de dtection de front ........................................................................................................183 EXERCICES ........................................................................................................................................184

MONTAGES EN LOGIQUE SEQUENTIELLE..................................................................................193

iv

5.1 5.2 5.2.1 5.2.2 5.2.3 5.3 5.3.1 5.3.2 5.3.3

MACHINES DETATS .......................................................................................................................... 193 LES GENERATEURS DE SEQUENCES SYNCHRONES .............................................................................. 195 Compteur, dcompteur ................................................................................................................ 195 Cas particulier : les registres dcalages boucls ..................................................................... 196 Le gnrateur pseudo-alatoire (LFSR)...................................................................................... 198 DESCRIPTION EN VHDL.................................................................................................................... 200 Description modulaire et paramtres gnriques ....................................................................... 200 Registre dcalage gnrique .................................................................................................... 210 Conception avec plusieurs horloges ou avec plusieurs CE......................................................... 212Introduction........................................................................................................................................212 Circuit diviseur dhorloge ..................................................................................................................213 Circuit gnrateur de CE....................................................................................................................214

5.3.3.1 5.3.3.2 5.3.3.3

5.3.4 6

Calcul de moyenne mobile........................................................................................................... 215

SIMULATION ET TESTBENCH.......................................................................................................... 225 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.1.6 6.2 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 PRINCIPE DE LA SIMULATION FONCTIONNELLE .................................................................................. 225 Introduction ................................................................................................................................. 225 Testbench simple sans gnration de stimuli .............................................................................. 225 Testbench avec rebouclage combinatoire ................................................................................... 228 Process or not process................................................................................................................. 231 Plusieurs process identiques ....................................................................................................... 233 Gestion des conflits...................................................................................................................... 235 LA SIMULATION POST-IMPLEMENTATION .......................................................................................... 238 ECRITURE DUN TESTBENCH COMPLET .............................................................................................. 245 Ecriture dun testbench combinatoire simple avec gnration de stimuli................................... 245 Arrt automatique de la simulation ............................................................................................. 248 Testbench squentiel.................................................................................................................... 249 Testbench squentiel amlior..................................................................................................... 252 Utilisation du type rel ................................................................................................................ 254 Ecriture dun testbench utilisant des fichiers .............................................................................. 257

7

CONCEPTION ET PERFORMANCES ............................................................................................... 265 7.1 7.2 7.3 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.4 INTRODUCTION.................................................................................................................................. 265 COMPROMIS SURFACE/VITESSE ......................................................................................................... 266 PROBLEMES LIES A LA CONSOMMATION ............................................................................................ 269 Structure dun circuit CMOS....................................................................................................... 269 Consommation dynamique .......................................................................................................... 270 Consommation statique ............................................................................................................... 274 Caractristiques lectriques ........................................................................................................ 274 Tension dalimentation et puissance ........................................................................................... 275 Mthodes pour limiter la consommation ..................................................................................... 277 AUGMENTATION DE LA FREQUENCE DE FONCTIONNEMENT ............................................................... 277

v

7.4.1 7.4.2 7.4.3 8

Modles de timing........................................................................................................................277 Mise en uvre des contraintes.....................................................................................................280 Mthode du pipeline ....................................................................................................................282

CORRIGES SUCCINCTS ......................................................................................................................287 8.1 8.2 8.3 CORRIGES CHAPITRE 2.......................................................................................................................287 CORRIGES CHAPITRE 3.......................................................................................................................294 CORRIGES CHAPITRE 4.......................................................................................................................298

9

TRAVAUX PRATIQUES .......................................................................................................................305 9.1 9.1.1 9.1.2 9.1.3 9.1.4 9.1.5 9.1.6 9.1.7 9.1.8 9.1.9 9.1.10 9.1.11 9.2 9.2.1 9.2.2 9.3 9.3.1 9.3.2 9.4 9.4.1 9.4.2 9.5 9.5.1 9.5.2 9.6 9.6.1 9.6.2 9.7 9.7.1 9.7.2 TRAVAIL PRATIQUE N1....................................................................................................................305 Ouverture de session....................................................................................................................305 Lancement de Project Navigator ...........................................................................................305 Cration du projet........................................................................................................................305 Cration du design VHDL ...........................................................................................................308 Gnration du fichier de stimuli VHDL.......................................................................................311 Simulation fonctionnelle ..............................................................................................................316 Synthse .......................................................................................................................................321 Implmentation ............................................................................................................................325 Simulation de timing ....................................................................................................................330 Configuration de la maquette .................................................................................................332 La suite du TP .........................................................................................................................338 Cahier des charges ......................................................................................................................339 Ralisation pratique.....................................................................................................................340 TRAVAIL PRATIQUE N3....................................................................................................................341 Cahier des charges ......................................................................................................................341 Ralisation pratique.....................................................................................................................342 TRAVAIL PRATIQUE N4....................................................................................................................343 Cahier des charges ......................................................................................................................343 Ralisation pratique.....................................................................................................................349 TRAVAIL PRATIQUE N5....................................................................................................................351 Cration dun testbench avec ISE................................................................................................351 Ralisation pratique.....................................................................................................................357 TRAVAIL PRATIQUE N6....................................................................................................................359 Cahier des charges ......................................................................................................................359 Ralisation pratique.....................................................................................................................360 PROJET ..............................................................................................................................................361 Cahier des charges ......................................................................................................................361 Ralisation pratique.....................................................................................................................364

TRAVAIL PRATIQUE N2....................................................................................................................339

vi

1 Introduction la conception en VHDL1.1 Familles de circuits intgrs numriques

Il existe une loi empirique, appele loi de Moore, qui dit que la densit dintgration dans les circuits intgrs numriques base de silicium double tous les 18 24 mois, prix du circuit quivalent. Les consquences de la loi de Moore sont les suivantes : La longueur du canal L qui tait gale 10 m dans les annes 1970 a atteint 32 nm en 2010, ce qui fait un facteur de rduction en surface de 3122 100000 en 40 ans (car toutes les dimensions du transistor ont t rduites de la mme manire). Le nombre de transistors par circuits a encore plus augment cause de laccroissement de la taille des puces qui atteint 600 mm2 (avec quelques millions de transistors par mm2). On pourrait atteindre facilement un milliard de transistors par circuit (toujours en 2010). La frquence de fonctionnement a augment dun facteur 10000 environ entre 1970 et 2010. La figure suivante vous montre une paire de transistor MOS canal N et canal P qui forme la brique de base de la logique CMOS :

L

La loi de Moore sest rvle remarquablement exacte jusqu' ce jour et elle explique en grande partie lvolution de llectronique numrique de ses origines nos jours. Durant les annes 60, au dbut de l're des circuits intgrs numriques, les fonctions logiques telles que les portes, les registres, les compteurs et les ALU, taient disponibles en circuit TTL. On parlait de composants SSI (Small Scale Integration) ou MSI (Medium Scale Integration) pour un tel niveau d'intgration.

1

Dans les annes 70, le nombre de transistors intgrs sur une puce de silicium augmentait rgulirement. Les fabricants mettaient sur le march des composants LSI (Large Scale Integration) de plus en plus spcialiss. Par exemple, le circuit 74LS275 contenait 3 multiplieurs de type Wallace. Ce genre de circuit n'tait pas utilisable dans la majorit des applications. Cette spcialisation des botiers segmentait donc le march des circuits intgrs et il devenait difficile de fabriquer des grandes sries. De plus, les cots de fabrication et de conception augmentaient avec le nombre de transistors. Pour toutes ces raisons, les catalogues de composants logiques standards (srie 74xx) se sont limits au niveau LSI. Pour tirer avantage des nouvelles structures VLSI (Very Large Scale Integration), les fabricants dvelopprent 4 nouvelles familles : Les microprocesseurs et les mmoires RAM et ROM : les microprocesseurs et les circuits mmoires sont attrayants pour les fabricants. Composants de base pour les systmes informatiques, ils sont produits en trs grandes sries. Les ASSP (Application Specific Standard Product) : ce sont des produits sur catalogue qui sont fabriqus en grande srie. La fonction ralise est fige par le constructeur, mais le domaine dutilisation est spcifique une application. Exemple : un contrleur Ethernet, un encodeur MPEG-4, Les circuits programmables sur site : n'importe quelle fonction logique, combinatoire ou squentielle, avec un nombre fixe d'entres et de sorties, peut tre implante dans ces circuits. A partir de cette simple ide, plusieurs variantes d'architecture ont t dveloppes (PAL, EPLD, FPGA,). Les ASIC (Application Specific Integrated Circuit) raliss chez le fondeur : le circuit est conu par l'utilisateur avec des outils de CAO, puis il est ralis par le fondeur. A l'heure actuelle, la plupart des circuits numriques est issue de ces 4 familles. Cependant, certains lments simples du catalogue standard (famille 74) sont toujours utiliss. Plus simplement, on peut distinguer deux catgories de circuits intgrs : les circuits standards et les circuits spcifiques une application : Les circuits standards se justifient pour de grandes quantits : microprocesseurs, contrleurs, mmoires, ASSP, Les circuits spcifiques sont destins raliser une fonction ou un ensemble de fonctions dans un domaine dapplication particulier. 2

La figure suivante reprsente une classification des circuits intgrs numriques.CIRCUIT STANDARD Circuit spcifique l'application

conu et ralis par le fabricant

ASIC

Full-custom

Semi-custom

PLDCircuit la demande Circuit base de cellules Circuit prdiffus Circuit programmable

Circuit compil

Circuit prcaractris

Rseau mer de portes

Rseau prdiffus classique

FPGA PROM PLA PAL EPLD ou CPLD

Dans la littrature, le terme ASIC est employ pour dcrire lensemble des circuits spcifiques une application. Or, dans le langage courant, le terme ASIC est presque toujours utilis pour dcrire les circuits raliss chez un fondeur. On dsigne, par le terme gnrique PLD (Programmable logic Device), lensemble des circuits programmables par lutilisateur. Parmi les circuits numriques spcifiques une application, il faut distinguer deux familles : les circuits conus partir dune puce de silicium vierge (Full-custom), les circuits o des cellules standards sont dj implantes sur la puce de silicium (Semicustom). Dans le premier groupe, les circuits appels Full custom , on trouve les circuits la demande et ceux base de cellules (CBIC : Cell Based Integrated Circuit). Le fondeur ralise l'ensemble des masques de fabrication. Dans le second groupe, les circuits appels Semicustom , on trouve les circuits prdiffuss (GA : Gate Array) et les circuits programmables. Les cellules standards, dj implantes sur la puce de silicium, doivent tre interconnectes les unes avec les autres. Cette phase de routage est ralise, soit par masquage chez le fondeur (prdiffus), soit par programmation. 3

Tous les ASICs ont un point commun ; il est ncessaire de passer par un fondeur pour raliser les circuits. Cela implique une quantit minimale de circuits fabriquer (au moins quelques dizaines de milliers par an) ainsi quun dlai de fabrication de quelques mois. De plus, le cot de fabrication initial (NRE) devient de plus en plus lev (quelques millions de $ en 2010) et doit tre amorti sur des quantits de circuits de plus en plus grandes. Ces inconvnients ont conduit les fabricants proposer des circuits programmables par l'utilisateur (sans passage par le fondeur) qui sont devenus au fil des annes, de plus en plus volus. Rassembls sous le terme gnrique PLD, les circuits programmables par l'utilisateur se dcomposent en deux familles : 1. les PROM, les PLA, les PAL et les EPLD, 2. les FPGA. Dans ce cours, nous allons utiliser une maquette FPGA pour tester nos designs. Voyons plus en dtail cette famille de circuits logiques programmables. 1.2 Les FPGA

Lanc sur le march en 1984 par la firme XILINX, le FPGA (Field Programmable Gate Array) est un circuit prdiffus programmable. Le concept du FPGA est bas sur l'utilisation d'une LUT (LookUp Table) comme lment combinatoire de la cellule de base. En premire approximation, cette LUT peut tre vue comme une mmoire (16 bits en gnral) qui permet de crer nimporte quelle fonction logique combinatoire de 4 variables dentres. Chez Xilinx, on appelle cela un gnrateur de fonction ou Function Generator. La figure suivante reprsente la cellule type de base d'un FPGA.MUX 2:1 D0 O D1 S LUT 4 entres D CE H Q mmoire

4

Elle comprend une LUT 4 entres et une bascule D (D Flip-Flop). La bascule D permet la ralisation de fonctions logiques squentielles. La configuration du multiplexeur 2 vers 1 de sortie autorise la slection des deux types de fonction, combinatoire ou squentielle. Les cellules de base d'un FPGA sont disposes en lignes et en colonnes. Des lignes d'interconnexions programmables traversent le circuit, horizontalement et verticalement, entre les cellules. Ces lignes d'interconnexions permettent de relier les cellules entre elles, et avec les plots d'entres/sorties (IOB : Input Output Block).

Les connexions programmables sur ces lignes sont ralises par des transistors MOS dont l'tat est contrl par des cellules mmoires SRAM. Ainsi, toute la programmation d'un FPGA est contenue dans des cellules SRAM. La configuration est le processus qui charge le design dans la SRAM afin de programmer les fonctions des diffrents blocs et de raliser leurs interconnexions. On voit (symboliquement), sur la figure ci-dessous, quil y a sous la logique 5

ddie lapplication une mmoire de configuration qui contient toutes les informations concernant la programmation des CLB et des IOB ainsi que ltat des connexions. Cette configuration est ralise, la mise sous tension, par le chargement dun fichier binaire contenu gnralement dans une mmoire flash srie qui se trouve cot du FPGA sur la carte.

La frquence maximale de fonctionnement d'une fonction logique est difficile prvoir avant son implmentation. En effet, cela dpend fortement du rsultat de l'tape de placementroutage. Cependant, une frquence comprise entre 100 et 200 MHz est un bon ordre de grandeur. Tous les FPGA sont fabriqus en technologie CMOS, les plus gros d'entre eux intgrent jusqu' 10000000 portes logiques utilisables. Leur prix est compris entre 10 et 1000 euros lunit. Par rapport aux prdiffuss classiques, les interconnexions programmables introduisent des dlais plus grands que la mtallisation (environ 3 fois plus lents). Par contre, les cellules logiques fonctionnent la mme vitesse. Pour minimiser les dlais de propagation dans un FPGA, il faut donc rduire le nombre de cellules logiques utilises pour raliser une fonction. Par consquent, les cellules logiques dun FPGA sont plus complexes que celles dun prdiffus.

6

1.3

Conception dun design

1.3.1 Saisie du design 1.3.1.1 Saisie de schma Le rle de la saisie de schma est dtablir, partir des composants utiliss et de leurs interconnexions, une liste de connectivit (netlist). Cette netlist peut ensuite tre utilise par le simulateur ou bien par les outils de placementroutage. Lutilisateur visualise son design laide de schmas graphiques faciles interprter. Les composants sont reprsents par des symboles graphiques. Les autres outils EDA (Electronic design automation) travaillent partir de la netlist ASCII (ou binaire). 1.3.1.2 Langage de description de bas niveau La saisie de schma est un moyen puissant pour spcifier un design car le schma graphique est une manire naturelle pour un lectronicien de crer ou de lire un design. Elle a toutefois trois inconvnients principaux : Lincompatibilit entre les librairies qui rend le portage dun design entre deux fabricants de FPGA quasiment impossible. La complexit dun schma devient trs leve quand le nombre de portes augmente. Audel de 10000 portes, il devient gnralement ingrable. Une modification importante au milieu dune page du schma ncessite gnralement la rcriture complte de la page. Pour toutes ces raisons, on a essay de dvelopper des outils spcifiant le design avec une entre de type texte plutt quavec une entre de type graphique. Les premiers langages de bas niveau ont t crs pour programmer les PAL puis les PLD. On trouvait principalement les deux langages suivants : PALASM. Il sagissait dun langage de programmation de PAL conu par AMD/MMI. Aujourdhui obsolte, les outils de dveloppement avaient limmense avantage dtre gratuits. ABEL. ABEL tait un langage de programmation de PAL conu par Data I/O. Il a t trs utilis aux USA mais les outils de dveloppement taient assez coteux.

7

1.3.1.3 Langage de description matriel Les deux langages prcdents taient loin dtre assez puissants pour pouvoir spcifier un ASIC ou un FPGA. Deux langages de description matriel sont apparus dans les annes 80 : Verilog et VHDL (VHSIC (Very High-Speed Integrated Circuit) Hardware Description Language). Les simulateurs et les synthtiseurs ne travaillent plus aujourdhui quavec un de ces deux langages. Le schma graphique, quand il est utilis, est simplement traduit dans un de ces langages. 1.3.2 La chane complte de conception en VHDL Nous allons maintenant voir la chane de dveloppement complte utilisant loutil ISE de la socit Xilinx. Elle comprend les tapes suivantes. 1. Ecriture du modle VHDL avec lditeur intgr du navigateur de projet. Nous allons voir au chapitre suivant une introduction lcriture de modles VHDL synthtisables. Il y a deux parties crire : Lentit (entres/sorties), Larchitecture (la description du fonctionnement). 2. Ecriture du testbench (on utilisera loutil HDL Bencher dans un premier temps). Pour pouvoir simuler le modle VHDL de notre design, il faut crire des vecteurs (stimuli) de test qui forment le testbench. Cette criture se droule en deux phases : dfinition graphique des vecteurs de test, sauvegarde de la saisie graphique et du fichier quivalent en langage VHDL. 3. Simulation fonctionnelle (simulateur ModelSim). A partir des fichiers design.vhd (modle VHDL du design) et design_tb.vhw (vecteurs de test en VHDL), nous pouvons effectuer la simulation fonctionnelle du design. Il y a quatre phases : compilation des fichiers, lancement du simulateur, excution des vecteurs de test, vrification du fonctionnement laide des chronogrammes.

8

4. Synthse logique avec XST. La synthse est lopration qui consiste, partir du fichier texte, produire la netlist contenant le schma lectrique destin aux outils de placementroutage (fichier au format NGC). Cette tape est particulirement dlicate dans le cas des FPGA cause de la complexit leve (granularit) de la cellule de base du FPGA. La description VHDL nutilise pas de bibliothque propritaire et elle est assez gnrale. La portabilit est donc bien meilleure quavec la saisie de schma (les langages VHDL et Verilog sont normaliss), mais toute la complexit du processus de dveloppement repose maintenant sur lefficacit de la synthse. Le rle du synthtiseur est ici de comprendre et dinterprter une description abstraite du design afin de gnrer un fichier NGC comprhensible par les outils dimplmentation, cest--dire une netlist NGC compose de primitives simples.

la synthse est lopration qui permet de crer une netlist NGC partir dune description de haut niveau crite en VHDL.

5. Implmentation. Le but de limplmentation est de gnrer un fichier de configuration permettant de programmer le FPGA partir du fichier NGC. Le tableau suivant indique les 4 tapes possibles ainsi que les rapports qui lui sont associs.

Etape Translation Mapping

Signification Cration dun fichier de design unique plat (sans hirarchie) Dcoupage du design en primitives existant dans le FPGA

Placement-routage Placement et routage des primitives Assignation des broches du FPGA configuration Gnration du fichier de configuration

9

6. Simulation temporelle (avec ModelSim). Aprs le placement-routage, on peut obtenir un modle VHDL rel du design (modle VITAL) ainsi que le fichier de timings qui lui est associ (fichier SDF). On utilise le fichier de stimuli gnr par HDL Bencher pour effectuer la simulation de timing du design en quatre phases : compilation des fichiers, lancement du simulateur, excution des vecteurs de test, vrification du fonctionnement laide des chronogrammes. 7. Tlchargement. Une fois le design entirement simul, nous pouvons tlcharger le fichier de configuration du FPGA dans la maquette grce au logiciel Impact : Initialisation de la chane JTAG, Association du fichier .bit avec le FPGA, Tlchargement dans le FPGA. 8. Vrification sur la maquette FPGA. Tous les designs raliss dans ce cours seront tests sur la maquette FPGA. Un design simul mais non test matriellement, cest comme un programme en C que lon aurait compil, mais pas excut. 1.4 La maquette FPGA

La maquette FPGA est constitue : Dun FPGA Xilinx XC3S200-4C en botier BGA 256 broches. Dun CAN 8 bits 32 MSPS (AD9280) prcd dun filtre anti-repliement (Tchebyscheff du 3me ordre, fc = 5 MHz). Le niveau dentre sur la prise Din (adapte 50 ) ne doit pas dpasser 1V crte crte. Le FPGA doit fournir un signal dhorloge (niveau CMOS 3.3V) ce composant. Dun CNA 8 bits 125 MSPS (AD9708) suivi dun filtre de lissage (Tchebyscheff du 3me ordre, fc = 5 MHz). Le FPGA doit fournir un signal dhorloge (niveau CMOS 3.3V) ce composant.

10

Din tlchargement CAN fc = 5 MHz FPGA XC3S200 Dout CNA fc = 5 MHz 50 Hin

DLD7 LD0

U

P

Hi BTN3 BTN0 SW7 SW0 Lo

De quatre afficheurs 7 segments multiplexs (dont trois nomms D (dizaine), U (unit) et P (puissance)). Un segment sallume quand la sortie du FPGA qui lui est connect est au niveau bas.

De 8 leds nommes LD0 LD7. Une led sallume quand la sortie du FPGA qui lui est connecte est au niveau haut. 11

De 8 interrupteurs (Lo/Hi) nomms SW0 SW7. Quand un interrupteur est sur Hi, lentre du FPGA qui lui est connect est au niveau haut.

De quatre boutons poussoirs nomms BTN0 BTN3. Lappui sur un de ces boutons dclenche une impulsion positive (met au niveau 1 lentre correspondante).

Dune entre dhorloge Hin (niveau CMOS 3.3V adapte 50 ). Dun oscillateur 50 MHz (100 ppm, niveau CMOS 3.3V) connect sur le FPGA. Dune prise de tlchargement JTAG pour programmer le FPGA. Le tlchargement seffectue via une des prises parallles du PC.

1.5

Dun cordon dalimentation. Il faut une alimentation 5 V, 1.6 A. Introduction au langage VHDL

1.5.1 Dfinition VHDL sont les initiales de VHSIC Hardware Description Langage, VHSIC tant celles de Very High Scale Integrated Circuit. Autrement dit, VHDL signifie : langage de description matriel s'appliquant aux circuits intgrs trs forte intgration. 1.5.2 Gnralits 1.5.2.1 Ncessit L'volution des technologies induit une complexit croissante des circuits intgrs qui ressemblent de plus en plus aux systmes complets d'hier. Aujourd'hui, on intgre dans une puce ce qui occupait une carte entire il y a quelques annes. La simulation logique globale du systme au niveau "porte" n'est plus envisageable en terme de temps de simulation. C'est donc tout naturellement que des simulateurs fonctionnels ont commenc tre utiliss en microlectronique. Dans les annes 70, une grande varit de langages et de simulateurs tait utilise. Cette diversit avait pour consquence une non portabilit des modles et donc une impossibilit d'change entre les socits. Un des rles de VHDL est de permettre l'change de descriptions entre concepteurs. Ainsi peuvent tre mises en place des mthodologies de 12

modlisation et de description de bibliothques en langage VHDL. L'effort de standardisation d'un langage tel que VHDL tait ncessaire par le fait qu'il ne s'agissait pas de construire un seul simulateur VHDL (contrairement la quasi-totalit des autres langages), mais de permettre l'apparition d'une multitude d'outils (de simulation, de vrification, de synthse, ...) de constructeurs diffrents utilisant la mme norme. Ceci garantit une bonne qualit (la concurrence) et l'indpendance de l'utilisateur vis vis des constructeurs de ces outils. 1.5.2.2 Un peu d'histoire Les langages de description matriel (HDL ou Hardware Description Language) ont t invents la fin des annes 60. Ils s'appuyaient sur les langages de programmation et devaient permettre la description et la simulation de circuits. Entre les annes 1968 et 1975, une grande diversit de langages et de simulateurs ont vu le jour. Cependant, leur syntaxe et leur smantique taient incompatibles et les niveaux de descriptions taient varis. En 1973, le besoin d'un effort de standardisation s'est fait ressentir et c'est ainsi que le projet CONLAN (pour CONsensus LANguage) a t mis en place. Les principaux objectifs de ce projet taient de dfinir un langage de description matriel permettant de dcrire un systme plusieurs niveaux d'abstractions, ayant une syntaxe unique et une smantique formelle et non ambigu. En mars 1980, le dpartement de la dfense des Etats Unis d'Amrique (DoD ou Department of Defense) lanait le programme VHSIC. En 1981, des demandes pour un nouveau langage de description de systmes matriels, indpendant de toute technologie et permettant de couvrir tous les besoins de l'industrie microlectronique, ont t formules. C'est en 1983, que d'importantes socits telles que IBM, Intermetrics ou encore Texas Instruments se sont investies dans ce projet et la fin de l'anne 1984, un premier manuel de rfrence du langage ainsi qu'un manuel utilisateur ont t rdigs. En 1985, des remises en cause et des valuations ont donn naissance la version 7.2 du langage VHDL, et en juillet 1986, Intermetrics a dvelopp un premier compilateur et un premier simulateur. C'est en mars 1986, qu'un groupe charg de la standardisation du langage VHDL a t cr. Il s'agit du groupe amricain VASG (VHDL Analysis and Standardization Group) qui est un sous comit des DASS (Design Automation Standard Subcommittees), eux-mmes manant de l'IEEE (Institute of Electrical and Electronics Engineers). La norme VHDL IEEE 1076 a t approuve le 10 dcembre 1987. En tant que standard IEEE, le langage VHDL volue tous

13

les cinq ans afin de le remettre jour, d'amliorer certaines caractristiques ou encore d'ajouter de nouveaux concepts. Ainsi en 1991 a dbut le processus de re-standardisation : regroupement et analyse des requtes, dfinition des nouveaux objectifs du langage, spcifications des changements apporter au langage. La nouvelle norme du langage VHDL a t vote en septembre 1993. La syntaxe et la smantique de cette nouvelle norme ont donn lieu un nouveau manuel de rfrence. Il est souligner que la nouvelle version du langage VHDL gnralement note VHDL93 est, au moins thoriquement, la seule et unique version lgale du langage. L'approbation de la nouvelle norme VHDL en 1993 rend le standard prcdent (IEEE Std 1076 vot en 1987) dsuet. Nanmoins, et heureusement, VHDL93 reste compatible avec VHDL87. 1.5.3 Les principales caractristiques du langage VHDL 1.5.3.1 Un langage s'appliquant plusieurs niveaux de descriptions Le langage VHDL couvre tous les niveaux partant des portes logiques de base jusqu'aux systmes complets (plusieurs cartes, chacune comprenant plusieurs circuits). Il s'applique tout aussi bien au niveau structurel qu'au niveau comportemental, en passant par le niveau transferts de registres ou RTL (Register Transfer Logic). La description comportementale Le circuit est dcrit sans tenir compte de la ralisation concrte sur un composant donn (Elle ne comporte aucune horloge et les largeurs des bus ne sont pas spcifies.). On utilise les fonctions de haut niveau dabstraction de VHDL. Le code est donc portable, mais il dpend entirement du synthtiseur pour le rsultat (si un tel synthtiseur existait, ce qui nest pas encore le cas). Ce style de description permet en particulier de spcifier le circuit sous forme dun algorithme. La description flot de donnes (RTL) Le circuit est dcrit grce plusieurs couche de registres (bascules D) relies par de la logique combinatoire. On utilise gnralement une liste d'instructions concurrentes d'affectations de signaux du type "