ECE 201 Lab - Design Project
ECE 201 Lab - Design Project 1
A 4x4 Combinational Multiplier
Objectives
To practice the combinational design process through the design
of a 4-bit multiplier.
Introduction
This lab will be unlike previous labs in two very significant ways. First,
we're going to design circuits that are too complex to fit on our
breadboard with the parts in the lab kit, so this lab will be done
entirely with the simulator. Second, though this lab writeup will
provide some insights into a possible design of a multiplier, no
circuit diagrams will be provided - you'll do the design yourself
(woohoo. OK, now this time with enthusiasm, this is what you're here for:
Woohoo!).
The circuit you will be designing is a 4-bit multiplier, i.e. a circuit
with two 4-bit numbers as inputs, and the 8-bit product of these two
numbers as the output.
A truth table for this circuit would have 8 inputs, 8 outputs, and 256
lines. You would need eight 8 variable K-maps to directly produce boolean
equations. So there's no way around it, we're going to have to think some
about this one. The following section describes the multiplication process
in detail, in terms of steps we've already figured out how to do. After
that, it's up to you.
Background
The first thing you need to know about multiplication is that the AND
operation will multiply two bits together. It works just like decimal
multiplication, 1*1=1, and 0*0=0*1=1*0=0. AND even has the same symbol as
decimal multiplication. So, if you need to multiply a number by a single
bit, you can just use a bunch of AND gates. Consider the example below:
Things get a little more complicated when your multiplier has more than one
bit. AND is a binary operation. We can only AND something with one bit at a
time. So, how do we multiply multi-bit numbers together? Well, one way to
devise the circuit is to do things the same way we do in our head: multiply
the number by a single bit of the second number, then add that result to the
one you get by multiplying by a second bit, and so on, as in the example
below:
| | | | 1 | 0 | 1 | 1 |
| X | | | | 1 | 1 | 0 | 1 |
| | | | 1 | 0 | 1 | 1 |
| | | 0 | 0 | 0 | 0 | |
| | 1 | 0 | 1 | 1 | | |
| + | 1 | 0 | 1 | 1 | | | |
| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
Note that we get an eight bit number from multiplying two four bit numbers.
In the general case, we can rewrite the problem symbolically below, where
Pij is the product (AND) of bit i of the multiplicand (top number)
with bit j of the multiplier, and Si is the sum of the column
of numbers above it.
That's pretty close to something we can build. We can multiply by single
numbers, and we can add numbers together. The only complication is the
adders we know how to build can only add two numbers at a time. In this case
we need to add whole columns of numbers, so we might want to create some
partial sums to make use of the adders we have. A possible way to do this is
shown below:
where Sij represents the jth output of the ith adder. Note that at
each stage you need a 4-bit adder (which would have five outputs), and keep
in mind that you have already built four bit adder macros in an earlier lab.
Procedure
Design it, simulate it, turn it in.
Bring an electronic copy of your
design to lab with you, and be prepared to demonstrate the operation of
your functional multiplier (Add appropriate switches and lights so
you can input two 4-bit numbers and see your 8-bit output). Make sure your work is your own!
Turn in a printout of your final schematic, plus printouts of any macros
you used in your designs as well. Also turn in a brief report describing
your circuit design. In your report, consider if and how well this circuit
design would scale up to multiplying bigger numbers. Also,
answer the following questions in your report:
- What would be the strengths and weaknesses of a large multiplier built
in this fashion?
- What would the propagation delay be for the circuit in your
simulation, assuming a 1 ns delay for each gate?
A note for those who are interested
The multiplier you just
built is pretty close to the kind used in high-end arithmetic circuits, a
kind od multiplier known as an array multiplier. Real array
multiplier pass the carry through the adders to the last one, rather than
using ripple or look ahead adders to add the partial sums. A special
look ahead adder is designed for the last stage to speed the whole thing
up. Multipliers built in this way are about the highest performance
possible. However, many multipliers are not built in this fashion. A
typical chip will use a much smaller, slower, but more complicated
multiplier design based on registers (which you'll hear about in the next
couple of weeks).
File translated from
TEX
by
TTH,
version 2.86.
On 25 Mar 2001, 16:45.