library ieee; use std.textio.all; use ieee.std_logic_1164.all; entity TB_MOTOR_TIMER is end TB_MOTOR_TIMER; architecture TEST of TB_MOTOR_TIMER is constant PERIOD : time := 1 sec/8192; component MOTOR_TIMER port(CLK : in std_ulogic; RESET : in std_ulogic; MOTOR_GO : in std_ulogic; MOTOR_READY : in std_ulogic; MOTOR_ERROR : out std_ulogic); end component; signal W_CLK : std_ulogic := '0'; signal W_RESET : std_ulogic; signal W_MOTOR_GO : std_ulogic; signal W_MOTOR_READY : std_ulogic; signal W_MOTOR_ERROR : std_ulogic; begin DUT : MOTOR_TIMER port map( CLK => W_CLK, RESET => W_RESET, MOTOR_GO => W_MOTOR_GO, MOTOR_READY => W_MOTOR_READY, MOTOR_ERROR => W_MOTOR_ERROR); W_CLK <= not W_CLK after PERIOD/2; STIMULI : process begin W_RESET <= '1'; W_MOTOR_GO <= '1'; W_MOTOR_READY <= '0'; -- MOTOR_ERROR: '0' wait for 3*PERIOD; W_RESET <= '0'; W_MOTOR_GO <= '0'; -- no changes wait for 2.1 sec; W_MOTOR_GO <= '1'; wait for PERIOD; W_MOTOR_GO <= '0'; -- MOTOR_ERROR -> '1' -> '0' wait for 2.1 sec; W_MOTOR_GO <= '1'; wait for PERIOD; W_MOTOR_GO <= '0'; wait for 1.9 sec; W_MOTOR_READY <= '1'; wait for PERIOD; W_MOTOR_READY <= '0'; -- MOTOR_ERROR remains '0'; wait for 2.1 sec; assert false report "End of stimuli reached" severity failure; end process STIMULI; SAMPLE : process(W_MOTOR_GO, W_MOTOR_ERROR) constant SPACE : string := " "; variable FILE_LINE : line; FILE OUT_FILE : text IS OUT "lab_8.trace"; begin write(FILE_LINE, now); write(FILE_LINE, SPACE); write(FILE_LINE, to_bit(W_MOTOR_GO)); write(FILE_LINE, SPACE); write(FILE_LINE, to_bit(W_MOTOR_ERROR)); writeline(OUT_FILE, FILE_LINE); end process SAMPLE; end TEST; configuration CFG_TB_MOTOR_TIMER of TB_MOTOR_TIMER is for TEST end for; end CFG_TB_MOTOR_TIMER;