If you're getting into this stuff a great resource I found is the ZipCPU Tutorial [0] by Dan Gisselquist. The tutorial covers both Verilog design and Formal Verification methods. It uses open source tools like Verilator and SymbiYosys so getting started is pretty easy.
I just want to share with people that in no uncertain terms Dan Gisselquist\ZipCPU is transphobic and many members of the Open FPGA community are not a fan of him.
I've really wanted to play with FPGAs but never really has good learning resources. This comment section is a gold mine! This is the kind of HN I like.
Can anyone point me toward good beginner dev boards? Doesn't have to be particularly powerful or anything, just cheap
Are you in the USA? I have a few Digilent Atlys [1] boards going to waste here. If you would like them I can send them your way. I don't have the power adapter, but it just needs 5v.
Definitely get something ICE that is compatible with the new open source tool chains. I recommend the Icebreaker[1], though you can get the Icestick for cheaper[2], it's not as good a deal.
The downside with the Terasic boards is the Intel tooling, it's pretty terrible and has bad SystemVerilog support. Vivado (the Xilinx software that you'd use with the Arty A7) is superior in my experience.
For a beginner I'd recommend going for the more expensive boards from a well known manufacturer (such as Digilent). You should have an easier out of the box experience with getting some basic stuff running. Yes there are some very cheap boards out there especially from places like AliExpress but you want to concentrate on learning an HDL and doing some designs not hours trying to get a poorly supported driver or toolflow to work or struggling with programming the thing because it uses some custom method that isn't well documented and doesn't just work with the FPGA vendor tooling.
ICE40 board directly from the FGPA manufacturer. It's cheap has an open source toolchain and works without any additional hardware. Just plug it in and go.
Are there many startups using FPGA? In what industry is usage more common? I've had the desire to learn FPGA development for a while but don't much about the professional applications that I could use it for.
I wish there were a good tutorial about FPGA development using version control tools. It’s easy having Vivado project with couple source files, but totally uncool using block design. Especially with my own IP blocks.
I find vivado will often break my project (usually the axi bus config breaks, and I have not found any way to fix it). The best solution I have found is to use TCL to regenerate the project. You can generate a TCL script of your existing project. I have not tried it, but you might be able to use normal version control tools like git with the TCL script - the usefulness will depend on if things stay in the same order after an update.
I have tried both versioning the entire "raw" block design files and it is a mess. Vivado creates a ton of files and it's not clear which ones you need in version control in order to regenerate the BD from a fresh clone, and many of the files that you do need get modified anytime the block design is used to build the design which causes git to report file modifications. All in all, I don't recommend it.
However, managing a Tcl script is very doable, and this is my preferred method now. This has some drawbacks too of course -- you have to ensure that you use the same arguments to the `create_bd_tcl` command every time you update your script, and if you need to make any modifications to the script then you need to have a process for doing that. But it's much better than the alternative.
My advice would be to use a tcl build script in non-project mode, check in your tcl script and verilog files and don't use block based design or 'IP' based design.
I've found the Xilinx tooling to be at least as good on linux as on Windows. The tools certainly have a fair share of quirks, but I recommend it based on Xilinx having a majority market share. So if you want to learn a saleable skill, it is a good place to start. As for the boards the pynq is really good value for money with a lot of support.
pynq is a good starting board. What's really good is the software environment connected to the fpga logic via Python ecosystem. There are lots of examples via Jupyter notebooks.
[0]: https://zipcpu.com/tutorial/