KEMBAR78
VHDL Process Basics | PDF | Control Flow | Vhdl
0% found this document useful (0 votes)
163 views30 pages

VHDL Process Basics

The document discusses VHDL processes and how they are used to define sequential and combinational logic. It covers the basics of processes including sensitivity lists, wait statements, variables, and process evaluation and activation. It provides examples of using processes to implement counters and clock edge detection. Processes allow defining sequential behavior through statements that execute sequentially, and communicating with the rest of the design via signals.

Uploaded by

csazeredo_2010
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
163 views30 pages

VHDL Process Basics

The document discusses VHDL processes and how they are used to define sequential and combinational logic. It covers the basics of processes including sensitivity lists, wait statements, variables, and process evaluation and activation. It provides examples of using processes to implement counters and clock edge detection. Processes allow defining sequential behavior through statements that execute sequentially, and communicating with the rest of the design via signals.

Uploaded by

csazeredo_2010
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 30

VHDL and Processes

Defining Sequential Circuit Behavior

55:032 - Intro. to Digital Design Page 1


VHDL Processes
 VHDL process is the most common way to
implement sequential circuits
 A process is a sequence of statements.
 Each process is a single concurrent statement.
 All processes in a design execute concurrently.
 A process communicates with the rest of a
design via signals or ports declared outside
the process.
 Processes can define either sequential OR
combinational logic
55:032 - Intro. to Digital Design Page 2
Process Statements

 A process statement (or a process)


implements a sequential algorithm
 Contains both sequential and concurrent
statements
 Sequential statements are only used within a process
 Evaluation is sequential; i.e. top to bottom like
software
 Multiple assignments to the same signal may exist
 The last assignment before the end of the process is
the real assignment.

55:032 - Intro. to Digital Design Page 3


Sequential Statements
 The following are sequential statements.
 Assignment - assign values to variables and signals.
 Flow control - conditional execution (if and case), repeat
(for...loop, while, until), and skip (next and exit).
 Subprograms - define sequential algorithms to use
repeatedly in a design (procedure and function).
 Wait statements - describe a pause until an event occurs
 Null statements - declare that no action is necessary
 Sequential statements MUST reside within a
process

55:032 - Intro. to Digital Design Page 4


Process Activation and Control
 A process is activated when defined signals
change state
 Monitored signals defined in sensitivity list OR
 Monitored signals listed in WAIT statements
 Monitored signals are checked as part of
architecture evaluation
 Any change of monitored signal activates the
process.
 Process control statements determine which signal
assignments will be performed.

55:032 - Intro. to Digital Design Page 5


Processes with Sensitivity Lists
 Processes can be defined with an explicit
“sensitivity list”
 Sensitivity list is a list of signals that is monitored for
changes
 Sensitive processes are activated when any of the
sensitivity list signals change state
 A sensitivity list process cannot have wait statements
defined within the process
 There is an implicit “WAIT ON” statement at the end of the
process
 Process evaluation is suspended at the end of process.

55:032 - Intro. to Digital Design Page 6


Processes without Sensitivity Lists
 Processes can be defined without any sensitivity list
 These processes MUST have at least one WAIT
statement.
 Some tools require WAIT to be the first statement after BEGIN.
 Initial process evaluation runs until first WAIT is encountered.
 The WAIT statement defines signals that are monitored
for change.
 Non-sensitive processes are activated when WAIT
statement signals change state
 Process suspends when next WAIT statement is
encountered
 Some tools allow multiple WAIT statements per process.

55:032 - Intro. to Digital Design Page 7


Process Evaluation
 Once activated, process evaluation starts at point of
last suspension.
 Processes execute top to bottom
 If no WAIT is hit before the end of process, evaluation
loops back to the beginning and continues.
 Signal values referenced are those at process start.
 All signal assignments are only possible assignments.
 The last assignment before suspension is the assignment
that will be performed
 ACTUAL SIGNAL ASSIGNMENTS ARE ONLY
MADE AT THE END OF PROCESS EVALUATION!

55:032 - Intro. to Digital Design Page 8


Process Structure

LABEL1: process (sensitivity list <optional>)

-- declarations

begin

--process statements like


--wait on CLK, RESET;
--wait until CLK'event and CLK='1';

end process;

55:032 - Intro. to Digital Design Page 9


Variables

 Variables are only declared within a process


 Used for loop counters, temp storage, etc.
 Scope is only within the process
 Form is same as signal except for “VARIABLE”
keyword
 Variable assignment -
 Form is vname := expression;
 Assignment takes effect immediately

55:032 - Intro. to Digital Design Page 10


WAIT Statements

WAIT on sig1, sig2, …sign; Wait for event on one or


more of signals

WAIT until condition; Wait until condition is true

WAIT for timeperiod; Wait for time to elapse

55:032 - Intro. to Digital Design Page 11


WAIT Statements
 Wait statements can be placed anywhere in process
block
 execution proceeds until wait is encountered
 execution then suspends until wait is satisfied
 A process may have multiple wait statements
 Exception: Process with sensitivity list cannot contain
any WAIT statements!

There may be tool-related limitations; most tools do not


fully implement all process relate VHDL features

55:032 - Intro. to Digital Design Page 12


Conditional Process Execution

 Process execution is in-line, top to bottom


unless a conditional execution statement(s) is
encountered
 Types are similar to software constructs
 CASE
 IF THEN ELSE
 Tools may not implement all forms

55:032 - Intro. to Digital Design Page 13


CASE

case <expression> is

when choice1 => seq. Statements 1


when choice2 => seq. Statements 2
*
*
when others => seq. Statements others

end case;

Like the select assignment, the choices may be a single


value,a group (c1 | c2 | c3) or a range (c1 to c3)

55:032 - Intro. to Digital Design Page 14


IF THEN ELSE

If <condition> then
If a condition is true the
seq. Statements associate statements are
executed and the rest of the
elsif <condition> then group are skipped.

seq. Statements NOTE: the “else if” case is


ELSIF (one word, e missing)
else

seq. Statements

end if;

55:032 - Intro. to Digital Design Page 15


Process Iteration

 Allows repetitive execution (looping)


 Three basic forms
 loop … end loop; (infinite)
 for <var in range> loop … end loop;
 while <condition> loop … end loop;
 all may have an option label as prefix

55:032 - Intro. to Digital Design Page 16


NEXT

 Used to terminate current pass through loop


 Four forms
 next; (absolute)
 next when <condition>;
 next label;
 next label when <condition>;
 The last two forms allow termination to the
end of an outer loop

55:032 - Intro. to Digital Design Page 17


EXIT

 Used to terminate entire loop execution


 Four forms
 exit; (absolute)
 exit when <condition>;
 exit label;
 exit label when <condition>;
 The last two forms allow termination from
an inner loop to the end of an outer loop

55:032 - Intro. to Digital Design Page 18


Combinational Logic Definition w/ Processes

 Processes can define combinational logic functions


 1) ALL signals on the right side of assignment operator
“<=“ MUST be listed in the process sensitivity list
 2) ALL input signal value combinations MUST have
signal assignments
 3) ALL output signals MUST be assigned values for
every input combination

 Failure to meet the above conditions results in


implied memory!

55:032 - Intro. to Digital Design Page 19


Combinational Logic Processes (cont.)

 The most common problem with defining


combination logic process is meeting
condition 2.
 An undefined input combination implies outputs
don’t change; i.e. memory is needed.
 IF, END IF statement is the greatest culprit;
there must be a “default” assignment.
 ELSE, when others, mainly used.

55:032 - Intro. to Digital Design Page 20


Clock Edge Detection

 You cannot just conditionalize behavior by


detecting “clk = ‘1’; we need the clock edge
 Signal attribute ‘event is used
 clk’event is true just after a clk change; false the
rest of the time
 The combination of clk’event and value
defines positive or negative clock edge
 Positive: (clk’event and clk = ‘1’)
 Negative: (clk’event and clk = ‘0’)

55:032 - Intro. to Digital Design Page 21


Simple Decade Counter Example
Architecture behave of deccnt is
signal cntval: std_logic_vector(3 downto 0);

cntr: process (clk, reset)


begin
if (reset = ‘1’) then
cntval <= “0000”;
elsif (clk’event and clk = ‘1’) then
cntval <= cntval + “0001”;
if (cntval = “1001”) then
cntval <= “0000”;
end if;
end if;
end process;

end behave;

55:032 - Intro. to Digital Design Page 22


Enumerated Type Definition

 You can define your own enumerated data


types
 Handy when defining states and transitions
 Form is:

TYPE type_name IS (value list);

 Once declared, the data type is used to define


new signals of that type

55:032 - Intro. to Digital Design Page 23


Enumerated Type Example
type state_type is (reset, sync, load, out);
signal pstate: state_type;

ss: process (clk)


begin
if (clk’event and clk = ‘1’) then
case pstate is
when reset => ….

when sync => ….

etc.
end if;
end process;
55:032 - Intro. to Digital Design Page 24
Sequential State Machines in VHDL

 The two basic techniques are:


 The 3-process definition method
 State register process, next-state combinational logic
process, output combinational logic process
 The 1-process and concurrent assignment method
 A single process defines state register and transitions
 Conditional or selected concurrent assignment define
the output combinational logic
 See text section 5.8, pp. 264 for examples of
VHDL processes.

55:032 - Intro. to Digital Design Page 25


Real-Time State Machine Example
type state_type is (idle, init, dat, par, stop);
signal pstate: state_type;
signal baud, last: std_logic;
signal clkdiv, cntr: integer range 0 to 100000000;

begin
cd: process (clk)
begin
if (clk’event and clk = ‘0’) then
clkdiv <= clkdiv + 1;
baud <= ‘0’;
if (clkdiv >= baudiv) then
clkdiv <= 0;
baud <= ‘1’;
end if;
end if;
end process;

55:032 - Intro. to Digital Design Page 26


Real-Time State Machine Example (cont.)
cu: process (clk, reset)
begin
if (reset = ‘1’) then
pstate <= idle;

elsif (clk’event and clk = ‘1’ and baud = ‘1’) then

case pstate is
when idle =>
if (go = ‘1’) then
pstate <= init;
endif;

when init =>


pstate <= dat;

55:032 - Intro. to Digital Design Page 27


Real-Time State Machine Example (cont.)

when dat =>


if (last = ‘1’ and pe = ‘1’) then
pstate <= par;
elsif (last = ‘1’ and pe = ‘0’ and ns = ‘1’) then
pstate <= stop;
elsif (last = ‘1’ and pe = ‘0’ and ns = ‘0’) then
pstate <= idle;
end if;

when par =>


if (ns = ‘1’) then
pstate <= stop;
else
pstate <= idle;
end if;

55:032 - Intro. to Digital Design Page 28


Real-Time State Machine Example (cont.)

when stop =>


pstate <= idle;
end case;
end if;
end process;

cp: process (clk)


variable lodval: integer range (0 to 7);
begin
if (clk’event and clk = ‘1’) then
if (pstate = dout) then
cntr <= cntr – 1;

55:032 - Intro. to Digital Design Page 29


Real-Time State Machine Example (cont.)
else
lodval := 4;
if (ls(0) = ‘1’) then lodval := lodval + 1; end if;
if (ls(1) = ‘1’) then lodval := lodval + 2; end if;
cntr <= lodval;
end if;
end if;
end process;

last <= ‘1’ when (cntr = “000”) else ‘0’;

mark <= ‘1’ when (pstate = idle or pstate = stop) else ‘0’;
space <= ‘1’ when (pstate = init) else ‘0’;
dout <= ‘1’ when (pstate = dat) else ‘0’;
pout <= ‘1’ when (pstate = par) else ‘0’;

55:032 - Intro. to Digital Design Page 30

You might also like