You will design and implement control unit for this alu using logisim
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:
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.
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: http://www.cburch.com/logisim/download.html
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.
Decrement
Comparison (with 3 outputs: one for equals, one for less than and one for greater than)
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.'
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.
logic bitwise AND
right logic shift
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')
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 your program.
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:
Category | Unacceptable (0-1) | Needs Improvement (2-3) | Acceptable (4-5) | Total Possible Points |
---|---|---|---|---|
Addition of 5 instructions to the ALU (x1) | No additional instructions are suggested and/or no choice justification | Less than 5 additional instructions are suggested and/or the justification is not clear or not correct | The project contains 5 additional instructions with clear and correct choice justification | 5 |
Build the 9 original instructions in Logisim (x4) | Not all 9 instructions are implemented in Logisim and/or there are major functional issues | All 9 instructions are implemented in Logisim with some minor functional issues | All 9 instructions are implemented in Logisim and functioning correctly | 20 |
Create the opcode table for the ALU (x1) | All or most of the instructions are missing from the opcode table | Some instructions are missing from the opcode table | The project contains a complete opcode table | 5 |
Decide the number of operands for the instructions (x1) | There is no choice of the number of operands and/or no justification | The justification for the number of operands is not clear and/or not correct | The project contains a correctly justified choice of the number of operands | 5 |
Build the instruction selection unit using a multiplexer (x2) | The instruction selection unit is missing or not functioning correctly | The instruction selection unit is built in Logisim with minor functional issues | the instruction selection unit is correctly built in Logisim with no functional issues | 10 |
Add the operand registers and if needed the flag register (x1) | Registers are not added and/or not connected to the circuit | N/A | Registers are added and correctly connected to the circuit | 5 |
Design and implement the control unit in Logisim (x2) | The control unit is not implemented in Logisim and/or has major issues | The control unit is implemented in Logisim with minor issues | The control unit is correctly implemented in Logisim | 10 |
Write a program that adds two operands (x2) | The program is missing or contains major errors | The program is written but contains minor errors | The program is correctly written with no errors | 10 |
Write a program that adds operands until the new value to be added is 0 (x2) | The program is missing or contains major errors | The program is written but contains minor errors | The program is correctly written with no errors | 10 |
Write a program that increments by 2 the content of a register 10 times (x2) | The program is missing or contains major errors | The program is written but contains minor errors | The program is correctly written with no errors | 10 |
Write a program that shifts the content of a register until the least significant bit is 0, with a way to stop shifting if the content of the register is 11111111 (x2) | The program is missing or contains major errors | The program is written but contains minor errors | The program is correctly written with no errors | 10 |
Before You Submit