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

[ Pobierz całość w formacie PDF ]
KURS
Układy FPGA w przykładach,
część 7
Projekty przykładowe
W tym odcinku kursu pokażemy
przykładowy projekt sterownika
4–cyfrowego, 7–segmentowego
wyświetlacza LED. Jest to
kolejny typowy element systemu
cyfrowego, często wykorzystywany
w praktycznych aplikacjach,
w których często stanowi istotny
element interfejsu użytkownika.
Rys. 1. Schemat ilustrujący zasadę działania sterownika multipleksowego
Idea multipleksowego sterowania
wyświetlaczy jest stosunkowo stara,
bowiem tego typu sposoby sterowania
stosowano już w latach ’60 ubiegłego
wieku w systemach z wyświetlaczami
Nixie. Podstawową zaletą takiego sys-
temu sterowania wyświetlaczy jest mi-
nimalizacja liczby wyprowadzeń ukła-
du sterującego. Przykładowo, w przy-
padku pola 4–cyfrowego sterowanego
w sposób standardowy, konieczne jest
co najmniej 28 linii sterujących (4
cyfry x 7 segmentów). W prezentowa-
nym przykładzie sterownika multiplek-
sowego wystarczy 11 linii sterujących
(7 do sterowania segmentami + 4 do
sterowania elektrodami wspólnymi),
a jeszcze lepsze są osiągane przy ze-
społach wyświetlaczy o większej licz-
bie cyfr.
Ideę wyświetlania multipleksowego
zilustrowano na
rys. 1
(pokazany spo-
sób sterowania jest charakterystyczny
dla wyświetlaczy ze wspólną anodą).
Jak widać, konieczne jest zsynchro-
nizowanie „włączania” anod z poda-
niem odpowiedniej dla wyświetlanego
znaku kombinacji stanów na kato-
dy diod podświetlających segmenty.
Sekwencyjne zapalanie każdej cyfry
z odpowiednio dużą częstotliwością
(w przykładzie ok. 100 Hz) wywołuje
wrażenie ciągłego świecenia wszyst-
kich znaków.
Rys. 2. Schemat blokowy projektu zaimplementowanego w FPGA
Zapraszamy do współpracy!
Wszystkich Czytelników interesujących się
układami FPGA zachęcamy do prezentacji na
łamach EP własnych rozwiązań. Odpowiemy
także na wszelkie pytania związane z kursem,
językiem VHDL i układami FPGA.
Elektronika Praktyczna 4/2007
97
KURS
Konfigurowanie FPGA i programowanie konfiguratora Flash
Przygotowywanie plików do konfiguracji
układu FPGA i programowania
konfiguratora Flash
Z listów otrzymanych od Czytelników wyni-
ka, że wielu z nich ma spore problemy z pra-
widłowym skonfigurowaniem układu FPGA i za-
programowaniem pamięci Flash spełniającej
w zestawie ZL10PLD rolę konfiguratora.
Pokażemy zatem krok po kroku jak sobie
poradzić z podstawowymi problemami występu-
jącymi na tym etapie implementacji projektów,
które w większości przypadków wynikają ze
stosunkowo mało zrozumiałego (przynajmniej na
początku pracy z FPGA) rozdzielenia programo-
wania (konfiguratora Flash) od konfigurowania
(układu FPGA).
poniższym rysunku pokazano sposób połączenia
układu XC3S200 z pamięcią XCF01S, który au-
tomatycznie ustalił program iMPACT obsługujący
Konfigurowanie układu FPGA
Konfigurowanie układu FPGA za pomocą
interfejsu JTAG jest zalecane przede wszystkim
podczas prac projektowych, bowiem liczba
konfiguracji (czyli wpisów do pamięci konfigu-
racji typu SRAM) nie jest niczym ograniczona
(w przeciwieństwie do pamięci Flash, którą
można kasować i programować skończoną,
choć niemałą, liczbę razy).
Do skonfigurowania układu FPGA jest ko-
nieczny plik o rozszerzeniu
*.isc
, który jest ge-
nerowany przez proces
Generate Programming
File
pakietu WebPack ISE. Ponieważ ustawie-
nia domyślne nie powodują utworzenia takie-
go pliku, trzeba we właściwościach (
Process
Properties>General Options
) procesu
Generate
Programming File
uaktywnić opcję
Create
IEEE1532 Configuration File
(jak na rysunku
poniżej).
Sposób połączenia układu FPGA
i konfiguratora Flash w zestawie
ZL10PLD
Krótko od podstaw
Jak wspomnieliśmy w pierwszym odcin-
ku kursu (EP10/2006), układy FPGA z rodziny
Spartan 3 mają wewnętrzną pamięć konfiguracji
typu SRAM, co wymaga każdorazowo po włą-
czeniu zasilania układu odtworzenia jej zawarto-
ści z zewnętrznej pamięci nieulotnej (zazwyczaj,
także w przypadku kursowego zestawu ZL10PLD
– jest to pamięć Flash).
Konieczne jest więc zapewnienie możliwości:
– bezpośredniego modyfikowania zawartości
pamięci konfiguracji FPGA (SRAM),
– programowania pamięci Flash po zainstalo-
waniu jej w systemie,
– skopiowania zawartości pamięci
Flash do SRAM (pamięci konfigura-
cji FPGA).
Firma Xilinx w układach Spartan 3
problem rozwiązała w sposób pokazany
programator.
Pozostaje do omówienia ostatni problem:
skąd FPGA ma wiedzieć, z jakiego źródła zosta-
ną przesłane dane konfiguracyjne? Otóż do tego
celu służą w układzie FPGA specjalne wejścia
M2…M0, które na płytce ZL10PLD połączono
w taki sposób, że za pomocą jednego jumpera
JP4 (rysunek poniżej) można wybrać jeden
z dwóch trybów pracy:
– automatycznego (po włączeniu zasilania)
kopiowania zawartości Flash do FPGA,
– oczekiwania na dane konfigurujące
z JTAG–a.
W zakładce
General Options
okna
Process
Properties
(dla procesu
Generate
Programming File
) trzeba
uaktywnić generację pliku
*.isc
, który posłuży nam do
konfigurowania FPGA
Automatycznie wykryta przez
program iMPACT konfiguracja
łańcucha JTAG w zestawie
ZL10PLD
Na fragmencie schematu płytki ZL10PLD zaznaczono na szaro
dołączenie zworki JP4, która umożliwia wybranie sposobu konfiguracji
FPGA. Pokazano także sposób dołączenia konfiguratora U2 do układu
FPGA, przycisku S1 służącego do ręcznego wymuszania rekonfiguracji
oraz diody świecącej D1, która służy do sygnalizacji poprawnego
zakończenia konfiguracji FPGA
Żeby konfigurowany za
pomocą interfejsu JTAG układ
FPGA poprawnie rozpoczął
swoją pracę (po zakończeniu
konfigurowania), trzeba zmienić
domyślne ustawienie w oknie
Process
Properties>Startup
Options
w polu
FPGA Start–up
Clock
(jak na rysunku po-
niżej) z
CCLK
na
JTAG Clock
.
Zaniechanie tej czynności przed
skompilowaniem projektu spo-
woduje występujące losowo
„zawieszanie” się FPGA.
na poniższym rysunku:
Konfigurator XCF01S jest wyposa-
żony w dwa interfejsy umożliwiające
wymianę danych z otoczeniem:
– 5–liniowy, służący do przesyłania
przechowywanych do FPGA po włączeniu
zasilania,
– JTAG, który służy do programowania pa-
mięci Flash za pomocą zewnętrznego pro-
gramatora.
Także w układzie XC3S200 (FPGA z rodziny
Spartan 3, zastosowany w module ZL10PLD)
występuje interfejs umożliwiający współpracę
z konfiguratorem oraz interfejs JTAG, za pomo-
cą którego jest konfigurowana pamięć SRAM
w FPGA.
Interfejsy JTAG obydwu układów są po-
łączone w szereg, tworząc tzw. łańcuch JTAG.
Dzięki temu dostęp do tych układów jest moż-
liwy za pomocą jednego programatora, do-
łączonego do pojedynczego złącza JTAG. Na
>>
Na zdjęciu poniżej pokazano lokalizację
jumpera JP4 na płytce zestawu ZL10PLD wraz
z opisami pozycji, w których konfiguracja FPGA
odbywa się poprzez interfejs JTAG (JTAG) i au-
tomatycznie po włączeniu zasilania z konfigura-
tora (Flash).
Zworka JP4 umożliwia wybór trybu konfiguracji
FPGA (poprzez JTAG lub automatyczne
odtworzenie konfiguracji z pamięci Flash)
W przypadku konfigurowania FPGA za pomocą
interfejsu JTAG trzeba zmienić ustawienie
FPGA Start–up Lock
na
JTAG Clock
,
w przeciwnym przypadku układ może nie
rozpocząć pracy po zakończeniu konfiguracji
98
Elektronika Praktyczna 4/2007
KURS
Programowanie konfiguratora (Flash)
Jak już wielokrotnie wspominaliśmy, kon-
figurator (czyli pamięć Flash z interfejsem sze-
regowym i – w przypadku układu XCF01S
– także JTAG) służy do przechowywania da-
nych opisujących konfigurację FPGA. Do jego
zaprogramowania niezbędny jest plik
*.mcs
,
który trzeba „ręcznie” utworzyć za pomocą
programu iMPACT, wchodzącego w skład stan-
dardowej instalacji pakietu WebPack ISE. iM-
PACT musi być uruchomiony w trybie
Prepare
a PROM File
(rysunek poniżej), kolejne kroki
narzuca użytkownikowi kreator.
Realizacja
Schemat blokowy proponowane-
go rozwiązania pokazano na
rys. 2
.
Jest to typowe rozwiązanie sterow-
nika multipleksowego, w którym
rozdzielono (opisano w osobnych
plikach
*.vh
d) dekodery wyjściowe
(cyfr i segmentów) od sterownika,
w którym zintegrowano (
rys. 3
):
– 16–bitowy rejestr latch, który
służy do przechowywania ko-
dów 4 liczb BCD wyświetla-
nych na wyświetlaczu,
– 2–bitowy licznik numeru wy-
świetlanej cyfry,
– multiplekser 16–>4, który poda-
je na zewnętrzny dekoder (ste-
rujący segmentami wyświetla-
czy) 4–bitowe słowo odpowia-
dające wyświetlanej pozycji.
Tak więc, budowa prezentowa-
nego sterownika jest bardzo po-
dobna do klasycznych realizacji,
wykonywanych na układach TTL/
CMOS. Wykorzystanie opisu HDL
zwiększa elastyczność projektu, bo-
wiem jakiekolwiek jego modyfikacje
(zmiana polaryzacji wyświetlaczy
z WA na WK, zmiana liczby ob-
sługiwanych wyświetlaczy, zmiana
kształtów wyświetlanych znaków
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
• Debouncer
• Klawiatura matrycowa
• Obsługa wyświetlacza multi-
pleksowego LED
• Obsługa wyświetlacza LCD
• Sterownik LCD 2x16 (pro-
sty)
• Sterownik LCD 2x16 (za-
awansowany)
• Komunikacja via RS232
i USB
• Sterownik VGA
• Implementacja mikrokontrole-
ra PicoBlaze
Utworzenie pliku
*.mcs
umożliwia program
iMPACT, który należy uruchomić w trybie
Prepare a PROM File
Żeby zapewnić poprawny restart układu
FPGA po jego skonfigurowaniu z pamięci Flash,
ustawienie
FPGA Start–up Lock
musi być
CCLK
. Jeżeli ostatnia kompilacja została prze-
prowadzona z innym ustawieniem, program iM-
PACT „zauważy” błąd użytkownika, ostrzeże go
(rysunek poniżej) i samoczynnie zmieni frag-
ment pliku
*.mcs
w taki sposób, żeby układ
FPGA po skonfigurowaniu działał poprawnie.
Ostrzeżenie o nieprawidłowo wybranym źródle
sygnału zegarowego inicjującego start FPGA
po konfiguracji
Okno programu iMPACT po wygenerowaniu
pliku
*.mcs
służącego do programowania
pamięci Flash konfiguratora
Rys. 3. Funkcje spełniane przez fragmenty opisu w pliku sterownik.vhd
Elektronika Praktyczna 4/2007
99
KURS
3…3,2 V, co przy
zasilaniu segmentów
napięciem ok. 3,3 V
zapewnia przepływ
prądu o natężeniu
nie przekraczającym
(w egzemplarzu mo-
delowym) 3,5 mA.
Elektrody wyświe-
tlaczy (anody i ka-
tody) są sterowane
bezpośrednio z wyjść
FPGA (bez jakich-
kolwiek buforów,
rys. 4
), co upraszcza
budowę urządzenia
i minimalizuje liczbę
niezbędnych elemen-
tów.
List. 1. Modyfikacja dekodera sterującego wyświe-
tlacz LED (ze wspólną anodą): po lewej stronie
pokazano opis dekodera znaków 0…9, po prawej
0…F
LEWA STRONA
with bcd select
–– g f e d c b a
segm <= „1000000” when „0000”, –– 0
„1111001” when „0001”, –– 1
„0100100” when „0010”, –– 2
„0110000” when „0011”, –– 3
„0011001” when „0100”, –– 4
„0010010” when „0101”, –– 5
„0000010” when „0110”, –– 6
„1111000” when „0111”, –– 7
„0000000” when „1000”, –– 8
„0010000” when „1001”, –– 9
„1111111” when others; –– wygaszenie
PRAWA STRONA
with bcd select
–– g f e d c b a
segm <= „1000000” when „0000”, –– 0
„1111001” when „0001”, –– 1
„0100100” when „0010”, –– 2
„0110000” when „0011”, –– 3
„0011001” when „0100”, –– 4
„0010010” when „0101”, –– 5
„0000010” when „0110”, –– 6
„1111000” when „0111”, –– 7
„0000000” when „1000”, –– 8
„0010000” when „1001”, –– 9
„0001000” when „1001”, –– 10 “A”
„0000011” when „1001”, –– 11 “B”
„0000110” when „1001”, –– 12 “C”
„0100001” when „1001”, –– 13 “D”
„0000110” when „1001”, –– 14 “E”
„0001110” when „1001”, –– 15 “F”
„1111111” when others; –– wygaszenie
Rys. 4. Sposób dołączenia wyświe-
tlacza do układu FPGA
Implementacja
Projekt zaimple-
mentowany w testo-
wym zestawie, poza
sterownikiem wy-
świetlaczy, zawiera
także 4–dekadowy
licznik BCD (zlicza-
jący impulsy z wyjścia preskalera,
jego stany wyjściowe podglądamy
na wyświetlaczach) oraz 20–bitowy
preskaler (w projekcie wykorzystano
18 bitów), który służy do wytwo-
rzenia sygnałów zegarowych dla
zespołu liczników i sterownika wy-
świetlacza.
Strukturę projektu (w plikach)
pokazano na
rys. 5
. Widoczny na
tym rysunku plik
projekt7.ucf
zawie-
ra przypisania sygnałów do fizycz-
nych wyprowadzeń układu FPGA.
Zastosowany w projekcie wyświetlacz LED
(TOF–5462DB–B) jest przystosowany do pracy
w systemach ze sterowaniem multipleksowym,
niezbędne połączenia segmentów są wykonane
w jego wnętrzu. Na rysunku poniżej pokazano
schemat połączeń wewnętrznych.
with nr_znaku select
dig <= „0001” when „00”, ––
cyfra 0 (jedn.)
………………
można zastąpić opisem:
with nr_znaku select
dig <= „1110” when „00”, ––
cyfra 0 (jedn.)
………………
można także zanegować stany
wyjściowe za pomocą operacji
not
.
Podobnych modyfikacji można
wykonać wiele: jeżeli któryś z Czy-
telników chciałby pochwalić się
własnymi rozwiązaniami – zapra-
szamy!
Jacek Majewski
jacek.majewski@pwr.wroc.pl
Piotr Zbysiński, EP
piotr.zbysinski@ep.com.pl
Dodatkowe informacje:
com.pl/o_produkcie.php?id=656?
, dystrybutor
oferuje wersje świecące na różne kolory.
itp.) wiąże się z wprowadzeniem
niewielkich modyfikacji w opisie
(przykład pokażemy w dalszej czę-
ści artykułu). Możliwe jest także
przygotowanie uniwersalnego opisu
z parametryzacją, co – jeśli Czytel-
nicy wykażą zainteresowanie tema-
tem – pokażemy w jednym z kolej-
nych odcinków kursu.
W przykładowym projekcie wy-
korzystano bardzo wygodny w prak-
tyce wyświetlacz TOF–5462DB–B,
który jest przystosowany do ste-
rowania multipleksowego, bowiem
segmenty poszczególnych znaków
są ze sobą wewnętrznie połączone.
Zastosowano wyświetlacz świecący
na kolor niebieski, bowiem pozwo-
liło to uniknąć konieczności stoso-
wania rezystorów ograniczających
prąd segmentów. Wynika to z faktu,
że napięcie progowe struktur świe-
cących na niebiesko wynosi ok.
Podsumowanie
Wielokrotnie podkreślana duża
elastyczność opisów HDL doty-
czy także tego projektu. Na
list. 1
pokazano modyfikację dekodera
7–segmentowego, który w wersji
pokazanej po lewej stronie wy-
świetla znaki wyłącznie z zakresu
0…9 (dla wartości 10…15 wyświe-
tlacz jest wygaszony), po prawej
stronie pokazano zmodyfikowana
wersję wyświetlającą także znaki
A...F (w formie możliwej na wy-
świetlaczu 7–segmentowym). Inną
możliwą modyfikacją jest dostoso-
wanie sterownika do współpracy
z wyświetlaczami ze wspólną kato-
dą, co wymaga zanegowania wyjść
dekodera znaków i segmentów, np.
(odnosi się do pliku
dek_znaku.
vhd
) opis:
Rys. 5. Budowa prezentowanego
projektu z podziałem na pliki z opi-
sami VHDL
100
Elektronika Praktyczna 4/2007
[ Pobierz całość w formacie PDF ]

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