Вы находитесь на странице: 1из 9

FACULTY OF ENGINEERING & TECHNOLOGY

ELECTRICAL AND COMPUTER ENGINEERING DEPARTMENT


ADVANCED DIGITAL DESIGN ENCS533
COURSE PROJECT

Dr. Abdallatif Abuissa

Project Report
Ahmad Zaid 1131767
Abdallatif Suliman 1131090
Mahmoud Abdelkareem 1130786

1
Abstract
This project is aimed at understanding simple logic gates, adders and other components
and then use these components to build the project, which is a multiplier. The project has two
stages; the first uses a normal ripple carry adder, while the second stage uses a carry look ahead
adder.

2
Table of Contents
Abstract.......................................................................................................................................................2
Objectives....................................................................................................................................................4
Theoretical review (Introduction)................................................................................................................4
Multiplication..........................................................................................................................................5
Binary Multiplication...............................................................................................................................6
Results.........................................................................................................................................................8
Challenges and Problems we faced.............................................................................................................8
Conclusions.................................................................................................................................................8
References...................................................................................................................................................9

3
Objectives
 Design basic and simple logic gates
 Design an adder (two ways of designing it)
 Use the previously designed components to design a multiplier
 Know the difference between a regular adder and a carry look ahead adder
 Test the efficiency of a given design

Theoretical review (Introduction)

The goal of the project was to build a simple design for a binary multiplier1. This multiplier X,
which is j bits, and Y, which is K bits, and multiplies them to get RES (which in return is j + k bits). The
design for the multiplier is shown below.

1
A binary multiplier is an electronic circuit used in digital electronics, such as a computer, to multiply two binary
numbers. It is built using binary adders.

4
The above figure shows that the output (RES) should be j+ k bits and the reason for that is the
biggest output for the program is when we multiply X =11 … … 1 and Y =11 … …1 . Which is the
process of multiplying the two biggest inputs possible.

Multiplication
To better understand the project, we need to understand the process of regular multiplication.
Multiplication can be considered or split into two operations, which are:

 Multiplication (after all it’s in the name)


 Addition

To some extent, multiplication can be looked at as repeated addition, have a look at the
following example for further details:

If we wish to multiply 22 with the number 43, which should give us 946, we could do this two
ways, the first we consider that it is repeated addition of the number 43 twenty-two times which gives
us 946. On the other hand, we could also do multiplication digit by digit (each digit of the multiplicand is
multiplied by all of the multiplier). Then after each process of multiplication, we shift the result of the
digit multiplication to the left and add a zero as LSB. Then continue on with the second digit and so on,
we end up with multiplication results for each digit of the multiplicand multiplied by the multiplier then
all we have to do is add all these results up to get the result 946!. The figure below shows the operation
done in detail.

5
As seen from the operation above, the addition process is the main operation done in
multiplication, this becomes clearer when doing binary multiplication.

Binary Multiplication
In this form of multiplication we use binary numbers, hence the name. This kind of
multiplication is much simpler than decimal multiplication, because when multiplying a digit of the
multiplicand by the multiplier (or the other way around) the result we get is either all zeros or the
multiplier itself (or the multiplicand2). The figure below shows the binary multiplication process through
an example, as we can see, the partial result is zero (0000) or the multiplicand (1011) then after each
digit is multiplied we shift to the left (logically) then add all the partial sums up together.

For this to be implemented using logic gates, we need many adders to add up all the partial sums. The
figure below illustrates this for 2-bit by 2-bit, as we can see every digit of the multiplicand multiplies
each digit of the multiplier.

2
It depends on which we consider the multiplier and which we consider the multiplicand, as both ways give the
same exact result.

6
This shows the diagram for a 4-bit by 3-bit
multiplier and gives us a reason for the result. If
we are multiplying j-bits by k-bits then the result
will be (j+k) bits max, for this process to work
using adders, we need ( j∗k )AND gates and we
need (j-1) k-bit adders.

Full Adder
This was one of the main parts of this project, as most of the project relayed on it. This was the
first stage of the project, which was to use a regular Full Adder, too add all the partial sums of the binary
digit multiplication. First, we made a half-adder and out of that half adder, we made a full-adder. Then
the next process was to make this full adder a generic number of bits full adder (n-bits). The photo
below shows the block diagram for a full adder. One of the problems this design has was the speed,
especially when calculating the carry. Here if wanted to calculate the partial sum for a certain
multiplication process, we had to wait on the result of the carry calculation (through logic gates) and so
on till we get the carries one by one to get the full result. This problem led us to using stage two, which
used a carry look-ahead adder.

7
Carry Look-ahead Adder
When using regular adders, we have a big problem which is the delay between the calculation
of each carry, this lead to incorrect results (temporarily) then we have to wait for each carry to be
calculated to get the next carry and so on, which takes time until we get the final correct result.

Results

Challenges and Problems we faced


Conclusions

8
References
- https://en.wikipedia.org/wiki/Adder_(electronics)
- https://en.wikipedia.org/wiki/Carry-lookahead_adder
- http://www.wikihow.com/images/0/03/Do-2-Digit-Multiplication-(for-Kids)-Step-5.jpg
- http://www.stoimen.com/blog/wp-content/uploads/2013/01/4.-Binary-Multiplication.png
- Digital Design Book

Вам также может понравиться