VHDL Processes-- Notes Page -- |
We now turn our attention to a the VHDL process statement. The
process is the key structure in behavioral VHDL modeling. A process
is the only means by which the executable functionality of a component
is defined. In fact, for a model to be capable of being simulated,
all components in the model must be defined using one or more
processes.
Statements within a process are executed sequentially (although care
needs to be used in signal assignment statements since they do not
take effect immediately; this was covered in the VHDL Basics
module when the VHDL timing model was discussed). Variables are
used as internal place holders which take on their assigned values
immediately.
All processes within an architecture body (or within a whole model
for that matter) are executed concurrently. That is, although
statements within a process are evaluated and executed sequentially,
all processes within the model begin executing concurrently.
In the example process given here, a variable periodic is
declared and assigned the initial condition '1'. As long as en
is '1', if periodic changes value, then a future possible
changed value (called a transaction) is created and saved on a list of
transactions for ck by the simulator. The process then
suspends for one microsecond. The signal ck actually assumes
its new value one delta cycle after the process suspends (because the
transaction becomes an event). After the one microsecond suspension,
the process once again executes beginning with the if
statement. Note that only variables can be declared in a process, and
signals (which are global to a process) are used primarily as control
(e.g., en in this case), inputs into a process, or outputs from
a process (e.g., ck in this case).