Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> VHDL

Maîtriser VHDL : Introduction complète pour la conception FPGA et ASIC

Tutoriel – Introduction à VHDL

VHDL est un acronyme barbare. Il signifie VHSIC Hardware Description Language. Un acronyme dans un acronyme ! VHSIC signifie Very High Speed Integrated Circuit. Donc VHDL complet : Very High Speed Integrated Circuit Hardware Description Language. Ouf ! VHDL est l'un des deux langages utilisés par l'éducation et l'industrie pour concevoir des FPGA et des ASIC. Si ces termes vous sont inconnus, une introduction aux FPGA et ASIC peut être utile. VHDL et Verilog sont les deux langages que les concepteurs numériques utilisent pour décrire leurs circuits ; ils diffèrent fondamentalement des langages logiciels classiques comme C ou Java.

Pour l'exemple ci-dessous, nous allons créer un fichier VHDL qui décrit une porte ET. Rappel : une porte ET simple a deux entrées et une sortie. La sortie vaut 1 seulement si les deux entrées valent 1. Voici le schéma de la porte ET que nous allons décrire en VHDL.

Une porte ET

C'est parti ! L'unité fondamentale de VHDL est le signal. Pour l'instant, considérons qu'un signal peut valoir 0 ou 1 (il existe d'autres possibilités, nous y viendrons). Voici une logique VHDL de base :

signal and_gate : std_logic; and_gate <= input_1 and input_2; 

La première ligne définit un signal de type std_logic nommé and_gate. Std_logic est le type le plus courant pour les signaux, mais il en existe d'autres. Ce code génère une porte ET avec une sortie (and_gate) et deux entrées (input_1, input_2). Le mot-clé « and » est réservé. L'opérateur <= est l'opérateur d'affectation. On peut lire : « Le signal and_gate REÇOIT input_1 ET input_2. »

D'où viennent input_1 et input_2 ? Ce sont des entrées du fichier, il faut les déclarer. Les entrées/sorties sont définies dans une entité. Une entité contient un port listant toutes les entrées/sorties. Créons une entité simple :

entity example_and is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic ); end example_and; 

Cette entité « example_and » définit trois signaux std_logic : deux entrées, une sortie. Il manque un mot-clé VHDL : architecture. Une architecture décrit la fonctionnalité d'une entité. Pensez à une thèse : l'entité est la table des matières, l'architecture le contenu. Créons l'architecture :

architecture rtl of example_and is signal and_gate : std_logic; begin and_gate <= input_1 and input_2; and_result <= and_gate; end rtl; 

Ce code définit l'architecture « rtl » de l'entité « example_and ». Les signaux utilisés sont déclarés entre « is » et « begin ». La logique se place entre « begin » et « end ». Il reste à indiquer la bibliothèque à utiliser. Une bibliothèque définit le comportement de certains mots-clés. Placez ces deux lignes en haut du fichier :

library ieee; use ieee.std_logic_1164.all; 

Félicitations ! Vous avez créé votre premier fichier VHDL. Voici le fichier complet :

library ieee; use ieee.std_logic_1164.all; entity example_and is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic ); end example_and; architecture rtl of example_and is signal and_gate : std_logic; begin and_gate <= input_1 and input_2; and_result <= and_gate; end rtl; 

Vous trouvez qu'il faut beaucoup de code pour une simple porte ET ? D'abord, les portes ET ne sont pas bêtes. Ensuite, vous avez raison : VHDL est très verbeux. Habituez-vous : une tâche simple en logiciel prendra bien plus de temps en HDL (VHDL ou Verilog). Mais demandez à un développeur logiciel de générer une image VGA affichant le Jeu de la vie de Conway et regardez sa tête tourner ! Cette vidéo est créée avec VHDL et un FPGA. Vous en serez capable bientôt !

Ensuite, nous aborderons un autre mot-clé fondamental : process.

VHDL

  1. Terminer proprement une simulation de banc de test VHDL
  2. Guide complet des conversions de types VHDL avec Numeric_Std et Std_Logic_Arith
  3. Construction d'un processus déclenché par horloge en VHDL : Guide pratique
  4. Concevoir un contrôleur de servo RC basé sur FPGA avec PWM précis
  5. Maîtriser les fonctions VHDL : Guide pratique pour un design efficace
  6. Maîtriser la vérification aléatoire contrainte avec OSVVM
  7. Exemple de procédure VHDL : incrémenter un std_logic_vector
  8. Exploiter les constantes et generic maps en VHDL pour un design de module flexible
  9. Maîtriser les types Signé vs Non-signé en VHDL : insights pratiques