AHDL ułatwia tworzenie automatów dzięki konstrukcji machine of bits with states oraz tabelom przejść i wyjść.

Przykład

Poniżej znajduje się kod prostego licznika rewersyjnego z synchronicznym, równoległym ładowaniem oraz asynchronicznym zerowaniem. Jeśli wejścia clear i load są nieaktywne (wynoszą 1) oraz enable jest aktywne (wynosi 1), to licznik zwiększa lub zmniejsza swą wartość o 1 w zależności od stanu wejścia updown.

title "counter";

-- definicja stałych constant COUNT_UP=0; constant COUNT_DOWN=1;

-- definicja nazwy oraz opis wejść i wyjść licznika subdesign counter ( -- aktualna wartość licznika q[15..0]:output; -- wartość do załadowania do licznika data[15..0]:input; -- sygnał ładowania (aktywny stanem niskim) load:input; -- reset asynchroniczny (aktywny stanem niskim) clear:input; -- sygnał zezwolenia na zliczanie (aktywny stanem wysokim) enable:input; -- czy zliczać w górę (stan niski) lub dół (stan wysoki) updown:input; -- zegar synchronizujący operacje (aktywny narastającym zboczem) clock:input; ) variable -- 16 przerzutników reprezentujących bieżący stan licznika q[15..0]:DFF; begin -- podłączenie zegara i resetu q[].clk=clock; q[].clrn=clear;