I taught myself and now design FPGAs for a living as well. Had 1 class in college that, like your experience, was totally opaque. But it sparked my curiosity.
Not sure I can advise exactly _how_; I'm usually strong at self learning. Just letting you know it's possible. Personally I'd start with IntelFPGA (formerly Altera) products; I found them easier to use.
Personally I taught myself with the aid of an Altera DE2 board (I had a professor at university who was kind enough to lend me one of the class ones on an extended loan).
They provide a good plug and play solution. Program over USB, software available free from Altera (Ages ago Mentor used to do a free version of ModelSim in conjunction with Altera, something similar is probably still around).
You can also just grab Icarus Verilog (http://iverilog.icarus.com/) it's an open source verilog simulator. Will allow you to get to grips with verilog without needing the hardware. The main problem is you may start building designs that simply cannot be built in hardware (plenty of ways to build stupid circuits in verilog).
There are few resources on the internet (comparing to what's available for learning programming). Maybe try 'Digital Design and Computer Architecture' by David Money Harris & Sarah L. Harris.
I wouldn't recommend Icarus Verilog, it's not a very good simulator. You're much better off downloading either the free Altera/IntelFPGA copy of Modelsim or using the free version of Xilinx's Vivado.
The DE10 Nano is a great board though, huge FPGA that can hold big designs and the HPS gives you a lot of extra capabilities.
> I wouldn't recommend Icarus Verilog, it's not a very good simulator.
Haven't really used it much myself but fair enough :) I suspect many people on HN would be more comfortable with free opensource tools. Which is why I mention it.
The majority of the EDA world is proprietary software and huge licensing fees, free limited versions available for home/educational use if you're lucky. A bit of a culture shock for someone used to the software world!
Well, a couple of the people whom "The Steves" (inside joke: for a while it seemed like everybody who was committing code to Icarus Verilog was named Steve--I think there were 5 at one point) used to work with were on the Verilog committee itself. Both Cadence and Synopsys used to fail the validation suite that Icarus used to run.
And I, personally, was the person who reduced our Cadence Verilog licenses by 25% once I got Icarus Verilog up and running. At the time, the EDA vendors were dragging their feet on Linux versions because you had to buy significantly more licenses if you were stuck running it on Sun equipment.
Obviously, my info is highly dated. I haven't tracked Icarus Verilog in quite a while, but code doesn't magically get worse as long as it is being actively maintained. And the original writer/maintainer (Steven Williams) is a solid developer and is still on board.
I was using free tools, so maybe that's was the issue, but I always found that trying to even approach abstraction would always totally explode my routing requirements. Is this the case with professional tools, or is abstraction avoided?
This helps a lot actually, thank you. I know what works for one may not work for another - but it's good to know that revisiting it as a hobby may not be a complete waste of time.
Not sure I can advise exactly _how_; I'm usually strong at self learning. Just letting you know it's possible. Personally I'd start with IntelFPGA (formerly Altera) products; I found them easier to use.