uklady_fpga_w_przykladach_05.pdf

(693 KB) Pobierz
103-105_fpga-pld_cz5.indd
KURS
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
doskonale znają konstruktorzy, któ-
rzy budowali jakiekolwiek układy
reagujące na liczbę naciśnięć przyci-
sków dołączonych do wejść mikro-
kontrolerów lub dowolnych innych
układów cyfrowych. Dobrym testem,
dogłębnie pokazującym problem jaki
Rys. 2. Skutki drgań styków prze-
łącznika (jeden z przykładowych
wyników rejestracji)
Rys. 3. Skutki drgań styków prze-
łącznika (inny przykładowy wynik
rejestracji napięcia na stykach
przełącznika)
mamy do rozwiązania, jest dołącze-
nie do wejścia zegarowego kilku-
bitowego licznika styków np. ty-
powego mikroprzełącznika ( rys. 1 ).
Łatwo się można wtedy przekonać,
że jedno naciśnięcie przycisku po-
woduje zmianę stanu licznika o kil-
ka a w skrajnych przypadkach kil-
kanaście stanów. Na rys. 2 i rys. 3
pokazano dwa przykładowe przebie-
gi napięcia na stykach mikroprze-
łącznika włączonego jak pokazano
na rys. 1, zdjęte za pomocą oscy-
loskopu cyfrowego. Liczba „prze-
skoczonych” przez licznik stanów
podczas zdejmowania przedstawio-
nych przebiegów była w obydwu
przypadkach większa niż wynika
to z oscylogramów. Jest to wynik
zbyt małej rozdzielczości poziomej
oscyloskopu zastosowanego do po-
miarów m znaczna część „śmieci”
wynikających z drgań styków oscy-
loskop po prostu zgubił. Nie zmie-
nia to faktu, że przełączniki, także
DiodyLED
+V
CLK
Licznik
kontrolny
Rys. 1. Schemat blokowy układu
umożliwiającego wykrycie drgań
styków przełączników
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
67372060.010.png 67372060.011.png 67372060.012.png
KURS
Rys. 4. Symbol graficzny debouncera
Wybrany przez
nas nie jest z ca-
łą pewnością naj-
bardziej oszczędny
(jeśli chodzi o zaję-
te zasoby sprzęto-
we FPGA), ale ma
wiele praktycznych
zalet m jedną
z nich jest zacho-
wanie czasu trwa-
nia zwarcia sty-
ków przycisku, co
nie jest możliwe
w wielu prostszych
rozwiązaniach.
Przedstawione
rozwiązanie jest
VHDLmową adaptacją propozycji
przedstawionej w pierwszym wyda-
niu książki „ Fundamentals of Digital
Logic ” autorstwa Stephena Browna
i Zvonko Vranesica (Kluwer 1995).
Na rys. 4 pokazano symbol gra-
ficzny debouncera , którego sposób
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
pochodzące od renomowanych pro-
ducentów, całkiem nieźle spełniają
rolę generatorów impulsów quasim-
losowych. Bez dodatkowych zabie-
gów nie da się z nich korzystać do
realizacji zadań, na wynik których
chcielibyśmy mieć wpływ.
List. 1. Opis działania debouncera w języku VHDL
process
begin
wait until (clock_100hz’event) and (clock_100hz = ‚1’);
shift_pb(2 downto 0) <= shift_pb(3 downto 1);
shift_pb(3) <= pb;
case shift_pb is
when „0000” =>
state <= ‚0’;
when „1111” =>
state <= ‚1’;
when others =>
state <= state;
end case;
pb_debounced <= state;
end process;
end;
zakres 60…150 Hz zapewnia po-
prawną obsługę także bardzo tanich
(czyli niskiej jakości) mikroprzełącz-
ników.
„Odkłócanie” styków przełączni-
ka odbywa się w 4mbitowym reje-
strze przesuwającym, który co każ-
dy takt zegara clock_100hz wsuwa
na bit MSB stan wejścia monito-
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
puszczeniu przycisku. Sposób dzia-
łania układu powoduje, że odkłóco-
ny sygnał wyjściowy jest opóźniony
względem wejściowego o czas odpo-
wiadający 4 taktom sygnału clock_
100hz m rys. 5 . W przypadku, gdy
czas impulsu wejściowego (ważne:
nieważna jest jego polaryzacja!) jest
Realizacja
Możliwych sposobów sprzętowej
likwidacji drgań styków jest bardzo
wiele, podobnie jak ma to miej-
sce w rozwiązaniach programowych.
działania opisano w języku VHDL
( list. 1 ). Wejście clock_100hz służy
do podawania sygnału taktującego
o częstotliwości ok. 100 Hz. Można
ją oczywiście zmienić, dostosowu-
jąc „czułość” debouncera do jako-
ści współpracujących przełączników.
Przeprowadzone próby wykazały, że
Rys. 5. Przykładowa reakcja wyj-
ścia debouncera (przebieg dolny)
na wciśnięcie przycisku (przebieg
górny)
Rys. 6. Nawet kilka krótkich impul-
sów na wejściu debouncera (prze-
bieg górny) nie wywołuje zmiany
stanu na jego wyjściu (przebieg
dolny)
Kompletny projekt dla WebPacka 8.2i wraz
z plikami źródłowymi opublikujemy na
CDmEP3/2007B.
104
Elektronika Praktyczna 2/2007
67372060.013.png 67372060.001.png 67372060.002.png
KURS
List. 2. Opis VHDL „łączący” w całość debouncer , 8mbitowy licznik kon-
trolny oraz preskaler zapewniający sygnał taktujący dla debouncera
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity debouncer_top is port (
clk : in std_logic;
pbi : in std_logic;
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)
);
end component preskaler;
signal clk_int : std_logic;
signal q_presc_int : std_logic_vector(20 downto 0);
begin
cnt: licznik port map (
clk => clk_int,
q => ledy
);
kb_d: debouncer port map (
pb => pbi,
clock_100hz => q_presc_int(15), mm ok. 120 hz
pb_debounced => clk_int
);
presc: preskaler port map (
clk => clk,
q => q_presc_int
);
pbo <= clk_int;
clk100hz_o <= clk_int;
end behavioral;
Opisy innych rozwiązań debouncerów
w układach PLD można znaleźć między innymi:
http://microsys6.engr.utk.edu/~hendrich/project/
discussion/inputmswitch/inputmswitchmvhdl.html
http://www.ecgf.uakron.edu/grover/web/ecs465/
labs/pushButtonCounter.pdf
http://www.codecomments.com/
archive378m2005m3m427505.html
http://www.alsemfr.com
debouncera ,
– preskalera, który zapewnia wła-
ściwą częstotliwość taktowania
debouncera , która jest uzyski-
wana z generatora kwarcowego
3,6864 MHz ulokowanego na
płytce ZL10PLD,
– licznika pracującego w trybie
NKB, który jest taktowany z wyj-
ścia debouncera .
Wszystkie wymienione elementy
opisano w języku VHDL i połą-
czono w całość w sposób poka-
zany na list. 2 .
Podsumowanie
Przedstawiony projekt, jakkolwiek
niezbyt skomplikowany i z pew-
nością mało efektowny, zapewnia
nam komfortową obsługę klawia-
tury (w ZL9PLD wykonanej na mi-
kroprzełącznikach). Dobra jakość
i stabilna praca tej części interfejsu
użytkownika pozwoli nam w niedłu-
gim czasie zilustrować obsługę jego
drugiej części: różnego rodzaju wy-
świetlaczy.
Jacek Majewski
jacek.majewski@pwr.wroc.pl
Piotr Zbysiński, EP
piotr.zbysinski@ep.com.pl
Rys. 7. Debouncer nie reaguje na
naciśnięcia przycisku krótsze niż 4
takty sygnału zegarowego
zestawie składającym się z płytki
bazowej ZL9PLD oraz modułu dip-
PLD ZL10PLD z układem XC3S200
z rodziny Spartan 3. Jego zasoby są
tak duże, że pewna „rozrzutność”
projektu (uzasadniona walorami
praktycznymi!) jest praktycznie bez
znaczenia.
Żeby zweryfikować faktyczne
możliwości prezentowanego roz-
wiązania, przygotowano opis zesta-
wu testowego, który składa się z
( rys. 8 ):
krótszy niż 4 takty sygnału wejścio-
wego, stan wyjścia pb_debounced
nie zmienia się, jak to pokazano
na rys. 6 i rys. 7 .
ok.100Hz
DiodyLED
3,6864MHz
CLK
Preskaler
CLK
PB_DEBOUNCED
Debouncer
CLK
Licznik
kontrolny
PB
+V
Implementacja
Zgodnie z zapowiedziami z po-
przednich części cyklu, rozwiązanie
prezentowane w artykule zostało za-
implementowane i przetestowane na
Rys. 8. Schemat blokowy testera wersyfikującego poprawność działania
debouncera
Elektronika Praktyczna 2/2007
105
67372060.003.png 67372060.004.png 67372060.005.png 67372060.006.png 67372060.007.png 67372060.008.png 67372060.009.png
Zgłoś jeśli naruszono regulamin