Ao aprender qualquer tipo de HDL (Verilog, VHDL ...), é importante ter uma coisa em mente. Não é programação de software e as coisas funcionam em paralelo. Dito isto, acho que a melhor maneira de aprender qualquer HDL é aprender a pensar em hardware e descrever o hardware (é por isso que é chamado de linguagem de descrição de hardware).
Até agora, raramente vi livros que mostram como o seu HDL é traduzido em hardware. Eu li uma delas quando estava na Synopsys (páginas preenchidas com código e esquemas), mas era uma publicação interna. No entanto, mesmo sem este livro, você ainda pode ver como seu código é transformado em hardware, executando-o através da síntese em software livre.
A razão pela qual desejo enfatizar isso é porque existem muitas maneiras de resolver um problema. Você só poderá escrever um código que o resolva com eficiência, do ponto de vista da contagem de portas e do tempo, se entender como ele é traduzido no hardware subjacente.
Boa sorte!