Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > two process writing on one signal!

Reply
Thread Tools

two process writing on one signal!

 
 
hakim
Guest
Posts: n/a
 
      10-10-2004
....sorry if this has already been discussed before but i didnt get
nething addressing my exact concern on searching the archives! ...or
was i just too lazy!!
so here goes! I have multiple processes within an architecture of a
VHDl entity that writes to common signals. I understand that this is a
case of multiple drivers and that it is incorrect to have two
processes drive diff values on the signals simultaneously.
but i precisely know how my process executions overlap and am sure
that no two process will drive values at the same time. As in, if one
drives either 0 or 1 on the signal, all others are definitely driving
a 'Z' (or basically tristated).
....and yes it is important for me to keep them as separate processes
and not combine them into a single big process.

How do i pass on this information to the synthesizer to allow it to
complete sythesis process without errors? I am using Xilinx 6.3i for
FPGA syntheis.

Lemme know if u would like to see the code or need more details.

Thanks
Hakim
 
Reply With Quote
 
 
 
 
Ralf Hildebrandt
Guest
Posts: n/a
 
      10-10-2004
hakim wrote:

> so here goes! I have multiple processes within an architecture of a
> VHDl entity that writes to common signals. I understand that this is a
> case of multiple drivers and that it is incorrect to have two
> processes drive diff values on the signals simultaneously.
> but i precisely know how my process executions overlap and am sure
> that no two process will drive values at the same time. As in, if one
> drives either 0 or 1 on the signal, all others are definitely driving
> a 'Z' (or basically tristated).


A tri-state driver is described with:

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

Make it easy for the synthesis tool and use this tri-state description
explictly. (In other words: write in a biger process to a dummy signal
(data_in) and gate this dummy signal in an extra tri-state driver.)

data_out must be a resolved data type (std_logic(_vector)). You may
write to data_out from many tri-state describing processes.

Make sure, that your target supports tri-state drivers.

Ralf
 
Reply With Quote
 
 
 
 
Rich Webb
Guest
Posts: n/a
 
      10-10-2004
On 9 Oct 2004 21:50:47 -0700, (hakim) wrote:

>...sorry if this has already been discussed before but i didnt get
>nething addressing my exact concern on searching the archives! ...or
>was i just too lazy!!
> so here goes! I have multiple processes within an architecture of a
>VHDl entity that writes to common signals. I understand that this is a
>case of multiple drivers and that it is incorrect to have two
>processes drive diff values on the signals simultaneously.
>but i precisely know how my process executions overlap and am sure
>that no two process will drive values at the same time. As in, if one
>drives either 0 or 1 on the signal, all others are definitely driving
>a 'Z' (or basically tristated).
>...and yes it is important for me to keep them as separate processes
>and not combine them into a single big process.
>
>How do i pass on this information to the synthesizer to allow it to
>complete sythesis process without errors? I am using Xilinx 6.3i for
>FPGA syntheis.


#disclaimer: still learning but having fun

AFAIK, the only way to do this is to have the "single big process" that
you say you don't want. Not sure otherwise how to explicitly control
which gets to change what, when.

...
big_signal : std_logic;
...
big_signal <= this_event or that_event or other_event or ... ;
...
process (reset, big_signal)
...
if reset = '0'
...
elsif big_signal'event and big_signal = '1'
if this_event = '1'
...

and so on.

--
Rich Webb Norfolk, VA
 
Reply With Quote
 
Mike Treseler
Guest
Posts: n/a
 
      10-10-2004
hakim wrote:

> that no two process will drive values at the same time. As in, if one
> drives either 0 or 1 on the signal, all others are definitely driving
> a 'Z' (or basically tristated).


Use a mux structure to combine your outputs
in a single process. FPGAs of recent vintage
do not allow internal tri-state nodes.

-- Mike Treseler
 
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
CSS aligning two things on one line with one left and one right news.frontiernet.net HTML 6 04-16-2004 02:44 AM
Can i have two Nero CD writing programmes on one computer? Mick Cant Computer Support 3 02-27-2004 08:54 AM
writing two textbox's text in one textbox agb ASP .Net Web Controls 1 08-27-2003 12:57 AM
Re: Two processes writing one signal Jonathan Bromley VHDL 0 06-30-2003 10:27 AM
Re: Two processes writing one signal Phil Hays VHDL 1 06-30-2003 05:49 AM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57