VHDL es un lenguaje de descripción de hardware que permite describir circuitos síncronos y asíncronos. Para realizar esto debemos: - Pensar en puertas y
o VHDL 1076?1993: Algunos cambios en particular adición de variables compartidas. Nuevas herramientas como Vivado comienzan a soportar VHDL'08.
VHDL es un lenguaje orientado a HW que permite escribir SW o 1076.1 IEEE Standard VHDL Analog and Mixed?Signal Extensions.
Muchas de las construcciones VHDL aunque sean útiles para simulación y otras VHDL es un lenguaje orientado a hardware que permite escribir software.
1.1 INTRODUCCIÓN AL LENGUAJE VHDL. La forma más común de describir un circuito consiste en la utilización de esquemas pero también existe la necesidad de
Tipos enumerados definidos en el paquete estandard de VHDL: TYPE severity_level IS (note warning
Descripción VHDL de sistemas combinacionales (1/3). Para describir circuitos combinacionales utilizaremos sentencias de asignación concurrentes y procesos.
17 jun 2010 Compilación C a VHDL de códigos de bucles con reuso de datos. 6. 11.3.3. Síntesis de código con bucle de tres dimensiones .
architectura estructura of sumador is signal s1 : std_logic_vector(3 downto 0); component xor port(. A B
Une description VHDL est composée de 2 parties indissociables à savoir : - L'entité (ENTITY) elle définit les entrées et sorties - L'architecture (
VHDL permet de manipuler des objets typés • un objet est le contenant d'une valeur d'un type donné • 4 classes d'objets : – CONSTANT : objet possédant une
Les cibles du langage VHDL Logiciel de simulation Logiciel de synthèse (configuration de circuits logiques programmables) Des instructions pour décrire
Le langage VHDL Eduardo Sanchez EPFL • Livres conseillés: • John F Wakerly Digital design (4th edition) Prentice Hall 2005 • Peter J Ashenden
VHDL : résumé de syntaxe CACHAN Département d'électronique avril 2000 ARCHITECTURE vecteur OF decade IS signal countTemp: unsigned(3 downto 0) ;
9 ) Simulation et validation réalisation d'un composant de test 10 ) Exemples : paquetage standard et exemples de codes VHDL
La quatrième partie est une récapitulation de la syntaxe du langage VHDL Cette partie a vocation à servir de référence au programmeur qui y trouvera décrites
Une simulation VHDL repose sur le principe de concurrence entre des instructions dites concurrentes tels que les process elles sont concurrentes car elles sont
Introduction à VHDL eqcomp4 A[3:0] B[3:0] égal -- eqcomp4 est un comparateur 4 bits entity eqcomp4 is port (a b: in bit_vector(3 downto 0);
Les principales caractéristiques du langage VHDL Différences entre un langage de programmation et VHDL
Pourquoi utiliser le VHDL ?
Le but d'un langage de description matériel tel que le VHDL est de faciliter le développement d'un circuit numérique en fournissant une méthode rigoureuse de description du fonctionnement et de l'architecture du circuit désirée.- Les variables sont utilisées uniquement dans les process. Elles sont déclarées dans le process avant le mot clé « begin » (c'est le begin du process). Contrairement aux signaux, les variables sont affectées tout de suite, on n'a pas besoin d'attendre la suspension du process.
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