Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > How can I have multiple drivers of one inout port?

Reply
Thread Tools

How can I have multiple drivers of one inout port?

 
 
cruzin
Guest
Posts: n/a
 
      01-21-2004
Hi,

I am trying to connect the bidirectional ports of two components to
one bidirectional set of pins on my FPGA. Is it possible to do this in
VHDL? The following example does not appear to read the bidir port:

entity whatever
port (
signal choice : in std_logic;
signal my_bidir : inout std_logic
);
end;

architecture rtl of whatever is

signal x0_bidir,
x1_bidir : std_logic;

begin

xInstOne : x
port map (
my_bidir_port => x0_bidir );

xInstTwo: x
port map (
my_bidir_port => x1_bidir );

my_bidir <= x0_bidir when choice='0' else x1_bidir;

end;

==========================

Is there any way to modify this to make it work, or am I stuck with
exporting both input and output ports from the components and muxing
them at the top level?
 
Reply With Quote
 
 
 
 
Ralf Hildebrandt
Guest
Posts: n/a
 
      01-22-2004
f'up comp.lang.vhdl set

cruzin wrote:

> I am trying to connect the bidirectional ports of two components to
> one bidirectional set of pins on my FPGA. Is it possible to do this in
> VHDL?


Take tri-state drivers

process(enable,some_signal)
begin
if (enable='1') then
target_signal<=some_signal;
else target_signal<=(others=>'Z');
end if;
end process;

target_signal has to be of std_logic(_vector), because it has to be
resoled (multiple drivers).

Take care, that *only one* of these tri-state-drivers are activated at a
time.

Take care, that everytime *at least one* driver is active (otherwise
target_signal would float).


Think about providing these enable-signals to the tri-state-drivers.
E.g. if you have several memory blocks, the address may decide, which
block is allowed to drive target_signal -> the enable-signals can be
generated thorugh combinational logic out of the address.


Ralf

 
Reply With Quote
 
 
 
 
PO Laprise
Guest
Posts: n/a
 
      01-23-2004
Ralf Hildebrandt wrote:
> Take care, that everytime *at least one* driver is active (otherwise
> target_signal would float).


Of course, having a floating signal doesn't matter as long as you don't
try to read it. To be more precise, you should take care that one and
only one driver is active when someone needs to read the bus.

--
Pierre-Olivier

-- to email me directly, remove all _N0SP4M_ from my address --

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Connecting an inout port to another inout port THurkmans VHDL 14 08-11-2009 08:32 PM
inout to inout Ken VHDL 2 05-09-2008 01:56 PM
connecting std_logic inout ports and std_logic_vector inout port =?ISO-8859-15?Q?Fr=E9d=E9ric_Lochon?= VHDL 3 11-08-2007 03:55 AM
Re: I can't set inout port in vhdl code rickman VHDL 1 11-12-2004 07:04 AM
Samsung SCD6040 - Anyone have one, used one, or have reviews on one? g wills Digital Photography 0 09-08-2004 08:06 PM



Advertisments