Synteza logiczna skończonych automatów stanów z zastosowaniem
Transkrypt
Synteza logiczna skończonych automatów stanów z zastosowaniem
Arkadiusz BUKOWIEC, Alexander BARKALOV UNIWERSYTET ZIELONOGÓRSKI, INSTYTUT INFORMATYKI I ELEKTRONIKI Synteza logiczna skoĔczonych automatów stanów z zastosowaniem wielokrotnego kodowania stanów mgr inĪ. Arkadiusz BUKOWIEC prof. dr hab. inĪ. Alexander BARKALOV Mgr inĪ. Arkadiusz Bukowiec ukoĔczył studia inĪynierskie (2001) o specjalnoĞci inĪynieria komputerowa na Politechnice Zielonogórskiej a nastĊpnie studia magisterskie (2004) o tej samej specjalnoĞci na Uniwersytecie Zielonogórskim. Od roku 2004 pracuje jako asystent oraz jest studentem studiów doktoranckich na Wydziale Elektrotechniki, Informatyki i Telekomunikacji Uniwersytetu Zielonogórskiego. W roku 2006 odbył jeden semestr studiów doktoranckich na Universidade Nova de Lisboa w ramach projektu Sokrates-Erasmus. Prof. Alexander Barkalov ukoĔczył studia (1976) o specjalnoĞci Komputery na Politechnice Donieckiej. W roku 1983 obronił rozprawĊ doktorską z zakresu informatyki w Instytucie Mechaniki i Optyki w Leningradzie. W 1995 roku obronił rozprawĊ habilitacyjną w Instytucie Cybernetyki w Kijowie i uzyskał tytuł doktora habilitowanego ze specjalnoĞcią informatyka. W latach 1996-2003 pracował jako profesor w Instytucie Informatyki Narodowej Politechniki Donieckiej. Od 2004 pracuje jako profesor w Instytucie Informatyki i Elektroniki Uniwersytetu Zielonogórskiego. e-mail: [email protected] e-mail: [email protected] Streszczenie W artykule zostaną przedstawione metody syntezy skoĔczonych automatów stanów z wyjĞciami typu Mealy’ego do struktur programowalnych typu FPGA. Metody te oparte są o wielokrotne kodowanie stanów wewnĊtrznych układu podzielonych na podzbiory w oparciu o aktualny stan lub aktualnie wykonywaną mikroinstrukcje. Prowadzi to do realizacji układu cyfrowego takiego automatu w strukturze dwupoziomowej, gdzie układ pierwszego poziomu realizuje funkcje kodowania. Zabieg taki umoĪliwia zmniejszenie liczby funkcji logicznych realizowanych przez kombinacyjną czĊĞü automatu. Stan wewnĊtrzny natomiast jest dekodowany w układzie drugiego poziomu na podstawie wielokrotnego kodu stanu wewnĊtrznego i kodu aktualnego stanu lub kodu aktualnie wykonywanej mikroinstrukcji. PoniewaĪ system ten posiada regularną strukturĊ, moĪe on zostaü zaimplementowany z wykorzystaniem osadzonych bloków pamiĊci, jakie wystĊpują w nowoczesnych układach FPGA. Rozwiązanie takie prowadzi do zmniejszenia całkowitej liczby bloków logicznych, i ich równomierniejszego wykorzystania, potrzebnych do implementacji układu cyfrowego skoĔczonego automatu stanów. Abstract The method of synthesis for FPGAs of the logic circuit of Mealy FSM is proposed. Method is based on the encoding of internal states divided into subsets based on current state or microinstruction. It leads to realization of FSM in double-level structure. It leads to diminish number of functions realized by combinational part of FSM. The state is decoded in the second-level circuit base on multiple code and code of current state or code of microinstruction. This system can be implemented using memory blocks and in summary it leads to minimization of required logic elements for implementation of logic circuit of FSM Słowa kluczowe: SkoĔczony automat stanów, Układ FPGA, Synteza logiczna. Metody te wymagają zastosowania dodatkowych zmiennych wewnĊtrznych przez co mogą wymagaü zastosowania wiĊkszej liczby elementów logicznych. W prezentowanym artykule przedstawione są metody umoĪliwiająca zmniejszenie liczby funkcji logicznych realizowanych przez automat. Metody te oparte są o kodowanie stanów wewnĊtrznych automatu podzielonych na podzbiory w oparciu o aktualny stan lub aktualnie wykonywaną mikroinstrukcjĊ [3]. Kodowanie takie pozwala na zmniejszenie liczby funkcji logicznych realizowanych przez automat. Stan jest dekodowany w układzie drugiego poziomu w oparciu o wielokrotny kod stanu wewnĊtrznego i kod aktualnego stanu lub kod aktualnie wykonywanej mikroinstrukcji. PoniewaĪ system ten posiada regularną strukturĊ moĪe zostaü zaimplementowany z wykorzystaniem osadzonych bloków pamiĊci dostĊpnych w nowoczesnych układach FPGA. Zabieg taki prowadzi do zmniejszenia liczby elementów logicznych potrzebnych do implementacji automatu. 2. Metody standardowe 2.1. Metoda jednopoziomowa Układ logiczny skoĔczonego automatu stanów z wyjĞciami typu Mealy’ego opisany jest systemem funkcji Boolowskich: Y = Y(Q, X), Φ = Φ(Q, X), Keywords: FSM, FPGA, Logic synthesis. 1. WstĊp SkoĔczone automaty stanów (ang. Finite state machines, FSMs) z wyjĞciami typu Mealy’ego [1] są jedną z najpopularniejszych metod projektowania jednostek sterujących układów cyfrowych, przez co mają szerokie zastosowanie w informatyce jaki i równieĪ w elektronice czy telekomunikacji. Układy FPGA są bardzo czĊsto stosowane do implementacji całego systemu cyfrowego, wraz z jednostką sterującą [6]. Jedną z głównych cech układów FPGA jest wystĊpowanie w nich duĪej liczby tablic LUT, które mogą realizowaü dowolną funkcje logiczną [4]. Ograniczeniem jednak jest stosunkowo mała liczba wejĞü (do 6, typowo 4) jaką posiadają tablice LUT, z drugiej strony funkcje logiczne realizowane przez kombinacyjny układ automatu posiadają znacznie wiĊcej argumentów. RozbieĪnoĞü ta prowadzi do koniecznoĞci zastosowania dekompozycji funkcji boolowskich opisujących zachowanie automatu skoĔczonego [5]. Negatywnym wynikiem takiej dekompozycji jest zwiĊkszenie liczby poziomów w układzie logicznym realizującym algorytm sterowania, co moĪe prowadziü do zmniejszenia wydajnoĞci takiego systemu. Jedna z metod zmniejszenia liczby funkcji realizowanych przez automat jest zastosowanie implementacji wielopoziomowej [2]. (1) gdzie X = {x1, …, xL} jest zbiorem warunków logicznych, Y = {y1, …, yN} jest zbiorem mikrooperacji, Q = {q1, …, qR} jest zbiorem zmiennych wewnĊtrznych uĪytych do kodowania stanów gdzie R = ªlog2Mº, automatu am ∈ A = {a1, …, aM}, Φ = {D1, …, DR} jest zbiorem funkcji wzbudzeĔ. System (1) jest formowany na podstawie tablicy przejĞü-wyjĞü automatu, która posiada kolumny: am, K(am), as, K(as), Xh, Yh, Φh, h, gdzie am ∈ A jest aktualnym stanem automatu; K(am) jest kodem tego stanu; as ∈ A jest nastĊpnym stanem automatu; K(as) jest kodem stanu as; Xh jest koniunkcją afirmacji lub negacji pewnych zmiennych ze zbioru wejĞciowych warunków logicznych X wymuszając przejĞcie ¢am, as²; Yh ⊆ Y jest mikroinstrukcją formowaną podczas przejĊcia ¢am, as²; Φh ⊆ Φ jest zbiorem funkcji wzbudzeĔ, które są równe 1 w celu przełączenia pamiĊü automatu z kodu K(am) na kod K(as); h jest numerem linii h = 1, …, H. System (1) jest podstawą do realizacji układu logicznego automatu z wykorzystaniem jednopoziomowej struktury P (rys. 1) [2]. W strukturze tej układ RG stanowi pamiĊü automatu i jest zbudowany z przerzutników typu D. Układ P implementuje funkcje Boolowskie (system (1)) automatu i w strukturze FPGA jest zbudowany z tablic LUT. PRZEGLĄD TELEKOMUNIKACYJNY - ROCZNIK LXXXI - nr 6/2008 766 3.1. Z podziałem poprzez mikroinstrukcjĊ X Y P ĭ RG Q Najpierw zostanie omówiona metoda gdzie kod mikroinstrukcji stanowi czĊĞciowy kod nastĊpnego stanu. Podzielmy zbiór stanów wewnĊtrznych as ∈ A = {a1, …, aM} na podzbiory w oparciu o aktualnie realizowaną mikroinstrukcjĊ Yt ⊆ Y. Prowadzi to do powstania T podzbiorów A(Yt) ⊆ A i stan as ∈ A(Yt) tylko wtedy gdy jest stanem przejĞcia podczas realizacji mikroinstrukcji Yt. Niech Bt = ¨A(Yt)¸ i B0 = max(B1, …, BT). Zakodujmy kaĪdy stan wewnĊtrzny as ∈ A(Yt) binarnym kodem Kt(as) na R2 = ªlog2 B0º bitach. Zmienne τ r ∈ Τ = {τ 1 ,,τ R2 } zostaną wykorzystane do reprezentacji tego kodu. W tym przypadku kod stanu wewnĊtrznego K(as) jest reprezentowany przez wielokrotny kod stanu wewnĊtrznego Kt(as) i kod mikroinstrukcji K(Yt): Rys. 1. Schemat blokowy automatu Mealy’ego o strukturze P Fig. 1. The structural diagram of the P Mealy FSM Całkowita liczba realizowanych funkcji Boolowskich wynosi: nP(P) = N + R. (2) 2.2. Metoda z kodowaniem mikroinstrukcji Jedną ze znanych metod zmniejszania liczby realizowanych funkcji logicznych przez układ P jest zastosowanie kodowania mikroinstrukcji [2]. Niech tablica przejĞü-wyjĞü automatu zawiera T róĪnych mikroinstrukcji Yt ⊆ Y. Zakodujmy kaĪdą taką mikroinstrukcjĊ binarnym kodem K(Yt) na R1 = ªlog2Tº bitach (t = 1, …, T). Zmienne z r ∈ Z = z1 ,, z R1 zostaną wykorzy- { (6) Układ logiczny automatu z takim kodowaniem moĪe zostaü zrealizowany z wykorzystaniem dwupoziomowej struktury PYY (rys. 3) [3]. Z X Y Y P } stane do reprezentacji tego kodu. W takim przypadku układ logiczny automatu moĪe zostaü zrealizowany z wykorzystaniem dwupoziomowej struktury PY (rys. 2) [2]. ȉ CC ĭ RG Q Z X K(as) = Kt(as) ∗ K(Yt). Y P Y Rys. 3. Schemat blokowy automatu Mealy’ego o strukturze PYY Fig. 3. The structural diagram of the PYY Mealy FSM Układ RG ma dokładnie taką samą funkcjĊ i budowĊ jak w strukturach P i PY. Układ Y pełni równieĪ tą samą rolĊ co w strukturze PY i realizuje ten sam system (3). Natomiast układ P implementuje system: ĭ RG Z = Z(Q, X), Τ = Τ(Q, X). Q Rys. 2. Schemat blokowy automatu Mealy’ego o strukturze PY Fig. 2. The structural diagram of the PY Mealy FSM Układ RG ma dokładnie taką samą funkcjĊ i budowĊ jak w strukturze P. Układ Y implementuje system funkcji Boolowskich: Y = Y(Z), (3) czyli dekoduje mikrooperacje. Układ ten w strukturze FPGA moĪe zostaü zaimplementowany z wykorzystaniem osadzonych bloków pamiĊci. W sytuacji takiej układ P implementuje system: Z = Z(Q, X), Φ = Φ(Q, X), (4) i liczba realizowanych funkcji Boolowskich zostaje zmniejszona do: nP(PY) = N + R1. (5) Jednak wartoĞü ta jest wciąĪ relatywnie duĪa i nie gwarantuje zmniejszenia liczby tablic LUT wymaganych do implementacji automatu w strukturze FPGA. 3. Metody z wielokrotnym kodowaniem Ideą prezentowanych w tym artykule metod jest zastosowanie jednoczesnego kodowania nastĊpnego stanu automatu z wykorzystaniem kodu mikroinstrukcji lub kodu aktualnego stanu jako czĊĞciowy kod nastĊpnego stanu [3]. (7) W strukturze tej wystĊpuje dodatkowy układ CC. Jest on wykorzystywany do dekodowania wewnĊtrznego stanu automatu i implementuje system: ĭ = ĭ(Z, Τ). (8) PoniewaĪ układ ten posiada regularną strukturĊ, podobnie jak układ Y, w strukturze FPGA moĪe zostaü zaimplementowany z wykorzystaniem osadzonych bloków pamiĊci. Struktura ta pozwala na dalsze zmniejszenie liczby funkcji Boolowskich realizowanych przez automat do: nP(PYY) = R2 + R1. (9) DziĊki zastosowaniu kodowania obu systemów realizowanych w pierwotnej strukturze P uzyskuje siĊ znaczne zmniejszenie liczby realizowanych funkcji co pozwala na zmniejszenie liczby tablic LUT wymaganych do implementacji automatu w strukturze FPGA. 3.2. Z podziałem poprzez stan aktualny Metoda gdzie kod aktualnego stanu jest wykorzystany jako czĊĞciowy kod stanu wewnĊtrznego jest podobna do metody omówionej powyĪej. W tym przypadku zbiór stanów wewnĊtrznych as ∈ A = {a1, …, aM} jest dzielony na podstawie aktualnego stanu am. Prowadzi to do powstania M podzbiorów A(am) ⊆ A i stan as ∈ A(am) tylko wtedy gdy jest stanem przejĞcia podczas ze stanu am. Niech Cm = ¨A(am)¸ i C0 = max(C1, …, CM), i zakodujmy kaĪdy stan wewnĊtrzny as ∈ A(am) binarnym kodem Km(as) na PRZEGLĄD TELEKOMUNIKACYJNY - ROCZNIK LXXXI - nr 6/2008 767 R3 = ªlog2 C0º bitach. Zmienne τ r ∈ Τ = {τ 1 ,,τ R3 } zostaną wykorzystane do reprezentacji tego kodu. W tym przypadku kod stanu wewnĊtrznego K(as) jest reprezentowany przez wielokrotny kod stanu wewnĊtrznego Km(as) i kod aktualnego stanu K(am): (10) Układ logiczny automatu z tym kodowaniem moĪe zostaü zrealizowany z wykorzystaniem dwupoziomowej struktury PAY (rys. 4) [3]. Z Y Y CC ĭ RG Q 5. System A♠ ♠S (11) w porównaniu ze strukturą PYY. Struktura ta równieĪ pozwala na dalsze zmniejszenie liczby funkcji Boolowskich realizowanych przez automat do: nP(PAY) = R3 + R1 (12) w porównaniu ze strukturami P i PY. Bardzo trudne jest oszacowanie relacji pomiĊdzy wartoĞciami parametrów nP(PYY) i nP(PAY) poniewaĪ ich wartoĞci są ĞciĞle powiązane z charakterystyką konkretnie implementowanego algorytmu sterowania. Tak wiĊc dobór struktury PYY lub PAY musi zostaü wykonany eksperymentalnie. 4. Metoda syntezy W rozdziale tym zostanie przedstawiona specjalna metoda syntezy do wczeĞniej przedstawionych struktur PYY i PAY (rys. 3 i 4). Metoda ta składa siĊ z nastĊpujących kroków: 1. Utworzenie i kodowanie mikroinstrukcji. Krok ten opiera siĊ na odczytaniu z tablicy przejĞü-wyjĞü automatu wszystkich róĪnych mikroinstrukcji i zakodowaniu ich binarnym kodem K(Yt). 2. Podział zbioru stanów wewnĊtrznych. W kroku tym zbiór stanów wewnĊtrznych dzielony jest na T lub M podzbiorów. KaĪdy podzbiór zawiera tylko stany które są stanami przejĞcia podczas wykonywania t-ej mikroinstrukcji lub z m-go stanu. 3. Wielokrotne kodowanie stanów wewnĊtrznych. Krok ten polega za zakodowaniu binarnym kodem Kt(as) lub Km(as) wszystkich stanów wewnĊtrznych niezaleĪnie w kaĪdym z podzbiorów. 4. Utworzenie tablicy przejĞü-wyjĞü dla automatu PYY lub PAY. W kroku tym tworzy siĊ przekształconą tablicĊ przejĞü-wyjĞü, która jest podstawą do utworzenia systemu (7). Jest ona tworzona z oryginalnej tablicy przejĞü-wyjĞü poprzez zastąpienie kolumny Yh kolumną Zh oraz kolumn K(as) i Φh kolumnami Kt(as) lub Km(as) i Τh. Kolumna Zh zawiera zmienne zr ∈ Z, które są równe 1 w kodzie K(Yt). Kolumna Τh zawiera zmienne IJr ∈ Τ, które są równe 1 w kodzie Kt(as) lub Km(as). 5. Utworzenie tablicy dekodera mikroinstrukcji. Krok ten prowadzi do powstania tablicy, która jest podstawą do utworzenia systemu (3). Tablica ta posiada kolumny K(Yt), Yt, t. Kolumna Yt powinna byü zapisana w formacie binarnym. Tab. 1. Wyniki syntezy logicznej Tab. 1. Results of logic synthesis P FSM bbsse ex1 ex4 ex6 mc planet s1 s1a s298 s386 s510 s820 sand sse styr 11 24 13 11 7 25 11 11 14 11 13 24 14 11 15 PY 8 11 8 7 5 12 10 6 11 8 10 10 10 8 10 PAY 112 1216 144 128 40 1216 192 12 48 112 112 608 288 112 320 PRZEGLĄD TELEKOMUNIKACYJNY - ROCZNIK LXXXI - nr 6/2008 7 9 5 7 4 8 9 5 6 7 6 8 9 7 8 PYY 624 2496 272 320 56 2752 2752 2752 16432 624 1648 1888 2848 624 1600 7 8 6 5 4 11 6 6 10 7 9 10 9 7 9 Rozmiar pamiĊci [bity] ĭ = ĭ(Q, Τ) Zaproponowane metody syntezy zostały zaimplementowane w autorskim systemie do logicznej syntezy skoĔczony automatów stanów o nazwie Automata Synthesis (A♠S) System. Oprogramowanie to zostało wykonane w Ğrodowisko Borland C++ Builder i pracuje w trybie konsolowym systemu Windows. WejĞciem do procesu syntezy, z wykorzystaniem tego oprogramowania, jest automat opisany w formacie KISS2 [7]. Efektem koĔcowym syntezy jest zbiór plików opisujących poszczególne moduły wybranej struktury automatu. Pliki wyjĞciowe zapisane są w jĊzyku opisu sprzĊtu Verilog. Układy kombinacyjne opisane są zbiorem równaĔ logicznych z zastosowanie konstrukcji assign. ZawartoĞü pamiĊci opisana jest z wykorzystaniem instrukcji case oraz specjalnych dyrektyw umoĪliwiających implementacjĊ z wykorzystaniem osadzonych bloków pamiĊci. Generowany jest równie moduł najwyĪszego poziomu, który zawiera opis połączeĔ pomiĊdzy poszczególnymi blokami. System generuje równieĪ plik raportu w którym miĊdzy innymi podawana jest liczba realizowanych funkcji logicznych oraz wymagany rozmiar pamiĊci. Zaimplementowane metody syntezy zostały przetestowane z wykorzystaniem modeli testowych z biblioteki LGSynth91 [7]. Wyniki syntezy wybranych układów są przedstawione w tabeli 1. Liczba funkcji Boolowskich Układy RG, Y i P mają taką samą budowĊ i implementują te same systemy funkcji jak w strukturze PYY. Tylko układ CC implementuje inny system: Rozmiar pamiĊci [bity] Rys. 4. Schemat blokowy automatu Mealy’ego o strukturze PAY Fig. 4. The structural diagram of the PAY Mealy FSM Liczba funkcji Boolowskich ȉ Rozmiar pamiĊci [bity] P Liczba funkcji Boolowskich X Liczba funkcji Boolowskich K(as) = Km(as) ∗ K(am). 6. Utworzenie tablicy konwertera kodu. W kroku tym tworzy siĊ tablicĊ, która jest podstawą do utworzenia systemu (8) lub (11). Tablica ta posiada kolumny Kt(as) lub Km(as), K(Yt) lub K(am), K(as), i. 7. Utworzenie równaĔ logicznych opisujących działanie układu P. Krok ten prowadzi do uzyskania równaĔ Boolowskich opisujących system (7). Tworzone są na podstawie tablicy przejĞü-wyjĞü dla automatu PYY lub PAY. 8. Implementacja układu logicznego automatu PYY lub PAY. Krok ten jest ostatnim etapem i prowadzi do uzyskania układu logicznego realizującego algorytm sterowania. W przypadku implementacji z wykorzystaniem układów FPGA układ P i rejestr RG implementowane są z wykorzystaniem programowalnych bloków logicznych – układ P tablic LUT a rejestr RG przerzutników typu D. Układ Y implementowany jest z wykorzystaniem osadzonych bloków pamiĊci, gdzie K(Yt) jest adresem a Yt jest słowem z pod tego adresu. Układ CC równieĪ jest implementowany z wykorzystaniem osadzonych bloków pamiĊci, gdzie adresem jest konkatenacja Kt(as) i K(Yt) lub Km(as) i K(am) a wartoĞü słowa zapisanego pod tym adresem stanowi K(as). 624 2496 400 224 72 13504 512 332 8240 624 3184 5728 2848 624 2880 768 MoĪna zauwaĪyü, Īe liczba funkcji Boolowskich uzyskana dla proponowanych metod (PYY i PAY) nigdy nie jest wiĊksza niĪ dla metod standardowych (P i PY). Uzyskane wyniki pokazują, Īe metoda PAY w wiĊkszoĞci przypadków daje mniejszą liczbĊ funkcji Boolowskich niĪ metoda PYY. Jednak w niektórych przypadkach zastosowanie tej drugiej metody daje lepsze rezultaty zarówno pod wzglĊdem iloĞci realizowanych funkcji logicznych jak i wymaganego rozmiaru pamiĊci. Wyniki te uzaleĪnione są od charakterystyki konkretnego algorytmu sterowania i dobór odpowiedniej metody syntezy musi byü wykonywane indywidualnie dla kaĪdego układu sterowania. ZauwaĪyü moĪna, Īe proponowane metody wymagają zastosowania pamiĊci o wiĊkszym rozmiarze niĪ metoda PY. NaleĪy tu jednak wspomnieü, Īe rozmiary osadzonych bloków pamiĊci w nowoczesnych układach FPGA kształtują siĊ od 4Kb do 36Kb i w kaĪdym układzie znajduje siĊ od kilku do kilkunastu takich bloków. Tak wiĊc zwiĊkszenie rozmiaru pamiĊci wymaganej do implementacji układów Y i CC nie ma negatywnego wpływu na wyniki implementacji. 6. Podsumowanie Zaproponowane w tym artykule metody syntezy logicznej skoĔczonych automatów stanów z wyjĞciami typu Mealy’ego z wielokrotnym kodowaniem stanów wewnĊtrznych w oparciu o aktualnie wykonywaną mikroinstrukcjĊ albo aktualny stan automatu pozwala na zmniejszenie liczby funkcji Boolowskich implementowanych poprzez kombinacyjną czĊĞü automatu cyfrowego. Prowadzi to do zmniejszenia wymaganej liczby tablic LUT do implementacji układu w strukturze FPGA. Do weryfikacji opracowanych metod zostało wykonane autorskie oprogramowanie A♠S System. Uzyskane wyniki pokazały, Īe obie metody zmniejszają liczbĊ funkcji Boolowskich realizowanych przez kombinacyjną czĊĞü automatu. Przeanalizowane pliki testowe pokazują, Īe zaproponowane metody są lepsze od standardowych. ĝredni zysk na liczbie realizowanych funkcji logicznych wynosi 43% w porównaniu ze strukturą P i 17% w porównaniu ze strukturą PY. Wynik ten jednak mocno zaleĪy od parametrów konkretnego algorytmu sterowania i wacha siĊ od 0% do 68% w porównaniu ze strukturą P i od 0% do 60% w porównaniu ze strukturą PY. 7. Literatura [1] Baranov S.: Logic Synthesis for Control Automat, Kluwer Academic Publisher, Boston, 1994. [2] Barkalov A., WĊgrzyn M.: Design of Control Units with Programmable Logic, University of Zielona Góra Press, Zielona Góra, 2006. [3] Bukowiec A.: Synteza automatów skoĔczonych z wykorzystaniem metod kodowania wielokrotnego, Materiały II konferencji naukowej Informatyka - sztuka czy rzemiosło KNWS'05, Złotniki LubaĔskie, 17-22. [4] Jenkins J.: Designing with FPGAs and CPLDs, Prentice Hall, New Jersey, 1994. [5] Łuba T.: Synteza układów logicznych, Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa, 2005. [6] Salcic Z.: VHDL and FPLDs in Digital Systems Design, Prototyping and Customization, Kluwer Academic Publishers, Boston, 1998. [7] Yang S.: Logic Synthesis and Optimization Benchmarks User Guide. version 3.0, Technical report, Microelectronics Center of North Carolina, North Carolina, 1991. Title: Logic Synthesis of FSMs with Multiple Encoding of States Artykuł recenzowany PRZEGLĄD TELEKOMUNIKACYJNY - ROCZNIK LXXXI - nr 6/2008 769