Je sais pas s'il y a des connaisseurs du langage VHDL, mais bon, comme on dit, qui ne tente rien n'a rien
Voila mon code :
Code du multiplexeur:
Code : Tout sélectionner
library IEEE;
use IEEE.std_logic_1164.all;
entity MUX is
port (TIME_DATA : in std_logic_vector(3 downto 0);
ALARM_DATA : in std_logic_vector(3 downto 0);
SHOW_A : in std_logic;
DISPLAY : out std_logic_vector(3 downto 0));
end MUX;
architecture RTL of MUX is
begin
DISP_MUX: process (TIME_DATA, ALARM_DATA)
begin
if SHOW_A = '1' then
DISPLAY <= ALARM_DATA;
else
DISPLAY <= TIME_DATA;
end if;
end process DISP_MUX;
end RTL;
Code :
Code : Tout sélectionner
library IEEE;
use IEEE.std_logic_1164.all;
entity TB_MUX is
end TB_MUX;
architecture BENCH of TB_MUX is
-- component declaration for MUX
component MUX
port (TIME_DATA : in std_logic_vector(3 downto 0):="0000";
ALARM_DATA : in std_logic_vector(3 downto 0);
SHOW_A : in std_logic:='0';
DISPLAY : out std_logic_vector(3 downto 0));
end component;
-- local signal declarations
signal TIME_DATA, ALARM_DATA, DISPLAY : std_logic_vector(3 downto 0);
signal SHOW_A : std_logic;
begin
-- component instantiation of MUX
--SHOW_A <= '0' after 20 ns;
DUT : MUX port map (
TIME_DATA => TIME_DATA,
ALARM_DATA => ALARM_DATA,
SHOW_A => SHOW_A,
DISPLAY => DISPLAY
);
-- stimulus process
STIMULUS: process
begin
TIME_DATA <= "0000";
ALARM_DATA <= "1111";
SHOW_A <= '0';
wait for 10 ns;
SHOW_A <= '1';
wait for 10 ns;
end process STIMULUS;
end BENCH;
Si vous suivez le fonctionnement du multiplexeur, normalement à la deuxieme initialisation de SHOW_A ( SHOW_A <= '1'), la sortie DISPLAY devrai passé à la valeur de ALARM_DATA, le probleme c'est que n'est pas le cas.
Pourriez vous m'eclairer? Peut etre un probleme de mapping des ports? ou autre chose ?
je debute en VHDL.
Merci pour votre Aide
Zehle[/code]