04 Opracowanie pytan

background image

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

background image

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

background image

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.

background image

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:

background image

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

background image

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

background image

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

background image

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.

background image

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.

background image

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:

background image

11

Mapa pamięci danych:

Porty wejścia i wyjścia:

Budowa

background image

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

background image

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.

background image

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.

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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.

background image

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

background image

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.

background image

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

background image

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

background image

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

background image

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.

background image

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

background image

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

background image

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:

background image

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)

background image

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)

background image

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

background image

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).


Wyszukiwarka

Podobne podstrony:
Nasze opracowanie pytań 1 40
Opracowanie pytań z anatomii
opracowanie pytań z optyki
Maszyny Elektryczne Opracowanie Pytań Na Egzamin
opracowanie pytan id 338374 Nieznany
opracowanie pytan karafiata
Opracowanie pytań 2 kolokwium
cw 3 broma opracowanie pytan 810
Nhip opracowanie pytan id 31802 Nieznany
filozofia opracowanie pytań
opracowanie pytan Automatyka
pytania egz ekonimak II, OPRACOWANIE PYTAŃ NA EGZAMIN
Zestaw 88 Kasia Goszczyńska, materiały farmacja, Materiały 3 rok, Od Ani, biochemia, biochemia, opra
opracowane zestawy, OPRACOWANIE PYTAŃ NA EGZAMIN
Opracowanie pytań MAMET METALE
egzamin z sorbentów opracowanie pytań 1 2 JM

więcej podobnych podstron