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 

 

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 

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 

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 

Nazwa 

Dostęp 

R/W  R/W  R/W  R/W  R/W  R/W  R/W  R/W 

Wartość początkowa 

 

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

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 

d, r = [0,31] 

SUB 

Rd, Rr 

Rd = Rd - Rr 

ZCNVSH 

d, r = [0,31] 

SUBI 

Rd, K 

Rd = Rd – K 

ZCNVSH 

K = [0,255], d = [16,31] 

SBC 

Rd, Rr 

Rd = Rd-Rr-C 

ZCNVSH 

d, r = [0,31] 

AND 

Rd, Rr 

Rd = Rd & Rr 

ZNVS 

d, r = [0,31] 

ANDI 

Rd, K 

Rd = Rd & K 

ZNVS 

K = [0,255], d = [16,31] 

OR 

Rd, Rr 

Rd = Rd | Rr 

ZNVS 

d, r = [0,31] 

EOR 

Rd, Rr 

Rd = Rd ^ Rr 

ZNVS 

d, r = [0,31] 

COM 

Rd 

Rd = 0xFF-Rd 

ZNCVS 

d = [0,31] 

INC 

Rd 

Rd = Rd +1 

ZNVS 

d = [0,31] 

TST 

Rd 

Rd = Rd & Rd 

ZNVS 

d = [0,31] 

CLR 

Rd 

Rd = Rd^Rd 

ZNVS 

d = [0,31] 

 

 

Mnemonik 

Opis 

Cykle zegara 

Operacja 

Rozgałęziające 

JMP k 

Skok bezpośredni 

PC = k 

RJMP k 

Skok względny 

PC = PC + k +1 

CALL k 

Skok bezpośredni 

PC = k 

RET 

Powrót z procedury 

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 

I/O(P,b) = 1 

CBI P, b 

Wyczyść bit w rejestrze I/O 

I/O(P,b) = 0 

LSL Rd 

Logiczne przesunięcie w lewo 

Rd(n+1)=Rd(n), Rd(0)=0  

LSR Rd 

Logiczne przesunięcie w prawo 

Rd(n)=Rd(n+1), Rd(7)=0 

ROL Rd 

Rotacja w lewo przez Carry 

Rd(0)=C, Rd(n+1)=Rd(n), 

C=Rd(7) 

SEI 

Włącz przerwania 

I=1 

ROR Rd 

Rotacja w prawo przez Carry 

Rd(7)=C, Rd(n)=Rd(n+1), 

C=Rd(0) 

Transfer danych 

MOV Rd, Rr 

Prześlij z rejestru do rejestru 

Rd = Rr 

LDI Rd, K 

Ładuj stałą do rejestru d=[16,31] 

Rd = K 

LD Rd, X 

Ładuj pośrednio 

Rd = (X) 

ST X, Rr 

Zachowaj pośrednio 

(X) = Rr 

IN Rd, P 

Czytaj port 

Rd = P 

OUT P, Rr 

Wyślij na port 

P = Rr 

PUSH Rr 

Wyślij na stos 

STACK = Rr 

POP Rd 

Pobierz ze stosu 

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 

 

ESFSGS - 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

 

 

= 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

= 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

+/-

 

x

= (M

1

 +/- M

2

 * P

C2-C1

) * P

C1 

 

Mnożenie 

x

 

x

= (M

1

 * M

2

) * P

C2 + C1

 

 

Dzielenie 

x

 

x

= (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 Outostatni 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

Z

as

il

an

ie

 

LCD 

DRIVER 

LCD 

DRIVER 

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 

Czyści wyświetlacz i ustawia kursor na 
początku (adres=0) 

120μs… 

4,9ms 

Return home 

 

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 

I/D 

Ustawia kierunek przesuwu kursora i 
włącza/wyłącza funkcję przesuwu napisu 
przy zapisie do DD RAM 

120μs

 

Display ON/OFF 

Włącza/wyłącza wyświetlacz (D), kursor (C) i 
funkcję migania kursora (B) 

120μs

 

Cursor & display shift 

S/C 

R/L 

 

 

Przesuwa kursor i napis bez zmiany 
zawartości DD RAM 

120μs

 

Function set 

DL 

 

 

Ustala ilość bitów danych interfejsu (DL) 
liczbę wyświetlanych linii (L), oraz format 
znaku (F) 

120μs

 

Set CG RAM address 

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 

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 

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 

Dana do zapisu 

Zapisuje daną (znak) do pamięci  
DD RAM 

120μs

 

Read data from 

CG or DD RAM 

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

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 

DC 

 

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