Transcript Chapter 5
Chapter 6
Combinational Logic
Functions
Basic Decoder
• Decoder: A digital circuit designed to detect
the presence of a particular digital state.
• Can have one output or multiple outputs.
• Example: 2-Input NAND Gate detects the
presence of ‘11’ on the inputs to generate a
‘0’ output.
2
Single-Gate Decoders
• Uses single gates (AND/NAND) and
some Inverters.
• Example: 4-Input AND detects ‘1111’ on
the inputs to generate a ‘1’ output.
• Inputs are labeled D3, D2, D1, and D0,
with D3 the MSB (most significant bit)
and D0 the LSB (least significant bit). 3
Single-Gate Decoders
4
Single-Gate Examples
• If the inputs to a 4-Input NAND are
given as D1, D2, D3, D4, then the NAND
detects the code 0001. The output is a 0
when the code 0001 is detected.
• This type of decoder is used in Address
Decoding for a PC System Board.
5
Multiple Output Decoders
• Decoder circuit with n inputs can
activate m = 2n load circuits.
• Called a n-line-to-m-line decoder, such
as a 2-to-4 or a 3-to-8 decoder. G
• Usually has an active low enable
that enables the decoder outputs.
6
Truth Table for a 3-to-8 Decoder
G D2 D1 D0 Y0 Y1 Y2 Y3 Y4 Y 5 Y6 Y7
1
0
X X X 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1
0
0
0
0 1
0 1 1 0 1 1 1 1 1
0 1
1 0 1 1 1 1 1 1
7
Truth Table for a 3-to-8 Decoder
8
Simulation
• Simulation: The verification of a digital
design using a timing diagram before
programming the design in a CPLD.
• Used to check the Output Response of
a design to an Input Stimulus using a
timing diagram.
9
Simulation
10
VHDL Binary Decoder
• Use select signal assignment
statements constructs or conditional
signal assignment statements
constructs.
11
2-to-4 Decoder VHDL Entity
• Using a select signal assignment statement:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY decode3 IS
PORT(
d : IN STD_LOGIC_VECTOR (1 downto 0);
y : OUT STD_LOGIC_VECTOR (3 downto 0));
END decode3;
12
Selected Signal Entity
• In the previous slide, the Entity used a
STD LOGIC Array for Inputs and
Outputs.
• The Y : OUT STD_LOGIC_VECTOR(3
downto 0) is equal to Y3, Y2, Y1, Y0.
• The STD_LOGIC Data Type is similar to
BIT but has added state values such as
Z, X, H, and L instead of just 0 and 1. 13
Selected Signal Assignments
• Uses a VHDL Architecture construct
called WITH SELECT.
• Format is:
– WITH (signal input(s)) SELECT.
– Signal input states are used to define the
output state changes.
14
2-to-4 Decoder VHDL Architecture
ARCHITECTURE decoder
BEGIN
WITH d SELECT
y <= “0001” WHEN
“0010 WHEN
“0100” WHEN
“1000” WHEN
“0000” WHEN
END decoder;
OF decode3 IS
“00”,
“01”,
“10”,
“11”,
others;
15
Decoder Architecture
• The decoder Architecture used a
SELECT to evaluate d to determine the
Output y.
• Both d and y are defined as an Array (or
bus or vector) Data Type.
• The last state for WHEN OTHERS is
added for the other logic states (Z, X, H,
L, etc.).
16
Seven-Segment Displays
• Seven-Segment Display: An array of
seven independently controlled LEDs
shaped like an 8 that can be used to
display decimal digits.
17
Seven-Segment Displays
18
Seven-Segment Displays
19
Common Anode Display
• Common Anode Display (CA): A sevensegment display where the anodes of all
the LEDs are connected together to VCC
and a ‘0’ turns on a segment (a to g).
20
Common Cathode Display
• Common Cathode Display (CC): A
seven-segment display where all the
cathodes are connected and tied to
ground, and a ‘1’ turns on a segment.
21
Common Cathode Display
22
Common Cathode Display
23
Seven-Segment Decoder/Driver – 1
• Receives a BCD (Binary Coded
Decimal) 4-Bit input, outputs a BCD
digit 0000 – 1001 (0 through 9).
• Generates Outputs (a–g) for each of the
display LEDs.
• Requires a current limit series resistor
for each segment.
24
Seven-Segment Decoder/Driver – 2
• Decoders for a CC-SS have active high
outputs while decoders for a CA-SS have
active low outputs (a to g).
• The outputs generated for the binary input
combinations of 1010 to 1111 are “don’t
cares”.
• The decoder can be designed with VHDL or
MSI Logic (7447, 7448).
25
SS Decoder/Driver Truth Table
Digit
0
1
2
3
4
5
6
7
8
9
D3 D2 D1 D0
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
a
0
1
0
0
1
0
1
0
0
0
b
0
0
0
0
0
1
1
0
0
0
c
0
0
1
0
0
0
0
0
0
0
d
0
1
0
0
1
0
0
1
0
1
e
0
1
0
1
1
1
0
1
0
1
f
0
1
1
1
0
0
0
1
0
0
g
1
1
0
0
0
0
0
1
0
0
26
SS Decoder/Driver Truth Table
27
Decoder/Driver Entity (CA)
ENTITY bcd_7seg IS
PORT(
d3, d2, d1, d0
a, b, c, d, e, f, g
END bcd_7seg;
: IN BIT;
: OUT BIT;
28
Decoder/Driver Architecture – 1
ARCHITECTURE seven_segment OF bcd_7seg IS
SIGNAL input
: BIT_VECTOR (3 downto 0);
SIGNAL output
: BIT_VECTOR (6 downto 0);
BEGIN
input <= d3 & d2 & d1 & d0;
-- Uses two intermediate signals called input and output (internal
no pins)
-- Creates an array by using the concatenate operator (&)
In this case input(3) <= d3, input(2) <= d2, etc.
29
Decoder/Driver Architecture – 2
WITH input SELECT
output <=
“0000001” WHEN “0000”,
“1001111” WHEN “0001”,
“0010010” WHEN “0010”,
“0000110“ WHEN “0011”,
•
•
•
•
•
•
•
•
•
“1111111” WHEN others;
30
Decoder/Driver Architecture – 3
a
<=
output(6);
b
<=
output(5);
c
<=
output(4);
d
<=
output(3);
e
<=
output(2);
f
<=
output(1);
g
<=
output(0);
END seven_segment
31
SS VHDL File Description
• In the preceding example file, a
concurrent select signal assignment
was used (WITH (signals) SELECT.
• The intermediate output signals were
mapped to the segments (a to g).
• Example: when Input (D3 – D0) is 0001,
the decoder sets a=d=e=f=g=1, b=c=0.32
Ripple Blanking – 1
• Ripple Blanking: A technique used in a
multiple-digit display that suppresses
leading/trailing zeros but allows internal zeros
to be displayed.
• Uses a RBI (active-LOW) Input and a RBO
(active-LOW) output.
• When D0 – D3 = 0000 and RBO= 0, the
display is blank.
33
Ripple Blanking – 2
• When D0 – D3 = 0000 and RBI = 1, the
display shows a ‘0’ (zero).
• If RBI = 1 or D0 – D3 0000, then RBO
= 1.
• To suppress leading zeros, connect RBI
of MS Digit to Gnd, and RBOto RBI of
the next least significant display.
34
Sequential Process in VHDL
• A VHDL Process is a construct that
encloses sequential statements that are
executed when a signal in a sensitivity
list changes.
35
Sequential Process Basic Format
• Basic Format:
PROCESS(Sensitivity List)
BEGIN
Sequential Statements;
END PROCESS;
36
Ripple Blanking VHDL – 1
ENTITY sevsegrb IS
PORT(
- - Use separate I/O’s, not bus
nRBI, d3, d2, d1, d0: IN BIT;
a, b, c, d, e, f, g, nRBO
: OUT BIT;
END sevsegrb;
37
Ripple Blanking VHDL – 2
ARCHITECTURE seven_segment OF sevsegrb IS
SIGNAL input
: BIT_VECTOR (3 downto 0);
SIGNAL output
: BIT_VECTOR (6 downto 0);
BEGIN
input <= d3 & d2 & d1 & d0;
38
Ripple Blanking VHDL – 3
-- process statement
PROCESS (input, nRBI)
BEGIN
IF(nRBI = ‘0’ and input = “0000”) THEN
output <= “1111111”; - - 0 supressed
nRBO <= ‘0’;
- - Next 0 suppressed
ELSE
nRBO <= ‘1’;
- - Next 0 displayed
39
Ripple Blanking VHDL – 4
CASE input IS
WHEN “0000” => output <= “0000001”; - - A zero is displayed.
WHEN “0001” => output <= “1001111”; - - A one is displayed.
•
•
•
•
•
•
•
•
•
•
•
•
WHEN others => output <= “1111111”; - - Blank.
END CASE
END IF;
END PROCESS assign_out;
40
CASE Statement
• In the RB Design, we replaced the
Selected Signal Assignment (With
Select) with a Case Statement to
generate the outputs for the SS Display.
• The Process Steps are evaluated in
sequence:
– First the IF statements, then the Case, and
so on.
41
IF THEN ELSE
• The IF THEN ELSE Statements were
used for conditional testing of some
inputs (the data and RBI).
• IF the data is this value THEN do these
statements ELSE do this.
• This is a very simple statement that is
used a great deal in sequential logic. 42
Encoders
• Encoder: A digital circuit that generates
a specific code at its outputs in
response to one or more active inputs.
• It is complementary in function to a
decoder.
• Output codes are usually Binary or
BCD.
43
Priority Encoders
• Priority Encoder: An encoder that
generates a code based on the highestpriority input.
• For example, if input D3 = input D5, then
the output is 101, not 011. D5 has a
higher priority than D3 and the output
will respond accordingly.
44
8-to-3 Encoder Truth Table
ActiveHigh Inputs
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 0 0 1
Q2 Q1 Q0
0 0 0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
1 0
1 1
0 0
1 1
1
1
45
8-to-3 Encoder Truth Table
46
Priority Encoder Equations
Q2 D7 D6 D5 D4
Q1 D7 D6 D5 D4 D3 D5 D4 D2
Q0 D7 D6 D5 D6 D4 D3 D6 D4 D2 D1
47
Priority Encoder VHDL Entity
-- hi_pri8a.vhd
ENTITY hi_pri8a IS
PORT(
d
q
END hi_pri8a;
: IN BIT_VECTOR (7 downto 0);
: OUT BIT_VECTOR (2 downto 0));
48
Priority Encoder VHDL Architecture
ARCHITECTURE a OF hi_pri8a IS
BEGIN
-- Concurrent Signal Assignments
q(2)
<=
d(7) or d(6) or d(5) or d(4);
q(1)
<=
d(7) or d(6)
or ((not d(5)) and (not d(4)) and d(3))
or ((not d(5)) and (not d(4)) and d(2));
q(0)
END a;
<=
-- in a similar fashion
49
Another VHDL Encoder – 1
-- hi_pri8b.vhd
ENTITY hi_pri8a IS
PORT(
d
q
END hi_pri8b;
: IN BIT_VECTOR (7 downto 0);
: OUT INTEGER RANGE 0 TO 7);
50
Another VHDL Encoder – 2
ARCHITECTURE a OF hi_pri8b IS
BEGIN
encoder;
q <=
7 WHEN d(7) = ‘1’ ELSE
6 WHEN d(6) = ‘1’ ELSE
5 WHEN d(5) = ‘1’ ELSE
4 WHEN d(4) = ‘1’ ELSE
3 WHEN d(3) = ‘1’ ELSE
2 WHEN d(2) = ‘1’ ELSE
1 WHEN d(1) = ‘1’ ELSE
0;
END a;
51
Basic Multiplexers (MUX)
• (MUX): A digital circuit that directs one of
several inputs to a single output based on the
state of several select inputs.
• A MUX is called a m-to-1 MUX.
• A MUX with n select inputs will require m = 2n
data inputs (e.g., a 4-to-1 MUX requires 2
select inputs S1 and S0).
52
Basic Multiplexers (MUX)
53
Basic Multiplexers (MUX)
54
4-to-1 Multiplexers Truth Table
S1
0
0
1
1
S0
0
1
0
1
Y
D0
D1
D2
D3
55
Multiplexer Logic
• Boolean expression for a 4-to-1 MUX is
Y D0 S1 S0 D1 S1 S0 D2 S1 S0 D3 S1 S0
• This expression can be expanded to
any size MUX so the VHDL architecture
could use a very long concurrent
Boolean statement.
56
Double Subscript Notation
• Naming convention in which variables are
bundled in numerically related groups, the
elements of which are themselves numbered.
• The first subscript identifies the group that a
variable belongs to (D01, D00).
• The second subscript indicates which
element of the group a variable represents.
57
Truth Table for a 4-to-1
4-bit Bus MUX
S1
0
0
1
1
S0
0
1
0
1
Y3 Y2 Y1 Y0
D03 D02 D01 D00
D13 D12 D11 D10
D23 D22 D21 D20
D33 D32 D31 D30
58
Truth Table for a 4-to-1
4-bit Bus MUX
59
VHDL Constructs For MUXs
• The following three VHDL constructs
can be used to describe the Multiplexer:
– Concurrent Signal Assignment Statement
– Select Signal Assignment Statement
– CASE Statement
60
PROCESS and Sensitivity List
• PROCESS: A VHDL construct that
contains statements that are executed if
a signal in its sensitivity list changes.
• Sensitivity list: A list of signals in a
PROCESS statement that are
monitored to determine whether the
Process should be executed.
61
Case Statement
• A case statement is a VHDL construct in
which there is a choice of statements to
be executed, depending on the value of
a signal or variable.
62
Case VHDL Template
CASE __expression IS
WHEN __constant_value =>
__statement;
__statement;
WHEN __constant_value =>
__statement;
__statement;
WHEN OTHERS =>
__statement;
__statement;
END CASE;
63
MUX 4-to-1 VHDL – 1
• Basic Entity declaration for a 4-to-1 MUX:
ENTITY mux4case IS
PORT(
d0, d1, d2, d3
s
y
END mux4case;
: IN BIT;
: IN BIT_VECTOR (1 downto 0);
: OUT BIT);
64
MUX 4-to-1 VHDL – 2
ARCHITECTURE mux4to1 OF mux4case IS
BEGIN
-- Monitor select inputs and execute if they change
PROCESS(s)
BEGIN
CASE s IS
65
MUX 4-to-1 VHDL – 3
WHEN "00"
WHEN "01"
WHEN "10"
WHEN "11"
WHEN others
END CASE;
END PROCESS;
END mux4to1;
=>
=>
=>
=>
=>
y
y
y
y
y
<=
<=
<=
<=
<=
d0;
d1;
d2;
d3;
'0';
66
Multiplexer Applications
• Used in directing multiple data sources
to a single processing element such as
multiple CD Player Streams to a DSP.
• Used in Time Division Multiplexing
(TDM) by the Phone Service to
multiplex multiple voice channels on a
single coax line (or fiber).
67
Time Division Multiplexing (TDM)
• Each user has a specific time slot in a TDM
data frame. Each frame has 24 users.
• TDM requires a time-dependent (counter)
source to synchronize the select lines.
• Each user’s time slot repeats on the next
frame for more data.
• The links are called T-Carriers (such as a T1
Line).
68
TDM Data Streams
• Two methods in which data is
transmitted:
– Bit Multiplexing: One bit is sent at a time
from the channel during the channel’s
assigned time slot
– Word Multiplexing: One byte is sent at a
time from the channel during the channel’s
assigned time slot
69
TDM Data Streams
70
TDM Data Streams
71
TDM Data Streams
72
Demultiplexer Basics – 1
• Demultiplexer: A digital circuit that
uses a decoder to direct a single input
(from a MUX) to one of several outputs.
• A DEMUX performs the reverse
operation of a MUX.
• The selected output is chosen by the
Select Inputs (as in a MUX).
73
Demultiplexer Basics – 2
• Designated as a 1-to-n DEMUX that requires
m select inputs such that n outputs = 2m
select inputs.
• 1-to-4 DEMUX Equations:
Y( 0 ) D0 S1 S0 ; Y( 1) D0 S1 S0 ;
Y( 2 ) D0 S1 S0 ; Y( 3 ) D0 S1 S0.
• They are similar to a MUX and can be
designed using CASE Statements.
74
Demultiplexer Basics – 3
75
Demultiplexer Basics – 4
76
Demultiplexer Basics – 5
77
Demultiplexer VHDL Entity
ENTITY dmux8 IS
PORT(
s
: IN STD_LOGIC_VECTOR (2 downto 0);
d
: IN STD_LOGIC;
y
: OUT STD_LOGIC_VECTOR (0 to 7));
END dmux8;
78
Demultiplexer VHDL Architecture
ARCHITECTURE a OF dmux8 IS
SIGNAL inputs : STD_LOGIC_VECTOR (3 downto 0);
BEGIN
inputs <= d & s;
WITH inputs select
Y <= “01111111” WHEN “0000”,
“10111111” WHEN “0001”,
•
•
•
•
•
•
“11111111” WHEN others;
END a;
79
Demultiplexer VHDL Architecture
80
Analog MUX/DEMUX
• Uses a CMOS Switch or Transmission
Gate that will allow a signal to Pass in
two directions for + and – Voltages.
• Some commercial types such as a
CD4066 or 74HC4066.
• Multiplexes 4 CMOS Switches to a
single output (Y) for analog multiplexing.
81
Analog MUX/DEMUX
82
Analog MUX/DEMUX
83
Magnitude Comparators – 1
• Magnitude Comparator: A digital circuit that
compares two n-Bit Binary Numbers and
indicates if they are equal or which is greater.
• A very simple One-Bit Magnitude Comparator
is the Two-Input XNOR Gate:
– When both inputs are equal, the output is a 1; if
they are not, it is a 0.
84
Magnitude Comparators – 2
• Multiple Bit Comparisons
AEQB ( An- 1 Bn- 1) • ( An- 2 Bn- 2 ) .
• Also adds A > B (AGTB) and A < B (ALTB)
Outputs.
• For A > B, start with the MSB:
– If An–1 > Bn–1, then AGTB = 1
• If not, then try the next most significant bit.
85
VHDL 4-Bit Magnitude
Comparator – 1
ENTITY compare4 IS
PORT(
a, b
agtb, aeqb, altb
END compare4;
: IN INTEGER RANGE 0 to 15;
: OUT STD_LOGIC);
86
VHDL 4-Bit Magnitude
Comparator – 2
ARCHITECTURE a OF compare4 IS
SIGNAL compare :STD_LOGIC_VECTOR (2 downto 0);
BEGIN
PROCESS (a, b)
BEGIN
IF a<b THEN
compare <= “110”;
ELSIF a = b THEN
compare <= “101”;
87
VHDL 4-Bit Magnitude
Comparator – 3
ELSIF a > b THEN
compare <= “011”;
ELSE
compare <= “111”;
END IF;
agtb <= compare(2);
aeqb <= compare(1);
altb <= compare(0);
END PROCESS
END a;
88
Parity Basics – 1
• Parity: A digital system that checks for errors
in a n-Bit Binary Number or Code.
• Even Parity: A parity system that requires the
binary number and the parity bit to have an
even # of 1s.
• Odd Parity: A parity system that requires the
binary number and the parity bit to have an
Odd # of 1s.
89
Parity Basics – 2
• Parity Bit: A bit appended on the end of
a binary number or code to make the #
of 1s odd or even depending on the
type of parity in the system.
• Parity is used in transmitting and
receiving data by devices in a PC called
UARTs, that are on the COM Port.
90
Parity Basics – 3
91
Parity Calculation
• N1 = 0110110:
– It has four 1s (an even number).
– If Parity is ODD, the Parity Bit = 1 to make it an
odd number (5).
– If Parity is EVEN, the Parity Bit = 0 to keep it an
even number (4).
• N2 = 1000000:
– One 1 in the data.
– Podd = 0.
– Peven = 1.
92
Parity Generation HW – 1
• A basic two-bit parity generator can be
constructed from a XOR Gate.
• When the two inputs are 01 or 10, the
output is a 1 (so this is even parity).
• When the two inputs are 00 or 11, the
output is a 0.
• For a parity generator of n bits, add
more gates.
93
Parity Generator HW – 2
• Cascading a long chain of XOR gates
could cause excessive propagation
delays.
• To check for a Parity error, the receiver
(RX) just generates a new Parity Bit (P1)
based on the received parallel data and
then compares it to the parity bit
transmitted (P2).
94
Parity Generator HW – 3
• If there is an error, the two bits (P1 and P2)
will not be equal, and we can use a two-bit
magnitude comparator to check this (an XOR
gate).
• This check is called syndrome.
– If there are no errors, the syndrome output (Perr) is
0.
• Parity is not a foolproof system.
– If two bits are in error, the error is not detected.
95
Parity Generator HW – 4
96
VHDL GENERATE Statement
__generate_label:
FOR __index_variable IN __range GENERATE
__statement;
__statement;
END GENERATE;
97
4-Bit Parity VHDL Code – 1
LIBRARY ieee;
USE ieee.std_logic1164.ALL;
ENTITY parity4_gen IS
PORT(
d : IN STD_LOGIC_VECTOR (0 to 3);
pe ; OUT STD_LOGIC);
END parity4_gen;
98
4-Bit Parity VHDL Code – 2
ARCHITECTURE parity OF parity4_gen IS
SIGNAL p : STD_LOGIC_VECTOR (1 to 3);
BEGIN
p(1) <= d(0) xor d(1);
parity_generate:
FOR i IN 2 to 3 GENERATE
p(i) <= p(i-1) xor d(i);
END GENERATE;
pe <= p(3);
END parity;
99