Inspiration

I like graphics programming and computer architecture, so I decided to build out a computer architecture that did graphical things.

What it does

You program in MIPS assembly, assemble it, and have it run on an fpga with a framebuffer that is memory mapped allowing you to write certain pixels in the program and display a picture.

How we built it

I used vhdl to design the architecture and the vga controller, tested it on modelsim whenever i ran into bugs, and used quartus to assign pins and flash it onto my fpga.

Challenges I ran into

The VGA timing was difficult, the image shifted to the left for a reason I wasn't able to find out. The program counter also only incremented one byte per cycle when it needed to increment 4 bytes, causing weird, unexplainable behavior until i looked at the instruction signal in modelsim.

Accomplishments that I'm proud of

I'm proud of getting VGA working, displaying an image, and having an image be generated by a program running on an architecture I implemented.

What I learned

I learned how to do VGA timing, make a framebuffer, I improved my understanding of memory mapped IO, and improved my understanding of MIPS. I also learned how to program in MIPS assembly better and learned more debugging methods.

What's next for mipmip

I plan to make the mips implementation cover more of the ISA, add pipelining, improve the framebuffer, and fix the VGA timing issue.

Built With

  • git
  • mars
  • modelsim
  • quartus
  • vhdl
Share this project:

Updates