Chapter 3
Chapter 3
(1)
Describing Design Entities
a sum
carry
(2)
Describing the Interface: The Entity Construct
case insensitive
a sum
b
entity half_ADder is
port ( a, b : in bit;
sum, carry :out bit);
carry end entity half_adder;
VHDL 1993
(3)
The Signal Object Type
(4)
Example Entity Descriptions
A B
entity ALU32 is
port( A, B: in bit_vector (31 downto 0);
C : out bit_vector (31 downto 0);
N Op: in bit_vector (5 downto 0);
op Z N, Z: out bit);
end entity ALU32;
C
LSB
MSB
entity D_ff is
D Q port( D, Q, Clk, R, S: in bit;
Q, Qbar : out bit);
end entity D_ff;
clk Q
(5)
Describing Behavior: The Architecture
Construct
entity half_adder is
a sum port (a, b : in bit;
b sum, carry :out bit);
end entity half_adder;
VHDL 1993
(6)
Example Entity Descriptions: IEEE 1164
A B entity ALU32 is
port( A, B: in std_ulogic_vector (31 downto 0);
C : out std_ulogic_vector (31 downto 0);
N Op: in std_ulogic_vector (5 downto 0);
op Z N, Z: out std_logic);
end entity ALU32;
entity D_ff is
D Q port( D, Q, Clk, R, S: in std_ulogic;
Q, Qbar : out std_ulogic);
end entity D_ff;
clk Q
(7)
Describing Behavior: The Architecture
Construct
library IEEE; Declarations for a
use IEEE.std_logic_1164.all; design entity
a sum
b entity half_adder is
port (a, b : in std_ulogic;
carry sum, carry :out std_ulogic);
end entity half_adder;
(8)
Libraries and Packages
package
package
specification of the
declaration
package contents
(9)
Configurations
entity
configuration
architecture-3
architecture-2
architecture-1
(11)
Simple Signal Assignment
s2
s3 c_out
c_in
(12)
Simple Signal Assignment Statement
(13)
Implementation of Signals
Transaction
01 1Z 10
24 23 10
waveform element
(14)
Implementation of Signals (cont.)
(15)
Implementation of Signals (cont.)
driver
(16)
Example: Waveform Generation
signal
10 20 30 40
(17)
Resolved Signal Types
(18)
Conditional Signal Assignment
(19)
Unaffected Signals
library IEEE;
use IEEE.std_logic_1164.all;
entity pr_encoder is
port (S0, S1,S2,S3: in std_logic;
Z : out std_logic_vector (1 downto 0));
end entity pr_encoder;
architecture behavioral of pr_encoder is
begin
Z <= “00” after 5 ns when S0 = ‘1’ else
“01” after 5 ns when S1 = ‘1’ else
unaffected when S2 = ‘1’ else
“11” after 5 ns when S3 = ‘1’ else
“00” after 5 ns;
end architecture behavioral;
(20)
Selected Signal Assignment Statement
library IEEE;
use IEEE.std_logic_1164.all;
entity mux4 is
port ( In0, In1, In2, In3 : in std_logic_vector (7 downto 0);
Sel: in std_logic_vector(1 downto 0);
Z : out std_logic_vector (7 downto 0));
end entity mux4;
architecture behavioral-2 of mux4 is
begin
with Sel select
Z <= (In0 after 5 ns) when “00”,
(In1 after 5 ns) when “01”, All options must be covered
(In2 after 5 ns) when “10”, and only one
(In3 after 5 ns) when “11” must be true!
(In3 after 5 ns) when others;
end architecture behavioral;
• The “when others” clause can be used to ensure that all options
are covered
• The “unaffected” clause may also be used here
(21)
A VHDL Model Template
library library-name-1, library-name-2;
use library-name-1.package-name.all; Declare external libraries and
visible components
use library-name-2.package-name.all;
entity entity_name is
port( input signals : in type; Define the interface
output signals : out type);
end entity entity_name;
output-signal-1 <= simple, conditional, or selected CSA; Definition of how & when external
output-signal-2 <= simple, conditional, or selected CSA; signal values are computed
end architecture arch_name;
(22)
Delay Models in VHDL
• Inertial delay
– Default delay model
– Suitable for modeling delays through devices such as gates
• Transport Delay
– Model delays through devices with very small inertia, e.g.,
wires
– All input events are propagated to output signals
• Delta delay
– What about models where no propagation delays are
specified?
– Infinitesimally small delay is automatically inserted by the
simulator to preserve correct ordering of events
(23)
Inertial Delays: Example
Input
input
8 ns output
Out 1
2 ns
Out 2
5 10 15 20 25 30 35
(24)
Transport Delays: Example
architecture transport_delay of half_adder is
signal s1, s2: std_logic:= ‘0’;
begin
s1 <= (a xor b) after 2 ns;
s2 <= (a and b) after 2 ns;
sum <= transport s1 after 4 ns;
carry <= transport s2 after 4 ns;
end architecture transport_delay;
a Inertial
b
sum
Transport
carry
s1
s2
(25)
Delta Delays: Example
library IEEE; architecture behavior of combinational
use IEEE.std_logic_1164.all; signal s1, s2, s3, s4: std_logic:= ‘0’;
entity combinational is begin
port (In1, In2: in std_logic; s1 <= not In1;
z : out std_logic); s2 <= not In2;
end entity combinational; s3 <= not (s1 and In2);
s4 <= not (s2 and In1);
z <= not (s3 and s4);
end architecture behavior;
s1 s3
In1
In2 s4
s2
(26)
Delta Delays: Behavior
IN1
Delta In2
Events
IN2
S2
S3
S1
S2
10 Δ 2Δ 3Δ
S4
10 20 30 40 50 60 70
(27)
Delay Models: Summary
• Delay models
– Inertial
• For devices with inertia such as gates
• VHDL 1993 supports pulse rejection widths
– Transport
• Ensures propagation of all events
• Typically used to model elements such as wires
– Delta
• Automatically inserted to ensure functional correctness of code
blocks that do not specify timing
• Enforces the data dependencies specified in the code
(28)
Summary
(29)