Układy programowalne

advertisement
Paweł Bogumił BRYŁA – IV rok
Koło Naukowe Techniki Cyfrowej
Dr inŜ. Wojciech Mysiński – opiekun naukowy
PROGRAMMABLE DEVICES
UKŁADY PROGRAMOWALNE
Keywords: PAL, PLA, PLD, CPLD, FPGA, programmable device, electronic circuit, logic,
array, field
Słowa kluczowe: PAL, PLA, PLD, CPLD, FPGA, układ programowalny, układ elektroniczny,
logiczne, matryca
UKŁADY PROGRAMOWALNE
1. Wprowadzenie
Układy cyfrowe moŜna podzielić na dwie grupy – standardowe układy scalone oraz na
tzw. układy ASIC (Application Specific Integrated Circuit). W przypadku zwykłych układów
scalonych ich właściwości funkcjonalne są ustalane w procesie produkcji i nie mogą być
później zmieniane. Natomiast właściwości układów ASIC są określane w zaleŜności od
potrzeb przez ostatecznego uŜytkownika, a nie przez producenta. Do grona układów ASIC
moŜna zaliczyć układy programowalne PLD (Programmable Logic Devices), ale biorąc pod
uwagę moŜliwość wielokrotnego przeprogramowywania większości układów PLD oraz
łatwość ich wytwarzania, stanowią one jakby odrębną rodzinę.
Układy programowalne moŜna podzielić na:
•
SPLD (Simple Programmable Logic Device) – proste układy programowalne
•
CPLD (Complex Programmable Logic Device) – złoŜone układy programowalne
•
FPGA (Field Programmable Gate Array) – programowalne matryce bramkowe
Konfigurowanie układów programowalnych moŜe odbywać się następującymi metodami:
1. Odpowiednio przygotowane ścieŜki do przepalenia (przez przepuszczenie prądu o duŜym
natęŜeniu) – podczas programowania takie zwarcia są usuwane. Układy te mogą być
programowane tylko raz.
2. Elementy nie przewodzące, w których podczas programowania następuje przebicie
dielektryka między warstwami przewodzącymi, połączenia te charakteryzują się małą
rezystancją połączeń. RównieŜ jednokrotnie programowalne. Układy te mogą być
programowane przez końcowego uŜytkownika.
3. Z wykorzystaniem tranzystorów MOS, które po włączeniu w stan przewodzenia zwierają
ścieŜki; istnieje tu kilka moŜliwości wykorzystania tranzystorów: jako komórki pamięci
EPROM, EEPROM, Flash lub zwykłe tranzystory MOS, które są zasilane z pamięci
statycznej RAM. Układy tego typu są reprogramowalne. W układach z pamięcią RAM po
wyłączeniu zasilania konfiguracja logiczna jest tracona. Po ponownym włączeniu
zasilania następuje ładowanie konfiguracji z zewnętrznych pamięci konfiguracyjnej.
Układy FPGA programowane w ten sposób mogą być rekonfigurowane w czasie pracy.
UŜywając układów programowalnych moŜna zaoszczędzić miejsce na płytce drukowanej
oraz stosować zasilanie o mniejszej mocy. Zmniejszony pobór mocy w porównaniu ze
standardowymi układami elektronicznymi uzyskuje się dzięki wysokiemu stopniowi scalenia
oraz mniejszej liczbie zacisków zewnętrznych.
2. Układy PLD (SPLD)
Do układów SPLD zalicza się przede wszystkim układy o architekturach PLA i PAL. Są
to najtańsze i najprostsze układy. WiąŜą się z tym niestety niezbyt duŜe moŜliwości logiczne.
Układy PLD są układami o małej skali integracji. Zawierają nie więcej niŜ 500 bramek
logicznych, 24 makrokomórki i nie więcej niŜ 40 linii I/O. Układy te są produkowane głównie
w technologii CMOS.
PAL (Programmable Array Logic)
Rys. 1. Schemat logiczny układu PAL
Architektura PAL składa się z dwóch matryc: AND i OR. Matryca AND jest
programowalna a matryca OR skonfigurowana na stałe. Funkcje logiczne są realizowane jako
sumy iloczynów sygnałów wejściowych.
PLA (Programmable Logic Array)
Rys. 2. Schemat logiczny układu PLA
Układ ten róŜni się od PAL tylko tym, Ŝe występującą tu matryca OR jest programowalna
tak jak matryca AND.
W większości produkowanych układów PLD, programowalne matryce AND są
wyposaŜane w dodatkowe linie, którymi są doprowadzane sygnały sprzęŜenia zwrotnego
z wyjść matrycy OR, przerzutników wyjściowych lub innych elementów makrokomórek
wyjściowych.
Podstawowe parametry czasowe to: czas propagacji (tPD; to czas, który upływa od
momentu wystąpienia zmiany na zewnętrznych zaciskach układu do momentu ustalenia się
wartości na wyjściu układu kombinacyjnego), czas ustawiania (tS; to minimalny czas,
w którym sygnał wejściowy przerzutnika musi być stabilny przed nadejściem zbocza
wyzwalającego sygnału zegarowego), czas trzymania (tH; to minimalny czas, w którym
sygnał na wejściu przerzutnika musi być stabilny po wystąpieniu zbocza wyzwalającego
sygnału taktującego), opóźnienie sygnału taktującego do wyjścia (tCO; czas jaki upływa od
momentu zmiany sygnału taktującego podanego na zewnętrzny zacisk układu do chwili
ustalenia się stabilnego stanu na innym zacisku zewnętrznym układu), opóźnienie propagacji
sygnału taktującego przez matrycę logiczną do wyjścia (tCO2; ), opóźnienie zegara
systemowego do zegara systemowego (tSCS; minimalny czas sygnału taktującego, wymagany
do wykonania operacji logicznych w strukturze między rejestrami; naleŜy tu wliczyć czasy
ustawiania obydwu rejestrów). Maksymalna częstotliwość pracy jest określana wg zaleŜności:
f max = 1
t SCS
.
3. Układy CPLD
Układy CPLD są podobne do układów SPLD, ale mają większe zasoby logiczne
i moŜliwości funkcjonalne. Zawierają od kilkudziesięciu do kilkuset makrokomórek
łączonych w większe bloki logiczne po 4÷16 (struktura hierarchiczna). Układy CPLD
wytwarzane są zwykle w technologii MOS i wyposaŜane w pamięć EPROM, EEPROM
i Flash. Pierwsze układy CPLD oparte były na technologii PAL, przy znacznie zwiększonym
wymiarze programowalnej matrycy AND. Dzięki temu uzyskano znaczne zwiększenie ilości
sygnałów wejściowych, a takŜe większą liczbę rejestrów wyjściowych. To rozwiązanie było
jednak za wolne, co było wynikiem zwiększenia się pojemności pasoŜytniczych. Kolejna
architektura była takŜe oparta na strukturach PAL, ale połączono je szybką, programowaną
matrycą połączeniową. We współczesnych układach CPLD matryce połączeniowe
realizowane są w postaci programowalnych multiplekserów, które dostarczają sygnały z linii
wejściowych i sprzęŜenia zwrotnego do bloków logicznych. Czas propagacji nie przekracza
zwykle 3 ns. Czasy te są róŜne w zaleŜności od producenta i uŜytych technologii. Matryce
połączeniowe wykonywane są takŜe jako wielopoziomowe. W układach tych jest moŜliwe
poprowadzenie wszystkich połączeń, czyli dowolne wejście do połączenia programowalnego
moŜe być połączone z dowolnym blokiem logicznym, o ile nie wykorzystano juŜ wszystkich
wejść danego bloku. Rozmiar bloku logicznego określa jego moŜliwości czyli liczbę
elementów logicznych, które moŜna w nim zaimplementować. WaŜnym elementem jest takŜe
liczba wejść do bloku, liczba iloczynów oraz schemat rozprowadzenia tych iloczynów
wewnątrz struktury. Większość linii iloczynowych moŜe być uŜywana przez cztery sąsiednie
makrokomórki, bez ryzyka wystąpienia dodatkowych opóźnień. Sygnały wejściowe mogą być
kombinacyjne, zatrzaskowe lub zapisywane w rejestrze. Czasem sygnał asynchroniczny
względem zegara systemowego jest synchronizowany przez dwa przerzutniki, aby zwiększyć
niezawodność systemu. Parametry czasowe są takie same jak w przypadku układów SPLD:
czas propagacji, czas ustawiania, opóźnienie sygnału taktującego do wyjścia oraz czas
przejścia sygnału od rejestru do rejestru. W przypadku układów CPLD mamy do czynienia
z kilkoma własnościami, które odróŜniają je między sobą, a mianowicie: programowanie
układu w systemie (ISP – In System Programmability), przeprogramowanie układu
w systemie (ISR – In System Reprogrammability), napięcie pracy (5V lub 3,5 V), port dla
sygnałów testujących i moŜliwość testowania przez złącze obserwacyjno-testujące (JTAG –
Joint Test Action Group) oraz bufory wejściowe i wyjściowe, które są zgodne ze standardem
połączeń PCI (Peripherial Component Interconnect)
Rys. 3. Schemat logiczny układu o architekturze CPLD
4. Układy FPGA
Układy FPGA składają się z bloków logicznych rozmieszczonych matrycowo,
połączonych za pomocą tras i matryc kluczy połączeniowych, umieszczonych na przecięciu
tras poziomych i pionowych. Na brzegach znajdują się programowalne bloki we/wy.
Zawierają zwykle od 64 do dziesiątków tysięcy bloków logicznych. Bloki logiczne
w układach FPGA mogą być bardzo zróŜnicowane. ZłoŜone bloki zawierają dwie lub więcej
pamięci RAM i dwa lub więcej przerzutników. W prostszych blokach występują zwykle
dwuwejściowe układy generacji funkcji kombinacyjnych lub czterowejściowe multipleksery
i przerzutniki. Układy FPGA charakteryzują się duŜą liczbą sygnałów we/wy oraz duŜym
upakowaniem rejestrów. UmoŜliwiają zwiększenie, w dość znacznej mierze, stopnia scalenia.
MoŜna je programować i przeprogramowywać w systemie.
Architektura komórek logicznych jest róŜna, w zaleŜności od tego w jaki sposób są
wykonywane połączenia. W strukturach z izolowanymi połączeniami moŜna stosować
większą liczbę sygnałów we/wy dzięki duŜej ilości linii do przenoszenia sygnałów
i bezpieczników, dzięki którym moŜna wykonać prawie wszystkie dowolne połączenia.
W układach opartych na technologii SRAM komórki logiczne są większe o mniejszej liczbie
we/wy. Nadają się one do implementacji skomplikowanych funkcji logicznych bez większego
wpływu na opóźnienia.
Wadą układów FPGA jest to, Ŝe połączenia między blokami są zestawiane z części, co
moŜe prowadzić do występowania opóźnień. Pod tym względem układy CPLD są lepsze
poniewaŜ posiadają ciągłe połączenia dzięki czemu opóźnienia są mniejsze, stałe
i przewidywalne. Powszechnie stosowane są wejścia i obwody specjalnego przeznaczenia
charakteryzujące się niskim poziomem zniekształceń, którymi rozprowadzane są sygnały
zegarowe. Układy FPGA mogą pracować zasilane napięciami 5V i 3,5V, z niskim poborem
mocy. Mogą być takŜe testowane przez złącze obserwacyjno-testujące zgodne ze standardem
JTAG. Posiadają zgodność sygnałów we/wy ze standardem PCI.
Rys. 4. Architektura układu FPGA
LITERATURA
[1] Pasierbiński Jerzy, Zbysiński Piotr: „Układy programowalne”, WKŁ, Warszawa 2002.
[2] Skahill Kevin: „Język VHDL”, WNT, Warszawa 2001.
[3] Zwoliński Mark: „Projektowanie układów cyfrowych z wykorzystaniem języka VHDL”, WKŁ, Warszawa
2002.
[4] http://www.xilinx.com/
[5] http://www.altera.com/
Download