# In this project, you will design and build a simple CPU on Logisim and write programs that can run on it. If you haven’t yet, you can download Logisim by following this link:

In this course, you began by learning the abstract concepts of Boolean logic and binary number
system and ended by using these concepts in order to implement advanced computer
architectures such as CPUs, memory systems and parallel computers.
Upon completion of this project, you will be able to:
• Design and develop a simple ALU as a part of a CPU
• Decide on the number of operands for the ALU and design its instruction set
• Design and construct the control unit of the CPU
• Write assembly language for the constructed CPU
Sources
This assignment covers material presented in the chapters Digital Logic Circuits and Instruction
Set Architecture. In addition to lessons in these chapters, you may refer to external sources as
well.
Any sources you use for this project, whether external or on Study.com, should be cited on a
reference page that follows APA format. If you are unsure about how to use the APA format to
• What is APA Formatting
• How to Format APA Citations
Prompt
In this project, you will design and build a simple CPU on Logisim and write programs that can run on it. If you haven’t yet, you can download Logisim by following this link:
Your design will go through four phases. In the first phase, you will design and build the ALU using Logisim. In the second phase, you will design the instruction set that implements the instructions you designed in phase one. In the third phase, you will design and implement a control unit for this ALU using Logisim. By connecting the CU to the ALU, you will get a functional CPU. In phase four of the project, you will write assembly language programs for the CPU you built.
Phase One
Start by building an 8-bit ALU using Logisim. This ALU can implement 16 instructions on 8-bit
operands. We would suggest the following minimum list of instructions:
• Increment
• Decrement
• Comparison (with 3 outputs: one for equals, one for less than and one for greater than)
• Logic bitwise Not
• Logic bitwise And
• Logic bitwise Or
• Register right logic shift
• Register left logic shift
In addition to these nine instructions, please suggest five more instructions that the ALU can
implement for a total of 14 instructions (we are reserving 2 instructions for branching). Justify
the importance of the five instructions you added in a Word doc to submitted as part of this
assignment. Label these instructions as ‘Phase One.’
After you’ve suggested and justified your five suggested instructions, please build at least the
nine above-mentioned operations as blocks in Logisim.
Phase Two
In phase two of the project, you are required to design the instruction set of the ALU/CPU as
follows:
• Create the opcode table for the ALU by giving a binary code and a name for each
instruction you built in Logisim in phase one.
• Decide how many operands you want your instructions to handle and justify your choice.
We suggest either one operand with accumulator or two operands with the result stored in
one of the input registers.
• In Logisim, add a multiplexer to the circuit you built in phase one that chooses one of the
available operations. The simplest way to create this part of the CPU is to connect the
outputs of the multiplexer to the inputs of AND arrays connected to the output of the
operation blocks.
Please record your answer to phase two in the same Word doc and label it ‘Phase Two.’
Phase Three
In phase three, you are required to use Logisim to implement the control unit for at least the
following three operations:
• logic bitwise AND
• right logic shift
In order to finish this phase, you need to add operand registers according to the decision you took
for the number of operands in phase two and, if needed, a flag register.
Please record your answer to phase three in the same Word doc and label it ‘Phase Three.’
Phase Four
In order to be able to write assembly language for the CPU we need to add to instructions
(without implementation):
• branch to an address (name it JMP)
• conditional branch to an address (name it CJMP and suppose that the jump takes place if
the comparison operation result is ‘equals’)
Now, write the following programs using the assembly language you designed in the previous
phases of the project as well as these two branching additional instructions:
• Write a program that adds two operands.
• Write a program that adds operands until the new value to be added is 0. You do not need
to implement the input operations to modify the contents of the registers. Just assume that
by the end of each iteration, the register content is modified.
• Write a program that increments by 2 the content of a register 10 times.
• Write a program that shifts the content of a register until the least significant bit is 0.
Think of a way to stop shifting if the content of the register is 11111111 and add it to
Please record your programs in the same Word doc and label them under the section
‘Phase Four.’
Your project will be graded based on the following rubric: SEE BELOW assignment must follow
rubric.
Before You Submit
When you complete your assignment, we suggest taking some time to check for any errors or to
add any finishing touches. We also suggest that you use online plagiarism checkers such as
PlagScan or DupliChecker to make sure that your assignment is not too similar to any existing
materials. Plagiarized submissions will NOT be graded.
your assignment as Logisim files for the CPU circuits and in Microsoft Word, PDF or Text
format for all other answers. After turning in your assignment, you may go ahead and take the
proctored final exam. You do not need to wait for your written response to be graded. You
If you are not satisfied with the score you receive on your assignment, you may revise or rewrite
it, and resubmit them for grading using the same submission form above. Keep in mind that the
you are free to retake the proctored final exam as well if you choose. Please see the course
syllabus for a more detailed breakdown of the grading policy.

Price (USD)
\$