Laboratorium 8

Transkrypt

Laboratorium 8
Laboratorium 8
Temat: Programowalne peryferia. Układ PWM.
Urządzenia peryferyjne (peripherals) to układy sterowane przez oprogramowanie w
mikroprocesorze. Sterowanie odbywa się w ten sposób, Ŝe mikroprocesor wysyła kody
sterujące do adresowalnych rejestrów urządzenia peryferyjnego. MoŜe teŜ korzystać z
efektów pracy takiego urządzenia, odczytując jego rejestry.
Przykładem urządzenia peryferyjnego jest modulator szerokości impulsu, czyli PWM (Pulse
Width Modulator). Pozwala on generować impulsy prostokątne o zadanym wypełnieniu.
Typowe zastosowania to sterowanie mocą silnika elektrycznego, jaskrawością wyświetlacza,
przydział czasu dostępu do linii telekomunikacyjnej. Działanie jest oparte o licznik i
komparator, z parametrami ustawianymi w programowalnych rejestrach. Przykładowe
przebiegi pokazuje poniŜszy rysunek.
Tematem zajęć jest zaprojektowanie układu PWM według schematu podanego na następnej
stronie. NajwaŜniejszym podzespołem jest licznik, który przekręca się na zadanej wartości i
pracuje tylko wtedy gdy jest potrzebny. Całość jest sterowana trzema programowalnymi
rejestrami:
•
•
•
OKRES (8-bitowy) określa przy jakim stanie licznik powinien przekręcić się na zero.
WYPELN (8-bitowy) określa do jakiego stanu licznika wyjście PWM ma przyjmować
stan wysoki (po przejściu tej wartości stan będzie niski, aŜ do osiągnięcia wartości
zapisanej w OKRES i powrocie do zera)
START (1-bitowy) – ‘1’ oznacza Ŝe PWM pracuje, ‘0’ oznacza zatrzymanie urządzenia,
czyli zatrzymanie (wyzerowanie) licznika i ustawienia wyjścia PWM na ‘0’.
Wykonuje się je jako zatrzaski synchroniczne sterowane logiką zaleŜną od adresu i sygnału
nr_w. Po resecie rejestry te powinny przyjmować stan bezpieczny dla otoczenia – PWM
powinien być zatrzymany. Ponadto trzeba przygotować moŜliwość odczytu stanu rejestrów
przez mikroprocesor. Przyjmujemy, Ŝe jeśli mikroprocesor niczego nie chce od naszego
urządzenia to na linię danych do procesora (data_in) wystawiane są same zera.
Weryfikacja takiego układu wymaga zasymulowania tych czynności, które wykonałby
program w mikroprocesorze. Sprowadza się to do wystawiania po kolei odpowiednich
wartości na linie danych, adresu i sterowania. Weryfikacja powinna obejmować
zaprogramowanie wszystkich rejestrów, obejrzenie pracy układu (z wielokrotnym
przekręceniem licznika), zatrzymanie i wznowienie akcji, przeprogramowanie w trakcie
pracy, bez zatrzymywania i wreszcie odczytanie wszystkich rejestrów, najlepiej w trakcie
pracy. Szkic procesu ze scenariuszem zamieszczono na ostatniej stronie.
Projektowanie układów VLSI
© Przemysław Szecówka, 2007
reset
Wyjście
wypeln
0..7
komparator
PWM
clk
data_out
(z proc.)
Licznik
0 .. (okres-1)
okres
0..7
start
(1bit)
”00..0” &
data_in
(do proc.)
adres
(z proc.)
”00000000”
nr_w
(z proc.)
Schemat układu do wykonania. Na uwagę zasługują rozdzielone linie danych od i do
procesora, wzorowane na popularnej magistrali AMBA procesorów ARM.
Projektowanie układów VLSI
© Przemysław Szecówka, 2007
-- scenariusz weryfikacji urządzenia programowalnego przez mikroprocesor
film: process
begin
s_reset <= '1';
s_nr_w <= '0';
s_data_out
s_adres
<= (others => '0');
<= (others => '0');
wait for 2.7* period;
s_reset <= '0';
wait for 2*period;
s_nr_w <= '1';
-- teraz będzie programowanie rejestrów
s_adres <= OKRES_adr;
s_data_out <= "10000110";
wait for period;
s_adres <= WYPELN_adr;
s_data_out <= "00000100";
wait for period;
s_adres <= START_adr;
...
wait for 300*period;
-- czas na obejrzenie PWMa w akcji
s_nr_w <= '0';
-- procesor będzie odczytywał rejestry
s_adres <= OKRES_adr;
-- na linii data_in powinna pojawić się
wait for period;
-- teraz zawartość rejestru OKRES
s_adres <= WYPELN_adr;
wait for period;
s_adres <= START_adr;
wait for period;
....
assert false severity failure;
end process film;
Projektowanie układów VLSI
© Przemysław Szecówka, 2007

Podobne dokumenty