148 f Języki specyfikacji dla ukladtm programowalnych
•• EOUATIONS ••
CLOCK INPUT;
RESETN : INPUT;
W : INPUT;
-- Node name is ’C' fron file "moore2 ahdl.tdf* linę 9, column 67 -- Equation name is ’C’, location is LC1_A1, type is buried.
!C - C~NOT;
C'NOT - ŁCELL( EQ001);
— Node name is 100’ from file "raoore2_ahdl.tdf" linę 9, column 24
-- Equation name is 'OO*, location is LC2A1, type is buried.
00 “ DFFE( _EQ002. GLOBAL( CLOCK), GLOBAL( RESETN), VCC, VCC) ;
_EQ002 - !Q0 4 !Q1 4 W;
— Node name is *01' from file "moore2_ahdl.tdf" linę 9, column 24
— Equation name is *Q1', location is LC3 Al, type is buried.
01 - DFFE( E0003, GLOBAL( CLOCK), GLOBAL( RESETN), VCC, VCC) ;
E0003 - 00 4 7q1 4 W
# !Q0 4 01 fc w;
— Node naste is 'Z* from file "moore2_ahdl. tdf * linę 40, colusin 3
— Equation name is *2', type is output
2 - 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ą Ulegał.
Przykład 5.21
SUBDESIGN recover
clk : INPUT; go : INPUT; ok : OUTPUT;
VARIABLE
sequence : MACHINĘ OF BITS (q(2..0))
WITH STATES ( idl«,
two,
three.
111*9*12. ill«rgal3) i
BEGIN
sequence.dk - clk;
CASE seąuence IS WHEN idl* ->
IF 90 THEN seąuence “ one;
ENO IF;
sequence • two;
WHEN two ->
seąuence “ three;
WHEN three ->
seąuence - four;
WHEN OTHERS ->
seąuence ■ idle;
END CASE;
ok ■ (seąuence — 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 bkx17 x— O STOP. x — 1 LICZ *1";
SUBDESIGN cnt-mod7(
wej_x, zegar : INPUT; wyj U*. 3], y : OUTPUT;
VARIABLB
qll..3J ; DFF;