Lab Project - ECE 421L
Michael Villalba,
11-10-2014
For
the project we will be building an 8-bit ALU, which will include the
following operations: ADDITION, OR,and SUBTRACTION, and AND gate.
For the first half of the project we will construct the schematic and symbol for the 8-bit ALU.
First thing to do is to build the 1-bit ALU schematic.
![Screen%20Shot%202014-11-09%20at%207.27.53%20PM.png](Screen%20Shot%202014-11-09%20at%207.27.53%20PM.png)
Using
the MUX's from lab 7 allows us to select the operation function
when S=1 it pulls A and S=0 it pulls B, giving us the functions (addition: F1=0 F2=0, or:F1=0
F2=1, subtraction: F1=1 F2=0, and:F1=1 F2=1). We are using 2's compliment for subtraction we we will look at the
greatest extra bit (Cout).
Here is the symbol for the 1-bit ALU
![Screen%20Shot%202014-11-09%20at%207.28.51%20PM.png](Screen%20Shot%202014-11-09%20at%207.28.51%20PM.png)
Simulation of the 1-bit ALU: Testing all combinations of A and B.
![1bit_ALU_schm.png](1bit_ALU_schm.png)
For all operations except ADD we ignore cout and we ignore cin=1 except subtraction.
![1bit_ALU_plot2.png](1bit_ALU_plot2.png)
Ex1: A=1 B=1
Add: F1=0, F2=0 we see Cout=1 and Z=0 (1+1=10).
Or: F1=0, F2=1 we get Z=1 while ignoring cin and cout.
Subtraction:
F1=1, F2=0 we get Cin is the same as F1 so Cin=1, then we get Cout=1
and Z=0 (1-1=00), Cout=1 which is the extra bit. (from 2's compliment).
And: F1=1, F2=1 we get Z=0 ignoring cin and cout.
Ex2: A=0 B=1
Add: F1=0, F2=0 we get Z=1 and Cout=0
Or: F1=0, F2=1 we get Z=1 while ignoring cin and cout.
Subtraction: F1=1, F2=0 we get Cin is the same as F1 so Cin=1, then we
get Cout=0 and Z=1 (from 2's
compliment).
And: F1=1, F2=1 we get Z=0 ignoring cin and cout.
After every combination it appears that our ALU is working.
Now we have to convert the 1-bit ALU to an 8-bit ALU using the methods from lab 7:
![8bit_ALU_schm.png](8bit_ALU_schm.png)
Now we have to simulate the 8-bit ALU:
![sim_8bit_schm.png](sim_8bit_schm.png)
![sim_8bit_plot.png](sim_8bit_plot.png)
when A=10000101 and B=10000001
Add: F1=0 F2=0, Z=000100110, cout=1 which makes it 9 bits (correct)
Or: F1=0 F2=1 is Z=10000101
subtraction:F1=1 F2=0 Z=00000100
And: F1=1 F2=1 Z=10000001
which is correct.
Since the 8-bit ALU is working this concludes the first portion of the project.
PART 2 OF LAB:
For
this portion of the lab we will be constructing the layout of the of
the 1bit-ALU which will then lead to creating the layout for the
8bit-ALU.
Here is the layout of the 1bit-ALU:
![ALU_layout.png](ALU_layout.png)
Now here is the LVS of the layout to make sure it is working:
![ALU_LVS.png](ALU_LVS.png)
Just to be sure we have to check the output file of the LVS:
![ALU_output.png](ALU_output.png)
AND IT IS A MATCH. Now we can proceed to the 8bit-ALU.
Here is the layout of the 8bit-ALU:
![8ALU_layout.png](8ALU_layout.png)
Now to LVS the 8bit-ALU:
![8ALU_LVS.png](8ALU_LVS.png)
Again we need to be sure that it is a net-list match so we have to take a look at the output file
![8ALU_output.png](8ALU_output.png)
YAAAAYYYY!!!! IT IS A MATCH. =)
This now concludes the project for the lab.
My file for the lab can be downloaded here: proj_mv
Here is me backing up my work.
![backup.png](backup.png)
Return to Michael's labs