Le langage VHDL Eduardo Sanchez EPFL • Livres conseillés: • John F. Wakerly D
Le langage VHDL Eduardo Sanchez EPFL • Livres conseillés: • John F. Wakerly Digital design (4th edition) Prentice Hall, 2005 • Peter J. Ashenden The designer's guide to VHDL (3rd edition) Morgan Kaufmann, 2008 • Peter J. Ashenden The student's guide to VHDL (2nd edition) Morgan Kaufmann, 2008 • James R. Armstrong – F. Gail Gray VHDL design: Representation and synthesis (2nd edition) Prentice Hall, 2000 • Jacques Weber – Maurice Meaudre Le langage VHDL: Du langage au circuit, du circuit au langage Masson, 2007 • Roland Airiau – Jean-Michel Bergé – Vincent Olive – Jacques Rouillard VHDL: Langage, modélisation, synthèse (3ème édition) PPUR, 2003 Eduardo Sanchez 2 • Langage formel pour la spécification des systèmes digitaux, aussi bien au niveau comportemental que structurel • 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é, similaire à Ada VHDL VHSIC Very High-Speed Integrated Circuits Hardware Description Language Eduardo Sanchez 3 Histoire • 1980: Début du projet, financé par le DoD (400M $US) • 1982: Contrat pour Intermetrics, IBM et Texas • 1985: Version 7.2 dans le domaine public • 1987: Standard IEEE 1076 (VHDL-87) • 1993: Nouvelle version du standard (VHDL-93) • 2001: Nouvelle version du standard (VHDL-2001) • 2008: Nouvelle version du standard (VHDL-2008) Eduardo Sanchez 4 Entité et architecture • VHDL nous intéresse en tant que langage pour la description, simulation et synthèse des systèmes digitaux • Au plus haut niveau d'abstraction, un système digital est vu comme une "boîte noire", dont on connaît l'interface avec l'extérieur mais dont on ignore le contenu • En VHDL la boîte noire est nommé entité (entity) • Une entité doit toujours être associée avec au moins une description de son contenu, de son implémentation: c'est l'architecture A B C architecture entité Eduardo Sanchez 5 Structure d'un programme VHDL library ieee; use ieee.std_logic_1164.all; entity toto is port ( ); end toto; architecture test of toto is begin end test; déclaration des entrées/sorties déclarations de l'architecture corps de l'architecture nom de l'entité nom de l'architecture Eduardo Sanchez 6 Exemple c b a reset clk op opb + 0 - 1 moinsb aopb entité architecture signal processus Eduardo Sanchez 7 • Les entrées/sorties du système sont les ports de l'entité • Chaque composant interne du système sera un processus (process) de l'architecture • Une architecture est un ensemble de processus • Les processus s'exécutent en parallèle • Les processus de l'architecture sont interconnectés par le biais des signaux (signal) • Quelques notes sur la syntaxe d'un programme VHDL: • pas de différentiation entre majuscules et minuscules • format libre • toute phrase termine par un point virgule • le début d'un commentaire est signalé par un double trait (“--”). Le commentaire termine avec la fin de ligne Eduardo Sanchez 8 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity exemple is port (a, b : in std_logic_vector(3 downto 0); op, clk, reset : in std_logic; c : out std_logic_vector(3 downto 0)); end exemple; architecture test of exemple is signal moinsb, opb, aopb : std_logic_vector(3 downto 0); begin moinsb <= not b + "0001"; opb <= b when op='0' else moinsb; aopb <= a + opb; process (reset, clk) begin if reset='0' then c <= "0000"; else if (clk'event and clk='1') then c <= aopb; end if; end if; end process; end test; entité architecture processus implicites processus explicite bibliothèque IEEE Eduardo Sanchez 9 • Résultat de la synthèse: Eduardo Sanchez 10 Données traitées par VHDL • Toute donnée traitée par VHDL doit être déclarée comme constante, variable ou signal • Constantes: constant pi : real := 3.1416; constant index_max : integer is 10*N; • Variables: valeur modifiable immédiatement par une affectation (:=) variable stop : boolean; variable etat : CodeDEtat := ST0; • Signaux: modélisation de l'entrée/sortie d'un dispositif. C'est une forme d'onde qui change avec le temps: la modification a lieu à la prochaine itération de la simulation (retard delta) Eduardo Sanchez 11 • VHDL est un langage fortement typé: toute donnée doit être déclaré avant utilisation, en indiquant son type • Les types prédéfinis sont: • scalaire: integer real enumerated physical • composé: array record • pointeur: acces • I/O: file Eduardo Sanchez 12 • On peut également créer de nouveaux types, en fonction des types prédéfinis. Par exemple: type HuitBits is range 0 to 255; type CodeDEtat is (init, ST1, ST2, exit); type word is array (0 to 31) of bit; type EtatsLogiques is record valeur : integer range -127 to 128; force : integer; end record; Eduardo Sanchez 13 • Pour la synthèse, les types de données les plus utilisés sont std_logic, pour les données à un bit, et std_logic_vector, pour les bus • Ces types ne sont pas prédéfinis: pour les utiliser, il faut déclarer le paquet (package) std_logic_1164, qui fait partie de la bibliothèque (library) IEEE: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; Eduardo Sanchez 14 • Une donnée de type std_logic possède une valeur parmi neuf possibles: • 'U' uninitialized • 'X' forcing unknown • '0' forcing 0 • '1' forcing 1 • 'Z' high impedance • 'W' weak unknown • 'L' weak 0 (pull-down) • 'H' weak 1 (pull-up) • '-' don't care • Pour une affectation, les valeurs utilisées sont: 'X', '0', '1', 'Z' Eduardo Sanchez 15 Opérateurs • Opérations logiques: • and or nand nor xor xnor • Opérations de comparaison: • = /= < <= > >= • Opérations de décalage • sll srl sla sra rol ror • Opérations d'addition: • + - & • Opérations de signe: • + - • Opérations de multiplication: • * / mod rem • Opérations diverses: • not abs ** Eduardo Sanchez 16 Signaux (introduction) • Pour connecter les différents composants d'un système, VHDL utilise les signaux (signal), équivalent des fils ou câbles d'interconnexion dans le monde réel • Exemple: signal s : std_logic := '0'; ••• s <= '1' after 10 ns, '0' after 18 ns, '1' after 25 ns; 0 10 18 25 t (ns) 1 0 temps actuel de simulation initialisation (à éviter dans la synthèse) affectation Eduardo Sanchez 17 • On peut associer certains attributs aux signaux, qui produisent une valeur. Deux exemples d'attributs sont: • s'event: vrai si un événement arrive pendant le delta présent (c'est-à-dire, si le signal s change de valeur) • s'active: vrai si une transaction arrive pendant le delta présent (c'est-à-dire, si le signal s est évalué, qu'il change ou pas de valeur) • Un signal est toujours global à une architecture donnée Eduardo Sanchez 18 Processus (process) • Une architecture en VHDL est un ensemble de processus exécutés en parallèle (en concurrence) • L'ordre relatif des processus à l'intérieur d'une architecture n'a pas d'importance • Il existe deux types de processus: • le processus implicite ou phrase concurrente • le processus explicite architecture toto of test is begin c <= a and b; z <= c when oe='1' else 'Z'; seq: process (clk, reset) begin . . end process; end toto; processus explicite processus implicites Eduardo Sanchez 19 • Un processus explicite est un ensemble de phrases exécutées séquentiellement: à l'intérieur d'un processus l'ordre des phrases a donc une importance • Un processus ne peut pas être déclaré à l'intérieur d'un autre processus procA: process (a, b) begin end process; corps du processus déclarations du processus étiquette optionnelle liste de sensibilité Eduardo Sanchez 20 • Les phrases séquentielles d'un processus s'exécutent en boucle infinie • L'exécution de la boucle s'arrête seulement lors d'un wait on sur une liste de signaux: l'exécution redémarre lorsque l'un des signaux de la liste change de valeur • La plupart des outils de synthèse n'acceptent qu'un wait par processus, placé au début ou à la fin du processus • Un wait on à la fin d'un processus peut être remplacé par une liste de sensibilité, placée juste après le mot clé process. La liste de sensibilité est incompatible avec un wait: c'est l'un ou l'autre • Tout signal dont le changement de valeur a une influence sur le processus doit apparaître dans la liste de sensibilité. Dans le cas contraire, la simulation pourrait donner des résultats faux puisqu'elle ne serait pas enclenchée. Pour éviter des erreurs, on peut mettre dans la liste de sensibilité tous les signaux testés ou apparaissant à droite d'une affectation, à l'intérieur du processus Eduardo Sanchez 21 • L'évaluation des signaux à l'intérieur d'un processus se fait séquentiellement, mais l'affectation des nouvelles valeurs se fait au même moment: pendant le wait ident: process déclarations begin phrases séquentielles end process ident; (A, B) wait on A, B; liste de sensibilité étiquette optionnellle • Exemple 1: entity toto is port (a: in std_logic; b: out std_logic); end toto; architecture basic of toto is signal c: std_logic; begin process (a) begin c <= a; if c='1' then b <= a; else b <= '0'; end if; end process; end basic; Eduardo Sanchez 23 • Le uploads/Ingenierie_Lourd/ 19-vhdl.pdf
Documents similaires










-
30
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 27, 2021
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 0.6772MB