Académique Documents
Professionnel Documents
Culture Documents
Introduction gnrale
Spcifications
VHDL est un langage de description matrielle. la diffrence des langages informatiques classiques, VHDL ne vise pas une excution, son but est de permettre la description de tout systme lectronique, den valider le fonctionnement avant de passer la mise en uvre matrielle. La conception dun systme passe par sa description. Cette description est toujours ralise en deux tapes au minimum. La premire tape consiste dcrire le systme comme une boite noire, alors que la seconde sintresse la description interne de la boite noire. Si la description de la vue externe (boite noire) ne pose gnralement pas de problme, la vue interne (larchitecture) peut quant elle tre ralise selon plusieurs modles de description. Rappelons brivement les trois types de description utilisables en VHDL : Description comportementale : il sagit dune description indiquant le comportement dun systme. Gnralement ralise sous la forme de processus, elle sapparente du code procdural classique. Description structurelle : il sagit dune description schmatique dun systme. Sappuyant sur des composants disponibles dans une bibliothque et sur des signaux. Cette description est lexacte reprsentation du schma lectrique du systme. description flot de donnes : il sagit dune description indiquant comment un flot de donnes traverse un systme. Le flot des sorties est exprim en fonction du flot des entres.
Pour pouvoir stocker correctement vos units de conception VHDL, vous devez crer une
bibliothque de travail : File > New > Library Laisser les noms work comme librairie de travail et physique, et cocher a new library and a logical mapping to it. Cest dans cette bibliothque que seront places toutes les entits compile sans erreur. Vous devez ensuite crer un projet : File > New > Project Tapez un nom de projet, par exemple projet, laisser coch copy library mappings et valider. Loutil vous demande dajouter des items dans le projet. Pour linstant, cliquer sur Close.
Vous pouvez ensuite passer au dveloppement de votre systme et aux compilations des diffrentes spcifications.
Aprs le lancement du logiciel ModelSim, placez-vous dans votre rpertoire de travail sur votre
espace disque par le menu : File > Change directory Slectionnez le rpertoire de travail Z : /VHDL/Projet. Ouvrez votre projet : File > Open > Project Slection du projet. Recherchez le fichier.mpf qui correspond votre projet (normalement, ce fichier doit tre dans le rpertoire que vous avez slectionn par le menu prcdent).
La compilation
Le lancement du compilateur seffectue par le menu : Compile> Compile du logiciel. Une fentre souvre alors et vous donne accs aux fichiers de votre rpertoire de travail. Slectionnez un fichier et cliquez sur Compile. La phase de compilation est alors active.
La simulation
Pour lancer le simulateur, slectionnez le menu Simulate> Start simulation Une fentre est alors ouverte et vous propose lensemble des units prsentes dans la bibliothque. Slectionnez une entit SIMULABLE (ou une configuration), cest dire une entit autonome qui instancie lentit simuler et qui gre les signaux dentre de lentit simuler. Les entits que vous allez dvelopper seront stockes dans la librairie Work ; Ouvrez ensuite les fentres de simulation par le menu View>Wave Par dfaut, lintervalle de simulation est de 100 ns, vous pouvez changer cette valeur en choisissant le menu : Simulate> Runtime options Pour visualiser les signaux de lentit de test, slectionnez TestPorteET dans longlet sim du workspace, cliquez sur Add , puis Add to wave . La fentre des chronogrammes doit alors faire apparatre la liste des signaux de lentit. Pour lancer un pas de simulation (de 100 ns), choisissez Simulate> Run> Run Pour recommencer une simulation, choisissez Simulate> Run> Restart .
Objectif du TP
Lobjectif de TP consiste : Ecrire un programme VHDL dun multiplexeur 4 vers 1 en utilisant les deux instructions conditionnelle et slective, ainsi dcrire en VHDL une bascule D, puis une unit arithmtique et logique (UAL) puis un Compteur synchrone et asynchrone.
Les TP raliser TP1 : Un Multiplexeur 4*1 TP2: Une Bascule D TP3: Un Compteur TP4: Une unit Arithmtique et Logique TP5: Affichage de 7 segments TP6: Gestion dun CARREFOUR
TP1 : Multiplexeur
Code VHDL
library ieee; use ieee.std_logic_1164.all; entity mux is port(E0,E1,E2,E3:in std_logic; sel:in std_logic_vector(1 downto 0) ; S:out std_logic); end mux; architecture archimux of mux is begin with sel select S<=E0 when "00", E1 when "01",E2 when "10",E3 when others; end archimux;
Lexcution de la simulation
TP2 : Bascule D
Code VHDL
Library ieee; Use ieee.std_logic_1164.all; Use ieee.numeric_std.all; Use ieee.std_logic_unsigned.all; entity BASCULED is port ( D,CLK : in std_logic; S : out std_logic); end BASCULED; architecture DESCRIPTION of BASCULED is
Lexcution de la simulation
TP3 : Compteur
Compteur Simple
Code VHDL
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY compteur IS PORT (clk : IN STD_LOGIC;compt_sortie : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);horloge_sortie : OUT STD_LOGIC); END compteur; ARCHITECTURE rtl OF compteur IS SIGNAL s_compt_sortie : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS (clk) BEGIN IF clk'EVENT AND clk = '1' THEN IF s_compt_sortie >= 23 THEN s_compt_sortie <= "00000"; ELSE
Lexcution de la simulation
Compteur Synchrone
Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all; entity compteursyn is PORT (CLOCK : in std_logic;RESET : in std_logic;Q : out std_logic_vector (2 downto 0)); end compteursyn ; architecture DESCRIPTION of CMP3BITS is signal CMP: std_logic_vector (2 downto 0); begin process (CLOCK) begin if (CLOCK ='1' and CLOCK'event) then if RESET ='1' then CMP <= "000"; else CMP <= CMP + 1; end if; end if; end process; Q <= CMP; end DESCRIPTION;
Lexcution de la simulation
Compteur aSynchrone
Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all; entity CMP3BITS is PORT (CLOCK : in std_logic;RESET : in std_logic;Q : out std_logic_vector(2 downto 0)); end compterAsyn; architecture DESCRIPTION of CMP3BITS is signal CMP: std_logic_vector (2 downto 0); begin process (RESET,CLOCK) begin if RESET ='1' then CMP <= "000"; elsif (CLOCK ='1' and CLOCK'event) then CMP <= CMP + 1; end if; end process; Q <= CMP;
Lexcution de la simulation
Library ieee;Use ieee.std_logic_1164.all;Use ieee.numeric_std.all;Use ieee.std_logic_unsigned.all; entity CMP3BITS is PORT (CLOCK : in std_logic;RESET : in std_logic;Q : out std_logic_vector(2 downto 0)); end compterAsyn; architecture DESCRIPTION of CMP3BITS is signal CMP: std_logic_vector (2 downto 0); begin process (RESET,CLOCK) begin if RESET ='1' then CMP <= "000"; elsif (CLOCK ='1' and CLOCK'event) then CMP <= CMP + 1; end if; end process; Q <= CMP; end DESCRIPTION;
Lexcution de la simulation
Lexcution de la simulation
END PROCESS DEFIN_ETAT; sorties : process (etat) BEGIN CASE etat IS WHEN INIT => r1 <= '1' ; r2 <='1' ; v1 <= '0'; v2 <= '0'; o1 <= '0';o2 <= '0'; nextetat <= v11; WHEN v11 => r1 <= '0' ; v1 <= '1'; nextetat <= v12; WHEN v12 => r1 <= '0'; v1 <= '1' ; nextetat <= v13; WHEN v13 => r1 <= '0'; v1 <= '1' ; nextetat <= v14; WHEN v14 => r1 <= '0'; v1 <= '1' ; nextetat <= v15; WHEN v15 => r1 <= '0'; v1 <= '1' ; nextetat <= v16; WHEN v16 => r1 <= '0'; v1 <= '1' ; nextetat <= v17; WHEN v17 => r1 <= '0'; v1 <= '1' ; nextetat <= v18; WHEN v18 => r1 <= '0'; v1 <= '1' ; nextetat <= or1; WHEN or1 => v1 <= '0'; o1 <= '1' ; nextetat <= sec; WHEN sec => r1 <= '1'; o1 <= '0' ; nextetat <= v21; WHEN v21 => r2 <= '0'; v2 <= '1' ; nextetat <= v22; WHEN v22 => r2 <= '0'; v2 <= '1' ; nextetat <= v23; WHEN v23 => r2 <= '0'; v2 <= '1' ; nextetat <= v24; WHEN v24 => r2 <= '0'; v2 <= '1' ; nextetat <= v25; WHEN v25 => r2 <= '0'; v2 <= '1' ; nextetat <= or2; WHEN or2 => v2 <= '0'; o2 <= '1' ; nextetat <= INIT; END CASE; END process sorties; END architecture diagramme;
Lexcution de la simulation
Suite de la simulation
Conclusion
Daprs la ralisation de ce TP, nous avons pu aboutir et apporter une rponse notre problmatique qui consiste dcrire et simuler la rponse dune composante lectronique en utilisant Modelsim et le langage VHDL, ce TP nous a aid approfondir et laborer nos connaissances en VHDL ainsi, se familiariser correctement avec Modelsim, nous avons acquis et dvelopp des qualits, aptitudes et intrts. Ce qui va tre bnfique notre dans cursus d'tude.