Exercices VHDL
Commentaires Composés : Exercices VHDL. Recherche parmi 300 000+ dissertationsPar amiine222 • 15 Juillet 2014 • 6 524 Mots (27 Pages) • 1 752 Vues
Elément de Module : Electronique numérique 2
Par M.JAROU 1 | P a g e
Travaux dirigés – Série N°1 Conception des circuits numériques avec langage VHDL
LOGIQUE COMBINATOIRE TD N°1 : FONCTIONS DE BASE TD N°2 : FONCTIONS COMBINATOIRES COMPLEXES Décodeur 7 SEGments hexadécimal Décodeur 7 SEGments décimal Démultiplexeur 3 vers 8 à sorties actives à 0 et à entrées de validation Comparateur de magnitude 4 bits
LOGIQUE SEQUENTIELLE
TD N°3 : FONCTIONS DE BASE Partie A : Fonctions asynchrones Bascule RS Verrou (latch) Partie B : Fonctions synchrones Bascule D Bascule RS synchrone Bascule JK Bascule T
TD N°4 : FONCTIONS COMPLEXES Partie A : Fonctions de comptage Compteur synchrone Décompteur synchrone Compteur décompteur synchrone Compteur synchrone modulo N Compteur synchrone à prépositionnement synchrone Compteur synchrone cascadable
Partie B : Registres à décalage Registre à décalage à droite Registre à décalage à droite à autorisation d'horloge Registre à décalage à droite ou à gauche Registre à décalage à chargement parallèle synchrone Compteur en anneau : génération de séquence Compteur en anneau : génération de séquence pseudo-aléatoire
Elément de Module : Electronique numérique 2
Par M.JAROU 2 | P a g e
TD N°1 : * Partie A : Fonction de base L'apprentissage de la logique commence, de manière incontournable, par des notions d'algèbre de BOOLE. Celles-ci étant acquises ou en voie de l'être, on aborde les premiers exemples concrets en utilisant des portes logiques élémentaires. Ceci donne lieu à des expérimentations qui permettent d'étudier les aspects technologiques des circuits logiques (dans ce cas les circuits 74xx ou CD4000 sont bien utiles ///). On donne ci-dessous un exemple.
L'outil de développement va interpréter la description en langage comportemental et proposer une solution pour "câbler" le circuit logique programmable de manière à ce qu'il remplisse la fonction décrite. Parmi les nombreux fichiers intermédiaires qu'il crée, il s'en trouvera qui contiennent la liste des équations booléennes générées. C'est cette liste qui est fournie après chaque exemple.
Une description en langage VHDL est fournie ci-dessous.
LIBRARY ieee; Use ieee.std_logic_1164.all; Use ieee.numeric_std.all; Use ieee.std_logic_unsigned.all;
entity PORTES is port (A,B :in std_logic; Y1,Y2,Y3,Y4,Y5,Y6,Y7:out std_logic); end PORTES;
architecture ARCH_PORTES of PORTES is begin Y1 <= A and B; Y2 <= A or B; Y3 <= A xor B; Y4 <= not A; Y5 <= A nand B; Y6 <= A nor B; Y7 <= not(A xor B); end ARCH_PORTES;
Les équations générées à partir de la description en VHDL sont : y1 = a * b y2 = b + a y3 = a * /b + /a * b y4 = /a y5 = /a + /b y6 = /a * /b y7 = a * b + /a * /b
Le schéma logique RTL généré :
Elément de Module : Electronique numérique 2
Par M.JAROU 3 | P a g e
Partie B : Applications combinatoires complexes L'utilisation de l'algèbre de BOOLE et de ses méthodes de simplification par tableau de KARNAUGH amène à travailler sur des fonctions combinatoires complexes. Voici 4 exemples classiques : le décodeur 7 SEGments hexadécimal, le décodeur 7 SEGments décimal, le démultiplexeur, le comparateur de magnitude pour lesquels il sera intéressant d'effectuer aussi la détermination des équations "à la main" afin de vérifier la similitude des solutions.
Décodeur 7 SEGments hexadécimal Donner la description en langage VHDL pour le décodeur à 7 SEGments hexadécimal. Le choix d'un afficheur Anode ou Cathode commune se fera en complémentant ou non la sortie SEG.
Description en langage VHDL
LIBRARY ieee; Use ieee.std_logic_1164.all; Use ieee.numeric_std.all; Use ieee.std_logic_unsigned.all;
entity DEC7SEG3 is port (DEC :in std_logic_vector(3 downto 0); SEG:out std_logic_vector(0 to 6)); end DEC7SEG3;
architecture ARCH_DEC7SEG3 of DEC7SEG3 is begin SEG <= "1111110" WHEN DEC = 0 ELSE "0110000" WHEN DEC = 1 ELSE "1101101" WHEN DEC = 2 ELSE "1111001" WHEN DEC = 3 ELSE "0110011" WHEN DEC = 4 ELSE "1011011" WHEN DEC = 5 ELSE "1011111" WHEN DEC = 6 ELSE "1110000" WHEN DEC = 7 ELSE "1111111" WHEN DEC = 8 ELSE "1111011" WHEN DEC = 9 ELSE "1110111" WHEN DEC = 10 ELSE "0011111" WHEN DEC = 11 ELSE "1001110" WHEN DEC = 12 ELSE "0111101" WHEN DEC = 13 ELSE "1001111" WHEN DEC = 14
Y1~0
Y2~0
Y3~0
Y5~0
Y4
Y5
Y6
Y7
Y1
A
Y6~0
B
Y2
Y3
Elément de Module : Electronique numérique 2
Par M.JAROU 4 | P a g e
ELSE "1000111"; end ARCH_DEC7SEG3;
Les équations générées sont : SEG_0 = /DEC_3 * DEC_2 * DEC_0 + DEC_3 * /DEC_2 * /DEC_1 + /DEC_2 * /DEC_0 + DEC_3 * /DEC_0 + DEC_2 * DEC_1 + /DEC_3 * DEC_1 SEG_1 = /DEC_3 * DEC_1 * DEC_0 + DEC_3 * /DEC_1 * DEC_0 + /DEC_3 * /DEC_1 * /DEC_0 + /DEC_2 * /DEC_0 + /DEC_2 * /DEC_1 SEG_2 = /DEC_2 * /DEC_1 + /DEC_2 * DEC_0 + /DEC_3 * DEC_2 + /DEC_1 * DEC_0 + DEC_3 * /DEC_2 SEG_3 = DEC_2 * DEC_1 * /DEC_0 + /DEC_3 * /DEC_2 * /DEC_0 + /DEC_2 * DEC_1 * DEC_0 + DEC_2 * /DEC_1 * DEC_0 + DEC_3 * /DEC_1 SEG_4 = /DEC_2 * /DEC_0 + DEC_3 * DEC_2 +
...