My reworking of the Verilog code for the Go Board from Nandland.com and Getting Started with FPGAs (https://github.com/nandland/getting-started-with-fpgas/)
Go to file
John Bintz 1a86c7f516 tweak readme 2024-07-06 14:52:30 -04:00
Go_Board_Constraints.pcf initial commit 2024-07-06 14:51:29 -04:00
Makefile initial commit 2024-07-06 14:51:29 -04:00
README.md tweak readme 2024-07-06 14:52:30 -04:00
binary_to_7_segment.v initial commit 2024-07-06 14:51:29 -04:00
count_and_toggle.v initial commit 2024-07-06 14:51:29 -04:00
debounce_filter.v initial commit 2024-07-06 14:51:29 -04:00
debounce_project_top.v initial commit 2024-07-06 14:51:29 -04:00
demux_1_to_4.v initial commit 2024-07-06 14:51:29 -04:00
fifo.v initial commit 2024-07-06 14:51:29 -04:00
led_toggle.v initial commit 2024-07-06 14:51:29 -04:00
lfsr_22.v initial commit 2024-07-06 14:51:29 -04:00
pong.v initial commit 2024-07-06 14:51:29 -04:00
pong_ball.v initial commit 2024-07-06 14:51:29 -04:00
pong_paddle.v initial commit 2024-07-06 14:51:29 -04:00
pong_runner.v initial commit 2024-07-06 14:51:29 -04:00
ram.v initial commit 2024-07-06 14:51:29 -04:00
simon.v initial commit 2024-07-06 14:51:29 -04:00
simon_game.v initial commit 2024-07-06 14:51:29 -04:00
sipo_shift_register_test.sv initial commit 2024-07-06 14:51:29 -04:00
uart_rx.v initial commit 2024-07-06 14:51:29 -04:00
uart_tx.v initial commit 2024-07-06 14:51:29 -04:00
vga_add_porches_to_output.v initial commit 2024-07-06 14:51:29 -04:00
vga_current_beam_position.v initial commit 2024-07-06 14:51:29 -04:00
vga_pattern_generator.v initial commit 2024-07-06 14:51:29 -04:00
vga_sync_pulse_generator.v initial commit 2024-07-06 14:51:29 -04:00
vga_tester.v initial commit 2024-07-06 14:51:29 -04:00

README.md

Go Board code reworking

This code is a reworking of the code for the Go Board FPGA beginner's board.

The original code comes from two sources:

Where possible I tried to:

  • use more consistent variable and constant names
  • fix missing inferred wires (the Pong project had a lot of these)
  • avoid run-on lines of code
  • avoid one-liner conditional bodies, opting for begin...end blocks everywhere

All of these can be built with Yosys and tested with Icarus Verilog. The Makefile is one I've been dragging along across all projects. It can fire off both a build-and-install to the Go Board, as well as run the test suite and open up GTKWave so you can inspect the signals. You do not need Lattice iCECube2 or jump therough their licensing hoops, and you will have a hard time getting it to run on modern Linux anyway!

sipo_shift_register_test.sv shows how to create your own assert for Icarus Verilog, taken from an idea from here: https://stackoverflow.com/a/13906120

Have fun.

John