Hacker News new | ask | show | jobs
by agg23 931 days ago
This is retrocomputing specific, but this Discord server (https://discord.gg/3wv3gMhp) has quite a few of the big devs in the FPGA gaming space, and they're more than willing to answer questions. They're what really got me going after I built my Pong core.

I have always been a big advocate of learning while doing, especially in software. Find something, preferably small, that you want to build (your Pong), and work on making it a reality. Maybe it's making Snake entirely in HDL. Maybe it's playing around with LiteX on your preferred development platform so you can build something cool with the RISC-V processor (I don't suggest this though, start with learning a normal HDL). Maybe it's simply looking through one of the existing retrocomputing cores, trying to figure out how stuff ticks.

Until you get to the CPU design level, the general concepts you'll encounter will be fairly simple. I think it's enough to just play around with blinking lights, learning how parallel synchronous logic works, relative to how we think of software working.

1 comments

Thank you very much. I do prefer to start with small. This way I made whole emulation of my first computer showing assembler commands as it executes each operation and it was able to run original ROM successfully. It was a pleasure to observe. Hopefully I can reproduce it in FPGA to make the circle complete ;)

My challenge is to play with CPU designs at some point but in the beginning I agree it is easier to start with something like led blink, nand , register and then to other staff.

Is there some FPGA hardware you can advice to use for easy start? One that potentially(once I learn) capable to do let’s say UART or USB ? I do not know really how much of FPGA power required for those. Or it would be too big/expensive ? I can’t orient myself with this yet but I wish something physical to have for real motivation to ignite.

It really all depends on what you want.

It may sound like shilling, but the Analogue Pocket is actually an excellent development platform because it's everything all in one; you don't need to figure out how to take input, load data, or output to HDMI, because that's all taken care of you automatically. Now you pay for that in having a $200-250 price tag, plus ~$50-70 for your JTAG adapter, but I think it's excellent for starting.

For OSS, I would probably recommend a Lattice FPGA. Gowin FPGAs are really, really cheap (Tang Nano 9k), and _partially_ support an OSS toolchain, but it's missing many core components, and I've actually found bugs in the hardware (confirmed by others), so probably stay away.

The DE-10 Nano is very capable, though fairly sought after at this point. It has a decent amount of IO, and can run the MiSTer retrocomputing project, which has the largest collection of OSS cores out there.

----

However, probably before you even buy any hardware, play with simulations. Choose your HDL (Verilog is US focused, VHDL is EU focused) and choose a simulator. For VHDL, you can use GHDL and GTKWave for an entirely OSS setup. For Verilog, I would recommend downloading the closed source Intel ModelSim, but you can also produce very fast, C++ controlled simulations using Verilator.

In any case, start simulating and looking at waveforms. Debugging multiple sets of nets at once is a very interesting experience and is at the core of what you're doing when working with FPGAs (verification is something like 80-90% of the time), so you can learn a lot without any hardware just working on that. If you use Verilator, you can have psuedo LEDs or even a display to draw on.

You gave very helpful and informative advice exactly what I’ve been looking for. I am very grateful to you and your efforts and hopefully others who wish to start with FPGA will find it as useful and perfectly guiding as I did. Thank you very much. You’ve made my day.