Introduction
Statement of Purpose
The goal of my project is to design a simple CPU that can be synthesized to an FPGA and run programs. Through this process, I will learn about the design and structure of a CPU, logic design using Verilog HDL and simulation, and working with FPGA toolchains.
Background Research
I have been interested in CPU design in the past. I have watched much of Ben Eater's breadboard CPU series on YouTube, and completed NandGame.
I have been studying state machines and CPUs in my ECE 120 class.
I looked at several CPUs as inspiration for this project, including the Intel 8008, 8088/8086, Zilog Z80, and MOS 6502.
Design Details
Block Diagram
System Overview
An overview of the ISA I have designed for this proposal can be seen here. This is an important part of the proposal, and the most detailed.
The CPU will start executing at IP=0000h. If the memory is filled with zeroes, the CPU will execute the instruction `ADDU 0` repeatedly, acting as a no-op. The program would be placed somewhere in memory. When powered on, the CPU would very quickly begin executing it.
I will map the buttons, LEDs, and GPIO pins to I/O ports for basic communication with the processor using the `inb` and `outb` instructions. I will also be able to use a JTAG debug connection to monitor the CPU.
First, I will describe the CPU using behavioral Verilog, and verify it on a simulator. Then, I will translate the behavioural Verilog to RTL, synthesize it to the FPGA development board, and attempt to interface with it.
Parts
(1) ULX3S development board with Lattice ECP5 FPGA. Pre-ordered in early October. Should arrive by December.
Possible Challenges
- Learning to use the Verilog HDL may take a long time.
- I do not have much time left for this project because of my late start date. I may run out of time.
References
A. Jacobs, “6502 Introduction,” Obelisk, 2001. [Online]. Available: http://www.obelisk.me.uk/6502/. [Accessed: 06-Nov-2020].
B. Eater, “Build an 8-bit computer from scratch,” Ben Eater, 2016. [Online]. Available: https://eater.net/8bit/. [Accessed: 06-Nov-2020].