Beginner FPGA tutorials based on the MKR Vidor 4000

Hi!

I am a quite new Arduino maker enthusiast. I have no formal education or background in digital system design, but I work as a software developer and I have a background in audio engineering. I bought the Vidor without really knowing what to do with it, but I was intrigued by possibilities of audio and video DSP usage, along with any possible spinoff that might lead to.

I've been searching these forums and googling around to try to find an exhaustive resources on FPGA programming, VHDL and Verilog and general digital design, since these are completely new concepts to me. There are tons of resources for FPGA programming and digital system design, and of course I need to dive into that as well, I was just wondering wether or not someone know of a beginners approach to FPGA programming, which maybe also explains basic digital system design concepts, based on the Vidor4000.

Please let me know if you can direct me somewhere appropriate.

Welcome! :slight_smile:

I also have a software development background, and started FPGA development as a hobby about a year ago.

If you have not settled on a language, I would personally recommend Verilog or SystemVerilog (newer). The syntax is similar to C, whereas VHDL is similar to Ada.

There are not many resources for the Vidor 4000 as compared to the Terasic DE boards that many universities use to teach FPGA programming. It is best to get a general understanding before worrying too much about the board specifics.

If you are looking for textbooks, here are some my university used:

Let me know if I can be of any help.

Recommend to check sites nandland and fpga4fun

https://www.nandland.com/
https://www.fpga4fun.com/

There are some free courses form Intel
https://www.intel.com/content/www/us/en/programmable/support/training/catalog.html?courseType=Online

From there select curriculums: Fundamentals part 1, 2, FPGA Designer, and check interesting areas.

purisame:
Welcome! :slight_smile:

I also have a software development background, and started FPGA development as a hobby about a year ago.

If you have not settled on a language, I would personally recommend Verilog or SystemVerilog (newer). The syntax is similar to C, whereas VHDL is similar to Ada.

There are not many resources for the Vidor 4000 as compared to the Terasic DE boards that many universities use to teach FPGA programming. It is best to get a general understanding before worrying too much about the board specifics.

If you are looking for textbooks, here are some my university used:

Let me know if I can be of any help.

Thanks alot!

After doing a bit of read up on the subject, and regarding your comment on not focusing too much on the platform, whould you say that the Vidor platform is good for getting started with FPGA, or is it better to start with a Terasic DE board while getting into the concepts, and when I have a bit better knowledge in the subject I learn how to integrate with the Vidor FPGA. Or does the platform really not matter?

Limba:
Recommend to check sites nandland and fpga4fun

https://www.nandland.com/
https://www.fpga4fun.com/

There are some free courses form Intel
Intel FPGA Training - Intel® FPGA Technical Training Catalog

From there select curriculums: Fundamentals part 1, 2, FPGA Designer, and check interesting areas.

Thanks! I have seen the Nandland beginner videos and find them really informative. He is promoting another FPGA platform. I ask the same to you, do you think the Vidor is a good platform to start with, or would it be better to get some other "easier" platform to start learn Verilog or VHDL on?

I have been climbing the FPGA mountain for a while, and would make a few observations…
First, some help - check out Mike Field’s ‘hamster works’ stuff - and his excellent ‘eBook’ you can get from here:
https://github.com/hamsternz/IntroToSpartanFPGABook/blob/master/IntroToSpartanFPGABook.pdf

He talks a lot about the spartan 3, but I was using the info with spartan6 no problem.
Free range gadget factory also have a free ebook that’s a good start.

Look for as many sources as you can, and get a book or two (use Abe Books or another second hand site- new FPGA books are stupid expensive and often not very good for beginners. The ‘Make’ one is an example of, sadly, a rather poor book. Too much ‘isn’t this wonderful’ and not enough ‘do it like this…’ ) but if you can, check books out of a library first as there are definitely ‘good’ and bad’ books. (The ones that assume you have a tame tutor or professor on tap are really annoying if you don’t…)

I suspect that outside a one semester module in university / college FPGA work is niche, and so the books don’t sell that many - so they are expensive. Those that work in the industry tend to be dealing with the stuff that a CPU isn’t good enough for, (think about that for a moment…) and that attracts a premium on the information, so there’s no ‘maker’ sharing culture either (generally - there ARE some real good eggs out there, just not many!)

  • I would second the NandLand recommend too.

Language? Well… VHDL is more verbose, and VERY strict on type - but for my money is better to learn for HDL because it is NOT like anything you’ve done before. That strictness also keeps you out of trouble later on when you move from simulation to synthesis of actual hardware.

Verilog is more compact, but looks quite a lot like normal programming. But this ISNT programming, you are describing hardware, and that makes a world of difference. That said, either is good, and once you have mastered :wink: one, the other is readable… but don’t try and do both at once, that way lies madness :slight_smile:

To be honest, either is perfectly usable - but DO find an editor that sorts out the correct syntax highlighting and can highlight signal names through your document… (Kate, Notepad++, or similar)

Hardware? I use Xilinx (because that’s my target device on a pre-existing box when I have finished learning, rather than any other reason) and so use the Xilinx toolchain. Can’t comment on other stuff, but the tools are comprehensive if incomprehensible at first.
You do however need to start with a simple FPGA - don’t try to start with the modern SoC stuff (like Zynq) or you will be destroyed by the challenge… (lots of good info, but out of date - and that really hurts…)

And then the gotchas - first, no, the vidor isn’t a platform to use to start. First, because there’s no ‘easy’ toolchain to work directly with the FPGA, and second, because the FPGA on there is meant to act as a programmable peripheral to the Arduino (so if, for example you needed sixteen can busses and an HDMI connection…) So there’s a big jump of stuff you need to understand about how it is coupled to the CPU. Doable, but a jump.

So - Go find a basic board (Like the Nandland one!) that is supported by some basic handholding. Make sure it has basic LED / switch / other peripherals attached - because FPGAs have some odd drive and sink requirements, and it’s a lot easier at the start if, when you drive a port, the LED just works. Adding a breadboard or flaky wiring or damaged pin from an earlier fail will be deeply frustrating.

Also - there are two ‘flavours’ of any HDL - that used for simulation (and everything you do should be simulated to death before you commit to hardware. I started with 'finished - burn to chip!.. OH. Doesn’t work. Now what? Now I simulate everything over and over, and burning to chip is sort of an afterthought!)
and that used for synthesis (to actual gates).
They are not the same - there are things that are perfectly logical (pardon the pun) in a simulation, but have no meaning or are impossible in actual gates. Remembering which is which becomes easy, eventually…

All that said - working with HDLs and FPGAs is quite the most awesome thing you can do. It also offers some odd entertainments - getting excited over led <= switch working properly is a blast. (Disclaimer - maybe I’m getting old, but it has just taken me several weeks of lockdown to get this to behave on a Zynq board… but when you do…!!!)

Go and get a demo board of some kind, and start playing. It will be interesting, exciting and probably the most annoying and frustrating thing you can ever do as a maker. But when you are there, the rewards are huge. More I/O than you can ever imagine, epic speed if required, and complete control…

timwatson:
I have been climbing the FPGA mountain for a while, and would make a few observations..
First, some help - check out Mike Field's 'hamster works' stuff - and his excellent 'eBook' you can get from here:
IntroToSpartanFPGABook/IntroToSpartanFPGABook.pdf at master · hamsternz/IntroToSpartanFPGABook · GitHub
/.../

Fantastic reply! Thank you so much. After all these tips, I will definitely check into the Nandland toolchain and tutorials. And the Vidor 4000 I will save for curiosity for later.

/Jont Olof