Pytania poprawione JT

Różnice pomiędzy mikroprocesorem a mikrokontrolerem

Mikrokontroler jest niezależnym systemem komputerowym, zawierającym w sobie (pamięć RAM,ROM, układy I/O, timer, układy kontroli przerwań, rdzeń CPU), układ transmisji (szeregowej, równoleglej), jednostkę obliczeniową ALU, zegar czasu rzeczywistego RTC :

Mikroprocesor jest sekwencyjnym układem logicznym działającym w takt sygnału zegarowe CLK:

Kaskadowe połączenie programowalnych kontrolerów przerwań

Kontroler przerwań jest urządzeniem pozwalającym na zgłaszanie przerwań przez wiele urządzeń przy wykorzystaniu jednej linii przerwań mikroprocesora. Układ umożliwia także ustawianie priorytetów przerwań. Pojedynczy 8259 umożliwia obsługę 8 przerwań. Możliwe jest jednak podłączenie kaskadowe kontrolerów, co pozwala obsłużyć ich większą ilość. Połączenie takie jest realizowane jak na rysunku. Jedno z urządzeń pracuje w trybie master, z kolei pozostałe kontrolery działają jako układ slave. Wyprowadzenia CAS0:2 wszystkich urządzeń łączy się ze sobą równolegle. Linie kontrolera master przesyłają sygnały do układów slave. Z kolei wyjścia INT układów slave są podłączane do wejść M7:0 układu master (każdy slave do jednego wejścia Mx). Wyjście INT układu master jest podłączone z wejściem IRQ mikroprocesora. Układy wymagają skonfigurowania do pracy w trybie kaskadowym.

Układy połączone są ze sobą trzema liniami adresowymi CAS0:2. Każdy z kontrolerów rozpoznaje swoją rolę (Master lub Slave) badając poziom sygnału SP/EN. Zero logiczne konfiguruje układ jako SLAVE. Do każdego kaskado połączonego kontrolera doprowadzony jest z procesora sygnał INTA. lecz tylko układ Mastter jest połączony ze swojego wyjścia INT z wejściem procesora INTREQ.

Obsługa przerwań od układu MASTER:

Obsługa przerwań od układu SLAVE:

Bezpośredni dostęp do pamięci (DMA)

Tryb DMA jest trybem, w którym transmisja danych pomiędzy urządzeniami (np. we/wy) a pamięcią odbywa się z pominięciem samego mikroprocesora. Może to być realizowane przez sam mikroprocesor lub przez specjalny układ zwany kontrolerem DMA. Wymaga on wcześniejszego skonfigurowania. Tryb transferu DMA pozwala odciążyć procesor od przesłań danych między jednymi urządzeniami a innymi. W tym czasie CPU może kontynuować wykonywanie programu. Przykładem kontrolera DMA jest układ 8237. Możliwe jest kaskadowe połączenie układów 8237, aby zwiększyć ilość urządzeń mogących pracować w trybie DMA.

Jest to przesyłanie danych bezpośrednio z pamięci do układu we/wy z pominięciem mikroprocesora. Realizacja transmisji DMA wymaga zastosowania specjalnego układu tzw. sterownika DMA. Układ ten inicjuje transmisję przez zablokowanie mikroprocesora w trakcie transmisji adresuje komórki pamięci, dlatego wymaga zewnętrznego sygnału zegarowego. Przed rozpoczęciem transmisji musi być odpowiednio zaprogramowany. Sama transmisja może być wykonywana po zablokowaniu pracy mikroprocesora lub w cyklach zegarowych, podczas których przetwarza on dane.

Układ we/wy wykorzystujący transmisję DMA musi być wyposażony w dwa dodatkowe sygnały sterujące(wyjściowy DRQ i wejściowy DACK). Sygnałem DRQ zgłasza się żądanie obsługi do sterownika DMA. DACK oznacza zgodę na rozpoczęcie transmisji i jest wystawiany przez sterownik DMA

Zaletą transmisji DMA jet szybkość przesyłania dużych ilości informacji (tzw. Bloków), wadą jest skomplikowanie układów w postaci układu DMA i dodatkowych sygnałów sterujących.

Format liczby zmiennoprzecinkowej na podstawie typu float

Liczba zmiennoprzecinkowa jest komputerową reprezentacją liczb rzeczywistych zapisanych w postaci wykładniczej (zwanej też notacją naukową). Ze względu na wygodę operowania na takich liczbach przyjmuje się ograniczony zakres na mantysę i cechę. Powoduje to, że liczba jest określana z pewną dokładnością i może występować w określonym zakresie.

Istnieje kilka typów reprezentujących liczby zmiennoprzecinkowe między innymi typ float. W typie tym cała liczba przedstawiona jest na 32 bitach z czego:

Wartość liczby zmiennoprzecinkowej zapisanej w typie float jest obliczana wg wzoru:

Gdzie:

Normalizacja mantysy:

Mantysa należy do przedziału [1,2)

Znak liczby:

Liczba jest ujemna, gdy bit znaku (S) jest równy 1, w przypadku liczby dodatniej bit znaku jest równy 0.

Przesunięcie wykładnika:

Wykładnik, w celu uniknięcia konieczności kodowania jego znaku (liczba miałaby dwa bity znaku), zapisywany jest jako wartość przesuniętą o pewną stałą (ang. biased exponent). Właściwą wartość wykładnika uzyskuje się odejmując od zakodowanego wykładnika wartość przesunięcia (ang. bias).

W formacie liczby zmiennoprzecinkowej 32 bitowej przesunięcie to wynosi 127.

Poniżej przestawiona została liczba zmiennoprzecinkowa typu float

Znak Wykładnik Mantysa
0 0 1

L(C) = (01101000)2 = 104

Bias = 127

L(C) – Bias = 104 – 127 = - 23

L(M) = (1.11101101111010111101011)2 = 1 + (11101101111010111101011)2 * 2-23 =1.9294

L = 2,3000 * 10­­-7

Najmniejszą dodatnią liczbą możliwą do przechowywania w typie float to
2-127 = 5,8775 * 10-39, co stanowi rozdzielczość tego typu danych. Największą wartością, którą można zapisać jest 3,4028 * 1038.

Wartość największa

Wartość najmniejsza

Wartość największa mniejsza od zera

Najmniejsza większa od zera

Dekompozycja liczby zmiennoprzecinkowej dla wartości 17,5

Struktura liczby zmiennoprzecinkowej:

Mantysa m-bitowa, cecha n-bitowa, jeden bit przeznaczony na znak. Przyjmując następujące oznaczenia:

L(S) – bit znaku, L(M) – mantysa, L(C) – cecha, P – podstawa systemu liczbowego

Liczbę zmiennoprzecinkową można zapisać w następującej postaci:

L(A) = (-1)L(S) * L(M) * PL(C)-B gdzie B = Pn-1-1

Ponadto mantysa musi być unormowana co oznacza, iż L(M) musi się znajdować w przedziale [1,P), a L(S) przyjmuje 0 lub 1.

Przykład:

(17,5)10 = (10001,1)2 -> normalizacja mantysy -> 1,00011 * 24

Przyjmując, że mamy 8 bitów na cechę oraz 8 bitów na mantysę (w tym jeden bit na znak), otrzymujemy B = 28-1-1 = 127, wobec tego L(C) = (131)10 = (10000011)2

Ostatecznie:

0 10000011 1000110

Niektóre typy danych pomijają jednostkę (1 przed przecinkiem) w mantysie, gdyż wiadomo, że zawsze (gdy mantysa jest znormalizowana) ta 1 tam występuje. Tak np. jest w typie float. Wówczas liczba zostałaby zapisana jako:

0 10000011 0001100000000000000000

Kolejność bajtowa, rozmieścić w pamięci o organizacji bajtowej od adresu 0x23 32 bitowe słowo o wartości 0xfd0aa55 w kolejności little endian oraz big endian

W kolejności big endian dane wielobajtowe są zapisywane w pamięci po kolei od najstarszego bajta do najmłodszego. Liczba 0xfd0aa55 będzie zapisana w pamięci w następujący sposób:

Adres 0x23 0x24 0x25 0x26
Zawartość 0x0f 0xd0 0xaa 0x55

W kolejności little endian dane są zapisywane w kolejności od najmłodszego bajta począwszy, a na najstarszym skończywszy. Liczba 0xfd0aa55 będzie zapisana w pamięci w następujący sposób:

Adres 0x23 0x24 0x25 0x26
Zawartość 0x55 0xaa 0xd0 0x0f

Różnice pomiędzy architekturą harwardzką oraz Von Neumana

System komputerowy von Neumanna nie posiada oddzielnych pamięci do przechowywania danych i instrukcji. Instrukcje jak i dane są zakodowane w postaci liczb. Bez analizy programu trudno jest określić czy dany obszar pamięci zawiera dane czy instrukcje.

W odróżnieniu od architektury von Neumanna, w architekturze harvardzkiej pamięć danych jest oddzielona od pamięci rozkazów. Prostsza (w stosunku do architektury Von Neumanna) budowa przekłada się na większą szybkość działania - dlatego ten typ architektury jest często wykorzystywany w procesorach sygnałowych oraz przy dostępie procesora do pamięci cache.

Harwardzka

von Neumanna

Różnice pomiędzy mikroprocesorami typu RISC oraz CISC

Ze względu na typ listy instrukcji mikroprocesory można podzielić na:

Jako przykłady można wymienić: Atmel AVR, ARM, Ralpha, MIPS, SPARC, Intel 80860

Jako przykłady można wymienić: AMD, x86

Podstawowe cechy architektury RISC w porównaniu z CISC:

W skrócie:

RISC CISC
Zbiór instrukcji jest ortogonalny Rozbudowana liczba instrukcji

Mała liczba instrukcji

  • Zredukowana liczba rozkazów, upraszcza to znacznie dekoder rozkazów

  • Redukcja trybu adresowania => prostsze kody rozkazów

  • Ograniczenie komunikacji między pamięcią a procesorem. Do przesyłanie danych między pamięcią a rejestrami służa dedykowane instrukcje (load, store)

  • Zwiększenie liczby rejestrów(np.32,192,256)

  • Dzięki przetwarzaniu potokowemu (pip eling) wszystkie rozkazy wykonują się w jednym cyklu maszynowym

Wysoka specjalizacja instrukcji

  • Duża liczba rozkazów

  • Niektóre rozkazy potrzebują dużej liczby cykli procesora do wykonania

  • Wystąpienie złożonych ,specjalistycznych rozkazów

  • Duża liczba trybów adresowania

  • Do pamięci może odwoływać się duża liczba rozkazów

  • Mniejsza od układów RISC częstotliwość taktowania procesora

  • Powolne działanie dekodera rozkazów

Podać różnice pomiędzy mikrokontrolerami 8051, 8052 oraz ADuC812

ADuC812 8051 8052
  • 8 kanałowy, 12 bitowy przetwornik A/C

  • Dwa 12 bitowe przetworniki C/A

  • Pamięć programu flash/EEPROM 8kB

  • Pamięć danych Flash/EEPROM 640B

  • Monitor napięcia zasilania

  • Sterownik transmisji szeregowej I2C/SPJ

  • Kontroler DMA do transferu danych z przetwornika A/C

  • Używany do pomiaru akwizycji i analizy danych analogowych np. z czujników

  • Dzieki przetwornikom C/A oraz modułom czasowo licznikowym możliwe jest generowanie sygnałów sterujących elementami wykonawczymi

  • 8 bitowa ALU

  • 4 banki rejestrów roboczych

  • 4kB pamięci wewnętrznej ROM (zewn. do 64kB)

  • 128B pamięć wew. RAM (zewn. do 64kB)

  • Zbiór rejestrów specjalnych SFR

  • Układ generujący sygnał taktujący

  • 4,8-bitowe równoległe porty

  • 1 szeregowy port

  • 2 liczniki działające w 1 z 4 trybów

  • Jednobitowy procesor funkcji logicznych

  • System przerwań z układem priorytetów

  • Wykonane są w zmodyfikowanej architekturze harwardzkiej, należą do CISC

  • Możliwość programowania w językach wysokiego poziomu

To, co w 8051 plus:

  • 256B wew. pamięć RAM

  • Trzeci 16-bitowy licznik

  • Dodatkowe rejestry specjalnego do obsługi 3-go licznika

Architektura mikrokontrolerów AVR

Głównym zadaniem rdzenia CPU (centralnej jednostki liczącej) jest zapewnienie poprawnego i szybkiego wykonywania kodu. Z tego powodu CPU musi mieć dostęp do pamięci, musi wykonywać operacje, sterować układami peryferyjnymi i obsługiwać przerwania.

Dla uzyskania maksymalnej wydajności AVR zbudowany jest w oparciu o architekturę harwardzką – z rozdzielonymi pamięciami i szynami dla programu i danych. Instrukcje w pamięci programu wykonywane są potokowo. Podczas gdy jedna instrukcja jest wykonywana, następna jest już pobierana z pamięci programu. Dzięki takiemu rozwiązaniu, możliwe jest wykonywanie całej instrukcji w każdym cyklu zegara.

Blok szybkiego dostępu zawiera 32 rejestry robocze o jednocyklowym czasie dostępu. To pozwala aby jednostka ALU (arytmetyczno logiczna) również mogła pracować w jednym cyklu. W typowej operacji, dwa argumenty ALU są wystawiane z bloku rejestrów, wykonywana jest operacja, a wynik jest powrotem umieszczany w bloku rejestrów, i to wszystko w jednym cyklu zegara.

Sześć spośród 32 rejestrów roboczych może być używane jako trzy 16-bitowe rejestry wskaźnikowe (X, Y, Z) w trybie adresowania pośredniego. Daje to możliwość wykonywania szybkich przeliczeń danych. Jeden z tych trzech wskaźników adresu (Z) może być użyty jako wskaźnik adresu w tzw. lookup tables w pamięci flash programu.

Jednostka ALU umożliwia wykonywanie operacji arytmetycznych i logicznych między rejestrami, miedzy stałą a rejestrem, oraz także operacji na pojedynczym rejestrze. Po wykonaniu operacji uaktualniany jest rejestr statusowy dający informacje o rezultacie.

Działanie programu jest możliwe dzięki warunkowym i bezwarunkowym skokom i instrukcjom rozgałęziającym, dającym bezpośredni dostęp do całej przestrzeni adresowej. Większa część instrukcji AVR ma format pojedynczego 16-bitowego słowa. Każdy adres pamięci programu zawiera 16 lub 32-bitową instrukcję.

Pamięć programu może być podzielona na dwie sekcje: sekcję programu botującego, oraz sekcję programu aplikacji. Obie części mają indywidualne bity bezpieczeństwa (Lock bits) do zabezpieczenia przed odczytem i nadpisaniem zawartości (np. przez programator). Program sekcji botującej może służyć np. do aktualizacji oprogramowania systemu, gdyż tylko z tej części pamięci programu może być wykonywana instrukcja SPM nadpisująca pamięć flash aplikacji.

Podczas przerwań i wywołań procedur podrzędnych adres powrotny licznika programu jest przechowywany w pamięci stosu. Stos zajmuje obszar pamięci SRAM, więc jego rozmiar jest ograniczony wielkością tej pamięci. Każdy program musi zainicjalizować wskaźnik stosu SP w procedurze obsługi resetu, zanim zostanie wywołana obsługa przerwania czy podprocedura.

Moduł przerwań ma swoje rejestry kontrolne w przestrzeni I/O z dodatkowym globalnym bitem odblokowującym przerwania w rejestrze statusowym SREG (opisany dalej). Wszystkie przerwania mają osobny wektor przerwania w tablicy wektorów przerwań. Przerwania mają priorytet zależny od pozycji wektora. Im niższy adres wektora przerwań, tym wyższy jest priorytet dla danego przerwania.

Rejestr statusowy – SREG:

Numer bitu 7 6 5 4 3 2 1 0
Nazwa I T H S V N Z C
Dostęp R/W R/W R/W R/W R/W R/W R/W R/W
Wartość początkowa 0 0 0 0 0 0 0 0

I – globalne zezwolenie na przerwania

T – znacznik kopii

H – znacznik przeniesienia połówkowego

S – bit znaku S=V xor N

V – znacznik przepełnienia

N – znacznik wartości ujemnej

Z – znacznik wartości zerowej

C – znacznik przeniesienia lub pożyczki

Mapa pamięci programu:

Mapa pamięci danych:

Porty wejścia i wyjścia:

Budowa

Każdy z portów ma ściśle z nim związane 3 rejestry konfiguracyjne. Są to: rejestr danych PORTx, rejestr kierunkowy DDRx oraz port pinów wejściowych PINx. Dodatkowo ustawieniem jednego bitu PUD w rejestrze SFIOR można wyłączyć wszystkie rezystory

pull-up we wszystkich portach jednocześnie.

Większość pinów posiada więcej niż jedną funkcję, do obsługi układów zintegrowanych w mikrokontrolerze. Uaktywnienie funkcji alternatywnej wybranym pinom portu nie blokuje pozostałym możliwości pracy jako cyfrowe piny I/O.

Bity DDxn w rejestrze DDRx określają kierunek pracy pinu. Wpisana tam wartość 1 powoduje pracę pinu Pxn jako wyjściowy, 0 jako wejściowy.

Wpisanie 1 do PORTxn podczas, gdy pin skonfigurowany jest jako wejście, powoduje włączenie rezystora pull-up. Wartość 0 spowoduje jego wyłączenie. Skonfigurowanie pinu jako wyjście automatycznie odłączy rezystor pull-up. W czasie stanu resetu mikrokontrolera lub gdy nie pracuje zegar, piny są w trójstanowe.

Wpisanie 1 do PORTxn, podczas gdy pin skonfigurowany jest jako wyjście, spowoduje ustawienie stanu wysokiego. Wpisanie 0 ustawi stan niski.

Niezależnie od obranego kierunku pracy pinu w DDxn, wartość pinu portu może być odczytana poprzez bity PINxn. Jeśli zmiana stanu następuje z zewnątrz, to wartość PINxn jest opóźniona do momentu synchronizacji ze stanem niskim zegara. Wartość na pinie jest zapamiętywana na zboczu opadającym zegara a uaktualniona wartość PINxn pojawia się ze zboczem narastającym zegara. Potwierdzenie wpisanej programowo wartości pinu, poprzez odczyt PINxn, musi odbywać się więc co najmniej jeden cykl zegarowy po wpisaniu. Synchronizujące opóźnienie można zrealizować instrukcją NOP.

Generator taktujący – w mikro kontroler wbudowano wzmacniacz odwracający fazę, przeznaczony do generowania przebiegu zegarowego synchronizującego pracę mikrokontrolera. Wyprowadzenie XTAL1 i XTAL2 pełnią odpowiednio funkcję jego wejścia i wyjścia.

Po podłączeniu zewnętrznego rezonatora wzmacniacz pracuje jako generator sygnału taktującego mikrokontroler. Przewidziano też możliwość pracy z zewnętrznym przebiegiem zegarowym.

Rejestry ogólnego przeznaczenia

Zestaw 32 8-bitowych rejestrów ogólnego przeznaczenia gwarantuje szybki dostep do podręcznych danych. Wszystkie rejestry mają bezpośredni dostęp do ALU, mogą więc pełnić rolę argumentów operacji arytmetyczno-logicznych bez pośrednictwo dodatkowych rejestrów przejściowych i specjalnego akumulatora. 6 ostatnich rejestrów tworzy 3 pary dwubajtowych rejestrów indeksowanych używanych jako wskaźniki(X,Y,Z) przy adresowaniu pośrednim.

Rejestry R0:15 objęte zostały ograniczeniem, przez co nie mogą być stosowane przez ALU przy operacjach ze stałymi ładowanymi bezpośrednio.

ALU-bardzo wydajna jednostka arytmetyczno-logiczna współpracująca z bez[pośrednio z 32 rejestrami ogólnego przeznaczenia. Operacje wykonywane przez ALU dzielimy na: arytmetyczne,logiczne,bitowe.

Pamięć programu- mikrokontrolery AVR wyposażono w 2kB pamięci Flash programowanej w systemie , która pełni rolę pamięci programu.

Stos-pamięci SRAM w układach AVR powierzono dodatkową istotną rolę poza miejscem przechowywania danych pamięć ta stanowi stos mikrokontrolera. Pamięć stosu może być wykorzystana do tymczasowego przetrzymywania zmiennych lokalnych oraz adresów powrotu przy wywoływaniu podprogramów.

Opisać architekturę Motorola M68

Sekwencja startu i stopu w protokole I2C

Gdy na linii SDA stan logiczny zmienia się z '1' na '0', a na linii SCL jest stan '1', to sytuacja taka nazywa się START. Natomiast gdy na linii SDA stan logiczny zmienia się z '0' na '1', podczas wysokiego poziomu na linii SCL, to sytuacja taka nazywa się STOP. Przedstawione to zostało na poniższych wykresach:

W protokole I2C transmisja danych odbywa się szeregowo, w dwóch kierunkach przy użyciu dwóch linii. Jedna z nich SCL(serial clock Line) przesyła impulsy zegarowe synchronizujące transmisję, natomiast druga SDA(serial data Line) przesyła dane w dwóch kierunkach.

Stan linii danych może być zmieniany, gdy linia zegarowa SCL znajduje się w stanie niskim.

Opisać interfejs 1-Wire

Nazwa interfejsu 1-Wire wywodzi się stąd, że do całkowitej komunikacji używana jest tylko jedna linia danych (i jedna linia masy). Dodatkowo, odbiornik może być zasilany bezpośrednio z linii danych, wykorzystując zasilanie pasożytnicze, co jest ogromną zaletą tego interfejsu.

Właściwości magistrali 1-Wire:

Każda wymiana danych zawiera 3 etapy :

1. Inicjalizacja: Zawiera etap zerowania układu Slave oraz etap potwierdzenia przez Slave’a obecności na magistrali.

2. Przesyłanie komendy typu ROM:. Każdy układ Slave posiada unikalny 64-bitowy kod. Komendy typu ROM umożliwiają zaadresowanie konkretnego układu, identyfikację układu, wyszukanie alarmu lub pominięcie sprawdzania 64-bitowego kodu.

3. Przesłanie funkcji sterującej układu:. Sekwencja tego typu umożliwia realizację wszystkich dostępnych operacji na wybranym układzie.

Urządzenie typu master rozpoczyna transmisję sekwencji bitów poprzez wystawienie impulsu reset, czyli zwarciu linii danych na 480 μs do masy. Powoduje to zresetowanie wszystkich podłączonych odbiorników (urządzeń typu slave). Następnie każde urządzenie slave potwierdza swoją obecność wystawiając na linię danych impuls obecności - zwierając linię danych do masy na 60 μs.

Przesłanie logicznej jedynki na magistralę oznacza wystawienie przez mastera krótkiego (od 1 do 15μs) impulsu niskiego (zwarcie linii) oraz następnie wysokiego o długości 60 μs. Logiczne zero odpowiada niskiemu impulsowi o długości od 60 do 120μs.

Przed odbiorem każdego bitu danych master wysyła niski impuls startu (od 1 μs do 15 μs), po czym wraca do stanu wysokiego na linii danych. Jeśli slave chce wysłać logiczną jedynką - nie robi nic, pozostawiając linię w stanie wysokim. Jeśli slave chce wysłać zero, wówczas zwiera linię danych do masy na 60 μs. Po przesłaniu 8 bitów następuje wysłanie komendy (rozkazu) (również ośmiobitowej). Ewentualne błędy w transmisji mogą być wykryte za pomocą wbudowanego CRC (również ośmiobitowego).

Inicjalizacja rozpoczyna się wysłaniem na magistrale przez układ Master impulsu zerującego następnie układ Slave wysyła impuls obecności. Inicjalizacja pozwala układowi Master wykrycie podłączonych do niej układów Slave.

Sekwencja zapisu ‘0’ i ‘1’

Nadanie logicznego 0 polega na wygenerowaniu impulsu o czasie trwania 60-120 µs a następnie na zwolnieniu magistrali i oczekiwaniu minimum 1µs przed nadaniem następnego bita.

Dla logicznej 1 generowany impuls trwa 1-15µs natomiast wymagany czas bezczynności 60µs

Sekwencja odczytu ‘0’ i ‘1’

Układ Master generuje impuls o czasie trwania min 1µs a następnie zwalnia linię DQ. Jeżeli Slave chce wysłać logiczną jedynkę - nie robi nic pozostawiając linię w stanie wysokim. Jeżeli Slave chce wysłać 0 wówczas zwiera linię danych do masy. Po przesłaniu 8bitów nastepuje wysłanie komendy rozkazu

Wyjaśnić ideę sterowania multipleksowego (macierz diod lub klawiszy)

Procesor wysyła na linie wierszy impuls po kolei począwszy od pierwszej. W każdej chwili czasu w stanie aktywnym jest tylko jeden wiersz. Wciśnięcie przycisku spowoduje wystąpienie impulsu na odpowiedniej kolumnie, co zostaje wykryte przez procesor. Po jednym cyklu odpytywania klawiatury, proces jest powtarzany.

Połączenie większej ilości klawiszy w matrycę pozwala na zaoszczędzeniu wyprowadzeń mikrokontrolera. Klawiatura składająca się z 16 przycisków wymaga 8 linii mikrokontrolera.

Odczyt pierwszego wiersza:

Zerowanie programowe linii B0 i odczytując stan wyprowadzeń B4:B7- stan tych linii odzwierciedla stan klawiatury w pierwszym wierszu (SW1-SW4). Przykładowo niski poziom na linii B5 oznacza wciśnięcie SW2. Podobnie postępujemy dla pozostałych wierszy kolejno zerując pojedyncze linie B4, B5, B6, B7 i odczytując stan czterech linii wejściowych. W ten sposób po wykonaniu 4 kroków mamy odczytane stany wszystkich 16-stu klawiszy.

Procesory sygnałowe

Zadaniem procesorów sygnałowych (DSP – ang. Digital Signal Procesor) jest przetwarzanie sygnałów analogowych lub cyfrowych w czasie rzeczywistym. Zastosowanie znajdują one przede wszystkim w przetwarzaniu sygnałów akustycznych, obrazów, a także modulacji i demodulacji (modemy, telefony komórkowe). Główne różnice pomiędzy DSP a zwykłym mikroprocesorem to:

Procesory DSP można podzielić na:

Przykładem procesora sygnałowego może być procesor sygnałowy rodziny ADSP-21xx. W procesorze tym znajdują się następujące jednostki obliczeniowe:

Ponadto w procesorze znajdują się jeszcze: generator adresu danych DAG, który odpowiada za:

oraz układ sekwencjonowania programu Program Sequencer:

Ponadto zawiera : elementy we/wy, peryferia (porty szeregowe, flagi we/wy, timer)

Podział instrukcji. 15 przykładów dla dowolnej architektury

Podział

Przykłady dla AVR ATMEGA:

Mnemonik Operandy Opis Znaczniki Cykle zegara Uwagi
Arytmetyczno-logiczne
ADD Rd, Rr Rd = Rd + Rr ZCNVSH 1 d, r = [0,31]
SUB Rd, Rr Rd = Rd - Rr ZCNVSH 1 d, r = [0,31]
SUBI Rd, K Rd = Rd – K ZCNVSH 1 K = [0,255], d = [16,31]
SBC Rd, Rr Rd = Rd-Rr-C ZCNVSH 1 d, r = [0,31]
AND Rd, Rr Rd = Rd & Rr ZNVS 1 d, r = [0,31]
ANDI Rd, K Rd = Rd & K ZNVS 1 K = [0,255], d = [16,31]
OR Rd, Rr Rd = Rd | Rr ZNVS 1 d, r = [0,31]
EOR Rd, Rr Rd = Rd ^ Rr ZNVS 1 d, r = [0,31]
COM Rd Rd = 0xFF-Rd ZNCVS 1 d = [0,31]
INC Rd Rd = Rd +1 ZNVS 1 d = [0,31]
TST Rd Rd = Rd & Rd ZNVS 1 d = [0,31]
CLR Rd Rd = Rd^Rd ZNVS 1 d = [0,31]
Mnemonik Opis Cykle zegara Operacja
Rozgałęziające
JMP k Skok bezpośredni 2 PC = k
RJMP k Skok względny 2 PC = PC + k +1
CALL k Skok bezpośredni 3 PC = k
RET Powrót z procedury 4 PC = STACK
SBRC Rr, b Pomiń jeśli bit w rejestrze równy 0 1/2/3 If (Rr(b)=0) PC=PC+2 or 3
SBIS P, b Pomiń jeśli bit w rejestrze I/O równy 1 1/2/3 If (P(b)=1) PC=PC+2 or 3
BREQ k Skok gdy równe 1,2 If (Z=1) PC=PC+k+1
BRNE k Skok gdy nierówne 1,2 If (Z=0) PC=PC+k+1
BRSH k Skok gdy większe lub równe 1,2 If (C=0) PC=PC+k+1
BRLO k Skok gdy mniejsze 1,2 If (C=1) PC=PC+k+1
Bitowe
SBI P, b Ustaw bit w rejestrze I/O 2 I/O(P,b) = 1
CBI P, b Wyczyść bit w rejestrze I/O 2 I/O(P,b) = 0
LSL Rd Logiczne przesunięcie w lewo 1 Rd(n+1)=Rd(n), Rd(0)=0
LSR Rd Logiczne przesunięcie w prawo 1 Rd(n)=Rd(n+1), Rd(7)=0
ROL Rd Rotacja w lewo przez Carry 1 Rd(0)=C, Rd(n+1)=Rd(n), C=Rd(7)
SEI Włącz przerwania 1 I=1
ROR Rd Rotacja w prawo przez Carry 1 Rd(7)=C, Rd(n)=Rd(n+1), C=Rd(0)
Transfer danych
MOV Rd, Rr Prześlij z rejestru do rejestru 1 Rd = Rr
LDI Rd, K Ładuj stałą do rejestru d=[16,31] 1 Rd = K
LD Rd, X Ładuj pośrednio 2 Rd = (X)
ST X, Rr Zachowaj pośrednio 2 (X) = Rr
IN Rd, P Czytaj port 1 Rd = P
OUT P, Rr Wyślij na port 1 P = Rr
PUSH Rr Wyślij na stos 2 STACK = Rr
POP Rd Pobierz ze stosu 2 Rd = STACK

Co to jest pamięć wirtualna oraz układ zarządzania pamięcią MMU

Układ zarządzania pamięcią MMU – pozwala na obsługę pamięci wirtualnej i jej translację na pamięć fizyczną. Do zadań tych układów należy również ochrona pamięci podręcznej. Zarządzanie szynami danych

Pamięć wirtualna jest techniką programową a także sprzętową gospodarowania pamięcią operacyjną RAM pozwalającą na przydzielanie pamięci dla wielu procesów, zwalnianie jej i powtórne przydzielanie. Mechanizm umożliwia przydzielenie procesom więcej pamięci niż rzeczywista ilość pamięci fizycznej zainstalowanej w komputerze

Tryb rzeczywisty, tryb chroniony oraz tryb wirtualny V86 procesorów i386 i wyższych

Tryb rzeczywisty – tryb pracy mikroprocesorów z rodziny procesorów x86, w którym procesor pracuje tak jak procesor Intel 8086. W trybie tym brak ochrony pamięci przed użyciem przez inny proces i brak obsługi wielozadaniowości. W trybie rzeczywistym dostępna jest 1-megabajtowa przestrzeń adresowa. Procesory nowsze,i386 itd., mają szersze szyny adresowe (24-, 32- lub 36-bitowe) toteż pracując w trybie rzeczywistym mogą adresować całe 1088 kB pamięci.

Tryb chroniony (ang. protected mode) – to tryb pracy mikroprocesorów serii x86 wprowadzony w mikroprocesorze Intel 80286. Tryb chroniony umożliwia adresowanie pamięci w większym zakresie niż 1MB (tryb rzeczywisty), wprowadza wiele nowych udogodnień wspierających wielozadaniowość, takich jak: sprzętowa ochrona pamięci (układ MMU), wsparcie przełączania kontekstu procesora i wiele innych.

Tryb wirtualny (zwany także V86 lub Virtual 8086) — specjalny tryb pracy procesorów o architekturze IA-32, dostępny w trybie chronionym, który umożliwia uruchamianie programów przeznaczonych dla trybu rzeczywistego. W trybie wirtualnym symulowane jest działanie analogiczne dla procesora Intel 8086 (faktycznie można uruchamiać kod także dla 8088, 80186 i 80188), tzn. otrzymuje dostęp do 1 MB pamięci i rejestrów procesora i może wykonywać te rozkazy, które mają sens w takim otoczeniu.

Co to jest segmentacja pamięci, jaka jest różnica przy stosowaniu rejestrów segmentowych i indeksowych, podać przykłady

Segmentacja pamięci polega na podzieleniu przez system operacyjny pamięci fizycznej na fragmenty o określonym początku, rozmiarze, atrybutach i identyfikatorze. System tworzy takie segmenty na żądanie aplikacji, przekazując jej jedynie identyfikatory nie pozwalające na odczytanie parametrów segmentów. Programy odwołują się zatem do kolejnych komórek pamięci w ramach należących do nich segmentów, nie wiedząc nic o tym, w jakie miejsca pamięci fizycznej trafiają ich odwołania. Procesy nie mają też prawa „widzieć” segmentów należących do innych programów — w czasie przekazywania kontroli procesowi system musi zablokować definicje segmentów należących do pozostałych procesów, przy każdym przełączeniu blokując segmenty wyłączanego programu i na nowo uaktywniając segmenty programu aktywowanego.

Rejestry segmentowe tworzą wirtualne segmenty pamięci których adresy nie mają związku z fizycznym adresowaniem komórek pamięci

Rejestr segmentowy - rejestr procesora stworzony do przechowywania adresu początkowego obszaru pamięci, w którym umieszczone są rozkazy, dane albo stos programu. W procesorach o architekturze x86 występuje 6 rejestrów segmentowych:

Rejestry indeksowe - (ang. Index Register) – odmiana rejestrów ogólnego przeznaczenia; umożliwiają stosowanie techniki adresowania zwanej adresowaniem indeksowym. Polega ono na tym, że kolejno zwiększana lub zmniejszana zawartość rejestru indeksowego jest dodawana do pewnej stałej liczby dając w wyniku ciąg adresów umożliwiających np. kolejne adresowanie danych umieszczonych w kolejnych komórkach pamięci.

Adresowanie indeksowe jest rodzajem adresowania pośredniego, gdzie adres efektywny jest sumą zawartości rejestru indeksowego SI lub DI i lokalnego przemieszczenia. Np. MOV AX, [SI].

Ile jest wymaganych bitów adresowych aby zaadresować 4GB pamięci o organizacji po 4 bajty

x – ilość bitów potrzebna do zaadresowania 4GB, przy założeniu, że jedna komórka ma 4 bajty

Z powyższych obliczeń wynika, że potrzeba 30 bitów.

Wykreślić diagram odczytu i zapisu pamięci dla magistrali sterującej (OE, WR, CS), należy uwzględnić magistralę adresową i danych

Jaka jest różnica pomiędzy pamięcią statyczna i dynamiczna, co to jest odświeżanie pamięci i jak można je zrealizować na przykładzie Z80

Pamięć statyczna:

Pamięć dynamiczna jest to ulotna pamięć półprzewodnikowa o dostępie swobodnym, której bity są reprezentowane przez stan naładowania kondensatorów. Jej element składa się z kondensatora i tranzystora separującego. Ze względu na samorozładowywalnie się kondensatorów pamięci dynamiczne trzeba okresowo odświeżać z okresem od ułamka do kilku milisekund. Odświeżanie zawartości realizowane jest przez układy wspomagające umieszczone na płycie głównej lub sam procesor i polega na ponownym zapisie odczytanej wartości w te same komórki pamięci.

Typowa pojemność kondensatora w komórce pamięci dynamicznej to kilkadziesiąt femto faradów.

W procesorze Z80 za odświeżanie pamięci dynamicznych odpowiada rejestr R, który znajduje się w bloku Special Purpose Register.

Każdy akt odczytu z komórki pamięci powoduje więc zarazem odświeżenie jej zawartości. Komórki wymagają okresowego odświeżania zawartości nawet wtedy, gdy w pamięci nic się nie dzieje. Ładunek w kondensatorze C ulega bowiem powolnemu zanikowi w wyniku istnienia prądów upływu (prąd podprogowy tranzystora komórki, prąd wsteczny drenu). W celu odświeżania wystarczy okresowo odczytywać wszystkie komórki. Jak widać, działanie pamięci dynamicznej przy odczycie jest dość skomplikowane. Z tego powodu pamięci dynamiczne działają wolniej niż statyczne.

Rodzaje pamięci

Podział ze względu na sposób programowania:

Podział ze względu na sposób dostępu – interfejs:

Poprawka BCD

BCD – Binary Coded Decimal – kod dwójkowo-dziesiętny, który przyporządkowuje cyfrom dziesiętnym od 0 do 9 wektory informacji cyfrowej zwane z tego powodu kęsami BCD.

Najważniejszą zaletą kodów BCD jest prostota konwersji liczb pomiędzy postaciami: dziesiętną i binarną. Typowe zastosowania to: wyświetlacze liczb w postaci dziesiętnej np. kalkulatory.

Przykład liczbie 1937 w kodzie BCD odpowiada: 0001 1001 0011 0111

Poprawka BCD:

0 0 1 0 0 1 1 1

+

0 1 0 0 1 0 0 1

=

0 1 1 1 0 0 0 0

Należy zastosować poprawkę BCD, ponieważ w wyniku dodawania nastąpiło przeniesienie pomiędzy segmentami. Poprawka ta polega na dodaniu 6. Ostateczny wynik po poprawce wygląda następująco:

0 1 1 1 0 1 1 0

W powyższym przykładzie wszystko jest OK, nastąpiło przeniesienie -> dodano 6. Natomiast jeśli dodamy inne liczby np. 0111 i 1000 czyli 7 i 8 wówczas jako wynik otrzymamy 1111. Z punktu widzenia kodu BCD wynik ten jest nieprawidłowy, ponieważ w tym kodzie największą wartością na danych 4 bitach może być 1001. W tym przypadku należy sprawdzać czy otrzymana w wyniku dodawania liczba w danym segmencie nie jest większa od 9, jeśli tak wówczas trzeba dodać 6. Podsumowując, jeśli mamy liczbę składającą się z dwóch kęsów BCD, tak jak na powyższych schematach, wówczas:

Działania arytmetyczne na liczbach zmiennoprzecinkowych

x1 = M1 * PC1

x2 = M1 * PC2

M1, M2 – mantysy

C1, C2 – cechy

Założenie: C2 >C1

x1 +/- x2 = (M1 +/- M2 * PC2-C1) * PC1

x1 * x2 = (M1 * M2) * PC2 + C1

x1 / x2 = (M1 / M2) * PC1 – C2

Opisać rejestr znaczników

Rejestr znaczników jest rejestrem mikroprocesora. Jego zawartość stanowi pewna ilość tzw. flag, czyli wartości jednobitowych. Rejestr ten służy przede wszystkim do oznaczania wyników niektórych operacji. Wartości znaczników mogą również wpływać na pracę procesora, sposób wykonania pewnych instrukcji. Niektórymi z nich są znaczniki zera (ustawiany, gdy wynikiem rozkazu jest 0), znacznik przeniesienia (carry – ustawiany np, gdy wynik operacji nie zmieścił w rejestrze), przepełnienia (overflow – ustawiany, gdy wynik operacji ze znakiem nie zmieścił się w rejestrze). Mogą występować także inne flagi, takie jak: znacznik znaku, kierunku, parzystości, zezwolenia przerwań. Znaczniki wpływają np. na sposób wykonania instrukcji rozgałęziających.

Rejestr znaczników (flagowy) – zawiera dodatkowe cechy wyniku wykonywanej operacji, które potrzebne są do podjęcia decyzji o dalszym sposobie przetwarzania informacji. Cechami tymi mogą być: znak wyniku, przekroczenie zakresu, parzysta lub nieparzysta liczba jedynek. Wystąpienie określonej cechy sygnalizowane jest ustawieniem lub wyzerowaniem określonego bitu w rejestrze flagowym. Ustawione bity są znacznikami lub flagami.

Co to jest przerwanie, jaka jest różnica pomiędzy przerwaniem maskowalnym i niemaskowalnym

Przerwanie (ang. interrupt) jest stanem powodującym zmianę sposobu wykonywania programu procesora. Przerwania można podzielić na programowe i sprzętowe. Przerwanie programowe jest generowane odpowiednią instrukcją procesora wykonywaną podczas przetwarzania programu i przypomina raczej wywołanie podprogramu niż faktyczne przerwanie. Przerwanie sprzętowe to sygnał generowany przez dowolne urządzenie peryferyjne (znajdujący się wewnątrz lub poza mikrokontrolerem), które wymaga natychmiastowej obsługi przez procesor. W momencie zgłoszenia przerwania procesor wykonuje skok do obsługi danego przerwania. Miejsce, gdzie ta procedura obsługi się znajduje jest wyszukiwane w tzw. tablicy wektorów przerwań. Tam na podstawie numeru przerwania jest ustalany adres procedury. Po zakończeniu obsługi przerwania procesor kontynuuje wykonywanie przerwanego programu.

Przerwania maskowalne to takie, które mogą zostać zamaskowane, czyli wyłączone. Oznacza to, że procesor nie będzie reagować na zgłaszanie danego przerwania. Przerwaniem niemaskowalnym zostanie zawsze obsłużone ilekroć zostanie ono zgłoszone i nie można tego wyłączyć. Np. w procesorach AVR niemsakowalne jest tylko 1 przerwanie – reset.

Podać tryby adresowania

//uzupełnienie

Tryb natychmiastowy:

Tryb rejestrowy:

Tryb rejestrowy pośredni:

Tryb pośredni:

Tryb bezpośredni

Tryb indeksowy:

`

Do czego służy dekoder adresów, przykłady

Dekoder adresu jest urządzeniem, które na podstawie niektórych linii adresowych określa fizycznie kość, z udziałem której odbywa się transmisja danych. Kod na podstawie wybranych linii adresu decyduje któremu układowi ustawić wyprowadzenie CS (chip select) w stan wysoki. Pozostałe moduły pamięci będą mieć linie danych w stanie wysokiej impedancji. Przykładem dekodera adresu jest układ 74154 lub multiplekser z wejściem zwartym do 1.

Podać warianty ramki dla standardu UART

Na ramkę składają się: bity danych, bit startu (znacznik początku ramki), bit parzystości oraz bity stopu (znacznik końca ramki). Ramka może zawierać od 5 do 8 bitów danych. Bit startu jest obowiązkowy, natomiast liczba bitów stopu może wynosić 1 lub 2. Bit parzystości jest wykorzystywany do zabezpieczenia danych przed przekłamaniem podczas przekazu. Może oznaczać parzystą lub nieparzystą liczbę ustawionych bitów w polu danych. Bit ten może być ustawiony na stałe lub też może być na stałe wyzerowany, może być także pominięty.

Czym różni się transmisja synchroniczna od asynchronicznej

W transmisji synchronicznej równolegle do sygnałów danych jest przesyłany sygnał taktujący. Próbkowanie danych na liniach danych odbywa się w określonym momencie przejścia sygnału zegarowego (zbocze narastające lub opadające).

W trybie asynchronicznym nie ma oddzielnej linii zegarowej, a dane są przesyłane w takt wewnętrznego sygnału zegarowego, który jest generowany oddzielnie w nadajniku i odbiorniku. Warunkiem prawidłowego przesyłania danych w asynchronicznym sposobie transmisji jest to, aby nadajnik i odbiornik miały ustawioną tą samą częstotliwość wspomnianych sygnałów zegarowych. Dane najczęściej są próbkowane z częstością 16 razy większą od częstości przesyłania kolejnych bitów. Nadpróbkowanie ma na celu zapewnienie, że żadna dana nie zostanie przekłamana w czasie transmisji.

Co to jest pamięć CACHE, jaka jest zaleta stosowania tej pamięci w przypadku bezpośredniego dostępu do pamięci

Pamięć cache jest szybką pamięcią pośredniczącą w przesyłaniu danych pomiędzy pamięcią RAM a innymi układami np. procesorem. Pamięć cache ma znacznie mniejszy czas dostępu niż pamięć RAM. Cache jest wykorzystywana w procesorach, gdzie umieszczane są rozkazy do wykonania. Ich pobieranie z tej pamięci jest znacznie szybsze niż z RAM, co pozwala zmniejszyć czas ich wykonywania. Pamięć cache często jest też instalowana w dyskach twardych oraz napędach DVD-RW.

Pamięć podręczna cache ma czas dostępu poniżej 10µs. Wadą jest niewielka pojemność i duża cena. Jednak dodanie niewielkiej pojemności pośredniej między powolną pamięcią RAM a szybkim mikroprocesorem daje efekt przyśpieszenia mikrokomputera.

Przechowuje ona porcje danych pobrane z RAM, które z dużym prawdopodobieństwem będą potrzebne mikroprocesorowi. Możemy przyjąć trzy sposoby podłączenia pamięci cache: boczne, w linii, obustronnie.

Co to jest stos, podać przykładowe instrukcje operujące na stosie

Stos (ang. LIFO, Last In, First Out; ostatni na wejściu, pierwszy na wyjściu) – liniowa struktura danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane. Ideę stosu danych można zilustrować jako stos położonych jedna na drugiej książek – nowy egzemplarz kładzie się na wierzch stosu i z wierzchu stosu zdejmuje się kolejne egzemplarze. Elementy stosu poniżej wierzchołka stosu można wyłącznie obejrzeć, aby je ściągnąć, trzeba najpierw po kolei ściągnąć to, co jest nad nimi.

Przykładowe instrukcje:

Pamięć SRAM w układach AVR powierzono dodatkową i istotną rolę. Poza miejscem przechowywania danych, pamięć ta stanowi jednocześnie stos mikrokontrolera. Pamięć stosu wykorzystana może być do tymczasowego przetrzymywania zmiennych lokalnych oraz zapamiętywania adresów powrotu przy wywoływaniu podprogramów.

Dokładanie danych na stos (push) powoduje dekrementację wskaźnika stosu, a ich ściąganie (po) jego inkrementacje. Konsekwentnie wywołanie podprogramu (call, wystąpienie przerwania) zmniejsza wartość tego wskaźnika (przesyła na stos adres powrotu), powrót( Ret, reti) jego zwiększenie. W przypadku skoków na stos odkładany jest licznik programu o długości 2 bajtów.

Co to oznacza, że architektura jest zewnętrznie 16, a wewnętrznie 32 bitowa, podać zalety i wady takich rozwiązań

//Z wikipedii – analog.

Architektura 16-bitowa – jest to potoczna nazwa architektury procesora posiadającego wewnętrzne rejestry o długości 16 bitów. Ten fakt przekłada się bezpośrednio na sposób przetwarzania danych w komputerze w porcjach tejże wielkości. Należy podkreślić, że termin architektura 16-bitowa nie odnosi się do długości szyny danych oraz możliwości adresowych takiego procesora (długości szyny adresowej). Przykładowo: 16 bitowy procesor 8088 posiada 8 bitową szynę danych (co oznacza, że podczas jednego cyklu odczytu z pamięci może odczytać 8 bitów) oraz 20 bitową szynę adresową (co z kolei umożliwia mu adresowanie 220, czyli megabajt pamięci).

Pierwszym na świecie mikroprocesorem 16-bitowym był TMS9900 wyprodukowany przez firmę Texas Instruments w 1976 roku.

Procesory 16-bitowe stosunkowo dawno wyszły z użycia domowego, obecnie stosowane są głównie w sterownikach przemysłowych i systemach wbudowanych.

Procesory wykonane w tej architekturze to np.:

* Intel : seria 8086 aż do 80286

* Zilog : seria Z800

* AMD : AM29116

Jaka jest różnica pomiędzy układem licznikowym a czasomierzem

Licznik jest układem służącym do zliczania impulsów pochodzących z zewnętrznego źródła. Czasomierz jest układem bardzo podobnym do licznika z tym, że zliczane są impulsy zegarowe pochodzące z oscylatora.

Sterownik wyświetlacza alfanumerycznego hd44780

Jednym z najbardziej popularnych chipów kontrolujących pracę wyświetlacza LCD jest HD44780, wdrożony przez japońską firmę Hitachi. Na poniższym rysunku przedstawiony został model typowego wyświetlacza LCD opartego na HD44780.

Rys. 1 Typowa budowa wewnętrzna modułu LCD

W wyświetlaczach LCD opartych na sterowniku HD44780 zasadnicze pole odczytowe sterowane jest poprzez 3 grupy sygnałów. Dwie grupy sygnałów generowane są bezpośrednio z kontrolera, natomiast trzecia grupa pochodzi od dodatkowych układów tzw. driverów LCD. Ilość tych dodatkowych driverów jest ściśle zależna od ilości wyświetlanych znaków, ponieważ jeden driver może obsługiwać maksymalnie do 16 znaków. Cały moduł jak widać na rys. 1 sterowany jest przy użyciu 11 linii sterujących. Oprócz tego do wyświetlacza należy jeszcze podłączyć zasilanie (VDD) oraz masę (VSS). Przewód V0 służy natomiast do regulacji kontrastu. Moduły LCD z reguły zasila się napięciem +5V.

Moduły LCD posiadają ponadto 3 rodzaje pamięci wewnętrznej:

CG ROM (czyli Charakter Generator ROM) jest to wbudowana w strukturę sterownika HD44780 pamięć typu ROM, w której umieszczone są kombinacje zgaszonych i zapalonych pikseli w matrycy danego znaku. DD RAM (czyli Display Data RAM) to natomiast tzw. pamięć wyświetlania. Jest ona taka sama dla wszystkich rodzajów wyświetlaczy i wynosi 80 znaków. Wobec tego jednocześnie do modułu wyświetlacza można zapisać 80 znakową informację, co powoduje, że jeżeli dany wyświetlacz ma mniejsze pole odczytowe niż 80 znaków, wówczas na LCD pojawią się tylko znaki z wpisanego tekstu.

Na rys. 2 zaznaczonych zostało 11 sygnałów sterujących. Osiem z nich - oznaczonych jako D0-D7 - to typowa ośmiobitowa linia danych, przeznaczona do wymiany informacji z kontrolerem sterującym.. Sygnał R/W (Read/Write) ustala kierunek komunikacji z wyświetlaczem LCD, sygnał RS ustala tryb pracy jako transmisję danych bądź instrukcji. Natomiast E (Enable) umożliwa odczyt sygnałów wejściowych. Na rys. 3 przedstawiony został cykl zapisu jak i odczytu danych z modułu LCD.

Rys. 3 Przebiegi charakterystyczne sygnałów sterujących LCD przy zapisie i odczycie

Jak można zaobserwować na rys. 3, aby zapisać daną lub instrukcję do LCD należy kolejno:

ustawić odpowiedni poziom na linii RS (‘0’ jeśli zapisywana jest instrukcja i ‘1’ jeśli zapisywana jest dana); na linii R/W ustawić ‘0’ (ponieważ dokonywany jest zapis); podać na linie D0…D7 daną lub instrukcję; w tym czasie linia E powinna znajdować się w stanie niskim;

następnie na linie Enable należy podać impuls o czasie trwania tEN, który minimalnie powinien wynosić 450ns; podczas opadającego zbocza dane z szyny danych zostają „fizycznie” zapisane do modułu LCD

po tym zboczu należy jeszcze przez okres tH, który minimalnie powinien wynosić 20ns, podtrzymać dane na liniach D0…D7;

po okresie tH stan na liniach RS, R/W oraz na szynie danych jest nieistotny; moduł wykonuje teraz wewnętrzne operacje zależne od wpisanych danych lub instrukcji;

W tabeli 1 przedstawione zostały instrukcje, które pozwalają sterować wyświetlaczem m.in. pozwalają wyczyścić wyświetlacz czy też włączyć funkcję migania kursora.

Tabela 1. Zbiór instrukcji służących do sterowania LCD

Instrukcja Dane Opis

Czas

wykonania

RS R/W D7
Clear display 0 0 0
Return home 0 0 0
Entry mode set 0 0 0
Display ON/OFF 0 0 0
Cursor & display shift 0 0 0
Function set 0 0 0
Set CG RAM address 0 0 0
Set DD RAM address 0 0 1
Read busy flag 0 1 BF

Write data to

CG or DD RAM

1 0 Dana do zapisu

Read data from

CG or DD RAM

1 1 Odczytana dana

I/D = 1 Zwiększanie (+1) I/D = 0 Zmniejszenie (-1)

S/C = 1 Przesuwanie napisu S/C = 0 Przesuwanie kursora

R/L = 1 Przesuwanie w prawo R/L = 0 Przesuwanie w lewo

DL = 1 Interfejs 8-bitowy DL = 0 Interfejs 4-bitowy

N = 1 2 linie N = 0 1linia

F = 1 znaki 5x10 punktów F = 0 znaki 5x7 punktów

BF = 1 Moduł zajęty BF = 0 Gotowy na następną instrukcję

S = 1 Przesuwanie całej zawartości napisu DD RAM

Bity nie mające znaczenia „▪”

DD RAM: Pamięć znaków

CG RAM: Pamięć generatorów znaków

ACG: Adres w pamięci CG RAM

ADD: Adres w pamięci DD RAM

AC: licznik (wskaźnik) adres w pamięci DD lub CG RAM

Czas wykonania zależy od rodzaju modułu LCD

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku firmy Hitachi posiada układ automatycznego resetowania modułu po włączeniu napięcia zasilającego (‘Internal reset circuit’). Inicjalizacja automatyczna trwa około 10ms i podczas tego okresu wyświetlacz nie przyjmuje żadnych rozkazów.

Wartości początkowe są następujące:

wyświetlacz wygaszony (‘display clear’)

8-bitowa szyna danych (‘function set’ DL=1)

wyświetlanie 1 linii (‘function set’ N=0)

matryca znaku 5x7 punktów (‘function set’ F=0)

zwiększanie adresu (‘entry mode set’ I/D=1)

brak przesuwania (‘entry mode set’ S=0)

Opisać tryb zerowy układu 8255

Układ 8255 jest układem uniwersalnych portów wejścia/wyjścia. Układ jest wyposażony w 2 porty 8 bitowe (A i B) i dwa porty 4 bitowe (oznaczone jako port C). Tryb zerowy jest podstawowym trybem pracy układu. Każdy z portów (łącznie z obiema połówkami portu C) może pracować niezależnie od pozostałych jako wejście lub wyjście. Do sterowania układem wykorzystano 8 bitów danych, 2 bity adresu, linię CS (chip select) oraz linie RD i WR. Wyjścia portów są wyposażone w zatrzaski, z kolei wejścia nie są wyposażone w zatrzaski. Zapisanie wartości do odpowiedniego rejestru przez procesor spowoduje ustawienie żądanego stanu portów. Odczyt portów odbywa się również przez określony rejestr układu.

Architektura komputerów klasy PC (tryb rzeczywisty), start komputera - POST, mapa pamięci, bit A20

W momencie włączenia zasilania procesor x86 rozpoczyna wykonywanie programu od adresu 0xFFFF:0x0000. W trakcie uruchamiania komputera wykonywany jest tzw. POST (Power-On Self Test) w trakcie którego wykonywane jest sprawdzenie podstawowych podzespołów komputera. Przebieg POST zależy od tego, czy wykonano zimny, czy gorący start komputera. W trakcie zimnego startu sprawdzane są takie komponenty jak: procesor, pamięć ROM, RAM, układy pomocnicze, klawiatura, karty rozszerzeń, dyski. W trakcie gorącego startu pomijany jest test pamięci RAM. Następnie rozpoczyna się wykonywanie programu zawartego w pamięci ROM. Następuje inicjalizacja kart rozszerzeń, ustalenie wektorów przerwań BIOS oraz załadowanie sektora MBR pierwszej stacji dysków i jego wykonanie.

Podać największą liczbę, ale ujemną zapisaną w kodzie U2 na 16 bitach, z których 4 zostały przeznaczone na część ułamkową, podać reprezentację bitową tej liczby

Największą liczbą ujemną zapisaną w tym formacie będzie liczba dziesiętna -0,0625, która ma reprezentację bitową:

1 11111111111,1111

Podać przykłady rozkazów rozgałęziających, podać możliwość zapętlenia kodu oraz wytwarzania opóźnień z użyciem tych rozkazów

Przykłady rozkazów rozgałęziających (AVR ATMEGA):

Mnemonik Opis Operacja
JMP k Skok bezpośredni PC = k
RJMP Skok względny PC = PC + k + 1
CALL k Skok bezpośredni PC = k
RET Powrót z procedury PC = STACK
SBRC Rr, b Pomiń jeśli bit w rejestrze równy 0 If (Rr(b)=0) PC=PC+2 or 3
SBIS P, b Pomiń jeśli bit w rejestrze I/O równy 1 If (P(b)=1) PC=PC+2 or 3
BREQ k Skok gdy równe If (Z=1) PC=PC+k+1
BRNE k Skok gdy nierówne If (Z=0) PC=PC+k+1
BRSH k Skok gdy większe lub równe If (C=0) PC=PC+k+1
BRLO k Skok gdy mniejsze If (C=1) PC=PC+k+1
CALL k Skok bezpośredni PC = k

Co to są drgania styków, podać algorytm ich eliminacji

Drgania styków jest to efekt niepożądany jaki występuje w momencie wciskania i zwalniania przycisku. Objawia się on występowaniem na zmianę losowych przełączeń między stanami wysokimi i niskimi. Efekt ten utrzymuje się przez kilkanaście milisekund. Dobrym sposobem eliminacji drgań jest zastosowanie pętli czasowej wykonywanej po wykryciu wciśnięcia przycisku tak długo, aby stan wejścia był już stabilny.

Sposób realizacji PWM (modulacji szerokości impulsów) przy użyciu układów czasowych

Układ PWM jest to układ, który generuje sygnał prostokątnym o regulowanym wypełnieniu. PWM można zbudować wykorzystując czasomierz, który będzie zmieniał stan wyjścia przy przepełnieniu oraz przy zrównaniu wartości licznika z pewną określoną wartością. Licznik taki zawsze będzie zliczać w górę. Od wartości porównywanej będzie zależeć wypełnienie impulsów. Taki tryb pracy układu PWM został zaimplementowany w mikrokontrolerach serii AVR i nazywa się Fast PWM.

Systemy wieloprocesorowe (podział)

Podział ze względu na symetrie:

Podział ze względu na potok danych i programu

Co to jest stan wysokiej impedancji, jakie ma on zastosowanie w systemie mikroprocesorowym

Stan wysokiej impedancji jest to stan, w którym bramka na wyjściu nie posiada ani stanu wysokiego, ani niskiego. Jej wyjście jest praktycznie odizolowane od wejść. Dzięki temu możliwe jest proste zrealizowanie portów dwukierunkowych bez ryzyka uszkodzenia bramek (w wyniku połączenia z sobą dwóch wyjść), dwukierunkowych magistral danych. Stan wysokiej impedancji jest aktywowany poprzez ustawienie stanu wysokiego na określonym wejściu bramki trójstanowej.

Co to jest MMX oraz SSE

MMX jest dodatkowym zestawem instrukcji wprowadzonym w procesorach Pentium MMX. MMX pozwala za pomocą jednej instrukcji wykonywać operacje na zbiorze kilku danych (SIMD – single instruction, multiple data). Instrukcje te służą do operowania liczbami całkowitymi (z i bez znaku). Instrukcje MMX pozwalają również na przeprowadzanie obliczeń z tzw. nasycaniem. Dzięki temu dodanie dwóch liczb, które przepełniłyby rejestr spowoduje ustawienie w nim najwyższej możliwej wartości. Zestaw instrukcji SSE (Streaming SIMD Extensions) został wprowadzony do procesorów Pentium III. Pozwala na wykonywanie instrukcji SIMD na liczbach zmiennoprzecinkowych.

Opisać krótko mikrokontroler PIC (Microchip) (rejestry, rozkazy, architektura)

Procesory PIC firmy MICROCHIP są procesorami posiadającymi cechy architektury RISC to oznacza, że posiadają zminimalizowaną listę rozkazów. Zaletę procesorów PIC jest przede wszystkim:

W procesorze PIC 16F84 znajdują się dwa bloki pamięci:

Pamięć danych podzielona jest na dwa obszary. Pierwszy obszar to rejestry ogólnego specjalnego przeznaczenia SFR, które służą do sterowania oraz kontrolowania mikroprocesora, drugi zaś to rejestry ogólnego przeznaczenia – GPR służące jako pamięć operacyjna (statyczna) RAM. Pamięć danych podzielona jest na banki w PIC 16F84 znajdują się dwa banki. Bezpośredni dostęp do rejestrów jest możliwy tylko w obrębie jednego banku

Rejestr Statusowy:

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
IRP RP1 RP0 ~TO ~PD Z DC C

IRP – bit wybierający bank (używany do adresowania pośredniego)

RP1, RP0 – do selekcji banków (używany do adresowania pośredniego)

PD – Power down

Z – wskaźnik zera

DC – przeniesienie połówkowe

C – wskaźnik przeniesienia

Podać kod w c ustawiający, zerujący lub negujący n-ty bit słowa

| - bitowe OR

& - bitowe AND

~ - negacja bitowa

1<<n – przesuwanie bitowe (w tym przypadku 1 w lewo o n bitów)

^ - bitowe XOR

Ustawianie bitu n w słowie A:

A |= 1<<n

A = A | 1<<n

Ustawienie bitu m i k w słowie A:

A |= 1<<m | 1<<k

Wyzerowanie bitu n w słowie A:

A &= ~(1<<n)

A = A & ~(1<<n)

Wyzerowanie bitów n, m, k i k+1 w słowie A:

A &= ~(1<<n | 1<<m | 3<<k)

Negacja bitu n w słowie A:

A ^= 1<<n

A = A ^ (1<<n)

Negacja bitu n i k+2 w słowie A:

A ^= (1<<n | 4<<k)

Kopiowanie bitów B6, B5, B4 na bity A4, A3, A2

A = (A & 0xE3) | (B>>2 & 0x1C)

Dostęp do peryferiów (ADC, DAC, liczniki, pamięć EEPROM itp.) z punktu widzenie mikroprocesora

Podać różnice pomiędzy magistralą komputerową ISA oraz PCI

Magistrala ISA jest to 16 bitowa magistrala, taktowana częstotliwością 8MHz, której maksymalna realna przepustowość wynosi ok. 4-5 MB/s. Złącze tej magistrali składa się z dwóch sekcji 62 i 36 stykowej. Doprowadzone jest 16 linii danych (po 8 na każdą z sekcji), cztery napięcia zasilania, w sumie występuje 27 linii adresowych (20 w sekcji podstawowej i 7 sekcji 36stykowej), linia reset, linie przerwań, linie związane z komunikacją w kanałach DMA, dwa sygnały oscylatora, oraz inne linie sterujące. Występują dwa rodzaje kart tzw. Długie czyli posiadającą także sekcje 36 stykową. Karty te operują na słowie 16 bitowym, mają dostęp do większej ilości przerwań oraz kanałów DMA. Drugi rodzaj kart to karty krótkie czyli mające tylko sekcję 62 stykową. Urządzenie na tych kartach operują na słowie 8 bitowym.

ISA parametry:

Magistrala PCI (ang. Peripheral Component Interconnect)

Co to jest WATCHDOG

Układ Watchdog służy do wykluczenia możliwości „zawieszania się” mikrokontrolera, np. na skutek zaistniałych zakłóceń w systemie czy poprzez wykonywanie nieskończonych, niepożądanych pętli programu.

Jeśli włączony licznik watchdog’a nie zostanie w określonym czasie wyzerowany, nastąpi wygenerowanie impulsu resetującego mikrokontroler. Taktowanie odbywa się poprzez niezależny wbudowany oscylator.

W mikrokontrolerze Atmega16 watchdog jest taktowany oscylatorem o częstotliwości pracy ok. 1MHz. Włączanie i konfigurowanie watchdog’a odbywa się przez rejestr WDTCR. W rejestrze tym znajdują się bity odpowiedzialne za włączenie i odblokowanie watchdog’a (WDE i WDTOE) oraz bity WDP2:0, które odpowiadają za preskaler. Za pomocą tych bitów dobierany jest czas, jaki upływa od zerowania watchdog’a do wygenerowania przez niego impulsu resetującego. Czas można dobierać w zakresie od ok. 16ms (stan 000) do ok. 2,2s (stan 111).


Wyszukiwarka

Podobne podstrony:
Pytania z poprawy drugiego koła z?rmy
PYTANIA Z POPRAWY
Biomechanika - pytania - poprawione, Egzamin - sesja - dr Nowak
T4 pytania poprawione
siedliska, 1. pytania poprawione, Pytania dotyczące klimatu SIEDLISKOZNAWSTWO
pytania 2 poprawka
PYTANIA POPRAWIONE!
pytania z poprawy z fizycznej, Sem 3
pytania z poprawy, Ekonomia UEK, rok2, semestr4, Polityka społeczna, Polityka społeczna
Pytania poprawa II koło
pytania z poprawy kolosa IFP, Egzamin(1)
części maszyn kol1 pytania poprawione, ★Dokumenty★
pytania poprawkowe, geomechanika - stosy III
mikrobiologia pytania z poprawki lekarski 2009, Mikrobiologia i immunologia
pytania poprawione (1)
PKMT pytania z poprawy, Studia, ZMB, MRIT, lab, kolos lab
ZSZ PYTANIA z poprawionymi pytaniami
Egzzamin z mechaniki pytaniaaaa poprawione

więcej podobnych podstron