При изучении любого вида ЛПВП (Verilog, VHDL ...) важно помнить одну вещь. Это не программирование, и все работает параллельно. При этом я считаю, что лучший способ выучить любой HDL - это научиться думать аппаратно и описывать аппаратное обеспечение (именно поэтому оно называется языком описания аппаратного обеспечения).
До сих пор я редко видел книги, показывающие, как ваш HDL переводится в аппаратное обеспечение. Я прочитал один, когда был в Synopsys (страницы, заполненные кодом и схемами), но это была внутренняя публикация. Однако, даже если вам не хватает этой книги, вы все равно можете увидеть, как ваш код превращается в аппаратное обеспечение, выполняя его синтез на свободном программном обеспечении.
Причина, по которой я хочу это подчеркнуть, заключается в том, что существует много способов решения проблемы. Вы сможете писать код, который эффективно его решает, с точки зрения количества затворов и времени, если вы понимаете, как он переводится в базовое оборудование.
Удачи!