crap-o-scope scope implementation for icestick
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
BRAM_16.list
LICENSE
Makefile
README.md
adc.v
clockdiv.v
color_sq.v
debounce.v
encoder.v
fontROM.v
grid.v
grid_tb.v
gtk-grid.gtkw
gtk-numbers.gtkw
gtk-waveform.gtkw
icestick.pcf
image.v
number.v
numbers.txt
numbers.v
numbers_tb.v
scope.jpg
test_pattern.v
top.v
vga.v
vga_tb.v
waveform.v
waveform_tb.v

README.md

crap-o-scope

scope

I'm building a 6bit colour vga board for our FPGA work group. This started off as a test program but I got carried away and built a very poor scope instead.

uses 1092 of 1280 tiles on the ICE40H1k (IceStick) and 12 of 16 block rams.

spec

  • VGA display: 640 x 480 in glorious 6 bit colour!
  • 10bit ADC clocked from the VGA clock - results in 1.5MHz sample rate
  • 600 sample depth storage!
  • graphical display of trigger level
  • numerical display of sample level, number of triggers etc.

design overview

graphics modules split up into:

  • vga.v generator from my virtual graffiti project: https://github.com/mattvenn/fpga-virtual-graf
  • color_sq.v for drawing a 2 colour bar graph
  • grid.v for the reticule
  • numbers.v for the display of the 4 x 4 hex numbers
  • waveform.v for connecting the dots of the samples with lines

other:

  • adc.v for reading the ADC
  • debounce.v for debouncing the encoder
  • encoder.v for converting quadrature encoder to a count

useful modules from https://github.com/juanmard/screen-numbers

  • fontROM.v implements a BRAM that can be initialised from a list (used for the numbers and the sample storage)
  • image.v selects a pixel from the fontROM BRAM

thanks

License

Licensed under GPL-2.0.