Skip to content

Instantly share code, notes, and snippets.

@kpmcc
Last active May 9, 2023 02:37
Show Gist options
  • Save kpmcc/316db9b4a2928a3b3ecad45d78e48ad4 to your computer and use it in GitHub Desktop.
Save kpmcc/316db9b4a2928a3b3ecad45d78e48ad4 to your computer and use it in GitHub Desktop.

FPGA Resources

HDLs

These are the languages in which one writes code to describe hardware. I say this instead of calling them programming languages to try and emphasize the distinction between describing hardware and writing code that executes on hardware.

Oftentimes these languages have functionality both for describing hardware, and for simulating or verifying designs. At early stages of learning it is important to understand the intended uses for particular language features. It can be easy to do things that would make sense in software, and are viable for verification, but that do not translate to hardware.

Standard HDLs

AFAIK these are the two industry standard HDLs. I think SystemVerilog sees a bit more use stateside, while VHDL is a little more popular abroad? VHDL also has a fair amount of usage in military and defense I think?

Personally, I'm more familiar with SystemVerilog, and mostly older school Verilog (which has a reduced feature set).

Alternative HDLs

I have no experience with these so can't really recommend or advise against.

Simulators

These are what one uses to 'run' or test a design. Typically the design is instantiated within a separate testbench that handles providing stimulus to the inputs and monitors the outputs of the design.

  • Verilator - Enables interfacing with designs via C++ - very performant
  • Icarus Verilog - Simulator for verilog
  • GHDL - Simulator for VHDL

Useful learning resources

Websites

  • asic-world - SystemVerilog tutorial and examples
  • nandland - !!! Great resource. Language tutorials, videos, explanations of concepts. Looks like they even have an intro course.
  • HDLBits - Small exercises to practice code with solution checking, has an in browser simulator which is useful to try things out without worrying about setting up tools.
  • 8BitWorkshop - web-based IDE for 8-bit programming and Verilog development
  • ProjectF - FPGA Development blog and useful writeups and tutorials
  • FPGACpu - Lots of helpful small modules

Textbooks

  • Stuart Sutherland's Books are frequently recommended. I haven't spent much time with them but they seem solid.
  • I have one of Pong P. Chu's Books for VHDL and I like it. Used it more for reading about things not to do, and digital design stuff than any language specific things, but if VHDL is of interest it would probably be helpful.
  • Designing Video Game Hardware with Verilog

Discord

  • Digital Design HQ - Has a lot of useful resources and people with experience in all sorts of Digital Design / Comp Eng / Hardware related things. Is also a discord server, so standard caveats apply.

Tutorials

Dev Boards

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment