ALU Design - ECE 421L Project

Authored by, Vincent Ibanez

Email: ibanez.troy.e@gmail.com

Today's date 11/9/2014

  


In this project we designed and simulated an 8-bit ALU that can perform: A AND B, A OR B, A + B (addition), and A - B (subtraction).
 
Details of the operation is listed below:
F0F1Operation
00A AND B
01A OR B
10A + B
11A - B

The top level
ALU symbol used for simulations have the following inputs (all bus connections): A (8-bits), B (8-bits),  F (2 bits), and Z (8-bits).
The components used in the design were derived from the Components Designed in Lab7.
The components used from lab 7 are listee below:
   
The schemtic was designed using Cadence Virtuoso Schematic Editor and shown below:
1.PNG

In this design, the 2to1 MUX before the output z determines whether the operation will be a logic (AND, OR) or arithmetic(+, -) operation. It is controlled by F0.
2.PNG
 
The 8-bit logic gates are hooked up to another MUX which simply selects wheter to pass AND or OR gate signals. This is controller by F1.
3.PNG
 
The arithmetic operations are simplified by using a Full Adder for both addition and subtraction operations. Note that a subtraction operation A - B is equivalent to A + (-B). The negative of a number obtained by taking its one's complement. This is implemented in the design by connecting B input into an 8-bit inverter and adding a 1 to the carry in whenever there is a subtraction operation. The MUX that B is connected to simply selects whether to add a +B or a -B.
4.PNG
   

Simulations
In order to check the simulations, I fed an input vector waveform file into the simulator based from this document. In this way, I can easily manipulate the signals A and B as well as the F signals.
The vector waveform file that I used was shown below:
5.PNG
 
The input data, with expected results are tabulated below:
Time(ns)F0F1OperationA0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7Z0Z1Z2Z3Z4Z5Z6Z7
000AND101010101111111110101010
1001OR101010100101010111111111
2010Addition110100100100001010110001
3011Subtraction100111011000011000011010
   
For the AND operation, the output should simply follow A since by is all 1's (pass through).
For the OR operation, we are ORing evenly placed 1's and oddly placed 1's, the output should be all 1's.
For the Addition operation, we are performing 75(0b1001011) + 66(0b1000010), the output should be 141(0b10001101).
For the subtraction operation, we are performing 185(0b10111001) - 97(0b1100001), the output should be 88(0b1011000).
 
The results can be verified from the simulation below. We have only displayed the output to make the graph easier to see.
6.PNG
From the results, we have verified that out simulations matches out expected output.


Layout
 
Most of the components in this projects were derived from Lab 7.

The AND gate
AND.png
 
8-bit AND gate layout
8AND.png

The OR gate
OR.png
 
8-bit OR gate layout
8OR.png
   
The Inverter
INV.png
   
8-bit Inverter
8INV.png
   
The 2to1 Multiplexer
MUX.png
   
8-bit 2to1 Multiplexer layout
Note: An inverter was used on the left side of the layout to provide the not(S) signal from the S input.
8MUX.png
   
The Full Adder layout
FA.png
   
8-bit Full Adder Layout
Note: The Carry out of stage N is connected to the Carry in of stage in N+1.
8FA.png
   
The FINAL layout
Note the following:

Overall.png

Overall layout passed all DRC and LVS checks.

Finally, we backed up our design projvi.zip directory and other files for future study.



Return to labs