Bonjour,
je viens de coder une fifo permettant de convertir un bus de 16 bits en un bus de 32 bits . mais j'ai un probleme au moment des simu. En effet un des signaux de mon testbench n'apparait pas dans la simu alors qu'il devrait et malgré la valeur que je lui applique, il se comporte comme une horloge je ne comprends pas . j'ai essayé de lui assigné une valeur au moment de la description du du signal puis de faire changer sa valeur dans un process mais rien n'y fait , il n'apparait pas et fait ce qu'il veut. Il s'agit du signal wr_en_in_t. Voici le testbench en question:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity fifo_conversion_bench is
end fifo_conversion_bench;
architecture TB of fifo_conversion_bench is
signal clock_in_t : std_logic;
signal wr_en_in_t : std_logic ;
signal rd_en_in_t : std_logic;
signal write_data_in_t : std_logic_vector ( 15 downto 0 );
signal read_data_out_t : std_logic_vector( 31 downto 0 );
signal reset_t : std_logic:='1';
signal full_out_t : std_logic;
signal empty_out_t : std_logic;
signal StopClock : boolean := FALSE;
component fifo_16_32 is
port (
clock_in : IN std_logic;
wr_en_in : IN std_logic;
rd_en_in : IN std_logic;
write_data_in : IN std_logic_vector ( 15 downto 0 );
read_data_out : OUT std_logic_vector( 31 downto 0 );
reset : IN std_logic :='1';
full_out : OUT std_logic;
empty_out : OUT std_logic
);
end component;
begin
reset_t <= '0' after 25 ns;
fifo : fifo_16_32
port map (clock_in => clock_in_t,
wr_en_in => clock_in_t,
rd_en_in => rd_en_in_t,
write_data_in => write_data_in_t,
read_data_out => read_data_out_t,
reset => reset_t,
full_out => full_out_t,
empty_out => empty_out_t
);
ClockGen: process is
begin
while not StopClock loop
clock_in_t <= '0';
wait for 5 ns;
clock_in_t <= '1';
wait for 5 ns;
end loop;
wait;
end process ClockGen;
sim : process is
begin
wait until rising_edge(clock_in_t);
wr_en_in_t <= '0';
rd_en_in_t <= '0';
write_data_in_t <= "0000000000000000";
wait until rising_edge(clock_in_t);
wr_en_in_t <= '1' ;
rd_en_in_t <= '0';
write_data_in_t <= "0000000000000001";
wait until rising_edge(clock_in_t);
wr_en_in_t <= '0' ;
rd_en_in_t <= '1';
write_data_in_t <= "0000000000000010";
wait until rising_edge(clock_in_t);
wr_en_in_t <= '1' ;
rd_en_in_t <= '1';
write_data_in_t <= "0000000000000011";
wait until rising_edge(clock_in_t);
wr_en_in_t <= '1' ;
rd_en_in_t <= '1';
write_data_in_t <= "0000000000000100";
wait until rising_edge(clock_in_t);
wr_en_in_t <= '1' ;
rd_en_in_t <= '1';
write_data_in_t <= "0000000000000110";
wait until rising_edge(clock_in_t);
wr_en_in_t <= '1' ;
rd_en_in_t <= '1';
write_data_in_t <= "0000000000000111";
wait until rising_edge(clock_in_t);
wr_en_in_t <= '1' ;
rd_en_in_t <= '1';
write_data_in_t <= "0000000000001000";
end process sim;
end TB;
-----