Carte du langage VHDL¶
VHDL sépare l'interface d'un circuit de sa ou ses implémentations.
library ieee;
use ieee.std_logic_1164.all;
entity inverter is
port (
input_i : in std_logic;
output_o : out std_logic
);
end entity inverter;
architecture rtl of inverter is
begin
output_o <= not input_i;
end architecture rtl;
Unités de conception¶
| Unité | Rôle |
|---|---|
Clause library |
Rend visible une bibliothèque compilée |
Clause use |
Importe les déclarations d'un paquetage |
| Entité | Déclare génériques et ports : l'interface publique |
| Architecture | Implémente une entité |
| Paquetage | Partage types, constantes, fonctions et procédures |
| Corps de paquetage | Implémente constantes différées et sous-programmes |
| Configuration | Sélectionne les associations ; rarement nécessaire dans un petit projet |
| Contexte | Regroupe les clauses répétitives en VHDL-2008 |
Deux mondes d'exécution¶
Région concurrente¶
Les instructions placées après le begin d'une architecture sont concurrentes. Leur ordre dans le fichier ne donne pas un ordre d'exécution.
Région séquentielle¶
Les instructions d'un processus, d'une fonction ou d'une procédure sont séquentielles.
Le processus reste concurrent avec tous les autres processus. La syntaxe séquentielle explique comment ce processus calcule ses pilotes lorsqu'il se réveille.
Synthétisable ou réservé à la simulation¶
Généralement synthétisables :
- Affectations combinatoires et processus combinatoires complets.
- Processus déclenchés par un front.
- Boucles bornées dont les limites sont connues à l'élaboration.
- Génériques statiques et instructions
generate. - Arithmétique fondée sur
numeric_std.
Généralement réservés aux bancs de test :
- Délais arbitraires
wait for 10 ns. - Lecture et écriture de fichiers texte.
- Assertions servant d'oracle de vérification.
std.env.finish.- Allocation dynamique avec des types accès.
Note
Certaines assertions peuvent être ignorées par la synthèse. Le rapport du synthétiseur, et non la seule légalité du langage, détermine ce qui sera réellement implémenté.
Convention de nommage proposée¶
| Élément | Signification | Exemple |
|---|---|---|
_i |
Port d'entrée | button_i |
_o |
Port de sortie | led_o |
_io |
Port bidirectionnel | data_io |
_n |
Signal actif à l'état bas | reset_n_i |
_q |
Valeur enregistrée/courante | count_q |
_d |
Prochaine valeur | state_d |
C_ |
Constante | C_CLOCK_HZ |
G_ |
Générique | G_WIDTH |
La cohérence est plus importante que la convention exacte.