Probleme pin (inout) vhdl
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Probleme pin (inout) vhdl



  1. #1
    aydi

    Probleme pin (inout) vhdl


    ------

    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;

    -----

  2. #2
    jiherve

    Re : Probleme pin (inout) vhdl

    Bonjour,
    Cela serait bien que ta liste de sensibilité inclue les variables d'entrée
    p1: process(clk)
    begin
    if (reset_mu='1' or reset_data='1' or reset_token='1' or reset_in='1' or reset_ack='1')
    zero pointé !
    il faut écrire
    p1: process(clk,reset_mu,reset_dat a, reset_token, reset_in,reset_ack)
    begin
    if (reset_mu='1' or reset_data='1' or reset_token='1' or reset_in='1' or reset_ack='1')..
    Pour sel mux ce n'est pas nécessaire car ton process s'active grâce au front d'horloge
    Il faut faire la même chose sur les autres process.
    En VHDL un process ne s'active que sur les éventuels changement d'etat des signaux spécifiés dans la liste de sensibilité, autrement il reste à roupiller.
    A noter tout de même que d'un point de vue synthèse et fonctionnement ton code est mauvais, en effet la multiplicité des entrée asynchrones forçant l'initialisation de tes signaux crée un grand nombre de conditions de probables métastabilité car ce phénomène physique apparait aussi en sortie de reset, il vaudrait donc mieux choisir un mode d'initialisation synchrone ou resynchroniser le relâchement du reset.
    JR
    l'électronique c'est pas du vaudou!

Discussions similaires

  1. Photos ? Pin d'alep ou Pin parasol ?
    Par sanglap dans le forum Identification des espèces animales ou végétales
    Réponses: 8
    Dernier message: 19/04/2010, 09h42
  2. 16f88 , problème PWM , pin ON/OFF
    Par mdiabolo dans le forum Électronique
    Réponses: 0
    Dernier message: 08/03/2009, 13h34
  3. Point flottant en VHDL et vhdl-200x
    Par invite6eee6b27 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 02/09/2008, 19h47
  4. Photo d'un pin ? Mais quel type de pin ?
    Par sanglap dans le forum Biologie
    Réponses: 2
    Dernier message: 25/03/2007, 11h05
  5. probleme code pin tv thomson
    Par inviteaca9d4f9 dans le forum Dépannage
    Réponses: 1
    Dernier message: 03/04/2005, 18h39
Découvrez nos comparatifs produits sur l'informatique et les technologies.