1
1. 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 :
mała moc obliczeniowa (20 MIPSów)
na ogół brak instrukcji zmiennoprzecinkowych
przetwarzanie potokowe
bogate peryferia
o
liczniki i układy czasowe
o
przetworniki A/C i C/A
o
duża liczba interfejsów
dostępne operacje bitowe
brak układu zarządzania pamięcią MMU
praca tylko w trybie rzeczywistym
rzadko obsługiwany bezpośredni dostęp do pamięci DMA
zastosowanie: aparatura kontrolno pomiarowa
Mikroprocesor jest sekwencyjnym układem logicznym działającym w takt sygnału zegarowe CLK:
duża moc obliczeniowa (6000 MIPSów obecnie)
wielordzeniowość oraz technologia HT
przetwarzanie potokowe
dostępne instrukcje zmiennoprzecinkowe
do działania wymaga dodatkowych peryferiów
o
kontroler DMA
o
pamięć (programu i danych)
o
kontroler przerwań PIC (ang. Programmable Interrupt Controller)
dostępny układ zarządzania pamięcią MMU
adresowanie w trybie rzeczywistym i wirtualnym
z reguły architektura Von-Neumana
możliwość pracy w systemie wieloprocesorowym
zastosowanie: komputery (stacje robocze - komputery osobiste, serwery)
2. 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
2
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:
Urządzenie połączone z wejściem o numerze
n zgłasza przerwanie wymuszając wysoki poziom
logiczny na lini IRn
Jeżeli bit n w rejestrze maskującym IMR
jest ustawiony to powoduje ignorowanie wszelkich
przerwań nadchodzących tą linią, jeżeli nie to
powoduje ustawienie n-bitu w rejestrze zgłoszeń
IRR
Nastepnie układ oceny priorytetu wybiera w
przypadku większej liczby zgłoszeń to o najwyższym
priorytecie i wysyłago do rejestru obsługi ISR
w ISR obsługiwane jest przerwanie ,
procesor wysyła sygnał INTA a kontroler odpowiada
do niego wystawieniem na szynę danych D0:7
wektora przerwań
następnie rejestr ISR jest zerowany co objawia się gotowością do obsługi kolejnego
przerwania
Obsługa przerwań od układu SLAVE:
zgłoszenie ustawia n bit w rejestrze zgłoszeń IRR układu SLAVE i po opracowaniu priorytetów,
wysyła sygnał INT do układu Master
układ master otrzymuje zgłoszenie na linii IR2, co powoduje ustawienie bitu 2 w rejestrze IRR
układ master opracowawszy priorytet własnych zgłoszeń, wysyła sygnał INT do procesora
procesor odpowiada pierwszym sygnałem INTA, następnie układ Master adresuje liniami
CAS0:2 układ Slave odpowiadający za obsługę zgłoszonego przerwania
w obu układach następuje przesunięcie bitu odpowiadającego obsługiwanemu kanałowi z
IRR do ISR
drugi impuls INTA Z CPU nakazuje układowi Slave wystawienie na szynę danych (D7:0)
wektora przerwań
zerowane są rejestry ISR układu Master i Slave
3
3. 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.
4. 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:
8 bitów to wykładnik (cecha)
23 bity to mantysa
1 bit został przeznaczony na znak liczby
Wartość liczby zmiennoprzecinkowej zapisanej w typie float jest obliczana wg wzoru:
Gdzie:
S (ang. sign) – znak liczby, czyli 1 lub -1
M (ang. Mantissa) – znormalizowana mantysa
E (ang. Exponent) – wykładnik
Bias (pochodzi od ang. Biased Exponent) – pewna stała o którą przesuwany jest wykładnik
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.
4
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
1
0
1
0
0
0
1
1
1
0
1
1
0
1
1
1
1
0
1
0
1
1
1
1
0
1
0
1
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 * 10
38
.
Wartość największa
( ) =
( ) ∗ 2
( )
Wartość najmniejsza
( ) = −
( ) ∗ 2
( )
Wartość największa mniejsza od zera
( ) = −
( ) ∗ 2
( )
Najmniejsza większa od zera
( ) =
( ) ∗ 2
( )
5. 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) * P
L(C)-B
gdzie B = P
n-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 * 2
4
Przyjmując, że mamy 8 bitów na cechę oraz 8 bitów na mantysę (w tym jeden bit na znak),
otrzymujemy B = 2
8-1
-1 = 127, wobec tego L(C) = (131)
10
= (10000011)
2
Ostatecznie:
5
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
6. 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
7. 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.
<- von Neuman
6
Harwardzka
Prostsza od architektury Von Neumanna
co przekłada się na większą szybkość
działania(używane
w
procesorach
sygnałowych i tam gdzie procesor ma
dostęp do pamięci cache)
rozkazy i dane przechowywane są w
oddzielnych pamięciach
różna organizacja pamięci(inna długość
słowa danych i rozkazów)
możliwość
pracy
równoległej
(jednoczesny odczyt z pamięci programu
oraz pamięci danych)
von Neumanna
procesor ma dostęp do przestrzeni
adresowej
dekodery
dresowe
zapewniają mapowanie pamięci na
rzeczywiste układy
pamięć traktowana jest, jako liniowa
tablica komórek, które identyfikowane
są przy pomocy dostarczanego przez
procesor adresu
rozkazy i dane przechowywane są w tej
samej pamięci
nie da się rozróżnić danych od rozkazów
instrukcje jak i dane zakodowane są w
postaci liczb
wykonywany program może sam się
modyfikować traktując obszar instrukcji
jako dane
8. Różnice pomiędzy mikroprocesorami typu RISC oraz CISC
Ze względu na typ listy instrukcji mikroprocesory można podzielić na:
RISC (ang. Reduced Instruction Set Computer)
Jako przykłady można wymienić: Atmel AVR, ARM, Ralpha, MIPS, SPARC, Intel 80860
CISC (ang. Complex Instruction Set Computer)
Jako przykłady można wymienić: AMD, x86
Podstawowe cechy architektury RISC w porównaniu z CISC:
Zredukowana liczba rozkazów do niezbędnego minimum. Ich liczba wynosi kilkadziesiąt,
podczas gdy w procesorach CISC sięga setek. Upraszcza to znacznie dekoder rozkazów.
Redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze, bardziej
zunifikowane, co dodatkowo upraszcza wspomniany wcześniej dekoder rozkazów. Ponadto
wprowadzono tryb adresowania, który ogranicza ilość przesłań - większość operacji wykonuje
się wg schematu:
Ograniczenie komunikacji pomiędzy pamięcią, a procesorem. Przede wszystkim do
przesyłania danych pomiędzy pamięcią, a rejestrami służą dedykowane instrukcje, które
zwykle nazywają się load (załaduj z pamięci), oraz store (zapisz do pamięci); pozostałe
instrukcje mogą operować wyłącznie na rejestrach. Schemat działania na liczbach
znajdujących się w pamięci jest następujący: załaduj daną z pamięci do rejestru, na zawartości
rejestru wykonaj działanie, przepisz wynik z rejestru do pamięci.
Zwiększenie liczby rejestrów (np. 32, 192, 256, podczas gdy np. w architekturze x86 jest
zaledwie 8 rejestrów), co również ma wpływ na zmniejszenie liczby odwołań do pamięci.
Dzięki przetwarzaniu potokowemu (ang. pipelining) wszystkie rozkazy wykonują się w jednym
cyklu maszynowym, co pozwala na znaczne uproszczenie bloku wykonawczego, a
zastosowanie superskalarności także na zrównoleglenie wykonywania rozkazów. Dodatkowo
czas reakcji na przerwania jest krótszy.
W skrócie:
RISC
CISC
Zbiór instrukcji jest ortogonalny
Rozbudowana liczba instrukcji
7
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
9. 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
I
2
C/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
10. Architektura mikrokontrolerów AVR
8
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.
9
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.
10
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:
11
Mapa pamięci danych:
Porty wejścia i wyjścia:
Budowa
12
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.
11. Opisać architekturę Motorola M68
12. Sekwencja startu i stopu w protokole I
2
C
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
13
poziomu na linii SCL, to sytuacja taka nazywa się STOP. Przedstawione to zostało na poniższych
wykresach:
W protokole I
2
C 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.
13. 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:
Wykorzystuje jedną linię do dwustronnej komunikacji.
Wymaga rezystora podciągającego na linii danych (ang. pull-up resistor) najczęściej o wartości
4.7–5 kΩ.
System z magistralą 1-Wire wymaga jednego urządzenia typu Master i jednego lub więcej
urządzeń typu Slave.
Każde urządzenie podłączone jest do magistrali przez końcówkę typu „open drain” lub 3-state
port.
Wszystkie dane oraz rozkazy przesyłane są przez magistralę począwszy od najmłodszego bitu
(ang. LSB).
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.
14
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.
15
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
16
14. 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.
15. 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:
Operacja mnożenia wraz z akumulacją wykonywana jest w jednym cyklu
Specjalne tryby adresowania pamięci (pamięć dwuportowa)
Sprawna realizacja pętli
Procesory DSP można podzielić na:
Stałoprzecinkowe
Zmiennoprzecinkowe
16, 32 czy 64 bitowe
17
Przykładem procesora sygnałowego może być procesor sygnałowy rodziny ADSP-21xx. W procesorze
tym znajdują się następujące jednostki obliczeniowe:
ALU – Arithmetic Logic Unit jest 16-bitowa z dwoma wejściami X i Y i jednym wyjściem R,
wyniki operacji zapamiętywane są w rejestrach AR i AF,
o
Operacje arytmetyczne i logioczne
o
Rejestr AF jest rejestrem wewnętrznym umożliwiającym użycie wyniku bezpośrednio
jako jedno z wejść (wejście Y)
o
Rejestr AR może zostać przesłany na magistralę R-BUS lub DMD-BUS oraz załadowany
z magistrali DMD-BUS
MAC – Multiply Accumulator
o
Jedno cyklowe instrukcje mnożenia, mnożenia z dodawaniem, mnożenia z
odejmowaniem
o
40-bitowy akumulator z zabezpieczeniem na przepełnienie
o
dwa 16-bitowe wejścia(X i Y)
o
wynik mnożenia w postaci 32 bitowej R
o
wynik może być podawany na wejście Y
o
wszystkie rejestry mogą być odczytane lub zapisane w tym samym czasie
Shifter – rejestr przesuwny
o
Normalizacja (konwersja liczb stałoprzecinkowych na zmiennoprzecinkowe)
o
Denormalizacja
o
Przesunięcia arytmetyczne i logiczne
Ponadto w procesorze znajdują się jeszcze: generator adresu danych DAG, który odpowiada za:
Sprzętowe adresowanie modulo
Jednoczesne zarządzanie czterema wskaźnikami za każdy DAG
Sprzętowa implementacja bufora cyklicznego
Możliwość pobrania dwóch operandów jednocześnie
oraz układ sekwencjonowania programu Program Sequencer:
Generowanie adresu kolejnych instrukcji
Stos sprzętowy
Obsługa przerwań
Jedno cyklowa obsługa instrukcji rozgałęziających
Ponadto zawiera : elementy we/wy, peryferia (porty szeregowe, flagi we/wy, timer)
16. Podział instrukcji. 15 przykładów dla dowolnej architektury
Podział
pełniona funkcja
o
przesłań (miedzyrejestrowe, pamięć – rejestr, rejestr – pamięć)
o
arytmetyczne
o
logiczne
o
sterujące (wywołanie podprogramu, skok bezwarunkowy, skok bezwarunkowy
względny)
o
warunkowe
o
specjalne (zatrzymanie procesora, oczekiwania przerwania, operacja pusta, obniżenie
poboru mocy)
typ danych
o
stałoprzecinkowe
o
zmiennoprzecinkowe
18
o
bitowe (przesunięcia logiczne, arytmetyczne, przesuniecie cykliczne w prawo przez
znacznik przeniesienia
,
przesuniecie cykliczne w prawo, ustawianie bitu k w słowie B,
zerowanie bitu k w słowie B)
o
blokowe
o
DSP - Digital Sound Processing
o
SIMD - Single Instruction Multiple Data
poziom uprzywilejowania
o
0 - jadro systemu operacyjnego (zarządzanie pamięcią, przełączanie zadań)
o
1 - system operacyjny (dostęp do danych, obsługa wejść / wyjść)
o
2 - rozszerzenie systemu operacyjnego przez użytkownika
o
3 - programy użytkowe
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
19
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
17. 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
20
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
18. 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.
19. 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:
CS - 16 bitowy rejestr segmentu kodu programu
DS - 16 bitowy rejestr segmentu danych
SS - 16 bitowy rejestr segmentu stosu
ES, FS, GS - 16 bitowe rejestry pomocnicze dla danych
21
20. 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
2
x
4= 4000000000
x = log
2
1000000000
Z powyższych obliczeń wynika, że potrzeba 30 bitów.
21. Wykreślić diagram odczytu i zapisu pamięci dla magistrali sterującej (OE, WR,
CS), należy uwzględnić magistralę adresową i danych
22. 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:
Przechowuje informacje w rejestrach zbudowanych z przerzutników
Tworzone są w technologiach bipolarnych i MOS
Przechowują wpisane dane bez dodatkowych zabiegów tak długo, dopóki jest obecne
napięcie zasilania
Przykładem takich pamięci mogą być pamięci podręczne CACHE
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żaniu pamięci dynamicznych odpowiada rejestr R, który znajduje się w
bloku Special Purpose Register.
22
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.
23. Rodzaje pamięci
Podział ze względu na sposób programowania:
(S/D)RAM - (Static/Dynamic) Random Access Memory (pamięć o dostępie swobodnym),
ROM - Read Only Memory (pamięć tylko do odczytu),
OTP - One Time Programmable (pamięć jednokrotnie programowalna),
(UV)EPROM - Erasable Programmable ROM (pamięć tylko do odczytu kasowalna promieniami
UV),
EEPROM - Electrically EPROM (pamięć tylko do odczytu kasowalna elektrycznie),
Flash - pamiec EEPROM typu błyskowego (Pełka 1999),
NVRAM - Non Volatile RAM - pamięć nieulotna o dostępie swobodnym.
Podział ze względu na sposób dostępu – interfejs:
szeregowa,
równoległa,
FIFO - First Input First Output (kolejka),
FILO - First Input Last Output (stos),
jednoportowa,
wieloportowa.
24. 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
23
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:
Jeżeli cztery mniej znaczące bity wyniku zawierają liczbę większą od 9 (tzn. od 1001) lub
dodatkowe przeniesienie ma wartość 1, to do wartości wyniku należy dodać liczbę 6 (0110);
Jeżeli cztery bardziej znaczące bity wyniku zawierają liczbę większą niż 9 lub przeniesienie (z
najbardziej znaczącej pozycji) ma wartość 1, to do wartości wyniku należy dodać liczbę 60
(01100000);
25. Działania arytmetyczne na liczbach zmiennoprzecinkowych
x
1
= M
1
* P
C1
x
2
= M
1
* P
C2
M
1
, M
2
– mantysy
C1, C2 – cechy
Założenie: C2 >C1
Dodawanie
x
1
+/-
x
2
= (M
1
+/- M
2
* P
C2-C1
) * P
C1
Mnożenie
x
1
*
x
2
= (M
1
* M
2
) * P
C2 + C1
Dzielenie
x
1
/
x
2
= (M
1
/ M
2
) * P
C1 – C2
26. 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.
24
27. 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.
28. Podać tryby adresowania
implikowane – dane operandu są pobierane z określonego (wg kodu rozkazu) rejestru
ogólnego przeznaczenia oraz akumulatora, wynik w akumulatorze
natychmiastowe – (dane/dana operandu są umieszczone bezpośrednio w kodzie rozkazu)
dotyczy sytuacji kiedy do kodu rozkazu dołączony jest argument. Takie rozkazy są co
najmniej 2-bajtowe
bezpośrednie – (dane umieszczone w rejestrze procesora) odbywa się przez powiązanie
kodu rozkazu z adresem. Umożliwia adresowanie wewnętrznej pamięci RAM, SFR i
adresowanie bitów
indeksowe – (dane operandu są pobierane z pamięci. Adres jest ustalany na podstawie
wartości jednego z rejestrów indeksowych oraz przesunięcia zawartego w kodzie programu.)
to jedyny sposób na pobieranie stałych z pamięci ROM, umożliwia obsługę tablic. Rozkaz
wykorzystuje zawartość akumulatora i wcześniej zapisaną wartość rejestru pomocniczego
DPTR. Adres stałej jest tworzony przez sumowanie zawartości DPTR z zawartością
akumulatora.
postindeksowe – dana jest pobierana z pamięci. Adres jest ustalany na podstawie rejestru
indeksowego oraz przesunięcia. Przesunięcie jest odczytywane z pamięci na podstawie
adresu zawartego w kodzie programu
pośrednie – dana operandu pochodzi z pamięci, której adres jest określany na podstawie
zawartości innej komórki pamięci. Tej adres jest z kolei umieszczony w kodzie.
względne – adres danej operandu jest ustalany na podstawie aktualnego wskaźnika
instrukcji oraz przesunięcia z kodu programu
rejestrowe bezpośrednie służy do pobierania lub lokowania argumentu w rejestrach
roboczych Rr. Pobieranie argumentu a rejestru roboczego wymaga wcześniejszego
wprowadzenia danej do rejestru
pośrednie indeksowe wykorzystuje do adresowania argumentu rejestry indeksowe lub
rejestr pomocniczy DPTR, kod rozkazu zajmuje 7 bitów
25
29. 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.
30. 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.
31. 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.
32. 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 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.
33. 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
26
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:
Push – odłożenie obiektu na stos
Pop – ściągnięcie obiektu ze stosu i zwrócenie jego wartości
Call – odłożenie adresu następnej instrukcji na stos
Ret – ściągnięcie adresu ze stosu; powrót z podprogramu
Pamięć SRAM w układach AVR powierzono dodatkową i istotną rolę. Poza miejscem
przechowywania danych, pamięć ta stanowi jednocześnie stos mikrokontrolera. Pamięć stosu
wykorzystano 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.
34. Co to oznacza, że architektura jest zewnętrznie 16, a wewnętrznie 32 bitowa,
podać zalety i wady takich rozwiązań
35. 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.
36. 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
S
ygna
ły
s
te
ruj
ąc
e
Z
as
il
an
ie
LCD
DRIVER
LCD
DRIVER
8
4
40
8 lub 16
27
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:
pamięć generatora znaków CG ROM (255 znaków)
pamięć wyświetlacza DD RAM (80 znaków)
pamięć znaków użytkownika CG RAM (8 znaków)
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.
28
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 t
EN
, 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 t
H
, który minimalnie powinien wynosić 20ns,
podtrzymać dane na liniach D0…D7;
po okresie t
H
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
D6
D5
D4
D3
D2
D1
D0
Clear display
0
0
0
0
0
0
0
0
0
1
Czyści wyświetlacz i ustawia kursor na
początku (adres=0)
120μs…
4,9ms
Return home
0
0
0
0
0
0
0
0
1
▪
Ustawia kursor na pozycji początkowej.
Jeżeli napis był przesunięty ustawia go na
pozycji oryginalnej. DD RAM nie ulega
zmianie
120μs…
4,8ms
Entry mode set
0
0
0
0
0
0
0
1
I/D
S
Ustawia kierunek przesuwu kursora i
włącza/wyłącza funkcję przesuwu napisu
przy zapisie do DD RAM
120μs
Display ON/OFF
0
0
0
0
0
0
1
D
C
B
Włącza/wyłącza wyświetlacz (D), kursor (C) i
funkcję migania kursora (B)
120μs
Cursor & display shift
0
0
0
0
0
1
S/C
R/L
▪
▪
Przesuwa kursor i napis bez zmiany
zawartości DD RAM
120μs
Function set
0
0
0
0
1
DL
N
F
▪
▪
Ustala ilość bitów danych interfejsu (DL)
liczbę wyświetlanych linii (L), oraz format
znaku (F)
120μs
Set CG RAM address
0
0
0
1
A
CG
Ustawia adres w CG RAM. Wszystkie
operacje zapisu danej odnoszą się do tej
pamięci po wywołaniu tej instrukcji
120μs
29
Set DD RAM address
0
0
1
A
DD
Ustawia adres w DD RAM. Wszystkie
operacje zapisu danej odnoszą się do tej
pamięci po wywołaniu tej instrukcji
120μs
Read busy flag
0
1
BF
AC
Odczytuje stan flagi zajętości ,,Busy Flag”
oraz bieżący adres w pamięci
DD RAM wyświetlacza
1μs
Write data to
CG or DD RAM
1
0
Dana do zapisu
Zapisuje daną (znak) do pamięci
DD RAM
120μs
Read data from
CG or DD RAM
1
1
Odczytana dana
Odczytuje daną (znak) z pamięci DD lub CG
RAM wyświetlacza
120μs
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
A
CG
: Adres w pamięci CG RAM
A
DD
: Adres w pamięci DD RAM
AC: licznik (wskaźnik) adres w pamięci DD
lub CG RAM
C
za
s
w
yko
n
an
ia
za
le
ży
o
d
r
o
d
za
ju
m
o
d
u
łu
L
C
D
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)
pamięć DD RAM jest spacjami, natomiast pamięć CG RAM jest wypełniona przypadkowymi
znakami
37. 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.
38. 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
30
rozszerzeń, ustalenie wektorów przerwań BIOS oraz załadowanie sektora MBR pierwszej stacji
dysków i jego wykonanie.
39. 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
40. 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
41. 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.
42. 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.
43. Systemy wieloprocesorowe (podział)
Podział ze względu na symetrie:
31
wszystkie procesory traktowane sa na równi - system bardziej wydajny - SMP (ang. Symmetric
Multi Processing)
niektóre procesory maja przypisane ścisłe zadania - łatwiejszy projekt, na przykład jeden
procesor odpowiada na przerwania, drugi odpowiada za komunikacje wejścia wyjścia - ASMP
(ang.Asymetric Mutli Processing)
Podział ze względu na potok danych i programu
SISD (ang. Single Instruction, Single Data) - jeden strumień instrukcji, jeden strumień danych
MIMD (ang. Multiple Instruction, Multiple Data) - wiele strumieni instrukcji, wiele strumieni
danych
SIMD (ang. Single Instruction, Multiple Data) - jeden strumień instrukcji, wiele strumieni
danych
MISD (ang. Multiple Instruction, Single Data) - wiele strumieni instrukcji, jednej strumień
danych
44. 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.
45. 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.
46. 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:
Tylko 35 pojedynczych rozkazów
Wszystkie rozkazy są wykonywane w jednym cyklu, wyłączając rozkazy skoków, które
realizowane są w dwóch cyklach maszynowych
Maksymalna częstotliwość zegara to 20 MHz dla procesorów z pamięcią typu EPROM oraz
10 MHz dla procesorów z pamięcią programu typu EEPROM i FLASH
14-bitowa długość słowa rozkazu (dwunastobitowa w PIC 12C508)
Ośmiobitowa długość słowa pamięci danych RAM oraz rejestrów sterujących
15 rejestrów specjalnych służących do konfigurowania układu
Ośmiopoziomowy stos (dwupoziomowy dla PIC 12C508)
32
Natychmiastowy (bezpośredni) i pośredni typ adresowania
Ośmiobitowy licznik z ośmiobitowym podzielnikiem wstępnym
Wykonanie w technologii CMOS
Szeroki zakres napięć zasilających oraz niewielki pobór prądu (<2mA dla 5V oraz Stand-by
26uA)
W procesorze PIC 16F84 znajdują się dwa bloki pamięci:
Blok pamięci programu
Blok pamięci danych
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
47. 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)
33
Kopiowanie bitów B6, B5, B4 na bity A4, A3, A2
A = (A & 0xE3) | (B>>2 & 0x1C)
48. Dostęp do peryferiów (ADC, DAC, liczniki, pamięć EEPROM itp.) z punktu
widzenie mikroprocesora
49. 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:
8 bitowa
o
Ilość kontaktów 62
o
Napięcia zasilające +5V,-5V,-12V, +12V
o
Częstotliwość pracy 4.77MHz (1MB/s)
16 bitowa
o
Kompatybilna z magistralą ISA 8 bitową
o
Szerokość szyny 16 bitów
o
Ilość kontaktów 98
o
Napięcia zasilające +5V,-5V,-12V, +12V
o
Częstotliwość pracy 8.33MHz (2MB/s)
Magistrala PCI (ang. Peripheral Component Interconnect)
PCI 2.0 – rok 1993, 32 bity, 33MHz, 133MB/s, 5V (12V, -12V, -5V)
PCI 2.1 – rok 1994, 64 bity, 33MHz, 533MB/s, 5V (12V, -12V, -5V)
PCI 2.2 – rok 1999, 64 bity, 33MHz, 533MB/s, 5V/3.3V (12V, -12V, -5V)
PCI 2.3 – rok 1999, 64 bity, 33MHz, 533MB/s, 3.3V (12V, -12V, -5V)
50. 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
34
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).