SYNTEZA WSPÓLNYCH MODELI AUTOMATÓW SKOŃCZONYCH NA PLD Walery Sołowjew, Adam Klimowicz Wydział Informatyki Politechniki Białostockiej, ul. Wiejska 45A, 15-351 Białystok e-mail: walsol@ii.pb.bialystok.pl, aklim@ii.pb.bialystok.pl Praca prezentuje nową metodę syntezy automatów skończonych. Efektywność tej metody polega na wykorzystaniu w ramach jednej struktury różnych klas automatów skończonych. Efektywność wykorzystania różnych klas automatów przejawia się w zmniejszeniu liczby bitów wykorzystanych do kodowania stanów wewnętrznych i uproszczeniu części kombinacyjnej automatu skończonego, a co za tym idzie zmniejszeniu liczby wykorzystanych wyjściowych lub wewnętrznych makrokomórek układu PLD. Algorytm ten korzysta z zasobów współczesnych układów programowalnych, a w szczególności z takich cech jak możliwość stosowania wyjść i wejść układu zarówno buforowanych jak i kombinacyjnych, a także możliwość wykorzystania przerzutnika w pętli sprzężenia zwrotnego układu programowalnego. Pokazana zostanie klasyfikacja modeli automatów skończonych ze względu na możliwość ich realizacji na PLD, a także warunki ich realizacji. Zaprezentowano wyniki działania algorytmu w porównaniu z innymi metodami. 1. WPROWADZENIE Programowalne układy logiczne (PLD) są powszechnie stosowane do realizacji układów sekwencyjnych, których modelem matematycznym jest automat skończony. W wyniku ciągłego rozwoju architektur układów programowalnych [10, 14], rosną ich możliwości do realizacji systemów cyfrowych. Z tego powodu, bardzo ważną rzeczą jest znalezienie efektywnych metod syntezy automatów skończonych na bazie PLD. Głównym problemem przy projektowaniu automatów skończonych jest kodowanie stanów automatu [1, 7]. Wcześniejsze metody koncentrowały się głównie na minimalizacji liczby składników postaci sumy iloczynów części kombinacyjnej automatu [1, 3, 4, 6]. Z wcześniejszych metod można wyróżnić metody syntezy do realizacji w strukturach dwupoziomowych (np. NOVA) [18] jak również w strukturach wielopoziomowych (np. MUSTANG, JEDI) [5, 8]. Jednak wyniki otrzymywane za pomocą wyżej wymienionych metod przy syntezie na współczesnych układach logiki programowalnej nie są optymalne. Dzieje się to powodu tego, że metody te nie uwzględniają cech szczególnych architektur współczesnych układów programowalnych. Proponowana metoda opiera się na zaproponowanych wcześniej nowych modelach automatów skończonych [13-17], a w szczególności wykorzystaniu klas A, D i E automatów, połączonych w jednej strukturze. Charakteryzuje się ona wykorzystaniem w znacznym stopniu możliwości współczesnych struktur programowalnych takich, jak: stosowanie wejść i wyjść układu programowalnego, zarówno kombinacyjnych jak i rejestrowych, możliwość wykorzystania przy realizacji automatu skończonego przerzutnika umieszczonego w pętli sprzężenia zwrotnego. Dużą efektywność tej metody uzyskujemy dzięki wzajemnemu niwelowaniu się wad poszczególnych klas automatów oraz maksymalnemu wykorzystaniu ich zalet. Efektywność ta przejawia się w zmniejszeniu liczby bitów wykorzystanych do kodowania stanów wewnętrznych i uproszczeniu części kombinacyjnej automatu skończonego, a także w uproszczeniu funkcji wyjściowych i funkcji wzbudzeń elementów pamięci automatu skończonego.
2. ZAŁOŻENIA WSTĘPNE Niech automat skończony będzie opisany w standardzie KISS [19], czyli za pomocą tablicy przejść składającej się z czterech kolumn a m, a s, X(a m,a s ) i Y(a m,a s ), gdzie a m - stan obecny automatu, a s - stan następny, X(a m,a s ) wektor zmiennych wejściowych a Y(a m,a s ) - wektor zmiennych wyjściowych. Jeden wiersz w tablicy przejść odpowiada jednemu przejściu automatu. We wspólnym modelu automatu skończonego zbiór stanów wewnętrznych jest rozpatrywany jako suma podzbiorów A A, A D i A E odnoszących się do stanów wewnętrznych automatów klas A, D i E. W ogólnym przypadku dopuszczalne jest istnienie części wspólnych różnych podzbiorów stanów wewnętrznych automatu. Poszczególne podzbiory charakteryzują się następującymi cechami: A A zbiór stanów wewnętrznych automatu skończonego, dla których przy przejściach z danego stanu mogą być formowane różne zbiory zmiennych wyjściowych; A D podzbiór zbioru stanów A A, takich, że przy przejściach w każdy stan ze zbioru A D formowany jest ten sam wektor zmiennych wyjściowych, nie występujący przy przejściach do innych stanów automatu skończonego; A E podzbiór zbioru stanów A A, takich, że przejścia w każdy stan ze zbioru A E są uwarunkowane tym samym wektorem zmiennych wejściowych, nie wpływającym na przejścia do innych stanów automatu skończonego. Proponowany model automatu skończonego jest automatem typu Mealy ego, tzn., że wartości na wyjściach automatu zależą zarówno od stanów wewnętrznych, jak i od zmiennych wejściowych układu. W skład struktury automatu wchodzą modele automatów klas A, D i E, które mogą być opisane za pomocą poniższych równań: automat klasy A (Mealy ego) [10]: a t+1 = ( z t, a t ); ( 1 ) w t = ( z t, a t ); automat klasy D (każdy wektor wyjściowy jest taki sam, jak odpowiadający mu kod stanu następnego automatu): a t+1 = ( z t, a t ); ( 2 ) w t = a t +1 ; automat klasy E (każdy wektor wejściowy jest taki sam, jak odpowiadający mu kod stanu następnego automatu): a t+1 = z t ; ( 3 ) w t = ( z t, a t ); gdzie: a t stan obecny automatu, a t+1 stan następny automatu, w t wektor wyjściowy automatu, z t wektor wejściowy automatu, - funkcja przejścia do stanu następnego, - funkcja wyjścia. Struktura wspólnego modelu automatu skończonego klas A, D i E pokazana jest na rys. 1, gdzie CL jest częścią kombinacyjną automatu, RG I jest rejestrem wejściowym, RG O jest rejestrem wyjściowym, natomiast RG rejestrem wewnętrznym, które przechowują kody stanów wewnętrznych automatów skończonych odpowiednio klas: E, D oraz A. Zawartość rejestru wejściowego RG I określona jest wartościami zmiennych wejściowych ze zbioru X= {x 1,...,x L }, zawartość wyjściowego rejestru RG O określona jest wartościami zmiennych wyjściowych ze zbioru Y={y 1,...,y N } a zawartość rejestru wewnętrznego RG określona jest wartościami funkcji przejść ze zbioru D={d 1,...,d R }. Kody stanów wewnętrznych automatów są określone na pomocą wartości zmiennych ze zbiorów G={g 1,...,g L }, Z={z 1,...,z N } i E= {e 1,...,e R }, formowanych na wyjściach rejestrów odpowiednio: RG I, RG O i RG.
Rys. 1 Struktura wspólnego modelu automatu skończonego klas A, D i E. 3. METODA KODOWANIA STANÓW Istota kodowania stanów wewnętrznych automatu w przedstawionej metodzie, polega na tym, aby uczynić wszystkie stany wewnętrzne różnymi od siebie, tzn. wszystkie kody stanów wewnętrznych automatu powinny być wzajemnie ortogonalne. Użycie do kodowania wektorów zmiennych wejściowych i wyjściowych, określonych wartościami zmiennych ze zbiorów G i Z, częściowo prowadzi do rozwiązania tego zadania. Dalsze kroki prowadzą do wprowadzenia minimalnej liczby dodatkowych zmiennych e 1,...,e R zbioru E i kodowania oddzielnych grup stanów kodem binarnym. Do rozwiązania zadania kodowania stanów wewnętrznych automatu skończonego budowana jest macierz W, której wartości pochodzą ze zbioru {1, 0, -}. Wiersze macierzy odpowiadają stanom wewnętrznym automatu, natomiast kolumny zmiennym ze zbiorów G i Z. Na przecięciu się wiersza odpowiadającego stanowi a i, a i A i kolumny, odpowiadającej zmiennej g j, g j G, stawia się jedynkę, jeżeli zmienna wejściowa x j wchodzi w warunek przejścia X(a i ) w postaci prostej, zero w postaci zanegowanej, a wartość nieokreśloną ( - ) jeśli x j nie wchodzi w warunek przejścia X(a i ) w stan a i. Wartość X(a i ) określa się w następujący sposób: jeśli wszystkie przejścia w stan a i, a i A odbywają się pod wpływem tego samego wektora zmiennych wejściowych X(a m,a i ), to X(a i ) := X(a m,a i ), w przeciwnym wypadku X(a i ) =. Na przecięciu się wiersza odpowiadającego stanowi a i, a A i kolumny, odpowiadającej zmiennej z j, z j Z stawiana jest jedynka, jeżeli y j Y(a i ), wartość nieokreśloną, jeżeli Y(a i ) =, i zero w innym wypadku, gdzie Y(a i ) podzbiór zmiennych wyjściowych, przyjmujących wartość jedynki logicznej przy przejściach w stan a i. Wartość Y (a i ) określa się w następujący sposób: jeśli na wszystkich przejściach w stan a i, a i A, formowany jest taki sam wektor wyjściowy Y(a m,a i ), to wówczas Y(a i ) := Y(a m,a i ), w innym wypadku Y(a i ) :=. Po utworzeniu macierzy W zadanie kodowania wygląda w sposób następujący: należy wprowadzić R zmiennych dodatkowych e 1,...,e R i zakodować wiersze macierzy W w taki sposób, aby wszystkie wiersze tej macierzy były wzajemnie ortogonalne. Aby rozwiązać to zadanie buduje się graf H ortogonalności wierszy macierzy W, czyli inaczej stanów automatu skończonego. Dwa wierzchołki i i j grafu H połączone są krawędzią, jeśli wiersze i i j macierzy W są wzajemnie ortogonalne. Dalsza część zadania prowadzi do znalezienia w grafie H minimalnej liczby T pełnych podgrafów H 1,...,H T, w których wszystkie wierzchołki są wzajemnie między sobą połączone i przypisania tym podgrafom binarnych kodów określonych wartościami zmiennych e 1,...,e R. Metoda ta może być realizowana za pomocą poniższego algorytmu: Algorytm 1 1. Budujemy graf H ortogonalności wierszy macierzy W.
2. Z grafu H usuwamy wierzchołki związane ze wszystkimi innymi wierzchołkami grafu (odpowiadające im wiersze macierzy W są ortogonalne z wszystkimi innymi wierszami). Podstawiamy t:=0. 3. Podstawiamy t:=t+1. W grafie H znajdujemy największy wspólny podgraf H t. 4. Z grafu H usuwamy wierzchołki wchodzące w skład podgrafu H t. Jeżeli zbiór wierzchołków grafu jest pusty przechodzimy do punktu 5, w przeciwnym wypadku do punktu 3. 5. Określamy liczbę R zmiennych dodatkowych e 1,...,e R, R = int log 2 T, gdzie T jest liczbą pełnych podgrafów. 6. Dla każdego podgrafu H t, określamy wartość C t, w następujący sposób: C t = a i A t C(a i ), ( 4 ) gdzie A t zbiór stanów wewnętrznych automatu skończonego, odpowiadających wierzchołkom podgrafu H t,t= 1, T, C(a i ) zbiór wszystkich przejść do stanu a i, a i A. 7. Dla każdego podgrafu H t, t= 1, T, przydzielamy kod binarny, określony wartościami zmiennych e 1,...,e R, przy czym kody z minimalną liczbą jedynek w pierwszej kolejności przydzielamy podgrafom, dla których wartość C t jest maksymalna. 8. Do macierzy W wprowadzamy dodatkowe kolumny odpowiadające zmiennym e 1,...,e R. Wartości tych kolumn są kodami odpowiadających podgrafów. 9. Określamy kody stanów wewnętrznych automatu skończonego. Każdy kod K(a i ) stanu a i, a i A, określony jest wartościami wiersza i macierzy W. Jeśli na przecięciu wiersza i i kolumny j, znajduje się jedynka, to zmienna odpowiadająca kolumnie j wchodzi w kod K (a i ) stanu a i w postaci prostej, jeśli zero w postaci zanegowanej, jeśli wartość nieokreślona zmienna nie wchodzi w kod K(a i ). 10. Koniec. Można zauważyć, że wypełnienie punktów 6 i 7 algorytmu kodowania prowadzi do uproszczenia realizacji na PLD funkcji wzbudzeń elementów pamięci ze zbioru D, ze względu na to, że jeżeli dla stanów o dużej liczbie przejść przydzielimy kod o minimalnej liczbie jedynek, to liczba iloczynów logicznych funkcji wzbudzeń elementów pamięci będzie mniejsza niż w przypadku innego sposobu przydzielania kodów. 4. ALGORYTM SYNTEZY Wykorzystanie wspólnego modelu automatu skończonego klas A, D i E przy syntezie automatów Mealy ego, prowadzi do dwóch głównych celów: minimalizacji liczby R dodatkowych elementów pamiętających, uproszczenie funkcji przejść i wyjść, czyli części kombinacyjnej automatu skończonego. Oba te cele są realizowane drogą wykorzystania modeli automatów klas D i E. Jednak nadmierne wykorzystanie tych modeli, związane z rozszczepieniem stanów, może prowadzić do zwiększenia liczby wierszy tablicy przejść automatu skończonego, jak również do zwiększenia stopnia złożoności funkcji przejść i wyjść. Dlatego też, przy syntezie automatów klas D i E niezbędna jest stała kontrola operacji rozszczepienia stanów, ze względu na parametr R (liczba dodatkowych elementów pamięci). Rozszczepienie stanów ma sens tylko wtedy gdy prowadzi ono do zmniejszenia wartości parametru R. W przedstawionym niżej algorytmie, rozszczepienie stanów jest przerywane jeśli prowadzi ono do wzrostu wartości R,
natomiast jako rezultat końcowy przyjmowane jest rozwiązanie, które po raz ostatni prowadziło do zmniejszenia R. Niech V(a i ) zbiór wektorów zmiennych wyjściowych, formowanych na przejściach do stanu a i, a i A. V(a i ) = { Y(a m,a i ) a m B(a i ) }, ( 5 ) gdzie B(a i ) zbiór stanów, z których możliwe są przejścia w stan a i. Stan a i, a i A, jest stanem automatu klasy D, tzn. a i A D, jeśli spełnione są warunki: V(a i ) = 1 ( 6 ) V(a i ) V(a j ) = przy i j dla każdego a j A. ( 7 ) Jeśli spełniony jest warunek (6) to znaczy, że na wszystkich przejściach do stanu a i formowany jest ten sam wektor zmiennych wyjściowych. Spełnienie warunku (7) zapewnia, że wektor wyjściowy Y(a i ) nie jest formowany przy przejściach w inne stany automatu skończonego. Niech V D (a i ) zbiór wektorów zmiennych wyjściowych, formowanych na przejściach do innych stanów, tj. V D (a i ) podzbiór zbioru V(a i ), V D (a i ) V(a i ), dla którego spełnione są warunki (6) i (7). Niech A* D zbiór stanów, dla których naruszono warunek (6), tzn. takich stanów, które należy rozszczepić, gdyż mogą to być potencjalne stany automatu klasy D. Niech U(a i ) zbiór wszystkich wektorów opisujących warunki przejścia w stan a i, a i A. Stan a i jest stanem automatu klasy E, tzn. a i A E, jeżeli spełnione są warunki: U(a i ) = 1 ( 8 ) U(a i ) U(a j ) = przy i j dla każdego a j A. ( 9 ) Niech U E (a i ) zbiór wektorów opisujących warunki przejścia w stan a i, których nie ma przy przejściach w inne stany automatu, tzn. spełniony jest warunek (9), U E (a i ) U(a i ), natomiast A* E zbiór stanów dla których naruszono warunek (8), czyli zbiór stanów, które należy rozszczepić, w celu otrzymania stanów automatu klasy E. Niech S(a i ) koszt rozszczepienia stanu a i określone jako liczba wierszy, o którą zwiększy się tablica przejść automatu w rezultacie rozszczepienia stanu a i, a i A* D A* E. S(a i ) = V(a i ) - 1 P(a i ), jeżeli a i A* D ; ( 10 ) S(a i ) = U(a i ) - 1 P(a i ), jeżeli a i A* E ; gdzie P(a i ) zbiór wszystkich przejść ze stanu a i. W procesie syntezy, właściwą wartość S(a i ) wybiera się w zależności od tego, w jaki sposób odbywa się rozszczepienie: przy użyciu wektorów zmiennych wyjściowych (a i A* D ), czy przy użyciu wektorów zmiennych wejściowych (a i A* E ). Algorytm syntezy wspólnego modelu automatu Mealy ego klas A, D i E wygląda w następujący sposób: Algorytm 2 1. Podstawiamy R* := 1000. 2. Budujemy macierz kodowania stanów wewnętrznych W, wykonujemy algorytm 1 kodowania stanów, w wyniku którego otrzymujemy wartość R. 3. Jeśli R R* lub R=0, to przechodzimy do punktu 7, w przeciwnym wypadku, podstawiamy R*:= R i zapamiętujemy rezultaty syntezy (tablicę przejść oraz kody stanów automatu).
4. Określamy zbiory V(a i ), V D (a i ), U(a i ) i U E (a i ), a i A oraz zbiory A* D i A* E. Jeżeli suma zbiorów A* D A* E =, to wykonujemy przejście do punktu 7, w przeciwnym wypadku - do punktu 5. 5. Do rozszczepienia wybieramy stan a i, a i A* D A* E, według poniższych kryteriów: a) max( V D (a i ), U E (a i ) ) = max b) S(a i ) = min. Pierwsze kryterium zapewnia największą efektywność wykorzystania automatów klas D i E, drugie kryterium minimalny wzrost liczby wierszy w tablicy przejść automatu. 6. Rozszczepiamy stan a i, wybrany w poprzednim punkcie. Jeżeli V D (a i ) U E (a i ), to rozszczepienie wykonujemy przy użyciu wektorów zmiennych wyjściowych V(a i ), w przeciwnym wypadku przy użyciu wektorów zmiennych wejściowych U(a i ). Wykonujemy przejście do punktu 2. 7. Jako rezultat końcowy przyjmujemy rozwiązanie zapamiętane w punkcie 3. 8. Budujemy strukturalną tablicę przejść automatu skończonego, określającą równania logiczne realizowanych funkcji. 9. Koniec. Można zauważyć, że jeśli V D (a i ) = U E (a i ), to rozszczepienie stanu a i wykonuje się przy użyciu wektora zmiennych wyjściowych, ponieważ pozwala to z większym prawdopodobieństwem otrzymywać ortogonalne wiersze macierzy W. Na początku algorytmu 2 wartość R* przyjmuje się znacznie większą, niż to konieczne, dlatego przynajmniej raz jest wykonywane kodowanie stanów i zapamiętanie otrzymanego rezultatu syntezy w punkcie 3 algorytmu. W przypadku kiedy A D = A E = A* D = A* E =, wykonanie algorytmu 2 jest jednoznaczne z syntezą automatu skończonego klasy A. 5. BADANIA EKSPERYMENTALNE Opisany wyżej algorytm syntezy został zaimplementowany w pakiecie ZUBR. Pakiet ten został opracowany na Wydziale Informatyki Politechniki Białostockiej. Proponowana metoda syntezy została wykorzystana do realizacji przykładów testowych ze zbioru MCNC [19]. W tabeli 1 zostały przedstawione podstawowe parametry testowanych przykładów, takie jak: L liczba wejść, N liczba wyjść, M liczba stanów, P liczba wierszy w tablicy przejść. Została także obliczona liczba dodatkowych przerzutników, użytych do zakodowania stanów wewnętrznych automatu, odpowiednio R A dla syntezy automatu klasy A (Mealy ego) oraz R W dla syntezy automatu o modelu wspólnym, który opisano w tej pracy. Parametr R%=(R A R W )/max(r A,R W ) jest procentową różnicą pomiędzy tymi wartościami. Tabela 1. Porównanie liczby dodatkowych przerzutników dla FSM klasy A i modelu wspólnym Nazwa L N M P R A R W R% Bbsse 7 7 208 13 4 3 25% Ex4 6 9 21 14 4 3 25% Keyb 7 2 170 19 5 4 20% Mc 3 5 10 4 2 0 100% Pma 7 6 44 20 5 3 40% s1 8 6 107 20 5 0 100% s27 4 1 30 5 3 2 33% S386 7 7 64 13 4 3 25% Średnia 46%
Jak wynika z tabeli 1 dla syntezy wspólnych modeli FSM uzyskano zmniejszenie liczby dodatkowych elementów pamięci średnio o 46%, w najlepszym przypadku o 100% (dla przykładów mc i s1). Uzyskane zmniejszenie liczby dodatkowych przerzutników związane jest z tym, że do kodowania stanów używane są rejestry wejściowe i wyjściowe układu PLD. W tabeli 2 przedstawiono porównanie kosztów realizacji części kombinacyjnej testowanych przykładów dla realizacji jako automat klasy A oraz jako wspólny model automatu skończonego. Wartości C A4, C A5, C A8 oznaczają koszt (liczbę użytych makrokomórek) przy realizacji jako automat klasy A odpowiednio dla układów programowalnych, posiadających makrokomórki z 4, 5 i 8 dołączonymi termami, Wielkości C W4, C W5, C W8 oznaczają te same parametry ale dla realizacji jako wspólny model automatu skończonego. Wielkości C4%, C5%, C8%, CAV% oznaczają różnice procentowe pomiędzy poszczególnymi wartościami kosztów realizacji, odpowiednio dla liczby termów podłączonych do jednej makrokomórki równej 4, 5, 8 oraz wartość średnią tych parametrów. Tabela 2. Porównanie kosztów realizacji dla FSM klasy A oraz FSM o modelu wspólnym Nazwa C A4 C A5 C A8 C W4 C W5 C W8 C4% C5% C8% CAV% Bbsse 24 21 15 20 18 14 17% 14% 7% 13% Ex4 19 15 13 14 12 12 26% 20% 8% 18% Keyb 35 27 18 22 17 12 37% 37% 33% 34% Mc 7 7 7 7 7 6 0% 0% 14% 5% Pma 94 72 44 69 55 32 27% 24% 27% 26% s1 61 45 29 16 14 10 74% 69% 66% 70% s27 9 7 5 4 4 3 56% 43% 40% 46% S386 23 20 14 19 17 14 17% 15% 0% 11% Średnia 32% 28% 24% 28% Można zauważyć, że spadek kosztów dla realizacji układów testowych jako model wspólny w stosunku do realizacji jako normalny automat Mealy ego (klasy A) wyniósł 28%, przy czym jest to wartość średnia. Maksymalny zysk w liczbie makrokomórek został uzyskany dla przykładu s1 i wyniósł on 74%, czyli w tym wypadku, prawie 4 razy lepsze okazało się wykorzystanie wspólnego modelu automatu skończonego. 6. PODSUMOWANIE W pracy został pokazany wspólny model automatu skończonego typu Mealy ego klas A, D i E. Opisany algorytm syntezy okazał się efektywny w stosunku do tradycyjnej metody syntezy automatu Mealy ego zarówno jeżeli chodzi o liczbę dodatkowych elementów pamięci oraz złożoność kombinacyjnej części automatu skończonego. Algorytm ten ma jednak pewne ograniczenia. Wykorzystane w nim specyficzne cechy architektur PLD takie jak: konieczność istnienia przerzutnika w pętli sprzężenia zwrotnego oraz wykorzystanie jednocześnie kombinacyjnych i buforowanych wejść i wyjść danego układu PLD, wymuszają korzystanie ze współczesnych struktur, które te możliwości posiadają (np. MAX 9000, FLEX 10K). Dalszy rozwój badań powinien iść w kierunku zbudowania także wspólnego modelu automatu typu Moore a [11], który pozwoliłby efektywnie zastosować wyżej wymienione cechy współczesnych układów programowalnych. Różnorodność obecnie stosowanych układów programowalnych oraz istnienie szeregu modeli automatów skończonych powoduje konieczność opracowania odpowiedniej strategii wyboru właściwego modelu automatu skończonego do odpowiedniej architektury układu programowalnego na jak najwcześniejszym etapie syntezy logicznej.
LITERATURA I ŹRÓDŁA [1] Armstrong D.B.: A programmed algorithm for assigning internal codes to sequential machines, IRE Trans. Electron. Comput., vol. EC-11, pp. 466-472, Aug. 1962. [2] Avedillo M., Quintana J., Huertas J.: State merging and splitting via state assignment: a new FSM synthesis algorithm, IEE Proceedings. Part E, Computers and Digital Techniques, vol. 141, No. 4, July 1994, pp.229-237. [3] DeMicheli G., Sangiovanni-Vincentelli A., and Villa T.: Computer-aided synthesis of PLA-based finite state machines, Proc. of the Int. Conf. on Computer-Aided Design, Santa Clara, USA, November 1983, pp. 154-156. [4] DeMicheli G., Brayton R.K., Sangiovanni-Vincentelli A.: Optimal state assignment for finite state machines, IEEE Trans. on Computer-Aided Design, vol. CAD-4, pp. 269-285, July 1985. [5] Devadas S., Ma H.-K., Newton R., Sangiovanni-Vincentelli A.: MUSTANG: State Assigment of Finite State Machines Targeting Multilevel Logic Implementations, IEEE Transactions on Computer-Aided Design, Dec 1988, Vol. 7, No. 12, pp. 1290-1300 [6] Dolotta T.A. and McCluskey E.J.: The coding of internal states of sequential machines, IEEE Trans. Electron. Comput., vol. EC-13, pp. 549-562, Oct. 1964. [7] Józwiak L., Slusarczyk A.: A New State Assignment Method Targeting FPGA Implementations, Proc. of EUROMICRO Symposium on Digital System Design DSD 2000, Maastricht, Netherlands, September 5-7, 2000, pp.50-59. [8] Lin B., Newton R.: Synthesis of Multiple Level Logic from Symbolic High-Level Description Languages, Proc. of the International Conference on VLSI, Munchen, Germany 1989, pp 187-206. [9] Łuba T., Jasinski K.,Zbierzchowski B.: Specjalizowane uklady cyfrowe w strukturach PLD i FPGA, Wyd. Komunikacji i Łączności, Warszawa, 1997, 248 s. [10] Mealy G.H.: Method for synthesizing sequential circuits, Bell System Techn. Jourhal, vol.34, 1955, pp.1045-1079. [11] Moore E.F.: Gedanken-experiments on sequential machines, In C.Shannon and J.McCarthy editors. - Automata Studies, Princeton University Press, 1956, pp.129-153. [12] Sentovich E.M., Singh K.J., Lavagno L., Moon C., Murgai R., Saldanha A., Savoj H., Stephan P.R., Brayton R.K., Sangiovanni-Vincentelli A.: SIS: A system for sequentional circuit synthesis, Memorandum No. UCB/ERL M92/41, Electronics Research Laboratory, Department of Electrical Engineering and Computer Science, University of California, Berkley, May 1992. - 45p. [13] Solovjev V., Chyzy M.: Refined CPLD macrocell architecture for the effective FSM implementation, Proc. of the 25th EUROMICRO Conference, Milan, Italy, September 8-10, 1999, Vol. 1, pp. 102-109 [14] Solovjev V.: Synthesis of Sequential Circuits on Programmable Logic Devices Based on New Models of Finite State Machines, Proc. of the EUROMICRO Symposium on DIGITAL SYSTEMS DESIGN (DSD 2001), September 4-6, 2001, Warsaw, Poland, pp. 170-173. [15] Solovjev V.: Projektowanie układów cyfrowych na bazie PLD, Hot-Line Telekom, Moskwa 2001, 638 s. [16] Solovjev V., Chyzy M.: Models of the finite state machines, Proc. of the Sixth Int. Conf. on Methods and Models in Automation and Robotics (MMAR 2000), 28-31 August 2000, Miedzyzdroje, Poland, Vol 2, pp. 909-914. [17] Sołowjew W., Bułatowa I.: Synteza automatów skończonych klasy D na programowalnych układach logicznych, in Proc. of the Conf. Computer-Aided Design of Discrete Devices (CAD DD 01), Minsk, Białoruś 2001, Vol. 2, pp. 6-13. [18] Villa T., Sangiovanni-Vincentelli A.: NOVA: State Assignment for Finite State Machines for Optional Two-Level Logic Implementation, IEEE Trans. on Computer-Aided Design, vol. C-9, pp. 905-924, Sept. 1990. [19] Yang S.: Logic synthesis and optimization benchmarks user guide. Version 3.0., Technical Report, Microelectronics Center of North Carolina, 1991. - 43p.