Transcript Chapter 6
Chapter 6
Combinational Logic
Functions
1
Chapter 6 Homework
6.1, 6.5, 6.7a&b, 6.15, 6.19a&b, 6.21,
6.23, 6.29, 6.45
2
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.
3
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).
4
Single-Gate Decoders
D3
D2
D1
D0
Y = D3 D2D1D0
D3
D2
D1
D0
Y = (D3 D2D1D0)’
5
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.
6
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.
• Usually has an active low enable
that enables the decoder outputs.
G
7
2-to-4 Decoder
8
3-to-8 Decoder
9
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
10
74138 3-to-8 Decoder
11
74138 3-to-8 Decoder
12
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.
13
Simulation
14
VHDL Binary Decoder
• Use select signal assignment statements
constructs or conditional signal
assignment statements constructs.
15
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;
16
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.
17
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.
18
2-to-4 Decoder VHDL Architecture
ARCHITECTURE decoder OF decode3 IS
BEGIN
WITH d SELECT
y <= “0001” WHEN “00”,
“0010 WHEN “01”,
“0100” WHEN “10”,
“1000” WHEN “11”,
“0000” WHEN others;
END decoder;
19
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.).
20
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.
21
Seven-Segment Displays
22
Seven-Segment Displays
23
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).
24
Common Cathode Display
• Common Cathode Display (CC): A sevensegment display where all the cathodes are
connected and tied to ground, and a ‘1’
turns on a segment.
25
Common Cathode/Anode Display
26
Common Anode Display
27
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.
28
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).
29
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
30
SS Decoder/Driver Truth Table
31
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;
32
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.
33
Decoder/Driver Architecture – 2
WITH input SELECT
output <=
“0000001” WHEN “0000”,
“1001111” WHEN “0001”,
“0010010” WHEN “0010”,
“0000110“ WHEN “0011”,
•
•
•
•
•
•
•
•
•
“1111111” WHEN others;
34
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
35
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.
36
Ripple Blanking
• 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.
37
Ripple Blanking
• 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 RBO to RBI of the
next least significant display.
38
Ripple Blanking
39
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.
40
Sequential Process Basic Format
• Basic Format:
PROCESS(Sensitivity List)
BEGIN
Sequential Statements;
END PROCESS;
41
Ripple Blanking VHDL
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;
42
Ripple Blanking VHDL
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;
43
Ripple Blanking VHDL
-- 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
44
Ripple Blanking VHDL
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;
45
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.
46
8 to 3 bit Encoder
47
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
48
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.
49
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
50
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));
51
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)
<=
q(0)
END a;
<=
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));
-- in a similar fashion
52
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);
53
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;
54
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).
55
Basic Multiplexers (MUX)
56
Basic Multiplexers (MUX)
57
4-to-1 Multiplexers Truth Table
S1
0
0
1
1
S0
0
1
0
1
Y
D0
D1
D2
D3
58
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.
59
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.
60
4-bit Bus MUX
61
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
62
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
63
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.
64
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.
65
Case VHDL Template
CASE __expression IS
WHEN __constant_value =>
__statement;
__statement;
WHEN __constant_value =>
__statement;
__statement;
WHEN OTHERS =>
__statement;
__statement;
END CASE;
66
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);
67
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
68
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';
69
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).
70
Multiplexer Applications
Used in directing multiple data sources to a single
processing element such as multiple CD Player
Streams to a DSP.
71
Multiplexer Applications
Used in Time Division Multiplexing (TDM) by
the Phone Service to multiplex multiple voice
channels on a single coax line (or fiber).
72
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).
73
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
74
TDM Data Streams
75
TDM Data Streams
76
Demultiplexer Basics
• 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).
77
Demultiplexer Basics
• 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.
78
Demultiplexer Basics
79
Demultiplexer Basics
80
Demultiplexer Basics
81
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;
82
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;
83
Demultiplexer VHDL
Architecture
84
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.
85
Analog MUX/DEMUX
86
Analog MUX/DEMUX
87
Magnitude Comparators
• 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.
88
2-Bit Comparator
A1
B1
AEQB
A0
B0
89
2-Bit Magnitude Comparator
A1
B1
AEQB
A0
B0
AGTB
ALTB
90
Magnitude Comparators
• 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.
91
4-Bit Magnitude Comparator
A3
B3
ALTB
A2
B2
A1
B1
A0
B0
AEQB
AGTB
92
VHDL 4-Bit Magnitude
Comparator
ENTITY compare4 IS
PORT(
a, b
RANGE 0 to 15;
agtb, aeqb, altb
END compare4;
: IN INTEGER
: OUT STD_LOGIC);
93
VHDL 4-Bit Magnitude
Comparator
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”;
94
VHDL 4-Bit Magnitude
Comparator
ELSIF a > b THEN
compare <= “011”;
ELSE
compare <= “111”;
END IF;
agtb <= compare(2);
aeqb <= compare(1);
altb <= compare(0);
END PROCESS
END a;
95
Temperature Comparator
96
Parity Basics
• 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.
97
Parity Basics
• 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.
• UART = Universal asynchronous
Receiver/Transmitter
98
Parity Basics
99
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.
100
Parity Generation HW
• 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.
101
Parity Generator HW
• 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).
102
Parity Generator HW
• 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.
103
4-Bit Parity Generator
104
VHDL GENERATE Statement
__generate_label:
FOR __index_variable IN __range
GENERATE
__statement;
__statement;
END GENERATE;
105
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;
106
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;
107
BCD
D9 – D0 = 0100001111
BCD # = ?
108
Problem 6.15a
D9 – D0 = 0101001011
Q3 – Q0 = 1000 (810)
109
Problem 6.15b
D9 – D0 = 1000000001
Q3 – Q0 = 1001 (910)
110
Problem 6.15c
D9 – D0 = 1101001011
Q3 – Q0 = 1001 (910)
111
Put It All Together
D
C
B
A
=1
=0
=0
=0
1
112