------------------------------------------------------------------------------- -- Title : Test du circuit premier projet -- Project : ------------------------------------------------------------------------------- -- File : test_premier.vhd -- Author : Patrice -- Company : -- Created : 2008-03-19 -- Last update: 2008/06/11 -- Platform : -- Standard : VHDL'93 ------------------------------------------------------------------------------- -- Description: ------------------------------------------------------------------------------- -- Copyright (c) 2008 http://vhdl33.free.fr ------------------------------------------------------------------------------- -- Revisions : -- Date Version Author Description -- 2008-03-19 1.0 patrice Created ------------------------------------------------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; ENTITY test_premier IS -- toute la maquette de test END test_premier; ARCHITECTURE maquette OF test_premier IS COMPONENT premier GENERIC ( simulation : boolean := false); PORT ( clock : IN std_ulogic; boutons : IN std_logic_vector(3 DOWNTO 0); afficheurs : OUT std_logic_vector(31 DOWNTO 0); leds : OUT std_logic_vector(2 DOWNTO 0)); END COMPONENT; SIGNAL horloge : std_ulogic; SIGNAL boutons :std_logic_vector(3 DOWNTO 0); SIGNAL afficheurs : std_logic_vector(31 DOWNTO 0); SIGNAL leds : std_logic_vector(2 DOWNTO 0); ALIAS reset : std_logic IS boutons(3); ALIAS mode : std_logic IS boutons(2); ALIAS plus : std_logic IS boutons(1); ALIAS moins : std_logic IS boutons(0); ALIAS heure1 : std_logic_vector(7 DOWNTO 0) IS afficheurs(31 DOWNTO 24); ALIAS heure2 : std_logic_vector(7 DOWNTO 0) IS afficheurs(23 DOWNTO 16); ALIAS minute2 : std_logic_vector(7 DOWNTO 0) IS afficheurs(15 DOWNTO 8); ALIAS minute1 : std_logic_vector(7 DOWNTO 0) IS afficheurs(7 DOWNTO 0); ALIAS pulsation : std_ulogic IS leds(2); ALIAS active_alarm : std_ulogic IS leds(1); ALIAS alarme_ok : std_ulogic IS leds(0); -- les differentes constantes de temps pour la simulation CONSTANT Periode : time := 100 ns; -- frequence 10 MHz -- rappel des differentes constantes de temps en simulation: -- tempo anti-rebonds du poussoir : 3 -- prediviseur d'horloge (1 seconde): 2 -- predivision pour minute : 3 (au lieu de 60) -- en simulation 2x2x3= 12 periodes equivalent à une minute BEGIN -- maquette -- instanciation du composant premier P1 : premier GENERIC MAP ( simulation => true) PORT MAP ( clock => horloge, boutons => boutons, afficheurs => afficheurs, leds => leds); -- horloge rapide hr: PROCESS BEGIN -- PROCESS hr horloge <= '1', '0' AFTER periode / 2 ; WAIT FOR periode; END PROCESS hr; -- ensemble du test sequence: PROCESS BEGIN -- PROCESS P1 boutons <= "0000"; reset <= '1'; -- reset: demarrage propre WAIT FOR 10 * periode + periode /4 ; reset <= '0'; -- aucun actif WAIT UNTIL falling_edge(reset); -- comptage partiel WAIT FOR 100 * periode; ASSERT afficheurs = x"03030301" REPORT "comptage faux"; -- passage en programmation heure mode <= '1', '0' AFTER 5 * periode; WAIT FOR 10 * periode; plus <= '1', '0' AFTER 5 * periode; WAIT FOR 10 * periode; -- passage en programmation minute mode <= '1', '0' AFTER 5 * periode; WAIT FOR 10 * periode; moins <= '1', '0' AFTER 5 * periode; WAIT FOR 10 * periode; -- passage en programmation heure alarme mode <= '1', '0' AFTER 5 * periode; WAIT FOR 10 * periode; plus <= '1', '0' AFTER 5 * periode; WAIT FOR 10 * periode; -- passage en programmation minute alarme mode <= '1', '0' AFTER 5 * periode; WAIT FOR 10 * periode; moins <= '1', '0' AFTER 5 * periode; WAIT FOR 10 * periode; -- retour au mode normal mode <= '1', '0' AFTER 5 * periode; WAIT FOR 10 * periode; -- activation de l'alarme plus <= '1', '0' AFTER 5 * periode; WAIT FOR 10 * periode; wait; END PROCESS sequence; END maquette;