720 likes | 1.25k Views
Cours VHDL. Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn. Le VHDL. V ery High Speed Integrated Circuit H ardware D escription L angage.
E N D
Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn
Le VHDL Very High Speed Integrated Circuit Hardware Description Langage Langage :de description structurelle et comportementale de la conception des dispositifs matériels en électronique numérique (ASICs, CPLD, FPGA, logique câblée) Autres HDL :Verilog, UDL/1, Estérel, Hardware C M. MASMOUDI Cours VHDL
Pourquoi? • Langage pour la spécification des systèmes digitaux, aussibien au niveau comportemental que structural • Utilisation: • description des systèmes • simulation • aide à la conception • documentation • Caractéristiques principales: • description à plusieurs niveaux • simulation activée par événements (event-driven) • modularité • extensibilité • langage général, fortement typé M. MASMOUDI Cours VHDL
Historique 1994 Révision du standard IEEE 1164 1987 Publication du standard IEEE 1076 1986 Transfert des droits à l’IEEE 1983 Développement des bases du langage par Intermetrics, IBM et TI 1981 Initiation du langage par le US - DoD M. MASMOUDI Cours VHDL
Concept VHDLpermet de coder une fonction d’une manière structurelle (comme un schéma) et/ou comportementale (fonctionnelle) Codage comportemental • plus proche de l’algorithme • portabilité, maintenabilité, versatilité Codage structurel • création d’une hiérarchie • emploi de macrofonctions • format de la liste d’équipotentielle (netlist) S <= not ((A and B) or (C and D)); A B S C D M. MASMOUDI Cours VHDL
radix1 radix2 radix3 Niveau d’abstraction Le codage en VHDL peut se faire selon 4 niveaux d’abstraction, ce qui permet une conception descendante Architecture synthétisable Algorithme Netlist Architecture registres bibliothèque S=fft(e,64) Synthèse logique Niveau 1 Niveau 2 Niveau RTL netlist M. MASMOUDI Cours VHDL
Niveau d’abstraction M. MASMOUDI Cours VHDL
Niveau d’abstraction • Le niveau système : cette description regroupe l’ensemble des spécification du circuit décrites sous la forme de comportements vis-à-vis de l’environnement associé au circuit, de performances à satisfaire, de contraintes d’utilisation. Cette description est de nature purement externe par rapport au circuit. • Le niveau fonctionnel : la description au niveau fonctionnel exprime le premier niveau interne de la solution, sous la forme d’un ensemble de fonctions +/- interdépendantes et de complexité variée. Cette description est orientée application ou objectif à satisfaire. M. MASMOUDI Cours VHDL
Niveau d’abstraction • Le niveau architectural : la description architecturale exprime les modules exécutifs et les interconnections nécessaires entre ceux-ci pour satisfaire la fonctionnalité globale du niveau supérieur. Cette description est donc orientée réalisation. • Le niveau logique: la description représente un circuit par un ensemble interconnecté de fonctions logiques de faible complexité. • Le niveau électrique : la description électrique représente le circuit sous la forme d’éléments microélectroniques (transistors essentiellement) interconnectés de façon à assurer la fonctionnalité du circuit spécifiée par les niveaux supérieurs. M. MASMOUDI Cours VHDL
Modèle de Gajski M. MASMOUDI Cours VHDL
Etapes VHDL :spécification, conception et description matérielle en électronique numérique Analyse du système et partitionnement des tâches Écriture des « Test Bench » en VHDL Écriture du code VHDL par bloc Simulation du code VHDL Synthèse au niveau portes Simulation au niveau portes Implémentation matérielle M. MASMOUDI Cours VHDL
A2 + B2 Apport Pour les circuits intégrés Diminution des erreurs simulation à différents niveaux d’abstraction Diminution du temps de développement conception à plus haut niveau Pour les systèmes Normalisation des échanges langage universel et unique Anticipation de l’intégration modèles de composants simulable avant disponibilité M. MASMOUDI Cours VHDL
ARCHITECTURE : décrit le contenu du circuit (câblage interne) ENTITY décrit les ports d’E/S du circuit (brochage) a d b f c Circuit Boîte noire a d b f c Description matérielle • VHDL : se base sur la paireENTITY - ARCHITECTURE M. MASMOUDI Cours VHDL
Entity Description externe du composant (Boîte noire) • Définition des ports d’E/S : type, sens, taille, … • Définition des paramètres ENTITY <entity name> IS<generic declaration> <port declaration>END[ENTITY] <entity name> ; <genericdeclaration> : paramètres du composant<portdeclaration> : interface avec l’environnement extérieur M. MASMOUDI Cours VHDL
Les ports: PORT( <port name> : <mode> <type> ; ..... <port name> : <mode> <type>); Les modes: IN : Données qui sont des entrées uniquement OUT : Données qui sont des sorties uniquement INOUT : Données bidirectionnelles (en entrée ou en sortie) BUFFER : Données en sortie mais aussi en feed-back interne dans le circuit M. MASMOUDI Cours VHDL
Types des ports BIT : valeurs possibles ‘0’ et ‘1’ BIT_VECTOR : un vecteur de bits INTEGER : utilisés comme indices (boucles), constantes, … BOOLEAN : prend deux valeurs ‘TRUE’ ou ‘FALSE’ CHARACTER : caractères ascii Exemple : SIGNAL a: BIT_VECTOR(0 TO 3); - - e.g... Sens ascendant SIGNAL b: BIT_VECTOR(3 DOWNTO 0); - - e.g... Sens descendant a <= "0111"; b <= "0101"; Ce qui signifie : a(0) = '0' b(0) = '1' a(1) = '1' b(1) = '0' a(2) = '1' b(2) = '1' a(3) = '1' b(3) = '0' M. MASMOUDI Cours VHDL
Valeur L 0 1 W U H X - Z 1 - Faible Haute impédance Don’t Care Interprétation 0 - Forcé 0 - Faible Uninitialized (non-initialisé) Inconnu - Faible Inconnu - Forcé 1 - Forcé Types des ports (IEEE1164) libraryIEEE; -- librairie useIEEE.std_logic_1164.all;-- package ENTITY exple1 IS PORT ( …. ); END exple1; ARCHITECTUREarchlogicOF exle1 IS BEGIN ….. ENDarchlogic; Valeurs des signaux std_logicet std_logic_vector M. MASMOUDI Cours VHDL
Déclarations d’une entité Circuit 1 rst q[N:0] d[N:0] co clk ENTITY circuit1 IS GENERIC (N: INTEGER:=7); PORT ( clk, rst: IN BIT; d: IN BIT_VECTOR(7 DOWNTO 0); q: OUT BIT_VECTOR(7 DOWNTO 0); co: OUT BIT); END circuit1; M. MASMOUDI Cours VHDL
L’architecture Objectif: Description ”du câblage interne” Modes de description: • Structurelle • Instanciations : placement de composants logiques et leur interconnexion • Comportementale(aspect algorithmique) • Description haut niveau (abstraite) IF a = b THEN x<=a; • Équations logiques x <= (a OR b) AND c; M. MASMOUDI Cours VHDL
Paire entité-architecture LibraryIEEE; use IEEE.STD_1164.ALL; Entitydécrit l’interface externe d’un module, elle contient : • Nom du module (ex: AOI) • Ports d ’entrée/sorties (Nom, direction: in,out, inout, buffer,…) • Type (BIT, BIT_VECTOR, BOOLEAN, INTEGER,…) • Paramètres Architecturedécrit le fonctionnement interne et comporte : • zone de déclarations • zone pour les instructions • toujours associée à une entité • plusieurs architectures peuvent être associées à la même entité entity AOI is port ( A, B, C, D: in STD_LOGIC; F: out STD_LOGIC ); end AOI; architecture Acrh1 of AOI is begin F<=not((A and B)or(C and D)); end arch1; -- fin du code VHDL M. MASMOUDI Cours VHDL
Paquetage • Paquetage “Package” : collection d’objets réutilisables : constantes, composants, types, fonction, procédure, ... • 2 unités de compilation : • déclaration de paquetage • corps de paquetage • Le contenu de la déclaration de paquetage est “visible” depuis une autre unité de compilation si elle en a déclaré l’utilisation • Le contenu du corps de paquetage est “invisible” des autres unités de compilation M. MASMOUDI Cours VHDL
in1 cout a in2 Half adder carry b sum cout a result cin Half adder b sum Codage des composants ENTITY half_adder IS PORT (a,b: IN std_logic; sum,cout : OUT std_logic); END half_adder;ARCHITECTURE beh OF half_adder ISbegin sum <= a XOR b;cout <= a AND b;end beh; ENTITY OR_2 IS PORT(a,b: IN std_logic; c : OUT std_logic); END OR_2;ARCHITECTURE beh OF OR_2 ISbegin c <= a OR b;end beh; M. MASMOUDI Cours VHDL
Instanciation Méthode 1 <inst label> : ENTITY <library>.<ent name>(<arch name>); ENTITY full_adder IS PORT(in1,in2,cin: IN std_logic; result,carry : OUT std_logic); END full_adder; ARCHITECTURE structural OF full_adderSIGNAL s1,s2,s3 : std_logic;BEGINH1 : entity work.half_adder(beh)PORT MAP(a=>in1, b=>in2, sum=> s1, cout => s3); H2 : entity work.half_adder(beh)PORT MAP(a=> s1, b=> cin, sum => result, cout => s2); O1 : entity work.OR_2(beh)PORT MAP(a=>s2, b=> s3, c=> carry);END structural; M. MASMOUDI Cours VHDL
Instanciation Méthode 2 ENTITY full_adder IS PORT(in1,in2,cin: IN std_logic; result,carry : OUT std_logic); END full_adder; ARCHITECTURE structural OF full_adderCOMPONENT half_adderPORT(a,b : IN std_logic; sum,cout : OUT std_logic);END COMPONENT; COMPONENT OR_2PORT(a,b : IN std_logic; c : OUT std_logic);END COMPONENT; SIGNAL s1,s2,s3 : std_logic;BEGINH1 : half_adderPORT MAP(a=>in1, b=>in2, sum=> s1, cout => s3);H2 : half_adder PORT MAP(a=> s1, b=> cin, sum => result, cout => s2);O1 : or_2 PORT MAP(a=>s2, b=> s3, c=> carry);END structural; M. MASMOUDI Cours VHDL
Opérateurs CATEGORIE TYPE OPERANDES SIGNIFICATION and nand or nor xor xnor not + - * / abs ** mod rem boolean bit bit_vector integer real integer et non-et ou non-ou ou exclusif non ou-exlusif non + unaire (signe +) ou addition - unaire (signe -) ou soustraction multiplication division valeur absolue exponentiation modulo reste M. MASMOUDI Cours VHDL
Opérateurs CATEGORIE TYPE OPERANDES SIGNIFICATION Entrée Résultat tout type boolean scalaire bit_vector (amplitude : integer) bit bit_vector = /= < <= > >= sll srl rol ror & égal non égal inférieur inférieur ou égal supérieur supérieur ou égal logique gauche logique droite circulaire gauche circulaire droite concaténation M. MASMOUDI Cours VHDL