VHDL Exercices Du Cours
Short Description
Download VHDL Exercices Du Cours...
Description
Introduction au langage VHDL
Exercices: 1 Fonctions logiques combinatoires . ................................................3 1.1 Exercice 1 : Décodage d’adresses . ..............................................3 1.2 Exercice 2 : Multiplexeur . .....................................................5 1.3 Exercice 3 : Décodeur Hexadécimal / 7 segments . ................................7 1.4 Exercice 4 : Démultiplexeur 1→ 8 . ..............................................9 2 Sorties trois états, entrées/sorties . ...........................................10 2.1 Exercice 5 : Buffer trois états . ..............................................10 2.2 Exercice 6 : Transceiver . .....................................................10 3 Circuits logiques séquentiels . ..................................................11 3.1 Exercice 7 : Latch . ...........................................................11 3.2 Exercice 8 : Registre . ........................................................12 3.3 Exercice 9 : Registre avec mise à zéro asynchrone . ............................12 3.4 Exercice 10 : Registre avec mise à zéro et mise à un synchrone ................13 3.5 Exercice 11 : Compteur binaire avec mise à zéro asynchrone ....................13 3.6 Exercice 12 : Compteur binaire chargeable .....................................14 3.7 Exercice 13 : Compteur/Décompteur binaire chargeable . .........................16
2
Introduction au langage VHDL
1 Fonctions logiques combinatoires 1.1 Exercice 1 : Décodage d’adresses Logigramme de la fonction à réaliser On donne ci-dessous un plan mémoire (mapping memory) à réaliser.
A15
Decod_Add
A14 A13
ROM1 ROM2 Libre IO RAM
$FFFF Solution 1 « classique » : Tableau d’adressage
ROM1 (8k) $E000 $DFFF
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 @ $FFFF $E000 $DFFF $C000 $BFFF $4000 $3FFF $2000 $1FFF $0000
ROM2 (8k) $C000 $BFFF Libre (32k) $4000 $3FFF I/O (8k) $2000 $1FFF RAM (8k)
Remarque : Les broches de sélection des boîtiers mémoires sont actives à l’état bas.
Equations $0000
/Libre /A13
/A15./A14
/0A115.A14
A15.A14
A15./A14
/ROM1 = A13
/ROM2 = /libre = /I_O
=
/RAM =
Solution 2 : Description « flot de données » en VHDL (.vhd) entity Decod_Add is
architecture flot_Decod_Add of Decod_Add is begin
end flot_Decod_Add; 3
Introduction au langage VHDL
Solution 3 : Descriptions comportementales en VHDL (.vhd)
Utilisation d’une affectation concurrente conditionnelle On se limite à la sortie ROM1. entity Decod_Add1 is port( BusAdd: in std_logic_vector (15 downto 13) ; ROM1: out std_logic ); end Decod_Add1 ; architecture comporte1_Decod_Add1 of Decod_Add1 is begin ROM1 Z) est équivalente à “ZZZZZZZZ”
2.2 Exercice 6 : Transceiver Ecrire le fichier .VHD correspondant au transceiver ci-dessous.
OEAB
8
8
D_IN
D_OUT
OEBA
entity Transceiver is
architecture comporte_Trans of Transceiver is begin
end comporte_Trans; end Transceiver;
10
Introduction au langage VHDL
Schéma RTL du Transceiver
3 Circuits logiques séquentiels
Circuit séquentiel asynchrone Rappel : Un latch (ou verrou) possède deux modes de fonctionnement : passant lorsque son entrée LE (Latch Enable) est à un (par exemple), verrouillé lorsque LE est à zéro.
3.1 Exercice 7 : LATCH Ecrire le fichier .VHD correspondant au Latch ci-dessous.
D
8
8
Q
LE
entity Latch is
architecture comporte_Latch of Latch is begin
end Latch;
end comporte_Latch;
Schéma RTL du LATCH
11
Introduction au langage VHDL
Circuits séquentiels synchrones
3.2 Exercice 8 : Registre 8 bits Ecrire le fichier .VHD correspondant au registre ci-dessous. D
8
8
Fonctionnement Q [X]; @repeat 5 {[c,0,0,X] -> [X];} [c,0,1,8] -> [X]; @repeat 20 {[c,0,0,X] -> [X];} end
Simulation fonctionnelle
15
Introduction au langage VHDL
3.7 Exercice 13 : Compteur/Décompteur binaire chargeable Ecrire le fichier .VHD correspondant au compteur/décompteur ci-dessous. 8
CMPDEC
D
8 Q
Fonctionnement attendu - chargement synchrone, - reset asynchrone
clk
UP DOWN___Comportement_______ 0 0 Rien 1 0 compte 0 1 décompte 1 1 Rien
load rst down up
architecture comporte_CMP_DEC of CMP_DEC is
entity CMP_DEC is
begin
end CMP_DEC; end comporte_CMP_DEC;
Fichier de simulation .abv module testcpde // input clk, rst, load,up,down D_7_,D_6_,D_5_,D_4_,D_3_,D_2_,D_1_,D_0_
pin; pin ;
// output Q_7_,Q_6_,Q_5_,Q_4_,Q_3_,Q_2_,Q_1_,Q_0_
pin istype 'reg_d,buffer';
// Vectors Q = [Q_7_,Q_6_,Q_5_,Q_4_,Q_3_,Q_2_,Q_1_,Q_0_]; D = [D_7_,D_6_,D_5_,D_4_,D_3_,D_2_,D_1_,D_0_]; // constantes c = .c.; x = .x.; X = [x,x,x,x,x,x,x,x]; equations test_vectors ([clk,rst,load,up,down,D] -> [Q]) [c,1,0,0,0,0] -> [X]; @repeat 10 {[c,0,0,1,0,X] -> [X];} [c,0,1,0,0,20] -> [X]; @repeat 10 {[c,0,0,0,1,X] -> [X];} end
16
Introduction au langage VHDL
« Fichier .vhd » entity Div3b is
architecture Comporte of Div3b is (A REFAIRE)
port(
type liste_etat is (Etat0,Etat1,Etat2,Etat3); signal etat:liste_etat;
E, Rc: in std_logic ; s: out std_logic );
begin process(E) begin if (E'event and E='1') then case etat is when Etat0 => s
View more...
Comments