LES COMPOSANTS PROGRAMMABLES ET VHDL



Documents pareils
Manipulations du laboratoire

SIN-FPGA DESCRIPTION PAR SCHEMA

Le langage VHDL. Eduardo Sanchez EPFL

T. BLOTIN Lycée Paul-Eluard SAINT-DENIS

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

DOCUMENT PROTEGE PAR UN DROIT DE COPIE. CPLD ou FPGA Critères de choix. page 1

Conception Systèmes numériques VHDL et synthèse automatique des circuits

Conception Systèmes numériques VHDL et synthèse automatique des circuits

Conception de circuits numériques et architecture des ordinateurs

Logique séquentielle

VIII- Circuits séquentiels. Mémoires

IFT1215 Introduction aux systèmes informatiques

ELP 304 : Électronique Numérique. Cours 1 Introduction

QUESTION 1 {2 points}

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Chapitre 4 : Les mémoires

RÉALISATION ET MISE AU POINT D UN SYSTÈME DE TÉLÉSURVEILLANCE VIDÉO

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

SUR MODULE CAMÉRA C38A (OV7620)

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

SYSTEME DE TELESURVEILLANCE VIDEO

Lecteur de carte à puce LCPM1 SOMMAIRE

2.1 Le point mémoire statique Le point mémoire statique est fondé sur le bistable, dessiné de manière différente en Figure 1.

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

CONVERTISSEURS NA ET AN

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

GPA770 Microélectronique appliquée Exercices série A

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

La carte à puce. Jean-Philippe Babau

Algorithmique des Systèmes Répartis Protocoles de Communications

Encoder Encoder 1 sur 15. Codification fil par étage 15 étages max. + 2 flèches + signal de mouvement. Raccordements 0.1 mm²...

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Concevoir son microprocesseur

Arbres binaires de recherche

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Carte Relais GSM (Manuel Utilisateur)

Quoi de neuf en LabVIEW FPGA 2010?

Electronique Numérique

Les fonctions logiques

Aiguilleurs de courant intégrés monolithiquement sur silicium et leurs associations pour des applications de conversion d'énergie

ADÉQUATION ALGORITHME-ARCHITECTURE APPLIQUÉE AUX CIRCUITS RECONFIGURABLES

Corrigé des TD 1 à 5

Contribution à la conception par la simulation en électronique de puissance : application à l onduleur basse tension

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

Séminaire RGE REIMS 17 février 2011

ASR1 TD7 : Un microprocesseur RISC 16 bits

Génie Logiciel avec Ada. 4 février 2013

Cours 7 : Programmation d une chaîne d acquisition

THÈSE DEVANT L UNIVERSITÉ DE RENNES 1

TP Modulation Démodulation BPSK

Modules d entrées/sorties pour FX série XM07 et XM14

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT

Architecture des ordinateurs

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Description du logiciel Modbus RTU

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Fiche technique CPU 315SN/PN (315-4PN33)

Les liaisons SPI et I2C

LA MESURE INDUSTRIELLE

Fiche technique CPU 314SC/DPM (314-6CG13)

Relais d'arrêt d'urgence, protecteurs mobiles

Conception de Systèmes de Communications Numériques

Centrales de mesures. CENTRALES DE MESURES Nemo. A.6 Guide de choix. A.14 4 Modules. A.20 Encastré 72x72. A.24 Encastré 96x96. A.

LES MÉMOIRES FLASH : ENTRE MÉMOIRE VIVE ET MÉMOIRE DE STOCKAGE. Etienne Nowak 12 mars Etienne Nowak - 12 mars GIS-SPADON

Bien commencer avec un LaunchPad MSP430G et un Breadboard

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

EP A1 (19) (11) EP A1 (12) DEMANDE DE BREVET EUROPEEN. (43) Date de publication: Bulletin 2011/26

Proteus Design Suite V7 Instruments virtuels

Débuter avec PsoC ou PsoC niveau 0

Organisation des Ordinateurs

EMETTEUR ULB. Architectures & circuits. Ecole ULB GDRO ESISAR - Valence 23-27/10/2006. David MARCHALAND STMicroelectronics 26/10/2006

Régulateur de fin de course CMFL

Description d'une liaison

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Modélisation physique des cellules logiques... Modèles pour le placement routage, le format "LEF"

StruxureWare Power Monitoring Expert v7.2

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Conception et Intégration de Systèmes Critiques

Moteur DC: Comment faire varier sa vitesse?

Manuel d'utilisation de la maquette

Le multiplexage. Sommaire

IV- Comment fonctionne un ordinateur?

Alcatel OmniPCX Enterprise TSC-IP V1 (4098RE)

1 Démarrer L écran Isis La boite à outils Mode principal Mode gadget Mode graphique...

Structure fonctionnelle d un SGBD

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Relais d'arrêt d'urgence, protecteurs mobiles

Série 77 - Relais statiques modulaires 5A. Caractéristiques. Relais temporisés et relais de contrôle

2-2. Dimensions externes 113±0.2 P P R±??? 3. FONCTIONS ET TERMINOLOGIE. Sortie prédéfinie. Sortie arrêt du vérin. Type de sortie prédéfinie

Ordinateurs, Structure et Applications

Choix d'un serveur. Choix 1 : HP ProLiant DL380 G7 Base - Xeon E GHz

CONTEC CO., LTD. Novembre 2010

Conception de circuits numériques et architecture des ordinateurs

Serveur Lynx CALLEO Application 2240S Fiches Technique

Livret - 1. Informatique : le matériel. --- Ordinateur, circuits, codage, système, réseau. Cours informatique programmation.

AMBUS IS Collecteur d impulsions M-Bus

Gestion mémoire et Représentation intermédiaire

Transcription:

LES COMPOSANTS PROGRAMMABLES ET VHDL CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP -

HISTORIQUE..................................................... -4 INTRODUCTION................................................. 2- Principe de base et notation....................................... 2- Réalisation d une fonction logique................................. 2-2 LES PALS........................................................ 3- Principe...................................................... 3-22v0........................................................ 3- Architecture du circuit.......................................... 3- Cellule de base................................................ 3-2 Schéma interne partiel du 22v0................................... 3-2 29MA6..................................................... 3-3 Cellule de base................................................ 3-3 LES COMPOSANTS ALTERA....................................... 4- Les différentes familles.......................................... 4- Flexible Logic Element matrix.................................... 4- MAX 7000................................................... 4-2 Composants de la famille Max 7000................................ 4-2 Architecture des circuits......................................... 4-3 Cellule de base................................................ 4-4 Elément d entrée-sortie.......................................... 4-4 Prédiction des délais et analyse temporelle........................... 4-5 COMPOSANTS DE LA FAMILLE FLEX 8000...................... 4-6 FLEX 8000....................................................... 4-6 Composants de la famille Flex 8000................................ 4-6 Architecture................................................... 4-7 Cellule de base................................................ 4-8 Elément d entrée-sortie.......................................... 4-8 FLEX0KE....................................................... 4-9 Les composants de la famille 0ke................................. 4-9 Cellule de base............................................... 4- LOGIQUE COMBINATOIRE........................................ 5-2 Porte ET..................................................... 5-2 Fonction booléenne............................................. 5-2 Fichier source VHDL........................................... 5-3 Multiplexeur 2 Bits vers Bit..................................... 5-5 Multiplexeur de 8 bits vers bit avec signal de validation............... 5-6 LOGIQUE SEQUENCIELLE......................................... 6- Implémentation de registres...................................... 6- Bascule d..................................................... 6-2 Compteur..................................................... 6-4 Compteur avec instanciation lpm_counter........................... 6-5 Description de machines d états................................... 6-6 Machine d état avec variables d entrées asynchrones................... 6-7 Machine de Moore ou de Mealy................................... 6-8 CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP -2

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP -3

Dans les années 970, la grande majorité des systèmes électronique étaient construit à partir des circuits standard de la logique TTL. (Transistor Transistor Logic). Les circuits les plus complexes sont alors: 7490 Compteur décimal asynchrone 749 Registre à décalage (Entrée Série - Sortie Série) 7492 Diviseur par 2 7493 Compteur binaire 4 Bits 7494 Registre à décalage (ES-EP/SS) 7495 Registre à décalage 4 Bits 7496 Registre à décalage 5 bits (ESP/SP) Avec le développement de la technologie MOS (Metal Oxyde Semiconductor), sont apparus les premiers réseaux de logique programmable appelés PLA (Programmables Logic Aray). Dans les années 980, les PLD étaient utilisés pour le remplacement de boîtiers logiques TTL. En 993, les composants Altera comprennent de 300 à 24 000 portes en technologie CMOS 0,8 micron; Trois ans plus tard, la densité des composants varie de 300 à 00 000 portes. En 999, la famille APEX comprend des composants dont la densité va de 00 000 à million de portes; la technologie est à 0,25 micron. Le boitier des composants comporte jusqu à 600 pattes. (Ball Grid Array). Le pas des pattes est de mm. Le diamètre de la bille est de 0,45 mm. De nos jours, les PLD sont utilisés pour l intégration de systèmes et sont une alternative au ASIC (Application Specific Integrated Circuit). CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP -4

Les composants de logique programmable, plus connu sous le nom de PAL ont été inventés par la société MONOLITHIC MEMORIES INC. En général, un circuit programmable est un circuit pouvant être programmé par l utilisateur pour réaliser une fonction logique. La plupart des PLD (Programmable Logic Device) consiste en un réseau de ET suivi par un réseau de OU; l un des réseaux ou les deux sont programmables. Principe de base et notation a b F F4 F5 F8 > s s = (a+/f)(/a+/f2)(b+/f3)(/b+/f4) + (a+/f5)(/a+/f6)(b+/f7)(/b+/f8) Fusible intact : F = 0 Fusible grillé : F = Une PAL non-programmée a tous les fusibles intacts Pour simplifier la représentation du réseau de ET programmable, on laisse un seul fil connecté à l entrée de chaque ET. Il faut bien comprendre qu il y a autant de fils, qu il y a de variables. a b > s Réseau de ET programmable Réseau de OU cablé CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 2-

s= /a.b + a./b /a indique a barre L équation devra toujours s écrire sous la forme de somme de produit. Les termes produits sont des ET. Exemple : a.b (On parle de somme de "minterms" ou termeproduit). Ensuite on fait un OU logique des termes-produits. s est fonction de deux termes-produits a b a.b > s a.b CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 2-2

LES PALS Réseau de logique programmable. (Programmable Array Logic) Principe Toutes les pattes d entrés du circuit sont reliées à une matrice de ET Programmable. C est le principe de la matrice à diode. A chaque intersection de lignes et de colonnes, on peut établir une connection qui va créer un ET logique. 22v0 C était l un des circuits les plus utilisé, à l instar du 7400 dans la série TTL. pattes pour les entrées. (I à I) entrée d horloge globale (CLK/I0) pouvant servir aussi d entrée 0 pattes d entrée-sortie. (I/O0 à I/O9) Chaque patte d entrée-sortie est connecté à un buffer trois états. Architecture du circuit 8 CELLULE I/O0 I-I LOGIQUE 0 CELLULE I/O LOGIQUE 2 CELLULE I/O2 LOGIQUE RESEAU DE ET PROGRAMMABLES 4 CELLULE LOGIQUE i/o3 6 CELLULE I/O4 LOGIQUE 6 CELLULE I/O5 LOGIQUE 4 CELLULE I/O6 LOGIQUE CLK-I/O 2 CELLULE I/O7 LOGIQUE 0 CELLULE i/o8 LOGIQUE 8 CELLULE I/O9 LOGIQUE RESET CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 3-

Cellule de base Synchronous Preset SP D Q 0 0 0 I/O Q 0 AR Asynchronous Reset S S0 0 Schéma interne partiel du 22v0 CLK/I0 0 3 AR SP OU I/O CABLE 9 I VERS AUTRES LIGNES DU RESEAU PROGRAMMABLE DE ET VERS AUTRES CELLULES CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 3-2

29MA6 La PAL 29MA6 est optimisée pour les applications asynchrones. 4 pattes d entrées dédicacées 6 pattes d entrée-sortie patte d entrée d horloge patte d entrée à double usage: patte d entrée ou patte de contrôle global des amplicateurs de sortie (état trois-états ou non) 6 Cellules La matrice de ET comprend 56 colonnes et 78 lignes. 4 x 2 colonnes provenant des entrées dédicacées 6 x 2 colonnes provenant des macrocellules avec 2 retours 8 x 2 colonnes provenant des macrocellules a retour x 2 colonnes provenant de l entrée I/OE Les 78 lignes sont composés de 2 lignes de termes-produits disponibles pour la logique, 66 lignes sont utilisées pour les signaux de contrôle. Cellule de base Les signaux PRESET, RESET et CLK/LE sont programmables individuellement pour chaque MC. La sortie de chaque MC passe par un buffeur trois-états avant d être accessible sur la patte du composant. Chaque buffeur peut être contrôlé individuellement ou globalement ou être enable ou disable en permanence. VCC OE COMMUN Patte I/OE OE INDIVIDUEL Preset Asynchrone P0 0 P7 A P CLOCK COMMUNE Patte CLK/LE CLOCK INDIVIDUELLE 0 0 0 0 0 PRESET D Q Q RESET 0 0 S 0 S0 I/O RESET ASYNCHRONE INDIVIDUEL Asynchronous Reset AR VERS LE RESEAU DE ET 0 CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 3-3

LES COMPOSANTS ALTERA Les composants Altera se classent dans la catégorie des CPLD (Complexe PLD). Contrairement au FPGA qui utilisent des lignes de routage segmentées par l étape de routage, les CPLD utilisent des lignes de connections continues. L étape de routage interconnecte les structures internes avec ces lignes. Composants de technologie CMOS. Les différentes familles Classic TP EPROM MAX 5000 TP EPROM MAX 7000 T-P EEPROM MAX 9000 T-P EEPROM FLEX 6000 LUT SRAM FLEX 8000 LUT SRAM FLEX 0K LUT SRAM Multiple Array matrix Flexible Logic Element matrix EPLD Eraseable Programmable Logic Devices Composant de logique reprogrammable C est grace à la technologie CMOS EPROM que ces composants ont vu le jour [Altera Application Handbook July 988] CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-

MAX 7000 Programmable sur cartes avec la série S, les composants de la famille MAX7000 comprennent de 32 à 256 Cellules de Base. Le temps de transfert entre le signal d entrée et le signal de sortie sans registre varie de 5 ns à 7,5 ns suivant les circuits. Les circuits sont reprogrammables une centaine de fois Composants de la famille Max 7000 7032 7064 7096 728 760 792 7256 MC 32 64 96 28 60 92 256 BLOCS 2 4 6 8 0 2 6 E/S 36 68 76 00 04 24 64 tpd 6 5 7.5 6 6 7.5 7.5 MAX7xxxS GCLK OE2/GCLK2 GCLRn I/O TDI TMS TCK TDO 5 Termes-produits par macrocellule (MC) 6 Termes-produits supplémentaires disponibles terme-produit partageable disponible par MC CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-2

GCLK GCLR GCLK2 OE E/S I/O BUFFER 3 Etats 6-6 6-6 LAB 6 MC 6-6 36 PIA E/S E/S RESEAU D INTERCONNEXIONS PROGRAMMABLES LAB B E/S LAB C LAB D CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-3

CLEAR GLOBAL CLOCKS GLOBALS 2 Vient de la patte E/S Vers E/S MATRICE DE SELECTION DES TERMES-PRODUITS = VCC SELECTION ENABLE/CLOCK D PRN Q ENA CLRN SELECTION CLEAR Vers PIA Elément d entrée-sortie PIA VCC GND Vers Autres Pattes E/S Vient Cellule Drain-ouvert Slew-rate Entrée rapide de la cellule Vers PIA CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-4

Prédiction des délais et analyse temporelle. L analyse des temps après placement-routage est réalisée soit avec le simulateur maxplus2, soit avec un simulateur du commerce, soit avec le modéle de temps suivant: Délai t Interne Output-enable Buffeur 3 etats Délai Signaux Délai Delai Entree Contrôles tglob Bascule t IN Delai PIA Délai tpexp Délai Sortie tpia Délai Reseau Groupe Termes-Produits tsu th tod Porte tlad Parallele tpre tclr tod2 tod3 trd txz tcomb tzx Délai tlac tfsu tzx2 Bascule tic tfh tzx3 ten Délai Délai Entrée Délai Terme-Produits d expansion Rapide tfin E/S tio tsexp Tous les délais peuvent être calculés avec ce modèle. CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-5

COMPOSANTS DE LA FAMILLE FLEX 8000 FLEX 8000 Les composants de la famille Flex8k comprennent de 208 Cellules de base à 296. Ces composants sont configurables, c est à dire qu il est nécessaire de les configurer après la mise sous tension. On configure ces composants avec une EPROM série. On peut le configurer avec un controleur. Composants de la famille Flex 8000 8282 8452 8636 8820 888 8500 BASCULES 282 452 636 820 88 500 LABS 26 42 63 84 26 62 E/S 78 20 36 52 84 208 FLEX8K IN2 IN IN3 IN4 I/O CONFIGURATION CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-6

Architecture Lignes 68 Interconnections Rapides (68 Pistes métalliques de connections) 8 8 8 6 Colonnes!6 Pistes d interconnections Rapides 8x2 LAB Reseau Bloc Logique (8 LE) 24 Matrice d interconnexion locale CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-7

Cellule de base CARRY-IN CASCADE-IN LE-OUT DATA DATA2 DATA3 DATA4 TABLE LOOK-UP CHAINE CARRY CHAINE DE CASCADE D PRN CLK Q CLRN LABCTRL Logic LABCTRL2 Clear/Preset CLOCK LABCTRL3 SELECT LABCTRL4 CARRY-OUT CASCADE-OUT Elément d entrée-sortie Vers Lignes et Colonnes 6 Vient des Lignes et colonnes D } Control de Slew-rate CLR0 CLR/OE0 CLK0 CLK/OE OE2 OE3 OE[9..4] 8500 Seulement L élément d entrée-sortie contient un buffer bidirectionel et un registre qui peut-être utilisé soit comme registre d entrée ou comme registre de sortie. CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-8

FLEX0KE La famille 0K a la particularité de contenir de la RAM. Cela permet la mise en oeuvre de ram, de fifo dans votre circuit. La cellule de base et l élément d entrée-sortie ont été améliorés. On dispose de deux entrées globales d horloge et de quatre entrées dédicacées. Ces entrées utilisent des pistes de routage spéciales avec des délais et un "skew" plus faibles que les pistes d interconnections rapides. Les composants de la famille 0ke 0K30 0K50 0K00 0K30 0k200 BASCULES 728 2880 4992 6656 LABS 26 360 624 832 E/S 246 30 406 470 EAB 6 0 2 6 BIT RAM 2288 20480 24576 32768 CLK CLK2 IN2 IN IN3 IN4 I/O DEV_OE DEV_CLRN CONFIGURATION CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-9

Lignes 68 Interconnections Rapides (68 Pistes métalliques de connections) Colonnes!6 Pistes d interconnections Rapides LAB Reseau Bloc Logique (8 LE) LAB Reseau Bloc Logique (8 LE) Matrice locale d interconnexion EAB RAM avec Registre d E/S LAB Reseau Bloc Logique (8 LE) LAB Reseau Bloc Logique (8 LE) EAB RAM avec Registre d E/S Matrice locale d interconnexion Matrice locale d interconnexion Matrice locale d interconnexion CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-0

Cellule de base CARRY-IN CASCADE-IN DATA DATA2 DATA3 DATA4 TABLE LOOK-UP CHAINE CARRY CHAINE DE CASCADE D CLK PRN Q Vers Pistes rapides d interconnections LABCTRL LABCTRL2 Logic Clear/Preset ENA CLRN Vers interconnections locales au LAB Chip-Wide Reset LABCTRL3 CLOCK SELECT LABCTRL4 CARRY-OUT CASCADE-OUT Elément d entrée-sortie Vient des Lignes et colonnes OE[7..0] 8 Patte OE [DEV_OE] Vers Lignes et Colonnes D Vient des Lignes et colonnes Vient des Lignes et colonnes CLK[3..0] CLK[..0] ENA[5..0] ENA Open-Drain Output Control de Slew-rate CLRn[..0] 2 Entrées d horloge dédicacées Bus de contrôle Patte Reset du Composant CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-

Mémoire double port LIGNES D INTERCONNECTIONS Clocks Dédicacées Entrees Dédicacées D Q DATA_IN INTERCONNECTIONS LOCALES A L EAB inclken ENA inclken inclk outclk outclken D Q inclken ENA rden inclken outclken wren D Q inclken outclk ENA inclk outclk wren D ENA D ENA Q Q GENERATEUR IMPULSION ECRITURE READ ADRESSES DATA_OUT WRITE ADRESSES READ ENABLE 256X6 52X8 024X4 2048X2 WE D Q EPF0K30 6 EAB EPF0K50 0 EAB COLONNES D INTERCONNECTIONS CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 4-2

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-

Porte ET a b c s Fonction booléenne s = a.!b. c s égal a et b barre et c Fichier source VHDL LIBRARY ieee ; USE ieee.std_logic_64.all ; ENTITY combinatoire IS PORT ( a : IN STD_LOGIC ; b : IN STD_LOGIC ; c : IN STD_LOGIC ; s : OUT STD_LOGIC ) ; END combinatoire ; ARCHITECTURE simple OF combinatoire IS BEGIN s <= a AND NOT b AND c ; END simple ; Résultat de la simulation CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-2

Et - Exemple 2 Traduction littérale de l instruction VHDL s est égal à quand a égal et b égal 0 et c égal autrement s est égal à 0 Fichier source VHDL LIBRARY ieee ; USE ieee.std_logic_64.all ; ENTITY combinatoire IS PORT ( a : IN STD_LOGIC ; b : IN STD_LOGIC ; c : IN STD_LOGIC ; s : OUT STD_LOGIC ) ; END combinatoire ; ARCHITECTURE simple OF combinatoire IS BEGIN END simple ; s <= WHEN a= AND b= 0 AND c= ELSE 0 ; Fichier rapport s = LCELL( _EQ00 $ GND); _EQ00 = a!b c; CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-3

Porte ET- Exemple 3 Traduction littérale de l instruction VHDL Chaque fois qu il y a un changement d état d une des variables a, b et c si a égal et b égal 0 et c égal alors s égal (reçoit) autrement s égal 0 Fichier source VHDL LIBRARY ieee ; USE ieee.std_logic_64.all ; ENTITY combinatoire IS PORT ( a : IN STD_LOGIC ; b : IN STD_LOGIC ; c : IN STD_LOGIC ; s : OUT STD_LOGIC ) ; END combinatoire ; ARCHITECTURE simple OF combinatoire IS BEGIN END simple ; PROCESS (a,b,c) BEGIN IF a = AND b = 0 AND c = THEN s <= ; ELSE s <= 0 ; END IF ; END PROCESS ; Résultat de la synthèse Altera s = LCELL( _EQ00 $ GND); _EQ00 = a!b c; CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-4

Multiplexeur 2 Bits vers Bit Chaque fois qu il y a un changement d état d une des variables a, b et s si s égal alors y égal a autrement y égal b LIBRARY ieee ; USE ieee.std_logic_64.all ; ENTITY multiplexeur2x IS PORT ( a : IN STD_LOGIC ; b : IN STD_LOGIC ; s : IN STD_LOGIC ; y : OUT STD_LOGIC ) ; END multiplexeur2x ; a b s y ARCHITECTURE if_then_else OF multiplexeur2x IS BEGIN PROCESS (a,b,s) BEGIN IF s = THEN y <= a ; ELSE y <= b ; END IF ; END PROCESS ; END if_then_else ; Résultat de la synthèse Altera y = LCELL( _EQ00 $ GND); _EQ00 = a s # b!s; CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-5

Multiplexeur de 8 bits vers bit avec signal de validation LIBRARY ieee ; USE ieee.std_logic_64.all ; ENTITY multiplexeur8versen IS PORT( a : IN STD_LOGIC ; b : IN STD_LOGIC ; c : IN STD_LOGIC ; d : IN STD_LOGIC ; e : IN STD_LOGIC ; f : IN STD_LOGIC ; g : IN STD_LOGIC ; h : IN STD_LOGIC ; s : IN STD_LOGIC_VECTOR(2 DOWNTO 0) ; ena : IN STD_LOGIC ; y : OUT STD_LOGIC ) ; END multiplexeur8versen ; ARCHITECTURE instruction_case OF multiplexeur8versen IS BEGIN PROCESS (a,b,c,d,e,f,g,h,s,ena) BEGIN IF ena = THEN CASE s IS WHEN "000" => y <= a ; WHEN "00" => y <= b ; WHEN "00" => y <= c ; WHEN "0" => y <= d ; WHEN "00" => y <= e ; WHEN "0" => y <= f ; WHEN "0" => y <= g ; WHEN "" => y <= h ; WHEN OTHERS => y <= 0 ; END CASE ; ELSE y <= Z ; END IF ; END PROCESS ; LIBRARY ieee ; USE ieee.std_logic_64.all ; ENTITY multiplexeur8versen IS PORT ( a : IN STD_LOGIC ; b : IN STD_LOGIC ; c : IN STD_LOGIC ; d : IN STD_LOGIC ; e : IN STD_LOGIC ; f : IN STD_LOGIC ; g : IN STD_LOGIC ; h : IN STD_LOGIC ; s : IN STD_LOGIC_VECTOR(2 DOWNTO 0) ; ena : IN STD_LOGIC ; y : OUT STD_LOGIC ) ; END multiplexeur8versen ; ARCHITECTURE instruction_select OF multiplexeur8versen IS BEGIN SIGNAL n : STD_LOGIC ; WITH s SELECT n <= a WHEN "000", b WHEN "00", c WHEN "00", d WHEN "0", e WHEN "00", f WHEN "0", g WHEN "0", h WHEN "", 0 WHEN OTHERS ; y <= n WHEN ena= ELSE Z ; END instruction_select ; END Résultat de la synthèse Altera y = TRI(_LC049, ena); _LC049 = LCELL( _EQ00 $ VCC); _EQ00 = _X00 _X002 _X003 _X004 _X005 _X006 _X007 _X008; _X00 = EXP( d ena s0 s!s2); _X002 = EXP( ena h s0 s s2); _X003 = EXP( ena f s0!s s2); _X004 = EXP( ena g!s0 s s2); _X005 = EXP( b ena s0!s!s2); _X006 = EXP( c ena!s0 s!s2); _X007 = EXP( e ena!s0!s s2); _X008 = EXP( a ena!s0!s!s2); CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-6

Simulation CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-7

Utilisation de la logique trois états LIBRARY IEEE; USE ieee.std_logic_64.all; ENTITY bus3etats IS PORT( my_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); sel : IN STD_LOGIC ; my_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END bus3etats ; ARCHITECTURE simple OF bus3etats IS BEGIN my_out <= "ZZZZZZZZ" WHEN (sel = ) ELSE my_in; END simple ; Extrait du fichier rapport de maxplus2.rpt ~ my_out0 = TRI(_LC26,!sel); _LC26 = LCELL( my_in0 $ GND); Simulation CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 5-8

Tous les circuits de logiques séquencielles utilisent un ou plusieurs registres. Les machines d états sont un moyen très puissant de décrire de la logique séquencielle. Les compteurs, les registres à décalage font aussi partie de la famille "logique séquencielle" Implémentation de registres Les instructions VHDL suivantes inférent des registres, lorsqu elles sont dans le corps d un processus Instruction IF signal_d horloge EVENT AND signal_d horloge= THEN Instruction WAIT UNTIL signal_d horloge EVENT AND signal_d horloge= CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-

Bascule d a clk reset d prn q clk DFF clrn s Fichier source LIBRARY ieee ; USE ieee.std_logic_64.all ; ENTITY registre IS PORT ( a : IN STD_LOGIC ; clk : IN STD_LOGIC ; reset : IN STD_LOGIC ; s : OUT STD_LOGIC ) ; END registre ; ARCHITECTURE processus OF registre IS BEGIN PROCESS (reset,clk) BEGIN IF reset = 0 THEN s <= 0 ; ELSIF clk EVENT AND clk = THEN s <= a ; END IF ; END PROCESS ; END processus ; La liste de sensibilité du processus comprend les signaux reset et clk. A chaque changement d état sur un de ces deux signaux, le processus va être activé. L instruction IF [ou ELSIF] clk EVENT AND clk = est utilisée pour décrire de la logique synchrone. Résultat de la synthèse s = DFFE( a $ GND, GLOBAL( clk), GLOBAL( reset), VCC, VCC); Simulation CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-2

un composant de la librairie en précisant pour chaque port du composant les signaux connectés. Instanciation d une bascule dffe LIBRARY ieee ; USE ieee.std_logic_64.all ; LIBRARY altera ; USE altera.maxplus2.all ; ENTITY registre IS PORT ( a : IN STD_LOGIC ; clk : IN STD_LOGIC ; ena : IN STD_LOGIC ; preset : IN STD_LOGIC ; reset : IN STD_LOGIC ; s : OUT STD_LOGIC ) ; END registre ; ARCHITECTURE instanciation OF registre IS BEGIN instance : dffe PORT MAP (d => a, clk => clk, ena => ena, prn => preset, clrn => reset, q => s ) ; END instanciation ; Résultat de la synthèse s = DFFE( a $ GND, GLOBAL( clk), GLOBAL( reset), preset, ena); CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-3

Compteur LIBRARY ieee; USE ieee.std_logic_signed.all; USE ieee.std_logic_64.all; USE ieee.std_logic_arith.all; ENTITY decompteur IS PORT ( clear : IN STD_LOGIC ; load : IN STD_LOGIC ; clk : IN STD_LOGIC ; din : IN STD_LOGIC_VECTOR (7 DOWNTO 0) ; zero : OUT STD_LOGIC ); END decompteur ; ARCHITECTURE fonctionnelle OF decompteur IS BEGIN SIGNAL cpt : STD_LOGIC_VECTOR (7 DOWNTO 0) ; -- Process PROCESS (clk,clear) BEGIN IF clear = THEN cpt <= (OTHERS => 0 ) ; ELSIF clk event and clk = THEN IF (load = ) THEN cpt <= din ; ELSE cpt <= cpt - ; END IF ; END IF ; END PROCESS ; zero <= WHEN cpt = 0 ELSE 0 ; END fonctionnelle ; Résultat de la synthèse Version 9.0 07/30/98 EPM728ELC84-7 0 6 0 2 % INFO: Signal clk chosen for auto global Clock ** FILE HIERARCHY ** LPM_ADD_SUB:99 LPM_ADD_SUB:99 addcore:adder LPM_ADD_SUB:99 altshift:result_ext_latency_ffs LPM_ADD_SUB:99 altshift:carry_ext_latency_ffs LPM_ADD_SUB:99 altshift:oflow_ext_latency_ffs CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-4

Compteur avec instanciation lpm_counter LIBRARY ieee; USE ieee.std_logic_64.all; LIBRARY lpm ; USE lpm.lpm_components.all ; ENTITY decompteur IS PORT ( clear : IN STD_LOGIC ; load : IN STD_LOGIC ; clk : IN STD_LOGIC ; din : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ; zero : OUT STD_LOGIC ); END decompteur ; ARCHITECTURE fonctionnelle OF decompteur IS SIGNAL egal : STD_LOGIC_VECTOR (5 DOWNTO 0) ; BEGIN instance : lpm_counter GENERIC MAP ( LPM_WIDTH => 8, LPM_DIRECTION => "DOWN" ) PORT MAP ( clock => clk, aclr => clear, sload => load, data => din, eq => egal ) ; zero <= egal(0) ; END fonctionnelle ; CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-5

Description de machines d états arret LIBRARY ieee; USE ieee.std_logic_64.all; ENTITY machine IS PORT (clk : IN BIT ; rst : IN BIT ; sortie : OUT BIT) ; END machine ; ARCHITECTURE fonctionnelle OF machine IS marche BEGIN TYPE type_etat IS (arret,marche) ; SIGNAL etat : type_etat ; PROCESS (clk,rst) begin IF rst = THEN etat <= arret ; ELSIF (clk event and clk = ) THEN CASE etat IS WHEN arret => etat <= marche ; WHEN marche => etat <= arret ; WHEN others => etat <= arret ; END CASE ; END IF ; END PROCESS ; sortie <= WHEN etat=marche ELSE 0 ; END fonctionnelle ; Résultat de la synthèse ** STATE MACHINE ASSIGNMENTS ** etat: MACHINE OF BITS ( etat~ ) WITH STATES ( arret = B"0", marche = B"" ); sortie = TFFE( VCC, GLOBAL( clk),!rst, VCC, VCC); CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-6

Machine d état avec variables d entrées asynchrones LIBRARY ieee; USE ieee.std_logic_64.all; ENTITY machine IS PORT (clk : IN BIT ; rst : IN BIT ; ma : IN BIT ; at : IN BIT ; sortie : OUT BIT) ; END machine ; ARCHITECTURE fonctionnelle OF machine IS arret BEGIN TYPE type_etat IS (arret,marche) ; SIGNAL etat : type_etat ; at marche ma end fonctionnelle ; PROCESS (clk,rst) begin IF rst = THEN etat <= arret ; ELSIF (clk event and clk = ) THEN CASE etat IS WHEN arret => IF ma= THEN etat <= marche ; END IF ; WHEN marche => IF at= THEN etat <= arret ; END IF ; WHEN others => etat <= arret ; END CASE ; END IF ; END PROCESS ; sortie <= WHEN etat=marche ELSE 0 ; Résultat de la synthèse sortie = DFFE( _EQ00 $ VCC, GLOBAL( clk),!rst, VCC, VCC); _EQ00 = at sortie #!ma!sortie; Simulation CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-7

Machine de Moore ou de Mealy reset_m etat_m depart Fichier source vhdl LIBRARY ieee; USE ieee.std_logic_64.all; ENTITY machine IS PORT (clk : IN BIT ; rst : IN BIT ; ma : IN BIT ; at : IN BIT ; e : IN BIT ; sortie : OUT BIT) ; END machine ; ARCHITECTURE fonctionnelle OF machine IS signal BEGIN TYPE type_etat IS (reset_m,etat_m,etat2_m,etat3_m,etat4_m) ; SIGNAL etat : type_etat ; arret etat2_m etat3_m!signal signal etat4_m end fonctionnelle ; PROCESS (clk,rst) begin IF rst = THEN etat <= reset_m ; ELSIF (clk event and clk = ) THEN CASE etat IS WHEN reset_m => IF ma= THEN etat <= etat_m ; END IF ; WHEN etat_m => IF e= THEN etat <= etat2_m ; END IF ; WHEN etat2_m => IF e= 0 THEN etat <= etat3_m ; END IF ; WHEN etat3_m => IF e= THEN etat <= etat4_m ; END IF ; WHEN etat4_m => IF at= THEN etat <= reset_m ; END IF ; WHEN others => etat <= reset_m ; END CASE ; END IF ; END PROCESS ; sortie <= WHEN etat=etat_m OR etat=etat4_m ELSE 0 ; CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-8

Résultat de la synthèse etat: MACHINE OF BITS ( etat~3, etat~2, etat~ ) WITH STATES ( reset_m = B"000", etat_m = B"0", etat2_m = B"00", etat3_m = B"0", etat4_m = B"00" ); sortie = LCELL( _EQ004 $ GND); _EQ004 =!etat~ etat~2 etat~3 # etat~!etat~2!etat~3; On peut remarquer que l équation booléenne de commande est seulement fonction des états de la machine machine. Simulation tr CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-9

l état de la machine et d une variable d entrée asynchrone. Le signal commande étant synchrone de l horloge, il pourra avoir un retard d une période d horloge dans le pire cas. Si on veut éliminer ce délai, on peut tenir compte à la fois de l état de la machine et de l état du signal d entrée (respectivement depart et signal dans cet exemple) pour générer le signal commande. Les sorties de la machine sont alors asynchrones. On dit que l on a une machine de mealy. Souvent on a une machine de mealy sans même le savoir. Modification de l équation booléenne de commande dans le fichier VHDL. sortie <= WHEN (etat=reset_m AND ma= ) OR etat=etat_m OR (etat=etat3_m AND e= ) OR etat=etat4_m ELSE 0 ; L équation de sortie est maintenant fonction des états de la machine d état et de l état des variables d entrées sortie = LCELL( _EQ004 $!etat~3); _EQ004 = etat~ etat~2!etat~3!e #!etat~!etat~3!ma #!etat~ etat~2; Résultat de la simulation CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-0

CORAGEOUD FRANCOIS CNRS/IN2P3/LAPP 6-