FPGA Doohickey
A Cyclone IV FPGA-powered interactive hardware toy using buttons and potentiometers as inputs, and an I2C OLED screen & LEDs as outputs, coded in SystemVerilog. This project is still a work in progress.
What it is
I always wanted to make a fun little hardware toy using an FPGA, so I designed this interactive doohickey that uses buttons and potentiometers as inputs, and an I2C OLED screen & LEDs as outputs. Coded in SystemVerilog, this project showcases my skills in digital design and embedded programming while providing an engaging experience intended for the kids at Exceed Robotics to play with while waiting for class.
Basic tech stack
- Altera CycloneIV EP4CE6E22C8N Dev Board
CH552G-based USB-Blaster 1 rev C Clone(Removed, click here for more info)- CPLD-based Altera USB Blaster v2
- Coded using SystemVerilog on Intel Quartus Prime Lite 15.1
- 0.96 inch I2C OLED Display Module 128X64 SSD1306 Driver Chip
- Various buttons, potentiometers, LEDs, resistors, and so on...
- Case designed in OnShape
Photos
About This Project
- Toy made for older and younger students: Younger students like the blinking lights and simple interactions, while older students can learn something about functions and their behaviour under different conditions.
- Reacts to user input: Responds immediately to user input, pseudo-randomly blinking lights and updating the OLED display.
- Cool project to showcase: hardware design and embedded programming concepts in a fun, interactive form with a purpose.
Project logs
Build notes, design decisions, and progress updates.
- Log 1: Project Conception & Ordering Parts - Initial Commit
- Log 2: This should be easy! - Installing Quartus 15.1 on my Manjaro system
- Log 3: "LOL Nope" -JTAG Programmer - I learn the downside of buying cheap knockoffs off AliExpress.
- Log 4: IT WORKS! -JTAG Programmer 2 - I learn the value of spending money.
- Log 5: Blinking LED - I make a simple LED blinker in SystemVerilog to confirm the board works.
- Log 6: On I2C - I start implementing I2C communication to my OLED display.
- Log 7: On I2C, Part 2 - I continue working on the I2C driver for the OLED display [Work In Progress].