150
5 Języki specyfikacji dla układów programowalnych
qI].clk - zegar; wyjII - qll; y - (qI] — 6);
IF wej_x THEN
IF (qlJ — 6) THEN
EŁSB
q U - qll ♦ U
ENO IF;
ELSE
END IF;
END;
Podaną specyfikację można podać w formie wyrażenia boolowskiego. Wystarczy w tym celu instrukcję IF zastąpić następującym wyrażeniem:
q(] - (wej_x 4 (q[] ♦ 1) • !wej_x * qM) 4 !(q|l — 6);
Zwięzłość języka AHDL ilustruje przykład specyfikacji licznika binarnego modulo 16, który pracuje w czterech trybach zdefiniowanych w rozdz. 5.1 - patrz przykład 5.7. W celu uzyskania większej czytelności specyfikacji w przykładzie wykorzystano instrukcję IF z zastosowaniem definicji stałych typu C ON ST ANT.
Przykład 5.23
— deklaracja stałych CONSTANT STOP - B"00";
CONSTANT LĄDUJĄ - B"01";
CONSTANT LADUJB - B"10";
CONSTANT LICZ - B"ll";
TITLE "Licznik z wpisem z dwóch zrodel";
SUBDESIGN cnt_z_wp
<
-- sygnały wejściowe
Zegar,II,10 : INPUT;
INPUT;
INPUT;
ABUS(3..01 BBUS(3..0)
5.2 Język AHDl.
151
— sygnały wyjściowe
Wy[3..01 : OUTPUT;
VAR1ABLE
— sygnały lokalna
ff(3..0) :DFF;
trybił..01 :SOFT;
BEGIN
— dołączenie sygnału 'zegar* do wszysckich wejsc zegarowych
— przerzutnikow
ffO.clk - Zegar;
— ustawienie sygnału łokałnego 'tryb* jako grupy składające] sie z
— sygnałów wejściowych *10' i 'II*
trybU - (10.II);
— opis pracy
IF tryb!) — LICZ THEN
ffU-d - ff(J.q ♦ lł ELSIF trybU — LĄDUJĄ THEN ff[).d - ABUS();
ELSIF trybU — LADUJB THEN
ff[] .d - BBUSUł ELSIF trybu — STOP THEN ffIJ.d - ffU.ą;
END IF;
— dołączenie wyjsc przerzutnikow do wyjścia układu
Wyli - ffll.ą;
END;
Raport
Project Information d:\users\max2work\ahdl\cnt_z_wp.rpt *•••• Project compilaticn was successfuł
Licznik z wpisem z dwóch zrodel
•• DEVICE SUMMARY ••
Bidir Shareable
Pins LCs Expanders i
Chip/ Input Output
POF Devi.ee Pins Pins
Otilized
cnt z wp EPM7128SLC84-7 11
User Pins: 11