K U R S
Układy FPGA w przykładach,
część 5
Projekty przykładowe
Pierwsze cztery części kursu
dały nam elementarne
wiadomości o architekturze
układów FPGA z rodziny
Spartan 3, a teraz przechodzimy
do przykładowych projektów
przygotowanych w języku VHDL.
Pierwszy przykład wydaje się
być banalny, ale bez niego
trudno nam będzie zagłębić się
w projekty bardziej efektowne.
Zaczynamy od projektu z gatunku
podstawowych w większości typowych
projektów cyfrowych m przedstawimy
sposób wykonania debouncera, czyli
układu likwidującego drgania styków
mikroprzełączników dołączonych do
wejść układu FPGA.
Problem likwidacji drań styków Rys. 2. Skutki drgań styków prze- Rys. 3. Skutki drgań styków prze-
doskonale znają konstruktorzy, któ- łącznika (jeden z przykładowych łącznika (inny przykładowy wynik
rzy budowali jakiekolwiek układy wyników rejestracji) rejestracji napięcia na stykach
reagujące na liczbę naciśnięć przyci- przełącznika)
sków dołączonych do wejść mikro- mamy do rozwiązania, jest dołącze-
kontrolerów lub dowolnych innych nie do wejścia zegarowego kilku- loskopu cyfrowego. Liczba prze-
układów cyfrowych. Dobrym testem, bitowego licznika styków np. ty- skoczonych przez licznik stanów
dogłębnie pokazującym problem jaki powego mikroprzełącznika (rys. 1). podczas zdejmowania przedstawio-
Aatwo się można wtedy przekonać, nych przebiegów była w obydwu
Diody LED
że jedno naciśnięcie przycisku po- przypadkach większa niż wynika
+V
woduje zmianę stanu licznika o kil- to z oscylogramów. Jest to wynik
Licznik
ka a w skrajnych przypadkach kil- zbyt małej rozdzielczości poziomej
CLK
kontrolny
kanaście stanów. Na rys. 2 i rys. 3 oscyloskopu zastosowanego do po-
pokazano dwa przykładowe przebie- miarów m znaczna część śmieci
Rys. 1. Schemat blokowy układu gi napięcia na stykach mikroprze- wynikających z drgań styków oscy-
umożliwiającego wykrycie drgań łącznika włączonego jak pokazano loskop po prostu zgubił. Nie zmie-
styków przełączników na rys. 1, zdjęte za pomocą oscy- nia to faktu, że przełączniki, także
www.sklep.avt.pl " www.sklep.avt.pl " www.sklep.avt.pl " www.sklep.avt.pl " www.sklep.avt.pl
Okazja dla Czytelników EP zainteresowanych układami FPGA
Zestaw sprzętowy wykorzystywany w kursie jest do dostępny do 15.03.2007 na zasadach promocyj-
nych. 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ć w systemie
układy CPLD i FPGA firmy Xilinx.
www.sklep.avt.pl " www.sklep.avt.pl " www.sklep.avt.pl " www.sklep.avt.pl " www.sklep.avt.pl
Elektronika Praktyczna 2/2007
103
K U R S
Wy b r a n y p r z e z
Plan kursu
nas nie jest z ca-
1. Wprowadzenie
łą pewnością naj- " Budowa zestawu uruchomie-
bardziej oszczędny
niowego
(jeśli chodzi o zaję- " Programowanie i konfiguracja
te zasoby sprzęto- układu XC3S200
" Tryby konfiguracji układu
we FPGA), ale ma
XC3S200
wiele praktycznych
" Zasilanie układu XC3S200
z a l e t m j e d n ą
" Linie I/O w układzie XC3S200
z nich jest zacho-
" JTAG jako uniwersalny
wanie czasu trwa-
interfejs do programowania
nia zwarcia sty-
i konfigurowania
ków przycisku, co
2. Budowa, cechy funkcjonalne
nie jest możliwe
i parametry układów FPGA
w wielu prostszych
z rodziny Spartan 3
rozwiązaniach.
" CLB
Rys. 4. Symbol graficzny debouncera Przedstawione
" IOB
rozwiązanie jest
" Globalne sygnały zegarowe
pochodzące od renomowanych pro- VHDLmową adaptacją propozycji
" DCM
ducentów, całkiem niezle spełniają przedstawionej w pierwszym wyda-
" Sprzętowe multiplikatory
rolę generatorów impulsów quasim- niu książki Fundamentals of Digital
" Pamięć BlockRAM
losowych. Bez dodatkowych zabie- Logic autorstwa Stephena Browna
3. Projekty przykładowe
gów nie da się z nich korzystać do i Zvonko Vranesica (Kluwer 1995).
" Debouncer
realizacji zadań, na wynik których Na rys. 4 pokazano symbol gra-
" Klawiatura matrycowa
chcielibyśmy mieć wpływ. ficzny debouncera, którego sposób
" Obsługa wyświetlacza multi-
pleksowego LED
" Obsługa wyświetlacza LCD
List. 1. Opis działania debouncera w języku VHDL
process " Sterownik LCD 2x16 (pro-
begin
sty)
wait until (clock_100hz event) and (clock_100hz = 1 );
shift_pb(2 downto 0) <= shift_pb(3 downto 1); " Sterownik LCD 2x16 (za-
shift_pb(3) <= pb;
awansowany)
case shift_pb is
when 0000 => " Komunikacja via RS232
state <= 0 ;
i USB
when 1111 =>
state <= 1 ; " Sterownik VGA
when others =>
" Implementacja mikrokontrole-
state <= state;
end case; ra PicoBlaze
pb_debounced <= state;
end process;
end;
zakres 60& 150 Hz zapewnia po-
prawną obsługę także bardzo tanich
Realizacja działania opisano w języku VHDL (czyli niskiej jakości) mikroprzełącz-
Możliwych sposobów sprzętowej (list. 1). Wejście clock_100hz służy ników.
likwidacji drgań styków jest bardzo do podawania sygnału taktującego Odkłócanie styków przełączni-
wiele, podobnie jak ma to miej- o częstotliwości ok. 100 Hz. Można ka odbywa się w 4mbitowym reje-
sce w rozwiązaniach programowych. ją oczywiście zmienić, dostosowu- strze przesuwającym, który co każ-
jąc czułość debouncera do jako- dy takt zegara clock_100hz wsuwa
ści współpracujących przełączników. na bit MSB stan wejścia monito-
Przeprowadzone próby wykazały, że rującego przełącznik (pb). Zmiana
stanu na wyjściu pb_debounced,
która oznacza wciśnięcie przycisku
(niezależnie od tego, czy stanem
po wciśnięciu jest logiczne 0 czy
też 1), wymaga przesunięcia stanu
odpowiadającego wciśnięciu przez
cały rejestr (4 takty sygnału zegaro-
wego), tak samo jak dzieje się po
Rys. 5. Przykładowa reakcja wyj- puszczeniu przycisku. Sposób dzia-
ścia debouncera (przebieg dolny) łania układu powoduje, że odkłóco-
na wciśnięcie przycisku (przebieg ny sygnał wyjściowy jest opózniony
górny) Rys. 6. Nawet kilka krótkich impul- względem wejściowego o czas odpo-
sów na wejściu debouncera (prze- wiadający 4 taktom sygnału clock_
Kompletny projekt dla WebPacka 8.2i wraz bieg górny) nie wywołuje zmiany 100hz m rys. 5. W przypadku, gdy
z plikami zródłowymi opublikujemy na
stanu na jego wyjściu (przebieg czas impulsu wejściowego (ważne:
CDmEP3/2007B.
dolny) nieważna jest jego polaryzacja!) jest
Elektronika Praktyczna 2/2007
104
K U R S
Opisy innych rozwiązań debouncerów
List. 2. Opis VHDL łączący w całość debouncer, 8mbitowy licznik kon-
w układach PLD można znalezć między innymi:
trolny oraz preskaler zapewniający sygnał taktujący dla debouncera
http://microsys6.engr.utk.edu/~hendrich/project/
library ieee;
use ieee.std_logic_1164.all; discussion/inputmswitch/inputmswitchmvhdl.html
use ieee.std_logic_arith.all;
http://www.ecgf.uakron.edu/grover/web/ecs465/
use ieee.std_logic_unsigned.all;
labs/pushButtonCounter.pdf
http://www.codecomments.com/
entity debouncer_top is port (
clk : in std_logic;
archive378m2005m3m427505.html
pbi : in std_logic;
http://www.alsemfr.com
pbo, clk100hz_o : out std_logic;
ledy : inout std_logic_vector(7 downto 0)
);
end debouncer_top;
architecture behavioral of debouncer_top is
component licznik port (
clk: in std_logic;
q: inout std_logic_vector(7 downto 0)
);
end component licznik;
component debouncer port (
clock_100hz, pb: in std_logic;
pb_debounced: inout std_logic
);
end component debouncer;
component preskaler port (
clk : in std_logic;
q : inout std_logic_vector (20 downto 0)
debouncera,
);
end component preskaler;
preskalera, który zapewnia wła-
ściwą częstotliwość taktowania
signal clk_int : std_logic;
signal q_presc_int : std_logic_vector(20 downto 0);
debouncera, która jest uzyski-
wana z generatora kwarcowego
begin
cnt: licznik port map (
3,6864 MHz ulokowanego na
clk => clk_int,
q => ledy płytce ZL10PLD,
);
licznika pracującego w trybie
kb_d: debouncer port map (
NKB, który jest taktowany z wyj-
pb => pbi,
ścia debouncera.
clock_100hz => q_presc_int(15), mm ok. 120 hz
pb_debounced => clk_int
Wszystkie wymienione elementy
);
opisano w języku VHDL i połą-
presc: preskaler port map (
czono w całość w sposób poka-
clk => clk,
q => q_presc_int zany na list. 2.
);
pbo <= clk_int;
Podsumowanie
clk100hz_o <= clk_int;
Przedstawiony projekt, jakkolwiek
end behavioral;
niezbyt skomplikowany i z pew-
nością mało efektowny, zapewnia
zestawie składającym się z płytki nam komfortową obsługę klawia-
bazowej ZL9PLD oraz modułu dip- tury (w ZL9PLD wykonanej na mi-
PLD ZL10PLD z układem XC3S200 kroprzełącznikach). Dobra jakość
z rodziny Spartan 3. Jego zasoby są i stabilna praca tej części interfejsu
tak duże, że pewna rozrzutność użytkownika pozwoli nam w niedłu-
projektu (uzasadniona walorami gim czasie zilustrować obsługę jego
praktycznymi!) jest praktycznie bez drugiej części: różnego rodzaju wy-
znaczenia. świetlaczy.
Żeby zweryfikować faktyczne Jacek Majewski
możliwości prezentowanego roz- jacek.majewski@pwr.wroc.pl
Rys. 7. Debouncer nie reaguje na wiązania, przygotowano opis zesta- Piotr Zbysiński, EP
naciśnięcia przycisku krótsze niż 4 wu testowego, który składa się z piotr.zbysinski@ep.com.pl
takty sygnału zegarowego (rys. 8):
Diody LED
ok. 100 Hz
krótszy niż 4 takty sygnału wejścio-
wego, stan wyjścia pb_debounced
PB_DEBOUNCED
3,6864 MHz
Licznik
nie zmienia się, jak to pokazano
CLK Preskaler CLK Debouncer CLK
kontrolny
PB
na rys. 6 i rys. 7.
+V
Implementacja
Zgodnie z zapowiedziami z po-
przednich części cyklu, rozwiązanie
prezentowane w artykule zostało za- Rys. 8. Schemat blokowy testera wersyfikującego poprawność działania
implementowane i przetestowane na debouncera
Elektronika Praktyczna 2/2007
105
Wyszukiwarka
Podobne podstrony:
uklady fpga w przykladachuklady fpga w przykladachuklady fpga w przykladachMacierze i układy równań przykładyUklady mikroprocesorowe Przyklady rozwiazan ukmiprUKŁADY PRZESTRZENNE PRZYKŁADOWE ZADANIA NA KOLOKWIUMUkłady hydrauliczne przykłady 1Mudry energetyczne układy dłoni(1)cw6 arkusz obliczeniowy przykladprzykładowy test AprzykladowyJrkusz150UM[1] drukowOEiM AiR Przykladowy EgzaminZnaczenie korytarzy ekologicznych dla funkcjonowania obszarów chronionych na przykładzie Gorcówprzykladowe zadania redokswięcej podobnych podstron