Hacker News new | past | comments | ask | show | jobs | submit login
FPGA Developer Tutorials (fpgatutorial.com)
159 points by Alekhine on Feb 25, 2021 | hide | past | favorite | 30 comments



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.

[0]: https://zipcpu.com/tutorial/


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.

[0]: https://twitter.com/whitequark/status/1333484002708254728 [1]: https://zipcpu.com/blog/2020/11/26/zipcpu-biz.html


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.

[1]: https://reference.digilentinc.com/reference/programmable-log...


i'm interested. how can one get in contact with you?


I'm waiting to hear back from jedimastert.


likewise, are these still available?


Sorry, no they are not.


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.

[1] https://www.crowdsupply.com/1bitsquared/icebreaker-fpga [2] https://www.digikey.com/en/products/detail/lattice-semicondu...


How cheap is cheap?

The Arty A7 is a good board: https://store.digilentinc.com/arty-a7-artix-7-fpga-developme... though costs $129

I do like the Terasic boards, the DE10 Nano is very capable: https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=... DE0 doesn't look too bad and also cheaper: https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=...

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.

On the cheaper end of the scale the Lattice ICE40 and EPC5 FPGAs are popular searching for ICE40 board gives you a number of options (here's one that looks reasonable: https://www.olimex.com/Products/FPGA/iCE40/iCE40HX1K-EVB/ope... and cheap at 16 euro). There's also good open source toolflow support with https://symbiflow.github.io/

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.


> The downside with the Terasic boards is the Intel tooling, it's pretty terrible and has bad SystemVerilog support.

If you don’t mind nMigen, it can target the DE-10 Nano. You still need to install Intel’s bloated Quartus suite however.

It also supports the ICE40 line.


This is probably what you want

http://www.latticesemi.com/Products/DevelopmentBoardsAndKits...

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.


There is a ton of cyclone iv boards on aliexpress


Check out the upduino v3. Its as cheap as they come and supported by a fully open source toolchain. I just got one a few weeks ago and it's excellent.


I’ve written an introduction to FPGA development with a couple of Xilinx-based boards:

https://projectf.io/posts/hello-arty-1/

It’s hands-on rather that theoretical.


This is a great resource, but maybe a bit slow-paced for some people.

For a more learning-by-doing-it tutorial, I highly recommend fpga4fun

https://www.fpga4fun.com/


I wanted to post the same link! Additionally, there is (or was, it's offline but we still have the archived site) the HamsterWorks wiki: https://web.archive.org/web/20191020150416/http://www.hamste...

Additionally, this guy completely made a CPU in VHDL. Later on in the series he adds HDMI support, implements the RISC-V ISA so that he can use GCC to compile programs for his CPU: http://labs.domipheus.com/blog/designing-a-cpu-in-vhdl-part-...


Take a look at this course based on harris and harris book: https://safari.ethz.ch/digitaltechnik/spring2020/doku.php?id...

It includes readings, video lectures, homeworks(including solutions) and labs


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.


This is pretty much what we settled on where I work as well after experiencing the problems you mentioned in your first paragraph.


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.


Does it make sense to use schematic designs outside of ide context? You dould export them to proper hdl and check that in


Any recommendations on boards that offer good support on linux for the synthesis tooling, etc?


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.


I'll have a look, thank you


Also found some great stuff at thedatabus.io




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: