142
5 Języki specyfikacji dla układów programowalnych
WITH STATES (
stanl - B"000", stan2 - B"010", stan3 - B"101", stan4 - B"001", stanS - B-Oll");
Device-Specific Information: d:\users\max2work\ahdl\detl.rpt detl
♦♦ EOUATIONS ••
wej x : INPUT;
zegar : INPUT;
— Node name is '0-1* from file "detl.tdf" linę 9, column 2
— Equation name ia 'Q~l', location ia LC113, type ia buried.
0-1 « DFFEł _EQ001 $ VCC, GLOBAL( zegar), VCC, VCC, VCC);
_E0001 - !Q-2 4 !0~3 *
— Node name ia '0-2* from file "detl.tdf" linę 9, column 2
— Equation name ia *0-2', location ia LC115, type ia buried.
0*2 - DFFE( _EQ002 $ 0-3, GLOBAL( zegar), VCC, VCC, VCC);
_EQ002 - !Q-1 40-24 !Q*3 4 w«j_x
» !Q*1 4 !0-2 4 !Q~3 4 !wej_x;
— Node name is 'Q-3' from file "detl.tdf" linę 9, column 2
— Equation name is '0-3', location ia LC114, type ia buried.
Q~3 - DFFE( _EQ003 $ GND, GLOBAL( zegar), VCC, VCC, VCC);
_EQ003 - !Q~1 4 !Q*2 4 !Q*3 4 wej_x;
— Node name ia 'y*
— Equation name is 'y', location is LC117, type is output.
y - LCELL( _EQ004 $ GND);
E0004 - 0-1 4 !Q~2 4 !Q-3 4 wej_x;
Komentując specyfikację automatów w języku AHDL naleZy podkreślić interesujący sposób stosowania procedur syntezy logicznej przez firmę ALTERA. Otóż wbudowane do systemu procedury kodowania stanów można pominąć i użytkownik może sam realizować taki proces korzystając z coraz lepszych procedur syntezy logicznej opracowywanych w ramach tzw. systemów uniwersyteckich (por. rozdz. 8).
Inna metoda opisu automatów w języku AUDI. polega na zastosowaniu konwencji tablicy przejść-wyjść. W standardzie AHDI. taki sposób zapisu nazywa się opisem typu TABLE
5.2 Język AUDI.
143
Przykład 5.19
Title "Automat wykrywający sekwencje 001";
SUBOES1GN det2 <
we)_x, zegar : INPUT; y ; OUTPUT;
VARIABLE
q : MACHINĘ WITH STATES (stanl. stan2, stan3, stan4, stanb);
begin
q.clk - zegar;
Stani,
Stani,
stan2,
stan2,
stan3,
stan3,
stan4,
stan4,
stanS,
stanS,
END TABLE;
-> stan2, -> stan3, -> stan4, -> stanS, -> stan5, ■> stanS, -> stanl, -> stanl, ■> stanl.
Jak widać. AHDL oferuje charakterystyczny sposób zapisu tablicy przejść-wyjść, v którym zarówno stany jak i sygnały wejściowe i wyjściowe są zapisywane kolumnami. Jest to metoda zapisu powszechnie stosowana w systemach uniwersyteckich (tzw. standard KISS - patrz rozdz. 8), co jest korzystne z tego względu. Ze właśnie specyfikacja tablicowa jest najwygodniejsza do stosowania w zaawansowanych procedurach syntez)- logicznej. Oczywiście specyfikacja podana w przykładzie 5.19 z punktu widzenia procesu kompilacji jest równoważna specyfikacji za pomocą instrukcji IF THEN. CASE. Z tych powodów pomijamy tu omówienie pliku raportu. Zajmiemy się natomiast specyfikacją uwzględniającą kodowanie stanów zadawane przez użytkownika.
Wprowadzane przez użytkownika kodowanie stanów może być stosowane w obu metodach specyfikacji automatów i polega na zastosowaniu deklaracji machinę of BlTS ... with STATES, gdzie pozycje zakropkowane zajmuje zapis odpowiednich