Al aprender cualquier tipo de HDL (Verilog, VHDL ...) es importante tener en cuenta una cosa. No es programación de software y las cosas funcionan en paralelo. Dicho esto, me parece que la mejor manera de aprender cualquier HDL es aprender a pensar en hardware y describir el hardware (por eso se denomina lenguaje de descripción de hardware).
Hasta ahora, rara vez he visto libros que le muestran cómo su HDL se traduce en hardware. He leído uno cuando estaba en Synopsys (páginas llenas de código y esquemas) pero era una publicación interna. Sin embargo, incluso si carece de este libro, aún puede ver cómo su código se convierte en hardware ejecutándolo mediante síntesis en software libre.
La razón por la que deseo enfatizar esto es porque hay muchas maneras de resolver un problema. Solo podrá escribir código que lo resuelva de manera eficiente, desde el punto de vista de la puerta y el tiempo, si comprende cómo se traduce al hardware subyacente.
¡Buena suerte!