[VHDL]Problème de inout

Electronique numérique / Circuits logiques programmables EPLD, CPLD, FPGA d'Altera ou de Xilinx VHDL, Verilog ou SystemC

Modérateur : Modérateur

bobish

[VHDL]Problème de inout

Message par bobish »

Bonjour,

J'ai un petit problème lors de ma compilation sous quartus :

Je suis en train de créer un composant qui gère la réception et l'envoi d'informations par un seul seul fil...
J'ai donc crée une machine à états, qui normalement....... evite tous conflits entre l'envoi et la réception des données.

Néanmoins, j'ai l'erreur suivante :
]Error: The pin "data" has multiple drivers.
On m'a conseillé d'utiliser un tri-state... le problème c'est que je ne vois pas trop comment l'utiliser...

Est ce que quelqu'un aurait un conseil pour palier à mon problème ???

Merci d'avance

Avatar de l’utilisateur
ukandar
REGULIER
REGULIER
Messages : 128
Inscription : 24 mars 2006 20:01
Localisation : yvelines

Message par ukandar »

bonjour,

il faut effectivement que tu utilises un tri state. Mais avant ceci assure toi que tu as bien défini ton imput/ouput en pin bidirectionnel.
Sinon pour le tri sate voici comment il faut que tu fasses :

Code : Tout sélectionner

COMPONENT lpm_bustri
   GENERIC 
      (LPM_WIDTH       : POSITIVE;
      LPM_TYPE         : STRING     := "LPM_BUSTRI";
      LPM_HINT         : STRING     := "UNUSED");
     PORT (data               : IN STD_LOGIC_VECTOR(LPM_WIDTH-1 DOWNTO 0);
        enabledt, enabletr  : IN STD_LOGIC := '0';
        result              : OUT STD_LOGIC_VECTOR(LPM_WIDTH-1 DOWNTO 0);
        tridata             : INOUT STD_LOGIC_VECTOR(LPM_WIDTH-1 DOWNTO 0));
END COMPONENT;


ensuite voici la fonction des différentes entrée sortie, avec un petit dessin


enabledt : If high, enables data onto the tridata[] bus
enabletr : If high, enables tridata[] onto the result bus

en espérant avoir été clair
Pièces jointes
tristate.jpg
tristate.jpg (25.32 Kio) Consulté 3087 fois

Répondre