Lecture012-Signal

advertisement
Package with 4-valued
logic
Signal Attributes
Assertion
Data Flow description
Few more Examples of
Simulation
• Build a library of logic gates
– AND, OR, NAND, NOR, INV, etc.
• Include sequential elements
– DFF, Register, etc.
• Include tri-state devices
• Use 4-valued logic
Our goal is to
Explain 4-valued logic
– ‘X’, ‘0’, ‘1’, ‘Z’
– Encapsulate global declarations in a package
Global Package
• Build a library of logic gates
– AND, OR, NAND, NOR, INV, etc.
• Include sequential elements
– DFF, Register, etc.
• Include tri-state devices
• Use 4-valued logic
– ‘X’, ‘0’, ‘1’, ‘Z’
– Encapsulate global declarations in a package
PACKAGE resources IS
TYPE level IS ('X', '0', '1', 'Z'); -- enumerated type
TYPE level_vector IS ARRAY (NATURAL RANGE <>) OF level;
-- type for vectors (buses)
SUBTYPE delay IS TIME; -- subtype for gate delays
-- Function and procedure declarations go here
END resources;
Next we build gates
Two Input AND Gate Example
USE work.resources.all;
ENTITY and2 IS
ARCHITECTURE behav OF and2 IS
BEGIN
one : PROCESS (a,b)
GENERIC(trise : delay := 10 ns;
tfall : delay := 8 ns);
PORT(a, b : IN level;
c : OUT level);
END and2;
BEGIN
IF (a = '1' AND b = '1') THEN
c <= '1' AFTER trise;
ELSIF (a = '0' OR b = '0') THEN
c <= '0' AFTER tfall;
ELSE
c<= 'X' AFTER (trise+tfall)/2;
END IF;
END PROCESS one;
END behav;
a
b
c
1 and X = X
Observe that we use
here three-valued
algebra {0,1,X}
And Gate Simulation Results
Tri-State Buffer Example
USE work.resources.all;
ENTITY tri_state IS
ARCHITECTURE behav OF tri_state IS
GENERIC(trise : delay := 6 ns;
tfall : delay := 5 ns;
thiz : delay := 8 ns);
BEGIN
one : PROCESS (a,e)
PORT(a : IN level;
e : IN level;
b : OUT level);
END tri_state;
b
e
Observe that we use
here four-valued
algebra {0,1,X,Z}
BEGIN
IF (e = '1' AND a = '1') THEN
-- enabled and valid data
b <= '1' AFTER trise;
ELSIF (e = '1' AND a = '0') THEN
b <= '0' AFTER tfall;
ELSIF (e = '0') THEN -- disabled
b <= 'Z' AFTER thiz;
ELSE -- invalid data or enable
b <= 'X' AFTER (trise+tfall)/2;
END IF;
END PROCESS one;
END behav;
a
Tri-State Buffer Simulation Results
ARCHITECTURE behav OF tri_state IS
BEGIN
USE work.resources.all;
ENTITY tri_state IS
GENERIC(trise : delay := 6 ns;
tfall : delay := 5 ns;
thiz : delay := 8 ns);
PORT(a : IN level;
e : IN level;
b : OUT level);
END tri_state;
one : PROCESS (a,e)
BEGIN
IF (e = '1' AND a = '1') THEN
-- enabled and valid data
b <= '1' AFTER trise;
ELSIF (e = '1' AND a = '0') THEN
b <= '0' AFTER tfall;
ELSIF (e = '0') THEN -- disabled
b <= 'Z' AFTER thiz;
ELSE -- invalid data or enable
b <= 'X' AFTER (trise+tfall)/2;
END IF;
END PROCESS one;
END behav;
D Flip Flop Example
USE work.resources.all;
ENTITY dff IS
GENERIC(tprop : delay := 8 ns;
tsu
: delay := 2 ns);
PORT(d
clk
enable
q
qn
END dff;
:
:
:
:
:
IN level;
IN level;
IN level;
OUT level;
OUT level);
ARCHITECTURE behav OF dff IS
BEGIN
one : PROCESS (clk)
BEGIN
-- check for rising clock edge
IF ((clk = '1' AND clk'LAST_VALUE = '0')
AND enable = '1') THEN -- ff enabled
-- first, check setup time requirement
IF (d'STABLE(tsu)) THEN
-- check valid input data
IF (d = '0') THEN
q <= '0' AFTER tprop;
qn <= '1' AFTER tprop;
ELSIF (d = '1') THEN
q <= '1' AFTER tprop;
qn <= '0' AFTER tprop;
ELSE -- else invalid data
q <= 'X';
qn <= 'X';
END IF;
ELSE -- else violated setup time requirement
q <= 'X';
qn <= 'X';
END IF;
END IF;
END PROCESS one;
END behav;
USE work.resources.all;
ENTITY dff IS
GENERIC(tprop : delay := 8 ns;
tsu : delay := 2 ns);
PORT(d
: IN level;
clk : IN level;
enable : IN level;
q : OUT level;
qn : OUT level);
END dff;
D Flip Flop
Simulation
Results
ARCHITECTURE behav OF dff IS
BEGIN
one : PROCESS (clk)
BEGIN
-- check for rising clock edge
IF ((clk = '1' AND clk'LAST_VALUE = '0')
AND enable = '1') THEN -- ff enabled
-- first, check setup time requirement
IF (d'STABLE(tsu)) THEN
-- check valid input data
IF (d = '0') THEN
q <= '0' AFTER tprop;
qn <= '1' AFTER tprop;
ELSIF (d = '1') THEN
q <= '1' AFTER tprop;
qn <= '0' AFTER tprop;
ELSE -- else invalid data
q <= 'X';
qn <= 'X';
END IF;
ELSE -- else violated setup time requirement
q <= 'X';
qn <= 'X';
END IF;
END IF;
END PROCESS one;
END behav;
Assertion Statements
assert condition
report message
severity level;
• Ex.
assert not (S = '1' and R = '1')
report “S and R are equal to '1'”
severity Error;
• An assertion statement specifies a
boolean condition to check, an error
message and a severity indication.
Assertion Statements
When the condition is false, the error message is sent to the
system output with an indication of the severity and the name of
the design unit in which the assertion occurred.
– (Default message: “Assertion violation”).
• The severity is of the type Severity_Level which has the values
of:
–
–
–
–
Note,
Warning,
Error,
and Failure. (Default se-verity level: Error)
• In some VHDL system, unsatisfied conditions of severity Error
or Failure cause the simulation to terminate.
•
Using Assertions to Specify Timing
Requirements
Assertion
statements
can be used
to specify
timing
requirements
, such as setup time and
hold time.
• Example
If data is NOT stable and
clock=1 then check if
clock is stable in hold
time
If this condition is false report
is printed
When data changes during
clock=1 it cannot change
during hold time from
clock change, this is OK
because it changed after
hold_time
Signal
related
attributes
Pre-defined Signal Attributes
Signal Attributes event
and last_value
Short definitions of these and
others Signal Attributes
• SIGNAL’event - returns True if an event occurred on this signal during this
delta
• SIGNAL’active - returns True if a transaction occurred this delta
• SIGNAL’last_event - returns the elapsed time since previous event
• SIGNAL’last_value - returns previous value of signal before last event
• SIGNAL’last_active - returns time elapsed since previous transaction
Signal Attributes that return Signals
• Delayed(t), Stable, Quiet and transaction
Stable Attribute
Signal’stable(time) creates a signal that is True when the reference
signal has no events for time value
Derived signal attribute
• VHDL contains
a number of
predefined
attributes which
are related to
signals.
Signal -Related
Attributes
• They can be
divided into two
classes:
– attributes which
define signals
themselves
– attributes which
are functions to
provide
information
about signals.
These attributes are signals
themselves
Examples of Using Attributes:
Detecting Edges
We use attribute
event
Measuring Pulse Width
Measuring Pulse Width (cont)
Measuring Setup Time
Delay
Parameterization
• Entities can be
made
parameterized
by the use of
• GENERIC
CONSTANTS
• They are
passed to an
instantiated
component by
its
environment
• A generic
constant can
be used in
computation,
but remains
fixed during
simulation.
Delay Parameterization
Delay
Parameterization
- Structured
Example
Data Flow Descriptions
in VHDL
• A data flow description consists of a set
of concurrent signal assignment
statements.
• A signal assignment statement
executes in response to change on its
input signals.
Data Flow Descriptions in VHDL
Each value in the waveform will be scheduled to appear
on the target after the specified delay.
• If the assignment statement executes again, previously
scheduled values may be overridden.
• A delay of zero represents an infinitesimally small delay
-signal assignment never takes effect immediately.
• Data flow descriptions are similar to register-transfer
level expressions.
• They may imply hardware implementation structure.
Simple data-flow
example:
More examples of
Concurrent Signal
Assignment
Guarded will be discussed in a
separate lecture
More examples: Concurrent Signal Assignment
• This
describes a
decoder, or
translator
from binary
to one-hot
code
We discussed it
but now we add timing
Conditional Signal Assignment
Selected Signal Assignment
concatenation
For students to use and think about
• What is the basic timing model for simulation in
VHDL.
• Types of delay in VHDL:
– transport,
– inertial
– delay.
• Detailed explanation of delta model. Why previous
models were inconvenient? The student should be
able to assume delta delay draw the timing diagram
and next go with delta to zero and illustrate
graphically the results of simulation.
For students to use and think about
• General assignment statements with bit selections,
concatenations, timing delays and expressions.
• Variables versus signals in assignment statements.
• Some selected signal-related attributes.
• Conditional signal assignment with when.
• Concurrent signal assignment with when
• Explain simulation with four-valued simulator.
• Assertion statements.
• Detailed D FF with timing.
• Tri-state buffer and its simulation.
Questions for students
• Example: MUX
• This example highlights the difference between signals
and variables
ARCHITECTURE test1 OF mux IS
SIGNAL x : BIT := '1';
SIGNAL y : BIT := '0';
BEGIN
PROCESS (in_sig, x, y)
BEGIN
x <= in_sig XOR y;
y <= in_sig XOR x;
END PROCESS;
END test1;

ARCHITECTURE test2 OF mux IS
SIGNAL y : BIT := '0';
BEGIN
PROCESS (in_sig, y)
VARIABLE x : BIT := '1';
BEGIN
x := in_sig XOR y;
y <= in_sig XOR x;
END PROCESS;
END test2;
Assuming a 1 to 0 transition on in_sig, what are
the resulting values for y in the both cases?
Sources
• VLSI. Ohio University, Starzyk
• Krzysztof Kuchcinski
• Yingtao Jiang
• Hai Zhou
• Prof. K. J. Hintz
Download