3 ms·
I'm just getting started on my hardware journey by working through the nand2tetris course. This has its own simplified hardware description language which works
by benrow 4y ago
I'm just getting started on my hardware journey by working through the nand2tetris course. This has its own simplified hardware description language which works in the simulator they provide.
Looking through the linked site, it's nice to see that the verilog snippets are very similar to the simplified HDL in nand2tetris - almost identical in how pins and parts are composed.
I'm looking forward to getting hold of an ice40 board as mentioned (with the SRAM). There's a project out there which implements nand2tetris on ice40, and these seem available at the moment for a reasonable price.
So now with this VGA project, that's two reasons to order that nice ice40 board :-)
- drivers99 4y agoI’ve done nand2tetris a couple times (taking good notes the second time) and coincidentally played through nandgame.com for the first time this weekend. I’ve been trying out what people have done with bare metal Forth on a raspberry pi using a frame buffer and using C libraries to get input from a USB keyboard. I don’t really like having such dependencies so I was just thinking I should get out my Arty FPGA with the same VGA module he uses and just make my own computer instead. It’s hard to find stuff that works how I want and is in stock and is actually understandable. This is definitely going to be my next project. It even uses Arty and the VGA module for it which I already happen to have (it only has a few bits for R, G, and B color though so it’s not perfect for images and gradients). There was example code[1] to use with it and it generates an image but I wasn’t sure how to make a frame buffer for it which this tutorial has! I recently reviewed graphics rendering techniques (Computer Graphics from Scratch from No Starch Press) so that fits too. This’ll be fun! [1] https://digilent.com/reference/learn/programmable-logic/tutorials/arty-pmod-vga-demo/start https://digilent.com/reference/learn/programmable-logic/tuto... (They have a different board with HDMI in and out and a framebuffer example to go with it: https://digilent.com/reference/learn/programmable-logic/tutorials/arty-z7-hdmi-demo/start https://digilent.com/reference/learn/programmable-logic/tuto... Also I just ran across someone who did HDMI output directly from the pins of yet another variety of Arty board https://domipheus.com/blog/hdmi-over-pmod-using-the-arty-spartan-7-fpga-board/ https://domipheus.com/blog/hdmi-over-pmod-using-the-arty-spa... On second thought, I’d rather stick with understandable VGA and hooking up a keyboard in a matrix… could use some other microcontroller and interface between the two with fewer pins, just not USB. Or PS/2 keyboard… Ben Eater has a tutorial as always)
- benrow 4y agoThis sounds very cool - it's interesting to hear what projects lie further down this trail. I was initially looking at the Arty board, as it was referenced by a text book - all the exercises were based on it. It's a bit more pricey than the ice40 (enough to force a comparison against other boards), but it certainly looks more capable.
- drivers99 4y agoThe icebreaker looks cool too, and small. I see they sell an HDMI output PMOD for it too. I wonder how that works (not that it's necessarily related to this VGA output example, anyway)
- duskwuff 4y agoThe HDMI PMOD is based around the TI TFP410 HDMI transmitter [1], or a compatible part from Silicon Labs. You feed it a VGA-style signal (parallel R/G/B signals, horizontal/vertical sync) with a pixel clock, and it generates an equivalent HDMI output. It's basically a drop-in replacement for most VGA designs. [1]: https://www.ti.com/product/TFP410 https://www.ti.com/product/TFP410