Architektura systemów komputerowych Sławomir Mamica Wykład 7: Sygnały sterujące i magistrale http://main5.amu.edu.pl/~zfp/sm/home.html
W poprzednim odcinku Porty komunikacja ze światem zewnętrznym Wyświetlacz siedmiosegmentowy Klawiatura przeglądana sekwencyjnie Klawiatura matrycowa Wyświetlacz LCD Zadania domowe: Problemy? Pytania?
Plan a) Magistrala (szyna) systemowa b) Wewnętrzny przepływ sygnałów 8051 c) Magistrala 8051 d) Tryby oszczędzania energii 8051 e) Dekoder adresów DSM-51 f) Komunikacja z urządzeniami zewnętrznymi g) Tryby pracy DSM-51 h) Wybrane porty DSM-51
Magistrala (szyna) http://main5.amu.edu.pl/~zfp/sm/home.html
Ścieżka danych Ścieżka danych Sieć jednostek przechowujących dane (rejestrów) oraz jednostek arytmetycznologicznych (ALU) wykonujących operacje na danych połączonych magistralami zdolnymi do przenoszenia danych których pracą sterują zegary. Procesor Jednostka sterująca Wytwarza wszystkie sygnały sterujące dla pobierania i wykonywania rozkazów.
Magistrala (szyna) Zespół linii (przewodów) przenoszących sygnały pomiędzy podsystemami systemu komputerowego. Trzy podstawowe części magistrali (+ linie zasilające): linie sterujące (dwukierunkowe) przenoszą sygnały sterujące szyna adresowa (jednokierunkowa) przenosi adres komórki pamięci szyna danych (dwukierunkowa) przenosi dane.
Sposoby pracy Ze względu na typ transmisji magistrale można podzielić na: Równoległe (transmisja równoległa), m.in. PCI, AGP, FSB. Szeregowe (transmisja szeregowa), m.in.. USB, RS-232, PCI Express. Ze względu na sposób transmisji można wyróżnić magistrale: jednokierunkowe (simplex) dwukierunkowe (duplex) w danym momencie sygnały mogą przepływać tylko w jednym kierunku (półduplex).
Rodzaje System komputerowy zawiera zwykle kilka różnych magistral (struktura wielomagistralowa), które łączą podsystemy komputera na różnych poziomach hierarchii. Tradycyjny system komputerowy opiera się na dwóch magistralach: lokalnej łączy procesor z pamięcią podręczną. systemowej - łączy bloki pamięci systemowej z procesorem za pośrednictwem sterownika pamięci podręcznej
Współdzielenie Ze względu na ilość łączonych podsystemów mamy szyny: dwupunktowe łączy dwa konkretne podsystemy. wielopunktowe współużytkowana przez wiele podsystemów. W drugim przypadku często staje się wąskim gardłem. Urządzenia współdzielące szynę czasem dzielone są na dwa typy: master nadrzędne, inicjuje działanie, oraz slave podrzędne, odpowiada na żądania urządzenia typu master.
Multipleksowanie Nie mylić ze współdzieleniem! W przypadku prostszych systemów, gdzie głównym parametrem jest cena, a nie szybkość przetwarzania, ogranicza się liczbę wyprowadzeń procesora przez multipleksowanie magistrali danych i adresów. procesor pamięć I/O Urządzenia zewnętrzne/ otoczenie Zatrzask adresowy Magistrala danych i adresów Magistrala sterująca
Protokół magistrali Transmisja synchroniczna (determinowana zegarem) w zasadzie dla krótkich szyn dwupunktowych. oraz asynchroniczna (determinowana sygnałami sterującymi). W przypadku współużytkowania należy zdefiniować protokół magistrali: (zestaw reguł użytkowania) specyficzny zbiór reguł i procedur dotyczących formatu i czasu trwania przesyłania sygnałów. W danej chwili tylko jedno urządzenie może korzystać z magistrali, czyli musi ją sobie zarezerwować. Mogą to zrobić tylko urządzenia typu master (urządzenie slave dostaje polecenie zapisu/odczytu od kontrolującego je urządzenia master). Przy więcej niż jednym urządzeniu master konieczny jest arbitraż magistrali. Określa on priorytety poszczególnych urządzeń master i musi zapewnić, że żadne z nich nie zostanie wyłączone z dostępu do szyny.
Kategorie arbitrażu Arbitraż szeregowy przydzielanie magistrali urządzeniom w kolejności od najwyższego priorytetu do najniższego. Wada: urządzenia o niskim priorytecie mogą zostać zablokowane. Scentralizowany arbitraż równoległy urządzenia posiadają dodatkowe linie sterujące żądające dostępu do szyny. Centralny arbiter decyduje, które urządzenie otrzyma dostęp. Wada: mogą się pojawić zatory komunikacyjne. Zdecentralizowany arbitraż oparty na samodzielnym wyborze podobnie jak powyżej ale urządzenia same decydują o priorytecie dostępu do magistrali. Zdecentralizowany arbitraż z wykrywaniem kolizji urządzenia mogą żądać dostępu do magistrali dowolnie, ale w przypadku kolizji (kilka żądań jednocześnie) będą musiały ponowićżądanie.
Przykład: VME VME jest otwartym standardem na magistralę dla wieloprocesorowych systemów przetwarzania danych (używana w systemach wbudowanych). Kontroler magistrali Główne elementy systemu VME
Przykład: VME Rodzaje arbitrażu: Arbiter jednopoziomowy (SGL) monitoruje stan sygnału żądania dostępu do magistrali; uprzywilejowanie płyt umiejscowionych najbliżej gniazda 01. Arbiter priorytetowy (PRI) porządkuje sygnały żądania dostępu do magistrali według rosnących priorytetów, hierarchia brana pod uwagę nie tylko, gdy pojawia się kilka jednoczesnych żądań, także gdy pojawia siężądanie, a magistrala jest zajęta. Arbiter badania obiegiem (RRS) brak faworytów, przydziela kontrolę na zasadzie klucza zmieniającego rotacyjnie swoje położenie.
Wewnętrzny przepływ sygnałów 8051 http://main5.amu.edu.pl/~zfp/sm/home.html
Schemat blokowy 8051 adresy 8bit 8bit dane 16bit
Magistrala 8051 http://main5.amu.edu.pl/~zfp/sm/home.html
Budowa 8-bitowa szyna danych: linie portu P0 (multipleksowane z młodszym bajtem adresu) 16-bitowa szyna adresowa: linie portów P2 (starszy bajt) i P0 (młodszy bajt, multipleksowany z bajtem danych) Szyna sterująca: wyprowadzenia ALE, /PSEN, P3.7 (/RD), P3.6 (/WR), RST, /EA (+ zasilanie) Latch
Układ sterowania Najważniejszym zadaniem układu sterowania jest: dekodowanie rozkazu pobranego z pamięci programu, generowanie na jego podstawie odpowiednich sygnałów sterujących. Z układem sterowania współpracują licznik rozkazów (PC, 16-bitowy rejestr zawierający adres kolejnego rozkazu do wykonania), rejestr rozkazów (IR, rejestr przechowujący ostatnio pobrany rozkaz, niedostępny programowo), układ przerwań (odpowiedzialny za sprzętowe generowanie rozkazu LCALL wywołania procedury obsługi przerwania).
Sygnały sterujące Układ sterowania generuje następujące sygnały zewnętrzne: /PSEN strob odczytu z zewnętrznej pamięci programu. Sygnał generowany dwukrotnie w każdym cyklu maszynowym. ALE sygnał sterujący buforem zatrzaskującym młodszy bajt adresu pamięci zewnętrznej. Generowany ze stałą częstotliwością 1/6 częstotliwości oscylatora nawet gdy nie jest realizowany dostęp do zewnętrznej pamięci (ale jeden impuls ALE jest omijany podczas dostępu do pamięci zewnętrznej). Jest to również wejście impulsu programującego podczas programowania pamięci EPROM.
Sygnały sterujące Układ sterowania generuje następujące sygnały zewnętrzne (c.d.): /RD (P3.7) strob odczytu z zewnętrznej pamięci danych. /WR (P3.6) strob zapisu do zewnętrznej pamięci danych. Do układu sterowania są doprowadzone następujące sygnały zewnętrzne: /EA linia wyłączająca wewnętrzną pamięć programu (o tym już było). RST linia zerowania mikrokontrolera.
Odczyt z pamięci programu
Odczyt z pamięci programu
Przykład podłączenia pamięci programu
Dostęp do zewnętrznej pamięci danych
Zapis do zewnętrznej pamięci danych
Odczyt z zewnętrznej pamięci danych
RST Po włączeniu mikrokontrolera jego rejestry mogą przyjmować trudne do przewidzenia stany, więc natychmiast powinien zostać wyzerowany. Prawidłowe wyzerowanie mikrokontrolera polega na podaniu na wyprowadzenie RST stanu "1" przez co najmniej 2 cykle maszynowe. Podczas włączania zasilania poziom wysoki powinien być utrzymywany ok. 10-20ms w związku z koniecznością wzbudzenia się wewnętrznego generatora. Sygnał RESET powoduje: ustawienie zawartości wskaźnika stosu SP = 7. ustawienie jedynek na wszystkich liniach portów we/wy. wyzerowanie pozostałych rejestrów specjalnych (jedynie SBUF przyjmuje nieokreśloną zawartość). zawartość pamięci danych pozostaje niezmieniona (po włączeniu zasilania jest nieokreślona).
Tryby oszczędzania energii 8051 http://main5.amu.edu.pl/~zfp/sm/home.html
PCON
Tryby IDL Układ sterowania 8051 wykonanego w technologii CMOS (80C51) steruje również trybami oszczędzania energii rejestr PCON. (Układy wykonane w technologii NMOS posiadają w rejestrze PCON tylko bit SMOD.) Stan uśpienia (IDL): odłączenie wewnętrznego sygnału taktującego od jednostki centralnej i mikrokontroler nie wykonuje żadnego rozkazu. Zachowany zostaje stan pamięci wewnętrznej, wszystkich rejestrów specjalnych i linii IO. Działa układ transmisji szeregowej, układ czasowy i układ przerwań. Sygnały ALE i /PSEN przyjmują poziomy nieaktywne. Wyprowadzenie mikrokontrolera następuje przez zgłoszenie dowolnego, włączonego przerwania. Następuje wówczas wyzerowanie bitu IDL, wykonanie programu obsługi przerwania i przejście do wykonywania programu głównego od miejsca, w którym został ustawiony stan uśpienia.
Tryby PD Ustawienie bitu PD wprowadza mikrokontroler w stan uśpienia PD. Następuje wyłączenie generatora sygnału taktującego i zatrzymanie wszystkich funkcji mikrokontrolera. Sygnały ALE i /PSEN przyjmują poziomy niskie. Napięcie zasilające Vcc może być wówczas obniżone do 3V. Zachowana zostaje zawartość pamięci wewnętrznej, rejestrów specjalnych i linii IO. Aby wyprowadzić mikrokontroler ze stanu uśpienia PD, należy przywrócić normalną wartość napięcia Vcc i wygenerować sygnał RESET. Stracona wówczas zostaje zawartość rejestrów i linii portów IO. Jednoczesne ustawienie bitów IDL i PD powoduje wywołanie trybu uśpienia PD. Mikroprocesory rodziny '51 w stanach uśpienia pobierają około 0.2 do 15% mocy pobieranej podczas normalnej pracy.
Dekoder adresów DSM-51 http://main5.amu.edu.pl/~zfp/sm/home.html
Organizacja szyny DSM-51
Organizacja pamięci (DSM-51) Dekoder adresów (AD) i sterownik przerwań (IC) pełnią rolę układów kontrolnych, które pośredniczą w wymianie sygnałów sterujących pomiędzy mikrokontrolera, a pamięcią zewnętrzną (danych i programu) i zewnętrznymi układami peryferyjnymi. Oba układy są układami typu GAL, tj. stanową programowalną matrycę bramek. W matrycy układu GAL można za pomocą specjalnego programatora zapisać żądany układ logiczny. Dekoder adresów rezonator kwarcowy sterownik przerwań
Ogólnie W urządzeniach przeznaczonych do wykonywania konkretnego zadania program zapisany jest nieulotnej pamięci programu ([EEP]ROM), a dane (pobrane lub obliczone w wyniku działania programu) są przechowywane w pamięci danych (RAM). W takim przypadku linia /PSEN steruje bezpośrednio końcówką /OE układu pamięci ROM umożliwiając lub blokując odczyt z tej pamięci. Linie /RD i /WR są podłączone bezpośrednio do końcówek, odpowiednio, /OE i /WR układu pamięci RAM, więc sygnał /RD (/WR) zezwala bądź blokuje odczyt (zapis) danych. W DSM-51 zastosowano dwa 32 kb układy pamięci: RAM i EPROM. W pamięci EPROM zapisano kody procedur odpowiedzialnych za ładowanie kodu programu użytkownika i obsługę układów wejścia/wyjścia systemu DSM-51. Układ dekodera adresów pośredniczy w wymianie sygnałów sterujących pomiędzy mikrokontrolerem a układami RAM i EPROM.
Tryb 0 EPROM Po uruchomieniu systemu DSM-51 dekoder adresów znajduje się z trybie 0, w którym sygnał /PSEN steruje wyłącznie dostępem do pamięci EPROM. Wykonywany jest wówczas program zapisany w EPROM, który umożliwia pobranie kodu programu użytkownika przez port szeregowy bądź wprowadzenie go z klawiatury systemu DSM-51. 32 kb pamięć EPROM posiada 15 linii adresowych. W trybie 0 układ EPROM jest zawsze aktywny stan końcówki /CE(*) jest zawsze niski, niezależnie od stanu najstarszej linii adresowej (16- bit). Górne 32 kilobajty przestrzeni adresowej pamięci programu odnoszą się zatem do tej samej fizycznej pamięci EPROM. Oznacza to, że adresy różniące się o 32 kb (1xxxxxxxxxxxxxxxB i 0xxxxxxxxxxxxxxxB) wskazują tą samą komórkę pamięci programu. (*) /CE sygnał aktywujący układ EPROM
Tryb 0 RAM W trybie 0 linie /RD i /WR sterują zapisem i odczytem pamięci RAM. Najstarsza lina adresowa podłączona jest do końcówki /CS(*) pamięci RAM więc najstarszy bit adresu używany jest do uaktywnienia (staniem niskim) układu pamięci RAM (w odróżnieniu od pamięci EPROM). Wynika stąd, że pamięć RAM dostępna jest tylko w pierwszych 32 kilobajtach przestrzeni adresowej pamięci danych. Starsze adresy są zarezerwowane na tzw. zewnętrzną magistralę systemową oraz służą do obsługi układów peryferyjnych systemu. (*) /CS sygnał aktywujący układ RAM
Tryb 1 Uruchomienie programu użytkownika odbywa się poprzez zmianę trybu pracy dekodera adresów i reset mikrokontrolera. W trybie 1 dekoder adresów uaktywnia pamięć RAM w obszarze niższych 32 kilobajtów przy dostępie do pamięci danych jak i pamięci programu. (Czyli dostęp do pamięci programu jest mapowany do pamięci danych. Rozkaz MOVC pobiera informacje z pamięci danych, a nie programu.) Jest to możliwe, gdyż dekoder adresów zezwala (niski stan końcówki /OE) na odczyt z pamięci RAM zarówno w przypadku zgłoszenia przez mikrokontroler sygnału /PSEN jak i /RD. (Sygnały te nie są podłączone do odpowiednich pamięci bezpośrednio, tylko przez dekoder adresów.) Pamięć EPROM jest załączana tylko dla wyższych adresów dekoder adresów wysterowuje końcówkę /CE pamięci EPROM zanegowanym sygnałem najstarszej linii adresowej. Sygnał /PSEN, tak jak w trybie 0, steruje końcówką /OE układu EPROM.
Tryb 1 Po resecie mikrokontroler zeruje licznik rozkazów i zaczyna pobierać kolejne rozkazy, ale z pamięci RAM. W obszarze wyższych 32 kb pamięci programu nadal funkcjonuje pamięć EPROM (jak w trybie 0). Tu znajduje się kod programu ładującego i podprogramy obsługi urządzeń peryferyjnych systemu DSM-51 ( podprogramy z EPROMu). Sygnał /WR mikrokontrolera, podobnie jak w trybie 0, steruje zapisem do pamięci RAM (niskie 32 kb). Dla wyższych adresów pamięć RAM jest nieaktywna zarówno jako pamięci danych (/WR, /RD) jak i pamięci programu (/PSEN). Oznacza to, że, podobnie jak w trybie 0, najstarsza linia adresowa jest podłączona do końcówki /CS i steruje uaktywnieniem pamięci RAM.
Porównanie Tryb 0 Tryb 1
Komunikacja z urządzeniami zewnętrznymi http://main5.amu.edu.pl/~zfp/sm/home.html
Problem Problem: Mikrokontroler 8051 nie posiada odrębnej przestrzeni adresowej dla zewnętrznych układów wejścia-wyjścia. Rozwiązanie 1: urządzenia peryferyjne podłączone bezpośrednio do portów mikrokontrolera. Wymiana danych z urządzeniem poprzez zapis/odczyt danych do/z portu. Rozwiązanie dobre, gdy mamy niewielką ilość układów peryferyjnych. W przypadku korzystania z pamięci zewnętrznej dwa porty (P0 i P2) są używane do wymiany danych i adresów między pamięcią a 8051. Podłączenie zewnętrznej pamięci danych zajmuje dodatkowo dwie linie portu P3 (bity 7 i 6) przesyłające sygnały sterujące /WR i /RD. Pozostałe końcówki portu P3 służą jako: linie portu szeregowego, linie przerwań zewnętrznych oraz wejścia układów licznikowych. Do dyspozycji pozostaje więc jedynie port P1. Daje to możliwość wymiany tylko ośmiu sygnałów przez adresowalne bitowo linie tego portu.
Rozwiązanie 2 Rozwiązanie 2: wydzielenie w przestrzeni adresowej pamięci danych obszaru przeznaczonego na obsługę urządzeń wejścia-wyjścia. Wada: konieczność zastosowania dekodera adresów. Gdy mikrokontroler chce nawiązać komunikację z wybranym układem peryferyjnym, dekoder adresów wysyła do tego układu sygnał aktywujący CS wyznaczony na podstawie sygnałów sterujących oraz adresu wystawionego na magistralę adresową. Dzięki temu reszta układów pozostaje nieaktywna. Zapis danych pod odpowiedni (zarezerwowany dla układów peryferyjnych) adres w pamięci danych oznacza wysłanie danych do urządzenia wyjściowego. (Podobnie odczyt.) Odczyt i zapis to różne sygnały sterujące (/RD lub /WR), więc dekoder adresów może ten sam adres przypisać do dwóch różnych układów: jednego wejściowego i drugiego wyjściowego. (Podobnie jak w przypadku transmisji szeregowej mamy dwa SBUFy.)
Okno na świat (DSM-51) W DSM-51 dekoder adresów wypracowuje sygnały sterujące zewnętrznej magistrali systemowej i układów wejścia-wyjścia (IO) systemu DSM-51. Ostatnie 4 kb (górnej) pamięci danych przeznaczone są do adresowania urządzeń peryferyjnych. Pozostałe 28 kb górnego obszaru pamięci danych zarezerwowane jest dla zewnętrznej magistrali systemowej DSM-51. Jeśli na magistralę adresową wystawiony jest adres z zakresu wspomnianych 28 kilobajtów (8000H- EFFFH), to dekoder adresów wystawia sygnał oznaczający zamiar użycia magistrali DSM-51. Sygnał ten (CSX) aktywuje układy podłączone do magistrali DSM-51. Na złącze zewnętrznej magistrali wyprowadzona jest magistrala danych, piętnaście młodszych linii adresowych, sygnały sterujące: /RD, /WR i CSX.
Urządzenia zewnętrzne Dekodując adres układu IO (F000-FFFF) dekoder adresów uwzględnia tylko młodszy bajt adresu. Z tego względu cztery ostatnie kilobajty pamięci danych są podzielone na 16 równoważnych 256-bajtowych obszarów. Wewnątrz każdego z tych obszarów kolejne adresy odpowiadają tym samym urządzeniom peryferyjnym systemu DSM-51.
Urządzenia zewnętrzne Adres dowolnego urządzenia wejścia-wyjścia ma postać: 1111xxxxyyyyyyyyB (Adresy różniące się jedynie stanem bitów oznaczonych iksem odnoszą się do tych samych układów.) Zaletą tego rozwiązania jest uproszczenie adresowania układów IO z wykorzystaniem R0 lub R1 (adresowanie pośrednie). Nie ma potrzeby wystawiania starszego bajtu adresu na port P2, o ile uprzednio nie zmieniono stanu tego portu, gdyż po (re)starcie mikrokontrolera na wszystkich liniach portów wystawiona jest jedynka. Tak więc młodszy bajt adresu zawarty w rejestrach R0 lub R1 jest wystarczający do zaadresowania dowolnego urządzenia peryferyjnego.
Urządzenia zewnętrzne
Przykład Adresowanie bufora wyboru wskaźnika wyświetlacza siedmiosegmentowego. Dekoder adresów uaktywni urządzenie jeśli spełnione będą następujące warunki: 1. Adres będzie odnosił się do układów peryferyjnych (ustawione cztery najstarsze linie adresowe, czyli jedynki w starszym kęsie portu P2) 2. Adres będzie wskazywał na bufor wyboru wskaźnika wyświetlacza siedmiosegmentowego (CSDS) (patrz Tabela).
Tryby pracy DSM-51 http://main5.amu.edu.pl/~zfp/sm/home.html
Tryby pracy DSM-51 System DSM-51 posiada dwa przyciski, RESET-ROM i RESET-RAM, zerujące mikrokontroler. RESET-ROM dodatkowo ustawia dekoder adresów w tryb 0. Nie zmieniają one stanu innych urządzeń systemu włącznie z pamięcią RAM. Zachowanie się systemu zależy do trybu pracy w jakim znajdował się on w czasie wciśnięcia przycisku. Dydaktyczny system mikroprocesorowy może pracować w jednym z trzech trybów: tryb 0 PC CONTROL tryb 1 SIMULATOR tryb 2 ASSEMBLER
Tryb 0 PC CONTROL Tryb domyślny (po włączeniu zasilania lub wciśnięciu RESET-ROM). Dekoder adresów ustawiony w tryb 0 (pamięć programu w dolnych 32 kilobajtach pamięci EPROM). Uruchamiane jest więc oprogramowanie systemowe, które najpierw testuje stan klawiatury matrycowej: wykrycie naciśnięcia klawisza 1 lub 2 przełącza DSM-51 w tryb 1 lub 2. Wykrycie klawisza 0 uruchamia procedurę testową: sprawdzenie pamięci RAM oraz układów komunikacji z użytkownikiem (obu klawiatur, dwóch rodzajów wyświetlaczy oraz pozostałych elementów sygnalizacyjnych). W pozostałych przypadkach system pozostaje trybie 0 i uruchamia procedurę ładującą, która oczekuje na kod programu: wysyłany z komputera PC plik w intelowskim standardzie hex na port szeregowy DSM-51. RESET-RAM lub RESET-ROM daje identyczny skutek system pozostaje w trybie 0 i rozpoczyna wykonanie programu systemowego.
Tryb 0 PC CONTROL Po zakończeniu transmisji programu użytkownika system DSM-51 przełącza się w tryb 1 (SIMULATOR) i rozpoczyna jego wykonywanie. Ręczne przełączenie systemu w tryb 1 ma sens tylko wtedy, gdy w pamięci RAM istnieje załadowany wcześniej kod programu użytkownika. W przeciwnym razie zachowanie systemu jest nieokreślone, gdyż mikrokontroler będzie wykonywał przypadkowe rozkazy zawarte w pamięci programu: Oprogramowanie systemowe korzysta z zasobów mikrokontrolera, w tym również z jego wewnętrznej pamięci danych, a wciśnięcie przycisku RESET-ROM nie wyzeruje danych zapisanych uprzednio przez program systemowy (np. w rejestrach roboczych czy obszarze stosu). Tak więc przy uruchomieniu programu użytkownika za pomocą kombinacji klawisza RESET-ROM i klawisza 1 stan pamięci wewnętrznej jest przypadkowy.
Tryb 1 SIMULATOR Dekoder adresów w trybie 1. System DSM-51 pobiera więc kod programu z pamięci RAM, czyli wykonywany jest program użytkownika (albo śmiecie z RAMu). Programista powinien tak napisać program, aby ten zakończył się w pierwszych 32 kilobajtach pamięci programu. W przeciwnym razie mikrokontroler rozpocznie wykonywanie kodu umieszczonego w pamięci EPROM (mapowanie adresów) czyli programu systemowego. RESET-RAM zeruje mikrokontroler, również licznik rozkazów. Powoduje to ponowne wykonanie programu użytkownika. Stan wewnętrznej i zewnętrznej pamięci danych nie ulega zmianie. RESET-ROM zeruje mikrokontroler i przełącza system w tryb 0.
Tryb 1 SIMULATOR Częścią składową systemu DSM-51 jest oprogramowanie dla komputera PC służące do asemblacji kodu źródłowego i przesyłania programu użytkownika. W trybie SIMULATOR możliwe jest uruchomienie programu użytkownika trybie krokowym. Sterowanie wykonywaniem kolejnych instrukcji programu użytkownika przejmuje wówczas program komunikacyjny na komputerze PC.
Tryb 2 ASSEMBLER Możliwość wpisania kodu programu z klawiatury matrycowej DSM-51. Wyświetlacz ciekłokrystaliczny służy do nawigacji oraz podglądu kodu i stanu rejestrów w trybie pracy krokowej. Proces edycji, monitorowania, ładowania i uruchamiania programu użytkownika jest sterowany przez program systemowy. Aby możliwe było wykonywanie programu użytkownika pod kontrolą programu systemowego, dekoder adresów pracuje w trybie 1. Przy przełączaniu systemu DSM-51 w tryb 2. ma miejsce zerowanie pamięci RAM. Pod adresem 0 pamięci RAM zostaje umieszczony rozkaz długiego skoku do górnego obszaru pamięci programu, w którym dostępny jest program systemowy. Dodatkowo pod adres 3 pamięci RAM zostaje zapisany rozkaz długiego skoku umożliwiający wykonywanie procedury obsługi przerwania INT0 umieszczonej w pamięci EPROM.
Tryb 2 ASSEMBLER Przerwanie INT0 wykorzystywane jest do obsługi krokowej egzekucji programu użytkownika. Rozpoczęcie pracy następuje po wciśnięciu klawisza Enter. Wyświetlacz sygnalizuje wówczas możliwość wyboru trzech opcji: 1. EDIT rozpoczęcie edycji programu, 2. RUN uruchamia program użytkownika, 3. STEP wykonanie programu użytkownika w trybie pracy krokowej. Wybór i zatwierdzanie opcji odbywa się odpowiednio za pomocą klawiszy poziomych strzałek i klawisza Enter.
Tryb 2 ASSEMBLER Po rozpoczęciu edycji użytkownik na do wyboru trzy kolejne opcje widoczne na wyświetlaczu: 1. INS pozwala na wstawienie pojedynczego rozkazu bądź etykiety powyżej bieżącej linii programu, 2. MAIN wywołuje główne menu, 3. DEL usuwa widoczną na wyświetlaczu linie programu. W trybie edycji widoczna jest tylko jedna linia programu. Wciskając klawisze pionowych strzałek można wyświetlać kolejne linie programu.
Tryb 2 ASSEMBLER Wstawienie linii programu odbywa się poprzez wybór z wyświetlonej listy etykiety lub tzw. skrótu mnemonicznego rozkazu oraz jego argumentów. Wyboru dokonuje się za pomocą klawiszami strzałek. System pozwala na wprowadzenie do 255 linii programu. Wybór opcji RUN uruchamia program użytkownika. Program wprowadzony przez użytkownika jest ładowany do pamięci RAM po wyznaczeniu kodów operacji i adresów skoków. Pierwszy bajt kodu umieszczany jest pod adresem 256. Uruchomienie programu polega na wykonaniu długiego skoku (z programu systemowego ulokowanego w wysokich adresach pamięci EPROM) pod adres 256.
Tryb 2 ASSEMBLER Opcja STEP uruchamia program użytkownika w trybie pracy krokowej. Ładowanie i uruchomienie programu użytkownika przebiega podobnie jak w przypadku pracy ciągłej (opcja RUN). Jedyną różnicą jest uaktywnienie przerwania zewnętrznego INT0, które wstrzymuje program użytkownika po wykonaniu każdej instrukcji. Na wyświetlaczu umieszczony jest wówczas kolejny rozkaz. Użytkownik może odczytać stanu rejestrów: A, B, PSW, SP, DPTR, R0-R7 oraz dwóch ostatnich wpisów na stos. Wyboru rejestru odbywa się za pomocą klawiszy poziomych strzałek.
Tryb 2 ASSEMBLER Wykonanie kolejnego rozkazu po przyciśnięciu klawisza Enter. Obsługa przerwania INT0 o wysokim poziomie priorytetu jest podejmowana po zakończeniu każdego cyklu rozkazowego programu użytkownika. Jest to możliwe dzięki temu, że sygnałżądania przerwania zawsze jest aktywny (niski stan na bicie 2 portu P3). Uruchamianie programu użytkownika w trybie krokowym niesie ze sobą liczne ograniczenia co do dostępności zasobów systemu DSM-51. Program systemowy angażując się w obsługę programu użytkownika blokuje mu dostęp do wybranych układów systemu i pewnych obszarów pamięci. Nieznajomość tych ograniczeń może prowadzić do trudnych do zdiagnozowania błędów.
Tryb 2 ASSEMBLER RESET-RAM powoduje restart mikrokontrolera i restart programu użytkownika, niezależnie od tego czy sygnał reset pojawił się w trakcie wykonania czy edycji programu. Zachowanie takie wynika z umieszczenia pod adresem 0 długiego skoku do obszaru programu systemowego kodem obsługi trybu 2. Zastosowanie kombinacji klawisza RESET-ROM i klawisza 2 kasuje zawartość pamięci RAM, a następnie rozpoczyna pracę systemu DSM-51 w trybie 2. Nie ma zatem możliwości uruchomienia w trybie pracy krokowej (wewnętrznego asemblera) kodu załadowanego w trybie 0 przez port szeregowy. Po wciśnięciu pojedynczego przycisku RESET-ROM system przełącza się w tryb 0.
Wybrane porty DSM-51 http://main5.amu.edu.pl/~zfp/sm/home.html
Porty DSM-51 dwa kanały RS232 IO izolowane galwanicznie IO cyfrowe IO analogowe zewnętrzna magistrala systemowa
Transoptor Transoptor (optoizolator) półprzewodnikowy element optoelektroniczny składający się z fotoemitera i fotodetektora umieszczonych we wspólnej obudowie. Sprzężenie optyczne może być stałe (w przypadku obudowy zamkniętej, izolującej optycznie od otoczenia) lub zmienne, modulowane z zewnątrz poprzez zmianę współczynnika transmisji lub odbicia światła (w przypadku obudowy optycznie otwartej). Wysokonapięciową izolację elektryczną oraz stałe sprzężenie optyczne między fotodetektorem a fotoemiterem umożliwia zastosowanie światłowodu wykonanego z przezroczystego tworzywa lub szkła. Taki transoptor pozwala przesyłać sygnały elektryczne z wejścia na wyjście bez połączeń galwanicznych obwodów wejściowego i wyjściowego.
Układ IO izolowanych galwanicznie Cztery końcówki portów mikrokontrolera wyprowadzone są na zewnątrz sytemu DSM-51 przez układ transoptorów, jako IO izolowane galwanicznie: dwa wyjścia, P1.2 i P1.3, i dwa wejścia, P3.4 i P3.3 (INT1). Izolacja galwaniczna końcówek portów umożliwia ich ochronę przez pojawiającymi się na liniach zewnętrznych sygnałami zakłóceń. Pozwala też podłączyć układy niedopasowane napięciowo.
Wyjście analogowe 8-bitowy przetwornik C/A DAC08. (sygnał cyfrowy, C z procesora, analogowy, A na zewnątrz) Symetryczne wyjście prądowe (A). Na ośmiu bitach wejścia cyfrowego koduje się 8-bitową liczbę binarną. Jeśli wszystkie wejścia są w stanie wysokim to z końcówki OUT wypływa prąd o maksymalnym natężeniu (a /OUT = 0A). wyjście analogowe W DSM-51 końcówka /OUT jest podłączona do masy. Na wyjściu pojawia się napięcie 0-5V w zależności od wpisanych na wejście przetwornika danych.
Wejścia analogowe 8-bitowy przetwornik A/C ADC0804. (C do procesora, A z zewnątrz) Przetwarzane napięcie jest różnicą napięć na końcówkach I+ i I-. W DSM-51 uziemiono wejście I-, czyli na wejście I+ podaje się napięcie w pełnym zakresie przetwarzania układu: 0-5V. Na I+ wędruje sygnał z ośmiokanałowego multipleksera analogowego 4051. Wybór wejścia: 3 najmłodsze linie magistrali danych zatrzaskiwane w rejestrze zatrzaskowym na sygnał z dekodera adresu (po sygnale zapisu do przetwornika).
Dodatkowy port szeregowy Nadawanie: P1.0 Odbiór: INT0 Jak widać dla dodatkowego portu szeregowego jedynie odbiór danych może być obsługiwany z wykorzystaniem przerwań. Linie nadawcze i odbiorcze obu portów wyprowadzone są na dwa złącza typy COM. Aby dostosować poziomy napięć na liniach obu portów szeregowych do standardów złącza RS-232 komputera PC zastosowano układ dopasowujący Max232.
Układ programowalnych portów równoległych Problem: W systemie DSM-51 wszystkie końcówki portów mikrokontrolera są zaangażowane w obsługę układów wejścia-wyjścia oraz zewnętrznej pamięci mikrokontrolera. Rozwiązanie: Np. zastosowanie programowalnego układu portów równoległych podłączonego do magistrali jako układ peryferyjny. W DSM-51 zastosowano układ 8255 posiadający trzy 8-bitowe porty. Może on pracować w trzech trybach: 0: bezwarunkowa transmisje z wykorzystaniem wszystkich końcówek portów do przesyłania danych, 1 i 2: jedno lub dwu kierunkowa transmisja danych poprzedzona procesem uzgadniania i kontroli wymiany danych (handshacking).
Transmisja danych W trybie kontrolowanej transmisji danych (1 lub 2) układ 8255 ma możliwość generowania sygnałów przerwań. Zaleta: zwolnienie mikroprocesora z potrzeby nieustannego testowania linii w celu wyznaczenia momentu nadesłania nowych danych oraz określenia gotowości przyjęcia danych. Wada: konieczność poświęcenia kilku linii portów do przesyłania sygnałów sterujących i sygnałów przerwań. Końcówki linii pracujących w trybach kontrolowanej transmisji danych wyposażone są w przerzutniki zatrzaskujące stan linii wejściowych jest zapamiętany w układzie przerzutników. Zapis danych do przerzutników z końcówek portów odbywa się po odebraniu odpowiedniego sygnału sterującego. Końcówki linii pracujących w trybie transmisji bezwarunkowej nie posiadają przerzutników; odczyt danych z portu daje bieżący stan końcówek.
Transmisja równoległa w trybie 1 (simplex) Połączenie nadajnika z odbiornikiem Przebiegi czasowe sygnałów sterujących (oznaczenia po lewej stronie odnoszą się do nadajnika, a po stronie prawej od odbiornika
Sygnały sterujące (tryb 1) Proces nawiązywania połączenia polega na kontrolowanej sprzętowo wymianie sygnałów sterujących: Dane do wysłania są zatrzaśnięte w buforze nadawczym nadajnika. Nadajnik sygnalizuje niskim stanem sygnału /OBF zapełnienie bufora. /OBF jest interpretowany w odbiorniku jako sygnał wyzwalający /STB, który powoduje zatrzaśniecie danych w buforze odbiorczym i ustawienie sygnału IBF. Wysoki stan IBF informuje o tym, że dane dodarły do odbiornika lecz nie zostały jeszcze odczytane z bufora odbiorczego. Zanegowany IBF (na linii łączącej odbiornik z nadajnikiem) odbierany jest w układzie nadajnika jako sygnał potwierdzenia odbioru /ACK. Wyzerowanie sygnału /ACK wywołuje ustawienie sygnału /OBF. Wysoki stan /OBF oznacza gotowość bufora nadawczego do zapisania go nowymi danymi.
Sygnały sterujące (tryb 1) Niski stan sygnału /OBF odczytywany jest w odbiorniku jako wyzerowanie linii /STB, co sygnalizuje zakończenie procesu nadawania. Wysoki stan linii /STB i IBF (zakończono nadawanie, a dane znajdują się w buforze odbiornika) generuje w nadajniku sygnał przerwania. W procedurze jego obsługi należy odczytać dane z bufora nadawczego. Wystawienie przez mikrokontroler sygnału odczytu podanego na wejście /RD układu nadajnika spowoduje skasowanie sygnału przerwania. Po zakończeniu odczytu odbiornik zeruje sygnał IBF (gotowość odbioru). Niski stan IBF widziany jest przez nadajnik jako ustawienie linii /ACK. Wysoki stan linii /ACK i /OBF (zakończono odbiór, bufor nadajnika jest gotowy do zapisania kolejnych danych) wywołuje sygnał przerwania. Zapis kolejnych danych do bufora nadawczego przeprowadza się w procedurze obsługi przerwania (nadajnika). Sygnał zapisu pojawiający się na wejściu /WR układu zeruje sygnał przerwania.
Sterowanie w DSM-51 Cztery rozróżnialne adresy w przestrzeni adresowej układów wejścia-wyjścia: CS55D rejestr sterujący układu 8255, CS55A, CS55B, CS55C adresy odpowiadające rejestrom trzech ośmiobitowych portów A, B, C. Końcówki 8255 podzielne są na dwie grupy: grupa 1: port A i starszy kęs portu C możliwa praca w dowolnym trybie (0-2), grupa 2: port B i młodszy kęs portu C możliwa praca w trybie 0 lub 1. Tryb pracy każdej z grup oraz kierunek końcówek porów określa zawartość rejestru sterującego CS55D.
Sterowanie w DSM-51 (c.d.) Sterowanie trybem pracy oraz kierunkiem końcówek porów najstarszy bit CS55D musi być ustawiony, bity 6 i 5 określają tryb pracy grupy 1, a bit 2 grupy 2, bity 4, 3, 1 i 0 wyznaczają kierunek końcówek, odpowiednio, portu A, starszego kęsa portu C, portu B oraz młodszego kęsa portu C (jedynka oznacza pracę jako wejście, zero jako wyjście). Port C posiada linie adresowalne bitowo. Stan wybranego bitu usta się zawartością rejestru CS55D jeśli jego najstarszy bit jest 0. Bity 3, 2, 1 kodują numer wybranej końcówki portu C, a najmłodszy bit określa jej stan.
Rejestr CS55D (DSM-51)
Pytania? Proszę pamiętać o zadaniach domowych!
W następnym odcinku
The END (przynajmniej o 8051)