fpga-virtual-graf icon indicating copy to clipboard operation
fpga-virtual-graf copied to clipboard

FPGA Virtual Graffiti

overview

videos and construction photos

Tools used

Top resource tips

Documentation

  • system overview diagram
  • Yosys can generate output graphs of the verilog with the show command.
  • schematic for mystorm
  • ICEfloorplan can be used to show how the design is laid out on the FPGA
  • All Verilog source and tests

Build notes

Synthesis

make

To program the mystorm board, first start a terminal listening on /dev/ttyUSBX at 115200 baud, and reset the board. Then type:

make prog

Tests

many test benches are in tests. They can be simulated and outputs viewed with gtkwave:

make debug-[name of verilog file]

eg

make debug-bresenham

Storing configuration on the board

Instructions here

SRAM video buffer

Using the SRAM on the back of the board for persistant graffitis. This caused 2 major issues:

Wiimote Camera

  • (breakout board)[https://github.com/mattvenn/kicad/tree/master/wiimote-fpga)
  • 25mhz supplied on clock pin
  • reset high to run
  • wiimote camera PCB was tested with branch wii-pcb

I2C reader / writer

fpga read

Started off with this youtube series:https://www.youtube.com/watch?v=rWzB5hZlqBA by Tom Briggs.

In Tom's design, the I2C clock is assigned to the state machine's !clk.

Writing and requesting data was easy, but reading the data was difficult to synchronize the clock. I then tried 2 different approaches:

  • separating the I2C clock and state machine clock to give more time for reading data (4 state machine clocks for 1 I2C clock)
  • generating the clock within the state machine itself.

Option 2 proved much easier to write. I also found this brief Q&A on reddit on the same topic

DVI output

based on Hamster's minimal DVI-D VHDL