uklady fpga w przykladach 01, uklady logiczne, Układy FPGA

[ Pobierz całość w formacie PDF ]
K U R S
Układy FPGA
w przykładach, część 1
Duże układy PLD tanieją
w tempie zbliżonym do
popularnych mikrokontrolerów,
co spowodowało, że układy
FPGA o dużych zasobach
logicznych nie tylko są już
tańsze od stosunkowo prostych
układów CPLD, ale stały się
dostępne dla szerokich rzesz
użytkowników. Wiedza na temat
ich możliwości i sposobów
przygotowywania projektów nie
jest jednak powszechna, czego
dowiodła sierpniowa ankieta
publikowana na naszej stronie
internetowe: ponad 95% spośród
4779 głosujących poparło pomysł
rozpoczęcia kursu projektowania
na układach FPGA na łamach
EP. Oto i on…
Co, czym i jak
Przygotowany przez nas kurs jest
maksymalnie zorientowany na prakty-
kę, co oznacza, że skupimy się przede
wszystkim na przykładowych projek-
tach. Nie obędzie się jednak bez nie-
zbędnego krótkiego wstępu, w którym
przedstawimy architekturę układów
Spartan 3 (które zostały wybrane jako
kursowa platforma sprzętowa), możli-
wości oferowane przez zasoby sprzę-
towe tych układów, poznamy wybrane
sposoby konfiguracji isposoby progra-
mowania tych układów, aż – w końcu
– dojdziemy do serii przykładowych
projektów. Wszystkie projekty będą
przystosowane do łatwej implementa-
cji w dalej opisanym zestawie PLD.
Planowane przez autorów etapy
kursu (zapraszamy Czytelników do
przekazywania sugestii!) przedstawio-
no na
str. 90
.
Biblioteki dla Protela 99SE/DXP
Producent modułów ZL10PLD udostępnił
na swojej stronie internetowej biblioteki do
edytorów PCB i SCH (w formacie Protel/Altium),
dzięki którym moduł ten można wygodnie
„wprojektowywać” we własne aplikacje.
torem taktującym, złączem JTAG oraz
przyciskiem umożliwiającym ręczne
wymuszenie rekonfiguracji układu
FPGA. Na
fot.
1
pokazano wygląd
płyty bazowej ZL9PLD przygotowa-
nej do zainstalowania modułu
dipPLD
z układem XC3S200 oraz wyświetla-
cza LCD o organizacji 2x16 znaków.
Na
fot.
2
pokazano moduł ZL10PLD
(
dipPLD
) z układem XC2S200 i pozo-
stałymi peryferiami.
Schemat elektryczny płyty bazowej
pokazano na
rys.
3
. Standardowym
wyposażeniem płyty bazowej jest:
– gniazdo VGA (sposób sterowania
monitora umożliwia wyświetlenie
maksymalnie 8 kolorów),
– 4 przyciski do wykorzystania
w aplikacji użytkownika,
– złącze kart MMC,
– 8 diod LED,
– konwerter napięciowy interfejsu
RS232 z gniazdem DB9F,
– złącze konwertera USB<–>RS232
(np. ZL1USB, także dostępny
Kursowa platforma
sprzętowa
Ze względu na to, że zarów-
no wybrane przez nas układy FPGA
jak i ich konfiguratory są dostarczane
w obudowach niezbyt „sympatycz-
nych” podczas samodzielnego monta-
żu (jakkolwiek jest on możliwy nawet
w warunkach amatorskich), zrezygno-
waliśmy z przygotowy-
wania specjalnego zesta-
wu uruchomieniowego.
Zamiast tego w ofercie
handlowej AVT znaj-
dzie się uniwersalny
zestaw składający się
z płyty bazowej ZL9PLD
o sporych możliwo-
ściach oraz montowane-
go w jej gnieździe mo-
dułu
dipPLD
(ZL10PLD)
z zamontowanym ukła-
dem XC3S200, konfigu-
ratorem XCF01S (1 Mb
Flash), zestawem stabi-
lizatorów LDO, genera-
Wielokrotnie już na łamach EP
podejmowaliśmy próby przybliże-
nia Czytelnikom układów PLD. Po-
czątkowo (był to rok 1993), przede
wszystkim ze względu na łatwą do-
stępność, skupialiśmy się na ukła-
dach niskiej skali integracji (PAL
i GAL), następnie przeszliśmy przez
układy CPLD, teraz sytuacja (przede
wszystkim rynkowa) mocno już doj-
rzała do zajęcia się „na poważnie”
układami FPGA.
Jak najtaniej: Spartan 3 + WebPack ISE
Projekty przedstawione w kolejnych odcinkach
kursu będą przygotowywane w taki
sposób, aby można je był (w większości
przypadków) zaimplementować na dowolną
platformę sprzętową. Niektóre projekty będą
wykorzystywały specyficzne cechy docelowych
układów, co pozwoli zilustrować ich możliwości.
Ponieważ obecnie, w sprzedaży detalicznej
w naszym kraju są dostępne wyłącznie układy
firmy Xilinx, jako platformę sprzętową wybrano
układ XC3S200 z rodziny Spartan 3.
Fot. 1. Widok zestawu ZL9PLD
Okazja dla Czytelników EP zainteresowanych układami FPGA
Zestaw sprzętowy wykorzystywany w kursie jest do dostępny do 31.12.2006 na zasadach promocyjnych. Zakup zestawu składającego się z modułów
ZL9PLD (uniwersalna płytka bazowa) oraz ZL10PLD (modułu DIP z układem XC3S200 z rodziny Spartan 3 firmy Xilinx) jest premiowany programatorem
ZL4PRG (odpowiednik DLC III), za pomocą którego można programować i konfigurować wsystemie układy CPLD iFPGA firmy Xilinx.
www.sklep.avt.pl • www.sklep.avt.pl • www.sklep.avt.pl • www.sklep.avt.pl • www.sklep.avt.pl
Elektronika Praktyczna 10/2006
89
K U R S
Fot. 2. Wygląd modułu dip PLD
z układem XC3S200
dipPLD
.
Na
rys.
4
znajduje się schemat
elektryczny modułu
dipPLD
o ozna-
czeniu ZL10PLD. Zastosowano w nim
układ XC3S200, którego zasoby lo-
giczne odpowiadają ok. 200000 bra-
mek logicznych, zwanych często prze-
liczeniowymi. Jak wykażą przykłady,
są to zasoby trudne do nadwyrężenia
w średniozaawansowanych projektach.
Poważniejszym ograniczeniem prak-
tycznym jest stosunkowo niewiel-
ka liczba wyprowadzeń dostępnych
w obudowie (jest ich 100), ale da się
ono odczuć dopiero przy zaawanso-
wanych projektach. Żeby uzmysłowić
sobie możliwości dostępne współcze-
snym elektronikom warto wiedzieć,
że XC3S200 jest jednym z najmniej-
szych układów w rodzinie Spartan 3,
a największy układ spośród obecnie
dostępnych jest odpowiednikiem 5
mln bramek przeliczeniowych!
Standardowym wyposażeniem
modułu ZL10PLD, poza układem
XC3S200, jest:
– konfigurator Flash o pojemno-
ści 1 Mb (wyspecjalizowana pa-
Plan kursu
1. Wprowadzenie
• Budowa zestawu uruchomie-
niowego
• Programowanie i konfiguracja
układu XC3S200
• Tryby konfiguracji układu
XC3S200
• Zasilanie układu XC3S200
• Linie I/O w układzie
XC3S200
• JTAG jako uniwersalny
interfejs do programowania
i konfigurowania
2. Budowa, cechy funkcjonalne
i parametry układów FPGA
z rodziny Spartan 3
3. Projekty przykładowe
w ofercie handlowej AVT),
– głośnik piezoelektryczny,
– gniazdo USB, które służy do zasi-
lania (alternatywnie do zewnętrz-
nego zasilacza sieciowego),
– zasilacz stabilizowany zapewniają-
cy napięcia 5 V i 3,3 V,
– niewielkie pole uniwersalne (9x7
punktów),
– wyprowadzenia napięć zasilających
5 V i 3,3 V, dzięki którym można
zasilić zewnętrzne układy logicz-
ne,
– złącza szpilkowe gold–pin, na któ-
re wyprowadzono linie I/O układu
FPGA zamontowanego na module
mięć firmy Xilinx ooznaczeniu
XCF01S), zapewniający automa-
tyczną konfigurację FPGA po włą-
czeniu zasilania lub ręcznym wy-
muszeniu rekonfiguracji,
– stabilizatory zapewniające prawi-
dłowe napięcia zasilające o war-
tościach: 1,2, 2,5 (FPGA) i 3,3 V
(FPGA i konfigurator),
Rys. 3. Schemat elektryczny płyty bazowej (ZL9PLD)
90
Elektronika Praktyczna 10/2006
K U R S
FPGA – co trzeba o nich wiedzieć – tip #1
Pamięć konfiguracji
W większości przypadków układy FPGA są
wyposażone w pamięć konfiguracji typu
SRAM, z założenia ulotną (jej zawartość
zanika po odłączeniu zasilania). W związku
z czym, każdorazowo po włączeniu zasilania
konieczne jest skonfigurowanie układu FPGA,
co pozwoli układowi normalnie funkcjonować.
Z tego powodu elementem standardowego
systemu z FPGA jest wyspecjalizowana pamięć
Flash, w której jest przechowywana startowa
konfiguracja układu. Odtworzenie konfiguracji
układu po włączeniu zasilania może przebiegać
automatycznie i trwa od kilkunastu do kilkuset
milisekund.
nić komplet informacji Czytelnikom
zaczynającym z nami kurs.
Programowanie i konfiguracja FPGA
jest tematem z kategorii „podstawo-
wych” dla użytkowników FPGA, bo-
wiem bez jego zrozumienia i opano-
wania nie jest możliwe sprawdzenie
działania „w krzemie” nawet najlepiej
przygotowanego projektu.
Zaczniemy od rozróżnienia progra-
mowania i konfigurowania, bowiem –
wbrew popularnemu poglądowi – nie
FPGA – co trzeba o nich wiedzieć – tip #2
Napięcia na liniach I/O
Układy Spartan 3 (podobnie do większości
rozwiązań konkurencyjnych) nie są
przystosowane do współpracy z układami
cyfrowymi zasilanymi napięciem wyższym niż
3,3 V (niektóre nawet 2,5 V). Ograniczenie
to dotyczy obydwu konfiguracji linii I/O: jako
wejściowej i wyjściowej.
Użytkownicy zamierzający łączyć ze sobą
układy Spartan 3 z układami zasilanymi
napięciem 5 V powinni stosować konwertery
poziomów (choćby układy TTL z rodziny
LVC/LCX) lub (nie zawsze jest to wskazane)
rezystory włączone w szereg z linią I/O
ograniczające natężenie prądu wpływającego/
wypływającego do/z linii I/O.
Rys. 4. Schemat elektryczny modułu ZL10PLD
oznaczają tego samego.
Konfigurować
można wyłącznie układ FPGA poprzez
wprowadzenie do jego pamięci konfi-
guracji (SRAM) odpowiednich danych,
które uzyskuje się w końcowych eta-
pach kompilacji projektu. Wprowadze-
nie tych danych można (w przypadku
modułu ZL10PLD) uzyskać na jeden
z dwóch sposobów:
– za pośrednictwem interfejsu JTAG,
– za pośrednictwem wybranego in-
terfejsu konfiguracyjnego FPGA,
z zewnętrznej pamięci nieulotnej.
Zazwyczaj, ze względu na niewiel-
ką liczbę linii I/O zaangażowanych
do konfiguracji, wykorzystywane są
wyspecjalizowane konfiguratory, jak
to pokazano na
rys.
5
.
Z kolei
programować
można pa-
– podstawkę pod generator kwarco-
wy (standardowo 3,6864 MHz),
– diodę LED sygnalizującą poprawne
skonfigurowanie układu FPGA,
– przycisk umożliwiający wymusze-
nie rekonfiguracji FPGA wdowol-
nie wybranym przez użytkownika
momencie,
– dwa złącza szpilkowe (po 32 sty-
ki gold–pin każdy) umożliwiające
wygodne zainstalowanie modułu
w podstawce,
– zespół 5 inwerterów o charaktery-
styce przejściowej Schmitta (z hi-
sterezą) z serii 74LVC lub 74LCX,
które spełniają rolę układów do-
pasowujących napięcia pomiędzy
FPGA i zewnętrznymi układami
cyfrowymi zasilanymi napięciami
o wartości większej niż 3,6 V.
Programowanie
i konfigurowanie FPGA
Część z informacji prezentowanych
w tej części artykułu publikowaliśmy
już w EP. Powtarzamy je, żeby zapew-
Elektronika Praktyczna 10/2006
91
K U R S
Rys. 5. Konfiguracja łańcucha JTAG w ZL10PLD
Uwaga ta dotyczy także linii I/
O stosowanych podczas konfiguracji
za pomocą pamięci równoległych.
Ponieważ większość dostępnych na
rynku programatorów ISP jest przy-
stosowana do pracy z napięciami
z zakresu 3,3….5 V, konieczne jest
zastosowanie rezystorów ogranicza-
jących prądy wejściowe w liniach
I/O zasilanych napięciem o wartości
wyższej od 2,5 V (R5, R6, R7, R8
na rys. 4). Rezygnacja z tych rezy-
storów może spowodować (przez
przepływ prądu o zbyt dużym na-
tężeniu, zazwyczaj powyżej 10 mA)
uszkodzenie diod znajdujących się
w strukturze układu pomiędzy linią
I/O i linią zasilania (
rys.
6
), może
także spowodować uszkodzenie lub
niepoprawną pracę stabilizatora na-
pięcia zasilającego, który – z natury
rzeczy – nie jest przystosowany do
przyjmowania prądu wpływającego
od strony wejścia. Z tego powodu,
oprócz rezystorów ograniczających
prąd wejściowy, konieczne jest za-
stosowanie rezystora odbierającego
prąd zwrotny (I
REV
na rys. 6) z linii
zasilającej V
CCAUX
.
Poważną (w stosunku do niektó-
rych rozwiązań oferowanych przez
firmy konkurencyjne) zaletą układów
Spartan 3 jest możliwość dołączania
napięć zasilających w dowolnej ko-
lejności. Można więc stosować stan-
dardowe stabilizatory pozbawione
sekwencerów zasilania – ma to po-
ważny wpływ na ograniczenie kosztu
(i tak niełatwych do zdobycia) pod-
zespołów zastosowanych w obwodach
zasilania.
mięć Flash, zintegrowaną w konfigu-
ratorze. W przypadku układu XCF01S
jest ona dostępna (co oznacza, że
można ją programować, odczyty-
wać i kasować) za pomocą interfejsu
JTAG.
Ponieważ zarówno konfigurator
jak i FPGA zastosowane w module
ZL10PLD są wyposażone w interfejs
JTAG, układy te połączono w łań-
cuch JTAG, którego budowę pokazano
na rys. 5. Jako pierwszy w łańcuchu
(czyli „najbliżej” sygnału TDI progra-
matora) ulokowano układ XC3S200,
drugim (i ostatnim w łańcuchu) ukła-
dem jest XCF01S. Takie rozwiązanie,
przy jednoczesnym podłączeniu kon-
figuratora do interfejsu konfiguracyj-
nego FPGA powoduje, że użytkownik
może:
– modyfikować (wtym programować)
i odczytywać zawartość pamięci
Flash konfiguratora (via JTAG),
– konfigurować FPGA (via JTAG),
– wymusić automatyczną konfigu-
rację FPGA po włączeniu zasila-
nia (via interfejs konfiguracyjny
FPGA). Początek konfiguracji jest
wyznaczany przez układ monito-
rujący napięcie zasilania, dzięki
czemu ryzyko rozpoczęcia konfi-
guracji przed ustabilizowaniem się
napięcia zasilającego jest zminima-
lizowane.
Na schemacie z rys. 5 pogrubioną
linią zaznaczono ścieżkę przesyłania
danych w łańcuchu JTAG. Należy pa-
miętać, że wszystkie układy wchodzą-
ce w skład łańcucha mają równolegle
połączone (sterowane z programatora)
linie: TCK i TMS, które służą od-
powiednio do: taktowania i ustalania
trybu pracy interfejsu JTAG. Przycisk
służy do ręcznego wymuszania rekon-
figuracji układu FPGA – jego naciśnię-
cie wymusza skopiowanie zawartości
pamięci Flash do pamięci konfigurują-
cej SRAM wbudowanej w FPGA.
Sporo kłopotów może sprawić
początkującym użytkownikom ko-
nieczność stosowania
„dziwnych” rozwiązań
w ścieżkach sygnało-
wych interfejsu JTAG.
Wynika to z faktu, że
napięcie o wartości
2,5 V jest traktowane
jako maksymalne do-
puszczalne (zgodnie
z wymogami standar-
du napięciowego LVC-
MOS25) dla wszyst-
kich wyspecjalizowa-
nych linii I/O wyko-
rzystywanych podczas
konfiguracji układu
(są to: PROG_B,
TDI, TMS, TCK,
TDO, CCLK, DONE,
M0, M1, M2 oraz
H S WA P _ E N –
tab.
1
).
Rys. 6. Konfiguracja zabezpieczeń na liniach I/O
FPGA może wymusić konieczność stosowania dodat-
kowych rezystorów
92
Elektronika Praktyczna 10/2006
K U R S
FPGA – co trzeba o nich wiedzieć – tip #3
Współcześnie produkowane, „duże” pod względem zasobów, układy FPGA są zasilane w kłopotliwy
sposób, wymagają bowiem zazwyczaj dwóch lub trzech (m.in. układy z rodziny Spartan 3) napięć
zasilających o różnych wartościach. Jedną z najpoważniejszych przyczyn takich rozwiązań są
nowoczesne technologie produkcji struktur krzemowych, wykorzystywane do produkcji układów FPGA.
Z jednej strony zapewniają one duża gęstość upakowania struktur i w związku z tym ich relatywnie
niską cenę, z drugiej występuje konieczność zasilania „rdzenia” układu napięciem o niewielkiej
wartości, a linii
I/O współpracujących
z otoczeniem, napięciem
o wartości co najmniej
3,3 V.
Tego, że zasilanie
i sposoby dołączania
elementów peryferyjnych
do układów z rodziny
Spartan 3 wywołują
wiele problemów,
dowodzi specjalna nota
aplikacyjna przygotowana
w lutym 2006 firmę
Xilinx (jej oznaczenie:
XAPP453). Polecamy
jej przestudiowanie
wszystkim Czytelnikom
zainteresowanym tymi
układami.
FPGA – co trzeba o nich wiedzieć – tip #4
Wejścia M0…2 są przystosowane do
sterowania poziomami logicznymi zgodnymi
ze standardem LVCMOS25 co oznacza, że
maksymalna, bezpieczna wartość napięcia na
tym wejściu nie może być większa niż 2,5 V.
gramatora dołączonego do interfejsu
JTAG. Wybór aktywnego kanału ko-
munikacyjnego jest możliwy za po-
mocą zworki JP2 – układ FPGA jest
konfigurowany w jednym z dwóch
trybów zaznaczonych w tab. 2 za
pomocą szarego tła:
Master Serial
lub JTAG.
Linie I/O układu FPGA
podczas konfiguracji
Kolejnym zagadnieniem, wartym
do wzięcia pod uwagę w związku
z konfigurowaniem FPGA, jest za-
chowanie się linii I/O podczas włą-
czania zasilania i konfigurowania
FPGA. Wbudowany w układy Spar-
tan 3 układ POR (
Power On Reset
)
powoduje, że linie I/O są utrzymy-
wane w stanie wysokiej impedancji
do chwili osiągnięcia prawidłowych
wartości przez napięcia V
CCINT
, V
CCO_4
,
V
CCAUX
i następnie skonfigurowania
układu. Po ustaleniu się napięć za-
silających, stany linii I/O zależą od
konfiguracji układu – jeśli FPGA nie
został skonfigurowany, na liniach I/O
jest utrzymywany stan wysokiej
impedancji. Nie ma więc ryzyka,
że konfiguracja lub rekonfiguracja
układu FPGA w systemie cyfrowym,
którego praca jest inicjowana (np.
poprzez zerowanie) może zostać za-
burzona przez przypadkowe sygnały
występujące na jego liniach I/O.
W przypadku takiej konieczności
jest możliwe dołączenie do linii I/O
rezystorów podciągających, które są
aktywowane podczas konfiguracji
układu. Wymaga to zwarcia wypro-
wadzenia HSWAP_EN do masy za-
silania (domyślnie jest ono podcią-
gnięte do plusa).
Jacek Majewski
jacek.majewski@pwr.wroc.pl
Piotr Zbysiński, EP
piotr.zbysinski@ep.com.pl
Możliwe sposoby konfiguracji
układów FPGA z rodziny
Spartan 3
Układy z rodziny Spartan 3 są
przystosowane do obsługi 5 spo-
sobów konfigurowania, z których
w praktyce najczęściej korzystam
z dwóch: JTAG oraz
Master Serial
(z wykorzystaniem konfiguratora).
Dość popularnym trybem konfigura-
cji jest także
Slave Serial
, w którym
konfigurowany układ FPGA jest źró-
dłem sygnału zegarowego synchro-
nizującego transmisję danych z ze-
wnętrznej pamięci nielotnej. Oby-
dwa tryby
Serial
umożliwiają łącze-
nie konfigurowanych układów wka-
skady, dzięki czemu w niektórych
przypadkach można wykorzystać
jeden konfigurator (o odpowiednio
dużej pojemności) do współpracy
z kilkoma układami FPGA.
Wybór trybu konfiguracji odby-
wa się za pomocą trzech dedyko-
wanych wejść oznaczonych M0…2,
zgodnie z opisem z
tab.
2
. Zmiana
trybu konfigurowania jest możliwa
poprzez zmianę stanów logicznych
na wejściach M0…2 i wymuszenie
rekonfiguracji układu (np. poprzez
wyłączenie i włączenie zasilania lub
zainicjowanie interfejsu JTAG).
Na rys. 4 pokazano przykłado-
wy schemat elektryczny połączeń
(taki jak zastosowano w module
ZL10PLD) pomiędzy konfigurato-
rem XCF01S oraz układem z ro-
dziny Spartan 3. Takie połączenie
układów umożliwia automatyczne
konfigurowanie FPGA po włączeniu
zasilania oraz (alternatywnie) kon-
figurowanie FPGA za pomocą pro-
Tab. 1. Maksymalne napięcia
wejściowe wybranych linii specjalnych
oraz wielofunkcyjnych
Nazwa linii
Maksymalne
napięcie
wejściowe
[V]
Odnośny
biegun
zasilania I/O
PROG_B 2,5 –
HSWAP_EN 2,5 –
TDI 2,5 –
TMS 2,5 –
TCK 2,5 –
TDO 2,5 –
CCLK 2,5 –
DONE 2,5 –
M0…2 2,5 –
INIT_B = VCCO_4 VCCO_4
DOUT = VCCO_4 VCCO_4
BUSY = VCCO_4 VCCO_4
DIN = VCCO_4 VCCO_4
D0…3 = VCCO_4 VCCO_4
D4…7 = VCCO_4 VCCO_5
RDWR_B = VCCO_4 VCCO_5
CS_B = VCCO_4 VCCO_5
Tab. 2. Możliwe tryby konfiguracji układów Spartan 3
Nazwa trybu
konfiguracji
M0 M1 M2
Sygnał
synchronizujący
Szerokość
magistrali
danych
Master Serial 0
0
0 CCLK (wy) 1
Slave Serial 1
1
1 CCLK (we) 1
Master Parallel 1
1
0 CCLK (wy) 8
Slave Parallel 0
1
1 CCLK (we) 8
JTAG
1
0
1 TCK (we) 1
Elektronika Praktyczna 10/2006
93
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • emaginacja.xlx.pl
  •