0% found this document useful (0 votes)
16 views51 pages

Lec05 - DS - 2018 - Print

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views51 pages

Lec05 - DS - 2018 - Print

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 51

dc

2018

Digital Systems
Arithmetic

BK
TP.HCM
dc
2018

e Introduction
• Digital circuits are frequently used for arithmetic
operations
• Fundamental arithmetic operations on binary
numbers and digital circuits which perform
arithmetic operations will be examined.

2
dc
2018

e Binary Addition
• Binary numbers are added like decimal
numbers.
• In decimal, when numbers sum more than 9 a
carry results.
• In binary when numbers sum more than 1 a
carry takes place.
• Addition is the basic arithmetic operation used
by digital devices to perform subtraction,
multiplication, and division.

3
dc
2018

e Binary Addition
• 0+0=0
• 1+0=1
• 1 + 1 = 0 + carry 1
• 1 + 1 + 1 = 1 + carry 1
• E.g.:
1010 (10) 001 (1)
+1100 (12) +101 (5)
10110 (22) +111 (7)
1101 (13)

4
dc
2018

e Representing Signed Numbers


• Since it is only possible to show
magnitude with a binary number, the sign
(+ or −) is shown by adding an extra
“sign” bit.
• A sign bit of 0 indicates a positive
number.
• A sign bit of 1 indicates a negative
number.
• The 2’s complement system is the most
commonly used way to represent signed
numbers.
5
dc
2018

e Representing Signed Numbers


• So far, numbers are assumed to be unsigned (i.e. positive)
• How to represent signed numbers?
• Solution 1: Sign-magnitude - Use one bit to represent the
sign, the remain bits to represent magnitude
+27 = 0001 1011 b
-27 = 1001 1011 b

– Problem: need to handle sign and magnitude separately.

• Solution 2: One’s complement - If the number is negative,


invert each bits in the magnitude
+27 = 0001 1011 b
-27 = 1110 0100 b
• Not convenient for arithmetic - add 27 to -27 results in
1111 1111b
– Two zero values
6
dc
2018

e Representing Signed Numbers


• Solution 3: Two’s complement - represent negative
numbers by taking its magnitude, invert all bits and add
one:
– Positive number +27 = 0001 1011b
– Invert all bits 1110 0100b
– Add 1 -27 = 1110 0101b

• Unsigned number

• Signed 2’s complement

7
dc
2018

e Examples of 2’s Complement


• A common method to represent -ve numbers:
– use half the possibilities for positive numbers and half
for negative numbers
– to achieve this, let the MSB have a negative weighting
• Construction of 2's Complement Numbers
– 4-bit example

8
dc
2018

e Why 2’s complement representation?


• If we represent signed numbers in 2’s complement form,
subtraction is the same as addition to negative (2’s
complemented) number.

27 0001 1011 b
- 17 0001 0001 b
+ 10 0000 1010 b

+ 27 0001 1011 b
+ - 17 1110 1111 b
+ 10 0000 1010 b
• Note that the range for 8-bit unsigned and signed numbers
are different.
• 8-bit unsigned: 0 …… +255
• 8-bit 2’s complement signed number: -128 …… +127
9
dc
Comparison Table
2018

• Note the
"wrap-around"
effect of the
binary
representation
– i.e. The top of the
table wraps
around to the
bottom of the
table

10
dc
Sign Extension
2018

• How to translate an 8-bit 2’s complement


number to a 16-bit 2’s complement
number?

• This operation is known as sign extension.

11
dc
Sign Extension
2018

e
• Sometimes we need to extend a number into more bits
• Decimal
– converting 12 into a 4 digit number gives 0012
– we add 0's to the left-hand side
• Unsigned binary
– converting 0011 into an 8 bit number gives 00000011
– we add 0's to the left-hand side
• For signed numbers we duplicate the sign bit (MSB)
• Signed binary
– converting 0011 into 8 bits gives 00000011 (duplicate the 0 MSB)
– converting 1011 into 8 bits gives 11111011 (duplicate the 1 MSB)
– Called "Sign Extension"

12
dc
2018

e Representing Signed Numbers


• In order to change a binary number to 2’s
complement it must first be changed to 1’s
complement.
– To convert to 1’s complement, simply change each bit to
its complement (opposite).
– To convert 1’s complement to 2’s complement add 1 to
the 1’s complement.
• A positive number is true binary with 0 in the sign
bit.
• A negative number is in 2’s complement form with 1
in the sign bit.
• A number is negated when converted to the opposite
sign.
• A binary number can be negated by taking the 2’s
complement of it.

13
dc
Signed Addition
2018

e
• The same hardware can be used for 2's
complement signed numbers as for unsigned
numbers
– this is the main advantage of 2's complement form
• Consider 4 bit numbers:
– the Adder circuitry will "think" the negative numbers are
16 greater than they are in fact
– but if we take only the 4 LSBs of the result (i.e. ignore
the carry out of the MSB) then the answer will be correct
providing it is with the range: -8 to +7.
• To add 2 n-bit signed numbers without possibility
of overflow we need to:
– sign extend to n+1 bits
– use an n+1 bit adder
14
dc
2018

e Addition in the 2’s Complement System


• Perform normal binary addition of magnitudes.
• The sign bits are added with the magnitude bits.
• If addition results in a carry of the sign bit, the
carry bit is ignored.
• If the result is positive it is in pure binary form.
• If the result is negative it is in 2’s complement
form.

15
dc
2018

e Addition in the 2’s Complement System


• Perform normal binary addition of magnitudes.

16
dc
2018

e Subtraction in the 2’s Complement System


• The number subtracted (subtrahend) is
negated.
• The result is added to the minuend.
• The answer represents the difference.
• If the answer exceeds the number of magnitude
bits an overflow results.

17
dc
N
Multiplication and Division by 2
2018

• In decimal, multiplying by 10 can be achieved


by
– shifting the number left by one digit adding a zero at
the LS digit
• In binary, this operation multiplies by 2
• In general, left shifting by N bits multiplies by 2N
– zeros are always brought in from the right-hand end
– E.g.

18
dc
Multiplication of Binary Numbers
2018

• This is similar to multiplication of decimal


numbers.
• Each bit in the multiplier is multiplied by the
multiplicand.
• The results are shifted as we move from LSB to
MSB in the multiplier.
• All of the results are added to obtain the final
product.

19
dc
2018

e Binary Division
• This is similar to decimal long division.
• It is simpler because only 1 or 0 are possible.
• The subtraction part of the operation is done
using 2’s complement subtraction.
• If the signs of the dividend and divisor are the
same the answer will be positive.
• If the signs of the dividend and divisor are
different the answer will be negative.

20
dc
Summary of Signed and Unsigned Numbers
2018

e
Unsigned Signed

MSB has a positive value (e.g. +8 MSB has a negative value (e.g. -8
for for
a 4-bit system) a 4-bit system)
The carry-out from the MSB of an To avoid overflow in an adder,
adder can be used as an extra bit need to sign extend and use an
of the answer to avoid overflow adder with one more bit than the
numbers to be added

To increase the number of bits, To increase the number of bits,


add zeros to the left-hand side sign extend by duplicating the
MSB
Complementing and adding 1 Complementing and adding 1
converts X to (2N - X) converts X to -X

21
dc
2018

e BCD Addition
• When the sum of each decimal digit is less than
9, the operation is the same as normal binary
addition.
• When the sum of each decimal digit is greater
than 9, a binary 6 is added. This will always
cause a carry.

22
dc
2018

e Hexadecimal Arithmetic
• Hex addition:
– Add the hex digits in decimal.
– If the sum is 15 or less express it directly in hex digits.
– If the sum is greater than 15, subtract 16 and carry 1 to the
next position.
• Hex subtraction – use the same method as for binary
numbers.
• When the MSD in a hex number is 8 or greater, the
number is negative. When the MSD is 7 or less, the
number is positive.
FFF – 3A5 = C5A
C5A + 1 = C5B is 2’s complement of 3A5

23
dc
2018

e Arithmetic Circuits

• An arithmetic/logic unit
(ALU) accepts data
stored in memory and
executes arithmetic
and logic operations as
instructed by the
control unit.

24
dc
2018

e Arithmetic Circuits
• Typical sequence of operations:
– Control unit is instructed to add a specific number
from a memory location to a number stored in the
accumulator register.
– The number is transferred from memory to the B
register.
– Number in B register and accumulator register are
added in the logic circuit, with sum sent to
accumulator for storage.
– The new number remains in the accumulator for
further operations or can be transferred to memory
for storage.

25
dc
2018

e Binary Addition
• Recall the binary addition process
A1001
+ B0011
S1100
• LS Column has 2 inputs 2 outputs
– Inputs: A0 B0
– Outputs: S0 C1
• Other Columns have 3 inputs, 2 outputs
– Inputs: An Bn Cn
– Outputs: Sn Cn+1
– We use a "half adder" to implement the LS column
– We use a "full adder" to implement the other columns
– Each column feeds the next-most-significant column.

26
dc
2018

e Parallel Binary Adder


• The A and B variables represent 2 binary numbers to be
added. The C variables are the carries. The S
variables are the sum bits.

27
dc
2018

e Half Adder
• Truth Table

• Boolean Equations

• Implementation

28
dc
2018

e Full Adder
• Truth Table

• Boolean Equations

29
dc
2018

e K maps for the full-adder outputs.

30
dc
2018

e Circuitry for a full adder

31
dc
2018

e Full Adder from Half Adders


• Truth Table

• Boolean Equations

32
dc
2018

e Adder Example

33
dc
2018

e Hierarchy
• Any Verilog design you do will be a module
• This includes testbenches!

• Interface (“black box” representation)


– Module name, ports
• Definition
– Describe functionality of the block
– Includes interface
• Instantiation
– Use the module inside another module

34
dc
2018

e Hierarchy
• Build up a module from smaller pieces
– Primitives
– Other modules (which may contain other
modules)
• Design: typically top-down
• Verification: typically bottom-up
Full Adder Add_ful
Hierarchy l
Add_hal Add_hal
or
f f

xor and xor and


35
dc
2018

e Add_half Module

Add_hal
f

xor and

module Add_half(c_out, sum, a, b);


output sum, c_out;
input a, b;

xor sum_bit(sum, a, b);


and carry_bit(c_out, a, b);
endmodule

36
dc
2018

e Add_full Module
Add_ful
l
Add_hal Add_hal
or
f f

module Add_full(c_out, sum, a, b, c_in) ;


output sum, c_out;
input a, b, c_in;
wire w1, w2, w3;

Add_half AH1(.sum(w1), .c_out(w2), .a(a), .b(b));


Add_half AH2(.sum(sum), .c_out(w3), .a(c_in), .b(w1));
or carry_bit(c_out, w2, w3);
endmodule

37
dc
2018

e Can Mix Styles In Hierarchy!


module Add_half_bhv(c_out, sum, a, b);
output reg sum, c_out;
input a, b;
always @(a, b) begin
sum = a ^ b;
c_out = a & b;
end
endmodule

module Add_full_mix(c_out, sum, a, b, c_in) ;


output sum, c_out;
input a, b, c_in;
wire w1, w2, w3;
Add_half_bhv AH1(.sum(w1), .c_out(w2), .a(a), .b(b));
Add_half_bhv AH2(.sum(sum), .c_out(w3),.a(c_in), .b(w1));
assign c_out = w2 | w3;
endmodule

38
dc
2018

e Full Adder: RTL/Dataflow


module fa_rtl (A, B, CI, S, CO) ;

input A, B, CI ;
output S, CO ;

// use continuous assignments


assign S = A ^ B ^ CI;
assign C0 = (A & B) | (A & CI) | (B & CI);

endmodule

39
dc
2018

e Full Adder: Behavioral


• Circuit “reacts” to given events (for simulation)
• Actually list of signal changes that affect output

module fa_bhv (A, B, CI, S, CO) ;

input A, B, CI;
output S, CO;
reg S, CO; // explained in later lecture – “holds” values

// use procedural assignments


always@(A or B or CI)
begin
S = A ^ B ^ CI;
CO = (A & B) | (A & CI) | (B & CI);
end
endmodule

40
dc
2018

e Parallel Adder
• Uses 1 full adder per bit of the numbers
• The carry is propagated from one stage to the next
most significant stage
– takes some time to work because of the carry propagation delay
which is n times the propagation delay of one stage.

41
dc
2018

e Complete Parallel Adder With Registers


• Register notation – to indicate the contents of a register
we use brackets:
[A]=1011 is the same as A3=1, A2=0, A1=1, A0=1
• A transfer of data to or from a register is indicated with
an arrow
– [B]→[A] means the contents of register B have been
transferred to register A.
• Eg.: 1001 + 0101 using the parallel adder:
– t1 : A CLR pulse is applied
– t2 : 1001 from mem-> B
– t3 : 1001 + 0000 -> A
– t4 : 0101 from mem-> B
– t5 : The sum outputs -> A
– The sum of the two numbers is now present in the accumulator.

42
dc
2018

e Complete Parallel Adder With Registers

43
dc
2018

e Carry Propagation
• Parallel adder speed is limited by carry
propagation (also called carry ripple).
• Carry propagation results from having to wait
for the carry bits to “ripple” through the device.
• Additional bits will introduce more delay.
• Various techniques have been developed to
reduce the delay. The look-ahead carry
scheme is commonly used in high speed
devices.

44
dc
2018

e Design a carry look-ahead adder

45
dc
Integrated Circuit Parallel Adder
2018

e
• The most common parallel adder is a 4 bit device with 4
interconnected FAs and look-ahead Carry circuits.
• Parallel adders may be cascaded together as shown to
add larger numbers

46
dc Parallel adder used to add and subtract numbers
2018

e in 2’s-complement system.

47
dc 2’s Complement Addition using 1’s Complement
2018

e Operands

Parallel adder used to perform subtraction (A – B) using the


2’s-complement system. The bits of the subtrahend (B) are inverted
(1’s complement), and C0 = 1 to produce the 2’s complement

48
dc Parallel adder/subtractor using the
2018

e
2’s-complement system

ADD = 1, SUB = 0:
B register passes to adder
and Carry in = 0

ADD = 0, SUB = 1:
Complement of B register
passes to adder and Carry
in = 1

49
dc
2018

e ALU Integrated Circuits

• ALUs can perform


different arithmetic and
logic functions as
determined by a binary
code on the function
select inputs.
50
dc
2018 Two 74HC382 ALU chips connected as an
e
eight-bit adder

51

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy