![]() |
Process Statements include a set of sequential statements that assign values to signals. These statements allow you to perform step-by-step computations. Process Statements that describe purely combinatorial behavior can also be used to create combinatorial logic. To ensure that a process is combinatorial, its sensitivity list must contain all signals that are read in the process. A sensitivity list contains the signals that cause the Process Statements to execute if their values change.
![]() |
You can use Process Statements to create sequential logic. See Implementing Sequential Logic for more information. |
The following example shows a Process Statement that counts the number of bits in signal d
.
Signal d
is the only signal contained in the sensitivity list that follows the PROCESS
keyword, that is,
the only signal to which the process is sensitive.
ENTITY proc IS PORT ( d : IN STD_LOGIC_VECTOR (2 DOWNTO 0); q : OUT INTEGER RANGE 0 TO 3 ); END proc; ARCHITECTURE maxpld OF proc IS BEGIN PROCESS (d) -- count the number of set bits with the value 1 in word d VARIABLE num_bits : INTEGER; BEGIN num_bits := 0; FOR i IN d'RANGE LOOP IF d(i) = '1' THEN num_bits := num_bits + 1; END IF; END LOOP; q <= num_bits; END PROCESS; END maxpld;
In this example, d
is declared as an array in the Entity Declaration. Every time through the FOR
loop, i
is set to the next value, and d(i)
accesses information from the d
array. If d(i)
equals
1
, the If Statement increments num_bits
. The num_bits
variable is then assigned to the signal
q
, which is also declared in the Entity Declaration.
For more information, see the following sections of the IEEE Std 1076-1993 IEEE Standard VHDL Language Reference Manual:
- PLDWorld - |
|
Created by chm2web html help conversion utility. |