top of page
Writer's picturerehsd

VHDL 8-Bit CPU (Ben Eater edition) Working!

Updated: Dec 7, 2021

As a continuation of FPGA VHDL Implementation of Ben Eater's 8-bit CPU - Progress Update, here's another update on my 8-bit CPU in VHDL project.


I have the core functionality working!

I can now add two numbers. I know... don't get too excited. :) But honestly, I'm pretty stoked to have gotten this all working. Here's a quick video showing my current FPGA implementation of Ben's 8-bit CPU (up through his CPU reset video).





While the code I have built so far is quite rough and will need some improvement, what I used in the video can be accessed on my GitHub; I added a new FPGA repository.


Next Steps

I plan to add the rest of the CPU instructions used in Ben's videos (e.g., subtract and jump). I also plan to clean up the code (e.g., consistency in formatting, code commenting, and performance improvement). If I get energetic, I might re-open a Windows interface I wrote for my breadboard 8-bit CPU and see if I can make it work with this FPGA solution; uploading RAM values would be handy.


Winforms application for breadboard 8-bit CPU
Winforms application for breadboard 8-bit CPU

As a reminder, I am very new to FPGA solution development. If you have suggestions on how to improve what I have built so far, please let me know!


Postscript

Here are some images of the FPGA implementation. Crazy...


PPS

I have added support for CPU instructions SUB, STA, LDI, and JMP. The following video demonstrates Ben's "add 3 and JMP" program from Adding more machine language instructions to the CPU.



Here is the current block design:

Updated Block Design
Updated Block Design

Code has been posted here. Next: implement JC and JZ instructions.


PPPS

I added support for the final instructions from Ben's video series: JC and JZ conditional jumps. The following video shows a program from Ben's Conditional jump instructions video.



Current Block Design
Current Block Design

Code has been posted here.


**In the last video, the flag bits were not being displayed correctly on the OLED display (but were being processed correctly). This has been fixed.


425 views0 comments

Kommentare


bottom of page