[PDF] vhf frequency list philippines 2019
[PDF] viamonde calendrier 2019 2020
[PDF] viamonde calendrier elementaire 2020 2021
[PDF] viavi solutions inc news
[PDF] viavi solutions sec filings
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éci?cation 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, ?nancé 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 di?é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 ?n 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 modi?able immédiatement par une a?ectation ( 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 modi?cation 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é?nis sont: •scalaire: integer real enumerated physical •composé: array record •pointeur: acces •I/O: ?le
Eduardo Sanchez 12
•On peut également créer de nouveaux types, en fonction des types prédé?nis. 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é?nis: 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 a?ectation, 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 di?érents composants d"un système, VHDL utilise les signaux (signal), équivalent des ?ls 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) aectation
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 in?nie •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 ?n du processus •Un wait on à la ?n 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 in?uence 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 a?ectation, à l"intérieur du processus
Eduardo Sanchez 21
•L"évaluation des signaux à l"intérieur d"un processus se fait séquentiellement, mais l"a?ectation 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 signal c est a?ecté à a au début du processus, mais sa valeur est réellement mise à jour seulement à la ?n du processus. Pour cette raison, lors du if...then la valeur de c qui est testée est celle qui avait le signal à la ?n de l"exécution précédente du processus •Supposons le cas de la ?gure suivante, avec a et b égaux à '0' au début de la simulation (temps ): delay a b c
Eduardo Sanchez 24
•Au temps , a a changé. Comme le processus est sensible à a, le simulateur redémarre l"exécution du processus. Le signal c est a?ecté à a, et la condition (c='1') est testée. Le résultat du test sera false, puisque c est toujours égal à '0': la mise à jour à la valeurquotesdbs_dbs17.pdfusesText_23