Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors...

38
Adders and Subtractors Discussion D4.1

Transcript of Adders and Subtractors Discussion D4.1. Adders and Subtractors Adders Carry and Overflow Subtractors...

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