Całość wykladu

background image

Mikroprocesory

i technika mikroprocesorowa

Dariusz Chaberski

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Kody liczbowe

i działania na liczbach binarnych

Dariusz Chaberski

background image

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

background image

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

background image

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

n1

)

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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=VN

3 H - Half carry - przeniesienie połówkowe (BCD)

12

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Układ wykonawczy, instrukcje

i adresowanie

Dariusz Chaberski

background image

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

background image

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

background image

Układ wykonawczy

rejestr tymczasowy

akumulator

rejestr znaczników

rejestry ogólnego

przeznaczenia

licznik programu

wskaźnik stosu

rejestr rozkazów

4

background image

Układ wykonawczy

§ architektura superskalarna

rejestry ogólnego przeznaczenia

FIFO

sekwenser

licznik

programu

5

background image

Instrukcje

§ format

r

k1

o

m1

R

:

O

:

drugi operand

rodzaj operacji

pierwszy operand

o

0

O

:

W

:

wynik

w

0

o

0

w

n1

r

0

o

l1

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

background image

Instrukcje

§ format

r

k1

R

:

rodzaj operacji

pierwszy operand

o

0

O

:

o

m1

O

:

drugi operand

o

0

r

0

o

l1

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

background image

Instrukcje

§ format

r

k1

R

:

rodzaj operacji

operand

o

0

r

0

O

: o

l1

R(A/O, F) = R(A, O, F)

+ przykłady

F O = O

F A = O

F A = [A O]

8

background image

Instrukcje

§ format

r

k1

R

:

rodzaj operacji

r

0

R(A, F) = R(A, F)

+ przykłady

F A = A

F [A] = 0

F A = [A]

9

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Instrukcje

§ sterujące - skok bezwarunkowy

PC

=ADDR

instrukcja

instrukcja

instrukcja

instrukcja

instrukcja

pamięć

programu

ADDR

:

PC

+1:

ADDR

skok

PC

:

18

background image

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

background image

Instrukcje

§ warunkowe typu SKIP

instrukcja

instrukcja

warunkowa

instrukcja

pomijana

instrukcja

instrukcja

20

background image

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

background image

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

background image

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

background image

Instrukcje

§ warunkowe typu instrukcja+SKIP

instrukcja

instrukcja

instrukcja

instrukcja

warunkowa

instrukcja

instrukcja

pomijana

24

background image

Instrukcje

§ specjalne

+ zatrzymanie procesora

+ oczekiwanie przerwania

+ operacja pusta

+ obniżenie poboru energii

25

background image

Instrukcje

§ bitowe

+ przesunięcie logiczne w prawo

b

N1

b

0

C

0

+ przesunięcie logiczne / arytmetyczne w lewo

C

b

N1

b

0

0

+ przesunięcie arytmetyczne w prawo

b

N1

b

0

C

26

background image

Instrukcje

§ bitowe

+ przesunięcie cykliczne w prawo przez znacznik przeniesienia

b

N1

b

0

C

+ przesunięcie cykliczne w lewo przez znacznik przeniesienia

C

b

N1

b

0

27

background image

Instrukcje

§ bitowe

+ przesunięcie cykliczne w prawo

b

N1

b

0

C

+ przesunięcie cykliczne w lewo

C

b

N1

b

0

28

background image

Instrukcje

§ bitowe

+ ustawianie bitu k w słowie B

b

N1

b

0

1

k

B

:

N-1

0

B = B (1 << k)

+ zerowanie bitu k w słowie B

b

N1

b

0

0

k

B

:

N-1

0

B = B (1 << k)

29

background image

Instrukcje

§ bitowe

+ negowanie bitu k w słowie B

b

N1

b

0

k

B

:

N-1

0

b

k

B = B (1 << k)

30

background image

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

background image

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

background image

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

background image

Tryby adresowania

§ natychmiastowe

pamięć

programu

akumulator

A = A #D

34

background image

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

background image

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

background image

Tryby adresowania

§ postindeksowe

akumulator

pamięć

programu

rejestry ogólnego

przeznaczenia lub

pamięć

rejestry indeksowe

A = A [I + [D1 D2]]

37

background image

Tryby adresowania

§ pośrednie

akumulator

pamięć

programu

rejestry ogólnego

przeznaczenia lub

pamięć

A = A [[D1 D2]]

38

background image

Tryby adresowania

§ względne

akumulator

pamięć

programu

licznik programu

adres następnej

instrukcji

A = A [PC + D]

PC - licznik programu

39

background image

Układ sterowania, magistrale

i organizacja pamięci

Dariusz Chaberski

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Cykl wykonywania instrukcji

§ procesor dwurdzeniowy

procesor

fizyczny

procesor

logiczny

UW6

UW5

UW4

UW3

UW2

UW1

9

background image

Cykl wykonywania instrukcji

§ procesor dwurdzeniowy z technologią HT

procesor

fizyczny

procesor

logiczny

UW6

UW5

UW4

UW3

UW2

UW1

10

background image

Magistrale

§ standard INTELA

CS

OE

WR

D

A

odczyt

zapis

11

background image

Magistrale

§ standard MOTOROLI

E

R

/W

D

A

odczyt

zapis

12

background image

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

background image

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

background image

Dekoder adresów

A

z

1

A

n

A

n+1

OE1

WR1

CS1

OE2

WR2

CS2

CS

WR

OE

A

C

15

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Pamięć kieszeniowa - CACHE

§ procesor dwurdzeniowy

rdzeń

pierwszy

rdzeń drugi

pamięć

CACHE

pierwszego

poziomu

pamięć

CACHE

pierwszego

poziomu

pamięć CACHE

drugiego poziomu

21

background image

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

background image

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

background image

Układ zarządzania pamięcią

§ wyznaczanie adresu fizycznego

deskryptor

segmentu

pamięć fizyczna

se

g

m

en

t

d

es

k

ry

p

to

w

se

g

m

en

t

d

a

n

y

ch

rejestr

segmentowy

selektor

dana

adres

efektywny

a

d

re

s

zy

cz

n

y

adres bazowy

deskryptor segmentu

a

d

re

s

w

ir

tu

a

ln

y

rozszerzenie

rejestru

segmentowego

24

background image

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

background image

System mikroprocesorowy

i peryferia

Dariusz Chaberski

background image

System mikroprocesorowy

mikroprocesor

pamięć

układy wejścia

wyjścia

kontroler DMA

kontroler

przerwań

2

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Modulacja szerokością impulsu

CLK1

CLK2

PWM

D

PWM

A

t

11

background image

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

background image

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

background image

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

background image

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

background image

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

ce

szyna

danych

DREQ - żadanie przesłania DMA

DACK - potwierdzenie / zgoda na przesłanie DMA

16

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Mikroprocesory i mikrokontrolery

rys historyczny

Dariusz Chaberski

background image

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

background image

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

background image

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

background image

§ 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

background image

§ 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

background image

§ 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

background image

§ 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

background image

8 bitowe mikrokontrolery rodziny AVR

Dariusz Chaberski

background image

Rdzeń AVR

pamięć

programu

FLASH

licznik

programu

ALU

8 bitowa magistrala danych

ad

re

so

w

an

ie

p

re

d

n

ie

ad

re

so

w

an

ie

b

ez

p

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

background image

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=VN

V - znacznik przepełnienia

N - znacznik wartości ujemnej

Z - znacznik wartości zerowej

C - znacznik przeniesienia lub pożyczki

3

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Mapa pamięci programu

0x0000

0x1FFF

FLASH

obszar startowy

(Boot)

15

0

FLASH

obszar aplikacji

wektory przerwań

i resetu

9

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Tryby adresowania pamięci

§ bezpośrednie jedno rejestrowe - Rd

OP

d

31

Rd

rejestry

ogólnego

przeznaczenia

0

4

0

15

15

background image

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

background image

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

background image

Tryby adresowania pamięci

§ bezpośrednie - pamięć danych

RAMEND

0x0000

16

31

adres danych

15

0

pamięć
danych

20

Rd/Rr

OP

18

background image

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

background image

Tryby adresowania pamięci

§ pośrednie - pamięć danych

rejestr X, Y lub Z

15

0

0x0000

RAMEND

pamięć
danych

20

background image

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

background image

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

background image

Tryby adresowania pamięci

§ stałoadresowe - pamięć programu

rejestr Z

15

1

FLASHEND

LSB

pamięć programu

0x0000

0

23

background image

Tryby adresowania pamięci

§ z późniejszą inkrementacją - pamięć programu

rejestr Z

15

1

FLASHEND

LSB

pamięć programu

0x0000

0

1

24

background image

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

background image

Tryby adresowania pamięci

§ pośrednie - pamięć programu

FLASHEND

pamięć programu

0x0000

Rejestr Z

PC

15

0

0

15

26

background image

Tryby adresowania pamięci

§ względne - pamięć programu

15

FLASHEND

pamięć programu

0x0000

0

PC

OP

15

0

12

1

k

27

background image

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

background image

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

background image

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

background image

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

background image

Instrukcje

§ rozgałęziające (3/3)

mnemonik

operandy

opis

znaczniki

#

uwagi

BRGE

k

if(NV==0) PC=PC+1+k

-

1/2

k=[-64,63]

BRLT

k

if(NV==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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

ATmega32

40

background image

ATmega32

41

background image

ATmega32

42

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Jednostka licznika

53

background image

Jednostka porównująca

54

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Tryby pracy licznika

§ Clear Timer on Compare Match Mode

TCNT0

OC0

okres

OCR0

generowanie przerwania

OC0

COM01:0=1

61

background image

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

background image

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

background image

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

background image

Diagramy czasowe

§ brak wcześniejszego podziału częstotliwości

65

background image

Diagramy czasowe

§ wcześniejszy podział częstotliwości przez 8

66

background image

Diagramy czasowe

§ wcześniejszy podział częstotliwości przez 8, ustawianie OCF0

67

background image

Diagramy czasowe

§ wcześniejszy podział częstotliwości przez 8 tryb CTC

68

background image

Timer/Counter Interrupt Mask Register

OCIE0 - Timer/Counter 0 Output Compare Match Interrupt Enable

TOIE0 - Timer/Counter 0 Output Overflow Interrupt Enable

69

background image

Timer/Counter Interrupt Flag Register

OCF0: Output Compare Flag 0

TOV0: Timer/Counter0 Overflow Flag

70

background image

Special Funcion I/O Register

PSR10 - Prescaler Reset Timer/Counter 1 and Timer/Counter 0

71

background image

Próbkowanie sygnału zewnętrznego

72

background image

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

background image

Licznik / czasomierz 1

74

background image

Objaśnienia

ICR - Input Capture Register

75

background image

Jednostka licznika

76

background image

Jednostka przechwytywania stanu licznika

77

background image

Jednostka porównująca

78

background image

Tryby pracy licznika

§ Clear Timer on Compare Match Mode

79

background image

Tryby pracy licznika

§ Fast PWM Mode

80

background image

Tryby pracy licznika

§ Phase Correct PWM Mode

81

background image

Tryby pracy licznika

§ Phase and Frequency Correct PWM Mode

82

background image

Diagramy czasowe

§ brak wcześniejszego podziału częstotliwości, ustawianie bitu OCF1x

83

background image

Diagramy czasowe

§ wcześniejszy podział częstotliwości przez 8, ustawianie OCF1x

84

background image

Diagramy czasowe

§ brak wcześniejszego podziału częstotliwości

85

background image

Diagramy czasowe

§ wcześniejszy podział częstotliwości przez 8

86

background image

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

background image

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

background image

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

background image

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

background image

Opis bitów trybu pracy generatora przebiegu

91

background image

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

background image

Zachowanie wyjścia OC1

§ Normal, Clear Timer on Compare Match Mode

93

background image

Zachowanie wyjścia OC1

§ Fast PWM Mode

94

background image

Zachowanie wyjścia OC1

§ The Phase (and Frequency) Correct PWM Mode

95

background image

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

background image

Przetwornik A/C

97

background image

Automatyczne wyzwalanie

98

background image

Preskaler

99

background image

Diagram ilustrujący dokonywanie pierwszego przetwarzania

w trybie pojedynczej konwersji

100

background image

Diagram ilustrujący dokonywanie przetwarzania

w trybie pojedynczej konwersji

101

background image

Diagram ilustrujący dokonywanie przetwarzania

w trybie automatycznego wyzwalania

102

background image

Diagram ilustrujący dokonywanie przetwarzania

w trybie konwersji Free-Running

103

background image

Zalecany sposób podłączenia zasilania

104

background image

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

background image

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

background image

Special FunctionIO Register

ADTS2:0: ADC Auto Trigger Source

107

background image

Komparator analogowy

108

background image

Special Function IO Register

ACME: Analog Comparator Multiplexer Enable

109

background image

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

background image

Interfejs I2C

111

background image

Oznaczenia

TWDR - TWI Data Register

TWAR - TWI (Slave) Address Register

TWSR - TWI Status Register

TWCR - TWI Control Register

TWBR - TWI Bit Rate Register

112

background image

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

background image

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

background image

TWI Status Register

TWS: TWI Status

TWPS: TWI Prescaler Bits

115

background image

Programowanie

116

background image

Programowanie

117

background image

Kody statusowe - Master Transmitter

118

background image

Kody statusowe - Master Receiver

119

background image

Kody statusowe - Slave Receiver

120

background image

Kody statusowe - Slave Transmitter

121

background image

Interfejs SPI

122

background image

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

background image

SPI Status Register

SPIF: SPI Interrupt Flag

WCOL: Write COLlision Flag

SPI2X: Double SPI Speed Bit

124

background image

Tryby przesyłania danych

125

background image

Tryby przesyłania danych CPHA=0

126

background image

Tryby przesyłania danych CPHA=1

127

background image

Licznik / czasomierz 2

128

background image

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

background image

Preskaler

130

background image

Special Function IO Register

PSR2: Prescaler Reset Timer/Counter2

131

background image

Porty wejścia wyjścia

132

background image

Special Function IO Register

PUD: Pull-up disable

133

background image

Przerwania zewnętrzne - MCU Control Register

134

background image

ISC2: Interrupt Sense Control 2

ISC2: Interrupt Sense Control 2

135

background image

Rejestry kontrolny i flagowy

136

background image

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

background image

Jednostka resetująca

138

background image

Parametry

139

background image

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

background image

Watchdog

141

background image

Watchdog Timer Control Register

WDTOE: Watchdog Turn-off Enable

WDE: Watchdog Enable

WDP2, WDP1, WDP0: Watchdog Timer Prescaler 2, 1, and 0

142

background image

Dystrybucja sygnału zegarowego

143

background image

Wybór zegara - bity bezpiecznikowe

144

background image

Oscylator kwarcowy

145

background image

Zewnętrzny oscylator RC

146

background image

Wewnętrzny kalibrowany oscylator RC

§ Oscillator Calibration Register

147

background image

Zegar zewnętrzny

148

background image

Uniwersalny (a)synchroniczny odbiornik nadajnik

149

background image

Układ generowania sygnału zegarowego

150

background image

Określanie szybkości transmisji

151

background image

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

background image

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

background image

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

background image

Interfejsy szeregowe

Dariusz Chaberski

background image

Interfejs I

2

C

§ I

2

C - Inter IC - Inter Integrated Circuit

2

background image

Interfejs I

2

C

§ podłączenie dwóch urządzeń z wykorzystaniem magistrali I

2

C

3

background image

Interfejs I

2

C

§ transfer pojedynczego bitu

4

background image

Interfejs I

2

C

§ rozpoczęcie i zakończenie transmisji

5

background image

Interfejs I

2

C

§ transfer danych

6

background image

Interfejs I

2

C

§ potwierdzenie

7

background image

Interfejs I

2

C

§ synchronizacja zegara podczas procedury arbitrażu

8

background image

Interfejs I

2

C

§ procedura arbitrażu dwóch MASTERów

9

background image

Interfejs I

2

C

§ kompletny transfer danych

10

background image

Interfejs I

2

C

§ adresowanie SLAVE’a 7-bitowym adresem poprzez MASTERa, który jest nadajnikiem

§ natychmiastowy odczyt SLAVE’a

11

background image

Interfejs I

2

C

§ format kombinowany

12

background image

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

background image

Interfejs SPI

§ synchroniczny transfer danych (pojedynczy bit)

14

background image

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

background image

Interfejs SPI

§ odczyt rejestru statusowego

16

background image

Interfejs SPI

§ zapis rejestru statusowego

17

background image

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

background image

Interfejs SPI

§ odczyt pamięci

19

background image

Interfejs SPI

§ zapis pamięci

20

background image

Interfejs SPI

§ programator

21

background image

Interfejs JTAG

§ przykład połączenie dwóch urządzeń - JTAG (Joint Test Action Group)

§ przykład podłączenie mikrokontrolera AVR

22

background image

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

background image

Interfejs JTAG

§ blokowy schemat wewnętrzny

TAP - Test Access Port

ISP - In-System Programmability

ICR - In-Circuit Reconfigurability

24

background image

Interfejs JTAG

§ rejestr Boundary-Scan

25

background image

Interfejs JTAG

§ odczyt i zapis punktów kontrolnych testowanego układu

26

background image

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

background image

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

background image

Interfejs UART

§ wybór momentu próbkowania sygnału RXD

29

background image

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

background image

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

background image

Interfejs 1-Wire

§ schemat elektryczny portu

§ typowa sekwencja komunikacyjna

32

background image

Interfejs 1-Wire

§ zapis, odczyt

33

background image

Interfejs 1-Wire

§ schemat zastępczy interfejsu 1-Wire

34

background image

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

background image

Interfejs 1-Wire

§ DS2480B - schemat blokowy

36

background image

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

background image

Interfejs 1-Wire

§ DS2450 - schemat blokowy

38

background image

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

background image

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

background image

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

background image

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

background image

CRC

43

background image

Mikrokontrolery rodziny 8051

Dariusz Chaberski

background image

Schemat blokowy

2

background image

Struktura pamięci

PSEN - Program Store Enable

EA - External Access

3

background image

Pamięć programu

4

background image

Zewnętrzna pamięć programu

ALE - Address Latch Enable

5

background image

Zewnętrzna pamięć danych

6

background image

Wewnętrzna pamięć danych

7

background image

Wewnętrzna pamięć danych (0-0x7F)

8

background image

Wewnętrzna pamięć danych (0x80-0xFF)

9

background image

Przestrzeń rejestrów specjalnych (SFR)

10

background image

Program Status Word

11

background image

Diagramy wykonywania instrukcji

12

background image

Diagramy wykonywania instrukcji

13

background image

Diagramy wykonywania instrukcji

14

background image

Diagramy wykonywania instrukcji

15

background image

Wykonywanie instrukcji z zewnętrznej pamięci programu

16

background image

Wykonywanie instrukcji z zewnętrznej pamięci programu

17

background image

Interrupt Enable (IE) Register

18

background image

Interrupt Priority (IP) Register

19

background image

System kontroli przerwań

20

background image

Architektura

21

background image

Porty wejścia wyjścia

22

background image

Porty wejścia wyjścia

23

background image

Porty wejścia wyjścia

24

background image

Porty wejścia wyjścia

25

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Analog Devices - ADuC812

31

background image

ADuC812

32

background image

Zewnętrzna pamięć danych

33

background image

Mapa pamięci danych

34

background image

Liczniki

35

background image

Liczniki

36

background image

Liczniki

37

background image

Liczniki

38

background image

Liczniki

39

background image

Liczniki

40

background image

Przetwornik A/C

41

background image

Wewnętrzne napięcie odniesienia

42

background image

Zewnętrzne napięcie odniesienia

43

background image

Przetwornik A/C - DMA

44

background image

Przetwornik A/C - DMA

45

background image

Przetwornik A/C - DMA

46

background image

Przetwornik C/A

47

background image

Przetwornik C/A

48

background image

Przykładowy system

49

background image

Mikrokontrolery rodziny PIC

Dariusz Chaberski

background image

Architektura 16C84

2

background image

Architektura 16C84

3

background image

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

background image

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

background image

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

background image

Tworzenie adresu programu

§ rejestry PCL i PCLATCH

7

background image

Sposoby adresowania

8

background image

Port A

port RA3-RA0

port RA4

9

background image

Port B

port RB7-RB4

port RB3-RB0

10

background image

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

background image

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

background image

Rozkazy bitowe

§ BCF f,b

§ BSF f,b

§ BTFSC f,b

§ BTFSS f,b

13

background image

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

background image

Potokowe wykonywanie instrukcji

15

background image

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

background image

Czyszczenie pamięci RAM (0x20-0x2F) poprzez adresowanie

pośrednie

17

background image

Inicjalizacja portu A

18

background image

Mikrokontrolery rodziny M68

Dariusz Chaberski

background image

Architektura - MC68HC08AZ60/48

2

background image

Mapa pamięci

3

background image

Rejestry jednostki centralnej

4

background image

Układ przerwań

5

background image

Obsługa przerwań

6

background image

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

background image

Układ czasowy B

8

background image

Rejestry układu czasowego B

9

background image

Realizacja PWM

10

background image

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

background image

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

background image

Tryby pracy licznika

13

background image

CHxMAX - Channel x Maximum Duty Cycle Bit

14

background image

Licznik MODULO

15

background image

Rejestry licznika MODULO

16

background image

Porty wejścia wyjścia

17

background image

Budowa portu

18

background image

Moduł klawiatury

19

background image

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

background image

Układ czasowy A

21

background image

Rejestry układu czasowego A

22

background image

Przetwornik A/C

23

background image

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

background image

ADC Input Clock Register (ADICLK)

ADIV2, .., ADIV0 - ADC Clock Prescaler Bits (1, .., 16)

ADICLK - ADC Input Clock Register Bit

25

background image

Opis instrukcji

26

background image

Opis instrukcji

27

background image

Opis instrukcji

28

background image

Opis instrukcji

29

background image

Opis instrukcji

30

background image

Opis instrukcji

31

background image

Opis instrukcji

32

background image

Opis instrukcji

33

background image

Opis instrukcji

34

background image

Opis instrukcji

35

background image

Opis instrukcji

36

background image

Opis instrukcji

37

background image

Opis instrukcji

38

background image

Opis instrukcji

39

background image

Opis instrukcji

40

background image

Opis instrukcji

41

background image

Opis instrukcji

42

background image

Moduł komunikacji szeregowej (SCI)

43

background image

Rejestry modułu komunikacji szeregowej

44

background image

Nadajnik

45

background image

Odbiornik 1/2

46

background image

Odbiornik 2/2

47

background image

Moduł przerywający

48

background image

Rejestry moduł przerywającego

BRKE - Break Enable Bit

BRKA - Break Active Bit

49

background image

Moduł kontrolujący napięcie zasilające

50

background image

Moduł poprawnej pracy jednostki centralnej

51

background image

Wyświetlacz alfanumeryczny

ze sterownikiem HD44780

Dariusz Chaberski

background image

Schemat blokowy

2

background image

Schemat blokowy

3

background image

Sterowanie matrycą LCD

4

background image

Regulacja kontrastu

5

background image

4 bitowa transmisja danych i rozkazów

6

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Układ wejścia wyjścia 8255

Dariusz Chaberski

background image

Schemat blokowy

2

background image

Podstawowe operacje

§ Intel 82C55 - podstawowe operacje

3

background image

Słowo kontrolne - D7=1, (ustawienie trybu pracy portów)

4

background image

Słowo kontrolne - D7=1, (ustawianie/resetowanie bitów portu C)

5

background image

Słowo kontrolne - D7=1, tryb 0(konfiguracja wejścia wyjścia)

6

background image

Tryb 0 - wejście

7

background image

Tryb 0 - wyjście

8

background image

Tryb 1 - transfer danych z wyzwalaniem i potwierdzeniem

(wejście)

9

background image

Tryb 1 - transfer danych z wyzwalaniem i potwierdzeniem

(wejście)

10

background image

Tryb 1 - transfer danych z wyzwalaniem i potwierdzeniem

(wyjście)

11

background image

Tryb 1 - transfer danych z wyzwalaniem i potwierdzeniem

(wyjście)

12

background image

Tryb 2 - dwukierunkowy tryb z wyzwalaniem i potwierdzeniem

13

background image

Tryb 2 - dwukierunkowy tryb z wyzwalaniem i potwierdzeniem

14

background image

Aplikacja - port równoległy LPT

15

background image

Programowalny kontroler

przerwan 8259

Dariusz Chaberski

background image

Schemat blokowy

PIC (Programmable Interrupt Controller)

2

background image

Podłączenie do systemu mikroprocesorowego

3

background image

Kaskadowe podłączenie kontrolerów przerwań

4

background image

Tryb zgodności 8080/8085

§ pierwszy bajt

§ drugi bajt

§ trzeci bajt

5

background image

Tryb zgodności 8086

§ wektor przerwań

6

background image

Programowanie

§ Initialization Command Words (ICWs) ICW1, .., ICW4

+ A0 = 0 and D4 = 1 - rozpoczęcie sekwencji inicjującej

§ Operation Command Words (OCWs) OCW1, ..., OCW3

7

background image

ICW1

8

background image

ICW2

9

background image

ICW3

10

background image

ICW4

11

background image

Algorytm zapisu słów ICWs

12

background image

Adresowanie słów OCW

13

background image

OCW1

14

background image

OCW2

15

background image

OCW3

16

background image

Automatyczna rotacja priorytetów przerwań

przed

po

17

background image

Diagram ilustrujący obsługę przerwań w trybach 80(80/86)

18

background image

Kontroler DMA 8237

Dariusz Chaberski

background image

Schemat blokowy

2

background image

Połączenie kaskadowe

3

background image

Interfejs z systemem komputerowym

4

background image

Dostępne rejestry

5

background image

Command Register

6

background image

Priorytety kanałów DMA

§ stały

§ zmienny

7

background image

Mode Register

8

background image

Request Register

9

background image

Mask Register (set/reset)

adres 0xXXXA

10

background image

Mask Register (write)

adres 0xXXXF

11

background image

Dostęp do rejestrów

12

background image

Dodatkowe rozkazy programowe

13

background image

Status Register

14

background image

Kody komend (kanały 0 i 1)

15

background image

Kody komend (kanały 2 i 3)

16

background image

Zapis do rejestrów konfiguracyjnych

17

background image

Przesłanie pamięć pamięć

18

background image

Przesłanie w obrębie bloku pamięci

19

background image

Układ czasowy 8254

Dariusz Chaberski

background image

Schemat blokowy

2

background image

Schemat blokowy licznika

3

background image

Podłączenie do systemu mikroprocesorowego

4

background image

Słowo kontrolne

5

background image

Format komendy zatrzaskiwania licznika

6

background image

Format komendy READ-BACK

7

background image

Dostęp do rejestrów

8

background image

Przykład - tryb 0

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

9

background image

Przykład - tryb 0

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

10

background image

Przykład - tryb 0

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

11

background image

Przykład - tryb 1

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

12

background image

Przykład - tryb 1

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

13

background image

Przykład - tryb 1

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

14

background image

Przykład - tryb 2

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

15

background image

Przykład - tryb 2

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

16

background image

Przykład - tryb 2

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

17

background image

Przykład - tryb 3

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

18

background image

Przykład - tryb 3

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

19

background image

Przykład - tryb 3

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

20

background image

Przykład - tryb 4

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

21

background image

Przykład - tryb 4

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

22

background image

Przykład - tryb 4

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

23

background image

Przykład - tryb 5

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

24

background image

Przykład - tryb 5

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

25

background image

Przykład - tryb 5

zliczanie binarne (nie BCD)

możliwość czytania pisania LS

Byte

26

background image

Procesory sygnałowe ADSP21

Dariusz Chaberski

background image

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

background image

Ewolucja

3

background image

Przykład wykorzystania DSP

4

background image

Próbkowanie i kwantyzacja

5

background image

Zjawisko aliasingu - sygnał

6

background image

Zjawisko aliasingu - widmo

7

background image

Filtry analogowe, filtr cyfrowy - porównanie

FIR (ang. Finite Impulse Response)

8

background image

Filtry cyfrowe - implementacja filtru 4 punktowego/odczepowego

(ang. 4-Tap)

9

background image

Filtry cyfrowe - odpowiedź na skok jednostkowy filtru 4

punktowego

10

background image

Filtry cyfrowe - odpowiedź na zaszumiony impuls prostokątny

(a), (b) uśrednianie 11 punktowe, (c) 51 punktowe

11

background image

Filtry cyfrowe - przykładowe charakterystyki częstotliwościowe

filtrów cyfrowych

12

background image

Filtry cyfrowe - użycie bufora cyklicznego

13

background image

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

background image

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

background image

Procesor sygnałowy rodziny ADSP-21XX - architektura jądra

procesora

16

background image

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

background image

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

background image

Procesor sygnałowy rodziny ADSP-218X - architektura procesora

19

background image

Procesor sygnałowy rodziny ADSP-2116X (SIMD) - architektura

jądra procesora

20

background image

Procesor sygnałowy rodziny ADSP-21XX - peryferia

(podłączenie przetwornika A/C)

21

background image

Procesor sygnałowy rodziny ADSP-21XX - peryferia

(podłączenie przetwornika C/A)

22

background image

Procesor sygnałowy rodziny ADSP-21XX - peryferia (odczyt

pamięci)

23

background image

Procesor sygnałowy rodziny ADSP-21XX - peryferia (zapis

pamięci)

24

background image

Procesor sygnałowy rodziny ADSP-2189X - podłączenie pamięci

zewnętrznej

25

background image

Klawiatura

Dariusz Chaberski

background image

Klawiatura cztero - klawiszowa

B

0

B

1

B

2

B

3

P

1

P

2

P

3

P

0

Vcc

CLK

2

background image

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

background image

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

background image

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

background image

Klawiatura IBM PC (AT)

§ Złącza

6

background image

Klawiatura IBM PC (AT)

§ klawiatura -> komputer

§ komputer -> klawiatura

7

background image

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

background image

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

background image

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

background image

Procesor Z80

Dariusz Chaberski

background image

Schemat blokowy

2

background image

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

background image

Wyprowadzenia

M1 - pobranie kodu rozkazu

4

background image

Mikroprocesor Z80

§ cykl maszynowy rozkazu

5

background image

Pobranie kodu rozkazu

6

background image

Zapis i odczyt pamięci

7

background image

Zapis i odczyt portów wejścia wyjścia

8

background image

Cykl zwalniania magistral z potwierdzeniem

9

background image

Cykl obsługi przerwania maskowalnego z potwierdzeniem - INT

(ang. Interrupt)

10

background image

Cykl obsługi przerwania niemaskowalnego - NMI (ang.

Non-Maskable Interrupt)

11

background image

Obsługa instrukcji HALT

12

background image

Przykładowy system komputerowy

13

background image

Podłączenie pamięci

14

background image

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

background image

Mikrokomputer ZXSpectrum (3.5 MHz, 48 kB, 256x192@4)

16

background image

Wnętrze

17

background image

Magistrale systemowe

Dariusz Chaberski

background image

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

background image

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

background image

Magistrale systemowe

§ magistrala ISA na tle magistrali PCI

4

background image

Magistrale systemowe

§ przykład karty rozszerzeń wykorzystującej magistarlę ISA 16-to bitową

5

background image

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

background image

ISA - PNP

7

background image

Magistrale systemowe

§ EISA - złącze

8

background image

Magistrale systemowe

§ EISA - złącze

9

background image

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

background image

Magistrale systemowe

§ VESA - dodatkowe złącze

11

background image

Magistrale systemowe

§ VESA - widok złącza

12

background image

Magistrale systemowe

§ VESA - karta graficzna wykorzystująca złącze VESA

13

background image

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

background image

Magistrale systemowe

§ złącza magistrali PCI

15

background image

Magistrale systemowe

§ sygnały magistrali PCI

16

background image

Magistrale systemowe

§ przykład operacji odczytu na magistrali PCI

17

background image

Komendy magistrali

18

background image

Przestrzeń konfiguracyjna

19

background image

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

background image

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

background image

Magistrale systemowe

§ magistrale (od góry) AGP, PCI, PCI-X

22

background image

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

background image

PCI-Express - koncepcja skalowalności

§ PCI-Express x1 - 18 wyprowadzeń, ..., x16 - 82 wyprowadzenia

24

background image

Pojedyncze połączenie LVDS

25

background image

Wyprowadzenia 1x

SMCLK, SMDAT - System Management Bus

26

background image

Wyprowadzenia 4x

27

background image

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

background image

Warstwy

29

background image

Physical Layer

30

background image

Zrównoleglenie przesyłania danych

31

background image

Idea

32

background image

Procesory rodziny x86

Dariusz Chaberski

background image

8086 - obudowa

2

background image

Struktura scalona

§ 29000 tranzystorów

§ technologia 3 µm NMOS

§ pojedyncze zasilanie 5V

3

background image

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

background image

Schemat blokowy

5

background image

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

background image

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

background image

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

background image

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

background image

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

background image

8086 - segmentacja pamięci

11

background image

Mapa pamięci

12

background image

Mikroprocesor 80286

13

background image

Struktura scalona

§ 134000 tranzystorów

§ technologia 1.5 µm CMOS

§ pojedyncze zasilanie 5V

14

background image

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

background image

Schemat blokowy

16

background image

Rejestry

17

background image

Rejestry flagowy i statusowy

18

background image

Poziomy uprzywilejowania

19

background image

Tryb chroniony - adresowanie

20

background image

Deskryptor segmentu kodu i danych (S=1)

21

background image

Atrybuty deskryptora segmentu kodu i danych

22

background image

Deskryptor segmentu systemowego

23

background image

Atrybuty deskryptora segmentu systemowego

24

background image

Deskryptor bramki

25

background image

Atrybuty deskryptora bramki

26

background image

Rejestry deskryptorów

27

background image

Selektory segmentów

28

background image

Lokalna i globalna tablica deskryptorów

29

background image

Tablica deskryptorów przerwań

30

background image

Segment stanu zadania i rejestr TSS

31

background image

Schemat użycia deskryptora

32

background image

80386

§ obudowa

DX

SX

33

background image

80386 - struktura scalona

§ 275000 tranzystorów

§ technologia 1(1.5) µm CMOS

§ pojedyncze zasilanie 5V

34

background image

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

background image

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

background image

80386 - rejestry

37

background image

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

background image

Deskryptor

39

background image

Atrybuty deskryptora

40

background image

80486

41

background image

80486 - struktura

§ 1200000 tranzystorów

(SX 1185000 tranzystorów)

§ technologia 0.8(1) µm CMOS

§ pojedyncze zasilanie 5V

42

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Intel Pentium II

§ Obudowa (gniazdo slot 1)

55

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Rodzaje podstawek do procesorów Pentium II i Celeron

Socket 370

Socket 478

61

background image

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

background image

Intel Pentium IV

obudowa pod socket LGA775

struktura:

od 180 nm do 65 nm CMOS

63

background image

Intel Pentium IV - inne stosowane podstawki

Socket LGA775

Socket 423

64

background image

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

background image

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

background image

Intel Core Duo

§ Dothan i Yonah - powrót do architektury P3 rozwijanej jako Pentium M

§ technologia 65 nm

§ wielordzeniowość

§ socket LGA775

67

background image

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

background image

Wide Dynamic Execution

69

background image

Intelligent Power Capability

§ Ultra Fine Grained Power Control

70

background image

Advanced Smart Cache

71

background image

Smart Memory Access

72

background image

Advanced Digital Media Boost

73

background image

Mikroprocesory

do systemów wbudowanych

Dariusz Chaberski

background image

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

background image

Mikroprocesory Micro-Blaze

§ struktura FPGA całość

3

background image

Mikroprocesory Micro-Blaze

§ struktura FPGA - wybrany fragment - 4 x CLB (ang. Configurable Logic Block)

4

background image

Mikroprocesory Micro-Blaze

§ struktura FPGA - struktura bloku CLB - widoczne dwa przerzutniki (lewa strona) oraz dwie tablice

LUT (ang. Look-Up-Table)

5

background image

Mikroprocesory Micro-Blaze

§ zestaw laboratoryjny z układem Virtex 5

6

background image

Mikroprocesory Micro-Blaze

§ diagram blokowy jednostki wykonawczej

7

background image

Mikroprocesory Micro-Blaze

§ EDK - widok aplikacji

8

background image

Mikroprocesory Micro-Blaze

§ EDK - widok aplikacji

9

background image

Mikroprocesory Micro-Blaze

§ EDK - widok aplikacji

10

background image

Mikroprocesory Micro-Blaze

§ EDK - widok aplikacji

11

background image

Mikroprocesory Micro-Blaze

§ EDK - widok aplikacji

12

background image

Mikroprocesory Micro-Blaze

§ EDK - widok aplikacji

13

background image

Mikroprocesory Micro-Blaze

§ EDK - widok aplikacji

14

background image

Mikroprocesory Micro-Blaze

§ EDK - widok aplikacji

15

background image

Mikroprocesory Micro-Blaze

§ EDK - widok aplikacji

16

background image

Mikroprocesory Micro-Blaze

§ EDK - widok aplikacji

17

background image

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

background image

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

background image

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

background image

Mikroprocesory PowerPC

§ systemy wbudowane - Xilinx - zestaw laboratoryjny z układem Virtex 4, który zawiera mikroprocesor

PowerPC

21

background image

Komputery klasy PC

Dariusz Chaberski

background image

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

background image

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

background image

Architektura komputerów klasy PC

§ podłączenie peryferiów

4

background image

Architektura komputerów klasy PC

§ podłączenie peryferiów

5

background image

Architektura komputerów klasy PC

§ podłączenie peryferiów

ICH - I/O Controller Hub

MCH - Memory Controller Hub

6

background image

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

background image

Architektura komputerów klasy PC

§ Intel Centrino - zestaw chipsetów (NB, SB), WLAN i procesor

8

background image

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

background image

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

background image

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

background image

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

background image

Narzędzia programistyczne

Dariusz Chaberski

background image

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

background image

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

background image

Narzędzia programistyczne

§ AVR Studio - parametry projektu

4

background image

Narzędzia programistyczne

§ AVR Studio - parametry debugera

5

background image

Narzędzia programistyczne

§ AVR Studio - puste okno aplikacji

6

background image

Narzędzia programistyczne

§ AVR Studio - przykładowy kod, budowanie aplikacji (kompilacja i linkowanie)

7

background image

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

background image

Narzędzia programistyczne

§ AVR Studio - uruchomienie symulacji

9

background image

Narzędzia programistyczne

§ AVR Studio - okno rejestrów procesora

10

background image

Narzędzia programistyczne

§ AVR Studio - wykonanie pojedynczego kroku programu

11

background image

Narzędzia programistyczne

§ AVR Studio - ustawienia projektu (Makefile)

12

background image

Narzędzia programistyczne

§ AVR Studio - ustawienia projektu (Makefile) - wykorzystywane biblioteki

13

background image

Narzędzia programistyczne

§ AVR Studio - okno obserwowanych zmiennych

14

background image

Narzędzia programistyczne

§ AVR Studio - okno disasemblera

15

background image

Narzędzia programistyczne

§ PonyProg - narzędzie do programowania mikrokontrolerów, pamięci itp.

16

background image

Narzędzia programistyczne

§ PonyProg - kod programu w postaci szesnastkowej i jego interpretacja ASCII (ang. American Stan-

dard Code for Information Interchange)

17

background image

Narzędzia programistyczne

§ PonyProg - ustawienia interfejsu

18

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Narzędzia programistyczne

§ Visual DSP++ - uruchomiona aplikacja

27

background image

Narzędzia programistyczne

§ Visual DSP++ - wizualizacja tablic danych

28

background image

Narzędzia programistyczne

§ Visual DSP++ - ustawianie sesji (wielo/dwu)procesorowej

29

background image

Narzędzia programistyczne

§ Visual DSP++ - symulacja systemu dwuprocesorowego

30

background image

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

background image

Narzędzia programistyczne

§ Keil Cx51 Development Tools - µVision IDE

32

background image

Narzędzia programistyczne

§ µVision IDE - tworzenie projektu - wybór mikroprocesora

33

background image

Narzędzia programistyczne

§ µVision IDE - edycja peryferiów (1/2)

34

background image

Narzędzia programistyczne

§ µVision IDE - edycja peryferiów (2/2)

35

background image

Narzędzia programistyczne

§ µVision IDE - czasy wykonywania instrukcji

36

background image

Narzędzia programistyczne

§ µVision IDE - debugowanie - symulacja programowa i sprzętowa

37

background image

Narzędzia programistyczne

§ µVision IDE - ustawianie parametrów symulacji sprzętowej

38

background image

Narzędzia programistyczne

§ Keil - programator i symulator - ULINK

39

background image

Narzędzia programistyczne

§ Keil - programator i symulator - ULINK - USB-JTAG

40

background image

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

background image

Emulatory sprzętowe

§ OCD - On-Chip Debugging

JTAG ICE jest podłączony poprzez OCD z procesorem AVR, którego działanie jest obserwowane

42

background image

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

background image

Emulatory sprzętowe

§ OCD - ustawianie punktów przerywania wykonywania programu

44

background image

Emulatory sprzętowe

§ OCD - ustawianie punktów przerywania wykonywania programu

(wykorzystanie maskowania)

45

background image

Emulatory sprzętowe

§ OCD - realizacja przerywania programu

46

background image

Emulatory sprzętowe

§ OCD - przykład

47

background image

Emulatory sprzętowe

§ OCD - ustawianie punktów przerywania wykonywania programu

(wykonanie instrukcji warunkowej - rozgałęziającej)

48

background image

Emulatory sprzętowe

§ menu ustawiania parametrów połączenia komputer - JTAG ICE oraz JTAG ICE - OCD

49

background image

Emulatory sprzętowe

§ JTAG ICE - sonda emulatora

50

background image

Emulatory sprzętowe

§ podłączenie emulatora do zestawu laboratoryjnego

51

background image

Technologia MMX

Dariusz Chaberski

background image

Zasoby

2

background image

Rejestry MMX

3

background image

Typy danych

4

background image

Model wykonywania instrukcji SIMD

5

background image

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

background image

Intrukcje MMX

7

background image

Intrukcje MMX

8

background image

Mapowanie rejestrów MMX

9

background image

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

background image

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

background image

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

background image

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

background image

Koprocesor arytmetyczny x87

Dariusz Chaberski

background image

Rejestry

2

background image

Stos rejestrów danych

3

background image

Przykład obliczeń

4

background image

Słowo statusowe

5

background image

Instrukcje 1/2

6

background image

Instrukcje 2/2

7

background image

Załadowanie rejestru statusowego do rejestru flagowego

8

background image

Słowo kontrolne

9

background image

Kontrola precyzji

10

background image

Słowo znaczników/cech

11

background image

Rejestr rozkazów jednostki zmiennoprzecinkowej

12

background image

Obraz stanu zadania

13

background image

Obraz stanu zadania

14

background image

Obrazy stanu zadania

15

background image

Typy danych

16

background image

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

background image

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

background image

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

background image

Wartości specjalne

20

background image

Transfer danych

21

background image

Warunkowy transfer danych

22

background image

Stałe

23

background image

Operacje arytmetyczne

24

background image

Instrukcje porównujące i klasyfikujące

25

background image

Ustawianie znaczników CONDITION

§ STATUS

§ EFLAGS

26

background image

Stałe dla instrukcji warunkowych

27

background image

Instrukcje trygonometryczne

28

background image

Stała

π

29

background image

Instrukcje logarytmiczne, eksponencjalne i skalujące

30

background image

Instrukcje kontrolne

31

background image

Rozszerzenie SSE

Dariusz Chaberski

background image

Zasoby

2

background image

Rejestry

3

background image

Rejestr kontrolno statusowy MXCSR

4

background image

Typ danych

5

background image

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

background image

Operacje arytmetyczne

§ addps, addss

§ subps, subss

§ mulps, mulss

§ divps, divss

§ rcpps, rcpss

§ sqrtps, sqrtss

§ rsqrtps, rsqrtss

§ maxps, maxss

§ minps, minss

7

background image

Operacje logiczne

§ andps

§ andnps

§ orps

§ xorps

8

background image

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

background image

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

background image

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

background image

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

background image

Rozszerzenie SSE 2

background image

Typy danych

14

background image

Instrukcje konwertujące

15

background image

Rozszerzenie SSE 3

background image

Instrukcja asymetryczna ADDSUBPD

17

background image

Instrukcja horyzontalna HADDPD

18

background image

Operacje bitowe - język C

Dariusz Chaberski

background image

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

background image

Pola bitowe

3

background image

Pola bitowe

4

background image

Pola bitowe

5

background image

PCI

Dariusz Chaberski

background image

System z magistralą PCI

2

background image

Wyprowadzenia

3

background image

Komendy

4

background image

Odczyt

5

background image

Zapis

6

background image

Potwierdzenie przerwania

7

background image

Zasilanie

8

background image

Zalecane podłączenie mostka PCI

9

background image

Przesunięcia fazowe zegarów

τ (10 cm) ' 0.5 ns

10

background image

Mostek PCI 9050

background image

Podłączenie do magistrali PCI

12

background image

Pojedynczy cykl zapisu

13

background image

Pojedynczy cykl odczytu

14

background image

Kolejność bajtowa

§ tryb natywny PCI

§ możliwość przełączenia kolejności bajtowej

15

background image

Tryb Big Endian - 32 bity

16

background image

Tryb Big Endian - 16 bitów

17

background image

Tryb Big Endian - 8 bitów

18

background image

Konfiguracja - pamięć EEPROM - mapa

19

background image

Mapa pamięci

20

background image

Mapa pamięci

21

background image

Mapa pamięci

22

background image

Karta pomiarowa - pomiar odcinka czasowego

23

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Przebiegi sterujące pracą pamięci

CLKPCI

ADS

WR

RD

WE

B

CLK

B

pasożytniczy odczyt

zapis

odczyt

33

background image

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

background image

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

background image

VHDL - przykład kodu

36

background image

VHDL - interfejs

37

background image

VHDL - interfejs

38

background image

VHDL - interfejs

39

background image

VHDL - interfejs

40

background image

VHDL - interfejs

41

background image

Sterownik - moduł Linuksa

42

background image

Sterownik - moduł Linuksa

43

background image

Sterownik - moduł Linuksa

44

background image

Sterownik - moduł Linuksa

45

background image

Sterownik - moduł Linuksa

46

background image

Sterownik - moduł Linuksa

47

background image

Sterownik - moduł Linuksa

48

background image

Sterownik - moduł Linuksa

49

background image

Sterownik - moduł Linuksa

50

background image

PCI Express

Dariusz Chaberski

background image

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

background image

PCI-Express - koncepcja skalowalności

§ PCI-Express x1 - 18 wyprowadzeń, ..., x16 - 82 wyprowadzenia

3

background image

Pojedyncze połączenie LVDS

4

background image

Wzmacniacz różnicowy

5

background image

Wyprowadzenia 1x

SMCLK, SMDAT - System Management Bus

6

background image

Wyprowadzenia 4x

7

background image

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

background image

Warstwy

9

background image

Physical Layer

10

background image

Zrównoleglenie przesyłania danych

11

background image

Zrównoleglenie przesyłania danych

12

background image

Idea

13

background image

PEX 8111

14

background image

Schemat blokowy

15

background image

Podłączenie Forward Bridge

16

background image

Podłączenie Forward Bridge

17

background image

Podłączenie Reverse Bridge

18

background image

Podłączenie Reverse Bridge

19

background image

PEX 8311

20

background image

Podłączenie

21

background image

Tryby pracy magistrali lokalnej

22

background image

Odczyt - tryb magistrali C

23

background image

Odczyt - tryb magistrali J

24

background image

ISA

Dariusz Chaberski

background image

ISA (ang. Industry Standard Architecture)

§ rodzaje

+ 8 bitów - komputery klasy IBM XT

+ 16 bitów - komputery klasy IBM AT

2

background image

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

background image

ISA i PCI - porównanie

4

background image

Przykładowa karta

5

background image

Rejestrator dźwięku

8 bitów, 4 - 22 kHz, mono

DMA, IRQ, ISA

DOS

aplikacja tekstowa, język Turbo Pascal

6

background image

Rozpoczęcie próbkowania ADC

7

background image

Podłączenie przetwornika ADC

8

background image

Bufory i dekodery adresów

9

background image

Przełącznik przerwań

10

background image

Podłączenie przetwornika DAC

11

background image

Układ pomiaru częstotliwości

12

background image

Tor analogowy

13

background image

Informacja o wyborze wejścia

14

background image

15

background image

16

background image

17

background image

18

background image

Tablica próbek - Turbo Pascal

19

background image

Programowanie kontrolera DMA 8237A

20

background image

Programowanie kontrolera DMA 8237A

21

background image

Maskowanie przerwań

22

background image

Funkcje obsługi przerwania

23

background image

Funkcje obsługi przerwania

24

background image

Program główny - inicjalizacja

25

background image

Program główny - pętla

26

background image

Zapis

27

background image

Zapis

28

background image

Zapis

29

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Porty wejścia i wyjścia:

Budowa

9

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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


Document Outline


Wyszukiwarka

Podobne podstrony:
całość wykłady zarządzanie zasobami ludzkimi
ekonomika Całość wykłady
Dr Slawomir Banaszak - metodologia -calosc - wyklad (1), Podręczniki, Metodologia badań społecznych
GN calosc wyklady, Studia - Gospodarka Przestrzenna, Licencjat, Gospodarka Nieruchomościami
CAŁOŚĆ WYKŁADY, Filozofia 2007-2010, Rok IV (2010-2011)
Antropologia kulturowa - calosc wykladow
Analiza calosc wykładów 2008 rok, Materiały Ula, analiza
egzamin całościowy, Wykłady
fizykochemia całość wykład, sgsp, Fizykochemia
calosc wykladow z socjologii, KPSW EPiW, SEMESTR I, Współczesne problemy socjologii dr Budrewicz
calosc wykladow, OCHRONA ŚRODOWISKA, planowanie przestrzenne
Całość wykłady, chomikowane nowe, ekonomia
calosc wykladow z pedagogiki ogolnej, pedagogika
ZEGAR - całość, wykłady i notatki, dydaktyka matematyki, matematyka przedszkole i 1-3

więcej podobnych podstron