Institut Universitaire de Technologie de CRETEIL-VITRY
Dpartement de Gnie lectrique et Informatique Industrielle
MC-ENSL1 - Composants programmables complexes COURS / TP FPGA Anne universitaire 2012-2013 J. VILLEMEJANE - julien.villemejane@u-pec.fr IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP Consignes Faites valider le code par lenseignant avant la programmation de la carte Faites valider chacun des exercices par lenseignant Il vous est conseill de faire un compte-rendu de chacun des TP Rpartition des sances Sance 1 (cours/TP) : Introduction (TP0 et TP1) Sance 2 (cours/TP) : Structuration-Simulation (TP2) Sance 3 (TP) : Structuration-Simulation (TP2) Sances 4 et 5 : Achage multiplex (TP3) Sance 6 : TP Test 1 Sances 7 9 : Projet Sance 10 : TP Test 2 Table des matires TP0 - Systmes logiques programmables 4 TP1 - Dveloppement dun systme numrique 10 TP2 - Structuration et simulation 16 TP3 - Achage multiplex 20 3 GEII - MC-ENSL1 TP 0 Systmes logiques programmables Objectifs Dcouvrir larchitecture des FPGA. Dcouvrir la carte dtude BASYS de Digilent. Dans le domaine des systmes numriques, il existe deux grandes sortes de composants : les processeurs (et drivs : microcontroleurs, DSP...) qui font du traitement squentiel les composants programmables qui font du traitement parallle Il existe trois grandes catgories de systmes logiques programmables : les CPLD (Complex Programmable Logic Device) les FPGA (Field Programmable Gate Array) les ASIC (Application Specic Integrated Circuit) Les CPLD sont de conception plus anciennes et ont gnralement des capacits moindres que les FPGA. Cependant, ils sont encore largement utiliss dans des systmes logiques (combinatoire ou squentiels). Dans les deux cas, ce sont des rseaux logiques programmables composs de nombreuses cellules logiques l- mentaires librement assemblables. Nous allons ici tudier plus en dtails les FPGA, les CPLD ayant dj t abords en premire anne (module ENSL1). IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP 1. Les FPGA Ces systmes programmables sont initialement destins au prototypage de systmes numriques complexes. Ils sont une bonne alternative aux circuits spciques, les ASIC (Application Specic Integrated Circuit), pour des petites ou moyennes sries. Il existe plusieurs grands fabricants : ALTERA, ACTEL (composants spcialiss) et XILINX. Pour les TP, nous utiliserons des FPGA de chez Xilinx. 1.1. Implantation Chaque fabricant propose aussi des composants de taille variable : de 100.000 10.000.000 portes logiques. Par comparaison, les portes standards commerciales possdent entre 2 et 8 portes logiques pour une surface de silicium quasiment identique. Quelque soit la technologie utilise, aucune porte logique nest rellement implante. Il sagit en fait de blocs logiques programmables, mais trs versatiles (RAM), et dune mer de connexions programmables. Chez Xilinx, ces blocs logiques sont appels CLB (Common Logic Blocks). 1.2. Avantages et inconvnients Trs haute densit Grande vitesse (100 MHz quelques GHz) Trs grand nombre dentres/sorties (botiers BGA) Prix lev (mais en baisse) Alimentation dicile (plusieurs tensions, courants levs, connexions multiples) Volatiles (cellules RAM) Circuits imprims (PCB - Printed Circuit Board) multicouches 2. Structure dun FPGA - Xilinx Larchitecture, retenue par Xilinx, se prsente sous forme de deux couches : une couche circuit congurable et un rseau de mmoire SRAM. La structure dun FPGA est donne dans la gure suivante. Lchelle est loin dtre relle, les fonctions logiques noccupant quenviron 5% du circuit. Figure 1 Structure dun FPGA Les FPGA sont un rassemblement et une combinaison de dirents blocs : dentres/sorties (IOB - Input Output Blocks), de routage (PSM - Programmable Switch Matrix), de logique programmable (CLB - Congurable Logic 5 IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP Blocks) et dautres blocs plus spciques. 2.1. Spartan XL 3E Les Spartan 3E, que nous allons utiliser par la suite, sont bass sur ce type de structure. La gure suivante dtaille leur architecture. Le tableau rassemble les direntes caractristiques de cette famille de FPGA. Figure 2 Structure et caractristiques des Spartan 3 - Xilinx Les CLB (voir gure 3) sont dcomposs en 2 ou 4 SLICE (appellation de Xilinx). Ces SLICE sont eux-mmes dcomposs en 2 LUT (Look-Up Table) et 2 bascules D. Figure 3 Bloc logique congurable - Xilinx Spartan 3 6 IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP 2.2. LUT et bascule Les fonctions combinatoires sont implantes sur des mmoires SRAM (LUT = Look-Up Table). La table de vrit est alors charge dans ces LUT. La gure 4 montre le cas de LUT 2 entres. En gnral, les FPGA sont quips de LUT 4 ou 6 entres. Figure 4 LUT - Xilinx Spartan 3 Les lments squentiels (synchrones sur front ou niveau) sont implants sur des bascules (D le plus frquemment). 3. Carte dtude BASYS2 - Digilent Lensemble des exemples et applications qui seront demands dans ces TP seront raliss sur une carte de dveloppe- ment BASYS2, propos par la socit Digilent. Ces cartes sont bases sur le FPGA Spartan 3E-250 de Xilinx. Figure 5 Carte BASYS2 - Digilent 3.1. Entres-sorties logiques Les entres logiques sont essentiellement ralises par 8 interrupteurs dnomms SW0 SW7 et par 4 boutons- poussoirs dnomms BTN0 BTN3. Les sorties pourront tre visualises sur 8 diodes lectroluminescentes (LD0 LD7) ou bien 4 acheurs 7 segments multiplexs (DISP1). 7 IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP lment broche lment broche lment broche lment broche SW7 N3 LD7 G1 BTN3 A7 RED0 C14 SW6 E2 LD6 P4 BTN2 M4 RED1 D13 SW5 F3 LD5 N4 BTN1 C11 RED2 F13 SW4 G3 LD4 N5 BTN0 G12 BLU1 H13 SW3 B4 LD3 P6 MCLK B8 BLU2 J13 SW2 K3 LD2 P7 GRN0 F14 SW1 L3 LD1 M11 HS J14 GRN1 G13 SW0 P11 LD0 M5 VS K13 GRN2 G14 3.2. Horloges Il y a trois horloges de caractristiques direntes produites par un circuit spcial : 25, 50 et 100 MHz. Ces trois signaux sont connects la mme broche spcique du FPGA. 3.3. Acheurs 7 segments multiplexs Le multiplexage de lachage permet de limiter le nombre de connexions pour ces 4 acheurs. Mais son fonctionnement exige la mise en uvre de composants squentiels. Pour activer un segment (cathode), on doit placer un 0 (zro) sur la sortie correspondant au segment seg. Pour activer un acheur, il faut galement placer un 0 sur la sortie an dsire, (en raison de la prsence dun transistor amplicateur inverseur). a...g, dp = cathodes des segments et du point dcimal de tous les acheurs ; an = commandes des anodes communes des acheurs. lment broche type an(0) F12 commande anode gauche an(1) J12 commande anode an(2) K14 commande anode an(3) M13 commande anode droite lment broche type A, seg(6) L14 sortie B, seg(5) H12 sortie C, seg(4) N14 sortie D, seg(3) N11 sortie E, seg(2) P12 sortie F, seg(1) L13 sortie G, seg(0) M12 sortie DP N13 sortie 3.4. Description en VHDL Pour dcrire les dirents systmes numriques, nous utiliserons le logiciel de chez Xilinx : ISE Webpack (version 10.5). Cette version est disponible gratuitement, moyennant une inscription, sur le site de xilinx (www.xilinx.com). Ce logiciel permet de dcrire des systmes en VHDL ou Verilog, de les tester (de manire fonctionnelle ou temporelle) et de crer un chier binaire compatible avec la cible (ici un FPGA Spartan 3E). Les tapes de dveloppement seront dcrites par la suite. 3.5. Contraintes Il ne faut pas oublier dassigner les entres/sorties de votre systme aux broches relles du systme. Le systme nal tant dj cbl, ces contraintes sont dj prdnies (voir tableaux prcdent - 7 segments - et suivant). 3.6. Implmentation du programme Une fois que toutes les tapes de compilation sont russies, un chier binaire *.bit est gnr et peut alors tre implant dans le FPGA. Pour cela, il est ncessaire de relier la carte sur un des ports USB de lordinateur et dallumer la carte dtude (inter- rupteur le plus gauche - SW8). 8 IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP Lutilitaire Adept (Digilent) sera alors utiliser pour transfrer le chier binaire vers le FPGA. 9 GEII - MC-ENSL1 TP 1 Dveloppement dun systme numrique Objectifs Dvelopper des systmes numriques programmables simples (multiplexeur, compteur...). Simuler un systme numrique. Il existe 2 langages de description pour les FPGA : VHDL : Very High Speed integrated circuit Hardware Description Language ; Verilog. Nous nous intresserons par la suite au VHDL, qui est un langage de description normalis (IEEE) et quasi-universel pour dcrire des circuits intgrs. 1. Structure dun projet Figure 6 Structure dun projet Un projet VHDL est trs souvent dcompos en sous-structures, appeles modules ou composants. Comme on pourrait le faire sur un circuit imprim, il sagit dinstancier dirents composants et de les relier entre eux par des ls (signaux en VHDL) pour raliser le systme complet. Chacun de ces modules est alors dcrit dans un chier source indpendant. Chacun de ces chiers sources peut alors tre test indpendamment en lui associant un chier de simulation (ou test- bench). Enn des chiers de contraintes permettent de faire le lien entre la description logicielle et la structure matrielle de la cible et de son environnement (position des entres, des sorties...). 2. Phases de dveloppement IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP Lcriture des dirents modules (ou composants) est la premire chose raliser. Ceux-ci peuvent tre dcrits et tests sparment. Nous verrons par la suite comment dcrire un composant. Ensuite, il est possible (et fortement conseill) de vrier la syntaxe de la description, en faisant appel la fonction "Check Syntax" dans la partie "Synthetize XST". Cette tape est assez rapide et ne ncessite pas de connatre la cible, contrairement ltape daprs. Viens ensuite la phase de synthse ("Synthetize XST") puis de placement et de routage ("Implement Design"). Ces tapes ncessitent la connaissance, dune part, de la cible (FPGA ou CPLD) et, dautre part, de lenvironnement du circuit (entres/sorties associes aux autres composants de la maquette). Il est donc ncessaire, avant de raliser ces tapes-l, de faire lassignation des broches du composant avec la description fournie. Pour cela, vous pouvez vous aider de la fonction "Assign Package Pins" dans la partie "User Constraints" et de la documentation de la maquette fournie en dbut de ce document. Il est aussi possible ce stade de lancer direntes simulations : fonctionnelle : permettant de savoir si le fonctionnement du systme est celui dcrit ; post-synthse : permettant, aprs synthse, de vrier nouveau le fonctionnement du systme ; temporelle : permettant, aprs ltape de routage, de valider les contraintes temporelles associes au placement des "composants". Ces direntes phases doivent tre rptes pour lensemble des modules composant lapplication. La dernire tape consiste produire le chier de programmation ("Generate Programming File") et le transfrer dans la mmoire du FPGA. 3. Structure dun module VHDL La description dun systme numrique par le biais du langage VHDL passe par 3 tapes direntes : la dclaration des ressources externes (bibliothques) ; la description de lentit du systme, correspondant la liste des entres/sorties ; la description de larchitecture du systme, correspondant la dnition des fonctionnalits du systme. Lensemble est contenu dans un chier source portant lextension *.vhd. 3.1. Dclaration des ressources externes Cette phase est ralise automatiquement pour les bibliothques courantes. On retrouve en en-tte du chier source *.vhd les instructions suivantes : 1 l i br ar y IEEE ; 2 use IEEE . STD_LOGIC_1164 . ALL; 3 use IEEE . STD_LOGIC_ARITH. ALL; 4 use IEEE . STD_LOGIC_UNSIGNED. ALL; 11 IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP 3.2. Entit Lentit permet de spcier les dirents ports dentres/sorties du systme. Pour chacun dentre eux, il est indispensable de donner sa direction : in entre simple out sortie simple buer sortie rtroactive inout entre-sortie bidirectionnelle (conits possibles) et son type (voir section suivante). 1 e nt i t y c our s i s 2 port ( 3 a , b : i n STD_LOGIC; comment ai r e 4 s : out STD_LOGIC 5 ) ; 6 end c our s ; 3.3. Architecture Une architecture est relie une entit et permet de dcrire le fonctionnement du systme. Cette description peut tre de deux types : description comportementale : le comportement du systme est dcrit (description la plus couramment utilise en VHDL) ; description structurelle : la structure meme du systme est dcrite base de portes logiques, bascules... (description rserve des fonctions simples ou pr-calcules). 1 a r c hi t e c t ur e Be ha vor i a l of c our s i s 2 d e c l a r a t i o n des s i gna ux 3 begi n 4 pr oc e s s us 1 ; 5 pr oc e s s us 2 ; 6 . . . 7 end Be ha vor i a l ; 4. Objets et types en VHDL 4.1. Objets signal objet physique, associ des vnements variable intermdiaire de calcul, non physique constant 4.2. Types Types de base : bit, bit_vector, integer, boolean Types IEEE : std_logic, std_logic_vector, signed, unsigned Types dnis par lutilisateur : - type numr, exemple : type jour is (lu, ma, me, je, ve, sa, di); (souvent utilis dans les ma- chines tat) - sous-type : subtype octet is bit_vector(0 to 7); 4.3. Notations bit : 0 ou 1 ; bit_vector : "0100" ; ASCII : "Texte" ; Dcimal : 423 ; Hexadcimal : x"1A" 4.4. Oprateurs en VHDL 12 IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP LOGIQUES : and, nand, or, nor, xor, xnor, not DCALAGE : sll, slr, sla, sra, rol, ror RELATIONNELS : =, /=, <, >, <=, >= ARITHMTIQUES : +, -, *, /, MOD CONCATENATION : & AFFECTATION : <= 5. Instructions en VHDL 5.1. Hors processus Ces instructions dcrivent le plus souvent des lments combinatoires (concurrentes). 5.1.1 Aectation conditionnelle 1 x <= a when cond1 e l s e 2 b when cond2 e l s e 3 . . . 4 z ; 5.1.2 Aectation slective 1 wi t h expr s e l e c t 2 x <= a when val 1 , 3 b when val 2 , 4 . . . 5 z when ot he rs ; 5.1.3 For... generate 1 f or i i n MIN t o MAX generat e 2 i n s t r u c t i o n s de d e s c r i p t i o n ; 3 end generat e ; 5.2. Dans un processus Lexcution des instructions seectue dans un ordre squentiel (ordre dcriture). Le processus est activ lorsquun des lments de la liste de sensibilit est modi. La mise jour des objets seectue simultanment la n du processus. 5.2.1 Syntaxe Label : process(liste des signaux de sensibilit) Nom des objets internes : types ; si ncessaire begin ... end process; 13 IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP 5.2.2 Test : SI 1 i f x=" 00 " t hen 2 y <= 0 ; 3 e l s i f x=" 01 " t hen 4 y <= 1 ; 5 end i f ; 5.2.3 Test : CAS 1 cas e x i s 2 when " 00 " => y <= " 00 " ; 3 when " 01 " => y <= " 10 " ; 4 when ot he rs => y <= " 11 " ; 5 end cas e ; 5.2.4 Blocs rptitifs 1 f or i i n 0 t o 5 l oop 2 i n s t r u c t i o n s ; 3 end l oop ; 1 whi l e i < 5 l oop 2 i n s t r u c t i o n s ; 3 end l oop ; 5.2.5 Temporisation 1 wai t u nt i l CLK e ve nt and CLK= 1 ; 2 i n s t r u c t i o n s ; 6. Tournures frquentes en VHDL 6.1. Dtection dun front 1 i f cl k e ve nt and c l k =1 t hen . . . ; f r o n t mont ant 2 i f cl k e ve nt and c l k =0 t hen . . . ; f r o n t de s c e nda nt 6.2. Remplissage dun vecteur (bit_vector) 1 x <= ( ot he rs => 0 ) ; t ous l e s b i t s a 0 2 x <= ( ot he rs => 1 ) ; t ous l e s b i t s a 1 14 IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP 7. Prise en main de la maquette On se propose ici de reprendre en main le logiciel Xilinx ISE Webpack. Pour cela, ils vous est demand de raliser les systmes suivants. EXERCICE 1 Dcrire un systme logique en VHDL dont le fonctionnement est donn par lquation : s = a + a + b. a et b seront des interrupteurs et s une LED. EXERCICE 2 1. Dcrire un multiplexeur 4 vers 1 avec une entre de validation. 2. Dcrire un dmultiplexeur 1 vers 4. Les entres seront ralises par des interrupteurs et les sorties par des LEDs. EXERCICE 3 Raliser un compteur 4 bits. Lhorloge sera ralise laide dun bouton poussoir et les sorties seront visualises sur des LEDs. Attention : pour les versions suprieures 10.1 de Xilinx ISE, an de pouvoir gnrer le chier de programma- tion correctement, vous devrez ajouter la ligne : NET "clk" CLOCK_DEDICATED_ROUTE = FALSE; dans le chier de contraintes (*.ucf). 15 GEII - MC-ENSL1 TP 2 Structuration et simulation Objectifs Structurer un systme en bloc fonctionnel (instanciation de composants). Simuler des systmes numriques simples avec Xilinx ISE. 1. Structuration et instanciation de composants An de simplier la description dun systme numrique, les concepteurs dcoupent leurs applications en sous-blocs fonctionnels dcrivant une partie de cette dernire. En VHDL, ces sous-blocs sont appels modules ou composants. Il est alors plus simple de dcrire et de tester chacun de ces modules sparment pour pouvoir les regrouper par la suite dans un seul systme. A limage dun catalogue de composants et dun circuit imprim, il sera alors possible dinstancier ces modules et de les relier entre eux par des signaux. 1.1. Dclaration dun composant La dclaration pralable dun composant seectue soit dans un paquetage, soit dans la zone de dclaration dune architecture. 1 component nom_e nt i t e 2 ge ne r i c ( param1 : i n t e g e r : = 3 ) ; 3 port ( e n t r e e : i n b i t ; 4 s o r t i e : out s t d _ l o g i c ) ; 5 end component ; 1.2. Structuration du systme Chacun des modules doit tre dcrit dans un chier *.vhd spar, portant le nom de lentit quil dcrit. Il y aura donc autant de chiers *.vhd que de types de composants. EXERCICE 0 On souhaite raliser un additionneur de 3 nombres cods sur 4 bits : a, b et c ; laide dadditionneurs 2 entres (4 bits). 1.2.1 Description du composant additionneur Fichier additionneur.vhd 1 l i br ar y IEEE ; 2 use IEEE . STD_LOGIC_1164 . ALL; 3 4 e nt i t y a d d i t i o n n e u r i s 5 port ( a , b : i n STD_LOGIC_VECTOR( 3 DOWNTO 0 ) ; 6 s : out STD_LOGIC_VECTOR( 3 DOWNTO 0) 7 ) ; 8 end a d d i t i o n n e u r ; 9 10 a r c hi t e c t ur e s i mpl e of a d d i t i o n n e u r i s 11 d e c l a r a t i o n des s i gna ux s i be s oi n 12 begi n 13 p r o c e s s u s a e c r i r e 14 s <= a + b ; 15 end s i mpl e ; IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP 1.2.2 Composants dclars dans la zone de dclaration de larchitecture Fichier system.vhd 1 l i br ar y IEEE ; 2 use IEEE . STD_LOGIC_1164 . ALL; 3 4 e nt i t y s ys t em i s 5 Port ( 6 a_sys , b_sys , c_s ys : i n STD_LOGIC_VECTOR( 3 DOWNTO 0 ) ; 7 s _s ys : out STD_LOGIC_VECTOR( 3 DOWNTO 0) 8 ) ; 9 end s ys t em ; 10 11 a r c hi t e c t ur e s i mpl e of s ys t em i s 12 component a d d i t i o n n e u r 13 port ( a , b : i n STD_LOGIC_VECTOR( 3 DOWNTO 0 ) ; 14 s : out STD_LOGIC_VECTOR( 3 DOWNTO 0) 15 ) ; 16 end component ; 17 18 s i g na l s _ s i g : STD_LOGIC_VECTOR( 3 DOWNTO 0 ) ; 19 20 begi n 21 add1 : a d d i t i o n n e u r 22 port map( a => a_sys , b => b_sys , s => s _ s i g ) ; 23 add2 : a d d i t i o n n e u r 24 port map( a => c_sys , b => s _s i g , s => s _s ys ) ; 25 end s i mpl e ; 1.3. Exercices EXERCICE 1 1. Ralisez et testez un multiplexeur de 4 lignes (4 interrupteurs) vers 1 ligne, que vous dcrirez dans un chier mux.vhd. 2. Ralisez et testez un dmultiplexeur 1 ligne vers 4 lignes, que vous dcrirez dans une chier demux.vhd. 3. Assemblez ces deux chiers dans system.vhd an de simuler une ligne de trans- mission srie ayant 4 interlocuteurs possibles de chaque cot. La slection des voies du multiplexeur (AS) et la slection de la destination en sortie du dmultiplexeur (AD) se feront par 2 x 2 interrupteurs. Les donnes seront ralises par 4 interrupteurs et la visualisation des sorties par 4 LEDs. On ralise ainsi une fonction de routage de donnes : slection dun metteur et dun rcepteur parmi des nombreux lments, en utilisant un medium unique de communication (virtuel ici). 17 IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP EXERCICE 2 La luminosit dun clairage (dans notre cas, une LED) peut tre rgle par lapplication dun signal rectangulaire priodique de frquence assez leve et de rapport cyclique non constant. On parle alors de gradateur. Le rapport cyclique dun signal rectangulaire priodique est dni comme le rapport entre le temps pendant lequel le signal est ltat haut et la priode. On exprime souvent ce rapport en pourcentage. Ainsi : la LED est teinte pour une rapport cyclique de 0%; la luminosit est maximale pour une rapport cyclique de 100%; la luminosit est environ moiti pour un rapport cyclique de 50%. Cette application peut tre simplement ralise laide dun compteur 8 bits (synchrone) et dun comparateur arithmtique 8 bits. Les interrupteurs dterminent le rapport cyclique. Lhorloge choisir pour le compteur est CLK1 (50 Mhz). 1. Donner la structure que devra avoir cette application. 2. Dcrire en VHDL chacun des modules de cette application. 3. Raliser le chier source permettant de dcrire ce gradateur de LED en instanciant les composants ncessaires. 2. Simulation Il existe 2 niveaux de simulation : comportementale (behavorial simulation) ; physique (post-route simulation). Dans la version allge de Xilinx ISE WebPack, seule la simulation comportementale est disponible. 2.1. Simulation comportementale Pour tester un module VHDL, il faut lui associer un module gnrateur de signaux (non synthtisable) : le testbench. Le testbench est un module VHDL spcial (disponible dans la liste des nouveaux modules lors de lajout de - chier source). Il inclut le module tester comme un composant et lui associe des signaux. Lcriture dun testbench est automatise avec Xilinx ISE. Il reste ensuite crire un scnario de test animant les signaux dentre du module en test. On utilisera alors la mme syntaxe quun module classique mais avec des instructions spciques. 2.1.1 Instructions spciales La gestion du temps peut se faire hors processus : 1 c l k <= not c l k a f t e r 1000 us ; 2 hor l oge a 500 Hz ou dans un processus : 1 hor l oge_500 : proces s 2 begi n 3 c l k <= 0 ; 4 wai t f or 500 us ; 5 c l k <= 1 ; 6 wai t f or 500 us ; 7 end proces s ; Linstruction wait ; provoque larret de la simulation. 18 IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP 2.1.2 Exemple 1 e nt i t y p o r t e a b _ t b i s 2 end p o r t e a b _ t b ; 3 4 a r c hi t e c t ur e be ha vi or of p o r t e a b _ t b i s 5 6 component p o r t e a b 7 port ( a , b : i n s t d _ l o g i c ; 8 s : out s t d _ l o g i c ) ; 9 end component ; 10 11 i n p u t s 12 s i g na l a , b : s t d _ l o g i c : = 0 ; 13 o u t p u t s 14 s i g na l s : s t d _ l o g i c ; 15 16 begi n 17 i n s t a n c i a t i o n 18 uut : p o r t e a b port map( a => a , b => b , s => s ) ; 19 20 s c e n a r i o 21 s t i m_pr oc : proces s 22 begi n 23 wai t f or 50 ns ; a <= 0 ; b <= 0 ; 24 wai t f or 50 ns ; a <= 1 ; b <= 0 ; 25 wai t f or 50 ns ; a <= 0 ; b <= 1 ; 26 wai t f or 50 ns ; a <= 1 ; b <= 1 ; 27 28 wai t ; 29 end proces s ; 30 31 end be ha vi or ; 2.1.3 Exercices EXERCICE 3 1. Associer ce chier de test la description de lexercice 1 du TP1 (fonction s = a + a + b). 2. Lancer la simulation et vrier le bon fonctionnement du systme. EXERCICE 4 1. Dcrire un compteur 4 bits avec une remise zro asynchrone. 2. Raliser le chier de test de ce module VHDL (en pensant remettre zro les sorties ds le dbut de la simulation). 3. Lancer la simulation et vrier le bon fonctionnement du systme. Lancer la simulation. 19 GEII - MC-ENSL1 TP 3 Achage multiplex Objectifs Raliser un module dachage hexadcimal sur 4 acheurs 7 segments fonctionnant en mode multiplex. 1. Principe dun achage multiplex Dans un systme dachage, le multiplexage est un procd qui consiste utiliser plusieurs voyants ou plusieurs acheurs et ne pas tous les allumer la fois, en vue dconomiser de lnergie et de limiter le nombre de ls de cblage. Par exemple, lachage de votre radio rveil numrique, de votre machine laver ou de votre four micro-onde est fort probablement multiplex. Les donnes envoyer sur les acheurs transitent par un mme bus (7 ls dans le cas dun acheur 7 segments) pour lensemble de ces acheurs. Ainsi le chire acher est envoy sur tous les acheurs en mme temps. Sans une gestion particulire de ces acheurs, il nest pas possible dcrire des nombres. Cest pourquoi, en parallle ce ces entres de donnes, il existe une entre de validation pour chacun des acheurs. Ces entres sont souvent commands via des transistors pour permettre un gain de courant. Le schma ci-dessous donne le cblage dun tel systme (3 acheurs 7 segments dans ce cas-l). 2. Etude du systme An de dvelopper ce module de gestion dachage multiplex de manire la plus simple possible, nous allons dcouper cette application en plusieurs blocs fonctionnels que nous allons par la suite dcrire en VHDL sparment : un dcodeur dcimal 7 segments ; un diviseur de frquence ; un compteur pour le balayage des acheurs ; un multiplexeur 4 vers 1 (4 x 4 bits dentre). Pour pouvoir tester ce systme, des registres de stockage dentre seront ajouts. EXERCICE 1 1. Faire le schma synoptique de ce systme en faisant ressortir les direntes entres et sorties, ainsi que les signaux intermdiaires. 2. Rappeler le fonctionnement dun registre. Combien de bascules seront ncessaires pour raliser ltage de stockage en entre ? IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP 3. Module 1 - Dcodeur BCD / 7 segments On souhaite raliser un dcodeur dcimal 7 segments utilisant un seul acheur (une des sorties an devra tre mise 0). EXERCICE 2 1. Crer un chier source VHDL nomm BCD7seg.vhd. 2. Dcrire ce systme en utilisant uniquement des aectations conditionnelles ou slec- tives (pas de process). Les donnes convertir sont fournies par 4 interrupteurs. 4. Module 2 - Diviseur de frquence La frquence de balayage des 4 acheurs sera xe 100 Hz. Il sera donc ncessaire de disposer dune horloge 400 Hz pour le balayage. Le diviseur de frquence concevoir sera actionn par lhorloge CLK1 de la carte (25 MHz). EXERCICE 3 1. Crer un chier source VHDL nomm prediv.vhd. 2. Dcrire ce systme en VHDL, pour passer dune frquence de 25 MHz 400 Hz. 5. Module 3 - Compteur pour le balayage An de pouvoir squentiellement slectionner un des acheurs, nous allons prsent nous intresser un compteur synchrone. EXERCICE 4 1. Combien dtats devra comporter ce compteur ? Combien de bascules seront alors ncessaires ? 2. Crer un chier source VHDL nomm cpt.vhd. 3. Dcrire ce systme en VHDL. 6. Module 4 - Multiplexeur dentre On souhaite pouvoir aecter lentre du dcodeur BCD/7segments une des 4 donnes prsentes en entre, an quelles soient squentiellement aches. EXERCICE 5 1. Quelle est la taille du mot binaire prsent chaque entre ? Quelle est la taille du mot de sortie ? 2. Crer un chier source VHDL nomm muxBCD.vhd. 3. Dcrire ce systme en VHDL. 7. Module 5 - Dcodeur 2 vers 4 On souhaite raliser un dcodeur 2 vers 4 permettant partir du module "compteur" de slectionner un des 4 acheurs 7 segments. Ces acheurs sont actifs ltat bas. 21 IUT Crteil - GEII - MC-ENSL1 - Composants programmables complexes COURS / TP EXERCICE 6 1. Crer un chier source VHDL nomm dec2v4.vhd. 2. Dcrire ce systme en utilisant uniquement des aectations conditionnelles ou slec- tives (pas de process). Les donnes convertir sont fournies par 4 interrupteurs. 8. Acheur complet En regroupant lensemble des lments prcdents, il est possible de raliser un acheur multiplex complet. EXERCICE 7 1. Crer un chier source VHDL nomm aff7seg.vhd. 2. Instancier les composants ncessaires au bon fonctionnement du systme dans ce chier source. 3. Raliser alors un acheur multiplex prsentant un message constant (congur dans le source, par exemple "1984"). 9. Amlioration Pour les exercices suivants, une source dentre sur 16 bits (4x4) et facilement rglable est ncessaire. EXERCICE 8 1. Crer un chier source VHDL nomm regBCD.vhd. 2. Dcrire un registre parallle 4 bits ayant une entre de validation. 3. Ajouter la description contenue dans aff7seg.vhd la possibilit davoir 4 registres en entre, en instanciant le composant prcdemment ralis. 4. Tester alors lacheur complet. Les 4 entres de chacun des registres seront relies 4 interrupteurs. Les entres de validation de ces registres seront relies aux 4 boutons-poussoirs. Lors de lappui sur lun deux, la donne prsente sur les 4 interrupteurs sera charge dans le registre correspondant et ache sur lacheur correspondant. An de pouvoir gnrer le chier de programmation correctement (Xilinx ISE version suprieure 10.1), vous devrez ajouter la ligne : NET "clk" CLOCK_DEDICATED_ROUTE = FALSE; dans le chier de contraintes (*.ucf). 22