148 f J\‘:\ ki 5fH'cyfikacji dla układów programowalnych
•• F.QUATIONS **
CLOCK INPUT;
RESETN : INPUT;
W : INPUT;
— Node name is 'C' from fila "moore2_ahdl.tdf• linę 9, column 67
— Equation namo ia 'C*, location is LC1_A1, type ia buried.
!C - C-NOT;
ONOT - LCELLt E0001J;
— Node namo ia '00' from file "moore2_ahdl.tdf" lino 9, column 24
— Equation name ia *00*, location is LC2A1, type ia buried.
Q0 - DFFE( _EQ002, GLOBAL< CLOCK), GLOBAL( RESETN), VCC, VCC) ;
_EQ002 - !Q0 Ł !Q1 i W;
— Node name ia '01' from file ’*moore2_ahdl. tdf“ linę 9, column 24
— Equation name ia *01', location ia LC3 Al, type ia buried.
Q1 - DFFE( E0003, GLOBAL( CLOCK), GLOBAL< RESETN), VCC, VCC);
E0003 - Q0 t 7q1 Ł W I !Q0 i 01 t W;
— Node name ia 'Z* from file “moore2_ahdl.tdf" linę 40, column 3
— Equation name ia 'Z*, type ia output
Z - C;
W praktycznych realizacjach automatów istnieją ciągi binarne, które nie są przypisane Żadnym stanom. Przejście układu do takiego stanu nadmiarowego np. z powodu naruszeń czasów setup time i hołd time, może być przyczyną jego niepoprawnej pracy. Metodą zabezpieczenia się przed takimi zjawiskami jest zadeklarowanie stanów nadmiarowych i uwzględnienie ich w tablicy przejść. W poniższym przykładzie takie stany zostały opatrzone nazwą i 1 legał.
Przykład 5.21
SUBDESIGN recover
cl k : INPUT; go : INPUT; ok : OUTPUT;
VARIABLE
sequence :
MACHINĘ OF BITS <q|2..0)) WITH STATES <
ldl«.
three,
5.2. Ję:\ k AHDL
149
four,
11 legali, illegalŻ,
111*9*13);
BEGIN
sequence.dk - clk;
CASE sequence IS WHEN idle «>
IF go THEN seąuence ■ one;
ENO IF;
WHEN one ->
sequence * two;
WHEN two ->
sequence - three;
sequence - four;
WHEN OTHERS ->
sequence ■ idle;
END CASE;
ok - (sequence =* four);
END;
Specyficznymi układami sekwencyjnymi są liczniki. Liczniki, ze względu na ich prostą funkcję przejść można specyfikować za pomocą instrukcji IF lub za pomocą wyrażenia boolowskiego z operatorami relacyjnymi i arytmetycznymi. Kolejny przykład ilustruje sposób, w jaki opisuje się liczniki za pomocą (opisanych wcześniej) instrukcji IF oraz przerzutników typu D.
Title "Licznik »od7 x— 0 STOP, x — 1 LICZ +1";
SUBDESIGN cnt-mod7(
wej_x, zegar : INPUT; wyj[1..3], y : OUTPUT;
)
VARIABLE
q|l..3] ; DFF;