L’École des INGÉNIEURS Scientifiques Ahmed AOUCHAR Le langage VHDL Begin Proces
L’École des INGÉNIEURS Scientifiques Ahmed AOUCHAR Le langage VHDL Begin Process(clk) Begin If rising-edge(clk) Then C <= c + 1 ; End if ; End process ; Vhsic Hardware Description Langage (Vhsic = Very High Speed Integrated Circuit) est un langage de description de matériel et non un langage software comme le C. Standardisé en 1987 par l ’IEEE (Institute Of Electrical and Electronics Engineers) sous la référence IEEE 1076-87. Une mise à jour importante a été faite en 1993 : IEEE 1076-93 est supportée par tous les outils. Dernière révision en 2008. Utilisé au début pour la modélisation et la simulation avant d’être adopté pour la synthèse logique. Toute la syntaxe n’est pas synthétisable !!! Permet de décrire un système avec un niveau d’abstraction élevé « algorithmique » ou un niveau proche du matériel « gate level ». Entre les deux se trouve le niveau RTL « Register Transfert Level » qui décrit le système sous forme de machine d’états. C’est le niveau RTL qui est utilisé pour la synthèse car il est moins lourd que le niveau « gate level » et il est indépendant de la cible. Le niveau « algorithmique » n’est pas forcément synthétisable. 1.1. PRÉSENTATION 2 La synthèse logique est l’opération qui consiste à traduire le code VHDL en fonctions logiques et bascules prêtes à être connectées dans le silicium. 1.2. LA SYNTHÈSE LOGIQUE 3 On rencontre deux langages de description de matériel : VHDL (populaire en Europe, proche de Ada « pgm objet ») et Verilog (populaire aux US, proche du C). Le langage VHDL permet de : 1. Modéliser des circuits pour la simulation 2. Décrire des applications pour circuits ASIC ou programmables (FPGA) 1.3.1. SIMULATION / SYNTHÈSE 4 Modélisation pour la simulation Description de système matériel Norme IEEE 1076 Norme IEEE 1076 La totalité de la norme peut être utilisée pour la modélisation Une partie seulement peut être utilisée pour la synthèse X <= ‘1’ after 100 ns; Wait for 200 ns; Signal ent_s : std_logic := ‘0’ Les instructions de gauche ne peuvent pas être utilisées pour la synthèse Une description comportementale « behavioral » décrit un algorithme sans rentrer dans les détails technologiques. Une description « RTL » donne les détails sur la connexion des registres avec la logique combinatoire. 1.3.2. BEHAVIORAL / RTL 5 Peu de détails, temps de développement court 1.4. NIVEAUX D’ABSTRACTION 6 Détails technologiques, description et simulation fastidieuses 2.1. PREMIER EXEMPLE 7 commentaire entité architecture Appel librairies portes a b c x y z 2.2. DEUXIÈME EXEMPLE 8 La nouveauté dans cet exemple est le bloc « process ». Ce bloc est très pratique pour décrire des unités cadencées par une horloge. On peut écrire plusieurs process, ils s’exécutent tous en parallèle Clk_div clk reset div_out 9 Début et fin Bloc « process » (processus explicite) Equation logique (processus implicite) PROCESSUS IMPLICITE OU EXPLICITE Connexion (processus implicite) 2.3. TROIS RÈGLES DE BASE 10 Les commentaires commencent par un double tiret « -- » et se terminent à la fin de la ligne. VHDL ne distingue pas les majuscules des minuscules : inter et INTER désignent le même signal Une instruction se termine par un « ; » les espaces ne sont pas significatifs Le standard « IEEE.1164 » définit une librairie avec un certain nombre de packages dont certains sont indispensables pour tout programme VHDL. Les packages doivent être appelés avant la déclaration de l’entité. L’extension « .all » du nom de la librairie signifie qu’on intègre tout le contenu. 2.4. LA LIBRAIRIE IEEE 11 C’est ici qu’est défini le type « std_logic » qui est une extension du type « bit ». 2.4.1. LE PACKAGE STD_LOGIC_1164 12 Les opérations applicables à ce type sont : and, nand, or, nor, xor, xnor, not. Le type « std_logic_vector » est un tableau de « std_logic ». AGRÉGATS (RÉUNIONS D’ÉLÉMENTS) 13 CONCATÉNATION (BOUT À BOUT) 14 Cette fonction, définie dans « std_logic_1164 », est très utile pour détecter les fronts montants d’une horloge. Elle vérifie bien que le signal part de ‘0’ avant de passer à ‘1’. Il existe une fonction similaire qui teste les fronts descendants : « falling_edge » LA FONCTION « RISING_EDGE » 15 C’est ici que sont définis certains types pour représenter les entiers ainsi que les opérations arithmétiques. 2.4.2. LE PACKAGE « NUMERIC_STD » 16 On y trouve aussi quelques fonctions de conversion de type comme celle-ci :. Ces deux packages sont des extensions du package « numeric_std». Il ne faut appeler qu’un seul des deux à la fois !!! STD_LOGIC_UNSIGNED / STD_LOGIC_SIGNED 17 STD_LOGIC_UNSIGNED : STD_LOGIC_SIGNED : Dans ce package, les fonctions sont redéfinies pour traiter les nombres de type « std_logic_vector » comme des entiers non signés. Dans ce package, les fonctions sont redéfinies pour traiter les nombres de type « std_logic_vector » comme des entiers signés. Le complément à 2 est utilisé pour le représentation des nombres négatifs. L’entité donne une vue externe du circuit. Les signaux d’interface constituent dans la terminologie VHDL un « port ». Chaque signal doit posséder : un nom (choisi par l’utilisateur), un mode (in, out, inout) et un type (std_logic, std_logic_vector, integer, boolean, …). On peut déclarer un paramètre générique avec une valeur par défaut, si une architecture appelle cette entité elle pourra changer la valeur de N. 2.5. LE BLOC « ENTITY » 18 circuit A B C X Y Chaque élément manipulé par VHDL (signal, constante, bus, …) doit porter un nom. Celui-ci doit respecter les règles suivantes : 1. Caractères admis : les 26 lettres de l’alphabet, les 10 chiffres décimaux et le caractère ‘_’. 2. Le 1er caractère doit être une lettre. 3. Le caractère ‘_’ ne doit pas terminer un nom. 4. Un nom ne doit pas être un mot réservé. 5. La longueur d’un nom ne doit pas dépasser une ligne. 2.6. LE CHOIX DES NOMS 19 Il faut respecter une règle simple : un nom doit permettre de deviner le type d’information représentée Le bloc architecture décrit le système matériel à concevoir, cela peut être un système combinatoire ou séquentiel, simple ou complexe. Il existe trois façons de décrire un circuit électronique en VHDL : 1. Description de bas niveau : on écrit des équations logiques 2. Description modulaire : il s’agit d’associer des blocs existants 3. Description comportementale : on décrit le comportement du circuit 2.7. LE BLOC « ARCHITECTURE » 20 portes a b c x y z 2.8. DÉCLARATIONS / INSTRUCTIONS 21 Avant begin : déclaration • Types • Signaux • Variables • composants Après begin : code • affectations • process Affectation inconditionnelle Affectation conditionnelle Affectation sélective 3.1. SYNTAXE HORS « PROCESS » 22 Affectation inconditionnelle Affectation conditionnelle Affectation sélective 3.2. SYNTAXE DANS « PROCESS » 23 En dehors du PROCESS, toutes les instructions s’exécutent en parallèle. On parle de fonctionnement concurrent, c’est le principe des systèmes combinatoires. L’ordre des instructions n’a aucune importance. 3.3. FONCTIONNEMENT CONCURRENT 24 Ces deux solutions donnent le même résultat après compilation, c’est-à-dire le schéma ci-dessus. Dans un « process », les instructions s ’exécutent de façon séquentielle. Le « process » s ’exécute à chaque changement d ’état d ’un des signaux de la liste de sensibilité. La mise à jour des variables se fait au fur et à mesure que les instructions se déroulent. La mise à jour des signaux se fait à la fin du « process », après le « end ». Tous les « process » se déroulent en parallèle. L’ordre d’écriture des process n’a aucune importance. 3.4. FONCTIONNEMENT SÉQUENTIEL 25 Le signal « count_s » ne sera mis à jour qu’à la fin du « process », à la lecture du « end process » 4.1. ADDITIONNEUR (1ÈRE FAÇON) 26 a b s add2 ci co ci b a co s 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 4.2. ADDITIONNEUR (2ÈME FAÇON) 27 On écrit la table de vérité des sorties de l’additionneur, l’outil de synthèse trouvera la logique nécessaire ci b a co s 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 4.3. ADDITIONNEUR (3ÈME FAÇON) 28 Autre façon d’écrire les tables de vérité des sorties, une table par sortie cette fois. ci b a co s 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 uploads/Industriel/ 9-langage-vhdl.pdf
Documents similaires
-
23
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jan 22, 2022
- Catégorie Industry / Industr...
- Langue French
- Taille du fichier 2.1260MB