Structure d'un programme en VHDL
A.Introduction
Entity1 Entity2
P1 P2 P3
S1 S2 S3
E1 E2
Instanciation
Une description VHDL est composée de deux parties indissociables à savoir l'entité qui définit les signaux en E/S et permet de reconnaître lors des instanciations les différences entres les différents blocs
L'architecture contient les instructions VHDL, et elle est décrite(comportementale). Déclaration des bibliothèque : nommées par l'IEEE, elles contiennent les définitions des types de signaux électroniques, des fonctions et des sous programme utiles à la définition de l'architecture. Library IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.numeric_std.all;
USE IEEE.std_logic_unsigned.all; La directive "USE" permet de sélectionner les bibliothèques à utiliser. Remarque : le logiciel "activ HDL" de ALS Design permet d'aller chercher directement les bibliothèques nécessaires.
B.La déclaration de l'entité
L'entité permet de définir le nom de la description VHDL, les entrées, les sorties et l'instruction qui est défini est PORT Entity nom_de_l'entite is
Port (description des signaux);
End nom_de_l'entite ; Remarque : pour "description des signaux" on note :
Nom_du_signal : sens type ; Exemple : Une bascule Clock D RESET
Q Bus de 2 bits
Entity bascule is
Port ( CLOCK : in std_logic;
D : in std_logic;
RESET : in std_logic; 0 to 1
Q : out std_logic_vector(1 downto 0));
End bascule;
Le nom du signal est compose de caractères : les premier caractère est une lettre, VHDL n'est pas sensible à la casse (t/T)
Le sens du signal :
in = signal d'entrée
out = signal de sortie
inout : signal en entrée/sortie
les types prédéfinis par le langage VHDL sont assez nombreux et le langage permet la création de ses propres types ou sous types. Pour le moment, on va utiliser std_logic pour un signal et std_logic_vector pour un bus. Exemple : Faire un bus de 5 bits CCP : inout std_logic_vector(4 downto 0);
CCP(4) est le MSB
CCP(0) est le LSB Un signal de type std_logic peut prendre 4 valeurs :
'0' ou 'L'
'1' ou 'H'
'Z' haute impédance
'-' indifférent Quand on a un bit on le met entre cote (')
Plus d'un bit on le met entre guillemets (") Les déclarations d'architecture L'architecture décrit le fonctionnement souhaité pour un circuit ou pour une partie du circuit. Dans un circuit, il y aura plusieurs couples entre entités affectées. Une architecture peut décrire une fonction combinatoire, séquentielle ou les deux. Architecture nom_de_l'architecture of nom_de_l'entite is
Begin
… instructions … ;
End nom_de_l'architecture; Exemple : Réaliser le programme VHDL d'une porte NAND a
b S Entity (NAND)
On donne : - l'affectation : <=
- les opérateurs logiques : and, not Library ieee;
USE iee.std_logic_1134.all
Entity NAND is
Port ( a : in std_logic;
b : in std_logic;
s : out std_logic );
End NAND; Architecture desc_NAND of NAND is
Begin
S <= not (a and b);
End desc_NAND;
|