Chapter 4 Modular Combinational Logic. Decoders n to 2 n decoder n inputs 2 n outputs For each...

Preview:

Citation preview

Chapter 4

Modular Combinational Logic

Decoders

Decoders

n to 2n decoder n inputs 2n outputs

For each input, one and only one output will be active.

Uses: “Minterm generator” Wordline (memory) circuit Code conversion Routing data

2 to 4 Decoder Example

2 to 4 Decoder – Truth Table

2 to 4 decoder

X1 X0 Y3 Y2 Y1 Y0

0 0 0 0 0 1

0 1 0 0 1 0

1 0 0 1 0 0

1 1 1 0 0 0

2 to 4 Decoder Equations

0 1 0

1 1 0

2 1 0

3 1 0

Y X X

Y X X

Y X X

Y X X

2 to 4 Decoder: Circuit

2 to 4 Decoder: Block Symbol

SymbolCircuit

3 to 8 Decoder Example

3 to 8 Decoder – Truth Table

x2 x1 x0 y7 y6 y5 y4 y3 y2 y1 y0

0 0 0 0 0 0 0 0 0 0 1

0 0 1 0 0 0 0 0 0 1 0

0 1 0 0 0 0 0 0 1 0 0

0 1 1 0 0 0 0 1 0 0 0

1 0 0 0 0 0 1 0 0 0 0

1 0 1 0 0 1 0 0 0 0 0

1 1 0 0 1 0 0 0 0 0 0

1 1 1 1 0 0 0 0 0 0 0

3 to 8 Decoder Equations

0 2 1 0

1 2 1 0

2 2 1 0

3 2 1 0

Y X X X

Y X X X

Y X X X

Y X X X

4 2 1 0

5 2 1 0

6 2 1 0

7 2 1 0

Y X X X

Y X X X

Y X X X

Y X X X

3 to 8 Decoder: Circuit

3 to 8 Decoder: Block Symbol

Symbol

Circuit

Design Example

Example

Using only a 3x8 decoder and two-input OR gates, design a logic circuit which implements the following Boolean equation

, , 2, 4,5F a b c m

Solution

m2

m4m5

2 to 4 Decoder with Enable

2x4 Decoder with Enable

Enable is abbreviated as EN EN is called a Control Signal Control Signals can be

Active High Signal EN = 1 – Turns “ON” Decoder

Active Low Signal EN=0 – Turns “ON” Decoder

2 x 4 Decoder with Active High Enable – Truth Table

En x1 x0 y3 y2 y1 y0

0 0 0 0 0 0 0

0 0 1 0 0 0 0

0 1 0 0 0 0 0

0 1 1 0 0 0 0

1 0 0 0 0 0 1

1 0 1 0 0 1 0

1 1 0 0 1 0 0

1 1 1 1 0 0 0

2 to 4 Decoder with Enable Equations

0 1 0

1 1 0

2 1 0

3 1 0

n

n

n

n

Y E X X

Y E X X

Y E X X

Y E X X

2 to 4 Decoder with Enable Circuit

2 to 4 Decoder with Enable Symbol

2 x 4 Decoder with Active High Enable – Truth Table (Short hand notation)

En x1 x0 y3 y2 y1 y0

0 d d 0 0 0 0

1 0 0 0 0 0 1

1 0 1 0 0 1 0

1 1 0 0 1 0 0

1 1 1 1 0 0 0

d = don’t care

En has “highest” priority. If En=0, we “don’t care” about x1 or x0 because Y=0

2 x 4 Decoder with Active Low Enable – Truth Table (Short hand notation)

EnL x1 x0 y3 y2 y1 y0

1 d d 0 0 0 0

0 0 0 0 0 0 1

0 0 1 0 0 1 0

0 1 0 0 1 0 0

0 1 1 1 0 0 0

d = don’t care

En has “highest” priority. If En=1, we “don’t care” about x1 or x0 because Y=0

2 to 4 Decoder with Active Low Enable Circuit

Design Example

Example

Design a 3x8 decoder using only 2x4 decoders and NOT gates.

Solution

“On” when A=1

“On” when A=0

TPS Quiz

Encoders

Encoders

Opposite of a decoder 2n to n encoder

2n inputs n outputs

For each input, the circuit will produce an “encoded” output

Example: 4 to 2 Binary EncoderTruth Table

X3 X2 X1 X0 Y1 Y0

0 0 0 1 0 0

0 0 1 0 0 1

0 1 0 0 1 0

1 0 0 0 1 1

Assume only one input high at a time!!

4 to 2 Encoder Equations

0 1 3

1 2 3

Y X X

Y X X

Problems with initial design

Q: How do we tell the difference between an input of all 0’s (i.e. X=0) and X=1?

A: Add another output (IA) that indicates that the input is valid. Let’s make IA active low.

0 1 2 3IA X X X X

Problems with initial design

If IA = 1 => all lines are 0If IA = 0 => at least one line is 1

Q: What happens if more than one input is high at the same time?

A: Design a “priority” encoder that will encode the input with the highest priority.

Let’s set X3 with the highest priority, followed by X2, X1, and X0

Example: 4 to 2 Priority Binary EncoderTruth Table

X3 X2 X1 X0 Y1 Y0

0 0 0 1 0 0

0 0 1 d 0 1

0 1 d d 1 0

1 d d d 1 1

Solution

x3x2x1x0 00 01 11 10

00

01

11

10

Y1

x3x2x1x0 00 01 11 10

00

01

11

10

Y0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1 2 3Y X X 0 1 2 3Y X X X

4 to 2 Priority Encoder Equations

0 1 2 3

1 2 3

Y X X X

Y X X

0 1 2 3IA X X X X

Multiplexer/Data Selectors

MUXVery Important Module!!!

Multiplexer(MUX)/Data Selector

N to 1 multiplexer n data input lines Log2(n) control inputs One output

This circuit will “connect” the selected input to the output. The selected input is specified by a decoding of the control inputs.

Example: 4 to 1 MUX Truth Table

D3 D2 D1 D0 A B F

d d d D0 0 0 D0

d d D1 d 0 1 D1

d D2 d d 1 0 D2

D3 d d d 1 1 D3

d = don’t care / Di = data on input i

Data InputsControlInputs

Output

4 to 1 MUX Equation

0 1 2 3F D AB D AB D AB D AB

3

0i i

i

F Dm

D’s are the DATA inputs, AB are control inputs and calledthe “select” lines.

4 to 1 MUX Circuit

2x4 Decoder Only a single AND gate willbe “ON” at a time.

Output

Control Inputs Data Inputs

4 to 1 MUX Symbol

DataInputs

ControlInputs

Output

Data and Control Paths

Logic

Data PathInputs

Data PathOutputs

Control PathInputs

Control PathOutputs

MUX Applications

Example

Using a 4x1 MUX, design a logic circuit which implements:

Y a b We have,

Y

0 1 2 3Y D AB D AB D AB D AB

Example

Using a 4x1 MUX, design a logic circuit which implements:

Y a b a b Y Dn

0 0 0 D0

0 1 1 D1

1 0 1 D2

1 1 0 D3

0 1 1 0Y AB AB AB AB AB AB

Solution

Multibit Multiplexers

Multi-bit Multiplexers

J-bit nx1 mux

sel

d0d1

dn-1

d2 FJ bitsdeep

log2n

J bitsdeep

0

j

i ii

F j D j m

j=0 to 3

This is just J separate nx1 multiplexers

Example 4-bit 4x1 MUX

A B

D0[3..0]

D1[3..0]

D3[3..0]

D2[3..0]F[3..0] 4 bits

deep

D0[3..0]

D1[3..0]

D2[3..0]

D3[3..0]

A B

F[3..0]

3

0i i

i

F j D j m

j=0 to 3 This is just 4 separate 4x1 muxes

Example

4-bit 4x1 MUX

0 1 2 30 0 0 0 0F D AB D AB D AB D AB

0 1 2 31 1 1 1 1F D AB D AB D AB D AB

0 1 2 32 2 2 2 2F D AB D AB D AB D AB

0 1 2 33 3 3 3 3F D AB D AB D AB D AB

Bit 0

Bit 3

Bit 2

Bit 1

Example 4 bit 4x1 MUX

For the jth output, we have

D0[j]D1[j]D2[j]D3[j]AB

F[j]

Example 4 bit 4x1 MUX

For the bit 0 output, we have

D0[0]D1[0]D2[0]D3[0]AB

F[0]

Example 4 bit 4x1 MUX

For the bit 1 output, we have

D0[1]D1[1]D2[1]D3[1]AB

F[1]

Example 4 bit 4x1 MUX

For the bit 2 output, we have

D0[2]D1[2]D2[2]D3[2]AB

F[2]

Example 4 bit 4x1 MUX

For the bit 3 output, we have

D0[3]D1[3]D2[3]D3[3]AB

F[3]

Example 4 bit 4x1 Mux

F[0]

F[1]

F[2]

F[3]

Complete Circuit

Bit 0

Bit 1

Bit 2

Bit 3

Example 4 bit 4x1 MUX

Symbol

Design Example

Using a 4bit 4x1 MUX, design a 8bit4x1 MUX

Solution

DeMultiplexers/Data Distributors

Demultiplexer/Data Distributor

Opposite of a multiplexer 1 to N demultiplexer

1 data input N data outputs Log2(n) control inputs

This circuit will “connect” a data input to one and only one output. The selected output is specified by a decoding of the control inputs.

Example: 1 to 4 DeMUX Truth Table

D A B F3 F2 F1 F0

D 0 0 0 0 0 D

D 0 1 0 0 D 0

D 1 0 0 D 0 0

D 1 1 D 0 0 0

d = don’t care / Di = data on input i

1 to 4 DeMUX Equations

3 3F DAB Dm

j jF Dm

D is the DATA inputs, AB are control inputs and calledthe “select” lines.

1 1F DAB Dm 2 2F DAB Dm

0 0F DAB Dm

1 to 4 DEMUX Circuit

Only 1 AND gate willbe “ON”

2x4 DecoderOnly oneF will beactive

1 to 4 DEMUX Symbol

DataInput

SelectedLines

Outputs

Example

Design a 3x8 decoder using only 2x4 decoders and NOT gates.

Solution

“On” when A=1

“On” when A=0

TPS Quiz

Basic Arithmetic Elements

Half Adder

Half Adder-Truth Table

S=A+B (arithmetic sum)

A B S1 S0

0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 0

0S a b

1S ab

Half Adder Circuit

Full Adder-Truth Table

S=A+B+C (arithmetic sum)

A B C S1 S0

0 0 0 0 0

0 0 1 0 1

0 1 0 0 1

0 1 1 1 0

0S a b c 1S ab ac bc

A B C S1 S0

1 0 0 0 1

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1

Full Adder

0S a b c

1S ab ac bc

You can show!!!

1S ab c a b

Synthesis

(0)S A B C Logic Equation

Logic Circuit

Synthesis

(1)S AB C A B Logic Equation

Logic Circuit

17

AND2 18

OR2

19 coutOUTPUT16

AND2

VCC14 Cin INPUT

VCC13 B INPUT10

XOR

11

XOR

15 sumOUTPUT

VCC12 A INPUT

Synthesis Full Adder Circuit

S(0)

S(1)

C

AB

S(0)S(1)

Simulation

Verification

S(0)S(1)

We verify the circuit via a simulation

Logic SimulationInputs

OutputsS 00 01 01 10 01 01 01 11

17

AND2 18

OR2

19 coutOUTPUT16

AND2

VCC14 Cin INPUT

VCC13 B INPUT10

XOR

11

XOR

15 sumOUTPUT

VCC12 A INPUT

Verification Summary

S(0)

S(1)

C

AB

S(0)S(1)

Simulation

Circuit

Documentation

17

AND2 18

OR2

19 coutOUTPUT16

AND2

VCC14 Cin INPUT

VCC13 B INPUT10

XOR

11

XOR

15 sumOUTPUT

VCC12 A INPUT

S(0)

S(1)

C

AB

FullAdderC

AB

S(0)

S(1)

Block Diagram

Ripple Carry Adder

Conceptualization

4-bit adder (worst case)

11111111

11110

111

For the “worst case” we need to addthree bits to generate a single output bitwith a possible carry out.Can we use our single bit adder for this?

Ripple Carry Adder

We can cascade several full adders to create a ripple carry adder

The circuit gets its name because the carry bit “ripples” from one bit position to the next

Conceptualization

FullAdderC

AB

S(0)

S(1)

FullAdderC

AB

S(0)

S(1)

First, let’s look at two bits

A(0)B(0)

B(1)A(1)

Sum(0)

Sum(1)

What about the carry?

Conceptualization

FullAdderC

AB

S(0)

S(1)

FullAdderC

AB

S(0)

S(1)

Let’s connect the two full adders

A(0)B(0)

B(1)A(1)

S(0)

S(1)

Set carry in for first bit to 0. Why?

Cout

Cin

0

Analysis

FullAdderC

AB

S(0)

S(1)

FullAdderC

AB

S(0)

S(1)

Let’s test this for a few cases:

0

0

00

0

000

0

0

0000

000

Correct!!!

Rule of thumb: Always test simple cases first!!

Analysis

FullAdderC

AB

S(0)

S(1)

FullAdderC

AB

S(0)

S(1)

Let’s test this for the a few cases

0

1

11

1

110

1

1

1111

110

Correct!!!

Analysis

FullAdderC

AB

S(0)

S(1)

FullAdderC

AB

S(0)

S(1)

Let’s test this for the a few cases

11

00

0

1

1

1

0

0

0101

010

Correct!!!

Four Bit “Ripple” Adder

Carry in

Carry out

Logic Simulation

8-bit Ripple Carry Adder

Use two 4-bit adders

16-bit Ripple Carry Adder

Use two 8-bit adders

Subtraction Circuit

Subtraction Circuit

Calculate 2’s complement of B Add –B to A

ADDER

INV

A

B

S

1

Cin

A

B

1S A B A B A B

B

1

1S A B

Add/Sub Circuit

Add/Sub Circuit Module

Add/SubModule

A

B

S

Add

A

B

Add

S

Function Table for Add/Sub Module

Add FunctionalResult

0 S=A+B

1 S=A-B

Add is a control input. It is active low. This means that the module will compute A+B when Add=0. It will compute A-B when Add=1.

Add/Sub Circuit

Design using Modules

Add/Sub Circuit

ADDER

INV2x1

MUX

A

B

S

B

B

A

S Cin

A

Add

Add/Sub Circuit

ADDER

INV2x1

MUX

A

B

S

B

B

A

S Cin

A

Add

Add operation. Add=0

0 0

S A B

Add/Sub Circuit

ADDER

INV2x1

MUX

A

B

S

B

B

A

S Cin

A

Add

Sub operation. Add=1

1 1

1S A B

B

TPS Quiz

17-18

Overflow/Underflow Detection

Numerical Overflow/Underflow

2’s complement number We have S=A+B

Range of sum

Overflow occurs if

Underflow occurs if

1 12 2 1n nS

12 1nS

12nS

Example: Overflow

Let n=4, Range is

Let A=$7, B=$7, then S=$7+$7=$E, but $E=%1110 = -2, so Overflow has occurred.

8 7S

3 32 2 1S

Example: Overflow

Let’s examine this more closely

-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7

+7

So, overflow is the same as “wrap around.”

8,9,A,B,C,D,E,F,0,1,2,3,4,5,6,7

Example: Underflow

Let n=4, let A=-7 and B=-7, in 2’s complement, A=B=$9,

S=$9+$9=$12=$02 so underflow has occurred.

Example: Underflow

Let’s examine this more closely

-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7

+6

So, underflow is the same as “wrap around.”

+1

Overflow/Underflow Detection

How do we detect overflow and underflow? First adding a positive to a negative

number is always OK. 4 bit example: 7 + (-8) = -1

Let’s examine the sum of the MSB’s to determine overflow and underflow.

Set V=1, if overflow/underflow occurs

Examination of MSB

b a cin S Co V Explanation

0 0 0 0 0 0 A+B < 2n-1 (OK)

0 0 1 1 0 1 A+B>2n-1 -1 (overflow)

0 1 0 1 0 0 -A+B (OK)

0 1 1 0 1 0 -A+B (OK)

1 0 0 1 0 0 A-B (OK)

1 0 1 0 1 0 A-B (OK)

1 1 0 0 1 1 -A-B< -2n-1 (underflow)

1 1 1 1 1 0 -A-B > -2n-1 (OK)

a,b are the MSBs of A and B. cin is carry in; cout=carry out

Overflow/Underflow Detection

We find

1 1 , 1 1 1 , 1n n in n n n in nV a b c a b c

Overflow/Underflow Detection

, 1 , 1in n out nV c c

You can also use

That is, if for the MSB carry_in is not equal to carry_out, overflow or underflow has occurred.

TPS Quiz

19-20

Comparators

Equal Comparator

Design a logic circuit which will compute

F0 = (A = B)

2-bit Equal Comparator Truth Table

b1 b0 a1 a0 F0

0 0 0 0 1

0 0 0 1 0

0 0 1 0 0

0 0 1 1 0

0 1 0 0 0

0 1 0 1 1

0 1 1 0 0

0 1 1 1 0

2-bit Equal Comparator Truth Table

b1 b0 a1 a0 F0

1 0 0 0 0

1 0 0 1 0

1 0 1 0 1

1 0 1 1 0

1 1 0 0 0

1 1 0 1 0

1 1 1 0 0

1 1 1 1 1

Solution

0 1 1 0 0F a b a b

You can show,

N-bit Equal Comparator

0 1 1 1 1 0 0n nF a b a b a b

Not Equal Comparator

Design a logic circuit which will compute

F = (A <> B)

F = (A = B)

i.e. Just invert our Equal Comparator circuit

Magnitude Comparator

Design a logic circuit which will compute

F2 = (A>B)F1 = (A<B)

Let’s develop a truth table for 2-bits

2-bit Magnitude (unsigned) Comparator

Truth Table

b1 b0 a1 a0 F2 F1

0 0 0 0 0 0

0 0 0 1 1 0

0 0 1 0 1 0

0 0 1 1 1 0

0 1 0 0 0 1

0 1 0 1 0 0

0 1 1 0 1 0

0 1 1 1 1 0

2-bit Magnitude (unsigned) Comparator

Truth Table

b1 b0 a1 a0 F2 F1

1 0 0 0 0 1

1 0 0 1 0 1

1 0 1 0 0 0

1 0 1 1 1 0

1 1 0 0 0 1

1 1 0 1 0 1

1 1 1 0 0 1

1 1 1 1 0 0

You can show

2 1 1 0 1 0 1 0 0F a b a b b a a b

1 1 1 1 0 0 0 1 0F a b a a b a bb

TPS Quiz

21

Arithmetic Logic Units (ALUs)

Arithmetic Logic Unit (ALU)

ALU

A[n-1,,0]

B[n-1..0]

F

S[m-1..0]

A,B are data inputs of n bits each in depthS is a control input. We have 2m operationsF is the output

Example Let n=4,m=3 We have A[3..0] and B[3..0] With m=3, we have 23 = 8 operations Let’s look at a possible function table

Function Table

s2 s1 s0 Function

0 0 0 F=AB

0 0 1 F=A+B (logical OR)

0 1 0 F=NOT A

0 1 1 F=A XOR B

1 0 0 F=A+B (Arithmetic)

1 0 1 F=A-B

1 1 0 F=A + 1

1 1 1 F=A - 1

Design using a Truth Table

How large is the truth table? 2n from data inputs A and B

Example: n=8, we have 16 data inputs A[7..0] and B[7..0]

3 control inputs Total of 2n+3 inputs

N=8, we have 19 inputs Our truth table will have 192 (361) rows and 8 outputs

Too complex. Let’s explore another alternative using a “system” or modular approach

Design using Modules

Note: For S2=0, we have logic operations For S2=1, we have arithmetic

operations So, let’s use S2 to control a 2x1 MUX to select between logic and arithmetic

operations, so our top level design would look like:

ALU Design

LogicModule

ArithmeticModule

2x1MUX

S[2]

A B

A

A

B

F

A

BF

S[1..0]

S[1..0]

B

F F

ALU Design S2=0

LogicModule

ArithmeticModule

2x1MUX

S[2]

A B

A

A

B

F

A

BF

S[1..0]

S[1..0]

B

F F

With S2=0, F is the output fromthe logic module

ALU Design S2=1

LogicModule

ArithmeticModule

2x1MUX

S[2]

A B

A

A

B

F

A

BF

S[1..0]

S[1..0]

B

F F

With S2=1, F is the output fromthe arithmetic module

Logic Module Design

Function Table for Logic Module

S2=0

s2 s1 s0 Function

0 0 0 F=AB

0 0 1 F=A+B (logical OR)

0 1 0 F=NOT A

0 1 1 F=A XOR B

We can use a 4x1 mux to implement this module

Logic Module Design

OR

NOT

XOR

AND

A

B

C

D

4X1

F

S[1..0]

S1 S0

A

A

B

F

A

B

F

A

B

F

A F

B

Logic Module Design

OR

NOT

XOR

AND

A

B

C

D

4X1

F

S[1..0]

S1 S0

A

A

B

F

A

B

F

A

B

F

A F

B

AND OperationS[1..0]=00

0 0

F=AB

Logic Module Design

OR

NOT

XOR

AND

A

B

C

D

4X1

F

S[1..0]

S1 S0

A

A

B

F

A

B

F

A

B

F

A F

B

OR OperationS[1..0]=01

0 1

F=A+B

Logic Module Design

OR

NOT

XOR

AND

A

B

C

D

4X1

F

S[1..0]

S1 S0

A

A

B

F

A

B

F

A

B

F

A F

B

NOT OperationS[1..0]=10

1 0

F=A

Logic Module Design

OR

NOT

XOR

AND

A

B

C

D

4X1

F

S[1..0]

S1 S0

A

A

B

F

A

B

F

A

B

F

A F

B

XOR OperationS[1..0]=11

1 1

F=A XOR B

What do these logic moduleslook like?

AND Module

ANDA

B

F

OR Module

NOT Module

NOTA F

XOR Module

Arithmetic Module

Let’s use our ADD/SUB Module

Add/Sub Circuit Module

Add/SubModule

A

B

S

Add

A

B

Add

S

Function Table for Arithmetic Ops

s2 s1 s0 Function

1 0 0 F=A+B (Arithmetic)

1 0 1 F=A-B

1 1 0 F=A + 1

1 1 1 F=A - 1

Note:S0 can be use to indicate Addition or Subtraction.S1 can be use to indicate the B data input

Arithmetic Module Design

Add/SubModule

S0

A

B

Add

S

S

2X1

A

B

FVDD

S1

B

A

S

Arithmetic Module Design

Add/SubModule

S0

A

B

Add

S

S

2X1

A

B

FVDD

S1

B

A

S

00

F=A+B

S[1..0]=00

Arithmetic Module Design

Add/SubModule

S0

A

B

Add

S

S

2X1

A

B

FVDD

S1

B

A

S

10

F=A-B

S[1..0]=01

Arithmetic Module Design

Add/SubModule

S0

A

B

Add

S

S

2X1

A

B

FVDD

S1

B

A

S

01

F=A+1

S[1..0]=10

Arithmetic Module Design

Add/SubModule

S0

A

B

Add

S

S

2X1

A

B

FVDD

S1

B

A

S

11

F=A-1

S[1..0]=11

Overall Design

We have

ALU Design

LogicModule

ArithmeticModule

2x1MUX

S[2]

A B

A

A

B

F

A

BF

S[1..0]

S[1..0]

B

F F

Logic Module Design

OR

NOT

XOR

AND

A

B

C

D

4X1

F

S[1..0]

S1 S0

A

A

B

F

A

B

F

A

B

F

A F

B

Arithmetic Module Design

Add/SubModule

S0

A

B

Add

S

S

2X1

A

B

FVDD

S1

B

A

S

Total Design

OR

NOT

XOR

AND

A

B

C

D

4X1

F

S[1..0]

Add/SubModule

A

S

S0

A

B

Add

S

B

S

F2X1

S2

S

2X1

A

B

FVDD

S1 S0

S1

A B

A

B

F

A

B

F

A

B

F

A F

Logic Module

Arithmetic Module

End of Chapter 4

Recommended