[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: HELP with Icarus Verilog, 0.7!
On Tuesday 06 April 2004 01:21 pm, Mike Jarabek wrote:
> Not quite true, the always block is only evaluated when something on
> the sensitivity list changes. In this case, that only happens when
> RST changes. When your clock changes the other always block will
> fire, depending on the state of the _E signals, your register will be
> overwritten.
But it must be true. If RST changes state, then any continuous
assignment using RST as an input will also be re-evaluated at that time.
So regardless of what happens to the clock, when the RST is asserted,
all the continuous assignments for *_E will be re-evaluated, and will
become negated.
Oh, wait, the _E signals in the example I posted are raw inputs. I see
what you're getting at. I forgot that I changed this in a subsequent
version of the receiver (the one that uses a Wishbone interface, and
does its own, internal address decoding), where the _E signal is now
generated internally, and is qualified against both CLK_I and RES_I.
> What I meant by the same destination register is that rxmask appears
> on the left hand side of an assignement in more than one always block.
OK, that helps answer a few of my questions. I'll try to re-arrange the
code either tonight or tomorrow. The test benches should all still work
the same.
> when the gates are generated. Having all the assignments into a
> register in one always block makes the final value of the register
> absolutely clear to both the designer and the synthesis tool.
I'll try changing the code to reflect this when I go to change blocking
to non-blocking assignments.
--
Samuel A. Falvo II