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