Electronics > FPGA

Beginner questions.....

(1/6) > >>

Stupid Bear:
I'm looking to get started in FPGA and I'm looking for 3 things.
- reasonably priced Dev board
- Software
- Tutorials

Do I need to use the dev software provided by the manufacturer? What are the pros/cons of using 3rd party software?
Do I need to use the same software/hardware as the tutorials? Is this going to make it difficult for me to follow along? Like is there a big difference in coding/language/syntax between using a different board or software? Recommendations?
I've read about the many websites that offer tutorials both free and paid for but most use specific software of build it around certain chips.
Is there a downside to using an older board with older software since you can sometimes find them for cheaper?
Do I need all the extras (buttons, switches, LCD, etc) to get started? If I build or purchase accessory boards will that make my learning curve more difficult? (I have EE experience I can cook my own hardware). ex: There are $50 board that are just barebone with a single header strip - is it worth spending more as a beginner?

I realize this topic has been asked before and I read many of the suggestions but I don't know which combinations of things I need to to get started with least amount of butt hurt. Naturally I want to spend the least with the best possible learning curve and then spend more $ later on after I know more about what I'm doing.

Any advice or examples of how you got started would be appreciated.

I would suggest using the manufacturer software as most FPGAs aren't fully supported by 3rd party tools like yosys. the Lattice ICE40 line seems to have the best 3rd party support as well as some of the older Xilinx chips.

I found that getting started with FPGAs has a fairly large learning curve. Software version changes from older tutorials and various dev boards do things differently than present day. I recommend a manufacturer dev board starting off because you can guarantee it will work with their software. It can be a struggle getting things to work depending on your experience with computers and hardware. Not knowing where you sit I'm recommending the easy route.

Starting off I would recommend a Lattice ICE40UP dev board or another ICE40 dev board produced by Lattice. Their ICECUBE 2 software has alot of existing tutorials and examples out there. They also make a software package called Radiant which is newer but they've changed some of the syntax for inferring and instantiating various IP on the FPGA which has not permeated on the net as much as the ICECUBE examples have.

With a Lattice ICE40 board you can also try using the 3rd party tools as well. See how you like 3rd party workflow compared to the Lattice tools.

Switches, buttons, and LEDs are nice to start out with but you can add your own and they may get in the way once you progress.

The language between toolsets is fairly standard. Where you run into problems is how various modules are instantiated for using the hard IP in the FPGA. As noted above code written in ICECUBE won't necessarily work in Radiant which won't necessarily work in yosys. The general language syntax is the same between toolsets, whether you choose Verilog, VHDL, SystemVerilog, etc but you will find between tools and manufacturers their are vendor specific ways of doing certain things.

You can also download the tools and do alot of learning writing code and simulating it. I know, to a beginner, simulation sounds lame but, as someone who also thought simulation is lame, you kind of have to get used to the idea because FPGAs are usually more difficult to debug.

This brings me to my next n00b mistake that I am all too guilty of - buying the hardware before writing the code. How big of an FPGA and what features do you need for a given project? Much of that can be hard to know ahead of time until you've written code and allowed the tools to help determine how many LUTs, memory, DSPs, etc are going to be consumed by your code.

There are two paths I'd suggest for boards, one is the various Chinese FPGA dev boards which are (or were when I last looked) shockingly cheap. Usually these use older parts but so what? Unless you have a cutting edge project in mind older parts have advantages such as faster compiling. The other option is dev boards made primarily for the university market, Digilent makes a lot of these.

For all practical purposes you are locked into the vendor provide software, Quartus for Altera (Intel now) and ISE or Vivado for Xilinx. Lattice is the other major player but I've never played with their parts so I'll let someone else comment on it. Xilinx and Altera are broadly similar, I'd expect Lattice to be similar to those.

For programming them there are two main languages that are used, Verilog and VHDL. If you ask which one is best you'll get a religious war but suffice to say anything you can do with one you can also do with the other. Verilog resembles C which can be more a hindrance than help, a "false friend" as they'd say in reference to human languages where something looks familiar but is actually entirely different. Personally I prefer VHDL and found the free downloadable book "Free Range VHDL" to be one of the better resources. You can also check Udemy as there are several FPGA courses on there. My suggestion is try both languages and decide which one makes more sense to you, again the capabilities are identical, but they have a very different feel. Verilog looks like abbreviated gibberish to me while VHDL is strongly typed and verbose so I find it a lot easier to follow.

You can do some cool stuff on very primitive FPGA hardware. One of my favorite boards has been the EP2C5T144C8 boards that used to be widely available for only about $13. I recreated a handful of early arcade games using those boards, only a few resistors and some kind of buttons or switches are required to have a functional game. https://github.com/james10952001  The code should be reasonably portable to other boards.

If you value your time, get a dev board from either Terrasic or Digilent. They are well documented and well tested, and have a lot of material on the internet.

The software equivilent of using supercheap or oddball dev board would be the equivalent of saying "I want to learn C programming on an IBM AIX Workstation rather than installing Linux" - yep, you can, but you will be very much  on your own...

With a common dev board other people with the same board are then able to recreate your issues and/or offer accurate advice which can be invaluable.

The buttons, switches and 7-seg displays are helpful for getting started - e.g.  build a stopwatch would be a good 'stretch' project for a beginner.

If you do get a board and need a hand with the first few hurdles then DM me.

Like others wrote the basic languages to configure FPGA's are verilog and vhdl. I myself choose verilog because it resembles C, but the pitfall is sequential thinking used when programming in C, will give you problems when working with FPGA's. The logic here is far more parallel then sequential.

There are many boards with chips from different vendors to be found, and for most of them it indeed boils down to using the vendor tools. If it is cheap you prefer to start your learning, I can recommend Anlogic. For instance https://nl.aliexpress.com/item/1005001774923333.html is not expensive. You do need a programmer, but based on a STM32F103 bluepill with some additional hardware it comes cheap. https://github.com/pecostm32/Lichee_Nano/tree/main/Hardware/Anlogic_JTAG_Programmer

For information about the software check this thread. https://www.eevblog.com/forum/fpga/latest-version-of-anlogic-ide/

Unfortunately, at the moment the cheap boards with Altera/Intel or Xilinx/AMD FPGA's have gone up in price with a factor 2 or more, but are still good for lots of hours of learning and playing.

There are also a lot of boards with Gowin parts that can be interesting.


[0] Message Index

[#] Next page

There was an error while thanking
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod