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:
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 one, the other is readable… but don’t try and do both at once, that way lies madness
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…