Les circuits logiques programmables - FPGA Introduction Introduction au au langage langage VHDL VHDL Sémantique Sémantique Fabrice CAIGNET LAAS - CNRS [email protected] F.CAIGNET 1 Les circuits logiques programmables - FPGA Contenu Contenu:: I. Les bases de la sémantique du VHDL II. La déclaration des modèles III. Les instructions concurrentes - combinatoires IV. Les instructions séquentielles F.CAIGNET 2 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les commentaires Les commentaires commencent à la suite de : « -- » Ex aa<= Ex:: <=bbaftre aftre20 20ns; ns; ----aareçoit reçoitbbaprès après20 20ns ns Le LeVHDL VHDLne neprendra prendrapas pasen encompte comptetout toutce cequi quisuit. suit. Les identificateurs •Tous les caractères sont pris en compte dans le langage VHDL •Le premier caractère doit être une lettre •Il n’y a pas de différences entre minuscules et majuscules Ex Ex:: F.CAIGNET autorisé autorisé:: Interdits Interdits: : NAND NAND Bascule_JK Bascule_JK NE555 NE555 A#2 A#2 2A 2A A$2 A$2 A__2 A__2 3 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les chaînes de caractères Elles sont prises entre des doubles guillemets, on y différencie minuscules et majuscules Ex ‘’‘’this Ex: : thisstring’’ string’’isisdifférents différentsthan than‘’THIS ‘’THISSTRING’’ STRING’’ Les nombres Ils peuvent être exprimés en décimal ou en base 2 à 16 • Décimaux : 00 11 1e6 1e6 0.25 1.3e+6 0.25 12.0 12.0 1.3e+6 • Les bases: entiers entiers((integer) integer) Réel Réel(real) (real) format : base#nombre# 2#0110000010# 2#0110000010# 16#12E4F# 16#12E4F# binaire binaire Hexadécimal Hexadécimal • Les grandeurs physique: On Onsépare sépareles leschiffres chiffresdes desunités unités 55ps 33ms 55VV ps ms F.CAIGNET 4 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les chaînes de bits Les bases sont définies comme suit : • B : binaire (binary) • O : Octale (octal) • X : Hexadécimale (hexadecimal) Ex Ex:: F.CAIGNET B’’10001010’’ B’’10001010’’ O’’126’’ O’’126’’ X’’56’’ X’’56’’ ----longueur longueur88bits bits ----longueur longueur99bits bitseq eqB’’001 B’’001010 010110’’ 110’’ ----longueur longueur88bits bitseq eqB’’0101 B’’01010110’’ 0110’’ 5 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les types et sous-types F.CAIGNET 6 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les types et sous types du package « standart » : numériques F.CAIGNET 7 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les types et sous types du package « standart » : énumérés F.CAIGNET 8 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les types et sous types du package « standart » : physiques F.CAIGNET 9 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les types et sous types du package « standart » : les tableaux F.CAIGNET 10 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les types et sous types du package « standart » : les tableaux F.CAIGNET 11 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les définitions de type : objets Objet Objet::élément élémentnommé nomméayant ayantdes desvaleurs valeursd'un d'untype typedonné donné On trouve 3 principales classes d’objets • Constantes : permet de forcer une valeur • Variables : permet d’initialiser une valeurs pouvant varier • signaux : représentent les signaux réels d’un circuits F.CAIGNET 12 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les définitions de type objets ; Constantes F.CAIGNET 13 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les définitions de type objets ; Variables F.CAIGNET 14 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les définitions de type objets ; Signaux F.CAIGNET 15 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les expressions et les opérateurs F.CAIGNET 16 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les attributs F.CAIGNET 17 Les circuits logiques programmables - FPGA I.I.Les Lesbases basesde dela lasémantique sémantiqueen enVHDL VHDL Les attributs F.CAIGNET 18 Les circuits logiques programmables - FPGA II. II.Description Descriptiond’un d’unmodèle modèleVHDL VHDL Rappel sur l’architecture d’un modèle VHDL F.CAIGNET 19 Les circuits logiques programmables - FPGA II. II.Description Descriptiond’un d’unmodèle modèleVHDL VHDL Clause de contexte : entête d’un fichier VHDL : déclaration des bibliothéques LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ENTITY combi1 IS PORT ( a :IN STD_LOGIC_VECTOR(3 DOWNTO 0); b :IN STD_LOGIC_VECTOR(3 DOWNTO 0); S : OUT STD_LOGIC_VECTOR(11 DOWNTO 0); T : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END combi1; Permet Permetde dedéfinir définirdes des variables… variables… F.CAIGNET 20 Les circuits logiques programmables - FPGA II. II.Description Descriptiond’un d’unmodèle modèleVHDL VHDL Déclaration de l’entité F.CAIGNET 21 Les circuits logiques programmables - FPGA II. II.Description Descriptiond’un d’unmodèle modèleVHDL VHDL Déclaration de l’entité Chaîne de caractères In : entrée Out : Sortie Inout : entrée sortie Buffer : signal de sortie utilisé comme une entrée dans description F.CAIGNET Bit, std_logic : signal Bit_vector, std_logic_vector : bus integer : signal Integer range : bus … 22 Les circuits logiques programmables - FPGA II. II.Description Descriptiond’un d’unmodèle modèleVHDL VHDL Déclaration de l’architecture L’architecture L’architecturedécrit décritle lefonctionnement fonctionnementsouhaité souhaitépour pourun uncircuit circuitou ou une unepartie partiedu ducircuit. circuit. L’architecture établit à travers les instructions les relations entre les entrées et les sorties. On peut avoir un fonctionnement purement combinatoire, séquentiel voire les deux séquentiel et combinatoire. Plusieurs architectures peuvent décrire la même entité. F.CAIGNET 23 Les circuits logiques programmables - FPGA II. II.Description Descriptiond’un d’unmodèle modèleVHDL VHDL Déclaration de l’architecture Integer range 0 to 9; F.CAIGNET 24 Les circuits logiques programmables - FPGA II. II.Description Descriptiond’un d’unmodèle modèleVHDL VHDL Types d’instructions de l’architecture F.CAIGNET 25 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Vue générale Pour une description VHDL toutes les instructions sont évaluées et affectent les signaux de sortie en même temps. L’ordre dans lequel elles sont écrites n’a aucune importance. En effet la description génère des structures électroniques, c’est la grande différence entre une description VHDL et un langage informatique classique. les instructions concurrentes sont les bases du langage VHDL, elles servent essentiellement à l’affectation. Le mode concurrent représente l’aspect combinatoire du fonctionnement des circuits l’ordre dans lequel seront écrites les instructions n’a aucune importance. F.CAIGNET 26 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Exemple : La synthèse de l’une ou l’autre des architecture donnera la chose suivante F.CAIGNET 27 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Les affectations de signaux : <= Pour l’affectation de signaux on utilise le symbole <=, quelque soit le type de signal Ex Ex:: Signal Signala,t,u a,t,u::bit bit:=‘0’; :=‘0’; Signal Signalbb::bit_vector bit_vector(7(7donwto donwto0)0):=‘‘00000000’’; :=‘‘00000000’’; Signal Signalcc::integer integerrange range00toto255 255:= :=0;0; aa<= <=ttand anduu;; bb<= <=‘‘00111001’’; ‘‘00111001’’; cc<= <=c+1; c+1; F.CAIGNET 28 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Les affectations de signaux : <= F.CAIGNET 29 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Les affectations de signaux : <= : les opérateurs possibles La concaténation : permet de regrouper des signaux F.CAIGNET 30 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Les affectations de signaux : <= : les opérateurs logiques Non valable sous MAXPLUS Exemple : F.CAIGNET 31 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Les affectations de signaux : <= : les opérateurs arithmétiques Pour pouvoir utiliser les opérateurs arithmétiques, il faut que les signaux soient déclarés comme integer ou real La taille du vecteur associé à un entier dépend de la façon dont il est définit. Lors de la synthèse on génère un Signal Signalcc::integer integerrange range00to to255 255:= :=0;0; ----vecteur vecteurde de77bits bits F.CAIGNET 32 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Les affectations de signaux : <= : les opérateurs relationnels F.CAIGNET 33 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Ordre des affectations de signaux pas important F.CAIGNET Ordre des affectations de variables important 34 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Les instructions du mode concurrent : affectation conditionnel F.CAIGNET 35 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Les instructions du mode concurrent : affectation conditionnel F.CAIGNET 36 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Les instructions du mode concurrent : affectation sélective Cette instruction permet d’affecter différentes valeurs à un signal, selon les valeurs prises par un signal dit de sélection. Remarque: l’instruction [expression when others] n’est pas obligatoire mais fortement conseillée, elle permet de définir la valeur du SIGNAL dans le cas où la condition n’est pas remplie. F.CAIGNET 37 Les circuits logiques programmables - FPGA III. III.Instructions Instructionsconcurrentes concurrentes Les instructions du mode concurrent : affectation sélective Bonne nouvelle : les deux modes de description conduisent au même schéma électrique F.CAIGNET 38 Les circuits logiques programmables - FPGA IV. IV.Instructions Instructionsséquentielles séquentielles Le « Process » : définition Un process est une partie de la description d’un circuit dans laquelle les instructions sont exécutées séquentiellement c’est à dire les unes à la suite des autres. Il permet d’effectuer des opérations sur les signaux en utilisant les instructions standard de la programmation structurée comme dans les systèmes à microprocesseurs. L’exécution d’un process est déclenchée par un ou des changements d’états de signaux logiques. Le nom de ces signaux est défini dans la liste de sensibilité lors de la déclaration du process. Liste Listede desensibilité sensibilité Remarque: Le nom du process entre crochet est facultatif, mais il peut être très utile pour repérer un process parmi d’autres lors de phases de mise au point ou de simulations. F.CAIGNET 39 Les circuits logiques programmables - FPGA IV. IV.Instructions Instructionsséquentielles séquentielles Le « Process » : Règles de fonctionnement d’un process 1) L’exécution d’un process a lieu à chaque changement d’état d’un signal de la liste de sensibilité. 2) Les instructions du process s’exécutent séquentiellement. ENTITY ENTITYseq2 seq2IS IS PORT ( PORT ( d,d,h: h:IN INSTD_LOGIC; STD_LOGIC; q: OUT q: OUTSTD_LOGIC STD_LOGIC );); END ENDseq2; seq2; ARCHITECTURE ARCHITECTUREarchi archiOF OFseq2 seq2IS IS BEGIN BEGIN process sont pris en compte à la PROCESS PROCESS BEGIN BEGIN WAIT WAITUNTIL UNTILh='1'; h='1'; qq<= d; <= d; END ENDPROCESS; PROCESS; fin du process. END ENDarchi; archi; 3) Les changements d’état des signaux par les instructions du Condition Conditionde de rentrée dans rentrée danslele process process Remarque : sauf les variables propres au process qui peuvent évoluer quand le process est en cours d’exécution F.CAIGNET 40 Les circuits logiques programmables - FPGA IV. IV.Instructions Instructionsséquentielles séquentielles Le « Process » : Règles de fonctionnement d’un process Condition Conditionde de rentrée dans rentrée danslele process process F.CAIGNET 41 Les circuits logiques programmables - FPGA IV. IV.Instructions Instructionsséquentielles séquentielles Les instructions séquentielles • Instruction conditionnelle: IF If condition then Instructions elsif condition then instructions else instructions end if; F.CAIGNET 42 Les circuits logiques programmables - FPGA IV. IV.Instructions Instructionsséquentielles séquentielles Les instructions séquentielles • Instruction selective: case CASE : case……….end case; case expression is when valeur1=>……sequence1; when valeur2| valeur3=>……sequence2; when valeur4 to valeur8=>……sequence3; when valeur4 downto valeur8=>……sequence4; end case; Exemple : F.CAIGNET 43 Les circuits logiques programmables - FPGA IV. IV.Instructions Instructionsséquentielles séquentielles Les instructions séquentielles : structures de boucles LOOP : loop ………….end loop; while condition loop …………….; end loop; for……in 1 to ……. loop …………….; end loop; LOOP inbriquées: F.CAIGNET Sorties Sortiesde deboucles boucles:: NEXT NEXT:: arrête arrêtel'itération l'itérationen en cours coursde deboucle boucle EXIT permetde desortir sortir EXIT:: permet dd’une ’uneboucle boucle first_loop : loop second_loop : loop ……do something……. end loop second_loop; end loop first_loop; 44 Les circuits logiques programmables - FPGA IV. IV.Instructions Instructionsséquentielles séquentielles Les instructions séquentielles : structures WAIT WAIT: wait on ….. until …for…..; wait on clock; wait on clock until data ='1'; wait on clock until data ='1' for 10ns; wait for 10ns; wait; F.CAIGNET 45 Les circuits logiques programmables - FPGA IV. IV.Instructions Instructionsséquentielles séquentielles Exemple : Multiplexeur 4 vers 1 END ENDmux4_2; mux4_2; c:c:IN ININTERGER INTERGERRANGE RANGE00TO TO3;3; e:e:IN INBIT_VECTOR(3 BIT_VECTOR(3DOWNTO DOWNTO0); 0); s:s:OUT BIT); OUT BIT); Description concurrente : Architecture Architectureconcur concurof ofmux4_2 mux4_2IS IS begin begin With Withccselect select s<= s<= e0 e0when when0; 0; e1 e1when when1; 1; e2 e2when when2; 2; e3 when 3; e3 when 3; entrées ENTITY ENTITYmux4_2 mux4_2IS IS PORT( PORT( e0 e1 e2 e3 c1 s sortie c0 sélection ‘0’ ‘0’when whenothers; others; END ENDconcur; concur; F.CAIGNET 46 Les circuits logiques programmables - FPGA IV. IV.Instructions Instructionsséquentielles séquentielles Exemple : Multiplexeur 4 vers 1 ARCHITECTURE ARCHITECTUREcond condOF OFmux4_2 mux4_2IS IS BEGIN BEGIN PROCESS PROCESS(c) (c) BEGIN BEGIN IF IF (c=0) (c=0)THEN THENs<=e(0); s<=e(0); ELSIF ELSIF (c=1) (c=1)THEN THENs<=e(1); s<=e(1); ELSIF ELSIF (c=2) (c=2)THEN THENs<=e(2); s<=e(2); ELSE s<=e(3); ELSE s<=e(3); END ENDIF; IF; END PROCESS; END PROCESS; END ENDarchi1; archi1; F.CAIGNET entrées Description séquentielle conditionnelle : e0 e1 e2 e3 c1 s sortie c0 sélection 47 Les circuits logiques programmables - FPGA IV. IV.Instructions Instructionsséquentielles séquentielles Exemple : Multiplexeur 4 vers 1 ARCHITECTURE ARCHITECTUREcond condOF OFmux4_2 mux4_2IS IS BEGIN BEGIN PROCESS PROCESS(c) (c) BEGIN BEGIN CASE CASEccIS IS WHEN WHEN00=> => s<=e(0); s<=e(0); WHEN WHEN11=> => s<=e(1); s<=e(1); WHEN WHEN22=> => s<=e(2); s<=e(2); WHEN WHEN33=> => s<=e(3); s<=e(3); END CASE; END CASE; END ENDPROCESS; PROCESS; END ENDarchi1; archi1; F.CAIGNET entrées Description séquentielle sélective : e0 e1 e2 e3 c1 s sortie c0 sélection 48 Les circuits logiques programmables - FPGA IV. IV.Instructions Instructionsséquentielles séquentielles Exemple : Multiplexeur 4 vers 1 ARCHITECTURE ARCHITECTUREcond condOF OFmux4_2 mux4_2IS IS BEGIN BEGIN PROCESS PROCESS(c) (c) BEGIN BEGIN IF IF(val='0') (val='0')THEN THENs<='0'; s<='0'; ELSE ELSE CASE CASEccIS IS WHEN 0 => WHEN 0 => s<=e(0); s<=e(0); WHEN WHEN11=> => s<=e(1); s<=e(1); WHEN WHEN22=> => s<=e(2); s<=e(2); WHEN 3 => s<=e(3); WHEN 3 => s<=e(3); END ENDCASE; CASE; END ENDIF; IF; END ENDPROCESS; PROCESS; END archi1; END archi1; F.CAIGNET entrées Description séquentielle mixte : e0 e1 e2 e3 c1 s sortie c0 sélection 49 Les circuits logiques programmables - FPGA Références Référenceset etremerciements remerciements Je tiens à remercier les différentes personnes ci-dessous pour avoir diffuser leurs savoir et ainsi m’avoir permis de récupérer un certains nombres de données. • A. Vachoux, • Leteneur • J.M de cachan F.CAIGNET 50