Td n°1 vhdl génie electrique langage de description pdf

Td n°1 vhdl génie electrique 2a eii langage de description V

Télécharger PDF

Université Sidi Mohamed Ben Abdellah

École Supérieure de Technologie - Fès

Filière : Génie Électrique

TD N°1 : Langage de Description VHDL - Partie N°1

Exercice N°1 : Modélisation des portes logiques fondamentales

Écrire un programme VHDL modélisant les portes logiques suivantes : ET, OU, Inverseur, Non ET, Non OU, XOR, et Non XOR.

Exercice N°2 : Description d'un demi-additionneur avec différentes architectures

Donnez deux programmes VHDL décrivant le fonctionnement d'un demi-additionneur. Chaque programme doit utiliser une architecture différente : l'une dite comportementale et l'autre structurelle.

Exercice N°3 : Analyse de circuit logique

  1. Donnez un programme VHDL modélisant le circuit donné.

  2. Proposez une deuxième architecture pour ce circuit.

Exercice N°4 : Modélisation d'un multiplexeur

Donnez un programme VHDL modélisant le fonctionnement du multiplexeur illustré.

Exercice N°5 : Circuit avec signal interne

  1. Donnez un programme VHDL modélisant le circuit en question.

  2. Proposez une deuxième architecture pour ce circuit.

Note : Le signal 'x' n'est ni une entrée ni une sortie, mais il a une réalité physique. Il est utilisé pour alléger l'écriture de la sortie S2.

Exercice N°6 : Décodeur 3 vers 8 à sorties actives à l'état bas

Considérons le décodeur 3 vers 8 à sorties actives à l'état bas (0) et à entrées de validation. Le fonctionnement de ce décodeur est résumé dans la table de vérité ci-dessous.

Donnez un programme VHDL décrivant ce circuit.

G1 G2 B2 B1 B0 D7 D6 D5 D4 D3 D2 D1 D0
0XXXXHHHHHHHH
10XXXHHHHHHHH
11XXXHHHHHHHH
11000HHHHHHHL
11001HHHHHHLH
11010HHHHHLHH
11011HHHHLHHH
11100HHHLHHHH
11101HHLHHHHH
11110HLHHHHHH
11111LHHHHHHH

Exercice N°7 : Multiplexeur avec différentes instructions VHDL

Donnez trois programmes VHDL modélisant le fonctionnement du multiplexeur présenté, en utilisant les instructions suivantes :

  • with...select

  • if...else

  • case...is

Exercice N°8 : Multiplexeur 4:1 avec entrée de validation

Donnez un programme VHDL modélisant le fonctionnement d'un multiplexeur 4:1 avec une entrée de validation (val).

Exercice N°9 : Comparateur numérique 4 bits

Donnez un programme VHDL modélisant le fonctionnement d'un comparateur numérique qui gère deux informations A et B, chacune codée sur 4 bits, et délivrant en sortie trois signaux : E (égalité), S (supériorité) et I (infériorité).

Exercice N°10 : Analyse de chronogrammes et code VHDL

Donnez les chronogrammes des différents signaux mis en jeu dans les programmes VHDL suivants :

Programme VHDL combil :

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all;

ENTITY combil IS

PORT (

a: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -- bus 4 fils

b: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -- bus 4 fils

S: OUT STD_LOGIC_VECTOR(11 DOWNTO 0); -- bus 12 fils

T: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) -- bus 8 fils

);

END combil;

ARCHITECTURE archi OF combil IS

ALIAS op1: STD_LOGIC_VECTOR (3 DOWNTO 0) IS S(3 DOWNTO 0);

ALIAS op2: STD_LOGIC_VECTOR (3 DOWNTO 0) IS S(7 DOWNTO 4);

BEGIN

op1 <= a AND b;

op2 <= a OR "1010";

T <= a & b; -- concaténation

S(8) <= '1' WHEN a > b ELSE '0';

S(9) <= '1' WHEN a = "0000" ELSE '0';

S(10) <= '1' WHEN a = "0011" ELSE '0';

S(11) <= '1' WHEN a <= "1001" ELSE '0';

END archi;

Programme VHDL combi2 :

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all;

ENTITY combi2 IS

PORT(

a: IN INTEGER RANGE 0 TO 15; -- bus 4 fils

b: IN INTEGER RANGE 0 TO 15; -- bus 4 fils

c: IN INTEGER RANGE -8 TO 7; -- bus 4 fils

U: OUT INTEGER RANGE 0 TO 11; -- bus 4 fils

Y: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); -- bus 3 fils

T: OUT INTEGER RANGE 0 TO 31 -- bus 5 fils

);

END combi2;

ARCHITECTURE archi OF combi2 IS

BEGIN

U <= a - 4;

T <= a + b;

Y(2) <= '1' WHEN a <= 12 ELSE '0'; -- 12 est un nombre exprimé en base 10

Y(1) <= '1' WHEN a > b ELSE '0';

Y(0) <= '1' WHEN TRUE ELSE '0'; -- Correction de 'WHEN 1' à 'WHEN TRUE' pour validité VHDL

END archi;

TD/TP : Langage de Description VHDL - Partie N°2

Exercice N°1 : Diagrammes d'évolutions

Les montages séquentiels simples sont en général représentés par un diagramme d'évolution. Il s'agit d'un ensemble d'états (cercles) reliés entre eux par des flèches (transitions).

Remarque : le dernier diagramme d'évolution avec un état isolé est à éviter.

Les diagrammes d'évolutions peuvent être aussi variés que ceux présentés ci-dessus. Ils peuvent avoir un ou plusieurs cycles. La suite des états n'est pas forcément dans l'ordre naturel (du comptage). Le nombre d'états N est relié au nombre n de bascules D : N = 2n.

Par exemple, pour le premier diagramme d'évolution donné, on trouve :

Tableau État présent/État futur

État présent État futur
q1 q0 Q1 Q0
0001
0110
1011
1100

On peut en déduire des tableaux de Karnaugh et donc des équations simplifiées. Ici, on obtient :

Q1 = q1 AND q0

Q0 = q0

Notez que q0 et q1 sont déclarées en mode INOUT, ce qui est obligatoire pour les équations de récurrence.

Question : Écrire le programme VHDL correspondant à chacune des équations de récurrence dérivées des différents diagrammes.

Exercice N°2 : Calcul de la factorielle d'un nombre entier

Écrire un programme VHDL qui décrit le fonctionnement d'un circuit calculant la factorielle d'un nombre entier entre 0 et 255.

Exercice N°3 : Analyse et application d'une fonction VHDL

On considère le programme VHDL ci-dessous qui décrit une fonction :

function Nomfunc (e : in bit_vector) return bit_vector is

variable s : bit_vector(e'left downto 0);

variable c : bit;

begin

C := e(0);

s(0) := not c;

for i in 1 to e'left loop

s(i) := c xor e(i);

C := c and e(i);

end loop;

return s;

end Nomfunc;

  1. Dans quelles parties d'un programme VHDL peut-on insérer un tel code ?

  2. Représenter le schéma généré par cette fonction si on l'applique à un vecteur de trois éléments binaires.

  3. Quelle est l'opération réalisée par cette fonction ?

  4. Utiliser cette fonction pour réaliser un compteur binaire synchrone 16 bits (activé sur front montant d'horloge).

  5. Modifier le compteur précédent pour lui adjoindre une commande de réinitialisation (RAZ) synchrone et une commande d'autorisation de comptage (C).

  6. Même question pour une commande RAZ asynchrone, indépendante de l'horloge.

Exercice N°4 : Codage de données avec boucles et variables

Soit A un bus de données de taille 4 bits. Nous voulons faire un codage de données selon le cahier des charges suivant :

  • Pour i=0 : S0 = A0

  • Pour i>0 : Si = Ai AND Ai-1 OR (NOT Ai) AND (NOT Ai-1)

Note : i est la variable d'itération de la boucle.

Exercice N°5 : Comptage du nombre de bits à '1'

Soit A un bus de données de taille 4 bits. Nous voulons faire un autre codage de données tel que le nombre S en sortie indique, en binaire, le nombre de signaux d'entrée à '1'.

Par exemple :

  • Si A = "1001", alors S = "010"

  • Si A = "1100", alors S = "010"

  • Si A = "1111", alors S = "100"

Donnez une description VHDL de ce registre. Réalisez des simulations pour vérifier le programme.

Exercice N°6 : Registre à décalage à droite

Considérons le registre à décalage à droite représenté par le schéma donné.

Donnez une description VHDL de ce registre. Réalisez des simulations pour vérifier le programme.

Foire aux Questions (FAQ) sur VHDL

Qu'est-ce que VHDL et à quoi sert-il ?

VHDL (VHSIC Hardware Description Language) est un langage de description matérielle utilisé pour modéliser des systèmes électroniques numériques. Il permet de décrire le comportement d'un circuit, sa structure et ses interconnexions, avant sa fabrication physique. Il est couramment employé pour la conception et la vérification de circuits intégrés spécifiques à une application (ASIC) et de composants logiques programmables (FPGA).

Quelles sont les différentes architectures VHDL pour décrire un circuit ?

En VHDL, un circuit peut être décrit de plusieurs manières principales :

  • Architecture comportementale : Elle décrit le fonctionnement du circuit en termes d'algorithme, sans spécifier explicitement la structure physique. On utilise des instructions comme if-else, case ou des processus.
  • Architecture structurelle : Elle décrit le circuit comme une interconnexion de composants plus petits (portes logiques, blocs fonctionnels prédéfinis). C'est une approche "bottom-up".
  • Architecture de flux de données : Elle décrit les relations entre les entrées et les sorties par des équations logiques ou des assignations concurrentes de signaux.

Quelle est la différence fondamentale entre un signal et une variable en VHDL ?

Les signaux sont des éléments de communication entre les composants d'un circuit ou entre les entités VHDL. Ils représentent des fils ou des liaisons physiques et sont mis à jour après un délai de propagation (même minime). Leurs valeurs sont visibles et stables à un instant donné dans l'architecture. Les variables, quant à elles, sont utilisées au sein de processus, de fonctions ou de procédures pour stocker des valeurs temporaires. Elles sont mises à jour instantanément (délai de simulation nul) et ne modélisent pas directement de connexion physique. Elles sont locales à leur bloc de déclaration et ne sont pas visibles de l'extérieur.

Partagez vos remarques, questions ou propositions d'amélioration ici...

Enregistrer un commentaire (0)
Plus récente Plus ancienne

Publicité 1

Publicité 2