bon soir ,
j'ai un projet de mastere et j'ai rencontré un probleme de simulation d'un MUX qui possede un pin de type INOUT ("data_8" voir code ci dessous) ou entrée/sortie.
lors de la simulation quand je force data_8 a une valeur (sel_mux_in="01") il fonctionne bien mais quand je voulez l'utilisé comme sortie (sel_mux_in="11") (il reste coincé a la valeur précédente c'est a dire qu'il ne fonctionne pas comme sortie. si j'applique "not force" alors il fonctionne.le probleme lorsque je veux testé ce mux par une entité de teste comment je resoudre ce probleme de plus pratiquement est ce qu'on a ce problème.
s'il vous plait quelqu'un peut me reponder.
MERCI D'AVANCE.
LE CODE EST:
library ieee;
use ieee.std_logic_1164.all;
entity MUX_IP is
port(clk,reset_mu,reset_data,r eset_token,reset_in,reset_ack: in std_logic;
data_8:inout std_logic_vector(7 downto 0);
data_EP:in std_logic_vector(7 downto 0);
dataut std_logic_vector(7 downto 0);
sel_mux_data,sel_mux_in,Sel_MU X_prot,Sel_MUXtoken,Sel_MUXack :in std_logic_vector(1 downto 0);
com_PID_fsm_data,com_PID_prot, com_PID_IN:in std_logic_vector(7 downto 0)
);
end MUX_IP;
architecture arch_MUX_IP of MUX_IP is
-- signal sel_mux:std_logic_vector(1 downto 0);
-- signal com_PID :std_logic_vector(7 downto 0);
begin
p1: process(clk)
begin
if (reset_mu='1' or reset_data='1' or reset_token='1' or reset_in='1' or reset_ack='1')
then data_8 <="ZZZZZZZZ";
data <="ZZZZZZZZ";
elsif (clk' event and clk='1') then
case sel_mux_data is
when "01" => data <=data_8;
when "10" => data_8 <=data_EP;
when "11" => data_8 <= com_PID_fsm_data;
when others => data_8 <="ZZZZZZZZ";
data <="ZZZZZZZZ";
end case;
end if;
end process;
p2rocess(clk)
begin
if reset_mu='1' then data_8 <="ZZZZZZZZ";
data <="ZZZZZZZZ";
elsif (clk' event and clk='1') then
case sel_mux_in is
when "01" => data <=data_8;
when "10" => data_8 <=data_EP;
when "11" => data_8 <= com_PID_IN;
when others => data_8 <="ZZZZZZZZ";
data <="ZZZZZZZZ";
end case;
end if;
end process;
p3rocess(clk)
begin
if reset_mu='1' then data_8 <="ZZZZZZZZ";
data <="ZZZZZZZZ";
elsif (clk' event and clk='1') then
case Sel_MUX_prot is
when "01" => data <=data_8;
when "10" => data_8 <=data_EP;
when "11" => data_8 <= com_PID_prot;
when others => data_8 <="ZZZZZZZZ";
data <="ZZZZZZZZ";
end case;
end if;
end process;
p4rocess(clk)
begin
if reset_mu='1' then data_8 <="ZZZZZZZZ";
data <="ZZZZZZZZ";
elsif (clk' event and clk='1') then
case Sel_MUXtoken is
when "01" => data <=data_8;
when others => data_8 <="ZZZZZZZZ";
data <="ZZZZZZZZ";
end case;
end if;
end process;
p5rocess(clk)
begin
if reset_mu='1' then data_8 <="ZZZZZZZZ";
data <="ZZZZZZZZ";
elsif (clk' event and clk='1') then
case Sel_MUXack is
when "01" => data <=data_8;
when others => data_8 <="ZZZZZZZZ";
data <="ZZZZZZZZ";
end case;
end if;
end process;
end arch_MUX_IP;
-----