TC Moduł 15

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Zaawansowane metody syntezy logicznej w projektowaniu układów cyfrowych w strukturach programowalnych.

Jak już mówiliśmy ogromną rolę w technice cyfrowej spełniają układy programowalne, często określane nazwą programowalnych modułów logicznych lub krótko hasłem FPLD (Field Programmable Logic Devices).

Obecnie produkowane układy FPLD w zależności od ich struktury klasyfikujemy na: proste układy PLD, złożone układy PLD (Complex PLD, w skrócie CPLD) oraz układy FPGA. W prostych układach PLD podstawowym elementem konstrukcyjnym jest matryca AND-OR i zespoły elementów wyjściowych, które w najprostszych układach ograniczają się do przerzutników i trójstanowych buforów wyjściowych, a w bardziej rozbudowanych obejmują dodatkowo multipleksery oraz bramki XOR i z tych powodów nazywane są makrokomórkami (Macrocell).

Matryca AND-OR może być matrycą typu PAL (Programmable Array Logic), której cechą charakterystyczną jest programowalna matryca AND i stała matryca OR lub typu PLA (Programmable Logic Array), gdzie obie matryce, AND i OR są programowalne. Znaczy to, że PAL jest zespołem bramek iloczynowych dołączonych do oddzielnych bramek OR, a w PLA każda bramka AND może być dołączona do dowolnej bramki OR.



Symboliczny schemat matrycy PLA rozumieć należy następująco: linie poziome reprezentują zmienne wejściowe i wyjściowe. Linie wejściowe są podwójne, górna odpowiada zmiennej w postaci prostej, dolna – zmiennej w postaci zanegowanej. Linie pionowe reprezentują iloczyny (wejścia bramek AND). Zmienna (prosta lub zanegowana) jest czynnikiem iloczynu jeżeli na przecięciu odpowiedniej linii poziomej i pionowej jest kropka. Jeśli iloczyn ten jest składnikiem odpowiedniej sumy (bramki OR) – analogiczna kropka jest umieszczona na przecięciu linii pionowej i poziomej wyjściowej. Fizycznie kropka oznacza, że dany punkt połączeniowy między linią pionową i poziomą jest zaprogramowany. Proces programowania jest wykonywany automatycznie, najczęściej na podstawie schematu punktów programowania wytworzonego wg. procesu syntezy wykonanego w komputerowym systemie projektowania. W rezultacie tradycyjny układ logiczny zbudowany z bramek może być łatwo zrealizowany w strukturze PLA.

W podobny sposób interpretujemy schemat matrycy PAL. Jedyną różnicą jest to, że w tym przypadku wyjścia bramek AND są dołączone do wejść bramek OR na stałe – czyli nie są programowane. Z tych powodów liczba linii iloczynu w strukturach typu PAL jest przy realizacjach zespołów funkcji na ogół większa niż w matrycach PLA. Mimo to w produkowanych obecnie strukturach programowalnych częściej stosuje się matryce typu PAL. Decydują o tym inne zalety tych struktur, a właściwie technologiczne wady matryc PLA.

Bardziej rozbudowane struktury programowalne to przede wszystkim układy CPLD oraz FPGA.

W układach CPLD cechą charakterystyczną struktury jest programowalna matryca połączeń (PIA – Programmable Interconnect Array) otoczona makrokomórkami (Macrocell).

Typowa makrokomórka układów CPLD typu MAX (ALTERA) jest zbudowana z matrycy AND-OR (najczęściej typu PAL), z programowalnych przerzutników, bramek OR i XOR, multiplekserów i buforów trójstanowych. Jest to jakby sekcja układu PAL dodatkowo wyposażona w przerzutniki i inne elementy logiczne spełniające rolę pomocniczą.

Cechą charakterystyczną tej struktury są bloki logiczne LAB (Logic Array Block), zbudowane z matrycy tzw. ekspanderów i matrycy makrokomórek (na ogół kilkanaście makrokomórek) połączonych z matrycą PIA i blokiem wejściowo-wyjściowym (I/O Control Block).



W układach FPGA typową strukturą jest prostokątna macierz elementów logicznych zwanych komórkami, rozmieszczonych w środowisku komutacyjnym kanałów połączeniowych, jak to jest pokazane na rysunku na planszy.

Komórka struktur FPGA jest zazwyczaj zbudowana z uniwersalnego układu kombinacyjnego (w sensie możliwości realizacji dowolnej funkcji logicznej) o kilku wejściach i jednym lub dwóch wyjściach, przerzutników i pomocniczych multiplekserów. Uniwersalny układ kombinacyjny nazywa się strukturą tablicową – LUT (Look Up Table), a jednocześnie klasę układów zbudowanych z takich komórek nazywa się układami FPGA typu LUT. Budowa komórek układów FPGA wywarła ogromny wpływ na rozwój specjalnych procedur syntezy logicznej zwanych dekompozycją funkcjonalną.



Wpływ zaawansowanych procedur syntezy logicznej na jakość implementacji sprzętowych układów cyfrowych jest najbardziej znaczący w algorytmach wykorzys¬tujących struktury FPGA typu LUT. Struktury takie są powszechnie stosowane w ukła¬dach przetwarzania informacji i sygnałów np. w realizacjach algorytmów kryptogra¬ficznych, w filtrach cyfrowych, układach transformacji falkowej oraz w realiza¬cjach układów wykorzystujących arytmetykę rozproszoną. Zatem stosowanie zaawansowanych procedur syntezy logicznej – dostępnych głównie w oprogramowaniu uniwersyteckim – niejednokrotnie może się przyczynić do sukcesu rynkowego wielu urządzeń cyfrowych, w szczególności tych realizowanych w technologii układów programowalnych przez użytkownika PLD/FPGA.

Zalety struktur FPGA to przede wszystkim elastyczność architektury (równoległość przetwarzania i dowolna szerokość ścieżki danych), wielokrotne użycie tych samych zasobów sprzętowych oraz rekonfigurowalność. Wady to niedoskonałość narzędzi projektowania oraz trudny proces uczenia się języka HDL.

Jak już mówiliśmy, tworzenie modelu układu cyfrowego w języku HDL bardziej przypomina pisanie programów komputerowych niż tradycyjne projektowanie polegające na syntezie strukturalnej. Tym samym synteza układów cyfrowych za pomocą komputerowych narzędzi projektowania jest złożonym procesem, którego procedury obejmują:
a) specyfikację układu w języku HDL,
b) syntezę funkcjonalną,
c) syntezę i optymalizację logiczną,
d) odwzorowanie technologiczne,
e) syntezę fizyczną lub programowanie układu.