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/)
John Bintz 1a86c7f516 | ||
---|---|---|
Go_Board_Constraints.pcf | ||
Makefile | ||
README.md | ||
binary_to_7_segment.v | ||
count_and_toggle.v | ||
debounce_filter.v | ||
debounce_project_top.v | ||
demux_1_to_4.v | ||
fifo.v | ||
led_toggle.v | ||
lfsr_22.v | ||
pong.v | ||
pong_ball.v | ||
pong_paddle.v | ||
pong_runner.v | ||
ram.v | ||
simon.v | ||
simon_game.v | ||
sipo_shift_register_test.sv | ||
uart_rx.v | ||
uart_tx.v | ||
vga_add_porches_to_output.v | ||
vga_current_beam_position.v | ||
vga_pattern_generator.v | ||
vga_sync_pulse_generator.v | ||
vga_tester.v |
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