When you get down to it, all you need to know is how to code various standard blocks. A MUX, counter, adder, flops, registers, register sets, dual port BlockRAM, and a Finite State Machine and you pretty much have it under control. Literally everything derives from the FSM because most digital systems retain some form of state. Otherwise, they would just be combinatorial logic which you also need to understand.
Then start writing!
Here's a free book that gets discussed from time to time:
http://freerangefactory.org/pdf/df344hdh4h8kjfh3500ft2/free_range_vhdl.pdfThere are other vendors besides Xilinx. Try to download the Lattice toolchain (IceCube2 and Diamond. See if you can license ModelSim. Maybe try Altera/Intel Quartus tools. See if you get different results. If you can download Lattice, well, somebody is making a mistake. Either Xilinx is too restrictive or Lattice is too liberal. It's really about interpretations.
FreeBSD (BSD Unix) could not be exported from the US because it contained a certain type of encryption. So, the development of FreeBSD is done in Canada where there is no restriction on export. Just an example of how goofy these things can get. There's no issue about importing FreeBSD into the US but it can't be exported.
The only way I learn this stuff is to have a project in mind. A goal I plan to achieve, perhaps a CPU or some other system. Just coding blocks of logic, in isolation, just isn't enough to keep my interest. Fortunately, such a project was in mind before I created my first blinking LED. I went from LED to implementing the T80 core (Z80) with CP/M by just hanging a Compact Flash drive on the core to creating a complete retro computer system in just that many steps. Crawl, walk, run! Dream up a sufficiently broad project and create it as a learning project.
Don't forget the free tutorials at VHDLwhiz.com and NandLand.com