Mikroprocesory
i technika mikroprocesorowa
Dariusz Chaberski
Ustalenia
§ Fizyka Techniczna - 30 godzin (5+25)
§ Automatyka i Robotyka - 45 godzin (5+25+15)
5 godzin
30 godzin
45 godzin
kwiecień/maj
§ dostępność prezentowanych materiałów
www.fizyka.umk.pl/~daras/mtm
§ konsultacje
pokój 396a
środa 12.30-13.30
piątek 14.30-15.30
2
Program wykładu
§ Idea działania mikroprocesora
+ kody liczbowe
+ działania arytmetyczne i logiczne na liczbach binarnych
+ jednostka arytmetyczno logiczna
+ rozkazy
§ System mikroprocesorowy
+ magistrale oraz interfejsy
+ układy wejścia wyjścia
+ pamięć
§ Architektury mikroprocesorów
+ według typu mapy pamięci
+ według typu listy instrukcji
+ adresowanie
3
Program wykładu
§ Mikroprocesor, mikrokontroler - różnice
§ Mikroprocesory - rys historyczny
(w odniesieniu do przedstawionych wcześniej w wykładzie informacji)
§ Peryferia mikroprocesorów i mikrokontrolerów
+ układy wejścia wyjścia
+ bezpośredni dostęp do pamięci
+ przerwania
+ pamięć
+ liczniki i układy czasowe
+ PWM
+ przetworniki A/C i C/A
+ interfejsy szeregowe (U(S)ART, SPI, JTAG, ...)
+ magistrale (1-Wire, I2C, USB, CAN, ...)
+ magistrale systemowe (ISA, EISA, VESA, PCI, PCI-X, AGP, PCI Express, ...)
4
Program wykładu
§ Przykłady mikroprocesorów, mikrokontrolerów i procesorów sygnałowych
+ mikrokontrolery (AVR, PIC, 8051, M68)
+ mikroprocesory (rodzina x86, Micro-Blaze, PowerPC, Z80, rodzina M68)
+ procesory sygnałowe (ADSP 21XX)
§ Przykładowe rozwiązania systemów mikroprocesorowych
+ budowa komputera klasy PC
+ sterowniki i systemy pomiarowe
+ procesory sygnałowe
+ multimedia
§ Programowanie wybranych mikroprocesorów i mikrokontrolerów
+ języki niskiego poziomu (rozkazy przesłań, arytmetyczne, logiczne, bitowe, sterujące i inne)
+ język wysokiego poziomu (język C)
+ narzędzia programistyczne
(AVR Studio, Keil µVision, GNU AVR-gcc, Microchip MPLAB IDE, MS Visual Studio, GNU-
gcc, Analog Devices VISUAL DSP++)
+ emulatory sprzętowe
5
Literatura
§ Mikrokontrolery AVR ATtiny w praktyce. Rafał Baranowski.
BTC. Warszawa 2006.
§ Mikrokontrolery AVR w praktyce. Jarosław Doliński.
BTC. Warszawa 2003.
§ Mikrokontrolery - architektura, programowanie, zastosowania. Ryszard Pełka.
WKŁ. Warszawa 1999.
§ Mikroprocesor w pytaniach i odpowiedziach. Krzysztof Sacha, Andrzej Rydzewski.
WNT. Warszawa 1987.
§ Podstawy programowania mikrokontrolera 8051. Piotr Gałka, Paweł Gałka.
Nikom. Warszawa 1995.
§ Projektowanie systemów mikroprocesorowych. Paweł Hadam.
BTC. Warszawa 2004.
§ Podstawy budowy i działania komputerów. Andrzej Skorupski.
WKŁ. Warszawa 2000.
§ Mikroprocesory mikrokomputery mikrosystemy. Antoni Niederliński.
WSiP. Warszawa 1988.
6
Literatura
§ Podstawy Techniki Cyfrowej. Józef Kalisz.
WKŁ. Warszawa 2002. Wydanie czwarte zmienione.
§ W sercu BIOS-u. Michel Martin.
Helion. Gliwice 1992.
§ Mikrokomputery klasy IBM PC. Henryk Małysiak, Bolesław Pochopień, Eugeniusz Wróbel.
WNT. Warszawa 1992.
§ Programowanie mikrokontrolerów PIC w języku C. Tomasz Jabłoński, Krzysztof Pławsiuk.
BTC. Warszawa 2005.
§ Programowanie mikrokontrolerów 8051 w języku C - pierwsze kroki. Jacek Majewski.
BTC. Warszawa 2005.
§ Anatomia PC. Piotr Metzger, Adam Jełowicki.
Helion. Wydanie czwarte lub nowsze. 1998.
§ język ANSI C. Brian W. Kernighan, Dennis M. Ritchie.
WNT. Warszawa 1998.
7
Kody liczbowe
i działania na liczbach binarnych
Dariusz Chaberski
Kody liczbowe
§ dwójkowy kod naturalny
+ reprezentacja
a
n
−
3
a
1
a
0
a
−
1
a
−
2
a
−
3
a
−
m
a
1
−
m
n
m
a
n
−
1
a
n
−
2
A:
L(A) =
n−1
X
i=−m
2
i
L (a
i
)
+ przykład
A = 10011010
L(A) = 0 × 2
0
+ 1 × 2
1
+ 0 × 2
2
+ 1 × 2
3
+ 1 × 2
4
+ 0 × 2
5
+ 0 × 2
6
+ 1 × 2
7
= 154
+ przykład
A = 1001.1010
L(A) = 0 × 2
−4
+ 1 × 2
−3
+ 0 × 2
−2
+ 1 × 2
−1
+ 1 × 2
0
+ 0 × 2
1
+ 0 × 2
2
+ 1 × 2
3
= 9.625
2
Kody liczbowe
§ dwójkowy kod naturalny
+ reprezentacja
a
n
−
3
a
1
a
0
a
−
1
a
−
2
a
−
3
a
−
m
a
1
−
m
n
m
a
n
−
1
a
n
−
2
A:
+ wartość największa
L
max
(A) = 2
n
− 1 + 1 − 2
−m
= 2
n
− 2
−m
= 2
n
(1 − 2
−m−n
)
+ wartość najmniejsza większa od zera
L
min>0
(A) = 2
−m
3
Kody liczbowe
§ zapis liczb dwójkowych ze znakiem
+ kodowanie znak-moduł (ZM)
3 reprezentacja
a
0
a
−
1
a
−
2
a
−
3
a
−
m
a
1
−
m
n − 1
m
A: a
n
−
1
a
n
−
2
a
n
−
3
a
n
−
4
a
1
L(A) = (−1)
L(a
n−1
)
n−2
X
i=−m
2
i
L (a
i
)
3 wartość największa
L
max
(A) = 2
n−1
− 1 + 1 − 2
−m
= 2
n−1
− 2
−m
3 wartość najmniejsza
L
min
(A) = −(2
n−1
− 2
−m
)
4
Kody liczbowe
§ zapis liczb dwójkowych ze znakiem
+ kodowanie znak-uzupełnienie do 1 (ZU1)
3 reprezentacja
a
0
a
−
1
a
−
2
a
−
3
a
−
m
a
1
−
m
n − 1
m
A: a
n
−
1
a
n
−
2
a
n
−
3
a
n
−
4
a
1
−L(A) = L(A)
3 wartość największa
L
max
(A) = 2
n−1
− 2
−m
3 wartość najmniejsza
L
min
(A) = −(2
n−1
− 2
−m
)
5
Kody liczbowe
§ zapis liczb dwójkowych ze znakiem
+ kodowanie znak-uzupełnienie do 2 (ZU2)
3 reprezentacja
a
0
a
−
1
a
−
2
a
−
3
a
−
m
a
1
−
m
n − 1
m
A: a
n
−
1
a
n
−
2
a
n
−
3
a
n
−
4
a
1
−L(A) = L(A + L
−1
(2
−m
))
3 wartość największa
L
max
(A) = 2
n−1
− 2
−m
3 wartość najmniejsza
L
min
(A) = −(2
n−1
− 1 + 1 − 2
−m
+ 2
−m
) = −2
n−1
6
Kody liczbowe
§ liczby dwójkowe zmiennoprzecinkowe
+ reprezentacja
a
0
a
−
1
a
−
2
a
−
3
a
−
m
a
1
−
m
n
m
a
1
a
n
−
1
a
n
−
2
a
n
−
3
cecha - wykładnik
mantysa
A: a
n
znak
C = A[n − 1, 0]
M = A[−1, −m]
S = A[n]
B = 2
n−1
− 1
L(A) = (−1)
L(S)
L(M) × 2
L(C)−B
2
n
− 1 L(C) > 0
1 ¬ L(M) < 2, normalizacja
L(S) = 0, 1
7
Kody liczbowe
§ liczby dwójkowe zmiennoprzecinkowe
+ wartość największa
L
max
(A) = L
max
(M) × 2
L
max
(C)−B
+ wartość najmniejsza
L
min
(A) = −L
max
(M) × 2
L
max
(C)−B
+ wartość największa mniejsza od zera
L
max<0
(A) = −L
min>0
(M) × 2
L
min
(C)−B
+ wartość najmniejsza większa od zera
L
min>0
(A) = L
min>0
(M) × 2
L
min
(C)−B
8
Kody liczbowe
§ liczby dwójkowe zmiennoprzecinkowe
+ przykład (float)
0
0
1
1
0
1
0
0
0
1
1
1
0
1
1
0
1
1
1
1
0
1
1
1
1
0
1
0
1
1
A:
0
1
L(C) − B = 104 − 127 = −23
L(M) = L(1.11101101111010111101011) =
1 +
L(11101101111010111101011)
2
23
' 1.9294
L(A) = (−1)
0
1.9294 × 2
−23
' 2.3 × 10
−7
9
Kody liczbowe
§ liczby dwójkowe zmiennoprzecinkowe
+ wartości specjalne
typ
znak
cecha
mantysa
NaN
0, 1
111 . . . 111
x
n−1
x
n−2
x
n−3
. . . x
2
x
1
x
0
, L(X) 6= 0
QNaN
0, 1
111 . . . 111
1x
n−2
x
n−3
. . . x
2
x
1
x
0
SNaN
0, 1
111 . . . 111
0x
n−2
x
n−3
. . . x
2
x
1
x
0
, L(X) 6= 0
± Zero
0/1
000 . . . 000
000 . . . 000
± Nieskończoność
0/1
111 . . . 111
000 . . . 000
+ NaN - Not-a-Number - wartość, która nie reprezentuje liczby
+ SNaN - Significant-NaN - w momencie ustalania wartości generowane jest przerwanie sprzętowe
wewnętrzne (wyjątek)
+ QNaN - Quiet-NaN
10
Kody liczbowe
§ kod BCD (ang. Binary Coded Decimal)
+ NBCD (ang. Natural BCD) wagowy (wagi dla poszczególnych bitów 8, 4, 2, 1)
A: a
n
−
1
,
3
a
n
−
1
,
2
a
n
−
1
,
1
a
n
−
1
,
0
A
1
A
0
a
0
,
3
a
0
,
2
a
0
,
1
a
0
,
0
a
1
,
0
a
1
,
1
a
1
,
2
a
1
,
3
A
n
−
1
L(A) =
n−1
X
i=0
10
i
L(A
i
)
L(A
i
) =
3
X
k=0
2
k
L (a
i,k
)
0 ¬ L(A
i
) ¬ 9
11
Działania na liczbach binarnych
§ Działania arytmetyczne i logiczne
+ znaczniki
3 C - Carry - przeniesienie lub pożyczka
3 Z - Zero - wartość zerowa
3 N - Negative - wartość ujemna
3 V - U2 oVerflow - przepełnienie
3 S - Sign - znak, S=V⊕N
3 H - Half carry - przeniesienie połówkowe (BCD)
12
Działania na liczbach binarnych
§ Działania arytmetyczne
+ suma
1
1
0
1
1
1
1
1
0
0
1
0
1
0
1
0
0
0
0
0
1
0
0
1
1
0
A:
A+B:
B:
1
C:
Z:
0
N:
V:
0
0
0
0
0
0
0
S:
0
H:
13
Działania na liczbach binarnych
§ Działania arytmetyczne
+ różnica (sposób tradycyjny)
1
1
0
1
1
1
1
0
1
1
1
0
1
0
0
0
1
1
1
0
1
1
1
1
A-B:
A:
B:
1
C:
Z:
0
N:
V:
S:
H:
1
0
1
1
14
Działania na liczbach binarnych
§ Działania arytmetyczne
+ różnica (z wykorzystaniem własności −B = B + L
−1
(2
−m
), gdzie m = 4)
A = 11010111
B = 11101000
1
1
0
1
1
1
1
0
0
0
0
1
0
1
1
1
1
1
1
1
0
1
1
1
1
A-B:
A:
B:
C:
0
0
Z:
1
0
1
0
H:
N:
V:
S:
15
Działania na liczbach binarnych
§ Działania arytmetyczne
+ suma dwóch liczb 2n-bitowych z wykorzystaniem n-bitowego arytmometru
A = A
H
◦ A
L
B = B
H
◦ B
L
◦ C
IN
C ◦ (A + B)
L
= A
L
+ B
L
+ C
IN
C
OU T
◦ (A + B)
H
= C + A
H
+ B
H
C
OU T
◦ (A + B) = ((C + A
H
+ B
H
) << n) + (A + B)
L
16
Działania na liczbach binarnych
§ Działania arytmetyczne
+ iloczyn
A:
1
1
0
1
1
1
1
0
1
1
0
1
1
1
1
1
1
0
0
B:
1
0
1
1
1
1
0
1
1
0
1
0
1
1
0
1
1
1
0
0
0
A
×
B:
1
1
0
0
1
1
0
1
1
1
1
1
0
1
1
0
C:
Z:
0
17
Działania na liczbach binarnych
§ Działania arytmetyczne
+ iloczyn dwóch liczb 2n-bitowych z wykorzystaniem n-bitowego arytmometru
A = A
H
◦ A
L
B = B
H
◦ B
L
AB = ((A
H
B
H
) << 2n) + ((A
L
B
H
+ A
H
B
L
) << n) + A
L
B
L
18
Działania na liczbach binarnych
§ Działania arytmetyczne
+ iloraz
A:
1
1
0
1
1
1
1
0
B:
1
1
0
0
0
0
0
1
1
1
0
0
1
1
0
0
0
0
1
1
0
1
1
1
0
0
1
1
1
1
1
1
0
0
0
0
1
1
A % B:
C:
0
Z:
0
19
Działania na liczbach binarnych
§ Działania arytmetyczne
+ iloczyn liczb zmiennoprzecinkowych
A = A
S
◦ A
C
◦ A
M
,
B = B
S
◦ B
C
◦ B
M
,
AB = (A
S
◦ A
C
◦ A
M
) (B
S
◦ B
C
◦ B
M
) = (−1)
L(A
S
)+L(B
S
)
(A
C
+ B
C
) ◦ (A
M
B
M
) .
+ iloraz liczb zmiennoprzecinkowych
A = A
S
◦ A
C
◦ A
M
,
B = B
S
◦ B
C
◦ B
M
,
A/B = (A
S
◦ A
C
◦ A
M
) / (B
S
◦ B
C
◦ B
M
) = (−1)
L(A
S
)+L(B
S
)
(A
C
− B
C
) ◦ (A
M
/B
M
) .
20
Działania na liczbach binarnych
§ Działania arytmetyczne
+ suma liczb zmiennoprzecinkowych
A = A
S
◦ A
C
◦ A
M
,
B = B
S
◦ B
C
◦ B
M
,
A+B = (A
S
◦ A
C
◦ A
M
)+(B
S
◦ B
C
◦ B
M
) =
(−1)
L(A
S
)
A
M
+ (−1)
L(B
S
)
B
M
2
L(B
C
)−L(A
C
)
◦A
C
.
+ różnica liczb zmiennoprzecinkowych
A = A
S
◦ A
C
◦ A
M
,
B = B
S
◦ B
C
◦ B
M
,
A−B = (A
S
◦ A
C
◦ A
M
)−(B
S
◦ B
C
◦ B
M
) =
(−1)
L(A
S
)
A
M
− (−1)
L(B
S
)
B
M
2
L(B
C
)−L(A
C
)
◦A
C
.
21
Działania na liczbach binarnych
§ Operacje logiczne
+ AND - ∧, &; OR - ∨, |; XOR - ⊕, ˆ; NOT - A,˜
B:
1
1
0
1
1
1
1
0
0
0
0
1
1
1
0
0
A:
A
∧
B:
A
∨
B:
A:
0
0
0
1
0
1
0
1
1
1
0
1
0
1
1
1
A
⊕
B:
1
1
0
0
0
0
0
1
1
1
1
0
1
0
1
0
22
Działania na liczbach binarnych
§ działania arytmetyczne
+ suma liczb w kodzie BCD
A:
B:
(A + B)
BCD
:
(A + B)
NB
:
0
0
0
1
0
0
1
0
0
1
1
1
1
0
0
1
0
0
0
0
0
1
1
0
1
0
1
0
0
0
1
1
0
0
0
0
C:
0
0
0
0
0
0
1
1
0
1
1
0
1
23
Układ wykonawczy, instrukcje
i adresowanie
Dariusz Chaberski
System mikroprocesorowy
mikroprocesor
D
A
A
C
C
C
C
C
2
C
3
C
1
dekoder
adresów
pamięć
programu
pamięć
danych
układy wejścia
wyjścia
A
D
D
D
A
A
magistrala adresowa
magistrala danych
sygnały sterujące
BIOS
pamięć operacyjna
mysz
karta graficzna
klawiatura
stacja dyskietek
2
Jednostka centralna
układ
wykonawczy
układ
sterowania
sygnały
sterujące
sygnały
stanu
sz
y
n
a
sy
g
n
a
ło
w
st
er
o
w
a
n
ia
wewnętrzna
szyna adresowa
w
ew
n
ęt
rz
n
a
sz
y
n
a
d
a
n
y
ch
3
Układ wykonawczy
rejestr tymczasowy
akumulator
rejestr znaczników
rejestry ogólnego
przeznaczenia
licznik programu
wskaźnik stosu
rejestr rozkazów
4
Układ wykonawczy
§ architektura superskalarna
rejestry ogólnego przeznaczenia
FIFO
sekwenser
licznik
programu
5
Instrukcje
§ format
r
k−1
o
′
m−1
R
:
O
′
:
drugi operand
rodzaj operacji
pierwszy operand
o
0
O
:
W
:
wynik
w
0
o
′
0
w
n−1
r
0
o
l−1
R(W, F) = R(O, O
0
, F)
F - rejestr znaczników
+ przykłady
F ◦ [W] = [O] † O
0
F ◦ W = O † [#O
0
]
† - dowolny operator
6
Instrukcje
§ format
r
k−1
R
:
rodzaj operacji
pierwszy operand
o
0
O
:
o
′
m−1
O
′
:
drugi operand
o
′
0
r
0
o
l−1
R(A/O, F) = R(O, O
0
, F)
A - rejestr specjalny - akumulator
+ przykłady
F ◦ O = O
0
F ◦ [#O] = O † #O
0
F ◦ A = O † [#O
0
]
7
Instrukcje
§ format
r
k−1
R
:
rodzaj operacji
operand
o
0
r
0
O
: o
l−1
R(A/O, F) = R(A, O, F)
+ przykłady
F ◦ O = †O
F ◦ A = O
F ◦ A = [A † O]
8
Instrukcje
§ format
r
k−1
R
:
rodzaj operacji
r
0
R(A, F) = R(A, F)
+ przykłady
F ◦ A = †A
F ◦ [A] = 0
F ◦ A = [A]
9
Instrukcje
§ podział
+ pełniona funkcja
3 przesłań
3 arytmetyczne
3 logiczne
3 sterujące
3 warunkowe
3 specjalne
+ typ danych
3 stałoprzecinkowe
3 zmiennoprzecinkowe
3 bitowe
3 blokowe
3 DSP - Digital Sound Processing
3 SIMD - Single Instruction Multiple Data
+ poziom uprzywilejowania
10
Instrukcje
§ przesłania
+ międzyrejestrowe
przeznaczenie
źródło
rejestry
ogólnego
przeznaczenia
przeznaczenie
rejestry
ogólnego
przeznaczenia
akumulator
D = S
D = A
D, S -rejestr przeznaczenia, źródła
11
Instrukcje
§ przesłania
+ międzyrejestrowe
rejestry
ogólnego
przeznaczenia
S
1
S
2
D
1
D
2
rejestry
ogólnego
przeznaczenia
D
H
D
L
S
L
S
H
D
2
◦D
1
= S
2
◦S
1
D
L
= S
H
12
Instrukcje
§ przesłania
+ pamięć - rejestr, rejestr - pamięć
RS
RD
H
RD
L
AD
:
AS
:
AS
+1:
pamięć
rejestry ogólnego przeznaczenia
[AD] = RS
RD
H
◦ RD
L
= [AS] ◦ [AS + 1]
13
Kolejność bajtowa
§ Big Endian - najbardziej znaczący bajt umieszczany jest w pamięci jako pierwszy
pod najniższym adresem (na przykład procesory POWER)
+ przykład
0x6FC9D (Big Endian, 32 bitowe rejestry)
adres(przesunięcie)
0
1
2
3
zawartość
0x00
0x06
0xFC
0x9d
§ Little Endian - najmniej znaczący bajt umieszczany jest w pamięci jako pierwszy
(na przykład procesory Intel x86)
14
Instrukcje
§ przesłania blokowe
+ pamięć - pamięć
DI
:
pamięć
SI
:
licznik
przesłań
rejestr
indeksowy
przeznaczenia
rejestr
indeksowy
źródła
DIR
DI
:
SI
:
CNT
:
znacznik
kierunku
15
Instrukcje
§ przesłania
+ stos
n+3
n+2
wskaźnik
stosu
n+1
n
n+4
LIFO
chroniony
rejestr
n+3
n+2
wskaźnik
stosu
n+1
n
n+4
LIFO
chroniony
rejestr
16
Instrukcje
§ sterujące - wywołanie podprogramu
PC
- licznik programu
SP
- wskaźnik stosu
instrukcja
instrukcja
instrukcja
instrukcja
instrukcja
instrukcja
instrukcja
powrót
pamięć
programu
SUB
:
PC
+1:
SUB
wywołanie
PC
:
SP
=SP-1
PC
=[SP]
PC
=PC+1
SP
=SP+1
[SP]=PC
PC
=SUB
17
Instrukcje
§ sterujące - skok bezwarunkowy
PC
=ADDR
instrukcja
instrukcja
instrukcja
instrukcja
instrukcja
pamięć
programu
ADDR
:
PC
+1:
ADDR
skok
PC
:
18
Instrukcje
§ sterujące - skok bezwarunkowy względny
ADDR
L
instrukcja
instrukcja
instrukcja
instrukcja
pamięć
programu
PC
+1:
PC
:
PC
= PC + 1
skok
instrukcja
ADDR
H
L
= [PC + 1]
H
= [PC + 2]
PC
= PC + 1
PC
= PC + 1
PC
= PC + 3 + H ◦ L
PC
+ 3 + H ◦ L:
19
Instrukcje
§ warunkowe typu SKIP
instrukcja
instrukcja
warunkowa
instrukcja
pomijana
instrukcja
instrukcja
20
Instrukcje
§ warunkowe typu BRANCH (zastosowanie SKIP)
instrukcja
instrukcja
warunkowa
instrukcja
instrukcja
instrukcja
instrukcja
in
st
ru
k
cj
e
p
o
m
ij
a
n
e
21
Instrukcje
§ warunkowe typu BRANCH (zastosowanie do tworzenia opóźnień)
instrukcja
warunkowa
instrukcja
instrukcja
instrukcja
instrukcja
za
p
ęt
la
n
e
in
st
ru
k
cj
e
22
Instrukcje
§ warunkowe typu instrukcja+BRANCH
instrukcja
instrukcja
instrukcja
instrukcja
warunkowa
instrukcja
za
p
ęt
la
n
e
in
st
ru
k
cj
e
instrukcja
23
Instrukcje
§ warunkowe typu instrukcja+SKIP
instrukcja
instrukcja
instrukcja
instrukcja
warunkowa
instrukcja
instrukcja
pomijana
24
Instrukcje
§ specjalne
+ zatrzymanie procesora
+ oczekiwanie przerwania
+ operacja pusta
+ obniżenie poboru energii
25
Instrukcje
§ bitowe
+ przesunięcie logiczne w prawo
b
N−1
b
0
C
0
+ przesunięcie logiczne / arytmetyczne w lewo
C
b
N−1
b
0
0
+ przesunięcie arytmetyczne w prawo
b
N−1
b
0
C
26
Instrukcje
§ bitowe
+ przesunięcie cykliczne w prawo przez znacznik przeniesienia
b
N−1
b
0
C
+ przesunięcie cykliczne w lewo przez znacznik przeniesienia
C
b
N−1
b
0
27
Instrukcje
§ bitowe
+ przesunięcie cykliczne w prawo
b
N−1
b
0
C
+ przesunięcie cykliczne w lewo
C
b
N−1
b
0
28
Instrukcje
§ bitowe
+ ustawianie bitu k w słowie B
b
N−1
b
0
1
k
B
:
N-1
0
B = B ∨ (1 << k)
+ zerowanie bitu k w słowie B
b
N−1
b
0
0
k
B
:
N-1
0
B = B ∧ (1 << k)
29
Instrukcje
§ bitowe
+ negowanie bitu k w słowie B
b
N−1
b
0
k
B
:
N-1
0
b
k
B = B ⊕ (1 << k)
30
Instrukcje
§ poziom uprzywilejowania
0
1
2
3
0 - jądro systemu operacyjnego (zarządzanie pamięcią, przełączanie zadań)
1 - system operacyjny (dostęp do danych, obsługa wejść / wyjść)
2 - rozszerzenie systemu operacyjnego przez użytkownika
3 - programy użytkowe
31
Instrukcje
§ podział mikroprocesorów według typu listy instrukcji
+ RISC (ang. Reduced Instruction Set Computer)
3 zbiór instrukcji jest ortogonalny
3 mała liczba instrukcji
+ CISC (ang. Complex Instruction Set Computer)
3 rozbudowana liczba instrukcji
3 wysoka specjalizacja instrukcji
32
Tryby adresowania
§ implikowane
rejestry
ogólnego
przeznaczenia
pamięć
programu
akumulator
A = A † R
† - dowolny operator
A - rejestr specjalny - akumulator
R - wybrany rejestr ogólnego przeznaczenia
33
Tryby adresowania
§ natychmiastowe
pamięć
programu
akumulator
A = A † #D
34
Tryby adresowania
§ bezpośrednie
rejestry
ogólnego
przeznaczenia
pamięć
programu
akumulator
A = A † [D1 ◦ D2]
D1, D2 - dwa kolejne słowa po kodzie rozkazu
35
Tryby adresowania
§ indeksowe
akumulator
rejestry
indeksowe
pamięć
programu
rejestry ogólnego
przeznaczenia lub
pamięć
A = A † [I + D]
D - słowo po kodzie rozkazu
I - zawartość wybranego rejestru indeksowego
36
Tryby adresowania
§ postindeksowe
akumulator
pamięć
programu
rejestry ogólnego
przeznaczenia lub
pamięć
rejestry indeksowe
A = A † [I + [D1 ◦ D2]]
37
Tryby adresowania
§ pośrednie
akumulator
pamięć
programu
rejestry ogólnego
przeznaczenia lub
pamięć
A = A † [[D1 ◦ D2]]
38
Tryby adresowania
§ względne
akumulator
pamięć
programu
licznik programu
adres następnej
instrukcji
A = A † [PC + D]
PC - licznik programu
39
Układ sterowania, magistrale
i organizacja pamięci
Dariusz Chaberski
Jednostka centralna
układ
wykonawczy
układ
sterowania
sygnały
sterujące
sygnały
stanu
sz
y
n
a
sy
g
n
a
ło
w
st
er
o
w
a
n
ia
wewnętrzna
szyna adresowa
w
ew
n
ęt
rz
n
a
sz
y
n
a
d
a
n
y
ch
2
Układ sterowania
rejestr
rozkazów
generator
sygnałów
sterujących
licznik
programu
magistrala
danych
rejestry
indeksowe
magistrala
sterująca
wskaźnik
stosu
układ obsługi
sytuacji
wyjątkowych
magistrala
adresowa
rejestry
ogólnego
przeznaczenia
lub pamięć
dekoder
rozkazów
rejestr adresowy
3
Układ sterowania
§ przykład sterowania - ochrona licznika programu PC
magistrala
danych
PC
magistrala
adresowa
SP
+1
PC
R
SP
RA
R
W
SP - wskaźnik stosu
PC
R
- odczyt licznika programu
SP
RA
- wystawienie wskaźnika stosu na magistralę adresową
R
W
- zapis magistrali danych do komórki pamięci, który znajduje się na magistrali adresowej
4
Układ sterowania
§ przykład sterowania - przesłanie pomiędzy rejestrami ogólnego przeznaczenia
magistrala
adresowa
R1
magistrala
danych
R
WS
R
WD
R2
R
WD/S
- zapis adresu rejestru przeznaczenia / źródła
R1/2 - nazwa (numer) rejestru źródła / przeznaczenia
5
Cykl wykonywania instrukcji
dekodowanie
instrukcji
pobranie
kodu
instrukcji
odczyt
argumentów
wykonanie
instrukcji
zapisanie
wyniku
dekodowanie
instrukcji
pobranie
kodu
instrukcji
wykonanie
instrukcji
zapisanie
wyniku
dekodowanie
instrukcji
pobranie
kodu
instrukcji
odczyt
argumentów
wykonanie
instrukcji
pobranie
kodu
instrukcji
dekodowanie
instrukcji
wykonanie
instrukcji
6
Cykl wykonywania instrukcji
§ przetwarzanie sekwencyjne
E
W
F
D
R
F
D
E
W
F
D
R
E
D
E
F
F
§ przetwarzanie potokowe
E
W
F
E
F
D
D
E
W
F
D
R
E
R
D
F
F
F - pobranie kodu instrukcji
D - dekodowanie instrukcji
R - odczyt argumentów
E - wykonanie instrukcji
W - zapisanie wyniku
- oczekiwanie
7
Cykl wykonywania instrukcji
§ procesor standardowy
UW3
UW2
UW1
procesor
fizyczny
procesor
logiczny
UW1/2/3 - układy wykonawcze
§ procesor wielowątkowy -technologia HT (ang. Hyper-Threading)
UW3
UW2
UW1
procesor
fizyczny
procesor
logiczny
8
Cykl wykonywania instrukcji
§ procesor dwurdzeniowy
procesor
fizyczny
procesor
logiczny
UW6
UW5
UW4
UW3
UW2
UW1
9
Cykl wykonywania instrukcji
§ procesor dwurdzeniowy z technologią HT
procesor
fizyczny
procesor
logiczny
UW6
UW5
UW4
UW3
UW2
UW1
10
Magistrale
§ standard INTELA
CS
OE
WR
D
A
odczyt
zapis
11
Magistrale
§ standard MOTOROLI
E
R
/W
D
A
odczyt
zapis
12
Układy wejścia wyjścia
D
D
Q
C
L
E
D
R
R
P
Q
C
IN
OUT
D
0
D
0
D
VCC
dekoder adresów
C
A
OE
OE
IN
OUT
13
Pamięć
dekoder adresów
C
A
D
A
n
−
1
A
0
D
m
−
1
D
0
A
k
−
1
A
0
D
m
−
1
D
0
OE WR CS
CS
OE WR
14
Dekoder adresów
A
z
−
1
A
n
A
n+1
OE1
WR1
CS1
OE2
WR2
CS2
CS
WR
OE
A
C
15
Mapa pamięci
rejestry ogólnego
przeznaczenia
układy wejścia wyjścia
rejestry indeksowe
pamięć programu
wektory przerwań
stos
pamięć danych
za
so
b
y
ze
w
n
ęt
rz
n
e
za
so
b
y
w
ew
n
ęt
rz
n
e
16
Architektury mikroprocesorów
§ według typu mapy pamięci
+ architektura Von-Neumana
pamięć
danych
b
m
−
1
b
0
0x00000
pamięć
programu
0x4ffff
0x50000
0x7ffff
17
Architektury mikroprocesorów
§ według typu mapy pamięci
+ architektura harwardzka
pamięć
programu
b
n
−
1
b
0
0x0000
0xffff
0x4ffff
pamięć
danych
b
m
−
1
b
0
0x00000
18
Segmentacja pamięci
segment programu
segment dodatkowy
rejestr segmentu danych
rejestr segmentu stosu
rejestr segmentu programu
segment danych
segment stosu
rejestr segmentu
dodatkowego
przesunięcie
adres fizyczny
adres efektywny
pamięć
19
Pamięć kieszeniowa - CACHE
pamięć
CACHE
pierwszego
poziomu
pamięć
CACHE
drugiego
poziomu
pamięć RAM
16 kB
256 kB
4 GB (128 MB)
5 ns
20 ns
60 ns
rejestry
robocze
jednostki
wykonawczej
32 B
1 ns
jednostka
wykonawcza
10 ms
320 GB (160 GB)
pamięć stała
(dysk twardy,
CDROM)
pamięć
CACHE
pamięci
stałej
20
Pamięć kieszeniowa - CACHE
§ procesor dwurdzeniowy
rdzeń
pierwszy
rdzeń drugi
pamięć
CACHE
pierwszego
poziomu
pamięć
CACHE
pierwszego
poziomu
pamięć CACHE
drugiego poziomu
21
Przerwania
kod przerwanego programu
pełny kod podprogramu obsługi przerwania
podprogramy obsługi przerwań
przerwanie
skok
skok
skok
instrukcja
instrukcja
instrukcja
instrukcja
instrukcja
instrukcja
instrukcja
powrót
22
Układ zarządzania pamięcią
§ MMU (ang. Memory Management Unit)
dane
adres
wirtualny
adres
fizyczny
sygnały
sterujące
sygnały
sterujące
mikroprocesor
pamięć
fizyczna
jednostka
centralna
układ
zarządzania
pamięcią
23
Układ zarządzania pamięcią
§ wyznaczanie adresu fizycznego
deskryptor
segmentu
pamięć fizyczna
se
g
m
en
t
d
es
k
ry
p
to
ró
w
se
g
m
en
t
d
a
n
y
ch
rejestr
segmentowy
selektor
dana
adres
efektywny
a
d
re
s
fi
zy
cz
n
y
adres bazowy
deskryptor segmentu
a
d
re
s
w
ir
tu
a
ln
y
rozszerzenie
rejestru
segmentowego
24
Tryb Chroniony
segment
stanu
zadania 1
selektor zadania
segment
stanu
zadania 2
segment
deskryptorów
zadań
stan rejestrów
procesora
stan rejestrów
procesora
stan rejestrów
procesora
stan rejestrów
procesora
deskryptor
zadania 1
deskryptor
zadania 2
segment
deskryptorów
zadanie 1
zadanie 2
rozkaz
rozkaz
wywołanie
rozkaz
rozkaz
rozkaz
rozkaz
powrót
rozkaz
25
System mikroprocesorowy
i peryferia
Dariusz Chaberski
System mikroprocesorowy
mikroprocesor
pamięć
układy wejścia
wyjścia
kontroler DMA
kontroler
przerwań
2
System wieloprocesorowy
§ podział ze względu na symetrię
+ wszystkie procesory traktowane są na równi - system bardziej wydajny - SMP (ang. Symmetric
Multi Processing)
+ niektóre procesory mają przypisane ścisłe zadania - łatwiejszy projekt, na przykład jeden pro-
cesor odpowiada na przerwania, drugi odpowiada za komunikację 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ń instrukcj, wiele strumieni da-
nych
+ MISD (ang. Multiple Instruction, Single Data) - wiele strumieni instrukcji, jednej strumień
danych
3
System wieloprocesorowy
Procesor 1
Pamięć 1
Procesor 2
Pamięć N
Pamięć 2
Porty wejścia
wyjścia 1
I/O
IR
Q
1
IR
Q
N
Kontroler
DMA 1
D
R
E
Q
D
A
C
K
m
a
g
is
tr
a
la
lo
k
a
ln
a
1
m
a
g
is
tr
a
la
lo
k
a
ln
a
2
m
a
g
is
tr
a
la
lo
k
a
ln
a
N
magistrala globalna
M
M
Procesor N
Kontroler
przerwań 1
IR
Q
0
4
Pamięć
§ rodzaje (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 promienia-
mi UV),
+ EEPROM - Electrically EPROM (pamięć tylko do odczytu kasowalna elektrycznie),
+ Flash - pamięć EEPROM typu błyskowego (Pełka 1999),
+ NVRAM - Non Volatile RAM - pamięć nieulotna o dostępie swobodnym.
5
Pamięć
§ rodzaje (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.
6
Pamięć RAM
§ schemat blokowy
macierz
pamięci
dekoder
wierszy
A0
A7
A16
DQ7
DQ0
W
G
dekoder
kolumn
układ wejścia
wyjścia
Ex
E2
E1
A6
7
Przetworniki analogowo cyfrowe
ANIN
0
ANIN
1
przetwornik
A/C (SAR)
CLK
ANIN
7
bajt konfiguracyjny
D
0
. . . D
11
preskaler
b
0
b
1
b
7
A
D
R
H
A
D
R
L
jednostka
centralna
INT
mikrokontroler
8
Przetworniki cyfrowo analogowe
b
0
b
1
b
7
A
D
R
H
A
D
R
L
jednostka
centralna
przetwornik
C/A
przetwornik
C/A
D
0
. . . D
11
D
0
. . . D
11
ANOUT
1
ANOUT
2
VREF
+
VREF
−
CLK
mikrokontroler
9
Liczniki i czasomierze
bajt konfiguracyjny
CNT0
CNT1
CNT2
f /1024
licznik binarny
f
komparator
jednostka
centralna
mikrokontroler
b
n−1
B
A
A = B
CLK
(
T )
p
re
sk
a
le
r
rejestr
b
1
b
0
INT
f /16
f /2
PWM
PWM
D
10
Modulacja szerokością impulsu
CLK1
CLK2
PWM
D
PWM
A
t
11
Interfejs komunikacji szeregowej
§ wyjście
słowo
konfiguracyjne
rejestr przesuwny
szyna danych
słowo stanu
rejestr wejściowy
programowalny
generator
sygnał
zegarowy
wyjście
szeregowe
danych
12
Interfejs komunikacji szeregowej
§ wejście
słowo
konfiguracyjne
rejestr przesuwny
szyna danych
słowo stanu
rejestr wyjściowy
programowalny
generator
układ
odzyskiwania
danych
sygnał
zegarowy
wejście
szeregowe
danych
przerwanie
13
Kontroler przerwań
magistrala sterująca
magistrala adresowa
magistrala danych
A2-A0
D7-D0
wejścia przerwań
potwierdzenie
przerwanie
W CS OE IO
kontroler przerwań
IO - żądanie dostępu do portów wejścia wyjścia
14
Bezpośredni dostęp do pamięci
D
A
C
A
A
D
D
C
C
mikroprocesor
układ
zewnętrzny
C
DMA
układy wejścia
wyjścia
pamięć
D
C
′
DMA
C
′
DMA
A
C
C
DMA
D
układ
bezpośredniego
dostępu do
pamięci
15
Kaskadowe połączenie kontrolerów DMA
kontroler
DMA
kontroler
DMA
kontroler
DMA
mikroprocesor
pierwszy poziom
drugi poziom
DACK
DREQ
DREQ
DREQ
DACK
DACK
DREQ
DACK
układ
zewnętrzny
sz
y
n
a
a
d
re
so
w
a
sy
g
n
a
ły
st
er
u
ją
ce
szyna
danych
DREQ - żadanie przesłania DMA
DACK - potwierdzenie / zgoda na przesłanie DMA
16
Porównanie
§ mikrokontroler
+ mała moc obliczeniowa (20 MIPSów)
+ na ogół brak instrukcji zmniennoprzecinkowych
+ przetwarzanie potokowe
+ bogate peryferia
3 liczniki i układy czasowe
3 przetworniki A/C i C/A
3 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
17
Porównanie
§ mikroprocesor
+ duża moc obliczeniowa (6000 MIPSów obecnie)
+ wielordzeniowość oraz technologia HT
+ przetwarzanie potokowe
+ dostępne instrukcje zmniennoprzecinkowe
+ do działania wymaga dodatkowych peryferiów
3 kontroler DMA
3 pamięć (programu i danych)
3 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)
18
Przykładowy schemat blokowy aparatury kontrolnej
mikrokontroler
wyświetlacz
alfanumeryczny
moduł
transmisji
radiowej
czytnik kart
RFID
klawiatura
ultradźwiękowy
czujnik ruchu
blok zasilacza
z akumulatorem
magnes
trwały
Vcc
19
Przykładowy schemat blokowy aparatury pomiarowej
mikrokontroler
wyświetlacz
alfanumeryczny
blok zasilacza
pamięć danych
pomiarowych
interfejs
transmisji
danych
klawiatura
sygnały
wzorcowe
czujnik
głowica
pomiarowa
20
Przykładowy schemat blokowy komputera
mikroprocesor
zestaw układów
specjalizowanych
CHIPSET 1
karta
graficzna
zestaw układów
specjalizowanych
CHIPSET 2
pamięć operacyjna
interfejsy pamięci
masowej
interfejsy
komunikacyjne
magistrale
systemowe
21
Mikroprocesory i mikrokontrolery
rys historyczny
Dariusz Chaberski
ENIAC (Electronic Numerical Integrator And Computer)
rok powstania: 1946
liczba akumulatorów: 3
system liczbowy: dzięsiętny
format danych:
10 cyfr stałopozycyjny *
20 cyfrowy zmiennopozycyjny
wydajność:
50k dodawań/s (*)
385 mnożeń/s (*)
technologia:
lampy elektronowe (18800)
komutatory (6000)
przekaźniki (1500)
oporniki (50000)
pobór mocy: 140 kW
wielkość: 42 szafy (300x60x30 cm)
masa: 30 ton
2
Intel 4004
rok powstania: 1971
liczba bitów magistrali danych: 4
liczba bitów magistrali adresowej: 12
liczba tranzystorów: 2300
częstotliwość pracy: 740 kHz (0.06 MIPSa)
architektura: harwardzka
liczba instrukcji: 46
liczba rejestrów: 16
stos: 3 poziomy
technologia: 10µm, PMOS
powierzchnia płytki krzemu: 12 mm
2
napięcie zasilania: 15V
pobór mocy: 1W
wykonawca: Intel na zlecenie japońskiej firmy Busi-
com
3
IBM 3741
RAM 8 KB
Rok produkcji 1973
Wbudowana pamięć masowa 2 x FDD 8” - (3000 kart
perforowanych)
drukarka 3715
waga około 50 kg
4
§ Intel 8080 - produkowany również w Polsce (MCY7880)
+ 1974
+ ośmio bitowy
+ n-MOS
+ 2 MHz
+ 72 instrukcje
+ adresowanie do 64 KB
+ 3 napięcia zasilające: +5V, +12V, -5V
§ Zilog Z80
+ ośmio bitowy
§ 1975 - Texas Instruments TMS1000 - pierwszy mikrokontroler
+ cztero bitowy
5
§ Intel 8042, 8048
§ Intel 8051
+ stosowany do dziś, głównie w wersji 8052
+ stosowany również jako baza dla innych mikrokontrolerów (ADuC812 Analog Devices)
§ Intel 8086
+ szesnasto bitowy (zewnętrznie i wewnętrznie)
§ Intel 8088
+ zgodny z 8086
+ magistrala zewnętrzna ośmio bitowa
§ MicroChip PIC (16C84)
+ RISC
§ Atmel AVR (ATmega16, ATtiny2332)
6
§ Intel 80286
+ zgodny z 8086, 80186, 80188
+ możliwość pracy wielozadaniowej
+ możliwość pracy w trybie adresowania rzeczywistego lub wirtualnego
+ wbudowany układ MMU
+ obsługiwana pamięć do 16 GB, do 1 GB dla pojedynczego zadania
+ wydajność około 1.6 MIPSów
§ AMD klony Intel 80286
+ większa wydajność
§ Intel 80386
+ DX - wewnętrznie i zewnętrznie 32-bitowy
+ SX - zewnętrznie 16-bitowy
7
§ Intel 80486
+ wydajność 20 MIPSów
+ DX
3 wewnętrznie i zewnętrznie 32-bitowy
3 wbudowany koprocesor arytmetyczny
+ SX
3 wewnętrznie i zewnętrznie 32-bitowy
3 brak wbudowanego koprocesora arytmetycznego
3 możliwość stosowania zewnętrznego koprocesora - Intel 80487
§ Intel Pentium, Pentium MMX, Pentium II, Celeron, Pentium III, Pentium M, Pentium IV, Xeon ...
AMD Athlon, AMD Duron, K7, Opteron, Athlon64, Hammer, K8 ...
+ instrukcje wspomagające obliczenia graficzne
3 Intel - MMX
3 AMD - 3DNow
3 wielordzeniowość
3 moc obliczeniowa 6000 MIPSów
8
8 bitowe mikrokontrolery rodziny AVR
Dariusz Chaberski
Rdzeń AVR
pamięć
programu
FLASH
licznik
programu
ALU
8 bitowa magistrala danych
ad
re
so
w
an
ie
p
oś
re
d
n
ie
ad
re
so
w
an
ie
b
ez
p
oś
re
d
n
ie
EEPROM
jednostka SPI
32×8
rejestrów
ogólnego
przeznaczenia
porty wejścia
wyjścia
linie sterujące
dekoder
instrukcji
rejestr
instrukcji
kontroler
przerwań
Watchdog
licznik
czasomierz
Moduł 1
we/wy
pamięć
danych
SRAM
Moduł 2
we/wy
komparator
analogowy
Moduł n
we/wy
słowa
kontrolno
statusowe
2
Rejestr statusowy - SREG
0
7
I
T
H
S
Z
C
V
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
numer bitu
wartość początkowa
N
R/W
0
0
dostęp
nazwa
I - globalne zezwolenie na przerwania
T - znacznik kopii
H - znacznik przeniesienia połówkowego
S - bit znaku S=V⊕N
V - znacznik przepełnienia
N - znacznik wartości ujemnej
Z - znacznik wartości zerowej
C - znacznik przeniesienia lub pożyczki
3
Rejestry ogólnego przeznaczenia
R0
R16
R17
adres
0x00
0x0E
0x0F
R1
R2
R14
R13
...
R15
0x01
0x02
0x0D
R31
R30
R29
R28
R27
R26
...
0x10
0x11
0x1A
0x1B
0x1C
0x1D
0x1E
0x1F
młodszy bajt rejestru X
starszy bajt rejestru X
młodszy bajt rejestru Y
starszy bajt rejestru Y
młodszy bajt rejestru Z
starszy bajt rejestru Z
7
0
X, Y, Z - rejestry indeksowe/wskaźnikowe
4
Rejestry indeksowe
7
15
0
7
0
0
XH
XL
R27
(0x1B)
R26
(0x1A)
rejestr X
7
15
0
7
0
0
YH
YL
R29
(0x1D)
rejestr Y
7
15
0
7
0
0
ZH
ZL
rejestr Z
R28
(0x1C)
R31
(0x1F)
R30
(0x1E)
5
Wskaźnik stosu - SP
SP8
SP0
SPL
SPH
15
SP15
SP7
7
8
0
numer bitu
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
dostęp
wartość początkowa
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
nazwa bitu
numer bitu
6
Zrównoleglenie cykli pobierania kodu i wykonywania instrukcji
T2
T3
zegar
F1
T1
T4
E2
E3
E1
F2
F3
F4
F - pobieranie kodu instrukcji
E - wykonywanie instrukcji
7
Pojedynczy cykl wykonywania instrukcji
T1
T2
A
zegar
F
E
W
A - całkowity cykl wykonywania instrukcji
F - pobieranie operandów do rejestrów tymczasowych układu wykonawczego
E - właściwe wykonywanie instrukcji (układ wykonawczy)
W - zapis wyniku z rejestru tymczasowego układu wykonawczego w miejsce przeznaczenia
8
Mapa pamięci programu
0x0000
0x1FFF
FLASH
obszar startowy
(Boot)
15
0
FLASH
obszar aplikacji
wektory przerwań
i resetu
9
Mapa pamięci danych
R0
R1
R2
R31
0x00
0x01
0x02
0x0000
0x0001
0x0002
0x001D
0x001E
0x0060
0x0061
0x045F
0x005F
0x045E
0x005E
0x005D
0x001F
...
...
...
...
...
0x03F
0x03E
0x03D
R29
R30
wewnętrzna pamięć SRAM
porty wejścia wyjścia
rejestry ogólnego przeznaczenia
0x0020
0x0021
0x0022
n
u
m
er
p
or
tu
n
az
w
a
re
je
st
ru
ad
re
s
10
Diagram wykonywania instrukcji dostępu do pamięci SRAM
o
d
cz
y
t
za
p
is
instrukcja dostępu do pamięci
następna instrukcja
T2
T3
T1
obliczanie adresu
obliczony adres
zegar
A
D
D
WR
RD
11
Budowa cyfrowego portu wejścia wyjścia
Pxn
SLEEP
WPx
RRx
RPx
RDx
WDx
PUD
RESET
D
L
Q
Q
Q
Q
D
Q
clk
I
/O
m
ag
is
tr
al
a
d
an
y
ch
Q
CLR
Q
Q
CLR
D
RESET
synchronizator
SYNC
PINxn
D
DDxn
PORTxn
12
Synchronizacja odczytu portu wejścia wyjścia
r17=Pxn
XXX
XXX
t
pd,min
t
pd,max
PINxn
r17
0xFF
0x00
instrukcje
SYNC
clk
I
/O
13
Synchronizacja odczytu portu wejścia wyjścia
po programowym ustawieniu stanu portu
brak operacji
PORTx=r16
PINxn
r17
instrukcje
SYNC
r16
0xFF
t
pd
r17=PINx
0xFF
0x00
clk
I
/O
14
Tryby adresowania pamięci
§ bezpośrednie jedno rejestrowe - Rd
OP
d
31
Rd
rejestry
ogólnego
przeznaczenia
0
4
0
15
15
Tryby adresowania pamięci
§ bezpośrednie dwu rejestrowe - Rd, Rr
d
31
Rd
rejestry
ogólnego
przeznaczenia
0
4
0
15
9
OP
Rr
r
16
Tryby adresowania pamięci
§ bezpośrednie - porty wejścia wyjścia
A
63
A
0
0
15
5
OP
porty wejścia
wyjścia
Rd/Rr
10
17
Tryby adresowania pamięci
§ bezpośrednie - pamięć danych
RAMEND
0x0000
16
31
adres danych
15
0
pamięć
danych
20
Rd/Rr
OP
18
Tryby adresowania pamięci
§ pośrednie z przesunięciem - pamięć danych
Rd/Rr
10
0
5
15
OP
q
rejestr Y lub Z
15
0
0x0000
RAMEND
pamięć
danych
19
Tryby adresowania pamięci
§ pośrednie - pamięć danych
rejestr X, Y lub Z
15
0
0x0000
RAMEND
pamięć
danych
20
Tryby adresowania pamięci
§ pośrednie z wcześniejszą dekrementacją - pamięć danych
rejestr X, Y lub Z
15
0
0x0000
RAMEND
pamięć
danych
-1
21
Tryby adresowania pamięci
§ pośrednie z późniejszą inkrementacją - pamięć danych
rejestr X, Y lub Z
15
0
0x0000
RAMEND
pamięć
danych
1
22
Tryby adresowania pamięci
§ stałoadresowe - pamięć programu
rejestr Z
15
1
FLASHEND
LSB
pamięć programu
0x0000
0
23
Tryby adresowania pamięci
§ z późniejszą inkrementacją - pamięć programu
rejestr Z
15
1
FLASHEND
LSB
pamięć programu
0x0000
0
1
24
Tryby adresowania pamięci
§ bezpośrednie - pamięć programu
FLASHEND
pamięć programu
0x0000
0
15
OP
31
16
6 MSB
16 LSB
0
21
21
PC
25
Tryby adresowania pamięci
§ pośrednie - pamięć programu
FLASHEND
pamięć programu
0x0000
Rejestr Z
PC
15
0
0
15
26
Tryby adresowania pamięci
§ względne - pamięć programu
15
FLASHEND
pamięć programu
0x0000
0
PC
OP
15
0
12
1
k
27
Instrukcje
§ arytmetyczna i logiczne (1/2)
mnemonik
operandy
opis
znaczniki
#
uwagi
ADD
Rd, Rr
Rd=Rd+Rr
ZCNVSH
1
d,r=[0,31]
ADC
Rd, Rr
Rd=Rd+Rr+C
ZCNVSH
1
d,r=[0,31]
ADIW
Rd, K
Rd+1:Rd=Rd+1:Rd+K
ZCNVS
2
K=[0,63], d=24,26,28,30
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]
SBCI
Rd, K
Rd=Rd-K-C
ZCNVSH
1
K=[0,255], d=[16,31]
SBIW
Rd, K
Rd+1:Rd=Rd+1:Rd-K
ZCNVS
2
K=[0,63], d=24,26,28,30
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]
ORI
Rd, K
Rd=Rd|K
ZNVS
1
K=[0,255], d=[16,31]
EOR
Rd, Rr
Rd=RdˆRr
ZNVS
1
d,r=[0,31]
COM
Rd
Rd=0xFF-Rd
ZCNVS
1
d=[0,31]
# - liczba cykli zegarowych potrzebnych do wykonania instrukcji
28
Instrukcje
§ arytmetyczna i logiczne (2/2)
mnemonik
operandy
opis
znaczniki
#
uwagi
NEG
Rd
0x00-Rd
ZCNVSH
1
d=[0,31]
SBR
Rd, K
Rd=Rd|K
ZNVS
1
K=[0,255], d=[16,31]
CBR
Rd, K
Rd=Rd&(0xFF-K)
ZNVS
1
K=[0,255], d=[16,31]
INC
Rd
Rd=Rd+1
ZNVS
1
d=[0,31]
DEC
Rd
Rd=Rd-1
ZNVS
1
d=[0,31]
TST
Rd
Rd=Rd&Rd
ZNVS
1
d=[0,31] (AND Rd, Rd)
CLR
Rd
Rd=RdˆRd
ZNVS
1
d=[0,31] (EOR Rd, Rd)
SER
Rd
Rd=0xFF
-
1
d=[16,31]
MUL
Rd, Rr
R1:R0=Rd*Rr (UU)
ZC(R15)
2
d,r=[0,31]
MULS
Rd, Rr
R1:R0=Rd*Rr (SS)
ZC(R15)
2
d,r=[16,31]
MULSU
Rd, Rr
R1:R0=Rd*Rr (SU)
ZC(R15)
2
d,r=[16,23]
FMUL
Rd, Rr
R1:R0=(Rd*Rr)<<1 (UU)
ZC(R15)
2
d,r=[16,23] (1.7, 1.15)
FMULS
Rd, Rr
R1:R0=(Rd*Rr)<<1 (SS)
ZC(R15)
2
d,r=[16,23] (1.7, 1.15)
FMULSU
Rd, Rr
R1:R0=(Rd*Rr)<<1 (SU)
ZC(R15)
2
d,r=[16,23] (1.7, 1.15)
29
Instrukcje
§ rozgałęziające (1/3)
mnemonik
operandy
opis
znaczniki
#
uwagi
RJMP
k
PC=PC+k+1
-
2
k=[-2048,2047]
IJMP
-
PC(15:0)=Z, PC(21:16)=0
-
2
-
EIJMP
-
PC(15:0)=Z, PC(21:16)=EIND
-
2
-
JMP
k
PC=k
-
3
k=[0, 4M-1]
RCALL
k
[SP]=PC+1, PC=PC+k+1
-
3/4
k=[-2048,2047]
ICALL
-
[SP]=PC+1,
PC(15:0)=Z, PC(21:16)=0
-
3/4
-
EICALL
-
[SP]=PC+1
PC(15:0)=Z, PC(21:16)=EIND
-
4
-
CALL
k
[SP]=PC+2, PC=k
-
4/5
k=[0,4M-1]
RET
-
PC=[SP]
-
4/5
-
RETI
-
I=1, PC=[SP]
I
4/5
-
CPSE
Rd, Rr
if(Rd==Rr) PC=PC+2/3
-
1/2/3
d,r=[0,31]
CP
Rd, Rr
Rd-Rr
ZCNVSH
1
d,r=[0,31]
CPC
Rd, Rr
Rd-Rr-C
ZCNVSH
1
d,r=[0,31]
CPI
Rd, K
Rd-K
ZCNVSH
1
K=[0,255], d=[16,31]
30
Instrukcje
§ rozgałęziające (2/3)
mnemonik
operandy
opis
znaczniki
#
uwagi
SBRC
Rr, b
if(Rr(b)==0) PC=PC+2/3
-
1/2/3
r=[0,31], b=[0,7]
SBRS
Rr, b
if(Rr(b)==1) PC=PC+2/3
-
1/2/3
r=[0,31], b=[0,7]
SBIC
A, b
if(I/O(A(b))==0) PC=PC+2/3
-
1/2/3
A=[0,31], b=[0,7]
SBIS
A, b
if(I/O(A(b))==1) PC=PC+2/3
-
1/2/3
A=[0,31], b=[0,7]
BRBS
s, k
if(SREG(s)==1) PC=PC+1+k
-
1/2
k=[-64,63], s=[0,7]
BRBC
s, k
if(SREG(s)==0) PC=PC+1+k
-
1/2
k=[-64,63], s=[0,7]
BREQ
k
if(Z==1) PC=PC+1+k
-
1/2
k=[-64,63]
BRNE
k
if(Z==0) PC=PC+1+k
-
1/2
k=[-64,63]
BRCS
k
if(C==1) PC=PC+1+k
-
1/2
k=[-64,63]
BRCC
k
if(C==0) PC=PC+1+k
-
1/2
k=[-64,63]
BRSH
k
if(C==0) PC=PC+1+k
-
1/2
k=[-64,63]
BRLO
k
if(C==1) PC=PC+1+k
-
1/2
k=[-64,63]
BRMI
k
if(N==1) PC=PC+1+k
-
1/2
k=[-64,63]
BRPL
k
if(N==0) PC=PC+1+k
-
1/2
k=[-64,63]
31
Instrukcje
§ rozgałęziające (3/3)
mnemonik
operandy
opis
znaczniki
#
uwagi
BRGE
k
if(N⊕V==0) PC=PC+1+k
-
1/2
k=[-64,63]
BRLT
k
if(N⊕V==1) PC=PC+1+k
-
1/2
k=[-64,63]
BRHS
k
if(H==1) PC=PC+1+k
-
1/2
k=[-64,63]
BRHC
k
if(H==0) PC=PC+1+k
-
1/2
k=[-64,63]
BRTS
k
if(T==1) PC=PC+1+k
-
1/2
k=[-64,63]
BRTC
k
if(T==0) PC=PC+1+k
-
1/2
k=[-64,63]
BRVS
k
if(V==1) PC=PC+1+k
-
1/2
k=[-64,63]
BRVC
k
if(V==0) PC=PC+1+k
-
1/2
k=[-64,63]
BRIE
k
if(I==1) PC=PC+1+k
-
1/2
k=[-64,63]
BRID
k
if(I==0) PC=PC+1+k
-
1/2
k=[-64,63]
32
Instrukcje
§ przesyłania danych (1/3)
mnemonik
operandy
opis
znaczniki
#
uwagi
MOV
Rd, Rr
Rd=Rr
-
1
r,d=[0,31]
MOVW
Rd, Rr
Rd+1:Rd=Rr+1:Rr
-
1
r,d=0,2,..,30
LDI
Rd, K
Rd=K
-
1
d=[16,31], K=[0,255]
LDS
Rd, k
Rd=[k]
-
2
d=[0,31], k=[0,64k-1]
LD
Rd, X
Rd=[X]
-
2
d=[0,31]
LD
Rd, X+
Rd=[X], X=X+1
-
2
d=[0,31]
LD
Rd, -X
X=X-1, Rd=[X]
-
2
d=[0,31]
LD
Rd, Y
Rd=[Y]
-
2
d=[0,31]
LD
Rd, Y+
Rd=[Y], Y=Y+1
-
2
d=[0,31]
LD
Rd, -Y
Y=Y-1, Rd=[Y]
-
2
d=[0,31]
LDD
Rd, Y+q
Rd=[Y+q]
-
2
d=[0,31], q=[0,63]
LD
Rd, Z
Rd=[Z]
-
2
d=[0,31]
LD
Rd, Z+
Rd=[Z], Z=Z+1
-
2
d=[0,31]
LD
Rd, -Z
Z=Z-1, Rd=[Z]
-
2
d=[0,31]
LDD
Rd, Z+q
Rd=[Z+q]
-
2
d=[0,31], q=[0,63]
33
Instrukcje
§ przesyłania danych (2/3)
mnemonik
operandy
opis
znaczniki
#
uwagi
STS
k, Rr
[k]=Rr
-
2
r=[0, 31], k=[0, 64k-1]
ST
X, Rr
[X]=Rr
-
2
r=[0,31]
ST
X+, Rr
[X]=Rr, X=X+1
-
2
r=[0,31]
ST
-X, Rr
X=X-1, [X]=Rr
-
2
r=[0,31]
ST
Y, Rr
[Y]=Rr
-
2
r=[0,31]
ST
Y+, Rr
[Y]=Rr, Y=Y+1
-
2
r=[0,31]
ST
-Y, Rr
Y=Y-1, [Y]=Rr
-
2
r=[0,31]
STD
Y+q, Rr
[Y+q]=Rr
-
2
r=[0,31], q=[0,63]
ST
Z, Rr
[Z]=Rr
-
2
r=[0,31]
ST
Z+, Rr
[Z]=Rr, Z=Z+1
-
2
r=[0,31]
ST
-Z, Rr
Z=Z-1, [Z]=Rr
-
2
r=[0,31]
STD
Z+q, Rr
[Z+q]=Rr
-
2
r=[0,31], q=[0,63]
34
Instrukcje
§ przesyłania danych (3/3)
mnemonik
operandy
opis
znaczniki
#
uwagi
LPM
-
R0=[Z]
-
3
-
LPM
Rd, Z
Rd=[Z]
-
3
d=[0,31]
LPM
Rd, Z+
Rd=[Z], Z=Z+1
-
3
d=[0,31]
ELPM
-
R0=(RAMPZ:Z)
-
3
-
ELPM
Rd, Z
Rd=[RAMPZ:Z]
-
3
d=[0,31]
ELPM
Rd, Z+
Rd=[RAMPZ:Z], Z=Z+1
-
3
d=[0,31]
SPM
-
[Z]=R1:R0
-
-
-
IN
Rd, A
Rd=I/O(A)
-
1
d=[0,31], A=[0,63]
OUT
A, Rr
I/O(A)=Rr
-
1
r=[0,31], A=[0,63]
PUSH
Rr
[SP]=Rr
-
2
r=[0,31]
POP
Rd
Rr=[SP]
-
2
r=[0,31]
35
Instrukcje
§ bitowe (1/2)
mnemonik
operandy
opis
znaczniki
#
uwagi
LSL
Rd
Rd[n+1]=Rd[n], Rd[0]=0, C=Rd[7]
ZCNVH
1
d=[0,31]
LSR
Rd
Rd[n]=Rd[n+1], Rd[7]=0, C=Rd[0]
ZCNV
1
d=[0,31]
ROL
Rd
Rd[0]=C, Rd[n+1]=Rd, C=Rd[7]
ZCNVH
1
d=[0,31]
ROR
Rd
Rd[7]=C, Rd[n]=Rd[n+1], C=Rd[0]
ZCNV
1
d=[0,31]
ASR
Rd
Rd[n]=Rd[n+1], n=0,..,6
ZCNV
1
d=[0,31]
SWAP
Rd
Rd[3,..,0]↔Rd[7,..,4]
-
1
d=[0,31]
BSET
s
SREG[s]=1
SREG(s)
1
s=[0,7]
BCLR
s
SREG[s]=0
SREG(s)
1
s=[0,7]
SBI
A, b
I/O(A(b))=1
-
2
b=[0,7], A=[0,31]
CBI
A, b
I/O(A(b))=0
-
2
b=[0,7], A=[0,31]
BST
Rr, b
T=Rr[b]
T
1
r=[0,31], b=[0,7]
BLD
Rd, b
Rd[b]=T
-
1
d=[0,31], b=[0,7]
36
Instrukcje
§ bitowe (2/2)
mnemonik
operandy
opis
znaczniki
#
uwagi
SEC
-
C=1
C
1
-
CLC
-
C=0
C
1
-
SEN
-
N=1
N
1
-
CLN
-
N=0
N
1
-
SEZ
-
Z=1
Z
1
-
CLZ
-
Z=0
Z
1
-
SEI
-
I=1
I
1
-
CLI
-
I=0
I
1
-
SES
-
S=1
S
1
-
CLS
-
S=0
S
1
-
SEV
-
V=1
V
1
-
CLV
-
V=0
V
1
-
SET
-
T=1
T
1
-
CLT
-
T=0
T
1
-
SEH
-
H=1
H
1
-
CLH
-
H=0
H
1
-
37
Instrukcje
§ kontrolne
mnemonik
operandy
opis
znaczniki
#
uwagi
BREAK
-
debugowanie
-
1
-
NOP
-
operacja pusta
-
1
-
SLEEP
-
stan uśpienia
-
1
-
WDR
-
zerowanie licznika WATCHDOGa
-
1
-
38
ATmega32
§ 32 kB pamięci programu FLASH
§ 1024 B pamięci EEPROM
§ 2 kB pamięci SRAM
§ 32 programowalne linie wejścia wyjścia
§ częstotliwość pracy 0 - 16 MHz
39
ATmega32
40
ATmega32
41
ATmega32
42
Przerwania
§ lista 1/2
#
adres
programu
źródło
opis
1
0x000
RESET
pin zewnętrzny, włączenie zasilania, spadek napięcia,
WATCHDOG, reset poprzez interfejs JTAG
2
0x002
INT0
przerwanie zewnętrzne 0
3
0x004
INT1
przerwanie zewnętrzne 1
4
0x006
INT2
przerwanie zewnętrzne 2
5
0x008
TIMER2 COMP
osiągnięcie przez licznik 2 wartości określonej przez rejestr
6
0x00A
TIMER2 OVF
przepełnienie licznika 2
7
0x00C
TIMER1 CAPT
przechwycenie stanu licznika 1
8
0x00E
TIMER1 COMPA
osiągnięcie przez licznik 2 wartości określonej przez
rejestr A
9
0x010
TIMER1 COMPB
osiągnięcie przez licznik 2 wartości określonej przez
rejestr B
10
0x012
TIMER1 OVF
przepełnienie licznika 1
# - numer przerwania
43
Przerwania
§ lista 2/2
#
adres
programu
źródło
opis
11
0x014
TIMER0 COMP
osiągnięcie przez licznik 0 wartości określonej przez rejestr
12
0x016
TIMER0 OVF
przepełnienie licznika 0
13
0x018
SPI, STC
transmisja szeregowa zakończona
14
0x01A
USART, RXC
odbiór danych kompletny
15
0x01C
USART, UDRE
rejestr danych pusty
16
0x01E
USART, TXC
wysyłanie danych zakończone
17
0x020
ADC
przetwarzanie zakończone
18
0x022
EE RDY
pamięć EEPROM gotowa
19
0x024
ANA COMP
komparator analogowy
20
0x026
TWI
I2C
21
0x028
SPM RDY
zapis do pamięci programu zakończony
44
Przerwania
§ ogólny rejestr kontroli przerwań - GICR (General Interrupt Control Register)
0
0
0
0
0
0
0
0
wartość
początkowa
numer bitu
INT1
INT0
INT2
IVCE
IVSEL
7
0
R/W
R/W
R/W
R/W
R/W
R
R
R
dostępność
+ IVSEL - umieszczenie wektorów przerwań w pamięci programu
3 IVSEL=0 - na początku pamięci programu
3 IVSEL=1 - obszar startowy (Boot) pamięci programu
+ IVCE - możliwość zmiany umiejscowienia wektorów przerwań
3 IVCE=0 - mozliwość zmiany położenie wektorów przerwań zablokowana
3 IVCE=1 - mozliwość zmiany położenie wektorów przerwań udostępniona
45
Pamięć EEPROM
§ wytrzymałość: 100 000 cykli zapisu/kasowania
§ pojemność: 1024 B
§ dostępność: przestrzeń I/O
§ współpraca z kontrolerem przerwań
§ czas zapisu 8.5 ms
46
Pamięć EEPROM
§ rejestry adresu pamięci EEPROM - EEARH i EEARL
(The EEPROM Address Register H/L)
EEAR7
EEAR6
EEAR5
EEAR4
EEAR3
EEAR2
EEAR1
EEAR0
EEARL
numer bitu
8
15
numer bitu
7
0
dostępność
R
R/W
0
R
R
R
R
R
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
X
EEAR9
EEAR8
EEARH
wartość
początkowa
X
X
X
X
X
X
R/W
R/W
X
0
0
X
+ określa adres komórki pamięci EEPROM, która będzie odczytywana lub zapisywana
§ rejestr danych pamięci EEPROM - EEDR
(The EEPROM Data Register)
0
MSB
7
numer bitu
dostępność
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
LSB
+ przechowuje odczytaną lub zapisywaną wartość pamięci EEPROM
47
Pamięć EEPROM
§ rejestr kontrolny pamięci EEPROM - EECR
(The EEPROM Control Register)
0
7
numer bitu
dostępność
R/W
R/W
R/W
R/W
R
R
R
R
wartość
początkowa
0
0
0
0
0
0
X
0
EERIE
EEMWE
EEWE
EERE
+ EERIE - generowanie przerwania w momencie zakończenia zapisu
(EEPROM Ready Interrupt Enable)
+ EEMWE - określa czy ustawienie bitu EEWE może spowodować zapis
(EEPROM Master Write Enable)
+ EEWE - dokonuje wpisu danej EEDR pod adres EEARH/L
bit EEWE musi być ustawiony w przeciągu czterech cykli zegara od ustawienia bitu EEMWE
(EEPROM Write Enable)
+ EERE - dokonuje odczytu danej z pamięci EEPROM spod adresu EEARH/L
(EEPROM Read Enable)
48
Pamięć EEPROM
§ przykład zapisu
.ORG 0x00
jmp main
.ORG 0x22
jmp eeprom
.ORG 0x2a
main:
sbi EECR, EERIE
sei
clr zh
clr zl
ldi r16, 0x08
out sph, r16
ldi r16, 0x5f
out spl, r16
call eeprom
loop:
nop
jmp loop
eeprom:
out EEARH, zh
out EEARL, zl
out EEDR, zl
adiw zl, 1
sbi EECR, EEMWE
sbi EECR, EEWE
cpi zl, 0x00
brne ne
cpi zh, 0x04
brne ne
cbi EECR, EERIE
ne:
reti
49
Licznik / czasomierz 0
§ 8 bitowy licznik
§ generowanie przerwania na przepełnienie licznika
lub w momencie zrównania jego wartości z rejestrem
§ współpraca z 10 bitowym preskalerem
§ wsparcie dla PWM
§ możliwość zliczania zdarzeń zewnętrznych
50
Licznik / czasomierz 0
zlicz
kierunek
zeruj
układ
sterujący
=0xFF
=0
licznik/czasomierz
=
OCR0
TOV0
m
ag
is
tr
al
a
d
an
y
ch
TCCR0
TCNT0
T0
OC0
OC0
generowanie
przebiegu
wybór zegara
BOTTOM
TOP
preskaler
detektor
zbocza
clk
T0
51
Oznaczenia
§ oznaczenia
TCNT - The Timer Counter
OCR - Output Compare Register
TCCR - Timer Counter Control Register
OC - Output Compare
TOV - The Timer / Counter Overflow
BOTTOM - 0x00
TOP - 0xFF lub OCR0
MAX - 0xFF
52
Jednostka licznika
53
Jednostka porównująca
54
Preskaler
10 bitowy licznik
C
K
/
8
C
K
/
6
4
C
K
/
2
5
6
C
K
/
1
0
2
4
synchronizator
synchronizator
CS12
0
CS10
CS11
clk
T0
CS00
CS01
CS02
0
clk
T1
clk
I
/O
PSR10
T0
T1
zeruj
55
TCCR0
0
0
0
0
0
0
0
0
wartość
początkowa
R/W
R/W
R/W
R/W
R/W
CS02
WGM01
COM00
COM01
WGM00
FOC0
W
R/W
R/W
CS01
CS00
0
dostępność
7
numer bitu
§ CS02:1:0 - wybór źródła zegara dla licznika 0 (Clock Select)
§ WGM01:0 - tryb generowania przebiegu (Waveform Generation Mode)
tryby pracy licznika
WGM01:0
tryb
TOP
uaktualnienie OCR0
TOV0
00
Normal
0xFF
natychmiastowe
MAX
10
CTC - Clear Timer on Compare
Match Mode
0xFF
TOP
BOTTOM
01
The Phase Correct PWM Mode
OCR0
natychmiastowe
MAX
11
Fast PWM Mode
0xFF
BOTTOM
MAX
§ COM01:0 - ustawienie zachowania wyjścia OC0 (Compare Match Output Mode)
§ FOC0 - wymuszenie sygnału zrównania licznika i rejestru (Force Output Compare)
56
Podłączenie do pinu wyjściowego OC0
D
Q
OC0
m
ag
is
tr
al
a
d
an
y
ch
D
Q
D
Q
OC0
PORT
DDR
generator
przebiegu
clk
I
/O
0
1
COM00
COM01
FOC0
57
Zachowanie wyjścia OC0
§ Normal, Clear Timer on Compare Match Mode
COM01:0
opis
00
normalna praca portu
01
przałącz OC0 w momencie zgodności porównania
10
zeruj OC0 w momencie zgodności porównania
11
ustaw OC0 w momencie zgodności porównania
58
Zachowanie wyjścia OC0
§ Fast PWM Mode
COM01:0
opis
00
normalna praca portu
01
zarezerwowane
10
zeruj OC0 w momencie zgodności porównania,
ustaw OC0 w momencie gdy licznik osiągnie wartość BOTTOM
11
ustaw OC0 w momencie zgodności porównania,
zeruj OC0 w momencie gdy licznik osiągnie wartość BOTTOM
59
Zachowanie wyjścia OC0
§ The Phase Correct PWM Mode
COM01:0
opis
00
normalna praca portu
01
zarezerwowane
10
zeruj OC0 momencie zgodności porównania w momencie liczenia w przód,
ustaw OC0 momencie zgodności porównania w momencie liczenia w tył
11
ustaw OC0 momencie zgodności porównania w momencie liczenia w przód,
zeruj OC0 momencie zgodności porównania w momencie liczenia w tył
60
Tryby pracy licznika
§ Clear Timer on Compare Match Mode
TCNT0
OC0
okres
OCR0
generowanie przerwania
OC0
COM01:0=1
61
Tryby pracy licznika
§ Fast PWM Mode
TCNT0
OC0
OCR0
COM01:0=2
COM01:0=3
okres
OC0
generowanie przerwania
TOV0
oraz uaktualnienie
OCR0
generowanie przerwania
OCR0
62
Tryby pracy licznika
§ Phase Correct PWM Mode
TCNT0
OC0
OCR0
okres
OC0
COM01:0=2
COM01:0=3
generowanie przerwania
TOV0
uaktualnienie rejestru
OCR0
generowanie przerwania
OC0
63
Częstotliwości generowanych przebiegów
§ Clear Timer on Compare Match Mode
f
OC0
=
f
clk
I/O
2N (1 + OCR0)
,
N - współczynnik podziału częstotliwości (preskaler), N = 1, 8, 64, 256, 1024
§ Fast PWM Mode
f
OC0P W M
=
f
clk
I/O
256N
§ Phase correct PWM Mode
f
OC0P CP W M
=
f
clk
I/O
510N
64
Diagramy czasowe
§ brak wcześniejszego podziału częstotliwości
65
Diagramy czasowe
§ wcześniejszy podział częstotliwości przez 8
66
Diagramy czasowe
§ wcześniejszy podział częstotliwości przez 8, ustawianie OCF0
67
Diagramy czasowe
§ wcześniejszy podział częstotliwości przez 8 tryb CTC
68
Timer/Counter Interrupt Mask Register
OCIE0 - Timer/Counter 0 Output Compare Match Interrupt Enable
TOIE0 - Timer/Counter 0 Output Overflow Interrupt Enable
69
Timer/Counter Interrupt Flag Register
OCF0: Output Compare Flag 0
TOV0: Timer/Counter0 Overflow Flag
70
Special Funcion I/O Register
PSR10 - Prescaler Reset Timer/Counter 1 and Timer/Counter 0
71
Próbkowanie sygnału zewnętrznego
72
Licznik / czasomierz 1
§ 16 bitowy licznik
§ generowanie przerwania na przepełnienie licznika
lub w momencie zrównania jego wartości z jednym z dwóch rejestrów rejestrów
§ buforowany rejestr porównawczy
§ automatyczne ładowanie stanu rejestru w momencie zrównania licznik rejestr
§ współpraca z 10 bitowym preskalerem
§ wsparcie dla PWM
§ możliwość zliczania zdarzeń zewnętrznych
73
Licznik / czasomierz 1
74
Objaśnienia
ICR - Input Capture Register
75
Jednostka licznika
76
Jednostka przechwytywania stanu licznika
77
Jednostka porównująca
78
Tryby pracy licznika
§ Clear Timer on Compare Match Mode
79
Tryby pracy licznika
§ Fast PWM Mode
80
Tryby pracy licznika
§ Phase Correct PWM Mode
81
Tryby pracy licznika
§ Phase and Frequency Correct PWM Mode
82
Diagramy czasowe
§ brak wcześniejszego podziału częstotliwości, ustawianie bitu OCF1x
83
Diagramy czasowe
§ wcześniejszy podział częstotliwości przez 8, ustawianie OCF1x
84
Diagramy czasowe
§ brak wcześniejszego podziału częstotliwości
85
Diagramy czasowe
§ wcześniejszy podział częstotliwości przez 8
86
TCCR1A
§ Timer/Counter 1 Control Register A
COM1A1:0 - Compare Output Mode for Compare unit A
COM1B1:0 - Compare Output Mode for Compare unit B
FOC1A - Force Output Compare for Compare unit A
FOC1B - Force Output Compare for Compare unit B
WGM11:0 - Waveform Generation Mode
87
TCCR1B
§ Timer/Counter 1 Control Register B
ICNC1 - Input Capture Noise Canceler
ICES1: Input Capture Edge Select
WGM13:2: Waveform Generation Mode
CS12:0: Clock Select
88
TIMSK
§ Timer/Counter Interrupt Mask Register
TICIE1: Timer/Counter1, Input Capture Interrupt Enable
OCIE1A: Timer/Counter1, Output Compare A Match Interrupt Enable
OCIE1B: Timer/Counter1, Output Compare B Match Interrupt Enable
TOIE1: Timer/Counter1, Overflow Interrupt Enable
89
TIFR
§ Timer/Counter Interrupt Flag Register
ICF1: Timer/Counter1, Input Capture Flag
OCF1A: Timer/Counter1, Output Compare A Match Flag
OCF1B: Timer/Counter1, Output Compare B Match Flag
TOV1: Timer/Counter1, Overflow Flag
90
Opis bitów trybu pracy generatora przebiegu
91
Częstotliwości generowanych przebiegów
§ Clear Timer on Compare Match Mode
f
OC1A
=
f
clk
I/O
2N (1 + OCRnA)
,
N - współczynnik podziału częstotliwości (preskaler), N = 1, 8, 64, 256, 1024
§ Fast PWM Mode
f
OC1xP W M
=
f
clk
I/O
N (1 + T OP )
§ Phase correct PWM Mode
f
OC1xP CP W M
=
f
clk
I/O
2N × T OP
§ Phase and Frequency correct PWM Mode
f
OC1xP F CP W M
=
f
clk
I/O
2N × T OP
92
Zachowanie wyjścia OC1
§ Normal, Clear Timer on Compare Match Mode
93
Zachowanie wyjścia OC1
§ Fast PWM Mode
94
Zachowanie wyjścia OC1
§ The Phase (and Frequency) Correct PWM Mode
95
Przetwornik A/C
§ rozdzielczość: 10 bitów
§ INL: 0.5 LSB
§ dokładność całkowita ±2 LSB
§ czas konwersji 13-250 µs
§ możliwość pomiaru różnicy napięć
§ współpraca z kontrolerem przerwań
§ wewnętrzne napięcie odniesienia 2.56 V
96
Przetwornik A/C
97
Automatyczne wyzwalanie
98
Preskaler
99
Diagram ilustrujący dokonywanie pierwszego przetwarzania
w trybie pojedynczej konwersji
100
Diagram ilustrujący dokonywanie przetwarzania
w trybie pojedynczej konwersji
101
Diagram ilustrujący dokonywanie przetwarzania
w trybie automatycznego wyzwalania
102
Diagram ilustrujący dokonywanie przetwarzania
w trybie konwersji Free-Running
103
Zalecany sposób podłączenia zasilania
104
ADC Multiplexer Selection Register
ADLAR: ADC Left Adjust Result (przesunięcie 10 bitowego wyniku w słowie 16 bitowym)
MUX4:0: Analog Channel and Gain Selection Bits (wzmocnienie od 1 do 200)
105
ADC Control and Status Register A
ADEN: ADC Enable
ADSC: ADC Start Conversion
ADATE: ADC Auto Trigger Enable
ADIF: ADC Interrupt Flag
ADIE: ADC Interrupt Enable
ADPS2:0: ADC Prescaler Select Bits
106
Special FunctionIO Register
ADTS2:0: ADC Auto Trigger Source
107
Komparator analogowy
108
Special Function IO Register
ACME: Analog Comparator Multiplexer Enable
109
Analog Comparator Control and Status Register
ACD: Analog Comparator Disable
ACBG: Analog Comparator Bandgap Select
ACO: Analog Comparator Output
ACI: Analog Comparator Interrupt Flag
ACIE: Analog Comparator Interrupt Enable
ACIC: Analog Comparator Input Capture Enable
ACIS1, ACIS0: Analog Comparator Interrupt Mode Select
110
Interfejs I2C
111
Oznaczenia
TWDR - TWI Data Register
TWAR - TWI (Slave) Address Register
TWSR - TWI Status Register
TWCR - TWI Control Register
TWBR - TWI Bit Rate Register
112
Częstotliwość zegara SCL
f
SCL
=
f
CP U
16 + 2 × T W BR × 4
T W P S
TWBR = Value of the TWI Bit Rate Register
TWPS = Value of the prescaler bits in the TWI Status Register
113
TWI Control Register
TWINT: TWI Interrupt Flag
TWEA: TWI Enable Acknowledge Bit
TWSTA: TWI START Condition Bit
TWSTO: TWI STOP Condition Bit
TWWC: TWI Write Collision Flag
TWEN: TWI Enable Bit
TWIE: TWI Interrupt Enable
114
TWI Status Register
TWS: TWI Status
TWPS: TWI Prescaler Bits
115
Programowanie
116
Programowanie
117
Kody statusowe - Master Transmitter
118
Kody statusowe - Master Receiver
119
Kody statusowe - Slave Receiver
120
Kody statusowe - Slave Transmitter
121
Interfejs SPI
122
SPI Control Register
SPIE: SPI Interrupt Enable
SPE: SPI Enable
DORD: Data Order
MSTR: Master/Slave Select
CPOL: Clock Polarity
CPHA: Clock Phase
SPR1, SPR0: SPI Clock Rate Select 1 and 0
123
SPI Status Register
SPIF: SPI Interrupt Flag
WCOL: Write COLlision Flag
SPI2X: Double SPI Speed Bit
124
Tryby przesyłania danych
125
Tryby przesyłania danych CPHA=0
126
Tryby przesyłania danych CPHA=1
127
Licznik / czasomierz 2
128
Operacje asynchroniczne
§ Asynchronous Status Register
AS2: Asynchronous Timer/Counter2
TCN2UB: Timer/Counter2 Update Busy
OCR2UB: Output Compare Register2 Update Busy
TCR2UB: Timer/Counter Control Register2 Update Busy
129
Preskaler
130
Special Function IO Register
PSR2: Prescaler Reset Timer/Counter2
131
Porty wejścia wyjścia
132
Special Function IO Register
PUD: Pull-up disable
133
Przerwania zewnętrzne - MCU Control Register
134
ISC2: Interrupt Sense Control 2
ISC2: Interrupt Sense Control 2
135
Rejestry kontrolny i flagowy
136
Jednostka resetująca
§ Power-on Reset (V
P OT
) - P OT - Power-on Reset threshold
§ External Reset (wejście RESET)
§ Watchdog Reset
§ Brown-out Reset (V
BOT
) - BOT - Brown-out Reset threshold
§ JTAG AVR Reset
137
Jednostka resetująca
138
Parametry
139
MCU Control and Status Register
JTRF: JTAG Reset Flag
WDRF: Watchdog Reset Flag
BORF: Brown-out Reset Flag
EXTRF: External Reset Flag
PORF: Power-on Reset Flag
140
Watchdog
141
Watchdog Timer Control Register
WDTOE: Watchdog Turn-off Enable
WDE: Watchdog Enable
WDP2, WDP1, WDP0: Watchdog Timer Prescaler 2, 1, and 0
142
Dystrybucja sygnału zegarowego
143
Wybór zegara - bity bezpiecznikowe
144
Oscylator kwarcowy
145
Zewnętrzny oscylator RC
146
Wewnętrzny kalibrowany oscylator RC
§ Oscillator Calibration Register
147
Zegar zewnętrzny
148
Uniwersalny (a)synchroniczny odbiornik nadajnik
149
Układ generowania sygnału zegarowego
150
Określanie szybkości transmisji
151
USART Control and Status Register A
RXC: USART Receive Complete
TXC: USART Transmit Complete
UDRE: USART Data Register Empty
FE: Frame Error
DOR: Data OverRun
PE: Parity Error
U2X: Double the USART Transmission Speed
MPCM: Multi-processor Communication Mode
152
USART Control and Status Register B
RXCIE: RX Complete Interrupt Enable
TXCIE: TX Complete Interrupt Enable
UDRIE: USART Data Register Empty Interrupt Enable
RXEN: Receiver Enable
TXEN: Transmitter Enable
UCSZ2: Character Size
RXB8: Receive Data Bit 8
TXB8: Transmit Data Bit 8
153
USART Control and Status Register C
URSEL: Register Select
UMSEL: USART Mode Select
UPM1:0: Parity Mode
USBS: Stop Bit Select
UCSZ1:0: Character Size
UCPOL: Clock Polarity
154
Interfejsy szeregowe
Dariusz Chaberski
Interfejs I
2
C
§ I
2
C - Inter IC - Inter Integrated Circuit
2
Interfejs I
2
C
§ podłączenie dwóch urządzeń z wykorzystaniem magistrali I
2
C
3
Interfejs I
2
C
§ transfer pojedynczego bitu
4
Interfejs I
2
C
§ rozpoczęcie i zakończenie transmisji
5
Interfejs I
2
C
§ transfer danych
6
Interfejs I
2
C
§ potwierdzenie
7
Interfejs I
2
C
§ synchronizacja zegara podczas procedury arbitrażu
8
Interfejs I
2
C
§ procedura arbitrażu dwóch MASTERów
9
Interfejs I
2
C
§ kompletny transfer danych
10
Interfejs I
2
C
§ adresowanie SLAVE’a 7-bitowym adresem poprzez MASTERa, który jest nadajnikiem
§ natychmiastowy odczyt SLAVE’a
11
Interfejs I
2
C
§ format kombinowany
12
Interfejs SPI
§ przykładowy schemat połączeń SPI (Serial Peripheral Interface)
MOSI - Master Output Slave Input
MISO - Master Input Slave Output
SPI CK - SCK - Serial Clock
SS - Slave Select
13
Interfejs SPI
§ synchroniczny transfer danych (pojedynczy bit)
14
Interfejs SPI
§ synchroniczny transfer danych (całe słowo)
§ przykładowe rozkazy (CODE)
pamięć SPI Serial EEPROM Atmel AT 250(1/2/4)0A (1kb, 2kb, 4kb)
+ WREN - 0000 X110 - zezwól na zapis
+ WRDI - 0000 X100 - zabroń zapisu
+ RDSR - 0000 X101 - odczytaj rejestr statusowy
+ WRSR - 0000 X001 - zapisz rejestr statusowy
+ READ - 0000 A011 - odczyt danych z pamięci, A - najbardziej znaczący bit A8
+ WRITE - 0000 A010 - zapis danych do pamięci
15
Interfejs SPI
§ odczyt rejestru statusowego
16
Interfejs SPI
§ zapis rejestru statusowego
17
Interfejs SPI
§ rejestr statusowy
+ bit7, bit6, bit5, bit4 - 0000 - urządzenie nie znajduje się w trybie zapisu
+ bit3, bit2 - BP1, BP0 - 00 - brak zabezpieczenia przed zapisem, 01 - 1/4 obszaru pamięci
zabezpieczona przed zapisem (1kb - obszar 0x60-7F), 10 - 1/2 obszaru pamięci zabezpieczona
przed zapisem (1kb - obszar 0x40-7F), 11 - cały obszar pamięci zabezpieczony przed zapisem
+ bit1 - WEN, 0 - zapis zabroniony, 1 - zezwolenie na zapis
+ bit0 - RDY, 0 - urządzenie gotowe, 1 - odbywa się cykl zapisu
+ bit7 - bit0 - 11111111 - urządzenie znajduje się w trybie zapisu
18
Interfejs SPI
§ odczyt pamięci
19
Interfejs SPI
§ zapis pamięci
20
Interfejs SPI
§ programator
21
Interfejs JTAG
§ przykład połączenie dwóch urządzeń - JTAG (Joint Test Action Group)
§ przykład podłączenie mikrokontrolera AVR
22
Interfejs JTAG
§ przykład - łańcuch trzech urządzeń
§ stosowane sygnały
+ TDI - Test Data Input
+ TDO - Test Data Output
+ TMS - Test Mode Select
+ TCK - Test Clock Input
+ TRST - Test Reset Input (opcjonalnie)
23
Interfejs JTAG
§ blokowy schemat wewnętrzny
TAP - Test Access Port
ISP - In-System Programmability
ICR - In-Circuit Reconfigurability
24
Interfejs JTAG
§ rejestr Boundary-Scan
25
Interfejs JTAG
§ odczyt i zapis punktów kontrolnych testowanego układu
26
Interfejs U(S)ART
§ Universal (Synchronous) Asynchronous Receiver Transmitter
Uniwersalny (Synchroniczny) Asynchroniczny odbiornik nadajnik
§ przykład transmisji asynchronicznej (UART)
osiem bitów danych, jeden bit stopu, brak kontroli parzystości
§ nazwy sygnałów
+ RXD (Received eXchange Data) - odbiór (UART)
+ TXD (Transmit eXchange Data) - nadawanie (UART)
27
Interfejs USRT
§ przykład transmisji synchronicznej
§ sygnały
+ nadajnik - układ nadrzędny
3 RXD → RX/DT - sygnał danych wyjście(*)
3 TXD → TX/CK - sygnał zegara wyjście(**)
+ odbiornik - układ podrzędny
3 TXD → TX/DT - sygnał danych wejście(*)
3 RXD → RX/CK - sygnał zegara wejście(**)
28
Interfejs UART
§ wybór momentu próbkowania sygnału RXD
29
Interfejs U(S)ART
§ wybrane bity słowa konfiguracyjnego
+ b1,b0 - Długość pola danych
3 00 - 5 bitów
3 01 - 6 bitów
3 10 - 7 bitów
3 11 - 8 bitów
+ b2 - Liczba bitów stopu
3 0 - 1 bit stopu
3 1 - 2 bity stopu
+ b4,b3 - Czy występuje kontrola (rodzaj kontroli)
3 x0 - brak bitu kontrolnego
3 01 - bit kontroli nieparzystości (ang. odd parity)
3 11 - bit kontroli parzystości (ang. even parity)
30
Interfejs U(S)ART
§ wybrane bity słowa konfiguracyjnego (kontynuacja)
+ b5 - Wymuszenie stanu bitu kontrolnego na 0 lub 1 w zależności od rodzaju kontroli
3 0 - bit kontrolny określany zgodnie z zasadą parzystości lub nieparzystości,
3 1 - zależnie od stanu bitów b4 i b3,
· jeżeli b4=0 i b3=1, to stan bitu kontrolnego wynosi zawsze 1
· jeżeli b4=1 i b3=1, to stan bitu kontrolnego wynosi zawsze 0,
+ b6 - rodzaj transmisji
3 0 - transmisja synchroniczna (TXD jest sygnałem zegarowym)
3 1 - transmisja asynchroniczna
+ b7 - określa nadajnik/odbiornik w transmisji synchronicznej, przy asynchronicznej nie ma zna-
czenia
3 0 - odbiornik
3 1 - nadajnik
31
Interfejs 1-Wire
§ schemat elektryczny portu
§ typowa sekwencja komunikacyjna
32
Interfejs 1-Wire
§ zapis, odczyt
33
Interfejs 1-Wire
§ schemat zastępczy interfejsu 1-Wire
34
Interfejs 1-Wire
§ przykład - konwerter UART/1-Wire DS2480B
GND - masa
1-W - wejście/wyjście typu 1-Wire
NC - niewykorzystane
VDD - 4.5 V .. 5 V
VPP - napięcie do programowania pamięci
EPROM (opcjonalnie)
POL - polaryzacja RXT, TXD
RXD, TXD - sygnału interfejsu UART
35
Interfejs 1-Wire
§ DS2480B - schemat blokowy
36
Interfejs 1-Wire
§ przykład - konwerter A/C z interfejsem 1-Wire DS2450
GND - masa
DATA - wejście/wyjście typu 1-Wire
NC - niewykorzystane
VCC - 4.5 V .. 5 V
AIN-A, .. , AIN-D - wejścia sygnałów ana-
logowych
37
Interfejs 1-Wire
§ DS2450 - schemat blokowy
38
Interfejs 1-Wire
§ RESET
unsigned char reset1w(void){
unsigned char ret=0, i;
PORTA&=0xfe;
DDRA|=0x01;
for(i=0; i<48; i++)
delay us(10);
DDRA&=0xfe;
PORTA|=0x01;
delay us(65);
if((PINA&0x01)==0x00)
ret=1;
delay us(90);
if((PINA&0x01)==0x00)
ret=0;
for(i=0; i<15; i++)
delay us(30);
return ret;
}
39
Interfejs 1-Wire
§ WRITE
void w1w(unsigned char w){
unsigned char i;
for(i=0; i<8; i++){
PORTA&=0xfe;
DDRA|=0x01;
delay us(11);
if((w & (1<<i))==0)
delay us(60);
DDRA&=0xfe;
PORTA|=0x01;
delay us(60);
}
}
40
Interfejs 1-Wire
§ READ
unsigned char r1w(void){
unsigned char i, ret=0, j;
for(i=0; i<8; i++){
PORTA&=0xfe;
DDRA|=0x01;
delay us(1);
DDRA&=0xfe;
PORTA|=0x01;
delay us(14);
if((PINA & 0x01)!=0)
ret|=(1<<i);
delay us(60);
}
return ret;
}
41
Interfejs 1-Wire
§ CRC
unsigned char crc1w(unsigned char * tab){
unsigned char crc=0, i, j, t1, t2, t, tt=0;
for(i=0; i<8; i++){
t=tab[i]; t1=t;
for(j=0; j<8; j++){
t^=crc;
t2=t&0x01;
t=crc;
if(t2)
t^=0x18;
t=(t>>1)+0x80*t2;
crc=t;
t1=(t=t1>>1);
}
tt|=tab[i];
}
if(tt==0) return 1;
return crc;
}
42
CRC
43
Mikrokontrolery rodziny 8051
Dariusz Chaberski
Schemat blokowy
2
Struktura pamięci
PSEN - Program Store Enable
EA - External Access
3
Pamięć programu
4
Zewnętrzna pamięć programu
ALE - Address Latch Enable
5
Zewnętrzna pamięć danych
6
Wewnętrzna pamięć danych
7
Wewnętrzna pamięć danych (0-0x7F)
8
Wewnętrzna pamięć danych (0x80-0xFF)
9
Przestrzeń rejestrów specjalnych (SFR)
10
Program Status Word
11
Diagramy wykonywania instrukcji
12
Diagramy wykonywania instrukcji
13
Diagramy wykonywania instrukcji
14
Diagramy wykonywania instrukcji
15
Wykonywanie instrukcji z zewnętrznej pamięci programu
16
Wykonywanie instrukcji z zewnętrznej pamięci programu
17
Interrupt Enable (IE) Register
18
Interrupt Priority (IP) Register
19
System kontroli przerwań
20
Architektura
21
Porty wejścia wyjścia
22
Porty wejścia wyjścia
23
Porty wejścia wyjścia
24
Porty wejścia wyjścia
25
Operacje arytmetyczne
§ ADD A, Rn/adr/@Ri/#dana - A=A+Rn/(adr)/(Ri)/#dana
§ ADDC A, Rn/adr/@Ri/#dana - A=A+Rn/(adr)/(Ri)/#dana+C
§ SUBB A, Rn/adr/@Ri/#dana - A=A-Rn/(adr)/(Ri)/#dana-C
§ INC A/Rn/adr/@Ri/DPTR - A/Rn/(adr)/(Ri)/DPTR=A/Rn/(adr)/(Ri)/DPTR+1
§ DEC A/Rn/adr/@Ri - A/Rn/(adr)/(Ri)=A/Rn/(adr)/(Ri)-1
§ MUL AB - B:A=A*B
§ DIV AB - A=Int(A/B), B=Mod(A/B)
§ DA - if((A(3..0)>9) || AC==1) A(3..0)=A(3..0)+6, if((A(7..4)>9) || CY==1) A(7..4)=A(7..4)+6
26
Operacje logiczne
§ ANL A, Rn/adr/@Ri/#dana - A=A&Rn/(adr)/(Ri)/#dana
§ ANL adr, A/#dana - (adr)=(adr)&A/#dana
§ ORL A, Rn/adr/@Ri/#dana - A=A|Rn/(adr)/(Ri)/#dana
§ ORL adr, A/#dana - (adr)=(adr)|A/#dana
§ XRL A, Rn/adr/@Ri/#dana - A=AˆRn/(adr)/(Ri)/#dana
§ XRL adr, A/#dana - (adr)=(adr)ˆA/#dana
§ CLR A - A=0
§ CPL A - A=0xFF-A
§ RL A - A(n+1)=A(n), A(0)=A(7)
§ RLC A - A(n+1)=A(n), n=0..6, A(0)=C, C=A(7)
§ RR A - A(n)=A(n+1), A(7)=A(0)
§ RRC A - A(n)=A(n+1), n=0..6, A(7)=C, C=A(0)
§ SWAP A - A(7..4)<->A(3..0)
27
Rozkazy przesłań
§ MOV A, Rn/adr/@Ri/#dana - A=Rn/(adr)/(Ri)/#dana
§ MOV Rn, A/adr/#dana - Rn=A/(adr)/#dana
§ MOV adr, A/Rn/adr1/@Ri/#dana - (adr)=A/Rn/(adr1)/(Ri)/#dana
§ MOV @Ri, A/adr/#dana - (Ri)=A/(adr)/#dana
§ MOV DPTR,#dana 16 - DPTR=#dana 16
§ MOVC A, @A+DPTR/@A+PC - A=(A+DPTR)/(A+PC)
§ MOVX A, @Ri/@DPTR - A=(256*P2+Ri)/(DPTR)
§ MOVX @Ri/@DPTR, A - (256*P2+Ri)/(DPTR)=A
§ XCH A, Rn/adr/@Ri - A<->Rn/(adr)/(Ri)
§ XCHD A, @Ri - A(3..0)<->(Ri)(3..0)
§ PUSH adr - (adr)=(SP), SP=SP-1
§ NOP
28
Instrukcje bitowe
§ MOV C, bit - C=bit
§ MOV bit, C - bit=C
§ CLR C/bit - C/bit=0
§ SETB C/bit - C/bit=1
§ CPL C/bit - C/bit=1-C/bit
§ ANL C, bit/(1-bit) - C=C&bit/(1-bit)
§ ORL C, bit/(1-bit) - C=C|bit/(1-bit)
29
Skoki i wywołania podprogramów
§ AJMP adr 11
§ LJMP adr 16
§ SJMP rel
§ JMP @A+DPTR - PC=A+DPTR
§ JC/JNC/JZ/JNZ rel
§ JB/JNB/JBC bit, rel
§ CJNE A, adr/#dana, rel
§ CJNE Rn/@Ri, #dana, rel
§ DJNZ Rn/adr, rel
§ ACALL adr 11
§ LCALL adr 16
§ RET
§ RETI
30
Analog Devices - ADuC812
31
ADuC812
32
Zewnętrzna pamięć danych
33
Mapa pamięci danych
34
Liczniki
35
Liczniki
36
Liczniki
37
Liczniki
38
Liczniki
39
Liczniki
40
Przetwornik A/C
41
Wewnętrzne napięcie odniesienia
42
Zewnętrzne napięcie odniesienia
43
Przetwornik A/C - DMA
44
Przetwornik A/C - DMA
45
Przetwornik A/C - DMA
46
Przetwornik C/A
47
Przetwornik C/A
48
Przykładowy system
49
Mikrokontrolery rodziny PIC
Dariusz Chaberski
Architektura 16C84
2
Architektura 16C84
3
Rejestr statusowy
§ Status Register - STATUS
IRP - 0 - bank 0/1 (0x00 - 0xFF), 1 bank 2/3 (0x100 - 0x1FF)
RP1:RP0 - 00 bank 0 (0x00 - 0x7F), 01 bank 1 (0x80 - 0xFF), 10 bank 2 (0x100 - 0x17F),
11 bank 3 (0x180 - 0x1FF)
TO - (ang. Time-out) - 1 - po wykonaniu instrukcji CLRWDT lub SLEEP lub po włączeniu zasilania,
0 - po przepełnieniu WDT
PD - (Power-down) - 1 - po wykonaniu instrukcji CLRWDT lub po włączeniu zasilania,
0 - po wykonaniu instrukcji SLEEP
Z - wskaźnik zera
DC - (ang. Digital Carry) - przeniesienie połówkowe
C - wskaźnik przeniesienia
4
Rejestr opcji
§ Option Register - OPTION
RBPU - 1 - blokowanie podwieszania portu B, 0 - podwieszanie portu B wg. osobnego rejestru
INTEDG - 1 - przerwanie aktywowane zboczem narastającym, 0 - opadającym
T0CS - selekcja źródła układu czasowego 0
PSA - wykorzystanie preskalera
PS2:PS1:PS0 - współczynnik podziału 000 - 1:2, ..., 111 - 1:256
5
Rejestr przerwań
§ Interrupt Register - INTCON
GIE - globalne blokowanie przerwań
EEIE - blokowanie przerwania zakończenia zapisu pamięci EEPROM
T0IE - blokowanie przerwania przepełnienie układu czasowego 0
INTE - blokowanie przerwania zewnętrznego
RBIE - blokowanie przerwania na zmianę stanu portu RB7-RB4
T0IF - flaga przepełnienia układu czasowego 0
INTF - flaga przerwania zewnętrznego
RBIF - flaga przerwania na zmianę stanu portu RB7-RB4
6
Tworzenie adresu programu
§ rejestry PCL i PCLATCH
7
Sposoby adresowania
8
Port A
port RA3-RA0
port RA4
9
Port B
port RB7-RB4
port RB3-RB0
10
Rozkazy bajtowe 1/2
§ ADDWF f,d
§ ANDWF f,d
§ CLRF f
§ CLRW
§ COMF f,d
§ DECF f,d
§ DECFSZ f,d
§ INCF f,d
§ INCFSZ f,d
11
Rozkazy bajtowe 2/2
§ IORWF f,d
§ MOVF f,d
§ MOVWF f
§ NOP
§ RLF f,d
§ RRF f,d
§ SUBWF f,d - (f-W)
§ SWAPF f,d
§ XORWF f,d
12
Rozkazy bitowe
§ BCF f,b
§ BSF f,b
§ BTFSC f,b
§ BTFSS f,b
13
Rozkazy kontrolne i operujące na stałych
§ ADDLW k
§ ANDLW k
§ CALL k
§ CLRWDT
§ GOTO k
§ IORLW k
§ MOVLW k
§ RETFIE
§ RETLW k
§ RETURN
§ SLEEP
§ SUBLW k - (L-W)
§ XORLW k
14
Potokowe wykonywanie instrukcji
15
16C84 - wyprowadzenia
napięcie zasilania: 2 V - 6 V
pobór prądu (praca): < 2 mA (4 MHz, 5 V)
pobór prądu (StandBy): 26 µA (2 V)
16
Czyszczenie pamięci RAM (0x20-0x2F) poprzez adresowanie
pośrednie
17
Inicjalizacja portu A
18
Mikrokontrolery rodziny M68
Dariusz Chaberski
Architektura - MC68HC08AZ60/48
2
Mapa pamięci
3
Rejestry jednostki centralnej
4
Układ przerwań
5
Obsługa przerwań
6
IRQ Status and Control Register (ISCR)
IRQF - IRQ Flag Bit
ACK1 - IRQ Interrupt Request Acknowledge Bit
IMASK1 - IRQ Interrupt Mask Bit
MODE1 - IRQ Edge/Level Select Bit
7
Układ czasowy B
8
Rejestry układu czasowego B
9
Realizacja PWM
10
TIMB Status and Control Register (TBSC)
TOF - TIMB Overflow Flag Bit
TOIE - TIMB Overflow Interrupt Enable Bit
TSTOP - TIMB Stop Bit
TRST - TIMB Reset Bit
PS[2:0] - Prescaler Select Bits (1, .., 64, PTD4)
11
TIMB Channel Status and Control Registers (TBSC0)
CHxF - Channel x Flag Bit; x=1,0
CHxIE - Channel x Interrupt Enable Bit
MSxB - Mode Select Bit B
MSxA - Mode Select Bit A
ELSxB and ELSxA - Edge/Level Select Bits
TOVx - Toggle-On-Overflow Bit
CHxMAX - Channel x Maximum Duty Cycle Bit
12
Tryby pracy licznika
13
CHxMAX - Channel x Maximum Duty Cycle Bit
14
Licznik MODULO
15
Rejestry licznika MODULO
16
Porty wejścia wyjścia
17
Budowa portu
18
Moduł klawiatury
19
Rejestry modułu klawiatury
KEYF - Keyboard Flag Bit
ACKK - Keyboard Acknowledge Bit
IMASKK - Keyboard Interrupt Mask Bit
MODEK - Keyboard Triggering Sensitivity Bit
KBIE4, .., KBIE0 - Keyboard Interrupt Enable Bits
20
Układ czasowy A
21
Rejestry układu czasowego A
22
Przetwornik A/C
23
ADC Status and Control Register (ADSCR)
COCO - Conversions Complete Bit
AIEN - ADC Interrupt Enable Bit
ADCO - ADC Continuous Conversion Bit
ADCH[4:0] - ADC Channel Select Bits
24
ADC Input Clock Register (ADICLK)
ADIV2, .., ADIV0 - ADC Clock Prescaler Bits (1, .., 16)
ADICLK - ADC Input Clock Register Bit
25
Opis instrukcji
26
Opis instrukcji
27
Opis instrukcji
28
Opis instrukcji
29
Opis instrukcji
30
Opis instrukcji
31
Opis instrukcji
32
Opis instrukcji
33
Opis instrukcji
34
Opis instrukcji
35
Opis instrukcji
36
Opis instrukcji
37
Opis instrukcji
38
Opis instrukcji
39
Opis instrukcji
40
Opis instrukcji
41
Opis instrukcji
42
Moduł komunikacji szeregowej (SCI)
43
Rejestry modułu komunikacji szeregowej
44
Nadajnik
45
Odbiornik 1/2
46
Odbiornik 2/2
47
Moduł przerywający
48
Rejestry moduł przerywającego
BRKE - Break Enable Bit
BRKA - Break Active Bit
49
Moduł kontrolujący napięcie zasilające
50
Moduł poprawnej pracy jednostki centralnej
51
Wyświetlacz alfanumeryczny
ze sterownikiem HD44780
Dariusz Chaberski
Schemat blokowy
2
Schemat blokowy
3
Sterowanie matrycą LCD
4
Regulacja kontrastu
5
4 bitowa transmisja danych i rozkazów
6
Komendy
RS
R/W
DB7
DB6
DB5
DB4
DB4
DB2
DB1
DB0
lp
czas wykonania
0
0
0
0
0
0
0
0
0
1
1
-
0
0
0
0
0
0
0
0
1
-
2
1.52 ms
0
0
0
0
0
0
0
1
I/D
S
3
37 µs
0
0
0
0
0
0
1
D
C
B
4
37 µs
0
0
0
0
0
1
S/C
R/L
-
-
5
37 µs
0
0
0
0
1
DL
N
F
-
-
6
37 µs
0
0
0
1
ACG
ACG
ACG
ACG
ACG
ACG
7
37 µs
0
0
1
ADD
ADD
ADD
ADD
ADD
ADD
ADD
8
37 µs
0
1
BF
AC
AC
AC
AC
AC
AC
AC
9
0 µs
1
0
D7
D6
D5
D4
D3
D2
D1
D0
10
37 µs
1
1
D7
D6
D5
D4
D3
D2
D1
D0
11
37 µs
1 - czyszczenie wyświetlacza, adres DDRAM wyzerowany 2 - adres DDRAM wyzerowany, zawartość
DDRAM bez zmian, 3 - I/D kierunek przesuwania kursora, S - przesuwanie obrazu wyświetlacza, 4 - D -
włączenie/wyłączenie wyświetlacza, C - kursora, B - miganie kursora, 5 - S/C - przesuń kursor lub obraz
bez zmiany zawartośći DDRAM, R/L - prawo/lewo, 6 - DL - długośc danych 4/8 bitów, N - liczba linii,
F - czcionka, 7 - ustaw adres CGRAM, 8 - ustaw adres DDRAM, 9 - odczytaj flagę zajętości BF i adres
licznika, 10 - zapisz daną, 11 - czytaj daną
7
Asembler 8051 - wysyłanie instrukcji (RS=0)
§ RS - P2.3, D4-D7 - P2.4 - P2.7, E - P3.2,
DINS:
MOV TMP1,A
ANL A,#0F0H; CZTERY BARDZIEJ ZNACZĄCE BITY ROZKAZU
MOV P2,A
MOV DPP,A; WYSYŁAMY DO WYŚWIETLACZA
SETB P3.2 ; USTAWIAMY E;
CLR P3.2 ; ZERUJEMY E - STROBE
MOV A,TMP1
SWAP A
ANL A,#0F0H; CZTERY MNIEJ ZNACZĄCE BITY ROZKAZU
MOV P2,A
MOV DPP,A
SETB P3.2; E
CLR P3.2; E
RET
8
Asembler 8051 - wysyłanie danej (RS=1)
§ RS - P2.3, D4-D7 - P2.4 - P2.7, E - P3.2,
DCHAR:
MOV TMP1,A
ANL A,#0F0H; CZTERY BARDZIEJ ZNACZĄCE BITY ZNAKU
SETB ACC.3 ; RS = 1 - ZNAK
MOV P2,A
MOV DPP,A ; WYSYŁAMY DO WYŚWIETLACZA
SETB P3.2 ; USTAWIAMY E- STROBE
CLR P3.2 ; ZERUJEMY E - STROBE
MOV A,TMP1
SWAP A
ANL A,#0F0H
SETB ACC.3 ; RS
MOV P2,A
MOV DPP,A
SETB P3.2 ; E
CLR P3.2 ; E
RET
9
Asembler 8051 - inicjalizacja
MOV A,#28H ; USTAWIAMY WYŚWIETLACZ
LCALL DINS ; INSTRUKCJA 6
MOV A,#010H ; POTRZEBUJEMY OPÓNIENIA 40 MIKROSEKUND,
DDEL1:
DEC A ; CZYLI OKOŁO 37 CYKLI, DLA PEWNOŚCI WYKONUJEMY
JNZ DDEL1 ; ICH (1+2)*15=45
MOV A,#6H
LCALL DINS ; INSTRUKCJA 3
MOV A,#010H ; POTRZEBUJEMY OPÓNIENIA 40 MIKROSEKUND,
DDEL2:
DEC A ; CZYLI OKOŁO 37 CYKLI, DLA PEWNOŚCI WYKONUJEMY
JNZ DDEL2 ; ICH (1+2)*15=45
MOV A,#1
LCALL DINS ; INSTRUKCJA 1
10
Język C - architektura AVR
§ PORTC5-PORTC2: DB7-DB4, PORTD6: E, PORTD5 R/W, PORTD4 RS
#include <avr/io.h>
#include <util/delay.h>
void lcd e/rw/rs(unsigned char tmp){
if(tmp!=0)
PORTD=PORTD|(1<<6/5/4);
else
PORTD=PORTD&~(1<<6/5/4);
}
...
void lcd data(unsigned char data){
PORTC=(PORTC&0xc3)|((data&0x0f)<<2);
}
11
Język C - architektura AVR
§ funkcja wysyłająca komendę
void lcd send cmd(unsigned char cmd){
lcd rs(0);
lcd rw(0);
lcd e(0);
lcd e(1);
lcd data(cmd>>4);
lcd e(0);
lcd e(1);
lcd data(cmd&0x0f);
lcd e(0);
}
12
Język C - architektura AVR
§ inicjalizacja
lcd rw(0);
lcd rs(0);
lcd e(0);
lcd data(0);
DDRD=DDRD|0x70; DDRC=DDRC|0x3c;
lcd rw(0);
lcd e(0);
lcd e(1);
lcd data(2);
lcd e(0);
delay us(38);
lcd send cmd(0x28);
delay us(38);
lcd send cmd(0x0f);
delay us(38);
lcd send cmd(0x06);
delay us(38);
lcd send cmd(0x01);
delay ms(1.52);
13
Język C - architektura AVR
§ wyświetlanie napisów
char znaki[]={"Mikroprocesory"};
unsigned char i=0;
while(znaki[i]!=0){
lcd send data(znaki[i]);
i++;
}
14
Układ wejścia wyjścia 8255
Dariusz Chaberski
Schemat blokowy
2
Podstawowe operacje
§ Intel 82C55 - podstawowe operacje
3
Słowo kontrolne - D7=1, (ustawienie trybu pracy portów)
4
Słowo kontrolne - D7=1, (ustawianie/resetowanie bitów portu C)
5
Słowo kontrolne - D7=1, tryb 0(konfiguracja wejścia wyjścia)
6
Tryb 0 - wejście
7
Tryb 0 - wyjście
8
Tryb 1 - transfer danych z wyzwalaniem i potwierdzeniem
(wejście)
9
Tryb 1 - transfer danych z wyzwalaniem i potwierdzeniem
(wejście)
10
Tryb 1 - transfer danych z wyzwalaniem i potwierdzeniem
(wyjście)
11
Tryb 1 - transfer danych z wyzwalaniem i potwierdzeniem
(wyjście)
12
Tryb 2 - dwukierunkowy tryb z wyzwalaniem i potwierdzeniem
13
Tryb 2 - dwukierunkowy tryb z wyzwalaniem i potwierdzeniem
14
Aplikacja - port równoległy LPT
15
Programowalny kontroler
przerwan 8259
Dariusz Chaberski
Schemat blokowy
PIC (Programmable Interrupt Controller)
2
Podłączenie do systemu mikroprocesorowego
3
Kaskadowe podłączenie kontrolerów przerwań
4
Tryb zgodności 8080/8085
§ pierwszy bajt
§ drugi bajt
§ trzeci bajt
5
Tryb zgodności 8086
§ wektor przerwań
6
Programowanie
§ Initialization Command Words (ICWs) ICW1, .., ICW4
+ A0 = 0 and D4 = 1 - rozpoczęcie sekwencji inicjującej
§ Operation Command Words (OCWs) OCW1, ..., OCW3
7
ICW1
8
ICW2
9
ICW3
10
ICW4
11
Algorytm zapisu słów ICWs
12
Adresowanie słów OCW
13
OCW1
14
OCW2
15
OCW3
16
Automatyczna rotacja priorytetów przerwań
przed
po
17
Diagram ilustrujący obsługę przerwań w trybach 80(80/86)
18
Kontroler DMA 8237
Dariusz Chaberski
Schemat blokowy
2
Połączenie kaskadowe
3
Interfejs z systemem komputerowym
4
Dostępne rejestry
5
Command Register
6
Priorytety kanałów DMA
§ stały
§ zmienny
7
Mode Register
8
Request Register
9
Mask Register (set/reset)
adres 0xXXXA
10
Mask Register (write)
adres 0xXXXF
11
Dostęp do rejestrów
12
Dodatkowe rozkazy programowe
13
Status Register
14
Kody komend (kanały 0 i 1)
15
Kody komend (kanały 2 i 3)
16
Zapis do rejestrów konfiguracyjnych
17
Przesłanie pamięć pamięć
18
Przesłanie w obrębie bloku pamięci
19
Układ czasowy 8254
Dariusz Chaberski
Schemat blokowy
2
Schemat blokowy licznika
3
Podłączenie do systemu mikroprocesorowego
4
Słowo kontrolne
5
Format komendy zatrzaskiwania licznika
6
Format komendy READ-BACK
7
Dostęp do rejestrów
8
Przykład - tryb 0
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
9
Przykład - tryb 0
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
10
Przykład - tryb 0
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
11
Przykład - tryb 1
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
12
Przykład - tryb 1
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
13
Przykład - tryb 1
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
14
Przykład - tryb 2
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
15
Przykład - tryb 2
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
16
Przykład - tryb 2
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
17
Przykład - tryb 3
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
18
Przykład - tryb 3
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
19
Przykład - tryb 3
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
20
Przykład - tryb 4
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
21
Przykład - tryb 4
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
22
Przykład - tryb 4
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
23
Przykład - tryb 5
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
24
Przykład - tryb 5
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
25
Przykład - tryb 5
zliczanie binarne (nie BCD)
możliwość czytania pisania LS
Byte
26
Procesory sygnałowe ADSP21
Dariusz Chaberski
Procesory sygnałowe
§ DSP (ang. Digital Signal Processor) - przetwarzanie sygnałów analogowych lub cyfrowych w czasie
rzeczywistym
§ zastosowanie
+ przetwarzanie sygnałów akustycznych
+ przetwarzanie obrazów
+ modulacja, demodulacja - modemy, telefony komórkowe
§ różnice pomiędzy procesorem sygnałowym a mikroprocesorem
+ operacja mnożenia wraz z akumulacją wykonywana jest w jednym cyklu
+ specjalne tryby adresowania pamięci (pamięć dwuportowa)
+ sprawna realizacja pętli
§ podział
+ stałoprzecinkowe
+ zmiennoprzecinkowe
+ 16, 32, 64 bitowe
2
Ewolucja
3
Przykład wykorzystania DSP
4
Próbkowanie i kwantyzacja
5
Zjawisko aliasingu - sygnał
6
Zjawisko aliasingu - widmo
7
Filtry analogowe, filtr cyfrowy - porównanie
FIR (ang. Finite Impulse Response)
8
Filtry cyfrowe - implementacja filtru 4 punktowego/odczepowego
(ang. 4-Tap)
9
Filtry cyfrowe - odpowiedź na skok jednostkowy filtru 4
punktowego
10
Filtry cyfrowe - odpowiedź na zaszumiony impuls prostokątny
(a), (b) uśrednianie 11 punktowe, (c) 51 punktowe
11
Filtry cyfrowe - przykładowe charakterystyki częstotliwościowe
filtrów cyfrowych
12
Filtry cyfrowe - użycie bufora cyklicznego
13
Filtry cyfrowe - algorytm filtru 4 punktowego
1. pobierz próbkę z przetwornika A/C (przerwania)
2. umieść próbkę w buforze cyklicznym
3. uaktualnij wskaźnik bufora cyklicznego próbek
4. wyzeruj akumulator
5. pętla sprzętowa (jeden cykl zegara) (ang. Zero Overhead Looping)
(a) pobierz h() z bufora cyklicznego współczynników
(b) uaktualnij wskaźnik bufora cyklicznego współczynników h()
(c) pobierz próbkę x() z bufora cyklicznego próbek
(d) uaktualnij wskaźnik bufora cyklicznego próbek
(e) pomnóż współczynnik h() przez próbkę x()
(f) wynik h()×x() dodaj do akumulatora
(g) idź do punktu 6 jeśli wykonane zostały 4 kroki, w przeciwnym wypadku do punktu (a)
6. umieść przetworzoną próbkę (akumulator) w rejestrze wejściowym przetwornika C/A
7. idź do punktu 1
14
Filtry cyfrowe - program filtru 4 punktowego
;MX0, MY0 - pierwsza dana x() (pamięć danych)
;i pierwszy współczynnik h() (pamięć programu)
;DM - Data Memory, PM - Program Memory, I0, I4 - wskaźniki buforów cyklicznych
fir: MR=0, MX0=DM(I0,M1), MY0=PM(I4,M5);
;CNTR - licznik sprzętowy
CNTR = N-1;
;CE - C ounter Expired
DO convolution UNTIL CE;
;SS - pierwszy i drugi operand są liczbami ze znakiem
;RND - zaokrąglij rezultat
convolution: MR=MR+MX0*MY0(SS), MX0=DM(I0,M1), MY0=PM(I4,M5);
MR=MR+MX0*MY0(RND);
;MV - (ang. MAC Overflow), bit ustawiony w przypadku przepełnienia
;32 najmłodszych bitów MR, MR jest rejestrem 40 bitowym
IF MV SAT MR;
;RTS - (ang. Return from Subroutine)
RTS;
15
Procesor sygnałowy rodziny ADSP-21XX - architektura jądra
procesora
16
Procesor sygnałowy rodziny ADSP-21XX - architektura jądra
procesora
§ magistrale
+ PMA - Program Memory Address,
+ DMA - Data Memory Address,
+ PMD - Program Memory Data,
+ DMD - Data Memory Data
§ jednostki obliczeniowe
+ ALU - Arithmetic Logic Unit
3 operacje arytmetyczne i logiczne
+ MAC - Multiply Accumulator
3 jedno cyklowe instrukcje mnożenia, mnożenia z dodawaniem, mnożenia z odejmowaniem
3 40 bitowy acumulator z zabezpieczeniem na przepełnienie
+ Shifter - rejestr przesuwny
3 normalizacja (konwersja liczb stałoprzecinkowych na zmiennoprzecinkowe)
3 denormalizacja
3 przesunięcia arytmetyczne i logiczne
17
Procesor sygnałowy rodziny ADSP-21XX - architektura jądra
procesora
§ DAG - generator adresu danych (ang. Data Address Generator)
+ sprzętowe adresowanie modulo
+ jednoczesne zarządzanie czterema wskaźnikami na każdy DAG
+ sprzętowa implementacja bufora cyklicznego
+ możliwość pobrania dwóch operandów jednocześnie
§ Program Sequencer - układ sekwencjonowania programu
+ generowanie adresu kolejnych instrukcji
+ stos sprzętowy
+ obsługa przerwań
+ jednocyklowa obsługa instrukcji rozgałęziających (218x)
18
Procesor sygnałowy rodziny ADSP-218X - architektura procesora
19
Procesor sygnałowy rodziny ADSP-2116X (SIMD) - architektura
jądra procesora
20
Procesor sygnałowy rodziny ADSP-21XX - peryferia
(podłączenie przetwornika A/C)
21
Procesor sygnałowy rodziny ADSP-21XX - peryferia
(podłączenie przetwornika C/A)
22
Procesor sygnałowy rodziny ADSP-21XX - peryferia (odczyt
pamięci)
23
Procesor sygnałowy rodziny ADSP-21XX - peryferia (zapis
pamięci)
24
Procesor sygnałowy rodziny ADSP-2189X - podłączenie pamięci
zewnętrznej
25
Klawiatura
Dariusz Chaberski
Klawiatura cztero - klawiszowa
B
0
B
1
B
2
B
3
P
1
P
2
P
3
P
0
Vcc
CLK
2
Klawiatura matrycowa - szesnasto klawiszowa
P
1
P
2
P
3
P
4
P
5
P
9
P
6
P
7
P
8
P
10
P
11
P
12
P
13
P
14
P
15
P
16
B
0
B
1
B
2
B
3
B
4
B
5
B
6
B
7
3
Obsługa klawiatury 4 przyciskowej (asembler 8051)
§
;P1.0 - ESC, P1.1 - NEXT
;P1.2 - PREV, P1.3 - ENTER
;A - KOD ODCZYTANEGO KLAWISZA
;PRSD - USTAWIANY, GDY WCIŚNIĘTY JAKIŚ PRZYCISK
ISPRSD:
CLR PRSD
CLR A
JNB P1.0,PRSDTK ; ESC
INC A
JNB P1.1,PRSDTK ; NEXT
INC A
JNB P1.2,PRSDTK ; PREV
INC A
JB P1.3,NOPRSD ; ENTER
PRSDTK:
SETB PRSD ; BYŁ WCIŚNIĘTY JAKIŚ PRZYCISK
NOPRSD:
RET ; ŻADEN PRZYCISK NIE BYŁ WCIŚNIĘTY
4
Czytanie przycisków - język C (architektura AVR)
§
KEY1, KEY2 - PORTD3, PORTD4
LED1, LED2 - PORTD5, PORTD6
(K - port, A - VCC)
#include<avr/io.h>
int main(void){
DDRD|=1<<5 | 1<<6;
while(1){
if((PIND&(1<<4)))
PORTD|=1<<6;
else
PORTD&=~(1<<6);
if((PIND&(1<<3)))
PORTD|=1<<5;
else
PORTD&=~(1<<5);
}
return 0;
}
5
Klawiatura IBM PC (AT)
§ Złącza
6
Klawiatura IBM PC (AT)
§ klawiatura -> komputer
§ komputer -> klawiatura
7
Klawiatura matrycowa (AVR)
#include<avr/io.h>
#include<avr/delay.h>
int main(void){
DDRB=0x0f; //klawiatura
DDRA=0xff; //diody
DDRD=0xff; //macierz diod
unsigned char ki; //wejście klawiatury matrycowej
unsigned char ko=0x01; //wyjście klawiatury matrycowej
unsigned char a,b; //tymczasowe zmienne dla zakodowanych ko i ki
char k; //sprawdza czy przycisk został wcisnięty pierwszy raz
unsigned char key, last=0x10; //poprzednie znaki
unsigned char tab[16]; //tablica perzechowująca 16 niezależnych liczników
unsigned char ledc=1, ledr; //zmienne określające stan macierzy diod
for(k=0; k<16; k++) //zerowanie 16 niezależnych liczników
tab[k]=0;
k=0; //żaden przycisk nie był wciśnięty
8
while(1){
PORTB=~ko;
if(ko!=0x08) ko<<=1;
else ko=0x01;
ki=PINB&0xf0;
if(ki!=0xf0){
if(k>1) k=1;
a=ki==0x70?3:ki==0xb0?2:ki==0xd0?1:0;
b=ko==0x08?3:ko==0x04?2:ko==0x02?1:0;
if(key==((a<<2)|b) && k==0){
k=1;
if(key==last) tab[key]++;
last=key;
PORTA=(tab[key]<<4)|(a<<2)|b;
}
key=(a<<2)|b;
delay us(10);
} else if(k>0){
k++;
if(k==5) k=0;
}
9
switch(ledc){
case 0x01:
ledr=(0x01&tab[0])|((0x01&tab[1])<<1)|((0x01&tab[2])<<2)|((0x01&tab[3])<<3);
break;
case 0x02:
ledr=(0x01&tab[4])|((0x01&tab[5])<<1)|((0x01&tab[6])<<2)|((0x01&tab[7])<<3);
break;
case 0x04:
ledr=(0x01&tab[8])|((0x01&tab[9])<<1)|((0x01&tab[10])<<2)|((0x01&tab[11])<<3);
break;
case 0x08:
ledr=(0x01&tab[12])|((0x01&tab[13])<<1)|((0x01&tab[14])<<2)|((0x01&tab[15])<<3);
break;
}
PORTD=((~ledc)<<4)|ledr;
if(ledc==0x08) ledc=0x01;
else ledc<<=1;
}
return 0;}
10
Procesor Z80
Dariusz Chaberski
Schemat blokowy
2
Rejestry
IX, IY - dwa niezależne rejestry używane przy adresowaniu indeksowym (przechowują adresy)
I - 8 bardziej znaczących bitów adresu podprogramu obsługi przerwania, urządzenie przerywające
dostarcza 8 mniej znaczących bitów podczas obsługi przerwania
R - rejestr wykorzystywany przy odświeżaniu pamięci dynamicznych, przechowuje 8 najmniej znaczących
bitów adresu
3
Wyprowadzenia
M1 - pobranie kodu rozkazu
4
Mikroprocesor Z80
§ cykl maszynowy rozkazu
5
Pobranie kodu rozkazu
6
Zapis i odczyt pamięci
7
Zapis i odczyt portów wejścia wyjścia
8
Cykl zwalniania magistral z potwierdzeniem
9
Cykl obsługi przerwania maskowalnego z potwierdzeniem - INT
(ang. Interrupt)
10
Cykl obsługi przerwania niemaskowalnego - NMI (ang.
Non-Maskable Interrupt)
11
Obsługa instrukcji HALT
12
Przykładowy system komputerowy
13
Podłączenie pamięci
14
Rejestr znaczników
N - używane jest przez instrukcję DAA (ang. Decimal Adjust Accumulator) w celu rozróżnienia
instrukcji SUB i ADD. Po wykonaniu dodawania N=0, po wykonaniu odejmowania N=1.
15
Mikrokomputer ZXSpectrum (3.5 MHz, 48 kB, 256x192@4)
16
Wnętrze
17
Magistrale systemowe
Dariusz Chaberski
Magistrale systemowe
§ ISA (ang. Industry Standard Architecture)
+ rodzaje
3 8 bitów - komputery klasy IBM XT
3 16 bitów - komputery klasy IBM AT
2
Magistrale systemowe
§ ISA - patametry
+ 8 bitowa
3 szerokość szyny - 8 bitów
· ilość kontaktów 62
· napięcia zasilające - +5 V, -5 V, +12 V, -12 V
· częstotliwość pracy 4.77 MHz (1 MB/s)
3 16 bitowa
· kompatybilna z magistralną ISA 8 bitową
· szerokość szyny 16 bitów
· ilość kontaktów 98
· napięcia zasilające - +5 V, -5 V, +12 V, -12 V
· częstotliwość pracy 8.33 MHz (2 MB/s)
3
Magistrale systemowe
§ magistrala ISA na tle magistrali PCI
4
Magistrale systemowe
§ przykład karty rozszerzeń wykorzystującej magistarlę ISA 16-to bitową
5
Magistrale systemowe
§ EISA (Extended ISA) - charakterystyka
+ zaprojektowana dla 32 bitowych komputerów 386 (DX)
+ prędkość tarnsmisji do 33 MB/s
+ częstotliwość pracy taka jak ISA (8.33 MHz, kompatybilność)
+ szerokość magistrali danych 32 bity
+ obsługa standardu Plug & Play
6
ISA - PNP
7
Magistrale systemowe
§ EISA - złącze
8
Magistrale systemowe
§ EISA - złącze
9
Magistrale systemowe
§ VESA (ang. Video Electronics Standards Association) Local Bus, rok 1992
+ 32 bitowa szyna danych
+ rozszerzenie magistrali ISA w postaci dodatkowego złącza
+ główne zastosowanie karty graficzne i kontrolery wejścia/wyjścia
+ częstotliwość pracy równa jest częstotliwości pracy procesora (wada)
10
Magistrale systemowe
§ VESA - dodatkowe złącze
11
Magistrale systemowe
§ VESA - widok złącza
12
Magistrale systemowe
§ VESA - karta graficzna wykorzystująca złącze VESA
13
Magistrale systemowe
§ PCI (ang. Peripheral Component Interconnect)
+ PCI 2.0 - rok 1993, 32 bity, 33 MHz, 133 MB/s, 5 V (12 V, -12 V, -5 V)
+ PCI 2.1 - rok 1994, 64 bity, 66 MHz, 533 MB/s, 5 V (12 V, -12 V, -5 V)
+ PCI 2.2 - rok 1999, 64 bity, 66 MHz, 533 MB/s, 5/3.3 V (12 V, -12 V, -5/3.3 V)
+ PCI 2.2 - rok 1999, 64 bity, 66 MHz, 533 MB/s, 3.3 V (12 V, -12 V, -3.3 V)
14
Magistrale systemowe
§ złącza magistrali PCI
15
Magistrale systemowe
§ sygnały magistrali PCI
16
Magistrale systemowe
§ przykład operacji odczytu na magistrali PCI
17
Komendy magistrali
18
Przestrzeń konfiguracyjna
19
Magistrale systemowe
§ AGP (ang. Accelerated/Advanced Graphics Port)
+ zoptymalizowana magistrala PCI zaprojektowana do przesyłania dużych ilości danych pomiędzy
pamięcią komputera a pamięcią karty graficznej
+ z punktu widzenia programu dodatkowa magistrala PCI
+ rodzaje
3 AGP 1x - 32 bity, 66 MHz, 266 MB/s, 5/3.3 V
3 AGP 2x - 32 bity, 66 MHz, 533 MB/s, 5/3.3 V, (podwójna przepływność - dwa przesłania
na okres zegara taktującego)
3 AGP 4x - 32 bity, 66 MHz, 1066 MB/s, 1.5 V
3 AGP 8x - 32 bity, 66 MHz, 2133 MB/s, 0.8 V
20
Magistrale systemowe
§ PCI-X (ang. PCI eXtended)
+ rozszerzenie magistrali PCI o dodatkowe złącze
+ magistrala 64 bitowa
+ rodzaje
3 PCI-X 1.0 - rok 1999, 64 bity, 133 MHz, 1066 MB/s, 3.3 V
3 PCI-X 2.0 - rok 2002, 64 bity, 533 MHz, 4.26 GB/s, 3.3/1.5 V
3 PCI-X 3.0 - rok 2003, 64 bity, 1066 MHz, 7.95 GB/s, 3.3/1.5 V
21
Magistrale systemowe
§ magistrale (od góry) AGP, PCI, PCI-X
22
PCI-Express - 3GIO (ang. 3rd Generation I/O)
§ magistrala szeregowa
§ cel: zastąpić PCI oraz AGP
§ każde urządzenie jest podłączone bezpośrednio do kontrolera - urządzenia nie współdzielą zasobów
(pinów)
§ częstotliwośc pracy 2.5 GHz
§ możliwość przesyłania równolegle kilkoma kanałami dla zwiększenia przepustowości
§ przepustowość 250 MB/s (1 kanał), ..., (32 kanały - 8 GB/s)
§ transmisja full-duplex
23
PCI-Express - koncepcja skalowalności
§ PCI-Express x1 - 18 wyprowadzeń, ..., x16 - 82 wyprowadzenia
24
Pojedyncze połączenie LVDS
25
Wyprowadzenia 1x
SMCLK, SMDAT - System Management Bus
26
Wyprowadzenia 4x
27
Protokół transmisyjny
1-byte Start-of-Frame
2-byte Sequence Number
16 or 20-byte Header
0 to 4096-byte Data field
0 to 4-byte ECRC field - End-to-end Cyclic Redundancy Check (32 bity)
4-byte LCRC - Local Cyclic Redundancy Check (32 bity)
1-byte End-of Frame
28
Warstwy
29
Physical Layer
30
Zrównoleglenie przesyłania danych
31
Idea
32
Procesory rodziny x86
Dariusz Chaberski
8086 - obudowa
2
Struktura scalona
§ 29000 tranzystorów
§ technologia 3 µm NMOS
§ pojedyncze zasilanie 5V
3
Charakteryka
§ produkowany od 1978
§ magistrala adresowa - 20 bitów (1 MB)
§ magistrala danych - 16 bitów
§ wielkość instrukcji - od 1 do 6 bajtów
§ częstotliwośc pracy - od 5 MHz (IBM PC
4.77 MHz) do 10 MHz (tryb TURBO)
§ praca w trybie rzeczywistym
4
Schemat blokowy
5
Rejestry (1/2)
§ AX AH:AL - akumulator
§ BX BH:BL - rejestr podstawowy
§ CX CH:CL - rejestr zliczający
§ DX DH:DL - rejestr danych
§ F - rejestr znaczników
§ SP - wskaźnik stosu
§ BP - wskaźnik bazy
§ SI - rejestr indeksowy źródła
§ DI - rejestr indeksowy przeznaczenia
6
Rejestry (2/2)
§ CS - rejestr segmentowy programu
§ DS - rejestr segmentowy danych
§ SS -rejestr segmentowy stosu
§ ES - dodatkowy rejestr segmentowy
§ PC - licznik rozkazów
§ IR - rejestr instrukcji
7
Rejestr znaczników F
§ operacje arytmetyczno logiczne
+ b0 - C - wskaźnik przeniesienia
+ b2 - P - wskaźnik parzystości
+ b4 - AC - wskaźnik przeniesienia pomocniczego
+ b6 - Z - wskaźnik zera
+ b7 - S - wskaźnik znaku
+ b11 - V - wskaźnik nadmiaru
§ znaczniki kontrolne
+ b8 - T - wskaźnik pracy krokowej
+ b9 - I - wskaźnik globalnego blokowania przerwań
+ b10 - D - wskaźnik kierunku automodyfikacji adresu operandu (przesłania blokowe)
8
Przykładowe rozkazy
§ MOV DL, 10101000B - przesłanie 8 bitowe
§ MOV AX, CX - przesłanie 16 bitowe
§ PUSH CS (brak wersji 8 bitowej)
§ POP DI (brak wersji 8 bitowej)
§ IN AX, DX - przesłanie 16 bitowe
§ IN AL, DX - przesłanie 8 bitowe
§ OUT DX, AX/AL
§ ADD DI, CX
§ ADC CL, CH
§ SUB AL, 10H
§ SBB AX, DI (ang. with borrow)
§ MOV [DI], AX
9
Obliczanie adresu fizycznego
X - 20-to bitowy adres fizyczny
S - 16-to bitowy rejestr segmentu
A - 16-to bitowy adres
X = A + 16 ∗ S
10
8086 - segmentacja pamięci
11
Mapa pamięci
12
Mikroprocesor 80286
13
Struktura scalona
§ 134000 tranzystorów
§ technologia 1.5 µm CMOS
§ pojedyncze zasilanie 5V
14
Charakterystyka
§ produkowany od 1982
§ magistrala adresowa - 24 bity (16 MB pa-
mięci fizycznej)
§ magistrala danych - 16 bitów
§ częstotliwośc pracy - od 6 MHz do 25 MHz
§ praca w trybie rzeczywistym
§ praca w trybie chronionym
15
Schemat blokowy
16
Rejestry
17
Rejestry flagowy i statusowy
18
Poziomy uprzywilejowania
19
Tryb chroniony - adresowanie
20
Deskryptor segmentu kodu i danych (S=1)
21
Atrybuty deskryptora segmentu kodu i danych
22
Deskryptor segmentu systemowego
23
Atrybuty deskryptora segmentu systemowego
24
Deskryptor bramki
25
Atrybuty deskryptora bramki
26
Rejestry deskryptorów
27
Selektory segmentów
28
Lokalna i globalna tablica deskryptorów
29
Tablica deskryptorów przerwań
30
Segment stanu zadania i rejestr TSS
31
Schemat użycia deskryptora
32
80386
§ obudowa
DX
SX
33
80386 - struktura scalona
§ 275000 tranzystorów
§ technologia 1(1.5) µm CMOS
§ pojedyncze zasilanie 5V
34
80386 - charakterystyka
§ dostępny od 1985
§ magistrala adresowa 32 bitowa (4 GB pamięci fizycznej)
§ magistrala danych 32 bitowa (SX zewnętrzna 16 bitowa)
§ częstotliwość pracy od 16 MHz do 33 MHz
§ praca w trybie rzeczywistym
§ praca w trybie chronionym (pamięć wirtualna 64 TB)
§ praca w trybie wirtualnym (V86 - ang. Virtual 86)
35
80386 - tryb Virtual-86
§ umożliwia uruchamianie jednocześnie wielu programów przeznaczonych dla trybu rzeczywistego na
jednym procesorze
§ pamięć 1MB
+ bezpośredni dostęp do rejestrów procesora
+ dostęp do portów procesora oraz obsługa przerwań są sankcjonowane przez system system ope-
racyjny
§ przykład
+ Windows - uruchamianie programów DOSowych
+ Linux - DOSemu
36
80386 - rejestry
37
80386 - przykładowe rozkazy
§ MOV DL, 10101000B - przesłanie 8 bitowe
§ MOV AX, CX - przesłanie 16 bitowe
§ MOV EAX, 0FF00DA5AH - przesłanie 32 bitowe
§ PUSH EAX (brak wersji 8 bitowej)
§ POP EDX (brak wersji 8 bitowej)
§ IN AL/AX/EAX, DX
§ OUT DX, EAX/AX/AL
§ ADD AL/AX/EAX, CL/CX/ECX
38
Deskryptor
39
Atrybuty deskryptora
40
80486
41
80486 - struktura
§ 1200000 tranzystorów
(SX 1185000 tranzystorów)
§ technologia 0.8(1) µm CMOS
§ pojedyncze zasilanie 5V
42
80486DX(SX) - charakterystyka
§ dostępny od 1989 (SX od 1991)
§ magistrala adresowa 32 bitowa (4 GB pamięci fizycznej)
§ magistrala danych 32 bitowa
§ częstotliwość pracy od 25 MHz do 50 MHz (SX od 16 MHz do 33 MHz)
§ praca w trybie rzeczywistym
§ praca w trybie chronionym (pamięć wirtualna 64 TB)
§ praca w trybie wirtualnym (V86 - ang. Virtual 86)
§ pamięć cache pierwszego poziomu (4 kB)
§ pamięć cache drugiego poziomu na płycie głównej do 256 kB (zwykle 0 kB)
§ wbudowany koprocesor arytmetyczny (SX brak koprocesora)
43
80486DX2 - charakterystyka
§ dostępny od 1992
§ częstotliwość pracy od 50 MHz do 80 MHz
§ jądro mikroprocesora pracuje z zegarem dwukrotnie szybszym niż zegar systemowy
§ technologia - 0.8 µm (Intel), 0.5 µm (AMD), 0.65 µm (Cyrix)
1 200 000 tranzystorów (Intel)
§ napięcie zasilające (I/O) - 5 V (Intel), 3.3/5 V (AMD i Cyrix)
§ napięcie zasilające (Core) - 5 V (Intel), 3.3 V (AMD i Cyrix)
§ pamięć cache pierwszego poziomu (8 kB)
§ pamięć cache drugiego poziomu na płycie głównej do 256 kB (zwykle 64 kB)
44
80486DX4 - charakterystyka
§ dostępny od 1994
§ częstotliwość pracy od 75 MHz do 120 MHz
§ jądro mikroprocesora pracuje z zegarem trzykrotnie szybszym niż zegar systemowy
§ technologia - 0.6 µm (Intel), 0.5 µm (AMD), 0.65 µm (Cyrix) CMOS
1 600 000 tranzystorów (Intel)
§ napięcie zasilające (I/O) - 3.3 V (Intel), 3.3/5 V (AMD i Cyrix)
§ napięcie zasilające (Core) - 3.3 V
§ pamięć cache pierwszego poziomu 8 kB (AMD, Cyrix), 16 kB (Intel)
§ pamięć cache drugiego poziomu na płycie głównej do 256 kB (zwykle 64 kB)
45
5x86 (AMD) - 80486DX5 - charakterystyka
§ dostępny od 1995
§ częstotliwość pracy 133 MHz
§ jądro mikroprocesora pracuje z zegarem czterokrotnie szybszym niż zegar systemowy
§ technologia - 0.35 µm CMOS
§ napięcie zasilające (I/O) - 3.45 V
§ napięcie zasilające (Core) - 3.45 V
§ pamięć cache pierwszego poziomu 16 kB
§ pamięć cache drugiego poziomu na płycie głównej do 256 kB
46
5x86 (Cyrix) - M1sc - charakterystyka
§ dostępny od 1996
§ częstotliwość pracy od 100 MHz do 120 MHz
§ jądro mikroprocesora pracuje z zegarem dwu lub trzykrotnie szybszym niż zegar systemowy
§ technologia - 0.65 µm CMOS
2 000 000 tranzystorów
§ napięcie zasilające (I/O) - 3.45 V
§ napięcie zasilające (Core) - 3.45 V
§ pamięć cache pierwszego poziomu 16 kB
§ pamięć cache drugiego poziomu na płycie głównej do 256 kB
47
Intel Pentium - charakterystyka
§ produkowany w latach od 1993 do 1996
§ częstotliwość pracy od 60 MHz do 200 MHz
§ jądro mikroprocesora pracuje z zegarem jedno, dwu lub trzykrotnie szybszym niż zegar systemowy
§ technologia - od 0.8 µm do 0.35 µm Bipolar CMOS
3 (1/3)00 000 tranzystorów
§ napięcie zasilające (I/O) - 3.3 V
§ napięcie zasilające (Core) - 3.3 V
§ pamięć cache pierwszego poziomu 8 kB dla danych, 8 kB dla kodu
§ pamięć cache drugiego poziomu na płycie głównej do 512 kB (zwykle 256 kB)
48
Intel Pentium MMX - charakterystyka
§ produkowany od roku 1997
§ częstotliwość pracy od 166 MHz do 233 MHz
§ jądro mikroprocesora pracuje z zegarem 2.5, 3, 3.5 krotnie szybszym niż zegar systemowy
§ technologia - 0.35 µm CMOS
4 500 000 tranzystorów
§ napięcie zasilające (I/O) - 3.3 V
§ napięcie zasilające (Core) - 2.8 V
§ pamięć cache pierwszego poziomu 16 kB dla danych, 16 kB dla kodu
§ pamięć cache drugiego poziomu na płycie głównej do 512 kB (zwykle 256 kB)
§ rozszerzenie technologii
MMX
49
MMX
§ rozszerzenie MMX (ang. MultiMedia eXtensions / Matrix Math eXtensions)
+ zestaw 57 instrukcji typu SIMD (ang. Single Instruction Multiple Data)
+ osiem 64 bitowych rejestrów (mm0, ... mm7)
3 zajmują wspólny obszar z rejestrami koprocesora arytmetycznego (mantysa)
· równoczesne obliczenia MMX i zmiennoprzecinkowe są niemożliwe
3 dostępne rejestry 8 × 8 bitów, 4 × 16 bitów, 2 × 32 bity
+ operacje na wektorach danych - istnieje mozliwość przy użyciu jednego rozkazu wykonania
jednocześnie 8/4/2 operacji na 8/4/2 32/16/8 bitowych rejestrach
50
MMX
§ rejestry i operacje
§ nowe typy danych
+ Packed byte - osiem bajtów
+ Packed word - cztery 16 bitowe słowa
+ Packed doubleword - dwa 32 bitowe słowa
+ Quadword - jedno 64 bitowe słowo
51
Cyrix 6x86(L) - charakterystyka
§ produkowany od roku 1995
§ częstotliwość pracy od 100 MHz do 150 MHz
§ jądro mikroprocesora pracuje z zegarem dwu krotnie szybszym niż zegar systemowy
§ technologia - od 0.6 µm do 0.35 µm (L) CMOS
3 000 000 tranzystorów
§ napięcie zasilające (I/O) - 3.3 V
§ napięcie zasilające (Core) - 3.3 V
§ pamięć cache pierwszego poziomu 16 kB
§ pamięć cache drugiego poziomu na płycie głównej do 512 kB (zwykle 256 kB)
§ brak technologii MMX
52
AMD K5 - 5k86 - charakterystyka
§ produkowany od roku 1995
§ częstotliwość pracy od 75 MHz do 116 MHz
§ jądro mikroprocesora pracuje z zegarem 1.5, 1.75 krotnie szybszym niż zegar systemowy
§ technologia - 0.35 µm (L) CMOS
4 300 000 tranzystorów
§ napięcie zasilające (I/O) - 3.52 V
§ napięcie zasilające (Core) - 3.52 V
§ pamięć cache pierwszego poziomu 8 kB dane, 16 kB program
§ pamięć cache drugiego poziomu na płycie głównej do 512 kB (zwykle 256 kB)
§ brak technologii MMX
53
Intel Pentium Pro - charakterystyka
§ produkowany 1995/97
§ częstotliwość pracy od 150 MHz do 200 MHz
§ jądro mikroprocesora pracuje z zegarem 2.5 i 3 krotnie szybszym niż zegar systemowy
§ technologia - od 0.6 µm do 0.35 µm CMOS
5 500 000 tranzystorów
§ napięcie zasilające (I/O) - 3.3 V
§ napięcie zasilające (Core) - 3.3 V
§ pamięć cache pierwszego poziomu 8 kB dla danych, 8 kB dla kodu
§ wbudowana pamięć cache drugiego poziomu od 256 kB do 1 MB
§ rozszerzenie technologii MMX
54
Intel Pentium II
§ Obudowa (gniazdo slot 1)
55
Intel Pentium II
§ (Klamath, Tonga Mobile, Deschutes, Dixon) - charakterystyka
+ produkowany od 1997
+ częstotliwość pracy od 233 MHz do 333 MHz, (do 450 MHz - Deschutes - 1998 rok, do 400 MHz
- Dixon - 1999 rok)
+ jądro mikroprocesora pracuje z zegarem od 3.5 do 5.5 krotnie szybszym niż zegar systemowy
+ technologia - od 0.35 µm do 0.25 µm (PII Tonga Mobile, Deschutes) CMOS
7 500 000 tranzystorów
+ napięcie zasilające (I/O) - 3.3 V
+ napięcie zasilające (Core) - 2.8 V (2.0 V Deschutes) (1.6 V PII Tonga Mobile)
+ pamięć cache pierwszego poziomu 16 kB dla danych, 16 kB dla kodu
+ wbudowana pamięć cache drugiego poziomu 512 kB
+ rozszerzenie technologii MMX
56
AMD K6 - charakterystyka
§ produkowany 1997/98
§ częstotliwość pracy od 166 MHz do 266 MHz
§ jądro mikroprocesora pracuje z zegarem od 2.5 do 4.0 krotnie szybszym niż zegar systemowy
§ technologia - od 0.35 µm do 0.25 µm CMOS
8 800 000 tranzystorów
§ napięcie zasilające (I/O) - 3.3 V
§ napięcie zasilające (Core) - 3.2 V (2.2 V)
§ pamięć cache pierwszego poziomu 32 kB dla danych, 32 kB dla kodu
§ pamięć cache drugiego poziomu na płycie głównej od 256 kB do 1 MB
§ rozszerzenie technologii MMX
57
AMD K6-2 - charakterystyka
§ częstotliwość pracy od 266 MHz do 550 MHz
§ jądro mikroprocesora pracuje z zegarem od 2.5 do 5.0 krotnie szybszym niż zegar systemowy
§ technologia - 0.25 µm CMOS
§ napięcie zasilające (I/O) - 3.1 - 3.5 V
§ napięcie zasilające (Core) - 2.2 - 2.9 V
§ pamięć cache pierwszego poziomu 64 kB
§ pamięć cache drugiego poziomu na płycie głównej
§
3DNow
- rozszerzenie w stosunku do technologii MMX - 21 nowych instrukcji zmiennoprzecinkowych
typu SIMD
58
Cyrix 6x86MX (M2) - charakterystyka
§ produkowany 1997/98
§ częstotliwość pracy od 166 MHz do 233 MHz
§ jądro mikroprocesora pracuje z zegarem 2.5 krotnie szybszym niż zegar systemowy
§ technologia - od 0.35 µm CMOS
6 000 000 tranzystorów
§ napięcie zasilające (I/O) - 3.3 V
§ napięcie zasilające (Core) - 2.9 V
§ pamięć cache pierwszego poziomu 64 kB ogólnego przeznaczenia, 256 B dla kodu
§ pamięć cache drugiego poziomu na płycie głównej od 256 kB do 512 kB
§ rozszerzenie technologii MMX
59
Intel Celeron
§ produkowany od 1998
§ zupełny brak pamięci podręcznej drugiego poziomu (jądro Covington)
128 kB (jądro Mendocino)
Slot 1
Socket 370
60
Rodzaje podstawek do procesorów Pentium II i Celeron
Socket 370
Socket 478
61
Intel Pentium III
§
SSE
(ang. Streaming SIMD Extensions) - zestaw nowych instrukcji MMX do operacji na liczbach
zmienno-przecinkowych pojedynczej precyzji (IEEE 754, C float, 32 bity)
+ Rejestry SSE (xmm0, ... xmm7)
3 128 bitów (16 bajtów)
3 zupełnie niezależne od rejestrów koprocesora arytmetycznego
§ PIII Katmai - rok 1999, 0.25µm, 2 V, 450 - 600 MHz, Slot 1, L2=512 kB
§ PIII Coppermine(-T) - rok 1999 (2001 -T), 0.18 µm, 1.6 - 1.75 V, 550 - 1133 MHz, Slot 1 oraz Socket
370, L2=256 kB
§ PIII Tualatin - 0.13 µm = 130 nm, 2001 rok, 1.45 - 1.475 V, 1000 - 1400 MHz, Socket 370, L2:
256/512 kB
62
Intel Pentium IV
obudowa pod socket LGA775
struktura:
od 180 nm do 65 nm CMOS
63
Intel Pentium IV - inne stosowane podstawki
Socket LGA775
Socket 423
64
Intel Pentium IV - charakterystyka
§
SSE2
- 144 nowe rozkazy
+ operacje na 128 bitowych rejestrach
3 pojedyncza precyzja - 32 bity
· podwójna precyzja - 64 bity
§ Willamette - rok 2000, 1.4 - 2 GHz, 180 nm CMOS, Socket 423 i Socket 478
§ NorthWood - rok 2001, 2 - 3.4 GHz, 1.7 V, 130 nm CMOS, 55 000 000 tranzystorów, L2: 512 kB,
Socket 478/423, 82 W,
§ Mobile P4 - 70 W
§ Mobile P4M - rok 2003, 35 W
§ Gallatin - rok 2003, Socket 478 i LGA 775, pamięć CACHE trzeciego poziomu L3, 3.46 - 3.73 GHz
§ Presscott (2M) - rok 2004 (rok 2005 2M), 3.8 - 4 GHz, 90 nm, Socket LGA775, wielowątkowość (ang.
Hyper-Threading), L2: 2 MB (2M),
SSE3
(13 nowych rozkazów - arytmetyka zespolona, konwerscje
liczb zmiennopozycyjnych na całkowite)
§ Cedar Mill - rok 2006 - 65 nm, 86 W, 3 - 3.6 GHz
65
Pentium D4
§ zawiera dwa P4 Cedar Mill
§ rok 2005
§ technologia od 90 nm do 65 nm
§ socket LGA775
§ częstotliwośc pracy od 2.66 do 3.73 GHz
§ Smithfield - 2.8 - 3.2 GHz, L2: 2 × 1 MB, 90 nm, (HT tylko w Extreme Edition)
§ Presler - 2.8 - 3.73 GHz, L2; 2 × 2 MB, 65 nm, 130 W,
66
Intel Core Duo
§ Dothan i Yonah - powrót do architektury P3 rozwijanej jako Pentium M
§ technologia 65 nm
§ wielordzeniowość
§ socket LGA775
67
Intel Core 2 Duo
§ rozwinięcie architektury Core Duo
§ Wide Dynamic Execution
wykonanie w jednym cyklu jak największej liczby instrukcji
§ Intelligent Power Capability
mniejsza konsumpcja energii elektrycznej (w momencie braku obciążenia procesora mnożnik często-
tliwości wynosi 6 bez zmiany FSB)
§ Advanced Smart Cache
dynamiczny podział pamięci Cache L2
§ Smart Memory Access
usprawnienie dostępu do pamięci operacyjnej
§ Advanced Digital Media Boost
przyspieszenie wykonywania operacji SSE/2/3
68
Wide Dynamic Execution
69
Intelligent Power Capability
§ Ultra Fine Grained Power Control
70
Advanced Smart Cache
71
Smart Memory Access
72
Advanced Digital Media Boost
73
Mikroprocesory
do systemów wbudowanych
Dariusz Chaberski
Mikroprocesory Micro-Blaze
§ charakterystyka
+ opis w języku HDL (ang. Hardware Description Language) - najczęściej jest to VHDL (ang.
Very High Speed Circuit Integrated HDL)
+ możliwość doboru szerokości magistral, rejestrów pod konkretne zastosowanie
+ możliwość implementacji dodatkowego sprzętu pod konkretne zastosowanie (liczniki, PWM,
generatory itp)
+ implementacja do układu programowalnego FPGA
+ narzędzie wspomagające EDK (ang. Embeded Development Kit) firmy Xilinx
3 aplikacja - język C
3 opis mikroprocesora - język VHDL
2
Mikroprocesory Micro-Blaze
§ struktura FPGA całość
3
Mikroprocesory Micro-Blaze
§ struktura FPGA - wybrany fragment - 4 x CLB (ang. Configurable Logic Block)
4
Mikroprocesory Micro-Blaze
§ struktura FPGA - struktura bloku CLB - widoczne dwa przerzutniki (lewa strona) oraz dwie tablice
LUT (ang. Look-Up-Table)
5
Mikroprocesory Micro-Blaze
§ zestaw laboratoryjny z układem Virtex 5
6
Mikroprocesory Micro-Blaze
§ diagram blokowy jednostki wykonawczej
7
Mikroprocesory Micro-Blaze
§ EDK - widok aplikacji
8
Mikroprocesory Micro-Blaze
§ EDK - widok aplikacji
9
Mikroprocesory Micro-Blaze
§ EDK - widok aplikacji
10
Mikroprocesory Micro-Blaze
§ EDK - widok aplikacji
11
Mikroprocesory Micro-Blaze
§ EDK - widok aplikacji
12
Mikroprocesory Micro-Blaze
§ EDK - widok aplikacji
13
Mikroprocesory Micro-Blaze
§ EDK - widok aplikacji
14
Mikroprocesory Micro-Blaze
§ EDK - widok aplikacji
15
Mikroprocesory Micro-Blaze
§ EDK - widok aplikacji
16
Mikroprocesory Micro-Blaze
§ EDK - widok aplikacji
17
Mikroprocesory PowerPC
§ PowerPC (ang. Power Performance Computing) - architektura procesora opracowana przez konsor-
cjum Apple, IBM, Motorola (AIM)
+ kolejność bajtowa: Big Endian - najbardziej znaczący bajt umieszczany jest w pamięci jako
pierwszy - pod najniższym adresem (procesory Intel x86 sosują odwrotną kolejność bajtową -
Little Endian), w architekturze PowerPC istnieje możliwość zmiany tej kolejności
3 457885 = 0x6FC9D (Big Endian, 32 bitowe rejestry)
adres(przesunięcie)
0
1
2
3
zawartość
0x00
0x06
0xFC
0x9d
+ RISC, 64 bity
+ superskalarność - możliwość wykonania kilku instrukcji w jednym cyklu zegara taktującego -
zwielokrotnienie jednostek wykonawczych
§ zastosowanie
+ systemy wbudowane - Xilinx (Virtex 4 FPGA)
+ komputery osobiste Apple - Macintosh
+ serwery IBM
18
Mikroprocesory PowerPC
§ krótka historia
+ 1974 rok - IBM 801, 15 MIPSów, architektura RISC (John Cocke)
+ 1990 rok - architektura POWER (ang. Performance Optimization With Enhanced RISC)
3 procesory superskalarne były wieloukładowe (duży pobór energii)
+ 1994 rok - PowerPC początkowo przyjęty z wielkim entuzjazmem, Apple, IBM, Motorola do-
starczają systemy mikroprocesorowe zbudowane z wykorzytaniem tej architektury
+ powstały systemy operacyjne działające na komputerach wykorzystujących procesory z archi-
tekturą PowerPC
3 Microsoft, Windows NT - działał na serwerach produkowanych przez Motorolę
3 Sun Microsystems, Solaris OS
3 IBM przeportował system AIX (ang. Advanced Interactive eXecutive) - system uniksowy
na PowerPC i planował opracować OS2 (ang. Operating System/2)
+ brak aplikacji na komputery z procesorem PowerPC
+ 2004 rok - Motorola zaprzestała produkcji układów mikroprocesorowych, IBM przeprojektował
architekturę PowerPC tak, aby spełnić wymogi producentów konsol do gier
+ 2006 rok - Apple produkuje komputery wykorzystujące procesory marki Intel
+ obecnie - PowerPC ma znaczenie w systemach wbudowanych, konsolach do gier itp.
19
Mikroprocesory PowerPC
§ produkty firm IBM (rok 1992) i Motorola (rok 1994)
IBM PowerPC 601
częstotliwość pracy:
- 80 MHz wewnętrzna
- 40 MHz zewnętrzna
magistrala danych: 64 bity
magistrala adresowa: 32 bity
technologia: CMOS 0.6 µm, 3.6 V
liczba tranzystorów: 2 800 000
cache pierwszego poziomu: 32kB
Motorola PowerPC604:
częstotliwość pracy:
- 180 MHz wewnętrzna
- 33/40/50 MHz zewnętrzna
magistrala danych: 64 bity
magistrala adresowa: 32 bity
technologia: CMOS 0.5 µm, 3.3 V
liczba tranzystorów: 3 600 000
cache pierwszego poziomu: 32kB
20
Mikroprocesory PowerPC
§ systemy wbudowane - Xilinx - zestaw laboratoryjny z układem Virtex 4, który zawiera mikroprocesor
PowerPC
21
Komputery klasy PC
Dariusz Chaberski
Architektura komputerów klasy PC
§ Start systemu adres 0xFFFF:0x0000
§ POST (ang. Power On Self Test)
+ sprawdzenie zmiennej BIOSu 0x0040:0x0072 - 0x1234 - zimny start (RESET, włączenie zasila-
nia), gorący start (CTRL ALT DEL)
+ zimny start
3 test procesora (typowe instrukcje, rejestry)
3 test pamięci ROM (sprawdzana jest suma kontrolna i porównywana z sumą znajdującą się
na końcu pamięci)
3 test pamięci RAM (zapisywanie i odczytywanie wartości testowych 0xAF, 0x05, itp)
3 test specjalizowanych układów scalonych (kontrolery przerwań, bezpośredniego dostępu do
pamięci, układy czasowe, wejścia wyjścia itp)
3 test klawiatury, karty graficznej, stacji dysków, dysków twardych itp.
3 test rozszerzonej pamięci ROM
· początek bloku pamięci 0x55:0xAA:N, N=[0,255] - liczba 512 bajtowych bloków
· wykonanie podprogramów tam zamieszczonych
· ustawienie wektorów przerwań
· inicjalizacja kart rozszerzeń
2
Architektura komputerów klasy PC
§ POST (ang. Power On Self Test)
+ zimny start
3 pod adres 0000:7C00 ładowana jest zawartość sektora 1 ścieżki 0 głowicy 0 (MBR) pierw-
szej/aktywnej stacji dysków
3 wykonanie programu pod adresem 0000:7C00
+ gorący start - zimny start oprócz testu pamięci RAM
§ Mapa pamięci (tryb rzeczywisty 1 MB)
+ F000:0000-FFFF:000F - BIOS
+ A000:0000-F000:0000 - pamięć ROM kart rozszerzeń (karta graficzna VGA)
+ 0060:0000-A000-0000 - pamięć operaracyjna RAM
+ 0040:0000-0060:0000 - zmienne BIOSu
+ 0000:0000-0040:0000 - wektory przerwań
3
Architektura komputerów klasy PC
§ podłączenie peryferiów
4
Architektura komputerów klasy PC
§ podłączenie peryferiów
5
Architektura komputerów klasy PC
§ podłączenie peryferiów
ICH - I/O Controller Hub
MCH - Memory Controller Hub
6
Architektura komputerów klasy PC
§ technologia mobilna Intel Centrino (ang. Centrino Mobile Technology)
+ sprzęt i oprogramowanie umożliwiające łączność bezprzewodową
+ procesor, zestaw układów scalonych (chipset), karta do transmisji bezprzewodowej
+ dwukrotnie mniejszy pobór energii
+ Carmel - rok 2003, Pentium M (Banias, Dothan), FSB 400 MHz, Chipset 855 (Odem, Monthara),
WLAN PRO/Wireless 2100/2200
+ Sonoma - rok 2005, Pentium M (Dothan), FSB 533 MHz, Chipset Intel Mobile 915 (Alviso)
(Intel High Definition Audio, DDR2, PCI Express, SATA), WLAN Intel PRO/Wireless 2200
lub 2915 (Calexico2)
+ Napa - rok 2006, Intel Core Solo/Duo (Yonah), Chipset Intel Mobile 945(G/P)M Express (Ca-
listoga), WLAN Intel PRO/Wireless 3945 (Golan),
+ Santa Rosa - rok 2007, Intel Core Duo (Meron), FDB 800 MHz, Chipset Intel Mobile 965
Express (Crestline), Intel PRO/Wireless 4965AGN (Kedron), EFI (ang. Extensive Firmware
Interface) mający zastąpić BIOS
7
Architektura komputerów klasy PC
§ Intel Centrino - zestaw chipsetów (NB, SB), WLAN i procesor
8
Pamięci komputerów osobistych
§ pamięć RAM
+ SIMM, SIPP - 30 końcówek (ang. Single In-line Memory Module, Single In-line Pin Package)
256 kB, 1 MB, 8 bitów danych (+1 bit parzystości)
+ SIMM - 72 końcówki (PS/2)
4 MB, 16MB, 32 bity (+4 bity parzystości)
9
Pamięci komputerów osobistych
§ pamięć RAM
+ DIMM, 168 końcówek (ang. Dual In-line Memory Module)
64 bity,
SDRAM - Synchronous Dynamic Random Access Memory,
+ DIMM, 184 końcówki, 2.5 V
DDRAM - Double Data Rate SRAM
SPD - Serial Presence Detect
Dane przesyłane są na zbocze narastające i opadające zegara
10
Pamięci komputerów osobistych
§ pamięć RAM
+ DDR2, 200 końcówek, 1.8 V
+ przykładowe oznaczenia (przepustowość):
3 PC2-3200 to: 64 bity * 2 * 200MHz = 3200MB/s
3 PC2-4200 to: 64 bity * 2 * 266MHz = 4200MB/s
3 PC2-5200 to: 64 bity * 2 * 333MHz = 5200MB/s
3 PC2-6400 to: 64 bity * 2 * 400MHz = 6400MB/s
3 PC2-8000 to: 64 bity * 2 * 500MHz = 8000MB/s
11
Pamięci komputerów osobistych
§ pamięć RAM
+ DDR3, 1.5 V (2007 Intel, 2008 AMD)
+ przykładowe oznaczenia (przepustowość):
3 PC3-6400 o przepustowości 6,4 Gb/s, pracujące z prędkością 800 MHz
3 PC3-8500 o przepustowości 8,53 Gb/s, pracujące z prędkością 1066 MHz
3 PC3-10600 o przepustowości 10,67 Gb/s, pracujące z prędkością 1333 MHz
12
Narzędzia programistyczne
Dariusz Chaberski
Etapy powstawania/budowy programu
§ algorytm
§ kodowanie - język programowania
§ kompilacja, asemblacja - plik obiektowy
§ linkowanie - dołączenie bibliotek (statyczne lub dynamiczne)
§ programowanie - załadowanie programu do pamięci komputera lub do pamięci mikrokontrolera
§ symulowanie - debugowanie - usuwanie błędów
2
Narzędzia programistyczne
§ AVR Studio
+ zastosowanie:
3 tworzenie projektów w asemblerze na mikrokontrolery rodziny AVR
3 symulowanie projektów - debugowanie
3 programowanie mikroprocesorów
+ składniki
3 asembler, linker, loader
3 IDE - zintegrowane środowisko projektowe (ang. Integrated Development Environment)
3 symulator programowy i współpraca z symulatorem sprzętowym
§ WinAVR - kompilator GCC - GNU Compiler Collection, GNU Not Unix
+ rozszerza mozliwość AVR Studio o możliwość opisu w języku C/C++
3
Narzędzia programistyczne
§ AVR Studio - parametry projektu
4
Narzędzia programistyczne
§ AVR Studio - parametry debugera
5
Narzędzia programistyczne
§ AVR Studio - puste okno aplikacji
6
Narzędzia programistyczne
§ AVR Studio - przykładowy kod, budowanie aplikacji (kompilacja i linkowanie)
7
Narzędzia programistyczne
§ AVR Studio - budowanie aplikacji
+ kompilacja
3 utworzenie pliku Makefile (polecenie make)
3 plik obiektowy main.o
+ budowanie aplikacji - linkowanie
3 aktualizacja pliku Makefile
3 utworzenie pliku wykonywalnego przerwania.elf (ang. Executable and Linking Format)
+ utworzenie pliku w formacie Intel HEX przerwania.hex do zaprogramowania mikrokontrolera
8
Narzędzia programistyczne
§ AVR Studio - uruchomienie symulacji
9
Narzędzia programistyczne
§ AVR Studio - okno rejestrów procesora
10
Narzędzia programistyczne
§ AVR Studio - wykonanie pojedynczego kroku programu
11
Narzędzia programistyczne
§ AVR Studio - ustawienia projektu (Makefile)
12
Narzędzia programistyczne
§ AVR Studio - ustawienia projektu (Makefile) - wykorzystywane biblioteki
13
Narzędzia programistyczne
§ AVR Studio - okno obserwowanych zmiennych
14
Narzędzia programistyczne
§ AVR Studio - okno disasemblera
15
Narzędzia programistyczne
§ PonyProg - narzędzie do programowania mikrokontrolerów, pamięci itp.
16
Narzędzia programistyczne
§ PonyProg - kod programu w postaci szesnastkowej i jego interpretacja ASCII (ang. American Stan-
dard Code for Information Interchange)
17
Narzędzia programistyczne
§ PonyProg - ustawienia interfejsu
18
Programowanie mikrokontrolerów w języku C
§ operacje bitowe
+ A|=1<<n - ustawienie bitu n w słowie A (licząc od 0)
+ A|=1<<m | 1<<k - ustawienie bitów m i k w słowie A (nawiasy nie są potrzebne)
+ A&=~(1<<n) - wyzerowanie bitu n w słowie A
+ A&=~(1<<n | 1<<m | 2<<k) - wyzerowanie bitów n, m, k+1 w słowie A
+ A^=1<<n - negacja bitu n w słowie A
+ A^=1<<n | 4<<k - negacja bitów n i k+2 w słowie A
+ A=(A & 0xE3) | (B>>2 & 0x1C) - kopiowanie bitów B6,B5,B4 na bity A4,A3,A2
+ if(A & 1<<3)
B|=1<<4;
else
B&=~(1<<4); - kopiowanie B4=A3;
19
Programowanie mikrokontrolerów w języku C
§ obsługa przerwań AVR - konfiguracja
§ SREG|=1<<7; - Status Register, I - Global Interrupt Enable
§ GICR|=1<<INT1; - General Interrupt Control Register, INT1 - External Interrupt 1
20
Programowanie mikrokontrolerów w języku C
§ obsługa przerwań AVR - konfiguracja
§ TIMSK|=1<<TOIE0 | 1<<OCIE0; - TIMSK - Timer Interrupt Mask Register,
TOIE0 - Timer/Counter 0 Overflow Interrupt Enable
OCIE0 - Timer/Counter 0 Output Compare Match Interrupt Enable
§ TCCR0|=1<<CS00; - TCCR0 - Timer Counter Control Register, CS00 - Clock Select Bit 0
21
Programowanie mikrokontrolerów w języku C
§ obsługa przerwań AVR - funkcje/podprogramy obsługi przerwań
+ przerwanie zewnętrzne:
#include <avr/interrupt.h>
#include <avr/io.h>
ISR(INT1 vect){
...
}
...
int main(void){
...
}
+ przerwanie pochodzące od układu czasowego:
3 TIMER0 OVF vect - przepełnienie licznika
3 TIMER0 COMP vect - licznik równy rejestrowi
3
vector default - kiedy zostanie wywołane przerwanie i żaden podprogram obsługi prze-
rwania nie jest zainstalowany
22
Narzędzia programistyczne
§ Microsoft Visual Studio - jednorodne i uniwersalne środowisko programistyczne dla opisu oprogra-
mowania w różnych językach programowania - charakterystyka (1/2)
+ Microsoft Visual C# - język obiektowy, kompilacja do języka pośredniego CIL (ang. Common
Intermediate Language), który wykonywany był w środowisku uruchomieniowym .NET, Mono
lub DotGNU,
3 .NET - platforma programistyczna zawierająca środowisko uruchomieniowe oraz biblioteki
klas (Microsoft), środowisko uruchomieniowe (.Net Framework) dostępne za darmo
3 Mono - projekt typu FLOSS (ang. Free Libre/Open Source Software) (Novell) - narzę-
dzia kompatybilne z narzędziami dostarczanymi przez Microsoft (.NET), współpracuje z
systemami Linux, Unix, Mac OS, MS Windows
3 DotGNU - inicjatywa podobna do Mono
+ Microsoft Visual C++ (MSVC)
+ Microsoft Visual Basic
23
Narzędzia programistyczne
§ Microsoft Visual Studio - charakterystyka (2/2)
+ Microsoft Visual Java++/Java# - możliwość użycia kodu bajtowego Javy - biblioteka, oraz
kodu źródłowego Javy
+ Microsoft Visual FoxPro - proceduralny i obiektowy język programowania
3 składnia bazuje na składni dBase, przykład:
USE empl
REPLACE ALL salary WITH salary * 1.1 FOR supervises > 0
LIST ALL fname, lname, salary TO PRINT
+ Microsoft Visual InterDev - tworzenie aplikacji www (www - World Wide
Web
) używających
technologii ASP (ang. Active Server Pages) - strony www generowane dynamicznie (Dynamic
HTML)
24
Narzędzia programistyczne
§ Microsoft Visual Studio - rys historyczny
+ 1997 rok - pierwsza wersja Visual Studio 1.0/5.0 (Visual Basic 5.0, Visual C++ 5.0, Visual
J++ 1.1, Visual FoxPro 5.0, Visual InterDev 1.0) - do tej chwili wszystkie te narzędzia używały
swoich własnych środowisk
+ 1998 rok - Visual Studio 6.0 - wszystkie składniki otrzymały wersję 6.0
+ 2002 rok - Visual Studio .NET/7.0 - wprowadzenie platformy .NET oraz języka pośredniego
CIL, wprowadzenie języka C# (podobny w składni do języka Java, przeznaczony na platformę
.NET), dostosowanie języka Visual Basic do platformy .NET, programy napisane w języku C++
mogły być kompilowane albo bezpośrednio do kodu maszynowego, albo do kodu CIL
+ 2003 rok - Visual Studio .NET 2003/7.1 - uaktualnienie .NET Framework do wersji 1.1
+ 2005 rok - Visual Studio 2005/8.0 - uaktualnienie .Net Framework do wersji 2.0, możliwość
uzyskiwania kodu dla procesorów 64 bitowych
25
Narzędzia programistyczne
§ Analog Devices Visual DSP++
+ zastosowanie:
3 programowanie procesorów DSP w języku niskiego i wysokiego poziomu
3 symulacja działania programu (deb(u/a)gowanie) - wiele procesorów jednocześnie w poje-
dynczej sesji
3 możliwość przeglądania tablic lub wektorów danych w sposób graficzny
+ składniki:
3 IDDE - zintegrowane środowisko projektowo uruchomieniowe (ang. Integrated Development
and Debugging Environment)
3 kompilator C/C++, asembler, linker, loader
3 loader, symulator, emulator
26
Narzędzia programistyczne
§ Visual DSP++ - uruchomiona aplikacja
27
Narzędzia programistyczne
§ Visual DSP++ - wizualizacja tablic danych
28
Narzędzia programistyczne
§ Visual DSP++ - ustawianie sesji (wielo/dwu)procesorowej
29
Narzędzia programistyczne
§ Visual DSP++ - symulacja systemu dwuprocesorowego
30
Narzędzia programistyczne
§ Keil Cx51 Development Tools - µVision IDE
+ zastosowanie:
3 tworzenie projektów w język C i asemblerze na mikrokontrolery wykorzystujące jądro 8051
3 symulowanie projektów - debugowanie
3 programowanie mikroprocesorów
+ składniki
3 kompilator c, asembler, linker, loader
3 IDE - zintegrowane środowisko projektowe (ang. Integrated Development Environment)
3 symulator programowy i współpraca z symulatorem sprzętowym
31
Narzędzia programistyczne
§ Keil Cx51 Development Tools - µVision IDE
32
Narzędzia programistyczne
§ µVision IDE - tworzenie projektu - wybór mikroprocesora
33
Narzędzia programistyczne
§ µVision IDE - edycja peryferiów (1/2)
34
Narzędzia programistyczne
§ µVision IDE - edycja peryferiów (2/2)
35
Narzędzia programistyczne
§ µVision IDE - czasy wykonywania instrukcji
36
Narzędzia programistyczne
§ µVision IDE - debugowanie - symulacja programowa i sprzętowa
37
Narzędzia programistyczne
§ µVision IDE - ustawianie parametrów symulacji sprzętowej
38
Narzędzia programistyczne
§ Keil - programator i symulator - ULINK
39
Narzędzia programistyczne
§ Keil - programator i symulator - ULINK - USB-JTAG
40
Emulatory sprzętowe
§ Emulator - urządzenie, którego zadaniem jest naśladowanie (emulowanie) zachowania pojedynczego
urządzenia lub grupy urządzeń
§ ICE - In-Circuit Emulator
41
Emulatory sprzętowe
§ OCD - On-Chip Debugging
JTAG ICE jest podłączony poprzez OCD z procesorem AVR, którego działanie jest obserwowane
42
Emulatory sprzętowe
§ tryby pracy OCD
+ Run Mode - wykonywanie poleceń całkowicie niezależne od JTAG ICE.
Poprzez polling sprawdzany jest warunek wystąpienia zatrzymania programu (BREAK).
+ Stopped Mode - stan po wystąpieniu warunku BREAK.
Praca mikrokontrolera wstrzymana. Możliwy odczyt stanu rejestrów.
Dla OCD interfejsy we/wy kontynuują pracę.
Dla standardowego ICE interfejsy we/wy zawieszają natychmiast pracę.
§ Rodzaje punktów przerywających.
+ programowe - umieszczanie instrukcji BREAK w programie w miejscu, w którym ma zostać
zatrzymany.
Aby praca była kontynuowana OCD musi otrzymać z ICE instukcję START.
+ sprzętowe - wyznaczone rejestry OCD przechowują adresy pamięci programu/danych, przy od-
czycie której wykonywanie programu ma zostać zawieszone
43
Emulatory sprzętowe
§ OCD - ustawianie punktów przerywania wykonywania programu
44
Emulatory sprzętowe
§ OCD - ustawianie punktów przerywania wykonywania programu
(wykorzystanie maskowania)
45
Emulatory sprzętowe
§ OCD - realizacja przerywania programu
46
Emulatory sprzętowe
§ OCD - przykład
47
Emulatory sprzętowe
§ OCD - ustawianie punktów przerywania wykonywania programu
(wykonanie instrukcji warunkowej - rozgałęziającej)
48
Emulatory sprzętowe
§ menu ustawiania parametrów połączenia komputer - JTAG ICE oraz JTAG ICE - OCD
49
Emulatory sprzętowe
§ JTAG ICE - sonda emulatora
50
Emulatory sprzętowe
§ podłączenie emulatora do zestawu laboratoryjnego
51
Technologia MMX
Dariusz Chaberski
Zasoby
2
Rejestry MMX
3
Typy danych
4
Model wykonywania instrukcji SIMD
5
Przekraczanie zakresu
§ Wraparound arithmetic - konieczna kontrola zakresu operandów
operacje ze znakiem (U2)
0x74 (+116) + 0x65 (+101) = 0xd9 (-39)
§ Signed saturation arithmetic
§ Unsigned saturation arithmetic
6
Intrukcje MMX
7
Intrukcje MMX
8
Mapowanie rejestrów MMX
9
Przykłady wykorzystania instrukcji MMX
§ narzędzia
+ fasm - flat assembler
asemblacja, plik obiektowy
fasm mmx01.asm -> mmx01.o
+ gnu gcc
linkowanie, plik wykonywalny
gcc mmx01.o -o mmx01 -> mmx01
10
Program źródłowy
§ eksport oraz import funkcji:
public main
extrn printf
extrn scanf
main:
...
ret
§ scanf:
ccall scanf, sft, sf
sft db ”%x”,0
sf dd 0
§ printf:
mov edi, sf
mov eax, [edi]
...
ccall printf, pft, eax, paddb, ebx, ecx
pft db ”%08x %s %08x = %08x”,0xA,0
paddb db ”PADDB”,0
11
Program źródłowy
§ instrukcje MMX:
+ movd mm1,eax
movd mm2, ebx
paddb mm1,mm2
movd ecx, mm1
+ movd mm1,eax
movd mm2,ebx
pmullw mm1, mm2
movd ecx, mm1
+ mov edi, sfa
movq mm1, [edi]
mov edi, sfb
movq mm2, [edi]
sfa dd 0, 0
12
Program źródłowy
§ printf (64 bity - long long int):
ccall printf, pft, [sfa], [sfa+4], paddd, [sfb], [sfb+4], [sfc], [sfc+4]
pft db ”%016llx %s %016llx = %016llx”, 0xA, 0
sfa dd 0, 0
sfb dd 0, 0
sfc dd 0, 0
paddd db ”PADDD ”,0
§ scanf (64 bity - long long int):
ccall scanf, sft, sfa
sft db ”%llx”, 0
sfa dd 0, 0
§ więcej przykładów w archiwum 24 technologia MMX.zip
13
Koprocesor arytmetyczny x87
Dariusz Chaberski
Rejestry
2
Stos rejestrów danych
3
Przykład obliczeń
4
Słowo statusowe
5
Instrukcje 1/2
6
Instrukcje 2/2
7
Załadowanie rejestru statusowego do rejestru flagowego
8
Słowo kontrolne
9
Kontrola precyzji
10
Słowo znaczników/cech
11
Rejestr rozkazów jednostki zmiennoprzecinkowej
12
Obraz stanu zadania
13
Obraz stanu zadania
14
Obrazy stanu zadania
15
Typy danych
16
Dekompozycja - float
[31][30]..[23][22]..[0]
[22]..[0] - bity ułamkowej części mantysy
[30]..[23] - bity wykładnika
[31] - bit znaku
for(i=0; i<sizeof f; i++)
printf("%s%02x",i==0?"":" - ",
(unsigned int)*((unsigned char *)&f+sizeof (f)-1-i));
printf("\n znak = %d",(*(unsigned int*)&f) >>31);
printf("\n cecha = %d",(((*(unsigned int*)&f) & 0x7f800000)>>23) - 127);
printf("\nmantysa = %lf",1+(double)((*(unsigned int*)&f) & 0x007fffff)/0x00800000);
17
Dekompozycja - double
[63][62]..[52][51]..[0]
[51]..[0] - bity ułamkowej części mantysy
[62]..[52] - bity wykładnika
[63] - bit znaku
for(i=0; i<sizeof d; i++)
printf("%s%02x",i==0?"":" - ",
(unsigned int)*((unsigned char *)&d+sizeof (d)-1-i));
printf("\n znak = %d",(*(unsigned long long int*)&d) >> 63);
printf("\n cecha = %d",((*(unsigned long long int*)&d >>52) & 0x07ff) - 1023);
printf("\nmantysa = %f",1+(double)(*(unsigned long long int*)&d
& 0xfffffffffffffLL)/0x10000000000000LL);
18
Dekompozycja - long double
[79][78]..[64][63][62]..[0]
[0..62] - bity części ułamkowej mantysy
[63] - część całkowita mantysy
[64..78] - bity wykładnika
[79] - bit znaku
for(i=0; i<sizeof d; i++)
printf("%s%02x",i==0?"":" - ",
(unsigned int)*((unsigned char *)&d+sizeof d-1-i));
printf("\n znak = %d",(*((unsigned long int*)&d+2) >> 15)&1);
printf("\n cecha = %d",((*((unsigned long int*)&d+2) >>0) & 0x07fff) - 16383);
printf("\nmantysa = %f",(double)(*(unsigned long long int*)&d )/
0x8000000000000000LL); printf("\n");
19
Wartości specjalne
20
Transfer danych
21
Warunkowy transfer danych
22
Stałe
23
Operacje arytmetyczne
24
Instrukcje porównujące i klasyfikujące
25
Ustawianie znaczników CONDITION
§ STATUS
§ EFLAGS
26
Stałe dla instrukcji warunkowych
27
Instrukcje trygonometryczne
28
Stała
π
29
Instrukcje logarytmiczne, eksponencjalne i skalujące
30
Instrukcje kontrolne
31
Rozszerzenie SSE
Dariusz Chaberski
Zasoby
2
Rejestry
3
Rejestr kontrolno statusowy MXCSR
4
Typ danych
5
Instrukcje przesłań
§ movups xmm0, [ebx]
§ movaps [ebx], xmm1 - adres pamięci musi być podzielny przez 16
§ movlps xmm0, [ebx] - xmm0[1,0]=[ebx]
§ movhps [esi], xmm7 - [esi]=xmm0[3,2]
§ movlhps - [.][.][][]=[][][.][.]
§ movhlps - [][][.][.]=[.][.][][]
§ movmskps eax, xmm0 - kopiuje znaki słów z rejestru xmm0 do rejestru do rejestru ogólnego
§ movss - kopiowanie najmniej znaczącego słowa
6
Operacje arytmetyczne
§ addps, addss
§ subps, subss
§ mulps, mulss
§ divps, divss
§ rcpps, rcpss
§ sqrtps, sqrtss
§ rsqrtps, rsqrtss
§ maxps, maxss
§ minps, minss
7
Operacje logiczne
§ andps
§ andnps
§ orps
§ xorps
8
Operacje porównujące
§ cmpps, cmpss
§ cmp[mnemonik]ps, cmp[mnemonik]ss
§ mnemonik:
+ eq - equal
+ lt - less than
+ le - less than or equal
+ unord - unordered
+ neq - not equal
+ nlt - not less than
+ nle - not less than nor equal
+ ord - ordered
§ comiss, ucomiss - ustawia flagi ZF, CF i PF
9
Instrukcje konwertujące
§ shufps xmm0, xmm1, ????????b - D[][][.][.]=D[?][?][?][?], D[.][.][][]=S[?][?][?][?]
§ unpckhks - D[][.][][.]=D[.][.][][], D[.][][.][]=S[.][.][][]
§ unpcklks - D[][.][][.]=D[][][.][.], D[.][.][][]=S[][][.][.]
§ cvtpi2ps - packed integer 32 -> packed float
§ cvtsi2ss - integer 32 -> float
§ cvtps2pi - packed float -> packed integer 32
§ cvttps2pi - t - obcięcie
§ cvtss2si - float -> integer 32
§ cvttss2si
10
Instrukcje na liczbach całkowitych pakowanych 64 bity
§ pextrw eax, mm0, 1
§ pinsrw mm1, ebx, 2
§ pavgb, pavgw - średnia
§ pmaxub - maksimum unsigned byte
§ pminub - minimum
§ pmaxsw - maksimum signed word
§ pminsw
§ pmulhuw - mnożenie, zachowanie bardziej znaczącego wyniku
§ psadbw - suma wartości bezwzględnych różnic
§ pmovmskb - tworzenie 8-bitowej maski ze znaków packed byte
§ pshufw - analogicznie do shufps tylko dla integer
11
Zarządzanie pamięcią podręczną
§ movntq - zapis qword do pamięci z pominięciem pamięci podręcznej
§ movntps - zapis liczb float do pamięci z pominięciem pamięci podręcznej
§ maskmovq - zapis wybranych bajtów do pamięci z pominięciem pamięci podręcznej
§ prefetcht0/1/2/nta - załadowanie danych z pamięci do pamięci podręcznej poziomu 0, 1, 2
§ sfence - porządkowanie instrukcji zapisujących do pamięci
§ ldmxcsr - odczyt 32 bitów pamięci do rejestru MXCSR
§ stmxcsr - zapis rejestru MXCSR do pamięci
§ fxsave - zapis wszystkich resjestrów SSE (FPU, MXCSR) do pamięci (512 bajtów)
§ fxrstor - odczyt rejstrów SSE z pamięci
12
Rozszerzenie SSE 2
Typy danych
14
Instrukcje konwertujące
15
Rozszerzenie SSE 3
Instrukcja asymetryczna ADDSUBPD
17
Instrukcja horyzontalna HADDPD
18
Operacje bitowe - język C
Dariusz Chaberski
Ustawianie, zerowanie i negowanie bitów
§ A|=1<<n - ustawienie bitu n w słowie A (licząc od 0)
§ A|=1<<m | 1<<k - ustawienie bitów m i k w słowie A (nawiasy nie są potrzebne)
§ A&=~(1<<n) - wyzerowanie bitu n w słowie A
§ A&=~(1<<n | 1<<m | 2<<k) - wyzerowanie bitów n, m, k+1 w słowie A
§ A^=1<<n - negacja bitu n w słowie A
§ A^=1<<n | 4<<k - negacja bitów n i k+2 w słowie A
§ A=(A & 0xE3) | (B>>2 & 0x1C) - kopiowanie bitów B6,B5,B4 na bity A4,A3,A2
§ if(A & 1<<3)
B|=1<<4;
else
B&=~(1<<4); - kopiowanie B4=A3;
2
Pola bitowe
3
Pola bitowe
4
Pola bitowe
5
PCI
Dariusz Chaberski
System z magistralą PCI
2
Wyprowadzenia
3
Komendy
4
Odczyt
5
Zapis
6
Potwierdzenie przerwania
7
Zasilanie
8
Zalecane podłączenie mostka PCI
9
Przesunięcia fazowe zegarów
τ (10 cm) ' 0.5 ns
10
Mostek PCI 9050
Podłączenie do magistrali PCI
12
Pojedynczy cykl zapisu
13
Pojedynczy cykl odczytu
14
Kolejność bajtowa
§ tryb natywny PCI
§ możliwość przełączenia kolejności bajtowej
15
Tryb Big Endian - 32 bity
16
Tryb Big Endian - 16 bitów
17
Tryb Big Endian - 8 bitów
18
Konfiguracja - pamięć EEPROM - mapa
19
Mapa pamięci
20
Mapa pamięci
21
Mapa pamięci
22
Karta pomiarowa - pomiar odcinka czasowego
23
Idea pomiaru odcinka czasowego
T
0
N
0
N
0
− 1
T
P
1
N
1
T
1
N
1
+ 1
P
2
N
2
T
2
N
2
+ 1
N
0
+ 1
P
0
∆t
0
= ∆t
0
,
1
∆t
1
= ∆t
1
,
2
∆
′
t
1
= ∆t
0
,
2
∆
′
t
0
= ∆t
0
,
1
CLOCK
PULSES
TRIGGER
24
System pomiarowy
CLOCK
PULSES
P
a
, P
b
, P
c
, P
d
WLO
rejestr RR
licznik C
rejestr RC
R
a
, R
b
, R
c
, R
d
R
a
0
. . . R
a
26
/
25
R
b
0
. . . R
b
26
/
25
R
c
0
. . . R
c
26
/
25
R
d
0
. . . R
d
26
/
25
τ
0
C
a
0
. . . C
a
26
/
25
C
b
0
. . . C
b
26
/
25
C
c
0
. . . C
c
26
/
25
C
d
0
. . . C
d
26
/
25
C
a
, C
b
, C
c
, C
d
L
P
U
L
S
E
S
1
L
P
U
L
S
E
S
2
G
2
G
1
GC
a
, GC
b
, GC
c
, GC
d
W
a
. . . W
d
EN
PULSENUM
11
4
×
U
2
4
× 2
U
1
P
a
0
. . . P
a
31
/
63
P
b
0
. . . P
b
31
/
63
P
c
0
. . . P
c
31
/
63
P
d
0
. . . P
d
31
/
63
rejestr R
rejestr RWLO
25
Wybór licznik rejestr
N
+ 2
N
N
+ 1
rejestr R
licznik C
rejestr R
licznik C
D
5
. . . D
31
/
63
CLOCK
φ
C
φ
R
φ
C
φ
R
φ
CLOCK
R
i
0
. . . R
i
26
/
25
rejestr R
N
N
+ 1
N
+ 2
t
I N C
t
M O V
C
i
0
. . . C
i
26
/
25
licznik C
26
Poczwórna WLO
τ
4
+ δ
0
τ
2
τ
3
τ
4
τ
5
τ
6
τ
7
τ
+ δ
3
τ
2
+ δ
1
3
4
τ
+ δ
2
τ
1
τ
+ δ
4
τ
+ δ
5
τ
+ δ
6
τ
8
τ
4
n
−
1
τ
4
n
−
2
τ
4
n
−
3
τ
4
n
−
4
τ
4
n
−
5
τ
4
n
−
6
τ
4
n
−
7
τ
4
n
−
8
τ
+ δ
4
n
−2
τ
+ δ
4
n
−3
τ
+ δ
4
n
−4
τ
+ δ
4
n
−5
τ
+ δ
7
τ
+ δ
8
τ
+ δ
9
τ
+ δ
10
τ
+ δ
4
n
−6
τ
+ δ
4
n
−7
τ
+ δ
4
n
−8
τ
+ δ
4
n
−9
CLOCK
27
Blok kompresji danych pomiarowych
32 bitowy
multiplekser
konwerter
kodu
P
i
0
. . . P
i
31
/
63
R
i
0
. . . R
i
26
/
25
C
i
0
. . . C
i
26
/
25
P
i
j
D
i
0
. . . D
i
4
/
5
D
i
5
. . . D
i
31
/
63
28
Zwielokrotnienie przetwarzania
PULSES
t
etap 1
τ
0
τ
1
faza aktywna - etap 1/2
faza oczekiwania
etap 2
strumień 1
strumień 2
strumień 3
strumień 4
29
Pojedynczy blok pamięciowy
MEMB
i
A
A
,
0
. . . A
A
,
8
CNTMEM
i
W
i
H
H
L
WE
A
EN
A
RST
A
D
in
A
,
0
. . . D
in
A
,
31
D
i
0
. . . D
i
31
CLK
A
τ
i
M E M
30
Pamięć pomiarów
D
in
A
,
0
. . . D
in
A
,
7
A
A
,
0
. . . A
A
,
8
W
E
A
E
N
A
C
L
K
A
RAM
0
R
S
T
A
R
S
T
B
C
L
K
B
E
N
B
W
E
B
WE
A
EN
A
CLK
A
RST
A
RAM
1
WE
B
EN
B
CLK
B
RST
B
RAM
2
D
out
A
,
0
. . . D
out
A
,
7
A
B
,
0
. . . A
B
,
8
D
out
B
,
0
. . . D
out
B
,
7
D
in
B
,
0
. . . D
in
B
,
7
D
out
A
,
0
. . . D
out
A
,
7
D
in
A
,
0
. . . D
in
A
,
7
A
A
,
0
. . . A
A
,
8
RAM
3
D
out
A
,
8
. . . D
out
A
,
15
D
in
A
,
8
. . . D
in
A
,
15
D
out
A
,
16
. . . D
out
A
,
23
D
in
A
,
16
. . . D
in
A
,
23
D
out
A
,
24
. . . D
out
A
,
31
D
in
A
,
24
. . . D
in
A
,
31
D
out
B
,
8
. . . D
out
B
,
15
D
in
B
,
8
. . . D
in
B
,
15
D
out
B
,
16
. . . D
out
B
,
23
D
in
B
,
16
. . . D
in
B
,
23
D
in
B
,
24
. . . D
in
B
,
31
D
out
B
,
24
. . . D
out
B
,
31
MEMB
A
B
,
0
. . . A
B
,
8
D
in
B
,
0
. . . D
in
B
,
7
D
out
B
,
0
. . . D
out
B
,
7
31
Rola interfejsu z mostkiem PCI
MEMB
0
MEMB
1
MEMB
2
MEMB
3
interfejs z
mostkiem
PCI
P
U
L
S
E
N
U
M
0
.
.
.
P
U
L
S
E
N
U
M
1
1
RST
B
EN
B
A
B
,
0
. . . A
B
,
8
D
out
B
,
0
. . . D
out
B
,
31
D
in
B
,
0
. . . D
in
B
,
31
D
out
B
,
0
. . . D
out
B
,
31
A
B
,
0
. . . A
B
,
8
D
in
B
,
0
. . . D
in
B
,
31
RST
B
CLK
B
WE
B
CLK
B
WE
B
CLK
B
D
in
B
,
0
. . . D
in
B
,
31
A
B
,
0
. . . A
B
,
8
D
out
B
,
0
. . . D
out
B
,
31
WE
B
EN
B
WE
B
RST
B
CLK
B
EN
B
D
in
B
,
0
. . . D
in
B
,
31
D
out
B
,
0
. . . D
out
B
,
31
A
B
,
0
. . . A
B
,
8
EN
B
RST
B
L
H
L
H
L
H
L
H
R
E
S
E
T
C
L
O
C
K
B
L
K
P
U
L
S
E
S
B
L
K
DB
0
. . . DB
31
AB
0
. . . AB
31
ADS
RD
WR
CS
3
CLKPCI
CLKPCI
IN
CLKPCI
OUT
G
A
T
E
C
N
T
I
N
I
T
I
R
Q
A
L
L
O
W
32
Przebiegi sterujące pracą pamięci
CLKPCI
ADS
WR
RD
WE
B
CLK
B
pasożytniczy odczyt
zapis
odczyt
33
Rozprowadzenie sygnałów
PULSES
U
1
EN
4
×
U
2
EN
PULSENUM
LPULSES
1
τ
0
PULSENUM
0
. . . PULSENUM
11
LPULSES
2
PULSENUM
11
G
1
G
2
FLTR
PPULSES
GATECNT
0
. . . GATECNT
27
GATECNT
27
GATECNT
CLOCK
CLOCKBLK
PCLOCK
GATECNT
INIT
PPPULSES
PULSEBLK
IRQ
IRQALLOW
34
Komunikacja system - użytkownik
RAM
Kolejka serii
pomiarowych
Moduł jądra Linuksa
RAM
REG
REG
Aplikacja
testowa
Aplikacja
klienta
Aplikacja
klienta
Aplikacja
klienta
FPGA
PCI9050
Przestrzeń
użytkownika
Przestrzeń
systemu
Program
serwera
35
VHDL - przykład kodu
36
VHDL - interfejs
37
VHDL - interfejs
38
VHDL - interfejs
39
VHDL - interfejs
40
VHDL - interfejs
41
Sterownik - moduł Linuksa
42
Sterownik - moduł Linuksa
43
Sterownik - moduł Linuksa
44
Sterownik - moduł Linuksa
45
Sterownik - moduł Linuksa
46
Sterownik - moduł Linuksa
47
Sterownik - moduł Linuksa
48
Sterownik - moduł Linuksa
49
Sterownik - moduł Linuksa
50
PCI Express
Dariusz Chaberski
PCI-Express - 3GIO (ang. 3rd Generation I/O)
§ magistrala szeregowa
§ cel: zastąpić PCI oraz AGP
§ każde urządzenie jest podłączone bezpośrednio do kontrolera - urządzenia nie współdzielą zasobów
(pinów)
§ częstotliwośc pracy 2.5 GHz
§ możliwość przesyłania równolegle kilkoma kanałami dla zwiększenia przepustowości
§ przepustowość 250 MB/s (1 kanał), ..., (32 kanały - 8 GB/s)
§ transmisja full-duplex
2
PCI-Express - koncepcja skalowalności
§ PCI-Express x1 - 18 wyprowadzeń, ..., x16 - 82 wyprowadzenia
3
Pojedyncze połączenie LVDS
4
Wzmacniacz różnicowy
5
Wyprowadzenia 1x
SMCLK, SMDAT - System Management Bus
6
Wyprowadzenia 4x
7
Protokół transmisyjny
1-byte Start-of-Frame
2-byte Sequence Number
16 or 20-byte Header
0 to 4096-byte Data field
0 to 4-byte ECRC field - End-to-end Cyclic Redundancy Check (32 bity)
4-byte LCRC - Local Cyclic Redundancy Check (32 bity)
1-byte End-of Frame
8
Warstwy
9
Physical Layer
10
Zrównoleglenie przesyłania danych
11
Zrównoleglenie przesyłania danych
12
Idea
13
PEX 8111
14
Schemat blokowy
15
Podłączenie Forward Bridge
16
Podłączenie Forward Bridge
17
Podłączenie Reverse Bridge
18
Podłączenie Reverse Bridge
19
PEX 8311
20
Podłączenie
21
Tryby pracy magistrali lokalnej
22
Odczyt - tryb magistrali C
23
Odczyt - tryb magistrali J
24
ISA
Dariusz Chaberski
ISA (ang. Industry Standard Architecture)
§ rodzaje
+ 8 bitów - komputery klasy IBM XT
+ 16 bitów - komputery klasy IBM AT
2
Parametry
§ 8 bitowa
+ szerokość szyny - 8 bitów
+ ilość kontaktów 62
+ napięcia zasilające - +5 V, -5 V, +12 V, -12 V
+ częstotliwość pracy 4.77 MHz (1 MB/s)
§ 16 bitowa
+ kompatybilna z magistralną ISA 8 bitową
+ szerokość szyny 16 bitów
+ ilość kontaktów 98
+ napięcia zasilające - +5 V, -5 V, +12 V, -12 V
+ częstotliwość pracy 8.33 MHz (2 MB/s)
3
ISA i PCI - porównanie
4
Przykładowa karta
5
Rejestrator dźwięku
8 bitów, 4 - 22 kHz, mono
DMA, IRQ, ISA
DOS
aplikacja tekstowa, język Turbo Pascal
6
Rozpoczęcie próbkowania ADC
7
Podłączenie przetwornika ADC
8
Bufory i dekodery adresów
9
Przełącznik przerwań
10
Podłączenie przetwornika DAC
11
Układ pomiaru częstotliwości
12
Tor analogowy
13
Informacja o wyborze wejścia
14
15
16
17
18
Tablica próbek - Turbo Pascal
19
Programowanie kontrolera DMA 8237A
20
Programowanie kontrolera DMA 8237A
21
Maskowanie przerwań
22
Funkcje obsługi przerwania
23
Funkcje obsługi przerwania
24
Program główny - inicjalizacja
25
Program główny - pętla
26
Zapis
27
Zapis
28
Zapis
29
01. różnice pomiędzy mikroprocesorem a mikrokontrolerem
02. kaskadowe połaczenie programowalnych kontrolerów przerwań
03. bezpośredni dostęp do pamięci
04. opisać format liczby zmiennoprzecinkowej na podstawie typu float
05. dokonać dekompozycji liczby zmiennoprzecinkowej dla wartości 17.5 (podać znak, cechę oraz
mantysę)
06. 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 (wyraźnie zaznaczyć
kolejnośc bajtową)
07. podać różnice pomiędzy architektura harwardzką oraz Von Neumana
08. podać różnice pomiędzy mikroprocesorami typu RISC oraz CISC
09. podać różnice pomiędzy mikrokontrolerami 8051, 8052 oraz ADuC812
10. opisać architekturę mikrokontrolerów AVR (rejestry, pamięci, porty)
11. opisać architekturę Motorola M68
12. sekwencja startu, stopu w protokole I2C
13. opisać interfejs 1-Wire
14. wyjaśnić ideę sterowania multipleksowego (macierz diod lub klawiszy)
15. podac najważniejsze cechy procesorów sygnałowych
16. dokonać podziału instrukcji mikroprocesora podać przykłady (15 przykładów) dla dowolnie
wybranej architektury
17. co to jest pamięć wirtualna oraz układ zarządzania pamięcią MMU
18. tryb rzeczywisty, tryb chroniony oraz tryb wirtualny V86 procesorów i386 i wyższych
19. co to jest segmentacja pamięci, jaka jest różnica przy stosowaniu rejestrów segmentowych i
indeksowych, podać przykłady
20. ile jest wymaganych bitów adresowych aby zaadresowac 4GB pamięci o organizacji po 4 bajty
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óznica pomiędzy pamięcią statyczna i dynamiczna, co to jest odświeżanie pamięci i
jak mozna je zrealizować na przykładzie Z80
23. podać i krótko opisać rodzaje pamięci
24. co to jest poprawka BCD
25. działania arytmetyczne na liczbach zmiennoprzecinkowych
26. opisać rejestr znaczników
27. co to jest przerwanie, jaka jest różnica pomiędzy przerwaniem maskowalnym i
niemaskowalnym
28. podać tryby adresowania
29. do czego służy dekoder adresów, przykłady
30. podać warianty ramki dla standardu UART
31. czym różni się transmisja synchroniczna od asynchronicznej
32. co to jest pamięć CACHE, jaka jest zaleta stosowania tej pamięci w przypadku bezpośredniego
dostępu do pamięci
33. co to jest stos, podać przykładowe instrukcje operujące na stosie
34. co to oznacza, że architektura jest zewnętrznie 16, a wewnętrznie 32 bitowa, podać zalety i
wady takich rozwiazań
35. jak jest różnica pomiędzy układem licznikowym a czasomierzem
36. sterownik wyświetlacza alfanumerycznego hd44780
37. opisać tryb zerowy układu 8255
38. architektura komputerów klasy PC (tryb rzeczywisty), start komputera - POST, mapa pamięci,
bit A20
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
40. podać przykłady rozkazów rozgałęziających, podać możliwość zapętlania kodu oraz
wytwarzania opóźnień z użyciem tych rozkazów
41. co to są drgania styków, podac algorytm ich eliminacji
42. sposób realizacji PWM (modulacji szerokości impulsów) przy uzyciu układów czsowych
43. systemy wieloprocesorowe (podział)
44. co to jest stan wysokiej impedancji, jakie ma on zastosowanie w systemie mikroprocesorowym
45. co to jest MMX oraz SSE
46. opisać krótko mikrokontroler PIC (Microchip) (rejestry, rozkazy, architektura)
47. podać kod w c ustawiający, zerujący lub negujący n-ty bit słowa
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
50. co to jest WATCHDOG
1.Różnice pomiędzy mikroprocesorem a mikrokontrolerem
Mikrokontroler:
•
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:
•
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.
1
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.
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.
2
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
.
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:
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
3
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.
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:
4
<- von Neuman
•
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
Mała liczba instrukcji
Wysoka specjalizacja instrukcji
9.Podać różnice pomiędzy mikrokontrolerami 8051, 8052 oraz ADuC812
5
10.Architektura mikrokontrolerów AVR
Głównym zadaniem rdzenia CPU (centralnej jednostki liczącej) jest zapewnienie poprawnego
i szybkiego wykonywania kodu. Z tego powodu CPU musi mieć dostęp do pamięci, musi wykonywać
operacje, sterować układami peryferyjnymi i obsługiwać przerwania.
Dla uzyskania maksymalnej wydajności AVR zbudowany jest w oparciu o architekturę
harwardzką – z rozdzielonymi pamięciami i szynami dla programu i danych. Instrukcje w pamięci
programu wykonywane są potokowo. Podczas gdy jedna instrukcja jest wykonywana, następna jest
już pobierana z pamięci programu. Dzięki takiemu rozwiązaniu, możliwe jest wykonywanie całej
instrukcji w każdym cyklu zegara.
Blok szybkiego dostępu zawiera 32 rejestry robocze o jednocyklowym czasie dostępu. To
pozwala aby jednostka ALU (arytmetyczno logiczna) również mogła pracować w jednym cyklu. W
typowej operacji, dwa argumenty ALU są wystawiane z bloku rejestrów, wykonywana jest operacja, a
wynik jest powrotem umieszczany w bloku rejestrów, i to wszystko w jednym cyklu zegara.
6
Sześć spośród 32 rejestrów roboczych może być używane jako trzy 16-bitowe rejestry
wskaźnikowe (X, Y, Z) w trybie adresowania pośredniego. Daje to możliwość wykonywania szybkich
przeliczeń danych. Jeden z tych trzech wskaźników adresu (Z) może być użyty jako wskaźnik adresu
w tzw. lookup tables w pamięci flash programu.
Jednostka ALU umożliwia wykonywanie operacji arytmetycznych i logicznych między
rejestrami, miedzy stałą a rejestrem, oraz także operacji na pojedynczym rejestrze. Po wykonaniu
operacji uaktualniany jest rejestr statusowy dający informacje o rezultacie.
Działanie programu jest możliwe dzięki warunkowym i bezwarunkowym skokom i
instrukcjom rozgałęziającym, dającym bezpośredni dostęp do całej przestrzeni adresowej. Większa
część instrukcji AVR ma format pojedynczego 16-bitowego słowa. Każdy adres pamięci programu
zawiera 16 lub 32-bitową instrukcję.
Pamięć programu może być podzielona na dwie sekcje: sekcję programu botującego, oraz
sekcję programu aplikacji. Obie części mają indywidualne bity bezpieczeństwa (Lock bits) do
zabezpieczenia przed odczytem i nadpisaniem zawartości (np. przez programator). Program sekcji
7
botującej może służyć np. do aktualizacji oprogramowania systemu, gdyż tylko z tej części pamięci
programu może być wykonywana instrukcja SPM nadpisująca pamięć flash aplikacji.
Podczas przerwań i wywołań procedur podrzędnych adres powrotny licznika programu jest
przechowywany w pamięci stosu. Stos zajmuje obszar pamięci SRAM, więc jego rozmiar jest
ograniczony wielkością tej pamięci. Każdy program musi zainicjalizować wskaźnik stosu SP w
procedurze obsługi resetu, zanim zostanie wywołana obsługa przerwania czy podprocedura.
Moduł przerwań ma swoje rejestry kontrolne w przestrzeni I/O z dodatkowym globalnym
bitem odblokowującym przerwania w rejestrze statusowym SREG (opisany dalej). Wszystkie
przerwania mają osobny wektor przerwania w tablicy wektorów przerwań. Przerwania mają priorytet
zależny od pozycji wektora. Im niższy adres wektora przerwań, tym wyższy jest priorytet dla danego
przerwania.
Rejestr statusowy – SREG:
Numer bitu
7
6
5
4
3
2
1
0
Nazwa
I
T
H
S
V
N
Z
C
Dostęp
R/W R/W R/W R/W R/W R/W R/W R/W
Wartość początkowa
0
0
0
0
0
0
0
0
I – globalne zezwolenie na przerwania
T – znacznik kopii
H – znacznik przeniesienia połówkowego
S – bit znaku S=V xor N
V – znacznik przepełnienia
N – znacznik wartości ujemnej
Z – znacznik wartości zerowej
C – znacznik przeniesienia lub pożyczki
Mapa pamięci programu:
Mapa pamięci danych:
8
Porty wejścia i wyjścia:
Budowa
9
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.
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', podczas gdy na linii SCL jest stan '1', to
sytuacja taka nazywa się START. Natomiast gdy na linii SDA stan logiczny zmienia się z '0' na '1',
podczas wysokiego poziomu na linii SCL, to sytuacja taka nazywa się STOP. Przedstawione to
zostało na poniższych wykresach:
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.
10
•
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.
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.
11
Przesłanie logicznej jedynki na magistralę oznacza wystawienie przez mastera krótkiego (od 1 do
15μs) impulsu niskiego (zwarcie linii) oraz następnie wysokiego o długości 60 μs. Logiczne zero
odpowiada niskiemu impulsowi o długości od 60 do 120μs.
Przed odbiorem każdego bitu danych master wysyła niski impuls startu (od 1 μs do 15 μs), po czym
wraca do stanu wysokiego na linii danych. Jeśli slave chce wysłać logiczną jedynką - nie robi nic,
pozostawiając linię w stanie wysokim. Jeśli slave chce wysłać zero, wówczas zwiera linię danych do
masy na 60 μs. Po przesłaniu 8 bitów następuje wysłanie komendy (rozkazu) (również ośmiobitowej).
Ewentualne błędy w transmisji mogą być wykryte za pomocą wbudowanego CRC (również
ośmiobitowego).
12
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.
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
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
o Operacje arytmetyczne i logioczne
•
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
•
Shifter – rejestr przesuwny
o Normalizacja (konwersja liczb stałoprzecinkowych na zmiennoprzecinkowe)
o Denormalizacja
13
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
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
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]
14
EOR
Rd, Rr
Rd = Rd ^ Rr
ZNVS
1
d, r = [0,31]
COM
Rd
Rd = 0xFF-Rd
ZNCVS
1
d = [0,31]
INC
Rd
Rd = Rd +1
ZNVS
1
d = [0,31]
TST
Rd
Rd = Rd & Rd
ZNVS
1
d = [0,31]
CLR
Rd
Rd = Rd^Rd
ZNVS
1
d = [0,31]
Mnemonik
Opis
Cykle zegara
Operacja
Rozgałęziające
JMP k
Skok bezpośredni
2
PC = k
RJMP k
Skok względny
2
PC = PC + k +1
CALL k
Skok bezpośredni
3
PC = k
RET
Powrót z procedury
4
PC = STACK
SBRC Rr, b
Pomiń jeśli bit w rejestrze równy 0
1/2/3
If (Rr(b)=0) PC=PC+2 or 3
SBIS P, b
Pomiń jeśli bit w rejestrze I/O równy 1
1/2/3
If (P(b)=1) PC=PC+2 or 3
BREQ k
Skok gdy równe
1,2
If (Z=1) PC=PC+k+1
BRNE k
Skok gdy nierówne
1,2
If (Z=0) PC=PC+k+1
BRSH k
Skok gdy większe lub równe
1,2
If (C=0) PC=PC+k+1
BRLO k
Skok gdy mniejsze
1,2
If (C=1) PC=PC+k+1
Bitowe
SBI P, b
Ustaw bit w rejestrze I/O
2
I/O(P,b) = 1
CBI P, b
Wyczyść bit w rejestrze I/O
2
I/O(P,b) = 0
LSL Rd
Logiczne przesunięcie w lewo
1
Rd(n+1)=Rd(n), Rd(0)=0
LSR Rd
Logiczne przesunięcie w prawo
1
Rd(n)=Rd(n+1), Rd(7)=0
ROL Rd
Rotacja w lewo przez Carry
1
Rd(0)=C, Rd(n+1)=Rd(n),
C=Rd(7)
SEI
Włącz przerwania
1
I=1
ROR Rd
Rotacja w prawo przez Carry
1
Rd(7)=C, Rd(n)=Rd(n+1),
C=Rd(0)
Transfer danych
MOV Rd, Rr
Prześlij z rejestru do rejestru
1
Rd = Rr
LDI Rd, K
Ładuj stałą do rejestru d=[16,31]
1
Rd = K
LD Rd, X
Ładuj pośrednio
2
Rd = (X)
ST X, Rr
Zachowaj pośrednio
2
(X) = Rr
IN Rd, P
Czytaj port
1
Rd = P
OUT P, Rr
Wyślij na port
1
P = Rr
PUSH Rr
Wyślij na stos
2
STACK = Rr
POP Rd
Pobierz ze stosu
2
Rd = STACK
15
17.Co to jest pamięć wirtualna oraz układ zarządzania pamięcią MMU
18.Tryb rzeczywisty, tryb chroniony oraz tryb wirtualny V86 procesorów i386 i
wyższych
19.Co to jest segmentacja pamięci, jaka jest różnica przy stosowaniu rejestrów
segmentowych i indeksowych, podać przykłady
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
16
tranzystora separującego. Ze względu na samorozładowywanie 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.
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
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
17
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.
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
18
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
•
bezpośrednie
•
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.
•
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
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.
19
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.
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 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
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
20
S
ygna
ły s
te
ruj
ąc
e
Z
as
ila
ni
e
LCD
DRIVER
LCD
DRIVER
8
4
40
8 lub 16
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.
21
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
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
22
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
zas
w
ykonani
a
zal
eży od r
odzaj
u
m
oduł
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 rozszerzeń, ustalenie wektorów przerwań BIOS oraz załadowanie sektora MBR pierwszej stacji
dysków i jego wykonanie.
23
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:
•
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
24
•
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)
•
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)
25
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)
Kopiowanie bitów B6, B5, B4 na bity A4, A3, A2
A = (A & 0xE3) | (B>>2 & 0x1C)
26
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 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).
27