Chapter 4 - Behavioral Descriptions
Section 3 - Signals and Processes
This section is short, but contains important information about the use
of signals in the process statement. The issue of concern is to avoid
confusion about the difference between how a signal assignment and variable
assignment behave in the process statement. Remember a signal assignment,
if anything, merely schedules an event to occur on a signal and does not
have an immediate effect. When a process is resumed, it executes from
top to bottom and no events are processed until after the process is complete.
This means, if an event is scheduled on a signal during the execution of a
process, that event can be processed after the process has
completed at the earliest. Let's examine an example of this behavior. In the
following
process two events are scheduled on signals x and z.
...
signal x,y,z : bit;
...
process (y)
begin
x<=y;
z<=not x;
end process;
If the signal y changes then an event will be scheduled on
x to make it the same as y. Also, an event is scheduled
on z to make it the opposite of x. The question is,
will the value of z be the opposite of y? Of course, the
answer is no, because when the second statement is executed, the event
on x has not been processed yet, and the event scheduled on z
will be the opposite of the value of x before the process begins.
This is pointed out because this is not necessarily the intuitive behavior
and because variables operate differently. For example, in
process (y)
variable x,z : bit;
begin
x:=y;
z:=not x;
end process;
The value of the variable z would be the opposite of the value
of y because the value of the variable x is changed
immediately.
The previous section is Behavioral Descriptions -
Sequential Statements.
The next section is Behavioral Descriptions - Input and
Output.
Copyright 1995, Green Mountain Computing Systems.
Copying this document is strictly prohibited. Making any non-volatile or
semi-permanent copies of this document is a violation of international
copyright laws.