144
5 Języ ki specyfikacji dla układów programowalnych
sygnałów grupowych Zatem modyfikacja specyfikacji z przykładu 5.18 umożliwiająca definiowane przez uż>tkownika zakodowanie stanów jest następująca:
VARIABLE
q : MACHINĘ OF BITS (q(1..3))
NITH STATES (stanl - B"000", stan2 - B"00I", stan3 - B"010", stan4 - B"011", stanS - B"100");
Oczywiście inne zakodowanie może doprowadzić do innej realizacji, niekoniecznie gorszej od tej uzyskanej w systemie MAX+PLUS II, co wynika z faktu, że użytkownik systemu może zastosować nowsze i lepsze narzędzie syntezy logicznej. Różnice w sposobie kodowania stanów najłatwiej zaobserwować dla implementacji w strukturach komórkowych np. układach typu FLEX, w których kodowanie automatyczne z reguły dąży do uzyskania jak najprostszych funkcji wzbudzeń (nawet kosztem zwiększenia liczby przerzutników). co jest uzyskiwane za pośrednictwem kodowania na większej niż minimalna liczbie bitów kodowych. Zaobserwować to można na przykładzie automatu, którego graf stanów podany jest na rys. S.3, a tablica przejść-wyjść w tabl. 5.4. W przykładzie 5.20 podano specyfikację tego automatu w przypadku, gdy kodowanie stanów jest powierzone kompilatorowi. W przykładzie podany jest również fragment raportu uzyskanego w procesie kompilacji w systemie MAX+PLUSII.
Rys. 5.3. Automat Moort a przykład
Tablica 5 .4
A A B I 0
BACO C A C 1
145
Title "AUTOMAT MOORE'A";
SUBDESIGN MOORE_AHDLI
CLOCK, RESETN, W : INPUT;
2 : OUTPUT;
VARIABLE
Y : MACHINĘ WITH STATES (tzn. (A, B, C));
Y.CLK - CLOCK;
Y.RESET = !RESETN;
IF RESETN — B"0" THEN Y - A; END IF;
CASE Y IS
WHEN A ->
IF H » B"0" THEN
ELSE
END IF;
NHEN B »
IF W -- B"0" THEN
ELSE
Y- C;
END IF;
WHEN C ->
IF M — B"0" THEN
Y - A;
ELSE
END IF;
END CASE;
IF Y — C THEN Z - B"1";
ELSE
Z - B"0";
END IF;
Project Information
d:\users\pawel\!!work\vhdI\automat\moore_ahdl.rpt
MAX+plus II Compiler Report File Version 9.3 7/23/1999 Compiled: 07/12/2000 13:40:21
'**" Project compilation was successful
AUTOMAT MOORE'A