EmbDev.net

Forum: FPGA, VHDL & Verilog Process and list sensitivity


von mansoor s. (Company: shahroodut) (mansoor64)


Attached files:

Rate this post
useful
not useful
Hi
I wrote a program that outputs it to me a little confused.
So someone explain to me what the problem could be that I'm grateful.
I'm going with the activation of a particular input to output transfer 
process sensitivity list for example if the active instance  rx1 then 
in1 transferred to the output.
The process for the first time about 10 times rx2 zero and one, 
respectively in2're just getting into the stream and no problem
but In the second series, which began rx4 zero and one,and is repeated 
about 10 times over, the first valu of in4 not moved to output but later 
transferred to the output in4, respectively.
please see the attached image.
the process list sensitivity not have overlap.

process(rx1,rx2,rx3,rx4,clk2)
begin
if(rx1='1')then
...
...
elsif(rx2='1')then
...
...
...
end if;
end process;

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
> I wrote a program
Please add the file as an attachment.
The problems in a VHDL code usually don't come from sensitivity lists. 
In most cases they are buried somewhere else...

von Andreas H. (ahz)


Rate this post
useful
not useful
Hi

It's hard to say what's going on without the sourcecode :/

Anyway, it looks like an standard flaw. The process sketch looks like a 
multiplexer. The process (in simulation) responds to all events of the 
signals in the sensitivity list.

For a given time t assume two events
  in2 <= "FE", and
  rising_edge(rx2) in THAT order.

The simulator assigns in2 and then to the neccassary action assigned to 
rx2 ( i expect this should be data_out <= in2. Thx for posting the code 
:-( )
So, after time t data_out is "FE".

But if the (internal) event order is
  rising_edge(rx2)
  in2 <= "FE"
then data_out is set (during the processing of the rx2 event) to the OLD 
value on in2 and THEN setting in2 to "FE".

Since your process is not sensitive to changes in in2 the simulator has 
no reason to reevaluate the outputs of this process.

Try adding the inx signals to the process. Then it should work, i.e:

process(rx1,rx2,rx3,rx4,in1,in2,in3,in4)

Regards
Andreas

von mansoor s. (Company: shahroodut) (mansoor64)


Rate this post
useful
not useful
Thanks and Praise
My issue was solved with your help

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.