320 likes | 565 Views
Binary Subtraction. Section 3-9 Mano & Kime. Binary Subtraction. Review from CSE 171 Two’s Complement Negative Numbers Binary Adder-Subtractors 4-bit Adder/Subtractor in VHDL. A . 0 . D . 0 . B . 0 . C . 1 . Half Subtractor. A . B . D . C . 0 . 0 . 0 . 1 . 0 0 0 0
E N D
Binary Subtraction Section 3-9 Mano & Kime
Binary Subtraction • Review from CSE 171 • Two’s Complement Negative Numbers • Binary Adder-Subtractors • 4-bit Adder/Subtractor in VHDL
A 0 D 0 B 0 C 1 Half Subtractor A B D C 0 0 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0
AiBi 00 01 11 10 Ci 0 1 Di = Ci $ (Ai $ Bi) Same as Si in full adder Full Subtractor Ci Ai Bi Di Ci+1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 Di
AiBi 00 01 11 10 Ci 0 1 Full Subtractor Ci Ai Bi Di Ci+1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 Ci+1 Ci+1 = !Ai & Bi # Ci !Ai & !Bi # Ci & Ai & Bi
Full Subtractor Ci+1 = !Ai & Bi # Ci !Ai & !Bi # Ci & Ai & Bi Ci+1 = !Ai & Bi # Ci & (!Ai & !Bi # Ai & Bi) Ci+1 = !Ai & Bi # Ci & !(Ai $ Bi) Recall: Si = Ci $ (Ai $ Bi) Ci+1 = !Ai & Bi # Ci & !(Ai $ Bi)
half subtractor half subtractor Full Subtractor Si = Ci $ (Ai $ Bi) Ci+1 = !Ai & Bi # Ci & !(Ai $ Bi)
Binary Subtraction • Review from CSE 171 • Two’s Complement Negative Numbers • Binary Adder-Subtractors • 4-bit Adder/Subtractor in VHDL
Ignore carry Negative Numbers Subtract by adding 73 -35 38 73 +65 138 10’s complement
Negative Numbers 10’s complement: Subtract from 100 Take 9’s complement and add 1 100 -35 65 99 -35 64 +1 65
Negative Numbers 2’s complement: Subtract from Take 1’s complement and add 1 100000000 01001101 10110011 11111111 -01001101 10110010 +1 10110011
Complement remaining bits Copy all bits to first 1 2’s complement Finding 2’s Complement 0 1 0 1 1 0 0 0 1 0 1 0 1 0 0 0
Negative NumberTake 2’s Complement 7510 = 4B16 = 01001011 -7510 = B516 = 10110101 FF -4B B4 +1 B5
Negative NumberTake 2’s Complement 110 = 0116 = 00000001 -110 = FF16 = 11111111 12810 = 8016 = 10000000 -12810 = 8016 = 10000000
Signed Numbers 4-bit: 8H = -8 to 7H = +7 1000 to 0111 8-bit: 80H = -128 to 7F = +127 16-bit: 8000H = -32,768 to 7FFFH = +32,767 32-bit: 80000000H = -2,147,483,648 to 7FFFFFFFH = +2,147,483,647
Binary Subtraction • Review from CSE 171 • Two’s Complement Negative Numbers • Binary Adder-Subtractors • 4-bit Adder/Subtractor in VHDL
A 0 S 0 B 0 C 1 A 0 D 0 B 0 C 1 Adder/Subtractor Half subtractor Half adder E = 0: Half adder E = 1: Half subtractor
C i A D i i B i C E Adder/Subtractor-1 i+1 E = 0: Full adder E = 1: Full subtractor
Full Subtractor Ci Ai Bi Di Ci+1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 Reordered Full Adder Full Adder Ci Ai Bi Si Ci+1 Ci Ai Bi Si Ci+1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 NOT
Adder/Subtractor-2 E = 0: 4-bit adder E = 1: 4-bit subtractor
+1 Add A to !B (one’s complement) plus 1 4-bit Subtractor: E = 1 That is, add A to two’s complement of B D = A - B
Binary Subtraction • Review from CSE 171 • Two’s Complement Negative Numbers • Binary Adder-Subtractors • 4-bit Adder/Subtractor in VHDL
addsub2.vhd SD(3:0) addsub2 a(3:0) b(3:0) CB E