In this project, you will design a simple 8-bit ALU.
Requirements:
The eight functions that you will implement are: add, subtract, and, or, shift left logical, less than, shift right logical, and shift right arithmetic. The ALU will perform a desired function on two 8-bit inputs (X and Y, where x0 is the lowest order bit for x, etc...) and output the result (RESULT). The function will be determined by the value of a control signal (S), as listed below. In addition to the 8 bits of output provided in RESULT, two additional outputs will be provided: unsigned overflow, and signed overflow. Unsigned overflow will have a high value iff the command was an add and unsigned overflow occurred. Signed overflow will have a high value iff the command was an add or a subtract, and signed overflow occured. (You need not worry about unsigned overflow for subtractions.)
Here's what occurs for each operation:
S Op Result
000 add X + Y (signal if either type of overflow occurs)
001 sub X - Y (signal if signed overflow occurs)
010 bitwise OR X | Y
011 bitwise AND X & Y
100 sll X << Y (but logically, don't sign extend!)
101 srl X >> Y (but logically, don't sign extend!)
110 sra X >> Y (but arithmetically, do sign extend!)
111 signed
less than
X < Y (return 1 if X < Y, otherwise 0)
Islamic University of Gaza Computer Architecture ECOM 3310
Faculty of Engineering Instructor: Dr.wesam ashour
Computer Department T.A: Eng. Mohammad A. El Hindi
T.A: Eng. Doaa KH. Abu Jabal
Not Allowed On This Project:
You may only use tools from the "Base" and "Gates" libraries in Logisim. Do not use any items from the Memory, Plexers, Arithmetic, or Legacy libraries. Any ALU pieces built using any of these illegal components will be given no credit.
Details & Hints
· You can download logisim for yourself as well as view more documentation at the logisim website: https://ozark.hendrix.edu/~burch/logisim/
· LABEL EVERYTHING!
· Please use subcircuits! They make it easier for you, they make it easier for us.
Give your subcircuits appropriate labels as well.
· Don't be afraid to build subcircuits that are multiple levels deep.
· PLEASE use multi-bit buses in logisim. We do not expect you to connect 8 separate wires everywhere. You will have to use splitters to get individual bits from the wire. This will make your work SO much easier.