Implementing a 4 bit nano processor
As part of the CS1050 - Computer Organization and Digital Design module, This project involves designing and developing a 4-bit processor capable of executing four specific instructions. By completing this project, able to implement:
- Design and develop a 4-bit arithmetic unit that can add and subtract signed integers.
- Decode instructions to activate necessary components on the processor.
- Design and develop k-way b-bit multiplexers or tri-state busses.
- Verify the functionality of the processor through simulation and implementation on a development board.
- 4-bit Add/Subtract Unit
- This unit should be capable of adding and subtracting numbers represented using 2’s complement.
- 3-bit Adder
- This unit is used to increment the Program Counter.
- 3-bit Program Counter (PC)
- The Program Counter needs to be reset to 0 when required. Build it using D Flip-Flops with a clear/reset input.
- k-way b-bit Multiplexers
- A k-way b-bit multiplexer can take in k inputs, each with b bits, rather than a single bit. The output is a group of b bits. There are log2 k control bits, and these control bits are used to select one of the k groups of b bits rather than a single bit.
- Register Bank
- Contains 8, 4-bit registers (named R0 to R7).
- Hardcode value of R0 to all 0s.
- Program ROM
- This stores our Assembly program.
- Buses
- Used 3, 4, and 12-bit buses to connect components. This had greatly simplified our design rather than running so many wires around. We used labels such as D(3 downto 0), I(11 downto 0), M(3 downto 0), and R(3 downto 0).
- Instruction Decoder
- The Instruction Decoder circuit is activating necessary components based on the instructions the user wish to execute
The following table contains the list of functions the shell should support alongside with a brief description of what they are supposed to do.
Block diagram of the nanoprocessor is given below
See Instructions For Practical Operations.txt
for ways to get started.
See 'Project Report.pdf'
WhatsApp.Video.2024-07-06.at.15.49.28.mp4
Contributions are always welcome!
This project is licensed under MIT license.
Give a ⭐️ if this project helped you! Example user programs for use.