Master VHDL :introduction complète à la conception de FPGA et d'ASIC
Tutoriel – Introduction au VHDL
VHDL est un horrible acronyme. Cela signifie V HSIC H matériel D description L langue. Un acronyme dans un acronyme, génial ! VHSIC signifie V très H haut S j'ai fait pipi je C intégré circuit. Par conséquent, VHDL développé est V Tous les circuits intégrés à grande vitesse H matériel D description L langue. OUF, c'est une bouchée. VHDL est l'un des deux langages utilisés par l'enseignement et les entreprises pour concevoir des FPGA et des ASIC. Vous pourriez d’abord bénéficier d’une introduction aux FPGA et aux ASIC si vous n’êtes pas familier avec ces circuits fascinants. VHDL et Verilog sont les deux langages que les concepteurs numériques utilisent pour décrire leurs circuits, et ils sont différents par leur conception de vos langages logiciels traditionnels tels que C et Java.
Pour l'exemple ci-dessous, nous allons créer un fichier VHDL qui décrit une porte Et. Pour rappel, un simple And Gate a deux entrées et une sortie. La sortie est égale à 1 uniquement lorsque les deux entrées sont égales à 1. Vous trouverez ci-dessous une image de la porte Et que nous allons décrire avec VHDL.
Une porte et
Allons-y ! L'unité fondamentale du VHDL est appelée un signal. . Pour l’instant, supposons qu’un signal puisse être soit un 0, soit un 1 (il existe en fait d’autres possibilités, mais nous y reviendrons). Voici une logique VHDL de base :
signal and_gate : std_logic; and_gate <= input_1 and input_2;
La première ligne de code définit un signal de type std_logic et s'appelle and_gate. Std_logic est le type le plus couramment utilisé pour définir des signaux, mais vous en découvrirez d'autres. Ce code générera une porte ET avec une seule sortie (and_gate) et 2 entrées (input_1 et input_2). Le mot clé « et » est réservé en VHDL. L'opérateur <=est appelé opérateur d'affectation. Lorsque vous analysez verbalement le code ci-dessus, vous pouvez dire à voix haute :"Le signal and_gate GETS input_1 et-ed avec input_2."
Maintenant, vous vous demandez peut-être d'où viennent input_1 et input_2. Et bien, comme leur nom l'indique, ce sont des entrées dans ce fichier, vous devez donc en informer les outils. Les entrées et sorties d'un fichier sont définies dans une entité . Une entité contient un port qui définit toutes les entrées et sorties d'un fichier. 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;
C'est votre entité de base. Il définit une entité appelée example_and et 3 signaux, 2 entrées et 1 sortie, tous de type std_logic. Un autre mot-clé VHDL est nécessaire pour que cela soit complet :architecture . Une architecture est utilisée pour décrire les fonctionnalités d'une entité particulière. Considérez-le comme un document de thèse :l'entité est la table des matières et l'architecture est le contenu. Créons une architecture pour cette entité :
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;
Le code ci-dessus définit une architecture appelée rtl de l'entité example_and. Tous les signaux utilisés par l'architecture doivent être définis entre les mots-clés « is » et « begin ». La logique architecturale réelle se situe entre les mots-clés « début » et « fin ». Vous avez presque terminé avec ce fichier. Une dernière chose que vous devez indiquer aux outils est la bibliothèque à utiliser. Une bibliothèque définit le comportement de certains mots-clés dans votre fichier. Pour l'instant, considérez simplement que vous devez avoir ces 2 lignes en haut de votre fichier :
library ieee; use ieee.std_logic_1164.all;
Félicitations ! Vous avez créé votre premier fichier VHDL. Vous pouvez voir le fichier complété ici :
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;
Est-ce qu'il semble que vous ayez dû écrire beaucoup de code juste pour créer un portail stupide ? Tout d’abord, les portes ne sont pas stupides. Deuxièmement, vous avez raison ; Le VHDL est un langage très verbeux. Habituez-vous au fait que faire quelque chose qui était très simple dans un logiciel vous prendra beaucoup plus de temps dans un HDL tel que Verilog ou VHDL. Mais demandez simplement à un développeur de logiciels d'essayer de générer une image sur un moniteur VGA qui affiche Game of Life de Conway et regardez leur tête tourner avec étonnement ! À propos, cette vidéo est créée avec du VHDL et un FPGA. Vous pourrez le faire bien assez tôt !
Nous aborderons ensuite un autre mot-clé fondamental du VHDL : processus.
VHDL
- Comment utiliser le type VHDL le plus courant :std_logic
- Comment lier les bibliothèques IP Quartus Prime à VUnit
- Signé ou non signé en VHDL
- Comment retarder l'heure en VHDL :attendre
- Master VHDL :introduction complète à la conception de FPGA et d'ASIC
- Vérification aléatoire contrainte
- Comment créer un contrôleur PWM en VHDL
- Enregistrements - Exemple VHDL
- Contrôleur d'affichage VHDL double à 7 segments pour SSD Pmod – Intégration FPGA facile