La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Chapitre 01: Structure d'un module VHDL

Présentations similaires


Présentation au sujet: "Chapitre 01: Structure d'un module VHDL"— Transcription de la présentation:

1 dhiabi.fathi@yahoo.fr f.dhiabi@univ-biskra.dz

2 Chapitre 01: Structure d'un module VHDL
Qu'est ce que VHDL ? Structure d’une description VHDL  Le bibliothèque L’entité L’architecture Le type Les Objets (Signaux, Constantes, Alias et Variables)

3 1.Qu'est ce que VHDL ? L'acronyme VHDL signie Very High Speed Integrated Circuit (VHSIC) Hardware Description Langage (HDL). VHDL est un langage de programmation complet. Pour la description d’ un matérielle logique.

4 2. Structure d’une description VHDL
Une description VHDL est composée de trois parties indissociables à savoir : Le bibliothèque L’entité (ENTITY), Elle décrit l'interface du circuit avec le monde extérieur. L’architecture (ARCHITECTURE), Elle décrit le fonctionnement du circuit.

5 2. Structure d’une description VHDL
Example 01 : Un décodeur 2 parmi 4.

6 2. Structure d’une description VHDL
Example 01 : Un décodeur 2 parmi Le bibliothèque library ieee; Use ieee.std_logic_1164.all; Use ieee.numeric_std.all;

7 2.Structure d’une description VHDL
Example 01 : Un décodeur 2 parmi L’entité (ENTITY) entity DECOD1_4 is port(IN0, IN1: in std_logic; D0, D1, D2, D3: out std_logic); end DECOD1_4;

8 2.Structure d’une description VHDL
Example 01 : Un décodeur 2 parmi L’architecture architecture DESCRIPTION of DECOD1_4 is begin D0 <= (not(IN1) and not(IN0)); D1 <= (not(IN1) and IN0); D2 <= (IN1 and not(IN0)); D3 <= (IN1 and IN0); end DESCRIPTION;

9 2.Structure d’une description VHDL
Example 02 : essai.vhd

10 3. Déclaration des bibliothèques
  Toute description VHDL utilisée pour la synthèse a besoin de bibliothèques. Elles contiennent les définitions des types de signaux électroniques, des fonctions et sous programmes permettant de réaliser des opérations arithmétiques et logiques : 

11 3. Déclaration des bibliothèques
Library ieee; Déclaration standard. Use ieee.std_logic_1164.all;  Permet de définir les types std_logic (‘X’,’U’,’L’,’H’,’0’,’1’) Use ieee.std_logic_arith.all; Permet d’utiliser les opérateurs arthmétiques ‘+’,’-‘,’*’,’/’ pour les types std_logic Use ieee.std_logic_signed.all; Le type std_logic avec signed value. Use ieee.std_logic_usigned.all; Le type std_logic avec unsigned value. Use ieee.numeric_std.all; Utilisation les valeurs décimal pour le type std_logic. Use ieee.std_logic_textio.all; Utilisation les valeurs ASCII pour le type std_logic. Use ieee.numeric_bit.all; Utilisation les valeurs décimal pour le type std_logic. Use ieee.math_real.all; Use ieee.math_complex.all;

12 Déclaration des bibliothèques
Note : IEEE: Institut of Electrical and Electronics Engineers La directive Use permet de sélectionner les bibliothèques à utiliser La directive All pour utiliser tu les application

13 3. Déclaration des bibliothèques
 La différance entre Unsigned et Signed :

14 3. Déclaration des bibliothèques
 La différance entre Unsigned et Signed :

15 3. Déclaration des bibliothèques
  IEEE.STD_LOGIC_1164.all Permet de définir les types, opérateurs et fonctions de conversion de base

16 3. Déclaration des bibliothèques
  IEEE.numeric_std.all Définit les types signed et unsigned. Un vecteur représente alors un nombre signé ou non signé représenté en C2 Permet d’utiliser les opérateurs arthmétiques + et x sur des vecteurs de bits Fournit des fonctions de conversion entre entiers et vecteurs

17 3. Déclaration des bibliothèques
  IEEE.numeric_std.all Définit les types signed et unsigned. Un vecteur représente alors un nombre signé ou non signé représenté en C2 Permet d’utiliser les opérateurs arthmétiques « + » ,« x », « - », « / » sur des vecteurs de bits Fournit des fonctions de conversion entre entiers et vecteurs

18 3. Déclaration des bibliothèques
  IEEE.numeric_std.all

19 4. L’entité Déclaration de l’entité.
Elle permet de définir le NOM de la description VHDL ainsi que les entrées et sorties utilisées, l’instruction qui les définit c’est port : Syntaxe: entity NOM_DE_L_ENTITE is port ( Description des signaux d’entrées /sorties …); end NOM_DE_L_ENTITE;

20 4. L’entité  Example: entity SEQUENCEMENT is port ( CLOCK : in std_logic; RESET : in std_logic; Q : out std_logic_vector(1 downto 0)); end SEQUENCEMENT;

21 4. L’entité  Dans l’instruction port . On doit définir pour chaque signal : le NOM_DU_SIGNAL, le sens et le type. Syntaxe: NOM_DU_SIGNAL : sens type; Exemple: CLOCK: in std_logic; BUS : out std_logic_vector (7 downto 0);

22 4. L’entité  Le SENS du signal.

23 4. L’entité Le SENS du signal. - in : pour un signal en entrée.
out : pour un signal en sortie. inout : pour un signal en entrée sortie - buffer : pour un signal en sortie mais utilisé comme entrée dans la description.

24 4. L’entité Le SENS du signal. Note :
Le mode in protège le signal en écriture Le mode out protège le signal en lecture Remarque : le nom d’un fichier VHDL doit être celui de l’entité qu’il contient

25 4. L’entité  Le type du signal: Le TYPE utilisé pour les signaux d’entrées / sorties est définit par: bit std_logic bit_vector std_logic_vector…. etc

26 4. L’architecture  L’architecture (ARCHITECTURE), Elle décrit le fonctionnement du circuit par les relations entre les entrées et les sorties. On peut avoir un fonctionnement: Combinatoire séquentiel voire les deux séquentiel et combinatoire.

27 4. L’architecture  Les descriptions des architectures:  Trois grands formalismes coexistent pour décrire les architectures : flot de données : on écrit pour les fonctions booléennes (à réserver aux plus petits circuits) , c'est lui qu'on a utilisé pour implémenter le demi-additionneur (example). structurel : on décrit le circuit comme une série des boîtes noires interconnectées au moyen de signaux (utilisé pour des circuits moyens ou grands), c'est lui qu'on a utilisé pour implémenter un additionneur complet à l'aide de quatre demi-additionneurs comportemental : de manière très semblable à un langage de programmation informatique, on précise le fonctionnement voulu à l'aide d'une suite d'instructions de contrôles (conditions, boucles, etc…), dans un process.

28 4. L’architecture  Exemple flot de données

29 4. L’architecture  Exemple structurel

30 4. L’architecture  Exemple structurel

31 4. L’architecture  Exemple structurel

32 4. L’architecture  Exemple wave simulation

33 4. L’architecture 3. Exemple comportemental ---- Comparateur 8 bits :
library ieee; use ieee.std_logic_1164.all; entity eqcomp4 is port(a, b: in std_logic_vector (7 downto 0) equals: out std_logic); end eqcomp4; architecture behavioral of eqcomp4 is begin comp: process (a, b) if a = b then equals <= ‘1’; else equals <= ‘0’; end if; end process comp; end behavioral;

34 Les Objets (Signaux, Component Constantes, Alias et Variables)

35 Chapitre 2 Les instructions du mode concurrent dans logique combinatoire
Les opérateurs: Les opérateurs utilisés dans l’architecture deVHDL du mode concurrent dans logique combinatoire, sont : Concaténation. logiques décalages. Arithmétiques. relationnels. affectation

36 2.1 Cancaténation. Opérateur de concaténation : &
Cet opérateur permet de joindre des signaux entre eux. Exemple : Soit A et B de type 3 bits et S1 de type 8 bits A = "001" et B ="110" S1 <= A & B & "01" ; S1 prendra la valeur suivante après cette affectation S1 = " "

37 2.2. Opérateurs logiques :

38 2.2. Opérateurs logiques :

39 2.2. Opérateurs logiques : Exemples 1:
S1 <= A sll 2 ; -- S1 = A décalé de 2 bits à gauche. S2 <= A rol 3 ; -- S2 = A avec une rotation de 3 bits à gauche S3 <= not (R); -- S3 = R Exemples 2: (Remarque) Pour réaliser des décalages logiques en synthèse logique, il est préférable d’utiliser les instructions suivantes : Décalage à droite : Si A est de type std_logic_vector(7 downto 0) S1 <= ‘0’ & A(7 downto 1); -- décalage d’un bit à droite S1 <= "000" & A(7 downto 3); -- décalage de trois bits à droite Décalage à gauche : Si A est de type std_logic_vector(7 downto 0) S1 <= A(6 downto 0) & ‘0’; -- décalage d’un bit à gauche S1 <= A(4 downto 0) & "000"; -- décalage de trois bits à gauche 

40 2.3. Opérateurs arithmétiques:
Pour pouvoir utiliser les opérateurs ci-dessus il faut rajouter les bibliothèques suivantes au début du fichier VHDL: Use ieee.numeric_std.all ; Use ieee.std_logic_arith.all ;

41 2.3. Opérateurs arithmétiques:

42 2.3. Opérateurs arithmétiques:
Exemples : S1 <= A – 3 ; -- S1 = A – 3 -- On soustrait 3 à la valeur de l’entrée / signal A S1 <= S1 + 1 ; -- On incrémente de 1 le signal S1 

43 2.3. Opérateurs arithmétiques:
Note : Les bases numériques utilisées pour les bus peuvent être : BINAIRE, exemple : BUS <= "1001" ; -- BUS = 9 en décimal HEXA, exemple : BUS <= X"9" ; -- BUS = 9 en décimal OCTAL, exemple : BUS <= O"11" ; -- BUS = 9 en décimal

44 2.4. Opérateurs relationnels:
Ils permettent de modifier l’état d’un signal ou de signaux suivant le résultat d’un test ou d’une condition. En logique combinatoire ils sont utilisés avec les instructions : - when … else … - with …. Select …. Voir ci-dessous.

45 2.4. Opérateurs relationnels:

46 2.5. Les instructions du mode « concurrent »:
1. Affectation conditionnelle :Cette instruction modifie l’état d’un signal suivant le résultat d’une condition logique entre un ou des signaux, valeurs, constantes. SIGNAL <= expression when condition [else expression when condition] [else expression];

47 2.5. Les instructions du mode « concurrent »:
1. Affectation conditionnelle :Cette instruction modifie l’état d’un signal suivant le résultat d’une condition logique entre un ou des signaux, valeurs, constantes. Exemple N°2 : -- Structure évoluée d’un multiplexeur 4 vers 1 S2 <= E1 when (SEL="00" ) else E2 when (SEL="01" ) else E3 when (SEL="10" ) else E4 when (SEL="11" ) else ‘0’;

48 2.5. Les instructions du mode « concurrent »:
Note : l’instruction [else expression] n’est pas obligatoire mais elle fortement conseillée, elle permet de définir la valeur du SIGNAL dans le cas où la condition n’est pas remplie 

49 2.5. Les instructions du mode « concurrent »:
2. Affectation sélective : Cette instruction permet d’affecter différentes valeurs à un signal, selon les valeurs prises par un signal dit de sélection. with SIGNAL_DE_SELECTION select SIGNAL <= expression when valeur_de_selection, [expression when valeur_de_selection,] [expression when others];

50 2.5. Les instructions du mode « concurrent »:
2. Affectation sélective : Exemple N°1 : -- Multiplexeur 4 vers 1 with SEL select S2 <= E1 when "00", E2 when "01", E3 when "10", E4 when "11", '0' when others;

51 Note: when others est nécessaire car il faut toujours définir la valeur du SIGNAL.


Télécharger ppt "Chapitre 01: Structure d'un module VHDL"

Présentations similaires


Annonces Google