This action might not be possible to undo. Are you sure you want to continue?

# Logic Gates

**CS/APMA 202, Spring 2005 Rosen, section 10.3 Aaron Bloomfield
**

1

**Review of Boolean algebra
**

Just like Boolean logic Variables can only be 1 or 0

Instead of true / false

2

**Review of Boolean algebra
**

Not _ is a horizontal bar above the number

0 _ =1 1=0

0+0 = 0 0+1 = 1 1+0 = 1 1+1 = 1

Or is a plus

And is multiplication

0*0 = 0 0*1 = 0 1*0 = 0 1*1 = 1

3

**Review of Boolean algebra
**

Example: translate (x+y+z)(xyz) to a Boolean logic expression

___

(xyz)(xyz)

**We can define a Boolean function:
**

F(x,y) = (xy)(xy)

**And then write a “truth table” for it:
**

x y F(x,y)

1

1 0 0

1

0 1 0

0

0 0 0

4

Quick survey

a)

b) c) d)

I understand the basics of Boolean algebra Absolutely! More or less Not really Boolean what?

5

Today’s demotivators

6

**Basic logic gates
**

Not And Or Nand Nor Xor

x x

x y

x y

xy

x+y

x y z x y z

xyz

x+y+z

x y

x y x y

xy

x+y xÅy

7

**Rosen, §10.3 question 1
**

Find the output of the following circuit

x y y

Answer: (x+y)y

x+y (x+y)y y

__

Or (xy)y

8

**Rosen, §10.3 question 2
**

Find the output of the following circuit

x y

Answer: xy

x

xy

y

xy

___ __

Or (xy) ≡ xy

9

Quick survey

a) b) c) d)

I understand how to figure out what a logic gate does Absolutely! More or less Not really Not at all

10

**Rosen, §10.3 question 6
**

Write the circuits for the following Boolean algebraic expressions __ a) x+y

x y

x

x+y

11

**Rosen, §10.3 question 6
**

Write the circuits for the following Boolean algebraic expressions _______ b) (x+y)x

x y

x+y

x+y

(x+y)x

12

**Writing xor using and/or/not
**

p Å q (p q) ¬(p q) x Å y (x + y)(xy)

____

x 1 1 0 0

y 1 0 1 0

xÅy 0 1 1 0

x y

x+y xy xy

(x+y)(xy)

13

Quick survey

a) b) c) d)

I understand how to write a logic circuit for simple Boolean formula Absolutely! More or less Not really Not at all

14

**Converting decimal numbers to binary
**

53 = 32 + 16 + 4 + 1

= 25 + 24 + 22 + 20 = 1*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20 = 110101 in binary = 00110101 as a full byte in binary

211= 128 + 64 + 16 + 2 + 1

= 27 + 26 + 24 + 21 + 20 = 1*27 + 1*26 + 0*25 + 1*24 + 0*23 + 0*22 + 1*21 + 1*20 = 11010011 in binary

15

**Converting binary numbers to decimal
**

What is 10011010 in decimal?

10011010 = 1*27 + 0*26 + 0*25 + 1*24 + 1*23 + 0*22 + 1*21 + 0*20 = 27 + 24 + 23 + 21 = 128 + 16 + 8 + 2 = 154

**What is 00101001 in decimal?
**

00101001 = 0*27 + 0*26 + 1*25 + 0*24 + 1*23 + 0*22 + 0*21 + 1*20 = 25 + 23 + 20 = 32 + 8 + 1 = 41

16

A bit of binary humor

Available for $15 at http://www.thinkgeek.com/ tshirts/frustrations/5aa9/

17

Quick survey

a) b) c) d)

I understand the basics of converting numbers between decimal and binary Absolutely! More or less Not really Not at all

18

**How to add binary numbers
**

Consider adding two 1-bit binary numbers x and y

0+0 = 0 0+1 = 1 1+0 = 1 1+1 = 10

Carry is x AND y Sum is x XOR y The circuit to compute this is called a half-adder

x 0 0 1 1

y 0 1 0 1

Carry Sum 0 0 0 1 0 1 1 0

19

**The half-adder
**

Sum = x XOR y Carry = x AND y

x y

x y

Sum Carry

Sum Carry

20

**Using half adders
**

We can then use a half-adder to compute the sum of two Boolean numbers

1 1 +1 ? 0 1 1 0 0 0 0 1 0 1 0

21

Quick survey

a)

b) c) d)

I understand half adders Absolutely! More or less Not really Not at all

22

**How to fix this
**

We need to create an adder that can take a carry bit as an additional input

Inputs: x, y, carry in Outputs: sum, carry out Will add x and y with a half-adder Will add the sum of that to the carry in It’s 1 if either (or both): x+y = 10 x+y = 01 and carry in = 1

**This is called a full adder
**

x y c carry sum 1 1 1 1 1 1 1 0 1 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 0

**What about the carry out?
**

0 1 0 0 0 1 0 0 0

0 0 0

1 1 0

23

**The full adder
**

The “HA” boxes are half-adders

c x y

X

X

HA

S S

s c

Y

C C

HA

S

Y

C

24

**The full adder
**

The full circuitry of the full adder

c s x y c

25

**Adding bigger binary numbers
**

Just chain full adders together

x0 y0 x1 y1 x2 y2 x3 y3

X

HA

S

s0

C X Y C

Y

C

FA

S

s1

C X Y C

FA

S

s2

C X Y C

FA

S

s3 c

26

**Adding bigger binary numbers
**

A half adder has 4 logic gates A full adder has two half adders plus a OR gate

Total of 9 logic gates

To add n bit binary numbers, you need 1 HA and n-1 FAs To add 32 bit binary numbers, you need 1 HA and 31 FAs

Total of 4+9*31 = 283 logic gates

**To add 64 bit binary numbers, you need 1 HA and 63 FAs
**

**Total of 4+9*63 = 571 logic gates
**

27

Quick survey

a) b) c) d)

I understand (more or less) about adding binary numbers using logic gates Absolutely! More or less Not really Not at all

28

**More about logic gates
**

To implement a logic gate in hardware, you use a transistor Transistors are all enclosed in an “IC”, or integrated circuit The current Intel Pentium IV processors have 55 million transistors!

29

**Pentium math error 1
**

Intel’s Pentiums (60Mhz – 100 Mhz) had a floating point error

Graph of z = y/x

Intel reluctantly agreed to replace them in 1994

Graph from http://kuhttp.cc.ukans.edu/cwis/units/IPPBR/pentium_fdiv/pentgrph.html

30

**Pentium math error 2
**

Top 10 reasons to buy a Pentium:

10 Your old PC is too accurate 8.9999163362 Provides a good alibi when the IRS calls 7.9999414610 Attracted by Intel's new "You don't need to know what's inside" campaign 6.9999831538 It redefines computing--and mathematics! 5.9999835137 You've always wondered what it would be like to be a plaintiff 4.9999999021 Current paperweight not big enough 3.9998245917 Takes concept of "floating point" to a new level 2.9991523619 You always round off to the nearest hundred anyway 1.9999103517 Got a great deal from the Jet Propulsion Laboratory 31 0.9999999998 It'll probably work!!

Flip-flops

Consider the following circuit:

What does it do?

32

Memory

A flip-flop holds a single bit of memory

The bit “flip-flops” between the two NAND gates

**In reality, flip-flops are a bit more complicated
**

**Have 5 (or so) logic gates (transistors) per flipflop
**

1 Gb = 8,589,934,592 bits of memory That’s about 43 million transistors!

**Consider a 1 Gb memory chip
**

**In reality, those transistors are split into 9 ICs of about 5 million transistors each
**

33

Quick survey

a)

b) c) d)

I felt I understood the material in this slide set… Very well With some review, I’ll be good Not really Not at all

34

Quick survey

a)

b) c) d)

The pace of the lecture for this slide set was… Fast About right A little slow Too slow

35