efrei/logique-programmable/exercices/vhdl/fsm_tb.vhd

57 lines
1.3 KiB
VHDL

library ieee;
use ieee.std_logic_1164.all;
entity fsm_tb is
end entity;
architecture fsm_tb_arch of fsm_tb is
-- Déclarations
signal run : std_logic := '1';
signal clk_tb : std_logic := '1';
signal rst_tb : std_logic;
signal defaut_tb : std_logic;
signal rouge_tb : std_logic;
signal orange_tb : std_logic;
signal vert_tb : std_logic;
constant clk_period: time := 1 ms; -- inverse de 1kHz
begin
fsm_tb: entity work.fsm
generic map (
sim => '1')
port map (
clk => clk_tb,
rst => rst_tb,
defaut => defaut_tb,
rouge => rouge_tb,
orange => orange_tb,
vert => vert_tb);
-- Génération d'une horloge de 1kHz
clk_tb <= not clk_tb after clk_period/2 when run = '1' else '0';
simulation: process
begin
-- Initialisation de rst à 1 et de defaut à 0
rst_tb <= '1';
defaut_tb <= '0';
-- Passer rst à 0 après 4 ms
wait for 4 ms;
rst_tb <= '0';
-- Passer defaut à 1 après 8 secondes
wait for 8000 ms;
defaut_tb <= '1';
-- Passer defaut à 0 après 1 seconde
wait for 1000 ms;
defaut_tb <= '0';
-- Terminer la simulation après 1 seconde
wait for 1000 ms;
run <= '1';
wait;
end process;
end architecture;