Digital Logic Design
Digital Logic Design
Lecture 18
Announcements
• HW 6 up on webpage, due on Thursday, 11/6
Agenda
• MSI Components
– Binary Adders and Subtracters (5.1, 5.1.1)
– Carry Lookahead Adders (5.1.2, 5.1.3)
– Decimal Adders (5.2)
– Comparators (5.3)
Scale of Integration
• Scale of Integration = Complexity of the Chip
– SSI: small-scale integrated circuits, 1-10 gates
– MSI: medium-scale IC, 10-100 gates
– LSI: large scale IC, 100-1000 gates
– VLSI: very large-scale IC, 1000+ gates
– Today’s chip has millions of gates on it.
• MSI components: adder, subtracter,
comparator, decoder, encoder, multiplexer.
Scale of Integration
• LSI technology introduced highly generalized circuit
structures known as programmable logic devices
(PLDs).
– Can consist of an array of and-gates and an array of or-
gates. Must be modified for a specific application.
– Modification involves specifying the connections using a
hardware procedure. Procedure is known as
programming.
• Three types of programmable logic devices:
– Programmable read-only memory (PROM)
– Programmable logic array (PLA)
– Programmable array logic (PAL)
MSI Components
Binary Full Adder
𝒙𝒊 𝒚𝒊 𝒄𝒊 𝒄𝒊+𝟏 𝒔𝒊
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Finding a Simplified Circuit
0 1 0 1 0 0 1 0
1 0 1 0 0 1 1 1
𝑐𝑖
𝑐𝑖+1
What about many bits?
• Consider addition of two binary numbers,
each consisting of 𝑛 bits.
• Direct approach: Write a truth table with 22𝑛
rows corresponding to all the combinations of
values and specifying the values of the sum
bits. Then find a minimal combinational
network.
• This will be intractable.
Parallel (ripple) Binary Adder
𝑥3 𝑦3 𝑥2 𝑦2 𝑥1 𝑦1 𝑥0 𝑦0 𝑐𝑖𝑛
𝑐3 𝑐2 𝑐1
𝑐3 𝑐2 𝑐1
𝑐𝑜𝑢𝑡 𝑠3 𝑠2 𝑠1 𝑠0
𝒙𝒊 𝒚𝒊 𝒃𝒊 𝒃𝒊+𝟏 𝒅𝒊
0 0 0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Binary Subtracters
Compute: 𝑥𝑖 − 𝑦𝑖 .
𝑏𝑖 is a borrow-in bit from previous bit-order position.
𝑏𝑖+1 is a borrow-out bit.
𝒙𝒊 𝒚𝒊 𝒃𝒊 𝒃𝒊+𝟏 𝒅𝒊
0 0 0 0 0
0 0 1 1 1
1
0 1 0 10
0 1 1 -0
1 0 0
1 0 1
1 1 0
1 1 1
Binary Subtracters
Compute: 𝑥𝑖 − 𝑦𝑖 .
𝑏𝑖 is a borrow-in bit from previous bit-order position.
𝑏𝑖+1 is a borrow-out bit.
𝒙𝒊 𝒚𝒊 𝒃𝒊 𝒃𝒊+𝟏 𝒅𝒊
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1 10
0 1 1 -1
1 0 0
1 0 1
1 1 0
1 1 1
Binary Subtracters
Compute: 𝑥𝑖 − 𝑦𝑖 .
𝑏𝑖 is a borrow-in bit from previous bit-order position.
𝑏𝑖+1 is a borrow-out bit.
𝒙𝒊 𝒚𝒊 𝒃𝒊 𝒃𝒊+𝟏 𝒅𝒊
0 0 0 0 0
0 0 1 1 1
1
0 1 0 1 1 10
0 1 1 1 0 -1
1 0 0
1 0 1
1 1 0
1 1 1
Binary Subtracters
Compute: 𝑥𝑖 − 𝑦𝑖 .
𝑏𝑖 is a borrow-in bit from previous bit-order position.
𝑏𝑖+1 is a borrow-out bit.
𝒙𝒊 𝒚𝒊 𝒃𝒊 𝒃𝒊+𝟏 𝒅𝒊
0 0 0 0 0
0 0 1 1 1
1
0 1 0 1 1
0 1 1 1 0
1 0 0 0 1
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1
Finding a Simplified Circuit
𝑑𝑖 = 𝑏𝑖 ⊕ 𝑥𝑖 ⊕ 𝑦𝑖 (Same as sum in adder)
𝑏𝑖+1 = 𝑥𝑖 𝑦𝑖 + 𝑥𝑖 𝑏𝑖 + 𝑦𝑖 𝑏𝑖
𝑥3 𝑦3 𝑥2 𝑦2 𝑥1 𝑦1 𝑥0 𝑦0
𝑏0
𝑏4
𝑑3 𝑑2 𝑑1 𝑑0
A better approach using 2’s
complement
𝑦3 𝑦2 𝑦1 𝑦0
𝑥3 𝑥2 𝑥1 𝑥0 𝑐𝑖𝑛 = 1
𝑐3 𝑐2 𝑐1
𝑐3 𝑐2 𝑐1
𝑐𝑜𝑢𝑡 𝑠3 𝑠2 𝑠1 𝑠0
Parallel Adder/Subtracter
𝑦3 𝑦2 𝑦1 𝑦0
𝑥3 𝑥2 𝑥1 𝑥0
Carry Lookahead Adder
• Ripple effect:
– If a carry is generated in the least-significant-bit
the carry must propagate through all the
remaining stages.
– Assuming two-levels of logic are need to
propogate the carry through each of the next
higher-order stages. Delay is 2n.
• Must speed up propagation of the carries.
Adders designed with this consideration in
mind are called high-speed adders.
Carry Lookahead Adder
• Consider 𝑐𝑖+1 = 𝑥𝑖 𝑦𝑖 + 𝑥𝑖 𝑐𝑖 + 𝑦𝑖 𝑐𝑖
= 𝑥𝑖 𝑦𝑖 + 𝑥𝑖 + 𝑦𝑖 𝑐𝑖
• The first term 𝑥𝑖 𝑦𝑖 is called the carry-generate
function since it corresponds to the formation of
a carry at the i-th stage.
• The second term 𝑥𝑖 + 𝑦𝑖 𝑐𝑖 corresponds to a
previously generated carry 𝑐𝑖 that must
propagate past the i-th stage to the next stage.
• The 𝑥𝑖 + 𝑦𝑖 part of this term is called the carry-
propagate function.
• Carry-generate function will be denoted by 𝑔𝑖 ,
carry-propagate function will be denoted by 𝑝𝑖 .
Carry Lookahead Adder
𝑔𝑖 = 𝑥𝑖 𝑦𝑖
𝑝𝑖 = 𝑥𝑖 + 𝑦𝑖
𝑐𝑖+1 = 𝑔𝑖 + 𝑝𝑖 𝑐𝑖
Using this general result, the output carry at
each of the stages can be written in terms of the
𝑔’s, 𝑝’s and initial input carry 𝑐0 .
Carry Lookahead Adder
𝑐1 = 𝑔0 + 𝑝0 𝑐0
𝑐2 = 𝑔1 + 𝑝1 𝑐1
= 𝑔1 + 𝑝1 𝑔0 + 𝑝0 𝑐0
= 𝑔1 + 𝑝1 𝑔0 + 𝑝1 𝑝0 𝑐0
𝑐3 = 𝑔2 + 𝑝2 𝑐2
= 𝑔2 + 𝑝2 (𝑔1 + 𝑝1 𝑔0 + 𝑝1 𝑝0 𝑐0 )
= 𝑔2 + 𝑝2 𝑔1 + 𝑝2 𝑝1 𝑔0 + 𝑝2 𝑝1 𝑝0 𝑐0
𝑐𝑖+1
= 𝑔𝑖 + 𝑝𝑖 𝑔𝑖−1 + 𝑝𝑖 𝑝𝑖−1 𝑔𝑖−2 + ⋯ + 𝑝𝑖 𝑝𝑖−1 ⋯ 𝑝1 𝑔0
+ 𝑝𝑖 𝑝𝑖−1 ⋯ 𝑝0 𝑐0
Why is this a good idea? Do we save on computation?
Carry Lookahead Adder
Carry Lookahead Adder
Carry Lookahead Adder
• What is the delay?
– One level of logic to form g’s, p’s
– Two levels of logic to propagate through the carry
lookahead
– One level of logic to have the carry effect a sum
output.
– Total: 4 units of time.
Large High-Speed Adders
• The carry lookahead network can very large as
the number of bits increases.
• Approach: Divide bits of the operands into
blocks, use carry lookahead adders for each
block. Cascade the adders for the blocks.
• Ripple carries occur between the cascaded
adders.
Another Approach to Large High-
Speed Adders
• Carry lookahead generators that generate the
carry of an entire block.
• Assume 4-bit blocks.
• For each block, 4-bit carry lookahead
generator outputs:
𝐺 = 𝑔3 + 𝑝3 𝑔2 + 𝑝3 𝑝2 𝑔1 + 𝑝3 𝑝2 𝑝1 𝑔0
𝑃 = 𝑝3 𝑝2 𝑝1 𝑝0
Carry Lookahead Generator
Large High-Speed Adders
Decimal Adders
8421 weighted coding scheme or BCD Code
Decimal Digit BCD
0 0000
1 0001
2 0010 Forbidden codes: 1010,
3 0011 1011, 1100, 1101, 1110,
1111
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
Decimal Adder
• Inputs: 𝐴3 𝐴2 𝐴1 𝐴0 , 𝐵3 𝐵2 𝐵1 𝐵0 , 𝐶𝑖𝑛 from
previous decade.
• Output: 𝐶𝑜𝑢𝑡 (carry to next decade),
𝑍3 𝑍2 𝑍1 𝑍0 .
• Idea: Perform regular binary addition and
then apply a corrective procedure.