adders and subtractors discussion d4.1. adders and subtractors adders carry and overflow subtractors...

38
Adders and Subtractors Discussion D4.1

Upload: benjamin-derrington

Post on 01-Apr-2015

260 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Adders and Subtractors

Discussion D4.1

Page 2: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Adders and Subtractors

• Adders

• Carry and Overflow

• Subtractors

• Adder-Subtractor

Page 3: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Half Adder

C A B S 0 0 0 1 A 0 B 0

S 0

C 1

0 0 0 00 1 1 01 0 1 01 1 0 1

Dec Binary 1 1+1 +1 2 10

Page 4: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Multiple-bit Addition

0 1 0 10 1 1 1

A

B

A3 A2 A1 A0

0 1 0 1A 0 1 1 1B3 B2 B1 B0

B

0

1

0

1

1

1

1

Ai

+Bi

+Ci

Si

Ci+1

Page 5: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1

Ci Ai Bi Si Ci+1

1 1

1 1

Ci

AiBi00 01 11 10

0

1

Si

Page 6: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1

Ci Ai Bi Si Ci+1 Si = Ci'Ai'Bi

+ Ci'AiBi'

+ CiAi'Bi' + CiAiBi

Page 7: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

Si = Ci'(Ai'Bi + AiBi')

+ Ci(Ai'Bi' + AiBi)

Si = Ci'(Ai Bi)

+ Ci(Ai Bi)'

Si = Ci (Ai Bi)

Si = Ci'Ai'Bi

+ Ci'AiBi'

+ CiAi'Bi' + CiAiBi

Page 8: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1

Ci Ai Bi Si Ci+1

1

1 11

Ci

AiBi00 01 11 10

0

1

Ci+1

Page 9: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1

Ci Ai Bi Si Ci+1 Ci

AiBi00 01 11 10

0

1

1

1 11

Ci+1

Ci+1 = AiBi

+ CiBi

+ CiAi

Page 10: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1

Ci Ai Bi Si Ci+1 Ci

AiBi00 01 11 10

0

1

1

1 11

Ci+1

Ci+1 = AiBi

+ CiAi'Bi

+ CiAiBi'

Page 11: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

Ci+1 = AiBi

+ Ci(Ai'Bi + AiBi')

Ci+1 = AiBi + Ci(Ai Bi)

Recall:Si = Ci (Ai Bi)

Ci+1 = AiBi + Ci(Ai Bi)

Ci+1 = AiBi

+ CiAi'Bi

+ CiAiBi'

Page 12: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

A

B

S

C

C i+1

i

i

i

i

Half-adder Half-adder

Si = Ci (Ai Bi)

Ci+1 = AiBi + Ci(Ai Bi)

Page 13: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

half-adder

half-adderA

B

i

i

C i

C i+1

S i

S

C

C

A full adder can be made fromtwo half adders (plus an OR gate).

Page 14: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

Full Adder

A B

C C

S

i i

i+1 i

i

Block Diagram

Page 15: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

4-Bit Adder

C 1 1 1 0A 0 1 0 1B 0 1 1 1S 1 1 0 0

Full Adder

A B

0C

S

0 0

1

0

Full Adder

A B

C

S

1 1

2

1

Full Adder

A B

C

S

2 2

3

2

Full Adder

A B

C S

3 3

4 3

C 0

Page 16: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1

Ci Ai Bi Si Ci+1

0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1

Ci Ai Bi Si Ci+1

Truth table

Ci CombinationalLogic

CombinationalLogicAi

Bi

Si

Ci+1

Behavior

Ci+1:Si = Ci + Ai + Bi

Page 17: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Adder

Full Adder

A B

C C

S

i i

i+1 i

i

Block Diagram

Page 18: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

4-Bit Adder

C 1 1 1 0 0:A 0 1 1 0 1 0:B 0 0 1 1 1C4:S 1 0 1 0 0

Full Adder

A B

0C

S

0 0

1

0

Full Adder

A B

C

S

1 1

2

1

Full Adder

A B

C

S

2 2

3

2

Full Adder

A B

C S

3 3

4 3

C 0

Page 19: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

library IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_unsigned.all;

entity adder4 is port(

A : in STD_LOGIC_VECTOR(3 downto 0); B : in STD_LOGIC_VECTOR(3 downto 0); carry : out STD_LOGIC; S : out STD_LOGIC_VECTOR(3 downto 0)

);end adder4;

architecture adder4 of adder4 isbegin

process(A,B)variable temp: STD_LOGIC_VECTOR(4 downto 0);begin

temp := ('0' & A) + ('0' & B);S <= temp(3 downto 0);carry <= temp(4);

end process;end adder4;

Page 20: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

4-Bit Adder

Page 21: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Adders and Subtractors

• Adders

• Carry and Overflow

• Subtractors

• Adder-Subtractor

Page 22: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Carry and Overflow

0 0 1 1 0 1 0 10 0 0 1 1 0 0 1 0111C = 0

V = 0

0

0

1

0

53+25 78

35+19 4E

Dec Hex

Binary

1001

1

0

0Note no carry from bit 6 to bit 7and no carry from bit 7 to C.

Page 23: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Carry and Overflow

0 0 1 1 0 1 0 10 1 0 1 1 0 1 1 0000C = 0

V = 1

1

1

1

0

53+91144

35+5B 90

Dec Hex

Binary

1111

0

1

1

Thinking SIGNED we added two positive numbersand got a negative result. This can’t be correct!Therefore, the OVERFLOW bit, V, is set to 1.Correct answer (144) is outside the range -128 to +127.

Note carry from bit 6 to bit 7but no carry from bit 7 to C.

Page 24: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Carry and Overflow

0 0 1 1 0 1 0 11 1 0 1 0 0 1 1 0001C = 1

V = 0

0

0

1

0

53- 45 8

35+D3 108

Dec Hex

Binary

1111

0

1

0

Thinking SIGNED we added a positive number to anegative number and got the correct positive answer.Therefore, the OVERFLOW bit, V, is cleared to 0.Correct answer (8) is inside the range -128 to +127.

Ignorecarry

Note carry from bit 6 to bit 7and carry from bit 7 to C.

Page 25: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Carry and Overflow

1 0 0 1 1 1 1 01 1 0 1 0 0 1 1 1000C = 1

V = 1

1

1

1

1

- 98 - 45- 143

9E+D3 171

Dec Hex

Binary

0110

1

0

0

Thinking SIGNED we added two negative numbersand got a positive answer. This must be wrong!Therefore, the OVERFLOW bit, V, is set to 1.Correct answer (-143) is outside the range -128 to +127.

Ignorecarry

Note no carry from bit 6 to bit 7but there is a carry from bit 7 to C.

Page 26: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Overflow

• Note that the overflow bit was set whenever we had a carry from bit 6 to bit 7, but no carry from bit 7 to C.

• It was also set when we had a carry from bit 7 to C, but no carry from bit 6 to bit 7.

• Upshot: The overflow bit is the EXCLUSIVE-OR of a carry from bit 6 to bit 7 and a carry from bit 7 to C.

Page 27: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Adders and Subtractors

• Adders

• Carry and Overflow

• Subtractors

• Adder-Subtractor

Page 28: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Half Subtractor

C A B D 0 0 0 1

0 0 0 00 1 1 11 0 1 01 1 0 0

A 0 B 0

D 0

C 1

0-1 1

21

Page 29: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Multiple-bit Subtraction

0 1 0 10 1 1 1

A

B

A3 A2 A1 A0

0 1 0 1A 0 1 1 1B3 B2 B1 B0

B

01

1

1

1

1

Ai

- Bi

- Ci

Di

Ci+1

1

Page 30: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Subtractor

0 0 0 0 00 0 1 1 10 1 0 1 00 1 1 0 01 0 0 1 11 0 1 0 11 1 0 0 01 1 1 1 1

Ci Ai Bi Di Ci+1

1 1

1 1

Ci

AiBi00 01 11 10

0

1

Di

Di = Ci (Ai Bi)

Same as Si in full adder

Page 31: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Subtractor

0 0 0 0 00 0 1 1 10 1 0 1 00 1 1 0 01 0 0 1 11 0 1 0 11 1 0 0 01 1 1 1 1

Ci Ai Bi Di Ci+1 Ci

AiBi00 01 11 10

0

1

1

1 11

Ci+1

Ci+1 = Ai'Bi

+ CiAi'Bi'

+ CiAiBi

Page 32: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Subtractor

Ci+1 = Ai'Bi

+ Ci(Ai'Bi' + AiBi)

Ci+1 = Ai'Bi + Ci(Ai Bi)'

Recall:Di = Ci (Ai Bi)

Ci+1 = Ai'Bi + Ci(Ai Bi)'

Ci+1 = Ai'Bi

+ CiAi'Bi'

+ CiAiBi

Page 33: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Full Subtractor

A

B

D

C

C i+1

i

i

i

i

half subtractorhalf subtractor

Di = Ci (Ai Bi)

Ci+1 = Ai'Bi + Ci(Ai Bi)'

Page 34: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Adders and Subtractors

• Adders

• Carry and Overflow

• Subtractors

• Adder-Subtractor

Page 35: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1

Ci Ai Bi Si Ci+1

1 0 1 0 11 0 0 1 01 1 1 1 11 1 0 0 10 0 1 1 00 0 0 0 00 1 1 0 10 1 0 1 0

Ci Ai Bi Si Ci+1

Full AdderReorderedFull Adder

0 0 0 0 00 0 1 1 10 1 0 1 00 1 1 0 01 0 0 1 11 0 1 0 11 1 0 0 01 1 1 1 1

Ci Ai Bi Di Ci+1

FullSubtractor

NOT

Page 36: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Making a full subtractor from a full adder

Full Adder

A B

C C

D

i i

i+1 i

i

Page 37: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

Adder/Subtractor

Full Adder

A B

C

0 0

1

0

Full Adder

A B

C

1 1

2

1

Full Adder

A B

C

2 2

3

2

Full Adder

A B

C SD

3 3

4 3 SD SD SD

E

E = 0: 4-bit adderE = 1: 4-bit subtractor

Page 38: Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors Adder-Subtractor

4-bit Subtractor: E = 1

Full Adder

A B

C

0 0

1

0

Full Adder

A B

C

1 1

2

1

Full Adder

A B

C

2 2

3

2

Full Adder

A B

C SD

3 3

4 3 SD SD SD

E

+1

Add A to !B (one’s complement) plus 1That is, add A to two’s complement of BD = A - B