boolean functions and gates - brown...
TRANSCRIPT
CS031 Lecture 4 (a) Page 1
CS31
Pascal Van Hentenryck
Boolean Functions
and Gates
CS031 Lecture 4 (a) 2
Overview
We have seen so far that
•! computers deal with words of binary
digits
•! these words can be used to store a
variety of objects (e.g. numbers, characters, ...)
We now study
•! how to build circuits to perform
operations on these representations
Fundamental Idea
•! a new abstraction called combinational
device
CS031 Lecture 4 (a) 3
The Big Picture
CS031 Lecture 4 (a) 4
Abstraction Hierarchy
Programming Language
Assembly Language
Machine Language
Sequential Circuit
Combinational Circuit
Binary Value
Voltage
Programming Language
Assembly Language
Machine Language
Sequential Circuit
Combinational Circuit
Binary Value
Voltage
CS031 Lecture 4 (a) 5
Combinational Devices
A combinational device is a circuit having
•! some binary input
•! some binary output
•! a functional specification, stating the values of
the output in terms of the inputs
•! a timing specification, giving the maximum
time necessary to compute the outputs given
the inputs
Static Discipline
•! This is the guarantee that, given valid inputs, the circuit will deliver valid outputs (after some
propagation delay)
This is the simplest tool to build computers
Combinational devices can be combined to
produce other combinational devices when:
•! the circuit contains no directed cycle
CS031 Lecture 4 (a) 6
The main goal
Show how to build combinational
devices
•! for the operations we have seen
•! given a set of basic boolean functions
Organization
•! Basic Boolean functions
•! Truth table
•! Properties
•! Normal forms
CS031 Lecture 4 (a) 7
Truth Tables
CS031 Lecture 4 (a) 8
Truth Tables Specification of combinational
devices
•! lots of ways to choose f (24, to be
exact)
CS031 Lecture 4 (a) 9
And
and(a,b) = 1 if and only if a = 1 and b = 1
Alternative notations for and(a,b)
include:
•! ab (we’ll be using this one)
•! a!b
•! a 杏 b
This is also called the conjunction
operator.
CS031 Lecture 4 (a) 10
Or or(a,b) = 1 if and only if a = 1 or b = 1
Alternative notations for or(a,b)
include:
•! a + b (we’ll be using this one)
•! a以 b
This is also called the disjunction
operator.
CS031 Lecture 4 (a) 11
Not not(a) = 1 if and only if a = 0
Alternative notations for not(a)
include:
•! a’
•! ¬a
This is also called the negation
operator.
CS031 Lecture 4 (a) 12
De Morgan’s Laws If you have and and not, you can
create the or function; if you have or
and not, you can create the and
function.
a + b = (a’b’)’
Similarly (try this one out yourself)
ab = (a’ + b’)’
1
1
1
1
0
0
0 0
0 0 1
1
1 1
1
1
1 0
0
0
CS031 Lecture 4 (a) 13
Exclusive Or (xor)
ab’ + a’b
1
0
1 0
0
0
0
0
0
0
1
1
CS031 Lecture 4 (a) 14
Nand nand(a,b) = 1 if and only if it is not
the case that both a = 1 and b = 1
Nand is universal:
a’ =
ab =
=
a+b=
CS031 Lecture 4 (a) 15
Nand nand(a,b) = 1 if and only if it is not the case
that both a = 1 and b = 1
Nand is universal:
a’ = nand(a,a)
ab =
=
a+b= =
=
=
CS031 Lecture 4 (a) 16
Nand nand(a,b) = 1 if and only if it is not the case
that both a = 1 and b = 1
Nand is universal:
a’ = nand(a,a)
ab = nand(nand(a,b),nand(a,b))
= (nand(a,b))’
a+b= =
=
=
CS031 Lecture 4 (a) 17
Nand nand(a,b) = 1 if and only if it is not
the case that both a = 1 and b = 1
Nand is universal:
a’ = nand(a,a)
ab = nand(nand(a,b),nand(a,b))
= (nand(a,b))’
a+b= nand(nand(a,a),nand(b,b))
= nand(a’, b’)
CS031 Lecture 4 (a) 18
Associativity
Basic rules
•! A ( B C ) = ( A B ) C = A B C
•! A + ( B + C ) = ( A + B ) + C = A + B + C
Name Conventions
•! ABC is called a product
•! A+B+C is called a sum
Priorities
•! Negation has highest priority
•! “and” has higher priority than “or”
CS031 Lecture 4 (a) 19
Other Properties
Commutativity
•! A B = B A
•! A + B = B + A
Distributivity
•! A ( B + C) = A B + A C
•! A + ( B C) = (A + B) (A + C)
Which rule is not true for integers?
CS031 Lecture 4 (a) 20
Other Properties
Commutativity
•! A B = B A
•! A + B = B + A
Distributivity
•! A ( B + C) = A B + A C
•! A + ( B C) = (A + B) (A + C)
Which rule is not true for integers?
Distributivity:
2 + (3*3) " (2+3)(2+3)
11 " 25
CS031 Lecture 4 (a) 21
Truth Tables Specification of combinational
devices
•! lots of ways to choose f (24, to be
exact)
CS031 Lecture 4 (a) 22
Truth Tables
CS031 Lecture 4 (a) 23
Sum of Products Representing a function by a logical
expression
The expression is
Basic Idea
Associate a product term with each row with an
output at 1; the term has the variable if its
value is 1 and the negation of the variable
otherwise
CS031 Lecture 4 (a) 24
Sum of Products Representing a function by a logical
expression
The expression is
a’b’c + a’bc + ab’c’ + ab’c
Basic Idea
Associate a product term with each row with an
output at 1; the term has the variable if its
value is 1 and the negation of the variable
otherwise
CS031 Lecture 4 (a) 25
Product of Sums
The expression is
Basic Idea The result is a product term. Each sum in this
product negates a row which has a zero output. Associate a sum term with each row with an output at 0; the term has the variable if its value is 0 and the negation of the variable otherwise
CS031 Lecture 4 (a) 26
Product of Sums
The expression is (a+b+c)(a+b’+c)(a’+b’+c)(a’+b’+c’)
Basic Idea The result is a product term. Each sum in this
product negates a row which has a zero output. Associate a sum term with each row with an output at 0; the term has the variable if its value is 0 and the negation of the variable otherwise
CS031 Lecture 4 (a) 27
Logical Gates
CS031 Lecture 4 (a) 28
Combinational Device
f(a,b,c) = ab + b’c
CS031 Lecture 4 (a) 29
We still have a way to go to
get to our Linux boxes...
...but we’ll get there!
CS031 Lecture 4 (b) Page 1
CS31 Pascal Van Hentenryck
Karnaugh Maps
CS031 Lecture 4 (b) 2
Overview
Karnaugh Maps
•! Simplifying Boolean functions
CS031 Lecture 3 (b) 3
The Big Picture
CS031 Lecture 3 (b) 4
Abstraction Hierarchy
Programming Language
Assembly Language
Machine Language
Sequential Circuit
Combinational Circuit
Binary Value
Voltage
Programming Language
Assembly Language
Machine Language
Sequential Circuit
Combinational Circuit
Binary Value
Voltage
CS031 Lecture 4 (b) 5
Minimizing Boolean
Functions
The problem •! Given a truth table, find a small circuit
to compute it
•! The problem is very hard in general (no really efficient algorithm exists)
Possible solutions •! Put the function as a sum of products
and build the corresponding circuit
•! Put the function as product of sums and build the corresponding circuit
Limitation •! The size of the circuit may be far from
the minimal size
Karnaugh Maps •! A heuristic method to minimize the
size of the circuit
CS031 Lecture 4 (b) 6
Karnaugh Map
Another Presentation of a Truth Table
The Karnaugh map looks like this
CS031 Lecture 4 (b) 7
Karnaugh Map
3 variables
4 variables
CS031 Lecture 4 (b) 8
Karnaugh Maps
Property
•! Adjacent entries differ by at most one
variable
•! The whole table is wrapping up on
itself. The end of a row is adjacent to
the beginning of the row and so on.
Z’
Z
Z
Z’
CS031 Lecture 4 (b) 9
Boxes Boxes of sizes 1,2,4,8 or 16
CS031 Lecture 4 (b) 10
A K-Map
CS031 Lecture 4 (b) 11
Minimization
The basic strategy
1.! Draw the Karnaugh map
2.! Fill it with the truth table
3.! Cover all the 1s with boxes of size 1, 2, 4, 8,
16. ... (an entry can be covered by several
boxes if needed)
4.! Generate a product for each box; each
element of the product corresponds to a
variable which stays constant over the box. It
is the variable if the variable stays at 1 and
the negation of the variable otherwise.
5.! The result is the sum of all these products
The main goal
•! As few boxes as possible
•! The biggest possible boxes
CS031 Lecture 4 (b) 12
A simplification
Another Presentation of a Truth Table
The Karnaugh map looks like this
What is the boolean function?
CS031 Lecture 4 (b) 13
A simplification
Another Presentation of a Truth Table
The Karnaugh map looks like this
What is the boolean function? f(a,b)=a’
CS031 Lecture 4 (b) 14
Another Simplification Problem
Sum of Products gives us:
CS031 Lecture 4 (b) 15
Another Simplification Problem
Sum of Products gives us: f(x,y,z) = x’yz + xy’z’ + xyz’ + xyz
Karnaugh map:
CS031 Lecture 4 (b) 16
Another Simplification Problem
Sum of Products gives us: f(x,y,z) = x’yz + xy’z’ + xyz’ + xyz
Karnaugh map:
f(x,y,z) = yz + xz’
CS031 Lecture 4 (b) 17
A Really Big One
CS031 Lecture 4 (b) 18
Don’t Cares
Sometimes, it doesn’t matter exactly
which output is generated in a certain
situation.
A don’t care value is represented by a
x and we can choose any value that
is convenient to us.
What do we choose?
By setting the left and right x’s to 1 we
can make a 2x2 square, reducing the
function to: f(x,y,z)=z’
CS031 Lecture 4 (b) 19
Don’t Cares
Sometimes, it doesn’t matter exactly
which output is generated in a certain
situation.
A don’t care value is represented by a
x and we can choose any value that
is convenient to us.
What do we choose?
By setting the left and right x’s to 1 we
can make a 2x2 square, reducing the
function to: f(x,y,z)=z’
1
1
CS031 Lecture 4 (b) 20
We Still Don’t Care!
What if the x’s were 0’s?
f(w,x,y,z)=(w’x’y) + (w’xz) + (xyz)
CS031 Lecture 4 (b) 21
We Still Don’t Care!
What if the x’s were 0’s?
f(w,x,y,z)=(w’x’y) + (w’xz) + (xyz)
What if they’re don’t cares?
CS031 Lecture 4 (b) 22
We Still Don’t Care!
What if the x’s were 0’s?
f(w,x,y,z)=(w’x’y) + (w’xz) + (xyz)
What if they’re don’t cares?
f(w,x,y,z)=(x’y) + (xz)
How many operations do we save?
Including negations, 11-4=7
CS031 Lecture 4 (b) 23
Half Adder
Given two inputs, generate the sum and carry.
CS031 Lecture 4 (b) 24
Full Adder
Add three inputs, generating the sum and carry.
CS031 Lecture 4 (b) 25
Simplification for FA
Karnaugh map for S
Karnaugh map for C
CS031 Lecture 4 (b) 26
Chaining Adders We can add two 4-bit numbers
by chaining full adders. FAFAFAFA0x0y0y2x2y2x2y1x1S0S1S2S3C
FA
FA
FA
FA
0 x0 y0
x1
x2
x3
y1
y2
y3
S0
S1
S2
S3
C