Vous êtes sur la page 1sur 7

COURS : le langage VHDL

Lyce Felix Le Dantec - Lannion

combinatoire
1STI2D 2011/2012

Le VHDL est un langage de description matriel qui permet de simuler ou programmer un circuit numrique. L'abrvation H.D.L signifie Hardware Description Language. Ce langage a t crit pour simuler des circuits lectroniques. Les circuits logiques programmables voyant le jour, les P.L.D ( Programmable Logic Device ),on a simplement reli ces deux entits pour crer VHDL reprenant HDL et VHSIC Very High Speed Integrated circuit.

1. Logique combinatoire

Un circuit logique combinatoire peut se voir comme une boite noire qui dispose d'entres/ sorties dont les sorties sont des combinaisons des entres. Le fonctionnement du circuit est gnralement sous la forme d'quations logiques faisant appel un algbre particulier, l'algbre de boole.

2. L'algbre de boole

2.1 PROPRITES FONDAMENTALES


commutativit associativit distributivit a+b = a.b = a.( b.c ) = a+( b+c ) = de la multiplication par rapport l'addition a.( b+c ) = de l'addition par rapport la multiplication a+b.c = a. a = a+ a = a.a = a+a = a+0 = a.1 = a.0 = a+1 =

complmentation idempotence lment neutre lment absorbant complment absorption

a=
a+(b.a) = a.(b+a) =
{VHDL combinatoire.odt - page 1/7}

1STI2D SIN cours : le langage VHDL

2.2 RELATIONS FONDAMENTALES


aa b = aab =

2.3 THORME DE DE MORGAN


complmentation d'un produit complmentation d'une somme

a b = a+ b =

3. Structure d'une description VHDL simple


Une description VHDL est compose de deux parties indissociables : L'entit(ENTITY), elle dfinit les entres et sorties L'architecture ( ARCHITECTURE), elle contient les instructions VHDL permettant de raliser le fonctionnement attendu.

1STI2D VHDL combinatoire

{VHDL combinatoire.odt - page 2/7}

4. Dclaration des bibliothques


Toute dclaration VHDL utilise pour la synthse utilise des bibliothques. L'IEEE (Institute of Electrical and Electronics Engineers) produit des normes, et a donc cre la norme IEEE 1164 qui contient la dfinition des signaux lectroniques, fonctions et sous programmes permettant d'effectuer des oprations, . En dbut de programme, on dclare ces bibliothques de la manire suivante: Library ieee; Use ieee.std_logic_1164.all; Use ieee.numric_std.all; Use ieee.std_logic_unsigned.all; La directive Use permet l'utilisation de la bibliothque spcifie.

5. Dclaration de l'entit et des Entres/Sorties


Elle permet de dfinir le NOM de la description VHDL ainsi que les entres et sorties utilises, l'instruction qui les dfinit est port : 5.1 Syntaxe :

ENTITY nom_de_l'entit IS PORT( -- Liste des signaux composant l'entit ); END monostable ; ceci est un commentaire Exemple : ENTITY monostable IS PORT( H Trig M -Reset ); END monostable ;

: IN STD_LOGIC; : IN STD_LOGIC; -- Entre de dclenchement : OUT STD_LOGIC :='0'; -- Valeur initiale de la sortie du monostable. : '0' : OUT STD_LOGIC := '0' -- Signal pour le test uniquement

Remarque : Aprs la dernire dfinition de signal de l'instruction port, il ne faut jamais mettre de point virgule. En fait le point virgule qui symbole la fin d'une instruction est immdiatement aprs, derrire la parenthse de l'instruction port. 5.2 L'instruction port

L'instruction port. Entre les deux parenthses, elle contient la dclaration des entres/ sorties qui composent notre block entit. Syntaxe : Exemples : NOM_DU_SIGNAL : sens type; CLOCK : in std_logic; BUS : out std_logic_vector ( 7 downto 0);

1STI2D VHDL combinatoire

{VHDL combinatoire.odt - page 3/7}

5.2.1

Nom de signal:

Il est compos de caractres, le premier doit tre une lettre, longueur quelconque mais ne doit pas dpasser une ligne de code. VHDL n'est pas sensible la casse, pas de distinctions entre majuscules et minuscules. 5.2.2 Sens du signal : In : pour un signal d'entre out : pour un signal de sortie inout : pour un signal bidirectionnel buffer : pour un signal en sortie mais utilis en entre dans la description. Le type std_logic pour un signal std_logic_vector pour un bus compos de plusieurs signaux

5.2.3

Exemple : un bus bidictionnel de 5 bits s'crira : LATCH : inout std_logic_vector (4 downto 0) LATCH(4) correspond au MSB et LATCH(0) correspond au LSB. Les valeurs que peuvent prendre un signal de type std_logic sont : '0' ou 'L' pour un niveau bas '1' ou 'H' pour un niveau haut 'Z' pour tat haute impdance '-' quelconque. 5.2.4 Quelques exemples de dclarations

1STI2D VHDL combinatoire

{VHDL combinatoire.odt - page 4/7}

6. Description de fonctionnement:
6.1 Le bloc architecture

L'architecture dcrit le fonctionnement souhait par le circuit. L'architecture est compose d'une suite d'instructions ou d'quations qui dcrivent le fonctionnement du circuit. Cette suite sera d'une syntaxe similaire celle de l'entit. ARCHITECTURE nom_de_l'architecture IS BEGIN suite d'instructions END nom_de_l'architecture ; Exemples d'architecture :

6.2 6.2.1

Les instructions de base L'affectation <=

L'oprateur le plus utilis. Il permet de modifier l'tat d'un signal en fonction d'autres signaux ou d'autres oprations sur des signaux. Exemple : S1 <= E2 AND E1; Les bases utilises pour les bus peuvent tre : Binaire, Hexa . Exemples : BUS <= 0101 ; BUS <=X 9 . !! La base dcimale ne peut tre utilise pour l'affectation de signaux !! On peut en revancher l'utiliser avec des oprateurs comme + ou sur une variable !!
1STI2D VHDL combinatoire {VHDL combinatoire.odt - page 5/7}

6.2.2

Oprateur de concatnation : &

Cet oprateur permet de joindre des signaux entre eux : Exemple: soit A de type 3 bits et B de type 5 bits A='001' et B= '01011' S<= A&B S prendra alors comme valeur '00101011' 6.2.3 Oprateurs logiques,arithmtiques et relationnels

Exemples: S1<= A sll 2; S1 est gal A dcal de deux bits gauche A= 01010101 , S1 = 00010101 S1 <= S1+1; On incrmente de 1 S1 6.2.4 Affectation conditionnelle

Cette instruction modifie l'tat d'un signal suivant le rsultat d'une condition logique entre un ou des signaux, valeurs, constantes. SIGNAL <= expression when condition (else expression when condition) (else expression); Exemple 1 : - - S1 prend la valeur de E2 quand E1='1' sinon S1 prend la valeur '0' S1 <= E2 when (E1='1' ) else '0'

Fonction logique AND, la porte.

1STI2D VHDL combinatoire

{VHDL combinatoire.odt - page 6/7}

Exemple 2 : - -structure d'un multiplexeur 4 vers 1 S <= E0 when (C = ''00'') else E1 when (C =''01'') else E2 when (C =''10'') else E3 when (C =''11'') else '0';

6.2.5

Affectation slective

with C select S <= E0 E1 E2 E3 '0'

WHEN "00", WHEN "01", WHEN "10", WHEN "11", WHEN others;

Multiplexeur 4 vers 1 .

1STI2D VHDL combinatoire

{VHDL combinatoire.odt - page 7/7}

Vous aimerez peut-être aussi