Problem
While taking a digital designs class I became interested in designing my very own processor. Ultimately I decided on a 16-bit architecture.
Approach
I chose to design the processor and it's subcomponents in Neemann Digital as it's the digital design program I'm most familiar with. The design consists of a few main hierarchy levels. I chose to make the processor in "levels" as opposed to one giant circuit as it made debugging far more simple.
Design Hierarchy:
- Microprocessor
- Brainless Processor
- Arithmetic Logic Unit
- not-neg
- and-add
- Accumulator Register
- Program RAM
- Arithmetic Logic Unit
- Instruction Controller
- Instruction Register
- Step Register
- Microcode ROM
- Address Generator
- Program Counter
- Memory Address Generator
- Brainless Processor
Results
The processor works and basic programs can be performed. An instruction set can be found on the GitHub Repository, but it is fairly limited. Originally I intended to increase useability by adding registers and making a better ISA, but I think the project has lived its purpose. I learned a lot about how processors work and deigital design in general. The intention of this project was never to make a fully functional processor, only a proof of concept.