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, creo que la mejor manera de aprender cualquier HDL es aprender a pensar en hardware y describir el hardware (es por eso que se llama un lenguaje de descripción de hardware).
Hasta ahora, rara vez he visto libros que le muestren cómo su HDL se traduce en hardware. Leí uno cuando estaba en Synopsys (páginas llenas de código y esquemas) pero era una publicación interna. Sin embargo, incluso si no tiene este libro, aún puede ver cómo su código se convierte en hardware ejecutándolo a través de síntesis en software libre.
La razón por la que deseo enfatizar esto es porque hay muchas formas de resolver un problema. Solo podrá escribir código que lo resuelva de manera eficiente, desde el recuento de compuertas y el punto de referencia de tiempo, si comprende cómo se traduce al hardware subyacente.
¡Buena suerte!