PART 1
In
the final project, we are going to take a lot of the elements we
created in earlier labs and put them together in an 8-bit ALU
(Arithmetic Logic Unit). This unit will be ble to do the following
functions: A+B, A-B, OR, AND. By using the two selector bits (F0, F1)
we can tell the ALU which process to perform. The first thing we need
to do is make a schematic for the 8-bit ALU. It will take 2 8-bit
numbers (A,B) and perform operations on those numbers. The AND
operation and OR operation are simple. We can just put both inputs in
to the 8-bit AND and OR gates we made earlier. We can then run them
into a MUX and use one of the selector bits (F1) to decide which one is
output. The output of the first MUX will be run to one of the inputs of
another MUX that will toggle between the AND/OR operation and the
ADDITION/SUBTRACTION operation using the other selector bit (F0). For
addition and subtraction we are going to use the same 8-bit adder with
one of the inputs connected to the output of a MUX that will either
give us B or the complement of B. For SUBTRACTION we are going to add
the 2's complement of B which will give us the right answer. To get the
2's complement we will first take the complement by sending B through
an inverter and using a MUX to send that inverted signal to the input
of the adder. We will then use the Carry In to add 1 to the complement
and make it the 2's complement. For ADDITION we will simply send A and
B through the 8-bit adder we made previously.
Now that we have the schematic we can create a symbol for the 8-bit ALU.
Finally
we need to test the ALU to make sure everything works properly. Here is
the schematic for the test circuit. For the selector inputs (F0,F1) the
voltages have been declared as variables that we will set in the ADE
for the different scenarios. Also, the 8-bit numbers for A and B are as
follows:
A="01011111"
B="00001001"
ADDITION By setting F0 and F1 both to "0" we can perform the ADDITION action. A (01011111)
95 +B (00001001)
9 should give us Z(01101000)
104 and you can see that is exactly what we get.
SUBTRACTION By setting F0 to "0" and F1 to "1" we can perform the SUBTRACTION action. A (01011111)
95 - B (00001001)
9 should give us Z(01010110)
86 and you can see that is exactly what we get.
OR By setting F0 to "1" and F1 to "0" we can perform the OR action. A (01011111)
OR B (00001001)
should give us Z(01011111)
and you can see that is exactly what we get.
AND By setting F0 to "1" and F1 to "1" we can perform the AND action. A (01011111)
AND B (00001001)
should give us Z(00001001)
and you can see that is exactly what we get.
This
concludes part 1 of the final project. As always, I zip up my lab
directory and webpage files then backup my files on Google Drive.
Part 2
For
the second part of the project we need to make a layout for the 8-bit
ALU. The easist way is to make layouts for each individual 8-bit piece
and as long as they all pass the LVS test then we can connect them
together in the 8-bit ALU layout. As we saw in the first part of the
project, the parts needed are: AND, OR, ADDER, INVERTER, and several
MUX's. Here are the layouts for each individual piece.
8-bit AND
8-bit OR
8-bit ADDER
8-bit INVERTER
8-bit MUX
Now that all these individual pieces are correct on their own, we can start creating the layout for the ALU.
8-bit ALU
Here is the layout with the individual parts labeled.
Now we need to make sure it matches the schematic with a LVS check.
This concludes the final project. As always, I zip up my lab
directory and webpage files then backup my files on Google Drive.
Here is a copy of the directory I used in this lab.
Return to 421L Homepage