uklady_fpga_w_przykladach_03(1).pdf

(620 KB) Pobierz
100-102_fpga_cz3.indd
K U R S
Układy FPGA w przykładach,
część 3
Kontynuujemy prezentację zasobów dostępnych w układach FPGA
z rodziny Spartan 3. W tej – przedostatniej „teoretycznej” – części
kursu omawiamy budowę komórek I/O oraz zasady dystrybucji
sygnałów zegarowych w układach FPGA.
cymi strukturę logiczną zaprojek-
towaną przez użytkownika (patrz
EP11/2006) z otoczeniem.
Jak widać na rys. 12, komór-
ka IOB składa się z trzech ścieżek
przepływu danych: ścieżki stero-
wania bufora HiZ (trójstanowego),
ścieżki wyjściowej i ścieżki wej-
ściowej. Podstawowym zadaniem
ścieżki sterowania bufora HiZ jest
wytwarzanie sygnałów sterujących
pracą wyjściowego bufora trójstano-
wego, który znajduje się w ścieżce
wyjściowej. Jej zadaniem jest z kolei
formowanie sygnałów wyjściowych,
podawanych na fizyczne wyprowa-
dzenie układu. Elementy zintegrowa-
ne w ścieżce wejściowej odpowiada-
ją między innymi za uformowanie
sygnałów podawanych z zewnątrz
do układu FPGA. Ponieważ linie
I/O w układach z rodziny Spartan 3
są przystosowane do współpracy
z różnymi standardami napięciowy-
mi, mogą one pracować także jako
wejścia różnicowe (symetryczne), to
w torach wejściowych zastosowano
analogowe komparatory napięcia. Je-
den z nich porównuje napięcie na
linii I/O z napięciem na linii VREF
(linia wspólna dla grup I/O), dru-
gi jest wykorzystany do
konwersji sygnału różni-
cowego (symetrycznego)
na asymetryczny, przy
czym trzeba pamiętać,
że w takim trybie pracy
wykorzystywane są dwie
linie I/O sąsiadujących
ze sobą komórek IOB.
Wszystkie ścieżki ko-
mórki IOB mają wbudo-
wane po dwa konfiguro-
walne przerzutniki, któ-
re można wykorzystać
m.in. podczas transmisji
danych w trybie DDR
(Double Data Rate), czy-
li z taktowaniem oby-
dwoma zboczami sygna-
łu zegarowego.
Każdy blok IOB
wyposażono w rezy-
story podciągające pull–up i pull–
–down, które użytkownik może
indywidualnie uaktywniać i odłą-
Komórki wejścia wyjścia
– IOB
Budowa komórek I/O w układach
Spartan 3 jest dość skomplikowana
( rys. 12 ), ale możliwości oferowane
przez nie przewyższają (pod wzglę-
dem elastyczności i funkcjonalno-
ści) rozwiązania spotykane w mi-
krokontrolerach i innych układach
cyfrowych.
Zadaniem komórek IOB (Input–
–Output Block) jest zapewnienie
dwukierunkowej wymiany danych
pomiędzy komórkami CLB tworzą-
Rys. 12. Budowa komórki IOB
100
Elektronika Praktyczna 12/2006
178189383.020.png 178189383.021.png 178189383.022.png 178189383.023.png 178189383.001.png 178189383.002.png 178189383.003.png
K U R S
Rys. 13. Konfigurację linii I/O umożliwia m.in. edytor wymu-
szeń XilinxPACE
czać. Ponadto, każda linia I/O
jest wyposażona w tzw. pin–keeper,
czyli przerzutnik utrzymujący na linii
ostatni wymuszony z zewnątrz stan
logiczny, dzięki któremu nie ma ko-
nieczności dołączania do zewnętrzne-
go potencjału niewykorzystanych linii
I/O. Można go stosować wymiennie
z rezystorami pull–up i pull–down.
Sterowanie dołączaniem rezystorów
jest możliwe zarówno z poziomu opi-
su HDL jak i (co jest zdecydowanie
łatwiejsze do opanowania i wygod-
niejsze w stosowaniu) z poziomu pli-
ku wymuszeń UCF (User Constraints
File), w którym znajdują się także
przypisania sygnałów do konkretnych
wyprowadzeń układu. Po-
niżej pokazano jedną linię
z pliku *.ucf, która opisuje
parametry linii I/O wypro-
wadzającej sygnał o nazwie
na_probe. Sygnał ten jest
dołączony do wyprowadze-
nia numer 87, jest zgod-
ny ze standardem napię-
ciowym LVCMOS 3,3 V,
wydajność prądowa linii
I/O wynosi 16 mA, dołą-
czony jest do niej pin–ke-
eper. Dodatkowo ustalono,
że prędkość zmian sygnału
na wyjściu będzie miała
maksymalną dopuszczalną
wartość (dyrektywa SLE-
W=FAST):
NET „na_probe” LOC = „P87”
| IOSTANDARD = LVCMOS33 |
DRIVE = 16 | KEEPER | SLEW
= FAST;
Edycję pliku *.ucf
można wykonać za pomo-
cą edytora tekstowego lub
– w wielu przypadkach jest to wy-
godniejsze – za pomocą edytora wy-
muszeń XilinxPACE, zintegrowanego
w pakiecie WebPack ISE ( rys. 13 ).
Jak widać na rys. 12, każda li-
nia I/O została zabezpieczona przed
uszkodzeniem ESD za pomocą diod
włączonych szeregowo–zaporowo. Po-
woduje to ograniczenie maksymalne-
go napięcia na wejściu do wartości
z przedziału ok. VCCO –0,5 V…
VCCO + 0,5 V, nie ma więc moż-
liwości bezpośredniej współpracy ze
standardowymi układami TTL lub
CMOS zasilanymi napięciem 5 V.
Użytkownicy zamierzający łączyć ze
sobą układy Spartan 3 z układami
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
• CLB
IOB
• Globalne sygnały zegarowe
• DCM
• Sprzętowe multiplikatory
• Pamięć BlockRAM
3. Projekty przykładowe
Rys. 14. Możliwe konfiguracje I/O z aktywnym
modułem DCI
zasilanymi napięciem wyższym niż
3,3 V powinni zastosować konwerte-
ry poziomów (w konwerterach jedno-
kierunkowych układy TTL z rodziny
LVC/LCX) lub (zdecydowanie gor-
sze rozwiązanie) rezystory włączone
w szereg z linią I/O, ograniczające na-
tężenie prądu wpływającego/wypływa-
jącego do/z linii I/O.
FPGA – co trzeba o nich wiedzieć – tip #7
Sygnały globalne
Do dystrybucji sygnałów taktujących
w układach FPGA jest zalecane
wykorzystywanie globalnych linii zegarowych.
Należy do nich dołączać możliwie duże grupy
elementów taktowanych tym samym sygnałem
zegarowym.
Elektronika Praktyczna 12/2006
101
178189383.004.png 178189383.005.png 178189383.006.png 178189383.007.png 178189383.008.png 178189383.009.png 178189383.010.png 178189383.011.png 178189383.012.png
K U R S
(funkcje alternatywne wybranych linii
I/O). Możliwe konfiguracje bufora wyj-
ściowego z aktywnym DCI pokazano
na rys. 14 . Odpowiednia konfiguracja
DCI jest uaktywniana automatycznie
po wybraniu trybu pracy I/O, co tak-
że pokazano na rys. 14.
List. 3. Sposób wykorzystania
w projekcie globalnego bufora
sygnału zegarowego BUFG (prede-
finiowany przez producenta)
BUFG_inst : BUFG
port map (
O => moje_wyjscie,
I => moje_wejscie
);
Rys. 15. Dystrybucja sygnałów zega-
rowych połączeniami segmentowa-
nymi powoduje m.in. zmniejszenie
maksymalnej częstotliwości taktowa-
nia projektu
Globalne linie zegarowe
Sporo problemów sprawia począt-
kującym użytkownikom układów PLD
zrozumienie koncepcji sygnałów glo-
balnych, dlatego postaramy się ją tu
nieco rozjaśnić.
W typowych projektach występu-
ją trzy rodzaje sygnałów potrzebnych
jednocześnie w wielu miejscach ukła-
du FPGA (takie sygnały są nazywane
globalnymi), są to sygnały: zegarowe,
zerujący/ustawiający i sygnał zezwala-
jący na pracę buforów trójstanowych
(szczególnie istotny w systemach opie-
rających się na komunikacji magistra-
lowej). Ponieważ standardowe zasoby
połączeniowe (pomiędzy CLB) w ukła-
dach Spartan 3 – jak na układy
FPGA przystało – są podzielone na
krótkie segmenty, to dystrybucja nimi
sygnałów potrzebnych w wielu miej-
scach jednocześnie powoduje zajęcie
znacznej ich części przez niewielką
liczbę sygnałów ( rys. 15 ). Dodatkową,
negatywną konsekwencją „segmento-
wych” tras przesyłania sygnałów jest
znaczne ich rozmycie w funkcji cza-
su: czasy przebiegu silnie zależą od
trasy, a te zależą zarówno
od sposobu opisu HDL jak
i algorytmów optymalizacyj-
nych syntezera logicznego.
Jakkolwiek dystrybucja sy-
gnałów globalnych za po-
mocą połączeń lokalnych
jest możliwa, to nie jest
w praktyce możliwe uzy-
skanie stabilnej pracy tak
zaprojektowanego układu
z częstotliwościami taktowa-
nia bliskimi częstotliwości
maksymalnej, wynikającej
z parametrów czasowych
układu FPGA.
cześnie rolę buforów separujących
źródło sygnału zegarowego od tak-
towanej logiki. Inne wymienione
sygnały często traktowane w PLD
jako globalne (tzn. zerujący/ustawia-
jący i zezwalający dla buforów trój-
stanowych) w układach Spartan 3
nie zostały wyprowadzone na ze-
wnątrz układów.
Wykorzystanie w projekcie glo-
balnych linii zegarowych jest moż-
liwe na kilka sposobów, z których
dwa są najbardziej popularne:
– przypisanie linii rozprowadzają-
cej sygnały taktujące wewnątrz
FPGA do wyprowadzenia GCLKx
jest informacją dla syntezera, że
użytkownik chce wykorzystać
globalną linię zegarową,
– w opisie projektu (zarówno pi-
sanego w HDL – list. 3 , jak
i w postaci schematu – rys. 17 )
można zastosować predefiniowa-
ny bufor BUFG.
Skuteczność obydwu przedsta-
wionych sposobów jest taka sama.
Jacek Majewski
jacek.majewski@pwr.wroc.pl
Piotr Zbysiński, EP
piotr.zbysinski@ep.com.pl
Interesującym wyposażeniem ko-
mórek IOB jest także blok DCI (Dy-
namically Controlled Impedance), któ-
rego zadaniem jest dopasowanie falo-
we (ma więc znaczenie dla sygnałów
o dużej częstotliwości) linii I/O do ob-
ciążenia. Impedancję wyjściową (sze-
regową i równoległą) linii I/O dobiera
się za pomocą zewnętrznych rezysto-
rów (po dwa na każdy zespół DCI),
dołączonych do linii VRN i VRP
Rys. 16. Budowa systemu dystrybucji sygnałów
zegarowych w układach Spartan 3
Generalna zasada
Układy Spartan 3 wy-
posażono w 8 globalnych
linii służących do dystry-
bucji niezależnych sygna-
łów zegarowych ( rys. 16 ),
które są dołączane do
linii przesyłowych za
pomocą multiplekserów
2/1 spełniających jedno-
Rys. 17. Atrybut globalności można
nadać wybranej linii sygnałowej
także w edytorze schematów
102
Elektronika Praktyczna 12/2006
178189383.013.png 178189383.014.png 178189383.015.png 178189383.016.png 178189383.017.png 178189383.018.png 178189383.019.png
Zgłoś jeśli naruszono regulamin