Académique Documents
Professionnel Documents
Culture Documents
FACULTATEA DE INGINERIE
DAN ROTAR MARIUS ANGHELU
ARHITECTURA SISTEMELOR
DE CALCUL
Note de curs
Indrumar de laborator
EDITURA ALMA MATER BACU
2007
3
Cuprins
pag.
CAPITOLUL 1 6
BAZE DE NUMERAIE 6
1.1. Introducere 6
1.2. Baza de numeraie zece 7
1.3. Baza de numeraie doi 7
1.3.1. Conversia binar-zecimal 8
1.3.2. Conversia zecimal-binar 10
1.4. Baza de numeraie opt (sistemul octal) 12
1.5. Baza de numeraie aisprezece (sistemul hexazecimal) 13
CAPITOLUL 2
OPERAII ARITMETICE 14
2.1. Introducere 14
2.2. Operaii aritmetice cu numere binare 14
2.2.1. Adunarea 14
2.2.2. Scderea 15
2.2.3. nmulirea 16
2.2.4. mprirea ntreag 17
2.3. Operaii aritmetice cu numere reprezentate n octal i hexazecimal 18
2.3.1. Adunarea i scderea n octal 19
2.3.2. Adunarea i scderea n hexazecimal 20
CAPITOLUL 3
ARHITECTURA SISTEMELOR DE CALCUL 21
3.1. Introducere 21
3.2. Arhitectura von Neumann 25
3.3. Arhitectura Harvard 26
CAPITOLUL 4
UNITATEA CENTRAL 29
Introducere 29
4.2. Microprocesorul universal (structura general a unui microprocesor) 32
4
4.3. Caracteristicile principalelor tipuri de microprocesoare 33
4.3.1. Microprocesorul ZILOG Z80 33
4.3.2. Microprocesoarele INTEL 80x86 34
4.3.2.1. Microprocesorul INTEL 8086/8088 37
4.4. Procesoare de semnal digitale 51
4.4.1. Procesorul de semnal digital, TMS320F240 54
4.5. Microcalculatoare integrate, microcontrolere 58
4.5.1. Prezentare general 58
4.5.2. Microcontrolerul AT90S2313 59
4.5.3. Microcontrolerul PIC 16F877 62
CAPITOLUL 5
MEMORIA 76
5.1. Prezentare general 76
5.2. Aplicarea principiului "cache n sistemele de calcul 82
5.2.1. Memoria Cache 82
5.2.2. Cache-ul de disc 85
5.2.3. Cache-ul microprocesorului 86
5.2.4. Cache-ul cu adresare direct (direct mapped) 87
5.2.5. Cache-ul cu adresare asociativ (fully associative) 87
5.2.6. Cache-ul parial asociativ (set-associative) 88
5.3. Gruparea memoriilor 89
5.3.1. Creterea capacitii memoriei prin creterea numrului de linii de
date
91
5.3.2. Gruparea memoriilor pentru creterea numrului de linii de adres 92
5.3.3. Gruparea mixt 94
5.4. Adresarea memoriilor 94
5.4.1. Adresarea absolut 94
5.4.2. Adresarea relativ (redundant) 95
CAPITOLUL 6
PORTURI (INTERFEE)
6.1. Prezentare general 96
6.2. Interfaa serial programabil 8251 99
6.3. Interfaa logic programabil 8255 107
6.4. Interfaa USB (Universal Serial Bus) 115
6.4.1. Introducere 115
6.4.2. Prezentarea Universal Serial Bus 118
6.4.2.1. Vitezele USB 118
6.4.2.2. Conectorii 120
6.4.2.3. Caracteristici electrice 121
6.4.2.4. Identificarea vitezei 121
6.4.2.5. Alimentarea V
BUS
123
6.4.2.6. Protocolul 123
6.5. Interfeele microcontrolerelor 125
6.5.1. Modulul convertor analog-digital (A/D) 126
5
6 6. .5 5. .1 1. .1 1. . C Ce er ri in n e el le e a ac ch hi iz zi i i ie ei i a an na al lo og g- -d di ig gi it ta al le e 130
6 6. .5 5. .1 1. .2 2. . S Se el le ec c i ia a c ce ea as su ul lu ui i c co on nv ve er rs si ie ei i a an na al lo og g- -d di ig gi it ta al le e 131
6 6. .5 5. .1 1. .3 3. . C Co on nv ve er rs si ia a A A/ /D D 132
CAPITOLUL 7
CIRCUITE SPECIALE
7.1. Introducere 133
7.2. Controlerul de ntreruperi programabil 8259 133
7.3. ntreruperile microcontrolerului TMS320F240 139
7.3.1. ntreruperile managerului de evenimente (EV) 140
7.4. Accesul direct la memorie (DMA) 149
7.4.1. Circuitul 8257 pentru acces direct la memorie DMA 151
7.4.1.1. Conexiunile externe 151
7.4.1.2. Registrele interne ale 8257 153
7.4.1.3. Registrele de canal 154
7.4.1.4. Registrul de mod 155
7.4.1.5. Registrul de stare 156
7.4.1.6. Efectuarea transferurilor cu DMA 8257 157
7.5. Circuitul contor/periodizator programabil 8253 159
7.6. Circuitele timer ale microcontrolerelor 165
7.6.1. Timerele de uz general GPTimer 165
LABORATOR
Laborator 1. Utilizarea interfeei seriale 186
Laborator 2. Comunicaia ntre sistemele de calcul 190
Laborator 3. Utilizarea interfeei paralele 197
Laborator 4. Comanda unui motor pas cu pas prin interfaa
paralel
203
Laborator 5. Studiul convertorului analog numeric 211
Laborator 6. Programe pentru determinarea structurii
i a performanelor sistemului de calcul
218
Laborator 7. Metode de testare a memoriei 222
Bibliografie 226
6
CAPITOLUL 1
BAZE DE NUMERAIE
1.1. Introducere
Valorile numerelor pot fi exprimate n diferite baze de numeraie. Astfel, n
activitile umane obinuite baza de numeraie folosit este baza zece. Nu acelai lucru
se ntmpl n sistemele numerice. Din considerente tehnologice, n sistemele numerice
nu putem reprezenta dect dou numere: zero i unu. De regul valoarea zero este
asociat cu un nivel sczut de tensiune iar valoarea unu este asociat cu un nivel ridicat
de tensiune, diferena dintre tensiunea asociat valorii zero i cea asociat valorii unu
asigurnd securitatea la perturbaii a sistemului numeric (n sensul c dac diferena
ntre cele dou tensiuni crete, crete i imunitatea la perturbaii a sistemului numeric).
O baz de numeraie presupune existena unui numr de simboluri (numite
adesea cifre) cu ajutorul crora vor fi reprezentate numerele, un mod de scriere a
numerelor i o relaie de calcul a valorii numrului. Numrul simbolurilor utilizate ntr-
o baz de numeraie definete numele bazei de numeraie. Reprezentarea numerelor se
face n prezent n exclusivitate prin scrierea poziional adic poziia numrului exprim
i rangul acestuia (exponentul bazei de numeraie). Simbolul (cifra) cel mai din dreapta
reprezentrii numrului are rangul minim (zero) iar simbolul (cifra) cel mai din stnga
din reprezentarea numrului are rangul cel mai mare. Calculul valorii numrului se face
prin nmulirea valorii simbolului cu baza la puterea rangului. Atunci cnd se lucreaz
cu mai multe baze de numeraie simultan este obligatorie indicarea bazei de numeraie
la fiecare numr scris. Acest lucru se face prin scrierea valorii bazei de numeraie ca
indice. De exemplu: 12
10
sau 100110101
2
sau 1B2C
16
. Pentru indicarea bazei de
numeraie pot fi utilizate i litere astfel:
z (zecimal) pentru baza 10
b (binar) pentru baza 2
o (octal) pentru baza 8
h (hexazecimal) pentru baza 16.
Exemplul de mai sus poate fi scris i: : 12
z
sau 100110101
b
sau 1B2C
h
.
n continuare vor fi prezentate principalele baze de numeraie utilizate n
sistemele numerice.
7
1.2. Baza de numeraie zece
Aa cum s-a artat, baza de numeraie zece, cea utilizat n activitile umane,
presupune existena a zece simboluri distincte pentru reprezentarea numerelor. Aceste
simboluri sunt:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Reprezentarea numerelor este poziional deci atunci cnd scriem un numr,
poziia acestuia va reprezenta rangul su:
rang: 4 3 2 1 0
simbol: 7 5 2 1 3
Valoarea numrului reprezentat mai sus este: apte zeci i cinci de mii dou sute
treisprezece. Aceasta valoare a rezultat din regula prezentat mai sus adic:
valoare numr = 7 x 10
4
+ 5 x 10
3
+ 2 x 10
2
+ 1 x 10
1
+ 3 x 10
0
1.3. Baza de numeraie doi
Numerele reprezentate n baza doi sunt numite n mod obinuit numere binare.
n baza doi sunt necesare numai dou simboluri pentru reprezentarea numerelor i
acestea sunt: 0 (zero) i 1 (unu). Datorit faptului c
sistemele numerice lucreaz, aa cum s-a artat mai sus, n
sistem binar, studiul reprezentrii numerelor n baza doi
este important atunci cnd vorbim de tehnologia DSP. De
asemenea prin asocierea unor valori de adevr celor dou
simboluri: 0 fals (false) i 1 adevrat (true) sistemele
numerice vor putea lucra n logic binar sau Boolean.
Abordarea logicii binare va fi fcut mai trziu n
cuprinsul acestui manual.
Revenind la scrierea numerelor n baza doi trebuie
spus faptul c toate regulile stabilite la baza zece se aplic
i aici. De exemplu, dac vom scrie numrul binar:
rang 6 5 4 3 2 1 0
numr: 1 0 1 1 0 0 1
atunci valoarea acestuia va fi:
valoare = 1 x 2
6
+ 0 x 2
5
+ 1 x 2
4
+ 1 x 2
3
+ 0 x 2
2
+
+ 0 x 2
1
+ 1 x 2
0
= 64
z
+ 16
z
+ 8
z
+ 1
z
= 89
z
TABELUL 1.1.
Numr
binar
Numr
zecimal
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 10
1011 11
1100 12
1101 13
1110 14
1111 15
n tabelul 2.1 este prezentat echivalena primelor
8
16 numere binare cu cele zecimale. Pentru acest tabel putem face urmtoarele
observaii:
o dac citim numerele binare din acest tabel pe coloan observm faptul c
succesiunea cifrelor zero i unu depinde de rangul cifrei. Astfel la rangul
zero ntlnim succesiunea 0,1,0,1,0,1, ... , la rangul unu succesiunea
0,0,1,1,0,0,1,1, ... , i aa mai departe;
o un numr zecimal putere a lui doi va determina o cifr binar cu un
singur simbol unu pe poziia exponentului puterii lui doi.
Este evident faptul c atunci cnd se dorete conversia numerelor dintr-o baz n
alta este dificil de utilizat tabele, n special atunci cnd se lucreaz cu numere mari. Din
acest motiv se stabilesc anumii algoritmi de conversie pentru simplificarea translatrii
numerelor dintr-o baz n alta.
1.3.1. Conversia binar-zecimal
Conversia unui numr binar ntreg n echivalentul su zecimal, cunoscnd c
operaiile se efectueaz n sistemul zecimal, se face cu ajutorul metodei nmulirii
repetate cu 2. Pentru a justifica, se consider numrul binar P exprimat prin:
P = b
n-1
2
n-1
+ b
n-2
2
n-2
+ .... + b
1
2
1
+ b
0
2
0
sau:
P = ({[ (b
n-1
2 + b
n-2
) 2 + b
n-3
] 2 + b
n-4
} 2 + .... + b
1
) 2 + b
0
P
1
P
2
relaie din care rezult algoritmul conversiei numerelor ntregi binare n numere
zecimale:
o pentru a forma mrimea intermediar P
1
se nmulete cu 2 cifra cea mai
semnificativ (cifra de rang maxim) a numrului binar, adugnd
urmtoarea cifr semnificativ;
o pentru a obine mrimea intermediar P
2
, se nmulete P
1
cu 2 adugnd
cea de-a treia cifr semnificativ;
o se continu acest algoritm pn la adugarea cifrei cel mai puin
semnificative a numrului binar (cea de rang minim);
o numrul zecimal obinut este echivalentul zecimal al numrului binar
dat.
EXEMPLU
S se transforme numrul binar 10110110111 n echivalentul su zecimal:
9
Q = 2
-1
(b
-1
+ 2
-1
{ b
-2
+ 2
-1
[b
-3
+ .... + 2
-1
(b
-m+1
+ 2
-1
b
-m
)]})
1 x 2 + 0 = 2 P
1
= 2
2 x 2 + 1 = 5 P
2
= 5
5 x 2 + 1 = 11 P
3
= 11
11 x 2 + 0 = 22 P
4
= 22
22 x 2 + 1 = 45 P
5
= 45
45 x 2 + 1 = 91 P
6
= 91
91 x 2 + 0 = 182 P
7
= 182
182 x 2 + 1 = 365 P
8
= 365
365 x 2 + 1 = 731 P
9
= 731
731 x 2 + 1 = 1463 P
8
= 1463
deci: 10110110111
B
= 1463
Z
Pentru conversia binar-zecimal a unui numr binar fracionar se folosete
metoda mpririi repetate cu 2. Pentru a justifica, se consider numrul binar fracionar
Q dat de:
Q = b
-1
2
-1
+ b
-2
2
-2
+ .... + b
-m
2
-m
care poate fi pus i sub forma:
Q
1
de unde rezult algoritmul conversiei numerelor binare fracionare n numere zecimale:
o pentru a obine mrimea intermediar Q
1
se mparte cifra cea mai puin
semnificativ (de rang minim) cu 2, adugnd urmtoarea cifr
semnificativ;
o pentru a obine mrimea intermediar Q
2
se mparte Q
1
cu 2 adugnd a
treia a treia cifr de la dreapta spre stnga cifr semnificativ;
o se continu acest algoritm pn cnd mprirea care corespunde cifrei 0
de la stnga virgulei a fost efectuat;
o numrul obinut este echivalentul zecimal al numrului binar dat.
EXEMPLU
S se transforme numrul binar fracionar 0,001101111 n echivalentul su zecimal:
1 : 2 + 1 = 1,5 Q
1
= 1,5
1,5 : 2 + 1 = 1,75 Q
2
= 1,75
1,75 : 2 + 1 = 1,875 Q
3
= 1,875
1,875 : 2 + 0 = 0,9375 Q
4
= 0,9375
0,9375 : 2 + 1 = 1,46875 Q
5
= 1,46875
1,46875 : 2 + 1 = 1,734375 Q
6
= 1,734375
1,734375 : 2 + 0 = 0,8671875 Q
7
= 0,8671875
10
0,8671875 : 2 + 0 = 0.4335937 Q
8
= 0,4335937
0,4335937 : 2 + 0 = 0,2167968 Q
9
= 0,2167968
deci: 0,001101111
B
= 0,2167968
Z
Dac se cere conversia unui numr binar care are att parte ntreag ct i parte
fracionar n echivalentul su zecimal, se aplic prii ntregi algoritmul corespunztor
conversiei numerelor ntregi, iar prii fracionare algoritmul corespunztor prii
fracionare.
1.3.2. Conversia zecimal-binar
Conversia zecimal-binar a numerelor ntregi se face dup metoda mpririi
repetate prin 2. Pentru a justifica aceasta, se consider numrul ntreg N n baza 10, care
poate fi exprimat n funcie de puterile lui 2 sub urmtoarea form :
N = a
n-1
2
n-1
+ a
n-2
2
n-2
+ .... + a
1
2
1
+ a
0
2
0
sau:
N = (a
n-1
2
n-2
+ a
n-2
2
n-3
+ .... + a
1
)
2 + a
0
= N
1
2 + a
0
Din ultima egalitate rezult c cifra cea mai semnificativ a
0
din reprezentarea binar a
numrului N constituie restul mpririi lui N cu 2.
n mod analog, numrul N
1
se poate exprima prin :
N = (a
n-1
2
n-3
+ a
n-2
2
n-4
+ .... + a
2
)
2 + a
1
= N
2
2 + a
1
Adic a
1
, care reprezint cifra semnificativ de rang imediat urmtor n reprezentare
binar, constituie restul mpririi lui N
1
cu 2.
De aici rezult algoritmul conversiei numerelor ntregi zecimale n numere
binare:
o se mparte numrul ntreg n baza zece N prin 2; se obine ctul N
1
i
restul a
0
;
o se mparte ctul N
1
prin 2; se obine ctul N
2
i restul a
1
;
o se continu aceast operaie pn se ajunge la un ct N
n
egal cu zero;
o resturile obinute sunt cifrele numrului binar (biii), a
0
fiind cifra cea
mai puin semnificativ, a
1
cifra urmtoare . a. m. d.
EXEMPLU
S se transforme numrul zecimal 53 n echivalentul su binar.
53 : 2 = 26 + 1 a
0
= 1
26 : 2 = 13 + 0 a
1
= 0
11
13 : 2 = 6 + 1 a
2
= 1
6 : 2 = 3 + 0 a
3
= 0
3 : 2 = 1 + 1 a
4
= 1
1 : 2 = 0 + 1 a
5
= 1
Deci 53
10
= 110101
2
Folosind acelai algoritm se prezint un alt mod de aranjare a calculelor, n aa
fel, ca la sfritul operaiei s se obin direct numrul binar fr a fi necesar rescrierea
sa. n acest sens, se aeaz succesiunea calculelor dup schema prezentat mai jos, unde
al n-lea ct este ultimul ct, egal cu zero :
Ct n Ct (n 1) Ct (n 2) .... Ct 2 Ct 1 Numr
Rest n Rest (n-1) .... Rest 3 Rest 2 Rest 1
Considernd acelai exemplu se obine :
0 1 3 6 13 26 53
1 1 0 1 0 1
Conversia zecimal-binar a numerelor fracionare se face dup metoda nmulirii
repetate cu 2. Pentru a justifica, se consider numrul fracionar zecimal M, care poate
fi exprimat n funcie de puterile numrului 2 prin :
M = a
-1
2
-1
+ a
-2
2
-2
+ .... + a
-m
2
-m
Prin nmulirea ambelor pri ale ecuaiei de mai sus cu 2, se obine :
2 M = a
-1
+ (a
n-2
2
-1
+ .... + a
-m
2
-m+1
) = a
-1
+ M
1
partea dreapt a egalitii fiind format din numrul ntreg a
-1
, care reprezint cifra cea
mai semnificativ a numrului binar subunitar i fracia M
1
. Aplicnd acelai procedeu
lui M
1
, rezult:
2 M
1
= a
-2
+ (a
n-3
2
-1
+ .... + a
-m
2
-m+2
) = a
-2
+ M
2
adic se obine urmtoarea cifr semnificativ a
-2
a numrului fracionar binar i fracia
M
2
.
Cu aceasta, algoritmul conversiei numerelor fracionare zecimale n numere
fracionare binare este urmtorul:
o se nmulete numrul zecimal fracionar M cu 2; rezult bitul a
-1
i
partea fracionar M
1
;
o se nmulete partea fracionar M
1
cu 2; rezult bitul a
-2
i partea
fracionar M
2
;
12
o se continu aceast operaie pn cnd M
m
devine egal cu zero sau ne
limitm la un numr de cifre binare n funcie de precizia impus.
EXEMPLU
1. S se transforme numrul 0,40625 n echivalentul su binar.
0,40625 x 2 = 0,81250 a
-1
= 0
0,8125 x 2 = 1,6250 a
-2
= 1
0,625 x 2 = 1,250 a
-3
= 1
0,25 x 2 = 0,5 a
-4
= 0
0,5 x 2 = 1,0 a
-5
= 1
deci 0,40625
z
= 0,01101
b
2. S se transforme numrul zecimal 0,7 n echivalentul su binar.
0,7 x 2 = 1,4 a
-1
= 1
0,4 x 2 = 0,8 a
-2
= 0
0,8 x 2 = 1,6 a
-3
= 1
0,6 x 2 = 1,2 a
-4
= 1
0,2 x 2 = 0,4 a
-5
= 0
0,4 x 2 = 0,8 a
-6
= 0
...........................................................
deci 0,7
10
= 0,101100....
2
1.4. Baza de numeraie opt (sistemul octal)
Utilizatorii primei generaii de calculatoare au ntmpinat dificulti n
manevrarea cifrelor binare, ntruct un numr exprimat n sistemul binar are o lungime
de circa trei ori mai mare dect n exprimarea zecimal. Din acest motiv, s-a cutat un
sistem de numeraie mai apropiat de baza zece, cu o contingen direct cu sistemul
binar. Cunoscnd c 8 este o putere ntreag a lui 2 (2
3
= 8), aceste caliti sunt ntrunite
de sistemul de numeraie octal, care are opt cifre pentru exprimare, de la 0 la 7 inclusiv.
Ca urmare, conversia binar octal i octal binar se poate face direct, n primul caz
nlocuind un grup de trei cifre binare socotite de la dreapta i de la stnga virgulei prin
echivalentul lor octal, iar n al doilea caz nlocuind fiecare cifr octal printr-un grup de
trei cifre binare.
EXEMPLU
1. S se transforme numrul binar 10111,00 11 n echivalentul su octal.
010 111, 001 100
2
= 27,14
8
2 7, 1 4
13
2. S se transforme numrul octal 26,341 n echivalentul su binar.
26,341
8
= 010 110, 011 100 001
2
2 6, 3 4 1
Prin folosirea sistemului octal, calculele binare sau structura informaiei din
interiorul calculatorului nu se schimb, structur care poate fi verificat cu uurin din
exterior. Din acest motiv, calculatoarele din prima i a doua generaie aveau o lungime a
cuvntului egal cu un multiplu a lui 3, obinuit 24, 36 sau 42 de bii, pentru a facilita
trecerea din sistemul octal n binar sau invers.
Se menioneaz c pentru transformarea numerelor din baza de numeraie 10 n
baza de numeraie 8 sau invers, cu calculele fcute n baza 10, toi algoritmii dedui
anterior rmn valabili, cu observaia c nmulirile, respectiv mpririle prin 2 se
nlocuiesc cu nmuliri, respectiv mpriri, cu 8.
1.5. Baza de numeraie aisprezece (sistemul hexazecimal)
Pentru a reprezenta n calculator alte caractere dect numere, adic litere, semne
de punctuaie etc. (caractere alfanumerice), au fost utilizate iniial 6 cifre binare. n
cursul operaiilor de citire sau imprimare, dispozitivul respectiv fcea automat
transformarea fiecrui caracter n cele 6 cifre binare sau invers.
Folosind 6 cifre binare, adic dou cifre octale, nu puteau fi reprezentate dect
64 de caractere distincte. Acest numr de caractere s-a dovedit a fi n scurt timp
insuficient pentru aplicaiile practice i din acest motiv s-a trecut, la majoritatea
calculatoarelor generaiei a treia, la alocarea a 8 cifre binare, adic dou hexazecimale,
fiecrui caracter. Un grup de 8 cifre binare este cunoscut i sub denumirea de octet sau
byte i reprezint cea mai mic diviziune a informaiei care poate fi prelucrat n aceste
calculatoare.
ntruct baza de numeraie 16 este mai mare ca baza de numeraie 10, cifrele mai
mari de 9 sunt notate n ordine cu literele alfabetului latin, adic :
A zece
B unsprezece
C doisprezece
D treisprezece
E paisprezece
F cincisprezece.
Pentru conversia din baza 10 n 16 sau invers, sunt utilizate aceleai metode,
fcndu-se calculele n baza 10.
Conversia binar-hexazecimal i hexazecimal-binar se face n mod similar celei
binar-octale, respectiv octal-binare, cu observaia c se vor lua grupe de cte 4 cifre
binare n loc de 3.
14
CAPITOLUL 2
OPERAII ARITMETICE
2.1. Introducere
n acest capitol se vor prezenta operaiile aritmetice simple realizate cu numere
binare (numere reprezentate n baza doi), numere octale (numere reprezentate n baza
opt) sau hexazecimale (numere reprezentate n baza aisprezece).
Pentru exemplificarea operaiilor efectuate se vor folosi numai numere ntregi
pozitive (numere naturale) deoarece acesta este modul de baz al reprezentrii
informaiei ntr-un sistem de calcul numeric.
2.2. Operaii aritmetice cu numere binare
2.2.1. Adunarea
Operaia de adunare poate fi descris cu ajutorul celor patru combinaii posibile
ntre dou numere binare:
0 + 0 = 0; transport la rangul superior: 0
0 + 1 = 1; transport la rangul superior: 0
1 + 0 = 1; transport la rangul superior: 0
1 + 1 = 0; transport la rangul superior: 1
n mod obinuit se scrie: 1
b
+ 1
b
= 10
b
deoarece n aceast situaie avem un
transport la rangul superior. Este evident faptul c: 10
b
= 2
z
.
EXEMPLE
1) S se adune numrul binar 110111 cu numrul binar 101.
transport 111
110111 +
101
111100
putem efectua verificarea in zecimal: 110111
b
= 55
z
, 101
b
= 5
z
, 111100
b
= 60
z
.
Verificarea este imediat. Se observ c dac trebuie s adunm un ir de n cifre
unu n binar, rezultatul pe rangul respectiv va fi zero dac numrul de cifre unu adunate
este par sau unu dac numrul de cifre adunate este impar iar transportul se face peste
15
n:2 (mprire ntreag) ranguri pornind de la rangul respectiv (cel la care se efectueaz
adunarea).
2) S se adune numrul binar 11111 cu numrul binar 1.
transport 1111
11111 +
1
100000
De fapt rezultatul poate fi vzut imediat dac ne uitm la tabelul 1.1. Dup un
numr cu o succesiune de cifre unu urmeaz un numr binar care are o cifr unu
urmat de o succesiune de cifre zero. Numrul cifrelor zero este egal cu numrul
cifrelor unu al numrului care se adun. De exemplu 1111
b
+ 1
b
= 10000
b
.
2.2.2. Scderea
Operaia de scdere poate fi descris cu ajutorul celor patru combinaii posibile
ntre dou numere binare:
0 0 = 0; mprumut de la rangul superior: 0
0 1 = 1; mprumut de la rangul superior: 1
1 0 = 1; mprumut de la rangul superior: 0
1 1 = 0; mprumut de la rangul superior: 0
n mod obinuit se scrie: 10
b
1
b
= 1
b
deoarece n aceast situaie avem un mprumut de
la rangul superior. Este evident faptul c: 10
b
= 2
z
.
EXEMPLE
1) S se efectueze scderea numerelor binare: 11001 i 11.
mprumut 11
11001
11
10110
Verificarea n zecimal: 11001
b
= 25
z
, 11
b
= 3
z
, 10110
b
= 22
z
. 25
z
3
z
= 22
z
.
2) S se efectueze scderea 11001 1011.
mprumut 111
11001
1011
01110
Verificarea n zecimal: 11001
b
= 25
z
, 1011
b
= 11
z
, 1110
b
= 14
z
. 25
z
11
z
= 14
z
.
16
Se pot face observaii similare cu cele de la adunare.
3) S se scad din 1000
b
valoarea 1. Rspunsul este imediat: 111
b
.
2.2.3. nmulirea
Operaia de nmulire poate fi descris cu ajutorul celor patru combinaii posibile
ntre dou numere binare:
0 x 0 = 0; 0 x 1 = 0; 1 x 0 = 0; 1 x 1 = 1.
Operaia de nmulire se efectueaz identic cu cea din baza zece. Vom analiza n
continuare cteva exemple.
EXEMPLE
1) S se efectueze nmulirea n binar: 110101 x 1101.
110101 x
1101
110101
000000
110101
110101
1010110001
Verificarea n zecimal: 110101
b
= 53
z
, 1101
b
= 13
z
, 1010110001
b
= 689
z
.
Rezult 53
z
x 13
z
= 689
z
.
Din acest exemplu se observ c operaia de nmulire poate fi nlocuit cu
operaii de deplasare a denmulitului spre stnga i adunarea rezultatelor obinute.
Pentru aceasta se parcurge nmulitorul de la dreapta la stnga cifr cu cifr. Pentru
fiecare cifr unu a nmulitorului se scrie denmulitul deplasat spre stnga cu un numr
de cifre egal cu rangul cifrei unu a nmulitorului. La final se sumeaz rezultatele
obinute.
2) S se efectueze nmulirea numrului 101101 cu numrul 1101.
Vom aplica metoda deplasrii spre stnga a denmulitului i adunarea irurilor
obinute.
denmulitul deplasat la stnga cu 0 pai 101101
denmulitul deplasat la stnga cu 2 pai 101101
denmulitul deplasat la stnga cu 3 pai 101101
rezultatul (suma) 1001001001
Verificarea n zecimal: 101101
b
= 45
z
, 1101
b
= 13
z
, 1001001001
b
= 585
z
.
Rezult: 45
z
x 13
z
= 585
z
.
17
2.2.4. mprirea ntreag
Operaia de mprire poate fi descris cu ajutorul celor patru combinaii posibile
ntre dou numere binare:
0 : 0 = 0; 0 : 1 = 0; 1 : 0 = imposibil; 1 : 1 = 1.
Operaia de mprire se efectueaz identic cu cea din baza zece. Vom analiza n
continuare cteva exemple.
EXEMPLE
1) S se efectueze mprirea numrului 11010110101 cu 1011.
11010110101 1011
1011 10011100
0010011
1011
10000
1011
001011
1011
000001
Rezultatul este: 10011100 rest 1. Verificarea n zecimal: 11010110101
b
= 1717
z
,
1011
b
= 11
z
, 10011100
b
= 156
z
. 1717
z
: 11
z
= 156
z
rest 1.
Din acest exemplu se observ faptul c operaia de mprire ntreag se reduce
la operaii succesive de deplasare la dreapta a mpritorului i scderi din demprit,
ncepnd de la cifrele de rang maxim ale dempritului. Se continu cu dempritul
nemodificat dac rezultatul scderii este negativ sau cu rezultatul scderii dintre
demprit i mpritor dac rezultatul scderii este zero sau pozitiv. La fiecare scdere
se noteaz cifra ctului care este unu dac rezultatul scderii este zero sau pozitiv
(scderea se poate efectua) sau zero dac rezultatul scderii este negativ (scderea nu se
poate efectua). Operaia de scdere se oprete cnd se efectueaz o scdere din bitul de
rang zero al dempritului. Valoarea dempritului rmas constituie restul mpririi.
2) S se efectueze mprirea dintre numerele 111101101 si 101.
Vom apela la procedeul deplasrii la dreapta a mpritorului i scderea din
demprit.
111101101
101
010 - rezultatul scderii este pozitiv deci se continu cu valoarea
rmas n urma scderii i se face o deplasare la dreapta; ct = 1
18
010101101
101
0000 - rezultatul scderii este zero deci se continu cu valoarea rmas
n urma scderii i se face o deplasare la dreapta; ct = 11
000001101
101 - rezultatul scderii este negativ deci nu se efectueaz scderea i
se face deplasarea dreapta a mpritorului; ct = 110
000001101
101 - rezultatul scderii este negativ deci nu se efectueaz scderea i
se face deplasarea dreapta a mpritorului; ct = 1100
000001101
101 - rezultatul scderii este negativ deci nu se efectueaz scderea i
se face deplasarea dreapta a mpritorului; ct = 11000
000001101
101
001 - rezultatul scderii este pozitiv deci se continu cu valoarea
rmas n urma scderii i se face o deplasare la dreapta; ct =
110001
000000011
101 - rezultatul scderii este negativ deci nu se efectueaz scderea;
ct = 1100010 iar restul este 11 deoarece s-a ncercat scderea din
cifra de rang zero a dempritului.
Verificarea n zecimal: 111101101
b
= 493
z
, 101
b
= 5
z
, 1100010
b
= 98
z
, 11
b
= 3
z
.
493
z
: 5
z
= 98
z
rest 3
z
.
2.3. Operaii aritmetice cu numere reprezentate n octal i
hexazecimal
Reprezentarea numerelor n octal sau hexazecimal se face, aa cum s-a artat, n
scopul creterii claritii reprezentrii valorilor numerice. Trebuie subliniat aici, nc o
dat, c n sistemele numerice de calcul, singurul mod de reprezentare a informaiei este
cel binar. Utilizarea altor baze de numeraie cum sunt cel octal sau cel hexazecimal se
face doar n scopul creterii claritii documentaiei nsoitoare. Baza de numeraie opt i
baza de numeraie aisprezece au avantajul c au baze puteri a lui doi i din acest motiv
permit scrierea condensat i comod a numerelor binare.
Toate operaiile efectuate n alt baz de numeraie dect baza zece se bazeaz
pe principii similare, aa cum s-a vzut i la descrierea operaiilor aritmetice n baza doi.
Este important de reinut faptul c atunci cnd rezultatul adunrii depete ca
valoare valoarea bazei se produce un transport n rangurile superioare iar cnd se
efectueaz scderea unui numr mai mare dintr-un numr mai mic se produce un
mprumut de la rangurile superioare (identic cu ceea ce deja tim de la operaiile n baza
zece).
Cele mai importante operaii efectuate n octal sau n hexazecimal sunt cele de
adunare i de scdere. Din acest motiv vom exemplifica pe scurt, n continuare modul n
care se efectueaz aceste operaii n cele dou baze de numeraie.
19
2.3.1. Adunarea i scderea n octal
Adunarea, exemple
1) S se adune numerele reprezentate n baza opt 723
o
cu 523
o
.
transport 1
723
o
+
523
o
1446
o
n rangul doi, la adunarea cifrelor 7
o
cu 5
o
se produce un transport deoarece 7
z
+
5
z
= 12
z
este o valoare mai mare dect valoarea bazei care este 8. n acest caz se
procedeaz astfel: se scade din valoarea obinut valoarea bazei 12
z
8
z
= 4
z
,
valoarea respectiv se scrie pe rangul doi i avem un transport la rangul 3.
Trebuie inut cont de faptul c n octal: 7
o
+ 1
o
= 10
o
.
2) S se efectueze adunarea n octal 375
o
+ 276
o
.
transport 11
375
o
+
276
o
673
o
Scderea, exemple
1) S se efectueze scderea n octal: 532
o
251
o
.
mprumut 1
532
o
251
o
261
o
La scderea de pe rangul unu: 3
o
5
o
, trebuie s se efectueze un mprumut din
rangul superior. O cifr mprumutat din rangul superior nseamn opt uniti n
rangul inferior. Deci, n urma mprumutului, avem: 8
z
+ 3
z
5
z
= 6
z
.
2) S se scad n octal din 453
o
264
o
.
mprumut 11
453
o
264
o
167
o
Verificarea n zecimal este imediat dac se face conversia din baza opt n baza
zece utiliznd relaia:
valoare zecimal = o
n-1
8
n-1
+ o
n-2
8
n-2
+ .... + o
1
8
1
+ o
0
8
0
20
unde: o
0
, o
1
, o
2
, , o
n
sunt cifrele numrului n baza opt.
2.3.2. Adunarea i scderea n hexazecimal
Avnd n vedere faptul c operaiile sunt similare cu cele din octal, cu excepia
faptului c baza are valoarea aisprezece, vom prezenta numai cte un exemplu pentru
adunare i unul pentru scdere.
Adunare, exemplu
S se adune numerele n hexazecimal: 2A57
h
+ 57B9
h
transport 111
2A57
h
+
57B9
h
8210
h
n acest caz depirea se produce cnd suma este mai mare dect aisprezece. De
exemplu, 7
z
+ 9
z
= 16
z
= 10
h
Scdere, exemplu
S se efectueze scderea: 5C2B
h
3ACF
h
.
mprumut 11
5C2B
h
3ACF
h
215C
h
n cazul mprumutului, de pe rangul superior se mprumuta aisprezece uniti.
De exemplu, n cazul B
h
F
h
, avem un mprumut i se obine: 16
z
+ 11
z
(B
h
) 15
z
(F
h
)
= 12
z
(C
h
).
21
CAPITOLUL 3
ARHITECTURA SISTEMELOR DE CALCUL
3.1. Introducere
Un sistem de calcul reprezint o main automat destinat prelucrrii
informaiilor. O astfel de main va interaciona cu mediul extern pentru preluarea
informaiilor de intrare i furnizarea informaiilor rezultate n urma prelucrrii
informaiei de intrare. Prelucrarea informaiei se face ntr-un anumit scop ceea ce
determin o anumit activitate intern a sistemului de calcul. n acest moment putem
distinge mai multe faze ale prelucrrii informaiei de ctre un sistem de calcul.
n primul rnd informaia prezentat la intrarea sistemului de calcul reprezint n
accepia general un semnal. Acest semnal are un suport fizic i este reprezentat de o
mrime electric, mecanic, optic etc. O astfel de mrime este descris de anumii
parametri msurabili i are un suport energetic care permite interaciunea cu aceast
mrime. O astfel de mrime trebuie s fie transformat (adaptat) n aa fel nct aceasta
s fie compatibil cu formatul de intrare acceptat de sistemul de calcul.
n al doilea rnd informaia o data prelucrat de sistemul de calcul trebuie
furnizat mediului extern ntr-un anumit format impus de aplicaia pentru care se
efectueaz prelucrarea informaiei. Este limpede c va fi necesar o nou transformare a
informaiei din formatul furnizat la ieire de ctre sistemul de calcul n formatul impus
de aplicaie.
n sfrit, n afar de cele dou faze ce implic transformri ale suportului
informaiei, putem distinge i a treia faz, cea a prelucrrii interne, n sistemul de calcul
a informaiei.
Pentru a asigura o flexibilitate ct mai mare a unui astfel de sistem, cele trei faze
ale prelucrrii informaiei vor fi asigurate de ctre elemente diferite. Astfel, o anumit
modificare ce s-ar impune pe parcurs nu va afecta dect un anumit element din structura
sistemului.
n prezent, cele trei faze ale prelucrrii informaiei, sunt realizate astfel:
- transformarea semnalelor ntr-un format compatibil cu cel acceptat de
intrarea sistemului de calcul i transformarea informaiei furnizate de
sistemul de calcul n semnale necesare aplicaiei, este realizat de ctre
dispozitivele periferice. Acestea, dei sunt strns legate de funcionarea
sistemului de calcul sunt considerate elemente externe sistemului de calcul;
- prelucrarea intern n sistemul de calcul a informaiei va fi faza de prelucrare
a informaiei care determin o anumit structur a sistemului de calcul.
Aceast structur va fi completat cu elemente de legtur cu dispozitivele
periferice, elemente ce poart denumirea generic de interfee.
22
Pentru nceput ne vom ocupa de structura intern a sistemului de calcul ce
constituie arhitectura intern a acestuia dup care se vor discuta cteva aspecte legate de
periferice ntregul reprezentnd arhitectura unui sistem de calcul.
Din punct de vedere al tipului informaiei prelucrate n sistemul de calcul, aceste
pot fi de dou tipuri:
- calculatoarele analogice care prelucreaz semnale continue n timp, adic
semnale ce sunt descrise de o funcie continu de timp;
- calculatoare numerice ce prelucreaz numere, adic informaia prezentat n
format numeric.
ntre aceste dou tipuri de calculatoare exist deosebiri eseniale dei amndou
sunt destinate prelucrrii informaiei. Primul aspect se refer la tipul informaiei
prelucrate. Dac la calculatoarele analogice informaia trebuie s aib un anumit nivel al
suportului energetic pentru ca aceasta s poat fi prelucrat, la calculatoarele numerice
informaia este lipsit de suportul energetic fiind reprezentat de elemente abstracte cum
sunt numerele. Acest lucru aduce o serie de avantaje importante n favoarea
calculatoarelor numerice ceea ce face ca utilizarea acestora s fie din ce n ce mai
rspndit.
Pentru a lmuri lucrurile vom considera un exemplu simplu. Un instrument de
msur a tensiunii (voltmetru) poate fi considerat ca un sistem de calcul foarte simplu.
Un astfel de instrument preia o informaie din mediul extern (tensiunea electric), o
adapteaz la formatul acceptat la intrare (de regul printr-un divizor de tensiune),
prelucreaz informaia (prin comparare cu un element etalon) i furnizeaz la ieire o
informaie compatibil cu aplicaia (n cazul cel mai simplu afind rezultatul
msurtorii ntr-un anumit fel). n cazul unui voltmetru analogic (cu instrument de
msur) informaia de intrare trebuie s furnizeze o anumit energie pentru ca
msurtoarea s poat fi efectuat (aceast energie preluat de la semnalul msurat va
determina o deplasare a acului indicator proporional cu mrimea msurat). n cazul
unui voltmetru numeric prelucrarea informaiei se face n principal prin transformarea
acesteia ntr-o valoare numeric. Din acest motiv energia preluat de la semnalul de
intrare va fi cu mult mai mic (aceast energie nemaijucnd nici un rol n prelucrarea
semnalelor). Vom aminti numai dou din concluziile ce pot fi desprinse din acest
exemplu: msurtoarea efectuat cu un instrument numeric este mai precis prin
scderea cantitii de energie preluate de la semnalul de intrare (cunoscndu-se faptul c
preluarea unei anumite cantiti de energie din semnalul de msurat duce la alterarea
acestuia) i mrimile reprezentate prin numere cum sunt cele de la voltmetrul numeric
nu pot fi influenate de condiiile de mediu (temperatur, presiune, umiditate etc) cum
sunt cele analogice prezente n cazul voltmetrului analogic.
Aa cum s-a afirmat, n interiorul sistemului de calcul se realizeaz o anumit
prelucrare a informaiei. Este important de vzut n ce fel anume se realizeaz aceast
prelucrare. Dac ne gndim la exemplul de mai sus este limpede c voltmetrul analogic
ndeplinete o anumit funcie prin modul n care este construit adic prin conexiunile
electrice existente ntre elementele componente. Un astfel de sistem se numete cu
logic cablat adic modul de prelucrare a informaiei este determinat de modul
23
particular de conectare a elementelor componente. Acelai lucru se poate realiza i n
cazul unui sistem numeric i deci i astfel de sisteme pot fi n logic cablat. Un sistem
realizat n logic cablat nu va putea ndeplini dect o anumit funcie (n exemplul
nostru, nu ne vom putea gndi s folosim voltmetrul la altceva dect la msurarea
tensiunii) cea pentru care s-a realizat un anumit mod de conectare ntre elementele
componente. Rezult c un sistem n logic cablat este lipsit de flexibilitate,
modificarea funciei ndeplinite presupunnd (cel puin) modificarea conexiunilor
existente i (eventual) necesitatea adugrii unor componente noi. Un astfel de sistem
are totui avantajul simplitii n sensul c el nu va conine dect elementele
componente strict necesare aplicaiei particulare pentru care este destinat.
Sistemele numerice prin faptul c prelucreaz informaia sub form numeric
permit realizarea unor structuri generale, independente de aplicaia pentru care vor fi
folosite. n aceast situaie prelucrarea intern a informaiei nu mai este legat de
conexiunile existente ntre elementele structurii fizice. Pe aceast structur fizic
generic (independent de aplicaie) prelucrarea informaiei se va face pe baza unui
program (list de comenzi) ce se va afla n memoria sistemului de calcul. Astfel de
sisteme se numesc cu logic programat. Ele sunt flexibile (schimbarea programului
nseamn schimbarea sau modificarea aplicaiei pentru care sunt destinate) dar i
redundante n sensul c structura fizic general poate avea mai multe elemente dect
sunt necesare pentru o anumit aplicaie.
Calculatoarele analogice nu pot fi construite dect n logic cablat pe cnd cele
numerice pot fi construite att n logic cablat ct i n logic programat. Trebuie
precizat aici faptul c, dei n cazul calculatoarelor numerice n logic programat se
vorbete de o structur fizic general, aceasta nu poate fi total independent de
aplicaia (sau familia de aplicaii) pentru care este folosit calculatorul respectiv.
Dei varianta de sistem de calcul n logic programat prezint o serie de
avantaje ce au dus la dezvoltarea rapid i extinderea aplicrii acesteia n cele mai
variate domenii, calculatoarele analogice rmn importante i cu aplicaii extinse.
Revenind la structura unui sistem de calcul n logic programat, existena
programului indic faptul c trebuie s existe un element care s poat nelege i
executa comenzile existente n acest program. Acest element se numete unitate
central i pe lng funciile amintite va mai avea i alte sarcini n sistemul de calcul.
Din cele prezentate s-a conturat o structur general a unui sistem de calcul
numeric n logic programat i care trebuie s conin: unitatea central, memoria i
interfeele.
Intern, un calculator prelucreaz mai multe fluxuri de informaie dintre care
principalele fluxuri sunt reprezentate de datele numerice i de instruciunile
programului. Dup modul de prelucrare al acestor fluxuri informaionale calculatoarele
se pot clasifica n:
maini de tip SISD (Single Instruction Single Data) care prelucreaz
la un moment dat o singur instruciune program i o singur valoare
numeric;
maini de tip SIMD (Single Instruction Multiple Data) care
prelucreaz la un moment dat o singur instruciune program dar mai
multe fluxuri de date numerice;
24
maini de tip MIMD (Multiple Instruction Multiple Data) care
prelucreaz la un moment dat mai multe instruciuni program i mai
multe date numerice.
Mainile de tip SIMD sau MIMD fac parte din categoria calculatoarelor paralele
care pot prelucra n paralel mai multe fluxuri de informaie.
Din punct de vedere al puterii de calcul, n prezent calculatoarele se clasific
astfel:
microsisteme, sisteme simple bazate pe un microcontroler (calculator
integrat), un procesor de semnal DSP (microcontroler destinat
prelucrrii digitale a semnalelor) sau un microprocesor (unitate
central integrat pe un singur chip) destinate automatizrilor,
dispozitivelor periferice, bunurilor de lar consum, comunicaiilor etc;
calculatoare personale (PC Personal Computer), pentru un singur
utilizator, construite pe baza unui microprocesor. Aceste maini sunt
de cele mai multe ori de tipul SISD sau SIMD i sunt prevzute cu
dispozitive de intrare (de exemplu: tastatur, mouse, joystick,
scanner, etc.) pentru introducerea datelor de intrare, dispozitive de
ieire (de exemplu: display, imprimant, plotter, etc.) pentru
prezentarea datelor de ieire i dispozitive de stocare a datelor de
intrare i de ieire (discuri, band magnetic, disc optic, etc.);
staii de lucru (WS - WorkStation), pentru un singur utilizator,
similare calculatoarelor personale dar dotate cu microprocesoare mai
puternice i cu monitoare de calitate fiind destinate prelucrrilor
complexe;
minicalculatoarele, destinate mai multor utilizatori suportnd de la 10
la cteva sute de utilizatori simultan. Sunt maini de tip MIMD;
calculatoare de tip mainframe, calculatoare mai puternice dect
minicalculatoarele, destinate utilizrii simultane de ctre mai muli
utilizatori (multi user) putnd suporta de la cteva sute la cteva mii
de utilizatori;
supercalculatoarele, calculatoare extrem de rapide care pot executa
sute de milioane de instruciuni pe secund.
Avnd n vedere importana unei astfel de sistem de calcul ct i perspectivele
de dezvoltare i aplicare, n continuare vom discuta principalele probleme legate de
arhitectura acestora.
Sistemele de calcul n logic programat, larg rspndite n prezent, folosesc
dou tipuri de arhitecturi: arhitectura von Neumann i arhitectura Harvard.
Aceste arhitecturi se numesc arhitecturi secveniale, care au o singur unitate
central i care execut n mod secvenial programul aflat n memorie spre deosebire de
arhitecturile paralele care sunt structuri realizate cu dou sau mai multe uniti centrale.
25
3.2. Arhitectura von Neumann
Cea mai simpl structur (structura minimal) a unui sistem de calcul este
prezentat n figura 3.1.
UNITATE
CENTRAL
MEMORIE
PORTURI
(INTERFEE)
n
m
p
Magistrala de adrese
Magistrala de date
Magistrala de comenzi
PERIFERICE
q
Sistem de calcul
Mediul extern
Fig. 3.1. Structura general a unui sistem de calcul
Structura prezentat este structura minimal a unui sistem de calcul numeric
numit i arhitectur von Neumann. Evident, structura unui sistem de calcul poate
conine i alte elemente care vor duce la ridicarea performanelor sistemului de calcul
dar elementele prezentate n structura de mai sus sunt indispensabile funcionrii unui
sistem numeric n logic programat.
Trebuie observat faptul c aceast structur nu este legat de o anume aplicaie
ci ea este determinat doar de modul de funcionare al unui sistem numeric n logic
programat (main von Neumann n acest caz) si va acoperi o arie larg de aplicaii.
Elementele componente ale acestei structuri vor fi prezentate n continuare.
Unitatea central care are rolul de comand i control a sistemului de calcul i
de execuie a programelor ce se gsesc n memorie.
Un calculator poate avea o singur unitate central (in cele mai multe din cazuri)
sau mai multe uniti centrale ce lucreaz n paralel. Sistemele de calcul cu o singur
unitate central se numesc monoprocesor iar activitatea de prelucrare se numete
monoprocesare iar cele care au mai multe uniti de calcul ce lucreaz n paralel se
numesc multiprocesor iar activitatea de prelucrare a informaiei se numete
multiprocesare. Din cauz c n continuare ne vom referi numai la calculatoarele
monoprocesor nu se va mai specifica acest lucru explicit.
Memoria care are rolul de a stoca (pstra) programe i date.
Porturile sau interfeele care au rolul de a realiza schimbul de informaie dintre
sistemul de calcul i mediul extern prin trensformarea i adaptarea semnalelor conform
cerinelor.
Toate aceste elemente, care sunt realizate cu ajurorul unor circuite integrate pe
scar larg i foarte larg, sunt legate ntre ele prin intermediul unor conexiuni electrice.
Prin aceste conexiuni circul semnale electrice care au o anumit semnificaie din punct
de vedere al informaiei codificate (binar). Din acest motiv, conexiunile electrice sunt
grupate dup semnificaia informaiei vehiculate i un astfel de grup poart numele de
26
magistral (bus). Avem trei tipuri principale de magistrale: magistrala de adrese,
magistrala de date i magistrala de comenzi. Fiecare din aceste magistrale este alctuit,
aa cum s-a artat, din mai multe conexiuni electrice. n figura noastr, magistrala de
adrese are n linii, magistrala de date are m linii iar magistrala de comenzi are p linii.
Perifericele nu aparin structurii sistemului de calcul dar sunt menionate aici
deoarece sunt indispensabile funcionrii unui calculator. Vorbind la modul general, un
periferic realizeaz conversia unei anumite forme de energie n energie electric. Spre
exemplu, tastatura, care este un periferic transform energia mecanic cu care apsm
tastele ntr-un semnal electric care este preluat de ctre interfa i adaptat formatului
intern propriu sistemului de calcul, iar monitorul (display-ul) transform energia
electric n energie luminoas.
Se observ c interfeele sunt legate la rndul lor la periferice prin intermediul
unor magistrale (de dimensiune q n figura noastr). Aceste magistrale sunt de diferite
tipuri, au diferite dimensiuni i poart diferite denumiri legate de tipul interfeei la care
sunt legate.
Elementele care alctuiesc structura sistemului de calcul se mpart n dou
categorii: elemente de comand (master) i elemente comandate (slave). ntr-o structur
de calcul vom recunoate uor elementele de comand prin faptul c acestea pot genera
adrese (sensul sgeii magistralei de adrese este dinspre modulele de comand spre cele
comandate).
3.3. Arhitectura Harvard
Structura simplificat a arhitecturii Harvard este prezentat n figura 3.2.
UNITATE
CENTRAL
magistral de adrese
de date
magistral de date 2
magistral de
comenzi
magistral de
adrese de program
magistral de date 1
magistral de
comenzi
MEMORIE
DE
PROGRAM
MEMORIE
DE DATE
PORTURI
PERIFERICE
n
m
p
q
r
s
t
Figura 3.2. Arhitectura Harvard.
Microcontroler
Principala caracteristic a acestui tip de arhitectur este reprezentat de utilizarea
n structura sistemului de calcul a dou memorii cu destinaii diferite: o memorie de
program i o memorie de date. Acest lucru permite suprapunerea ciclului de extragere a
codului operaie din memorie cu ciclul de citire/scriere n memorie ceea ce duce la
27
creterea corespunztoare a vitezei de lucru. De asemenea astfel de sisteme folosesc
cuvinte de lungimi diferite pentru codul instruciunii i pentru date (de exemplu, coduri
de instruciuni pe 14 bii i date pe 8 bii) ceea ce permite utilizarea unui set complex de
instruciuni.
Utilizarea memoriilor cu destinaii diferite presupune existena unei magistrale
de adrese de program i a unei magistrale de adrese de date i, de asemenea, existena
unei magistrale de date pentru program pe care sunt aduse codurile de instruciune i
a unei magistrale de date pentru datele programului (fiecare dintre aceste magistrale
putnd avea dimensiune diferit).
O astfel de arhitectur este utilizat cu precdere n structura procesoarelor de
semnal (DSP Digital Signal Processor) sau a microcontrolerelor de tip Microchip PIC,
Atmel AVR etc.
n astfel de sisteme, programul i datele acestuia sunt stocate n memorii diferite.
De regul memoria program este o memorie de tip FLASH n aa fel nct programul s
nu se tearg la ntreruperea tensiunii de alimentare iar datele sunt stocate n memorii de
tip RAM static i memorii de tip EEPROM.
Asfel de sisteme reprezint microcalculatoare integrate care au unitatea central,
memoria i porturile realizate pe un singur circuit integrat.
Un calculator poate avea mai multe magistrale de acelai tip care se deosebesc
prin viteza de variaie (frecvena) a semnalelor care parcurg aceste magistrale,
dimensiunea i destinaia acestora. Din cauz c diferitele elemente conectate la
magistral au viteze de lucru diferite, elementele mai lente (cu vitez de lucru mai
sczut), vor impune frecvena maxim pe magistrale. Pentru creterea performanelor
unui calculator, magistralele se realizeaz pe mai multe nivele cu frecvene de lucru
diferite. Astfel, pe magistrala cu viteza cea mai mare se conecteaz de obicei unitatea
central i memoriile rapide iar pe magistralele cu vitez mai sczut se conecteaz
memoriile lente i porturile. Comunicaia ntre magistralele ce lucreaz la frecvene
diferite se realizeaz cu ajutorul unor circuite integrate specializate numite controlere de
magistral. Rezult c un criteriu de performan a unui calculator este reprezentat de
frecvena maxim a magistralelor interne.
Diferitele structuri particulare de calculatoare pot conine i alte elemente n
afar de cele prezentate n figura 3.1, n scopul creterii performanelor calculatorului
sau datorit destinaiei acestuia. Dintre aceste elemente suplimentare cele mai uzuale
sunt: circuitul de acces direct la memorie (DMA), controlerul de ntreruperi, controlerul
video i controlerul de comunicaie. Este de remarcat aici faptul c n cazul
calculatoarelor de proces apar n plus ceasul de timp real i ceasul de gard (watchdog
timer) necesare rulrii n timp real a aplicaiilor. n figura 3.3 este prezentat schema
bloc a unui calculator de proces. n aceast figur se vede c sistemul este organizat n
jurul a mai multor magistrale. Pe magistrala A se afl sistemul de calcul propriu-zis iar
pe magistrala B se afl circuitele de interfa cu procesul. Fiecare dintre magistrale sunt
alctuite, la rndul lor, din mai multe magistrale care nu sunt artate n figur.
Pentru a evita confuziile, trebuie menionat faptul c n figura 3.3, printr-un abuz
de limbaj, unitate central este denumit placa electronic, notat cu 880-P, ce conine
att unitatea central propriu-zis ct i porturi de intrare/ieire. Tot aa, prin extinderea
acestei expresii, unitate central este denumit cutia sau dulapul n care se afl aceast
component din structura sistemului de calcul.
28
Fig. 3.3. Structura unui calculator de proces
29
unitate central. Prin conectarea n p
igura 4.1 este prezentat modul de
realizar
cteristice ale unei
punct de vedere al setului de instruciuni, unitile centrale sunt de dou
categorii: uniti centrale de tip RISC (Reduced Instruction Set Comuter) cu un numr
CAPITOLUL 4
UNITATEA CENTRAL
4.1. Introducere
Unitatea central reprezint componenta principal a sistemului care
coordoneaz toate activitile acestuia. De performanele unitii centrale depind n mod
esenial performanele calculatorului. La
calculatoarele personale unitatea central este
reprezentat de un singur circuit integrat numit
microprocesor. Staiile de lucru conin unul, dou
sau mai multe microprocesoare, conectate ntr-o
arhitectur scalar, care lucreaz n paralel. n
cazul minicalculatoarelor, a calculatoarelor
mainframe sau a supercalculatoarelor, unitatea
central este realizat cu ajutorul mai multor
componente. De obicei sunt utilizate integrate de
tip bit-slice care reprezint o parte (felie) dintr-o
aralel a mai multor astfel de circuite se obin uniti
centrale cu diferite performane. Aceste uniti sunt microprogramabile de ctre utilizator
ceea ce le confer flexibilitate n exploatare dar complic procesul de proiectare.
Microprogramarea este o metod de realizare a automatelor de comand prin nscrierea
programelor acestora ntr-o memorie. Prin microprogramare se obin microprograme,
constituite din microinstruciuni. Microprogramarea
presupune o cunoatere de detaliu a echipamentului
cruia i sunt destinate microprogramele. Spre
deosebire de marea majoritate a altor metode de
programare instruciunile utilizate n
microprogramare conin att codul operaiei ct i
eventualii operatori, ct i adresa instruciunii
urmtoare.
n f
Fig. 4.1. Circuit integrat
e a unui circuit integrat.
Principalele mrimi cara
uniti centrale sunt reprezentate de: setul de
instruciuni, numrul de bii prelucrai simultan
(lrgimea magistralei de date) i frecvena de ceas
(viteza la care funcioneaz unitatea central).
Din
Fig. 4.2. Microprocesorul
INTEL 486
30
amului. Unitile centrale de tip
agistralei de date din cauz c pe aceast magistral sunt vehiculate date i
struc
zint de asemenea un criteriu de performan a acesteia. Avnd n vedere faptul c
trale. Astfel, spre exemplu, dou uniti centrale cu
ceeai
itii centrale. Memoria cache este o memorie foarte rapid care
te fo
umrul maxim adresabil de porturi de intrare/ieire, numrul i dimensiunea
registre
a unitii centrale (extragerea din memorie a
codului
umrului de operaii n virgul mobil (floating-point
relativ redus de instruciuni i uniti centrale de tip CISC (Complex Instruction Set
Computer) cu un numr mare de tipuri de instruciuni.
Unitile de tip RISC sunt ieftine i foarte rapide din cauz c setul simplu de
instruciuni le permite execuia cu vitez mare a progr
CISC au avantajul posibilitilor extinse de lucru datorit setului complex de
instruciuni iar n ultimul timp, ele sunt un concurent serios, la vitez, al unitilor
centrale de tip RISC. Cunoscutul microprocesor al firmei INTEL, Pentium, este
considerat ca fiind o unitate central de tip CISC dei conine n arhitectura sa multe
elemente ale unei maini RISC. n figura 2.4 este prezentat microprocesorul INTEL
486.
Numrul de bii prelucrai simultan de unitatea central reprezint de fapt
limea m
in iuni. Limea magistralei de date este de regul un multiplu de opt, n prezent
fiind ntlnite n mod uzual uniti centrale ce lucreaz pe 8, 16, 34, 64, 128 sau 256 de
bii.
Frecvena semnalului de tact (semnalul de ceas) aplicat unitii centrale
repre
o instruciune este executat de unitatea central n una sau mai multe perioade de ceas,
rezult c viteza de calcul crete odat cu creterea frecvenei de ceas. n prezent
calculatoarele personale performante utilizeaz frecvene de tact de pn la 600MHz cu
perspective de a ajunge la 1GHz.
Aceste criterii de performan nu sunt absolute din cauz c ele depind n mare
msur de arhitectura unitii cen
a frecven de ceas, pot merge cu viteze diferite, datorit structurii interne, cu
pn la de 20 de ori.
Un alt criteriu de performan l reprezint dimensiunea memoriei interne,
memoria cache, a un
es losit ca intermediar ntre unitatea central i memoria principal a sistemului.
Aceast memorie poate fi att intern (n structura unitii centrale) ct i extern. Din
acest motiv se spune c memoria cache este organizat pe nivele. Cu ct dimensiunea
memoriei cache interne este mai mare, cu att performanele unitii centrale vor fi mai
bune.
Alte criterii de performan ce pot fi luate n considerare n cazul unitilor centrale
sunt: n
lor interne, i modalitile de adresare.
O unitate central execut o instruciune n unul sau mai muli cicli main. Un
ciclu main reprezint o activitate elementar
operaiei, citire/scriere din/n memorie, citire/scriere din/n port, achitare cerere
ntrerupere etc. Un ciclu main poate dura una sau mai multe perioade a ceasului de
comand al unitii centrale.
Pentru determinarea performanelor unitilor centrale se folosete o metod
bazat pe determinarea n
operations) executate de aceasta ntr-o secund. Unitatea de msur este FLOPS
(FLoating-point Operations per Second), n mod obinuit performanele unitilor
centrale fiind msurate n megaFLOPS sau gigaFLOPS.
31
ie de la o adres bine precizat.
timp
de
sigurana n funcionare mbuntit;
czute - nivelul larg de integrare evit
ari de variaie ale
Princip le sunt:
insuficient pentru
elaborarea unui rspuns n timpul ateptat;
lor microsistemului i ai
semnalelor software i deci trebuie concepute
n cazul m i celelalte elemente
le microsistemului sunt componente distincte fapt ce particip la flexibilitatea soluiei. n
La punerea sub tensiune unitatea central pornete dintr-o stare iniial
cunoscut ncepnd s execute programul aflat n memor
Pe ul execuiei unui program unitatea central poate ajunge dintr-un motiv sau altul
ntr-o stare nedorit care s afecteze modul corect de funcionare al calculatorului. n
aceste situaii unitatea central trebuie readus n starea iniial. Acest lucru se face fie
n mod automat de ctre circuitele specializate ale calculatorului fie de ctre utilizator
prin apsarea unui buton (RESET). Este evident faptul c iniializarea unitii centrale
poate fi fcut i prin ntreruperea tensiunii de alimentare dar acest lucru este
nerecomandabil de cele mai multe ori pentru c se pot pierde informaii n curs de
prelucrare de ctre periferice i/sau informaii legate de prelucrrile curente. De
asemenea ocurile termice i de tensiune ce apar la pornirea calculatorului nu
recomand folosirea acestui procedeu pentru reiniializarea unitii centrale. Butonul de
iniializare a unitii centrale (RESET) este marcat uneori i cu simbolul: .
Datorit dezvoltrii spectaculoase a microsistemelor i datorit faptului c
unitile centrale a acestora, microprocesoarele, beneficiaz de o ntreag gam
inovaii tehnologice, ne vom concentra atenia asupra unitilor centrale de tip
microprocesor.
Principalele avantaje oferite de microsisteme fa de sistemele convenionale sunt:
costul sczut al hardware-ului;
interferene electromagnetice s
influenele electromagnetice chiar i la nivele m
tensiunii i curentului prin circuitele electronice de putere. n general
pentru protecie este suficient ecranul cu care prevzut componenta.
Zgomotul de cuplare cu sursele de alimentare i semnalele de intrare
poate fi minimizat printr-o bun filtrare analog-digital;
absena mprtierii sau a variaiei parametrilor;
compatibilitate cu controlul digital ierarhic;
hardware i software universal;
posibilitatea de diagnostic i autodiagnostic.
ale dezavantaje prezentate de ctre microsisteme
viteza de rspuns (calcul) este n unele cazuri
eroarea de cuantizare - eroarea de cuantizare poate fi micorat prin
creterea numrului de bii ai cuvinte
convertorului A/D;
lipsa de acces la semnale software - nu se pot efectua msurtori cu
osciloscopul asupra
msuri adecvate de depanare.
dezvoltarea software-ului poate fi uneori scump.
icrosistemului cu microprocesor unitatea central
a
32
nui
microprocesor)
procesor cuprinde: o unitate aritmetic i logic, avnd drept
op efectuarea de operaii aritmetice i logice elementare; un set de registre pentru
emor
Aceast structur
z general i
special;
trul de instruciune;
oare ce asigur o parte din comenzile la
C sau RI, sub controlul (selecia) semnalelor din
cazul microcontrolerelor ntr-o singur component sunt integrate pe lng unitatea
central i o parte din elementele microsistemului. Dei microcontrolerele prezint o
flexibilitate mai redus ele prezint avantajul miniaturizrii i a preului de cost sczut.
4.2. Microprocesorul universal (structura general a u
Structura unui micro
sc
m area temporar i manipularea cu vitez ridicat a unui numr relativ mic de
rezultate intermediare; un bloc de comand i secveniere care asigur desfurarea
ordonat a tuturor operaiilor n interiorul microprocesorului, precum i comunicaia
acestuia cu lumea exterioar; un bloc de decodificare a instruciunii curente, care
interpreteaz instruciunea n curs i determin aciunile ce se impun; un bloc de tratare a
cererilor de ntrerupere utilizat pentru luarea n considerare a evenimentelor asincrone fa
de desfurarea programului; tampoane ntre microprocesor i magistralele sistemului.
Microprocesoarele din ultimele generaii au inclus i un coprocesor matematic ce le
permite realizarea unor calcule matematice complexe cu vitez ridicat i memoria cache.
Structura de principiu a microprocesorului universal este prezentat n figura 4.3.
Fig.4.3. Schema bloc a microprocesorului universal
este format din urmtoarele elemente componente:
RALU - unitatea logic i aritmetic i registrele de u
AC - automatul de control;
RI - regis
RS - registrul de stare;
MUX - un grup de multiplex
bornele RALU de la A
AC.
Semnalele interne care asigur funcionarea sistemului sunt
urmtoarele:
33
enerate din RI ctre AC i prin intermediul MUX, ctre
- reprezint un bus intern bidirecional pe care sunt cuplate
re exterioare microprocesorului.
mand citirea de la adres configuraiei
;
lui ntr-o stare de ateptare drept urmare a unei
-
niment
-
urmare a acestui semnal, dispozitivul ce a
-
Microprocesoa le
inimizat, n sensul c automatul de control AC este gndit foarte simplu. Procesoarele
crop
esoare
e unor tipuri
prezentative de microprocesoare.
80
a aprut de o perioad de timp destul de lung el
ste unul dintre microprocesoarele pe 8 bii dintre cele mai populare. Pentru acest tip de
comenzi, generate de AC ctre subansambluri sau ctre exterior;
instruciuni, g
RALU;
indicatori, generai de ALU din RALU ctre RS;
date
RALU, RS i RI (unidirecional);
adrese - cale de adrese ce se emite n exterior din RALU pentru
controlul dispozitivelor de memora
Semnalele la bornele microprocesorului sunt urmtoarele:
adrese - cale unidirecional;
date - cale bidirecional;
semnale de sincronizare:
- READ - semnal ce co
binare de pe calea date
- WRITE - semnal ce comand la adres a configuraiei binare de
pe calea date;
- WAIT - semnal recepionat ce impune trecerea
microprocesoru
comenzi READ sau WRITE ce nu a fost nc executat;
INT - semnal de ntrerupere a crui recepionare stopeaz
procesul curent de calcul pentru a da curs unui eve
exterior sistemului;
INTA - semnal ce indic luarea n consideraie a semnalului de
ntrerupere INT; ca
activat INT va genera pe date o configuraie binar specific;
RESET - semnal de iniializare a funcionrii microprocesorului.
re sunt procesoare la care funcia de control intern este
m
mi rogramate se situeaz la extrema n care funcia de control intern are o pondere
foarte important. Dac un microprocesor folosete ct mai direct codul instruciunii (biii
din RI comand direct funcionarea RALU), n cazul imensei majoriti a instruciunilor, la
o structur microprogramat, codul instruciunii acioneaz cu preponderen asupra
automatului de control, declannd secvene complexe de comand.
4.3. Caracteristicile principalelor tipuri de microproc
n continuare sunt prezentate pe scurt principalele caracteristici al
re
4.3.1. Microprocesorul ZILOG Z
Dei este un microprocesor care
e
microprocesor au fost dezvoltate o serie foarte mare de aplicaii ncepnd de la bunuri de
larg consum pn la aplicaii industriale.
34
are de 8 bii. Componentele din familie asigur
magistrala de adrese pe 16 bii;
8 bii cu utilizare pe 16 bii, registre
pentru remprosptarea transparent a
cabil i una mascabil cu un mecanism
cererea de ntrerupere;
4.3.2. Microproceso l
s-a mbogit continuu cu noi membrii care au
us la creterea performanelor hardware i software a acestor componente. Principalul
oprocesorul poate adresa ca i 80806
spa
matice. Fiecrui element de baz din familie i-a fost asociat un
Microprocesorul Z80 mpreun cu componentele sale auxiliare formeaz o familie
tipic pentru generaia de microproceso
posibilitatea realizrii tuturor funciilor clasice ale unui sistem cu microprocesor.
Principalele caracteristici ale acestui microprocesor sunt:
magistrala de date pe 8 bii;
12 registre de uz general pe
cu selectare alternant cte ase;
2 registre acumulator i 2 registre indicatori de condiii cu
selectare alternant;
2 registre speciali, unul pentru determinarea vectorului de
ntrerupere i unul
memoriei dinamice;
2 registre index pe 16 bii;
o ntrerupere nemas
foarte flexibil de rspuns la
este capabil s execute operaii aritmetice (mai puin nmulirea
i mprirea) i logice;
frecven de tact maxim 6MHz.
are e INTEL 80x86
Familia microprocesoarelor INTEL
d
avantaj al acestei familii de microprocesoare este pstrarea compatibilitii software ntre
diferitele generaii ncepnd cu microprocesorul 8086 ceea ce a permis dezvoltarea
continu a aplicaiilor pentru aceste microprocesoare.
ncepnd cu microprocesorul 80286 s-au introdus dou moduri de funcionare
diferite: modul real (Real Address Mode) n care micr
un iu de memorie de 1Mo i modul protejat (Protected Virtual Address Mode) n care
spaiul adreselor fizice a crescut la 16Mo iar cel al adreselor virtuale la 1Go.
Microprocesorul 80286 a fost proiectat pentru a permite (n mod protejat) sisteme
multitasking, oferind cte un segment de stare ataat fiecrui task, care sunt structuri
manevrate hardware i conin strile curente (incluznd toate registrele) ale taskurilor.
Selectoarele acestor segmente de stare identific unic taskul ataat. De asemenea, este
facilitat i comutarea taskurilor, care poate fi invocat printr-o singur instruciune.
Fiecare task din sistem poate avea propriul lui spaiu de adrese logice. Microprocesorul
80286 ofer i un mecanism evoluat pentru comunicarea ntre taskuri, sincronizarea lor i
partajarea memoriei.
Istoria microprocesoarelor din familia 80x86 este strns legat de cea a
coprocesoarelor mate
coprocesor pentru a mbunti performanele sistemului de calcul. Pentru
microprocesoarele 8086, 80286 i 80386 sunt folosite coprocesoarele 8087, 80287 i
respectiv 80387.
35
e. Datorit celor 32 de bii de adrese, spaiul adreselor fizice este de 4Go
r spa
Microprocesorul 80486 ofer multe faciliti noi: o memorie cache de 8ko, o
nitate de gestiune a memoriei compatibil 80386, un procesor 80386 i un subset 80387
pe un s
l i modul protejat. Avnd
n ved
Microprocesorul 80386 pe 32 de bii a fost proiectat pentru utilizarea n aplicaii
intensive complex
ia iul adreselor logice de 64To. Este prevzut cu microcod care suport direct aplicaii
care utilizeaz ntregi mari, structuri complexe de date i un numr mare de programe.
Microprocesorul are patru moduri distincte de funcionare: real, virtual 8086, protejat 286
i nativ 386. n figura 4.4 este prezentat schema bloc a microprocesorului 80386.
Fig. 4.4. Schema bloc a microprocesorului 80386
u
ingur chip, ceea ce permite ca softul existent (fiind vorba de nalta compatibilitate)
s ruleze mai repede pe 80486 dect pe perechea 80386-80387.
Microprocesoarele de tip INTEL, ncepnd cu microprocesorul de tip 80386 au
patru moduri de funcionare de baz: modul real, modul virtua
ere faptul c sistemul de operare DOS este destinat n exclusivitate
microprocesoarelor de tip INTEL i datorit faptului c aceste mecanisme se ntlnesc i
la alte tipuri de microprocesoare, ele vor fi descrise pe scurt n continuare.
MODUL REAL. Acest mod este cel n care se intr dup iniializarea
icroprocesorului. De regul, sub sistemul de operare DOS microprocesorul se afl n
modul
m
real. Specific acestui mod de funcionare este faptul c microprocesorul nu poate
rula dect un singur program odat. Exist posibilitatea rulrii programelor sub sistemul
de operare DOS i n alte moduri ale microprocesorului, dar acest lucru necesit extensii
ale sistemului de operare (existnd n acest sens programe specifice).
MODUL VIRTUAL. Acest mod permite execuia programelor n contextul
mecanismelor de protecie, gestiune a taskurilor i management al memoriei. Un
program poate rula n mod virtual n paralel cu alte programe care ruleaz n mod
protejat. De asemenea, pot fi executate deodat mai multe programe n mod virtual.
Sistemul de operare Windows 9x se bazeaz pe acest mod performant de funcionare al
36
microprocesorului, permind execuia n paralel a mai multor programe (sesiuni DOS)
ct i a mai multor programe Windows.
MODUL PROTEJAT. n acest mod, microprocesorul emuleaz funcionarea
unui m
MODUL NATIV
icroprocesor de tip 80286 n mod protejat. Modul protejat prezint un mecanism
sofisticat pentru protejarea datelor, integritatea sistemului, concurena taskurilor i
gestiunea memoriei incluznd i cea a memoriei virtuale. n modul protejat, n cazul
microprocesorului 80286, spaiul adreselor fizice este mrit de la 1 Moctet la 16
Moctei, n timp ce spaiul adreselor virtuale a fost mrit la 1 Goctet. n acest mod,
programele folosesc adrese virtuale, translatarea lor n adrese fizice fcndu-se automat
pe baza unor tabele cu descriptori de segmente. Acest mecanism permite implementarea
eficient a sistemelor cu memorie virtual n care utilizatorul vede memoria intern i
cea extern ca o singur memorie. Modul protejat permite implementarea sistemelor
multitasking, oferind cte un segment de stare ataat fiecrui task, care sunt structuri
manevrate hardware i conin strile curente (incluznd toate registrele) ale taskurilor.
Selectoarele acestor segmente de stare identific unic taskul ataat. De asemenea, este
facilitat i comutarea taskurilor, care poate fi invocat printr-o singur instruciune.
Fiecare task din sistem poate avea propriul lui spaiu de adrese logice, existnd de
asemenea un mecanism evoluat pentru comunicarea ntre taskuri, sincronizarea lor,
partajarea memoriei etc.
. Acest mod folosete ntreaga putere a microprocesorului.
Memor
icroprocesorul INTEL Pentium
ste integral compatibil cu procesoarele INTEL
get Buffer) care
ia virtual permite ca dimensiunea unui program s fie limitat de spaiul pe disc
i nu de dimensiunea memoriei interne. Mecanismele de protecie sunt destul de
puternice pentru a evita accidentele ntre taskuri sau ntre utilizatori. Spaiul de adrese al
taskurilor este complet separat, segmentele sunt tipizate i au diferite drepturi de acces.
De asemenea, se verific i depirea limitelor segmentelor. Exist trei nivele de
prioritate, sistemul de operare avnd nivelul zero (cel mai prioritar), iar aplicaiile
programatorilor avnd nivelul trei (cel mai puin prioritar).
M
Microprocesorul Pentium e
anterioare, dar se deosebete de acestea n multe privine. Cel puin una din aceste
deosebiri este major: microprocesorul Pentium are dou canale identice de procesare a
datelor, ceea ce i permite s execute dou instruciuni n
acelai timp. Aceast capacitate de a executa simultan dou
instruciuni este numit tehnologie superscalar (procesare
paralel). Aceast tehnologie asigur performane
suplimentare fa de cea a procesorului 486.
Prin modul numit BTB (Branch Tar
utilizeaz o tehnic numit branch prediction (predicia
salturilor) n scopul reducerii timpului de ateptare n canalele
de procesare, cauzat de aducerea instruciunilor unei ramuri
aflate la o alt locaie de memorie, se realizeaz la
microprocesorul Pentium o utilizare mai eficient a memoriei
cache interne. Modul BTB ncearc s prevad cnd va apare
o instruciune de salt i s aduc n memorie instruciunile
37
teristici ale microprocesorului Pentium sunt:
gama frecvenelor maxime: 450MHz;
i;
rat: 8kb pentru instruciuni i 8kb
ociate,
atic cu unitate de calcul n virgul mobil
moriei: SMM (System Management Mode),
Dezvoltarea microprocesoarelor a depit de mult acest prag. n prezent exist
microp
plin
posibil
.3.2.1. Microprocesorul INTEL 8086/8088
Microprocesoarele 8086 i 8088 de generaia a III-a sunt microprocesoare cu o
e sunt:
magistrala de date de 16 bii;
;
adresabile direct sau pe octei;
adresare a memoriei (7 moduri);
corespunztoare ramurii la care se va face saltul. Utilizarea tehnicii de prevedere a
ramificrii unui program permite microprocesorului s menin n funcionare la vitez
maxim, cele dou canale pentru execuia instruciunilor.
Principalele carac
dimensiunea registrelor: 32 bii;
magistrala de date extern: 64 bi
magistrala memoriei 32 bii;
memoria maxim: 4Gb;
memorie cache ncorpo
pentru date la primele tipuri ajungnd la 2Mb n prezent;
tipul memoriei cache ncorporate: cu dou blocuri as
Write-Back Data;
coprocesor matem
(FPU) inclus;
gestionarea me
extins la a doua generaie.
rocesoare cu mai multe uniti centrale integrate care au mecanisme sofisticate.
Datorit faptului c nelegerea funcionrii unui microprocesor este pe de
prin analiza funcionrii microprocesorului INTEL 8086, datorit structurii simple
dar revoluionare a acestuia, compatibilitatea cu generaiile INTEL dezvoltate ulterior i
datorit existenei unei consistente documentaii n legtur cu acest domeniu, vom
prezenta n continuare structura n detaliu a acestui microprocesor.
4
structur pe 16 bii, 8088 este proiectat cu o magistral de date extern de 8 bii n timp ce
8086 poate transfera 16 bii deodat. Datorit faptului c n afar de aceast deosebire
funcionarea celor dou tipuri de microprocesoare este identic, n continuare ne vom referi
numai la microprocesorul 8086. Performanele acestor microprocesoare sunt datorate
structurii interne de 16 bii i arhitecturii pipeline care permite instruciunilor s fie
prencrcate n timpul ciclurilor disponibile ale magistralei.
Principalele caracteristici ale acestor microprocesoar
magistrala de adrese de 20 bii;
adresare segmentat a memoriei
4 registre de uz general pe 16 bii
4 registre de segment pe 16 bii;
2 registre index pe 16 bii;
un sistem foarte flexibil de
38
cesor;
clusiv nmulire i
Microprocesorul 8086 este un microprocesor pe 16 bii i memorie adresabil
direct d
a cum se arat n figura 4.5, structura microprocesorului I 8086 se compune
din dou
BIU execut toate ciclurile de bus (READ, WRITE, INTA) fie la cererea
EU sau
n intervalele ct EU nu solicit bus-ul.
sistem de ntreruperi hardware i software;
posibilitatea funcionrii n sisteme multipro
posibilitatea efecturii operaiilor aritmetice (in
mprire) i operaii logice;
frecven de tact 6MHz.
e 1Mo. Structura unitii centrale, cu elementele accesibile programatorului, este
prezentat n figura 4.5.
AH
AL
BH
BL
CH
CL
DH
DL
SP
BP
DI
SI
Registre
de uz
general
CODE SEGMENT
DATA SEGMENT
STACK SEGMENT
EXTRA SEGMENT
IP
REGISTRE INTERNE
REGISTRE TEMPORARE
ALU
REG. FLAG
-
uri
COMANDA
EU
1 2 3 4 5 6
BIU
EU
Bus
COADA DE INSTRUCTIUNI
20
LOGICA DE
COMANDA
DE BUS
20
16
16
BUS AD 0 AD 15
MULTIPLEXAT
8 8
16
Figura 4.5. Structura unitii centrale 8086.
A
uniti : EU = unitate de execuie i BIU = unitate de interfa cu magistrala
(bus).
pentru umplerea cu coduri a unei cozi Q de instruciuni. Coada de instruciuni
este o memorie de tip FIFO cu 6 cuvinte.
BIU execut noi cicluri FETCH
EU obine coduri de la BIU (ateapt dac Q este vid), execut instruciunile,
lucrnd cu adrese i date cu 8/16 bii, actualizeaz flag-urile i furnizeaz adrese i date
ctre BIU.
39
EU calculeaz adresele efective ale operanzilor, conform modului de scheme
utilizat. Adresa efectiv pe 16 bii, BIU genereaz adresa fizic cu 20 de bii, selectarea
adresei efective, generate de EU.
Dac Q este plin i EU nu solicit transferuri pe bus apar cicluri n rotire
(ateptare).
Exemplu: T1 T2 T3 T4 TI TI ... TI TI T1 T2 T3 T4 ... TI = Idle State.
Modurile de lucru posibile pentru unitatea cuntral I8086 sunt :
Modul minim MN / MX = 1
Semnale de comand: ALE, DT/K, DEN, M/IO, WR, INTA, HOLD, HOLDA.
Folosit n sisteme mici, de regul monoprocesor. n figura alturat circuitele
bufferde tip 8286 pot lipsi dac ncrcarea electric a bus-ului este redus.
Modul maxim MN / MX =0
UCP genereaz ctre controlerul de sistem I 8288 semnale de stare identificare
ale ciclului de bus, n rest genereaz semnale corespunztoare pe bus-ul de comand.
Conectarea UCP I 8086 n modul maxim.
n modul maxim liniile RQ/GT0, RQ/GT1, LOCK, QS0, QS1 se pot utiliza
pentru conexiuni de tip multiprocesor. Se pot, de exemplu, conecta alte procesoare pe
bus-ul local al UCP, utiliznd pentru arbitrajul de bus liniile RQ/GT (care nlocuiesc pe
HOLD/HOLDA din modul minim).
Registrele unitii centrale
Registrele unitii centrale
aflate n seciunea EU
(Execution Unit) sunt:
15 AH 8 7 AL 0
BH BL
CH CL
DH DL
AX
BX
CX
DX
16
AX, BX, CX, DX
SP, BP, SI, DI
F
8
Registre cu 16 bii de uz general, adresabile direct sau pe octet:
AX = (AH, AL)
BX = (BH, BL) fiecare din ele poate servi ca destinaie a datelor
(accumulator) CX = (CH, CL)
DX = (DH, DL)
40
Utilizrile implicite ale registrelor sunt:
AX: utilizat pentru operaii aritmetice (*), (/) pe 16 bii i pentru operaii de
I/E pe 16 bii; n mod analog AL este utilizat pe 8 bii i n plus pentru
aritmetic zecimal i conversii de cod; AH este utilizat la (*) i (/) pe 8
bii;
BX: utilizat n conversii de cod i ca registru de baz de adrese;
CX: utilizat n operaii cu iruri, cu rol de contor de cicluri;
CL: utilizat n deplasri (stnga, dreapta cu un numr de pai dai ca
parametru de valoare lui CL);
DX: utilizat la (*), (/) pe 16 bii i ca registru de adresare indirect la porile
de intrare ieire (I/E);
SP: utilizat implicit n toate operaiile cu stiva;
SI, DI: utilizate n operaiile asupra irurilor de date;
F = registrul de flag-uri i control al procesorului (se afl n EU).
Semnificaia fanioanelor din registrul F este:
CF = C, PF = P, AF = H, ZF = Z, SF = S semnificaii obinuite :
CF = "carry flag": depire aritmetic;
PF = parity flag: paritate;
AF = auxiliary flag: transport ntre bitul 3 i 4;
ZF = "zero flag: valoare zero;
SF = sign flag: semnul.
TF = trip flag; TF = 1 determin UCP s lucreze n mod pas cu pas(single
step), n care CA genereaz o ntrerupere intern dup fiecare execuie a
unei instruciuni;
IF = masca pentru ntreruperi externe (IF =1 => validarea ntreruperilor; IF =0
=> invalidarea ntreruperilor);
DF = direction flag- indic direcia deplasrii adresei la operaiile cu iruri de
date (DF =1 => autodecrementare, DF =0 => autoincrementare, dup o
operaie elementar);
OF = V (depire).
Registrele SP, BP sunt registre cu 16 bii utilizate n operaiile cu stiva.
Registrele SI, DI sunt registre cu 16 bii utilizate n operaiile cu iruri; SI
conine adresa sursei iar DI adresa destinaiei.
Registrele aflate n seciunea BIU (Bus Interface Unit) a unitii centrale
8086 sunt:
CS, DS, SS, ES = sunt registre segment care conin adresele de baz ale
segmentelor logice de cod, date, stiv i extrasegment;
IP = Instruction Printer = contor de program, cu 16 bii. Valoare ce reprezint
adresa relativ (offset-ul) a instruciunii curente n segmentul de cod
(relativ la CS). n cazul unei instruciuni de salt, IP este salvat n vrful
41
stivei (mpreun cu CS, deci saltul este inter-segment) i apoi ncrcat cu
adresa relativ n segmentul de cod a instruciunii int ;
Posibilitile de lucru n sisteme multiprocesor
Arhitectura familiei I8086 conlucrarea ntre dou tipuri de procesoare:
independente (execut propriile secvene de instruciuni) ;
coprocesoare care obin instruciuni din memoria unui procesor
gazd (host), urmrind ciclurile FETCHale gazdei, le recunosc pe
cele destinate lor i le execut. Efectul obinut este extinderea setului
de instruciuni al gazdei.
Organizarea ierarhic a bus-urilor
Familia admite dou tipuri de bus-uri: locale i de sistem. Ambele pot fi
multimaster (mai multe UCP conectate la bus). ntre bus-ul local i cel de sistem se
conecteaz interfee.
Conexiunile externe ale I8086
n modul "maxim" UCP livreaz controlerului de sistem I 8288, n fiecare ciclu
de bus, un cuvnt de comand (S0, S1, S2), pe care acesta l decodific i genereaz
semnale de comand pe magistral (bus). n acest mod se pot conecta mai multe UCP la
bus.
Semnalele externe ale microprocesorului I8086 sunt prezentate n figura 4.6.
MN/ MX
BHE / S7
M / IO
DT / R
DEN
READY
RD
WR
HOLD
HOLDA
ALE
INTA
INTR
NMI
8086
(S2)
(S1)
(S0)
( LOCK )
( RQ / GT0 )
( RQ / GT1 )
( QS0 )
( QS1 )
16
A16 / S3
A17 / S4
A18 / S5
A19 / S6
AD 15
AD 0
Vcc
CLK
GHD
RESET
TEST
Semnificaie n modul
maxim ( MX = 0 )
Figura 4.6. Semnalele externe ale microprocesorului I8086.
n tabelul 4.1 sunt date semnificaiile semnalelor externe ale microprocesorului
I8086 att n modul "minim" ct i cel "maxim". Microprocesorul I8086 este realizat n
capsule de 40 de pini. Din acest motiv semnalele acestuia sunt multiplexate, n aa fel
42
nct s poat fi generate toate semnalele pe aceti pini (adrese 20 de semnale, date
16 semnale, comenzi i alimentare), cele 16 linii de adres A15 A0 fiind
multiplexate cu cele 16 linii de date D15 D0.
TABELUL 4.1.
Simbol Nr. pin Semnificaie
Tip
AD15
AD0
216,
39 Adresa n T1/D este n T2, T3, Tw, T4 I/O, Z
A19 / S6
A18 / S5
A17 / S4
A16 / S3
35 38
Adresa n T1 / semnele de stare n T2, T3, Tw,
T4
MN / MX 33 Comanda modului: 1 minim; 0 maxim I
BHE / S7 34 Validare bus (HIGH) n T1 / stare n T2 T4 O, Z
RD 32 Comand de citire pe bus-ul local O, Z
READY 22 Memorie / (I/E) gotopentru transfer I
RESET 21 Comanda de resetare I
TEST 23
Testat de instruciuni WAIT (Ateapt pn ce
TEST = 0
I
INTR 18 ntreruperi mascabile externe; activ pe nivel I
NMI 17
ntreruperi nemascabile externe; activ pe front
(+)
I
CLK 19 Semnal de test generat de 8284 I
VCC 40 Alimentare +5V I
S
E
M
N
I
F
I
C
A
I
I
F
I
X
E
GHN 1, 20 Mas
M / IO 28 Ieire de stare. Selecie memorie (I / E) O, Z
WR 290 Comand de scriere O, Z
DT / R 27
Comand semnul transferului; 1=>
transmisiune; 0 => recepie
O, Z
DEN 26 Validare date. Activ n cicluri M, I/E, INTA O, Z
ALE 25 Indic prezena adresei pe AD0 ... AD15 O
INTA 24
READpentru cele dou cicluri INTA ale lui
8086
O
HOLD 31 Cerere de bus de la alt master I
S
E
M
N
I
F
I
C
A
I
I
N
M
O
D
M
I
N
I
M
HLDA 30 Confirmare de cedare a bus-ului O
S2, S1, S0 26 28 Semnale de stare pentru ciclu de bus O
RQ / GT1 30
RQ / GT0 31
Comenzi cerere/cedare pentru arbitraj de bus I / O
LOCK 29
Indicator c 8086 nu va ceda bus-ul altui
master
O
S
E
M
N
I
F
I
C
A
I
I
N
M
O
D
M
A
X
I
M
QS1
QS0
24, 25
Starea cozii de instruciuni din interfaa cu bus-
ul a UCP
O
unde: I = intrri; O = ieiri; Z = impedan mare;
43
Observaii:
cu T
n
se noteaz ciclurile unitii centrale (T
1
ciclul de extragere
cod operaie etc.)
AD15 AD0 : genereaz adrese n intervalul T1, devin intrri / ieiri
de date n T2 T4 i trec n impedan mare n timpul ciclurilor
INTA, sau dac UCP a cedat bus-ul (HDLA = 1);
A19 / S6 A16 / S3: genereaz adrese n intervalul T1 (cu valoare
0dac ciclul de transfer este I/E) i semnale de stare n T2 T4.
o S6 = 0 indic ocuparea bus-ului de ctre UCP;
o S5 = IF copiaz starea flag-ului de ntrerupere. Astfel, starea
de validare / invalidare se poate citi hardware din exteriorul
UCP.
S4 S3
0 0 Alternate data
0 1 Stack
1 0 Code or home
1 1 Data
Indic registrul segment curent
utilizat pentru adresare.
Aceti pini trec n starea Z n timpul ct HDLA = 1
BHE i A0 determin tipul transferului pe 8 sau 16 bii, astfel:
BHE A0 tipul transferului
0 0 16 bii
0 1 MSB (adres impar)
1 0 LSB (adres par)
1 1 -
BHE = 0 atunci cnd un octet trebuie transferat pe cei 8 bii mai
semnificativi (MSB) ai bus-ului cu 16 bii. El este activ n timpul
ciclurilor RD, WR, INTA (este 0 n timpul primului ciclu
INTA).
BHE trebuie demultiplexat odat cu A0 A15 (prin memorare pe
frontul negativ al semnalului I/E deoarece n T2 T4 el indic bitul
de stare S7.
n modul maxim, o parte din semnificaiile pinilor se modific.
S2, S1, S0 identific tipul de ciclu main n intervalele T4, T1, T2,
informnd controlerul de sistem I 8086 asupra tipului de transfer care
urmeaz (ele sunt inactive n T3 i Tw).
S2, S1, S0
0 confirmarea acceptrii ntreruperii,
1 citire I/E,
3 HALT (oprire),
4 Citirea codului instruciunii,
5 Citire din memorie a unui operand,
6 Scriere n memorie a unui operand,
44
7 Ciclu inactiv.
Pinii S2, S1, S0 trec n starea Z n intervalele n care UCP cedeaz
bus-ul.
Liniile bidirecionale RQ / GT, (RQ/GT0 au prioritate fa de
RQ/GT1) i sunt utilizate de alte module masterde pe bus-ul local
pentru pentru a cere bus-ul de la UCP. Cererea se face prin RQ = 0
(intrare); la sfritul ciclului main curent UCP cedeaz bus-ul i
genereaz GT = 0 (GranT). Semnalul LOCK = 0 indic faptul c
UCP nu va ceda bus-ul deoarece execut o seciune de transfer
nentreruptibil ce trebuie terminat.
Semnalele QS0 i QS1 indic starea cozii de instruciuni existente n
unitatea de interfa de bus a UCP.
Firma Intel a creat o serie de circuite integrate necesare realizrii
microsistemelor cu microprocesor I8086. O parte din aceste circuite au devenit modele
pentru dezvoltrile ulterioare, foarte multe din circuitele moderne fiind compatibile cu
aceste circuite. Principalele circuite dezvoltate de firma Intel sunt :
8086 (IAPX 86/10), IAPX 186, IAPX 286 UCP cu 16 bii;
8087 (IAPX 86/20) procesor aritmetic n virgul mobil;
8088 (IAPX 88/10) UCP cu 16 bii n interior i 8 bii n exterior;
8089 UCP specializat n operaii I/E;
IAPX 86/30, IAPX 88/30 procesor specializat coninnd un sistem
de operare n timp real ncorporat n HW;
8284 generator de tact;
8288 controler de sistem (genereaz semnalele de comand pe bus-
uri);
8289 arbitru de bus (coordoneaz funcionarea mai multor UCP-uri
pe acelai bus) pentru sisteme multiprocesor;
8259A controler de ntreruperi;
8237A controler DMA;
8282, 8283 circuite latch (8bii);
8286, 8287 circuite buffer (8bii).
n figura 4.7 este prezentat un microsistem realizat cu microprocesorul I8086
conectat n modul "minim".
Din aceast figur se observ existena celor trei magistrale : magistrala de
comenzi, magistrala de adrese i magistrala de date. Magistrala de adrese i cea de date,
datorit faptului c sunt multiplexate, necesit circuite suplimentare pentru generare :
circuitul I8282 latch i circuitul I8286 buffer.
n figura 4.8. este prezentat modul n care microprocesorul I8086 poate fi conectat
n modul "maxim". Aa cum s-a artat, n acest mod sunt generate n mod suplimentar
semnale de comand a magistralelor cu ajutorul circuitului controler de sistem I8288.
45
Figura 4.7. Microsistem cu microprocesor I8086 conectat n modul "minim.
Figura 4.8. Conectarea microprocesorului I8086 n modul "maxim
46
Organizarea memoriei principale
Microprocesorul poate adresa direct 1Mo de memorie la adresele 0 0FFFFFH.
Tipuri de date memorate:
8 bii (octei)
16 bii (cuvinte)
32 bii (cuvinte duble sau pointer-i)
Nu exist restricii privind plasarea acestor date n memorie (ele pot ncepela
orice adres). n funie de plasarea datelor la scheme pare sau impare UCP va executa
automat numrul de cicluri necesare pentru citirea lor.
Convenia de reprezentare a datelor multi-cuvnt n memorie este cea standard la
microprocesoarele INTEL: octeii mai puin semnificativi sunt plasai la adrese mai mici
(n grupul de octei alocat cuvntului).
Memoria lui I 8086 este segmentat.
Pentru generarea adresei fizice AF, BIU execut operaia dat de relaia:
AF = S x 2
4
+ O (4.1)
S = coninutul registrului segment
O = adresa efectiv (offset)
Se impune deci restricia ca un segment s nceap la o adres absolut multiplu
de 16.
Registrele segment pot fi implicite sau explicite (la dorina programatorului):
Tipul de referire la
memorie
Registrul
segment
utilizat implicit
Alte registre
utilizate
OFFSET
(adresa relativ n
cadrul
segmentului)
FETCH CS _ IP
* Operaii cu stiva SS _ SP
* Date variabile (cu
excepiile de mai jos)
DS CS, SS, ES Adresa efectiv
* Sursa la operaiile cu
iruri
DS CS, SS, ES SI
* Destinaia la operaiile
cu iruri
ES _ DI
* BP folosit ca registru de
baz
SS CS, DS, ES Adresa efectiv
Utilizarea altor registre segment fa de cele utilizate implicit trebuie indicat de
programator n instruciunea respectiv cu ajutorul unor prefixe speciale (1 octet).
47
Memoria stiv
Stiva sistemului se organizeaz n memoria principal. ntr-o aplicaie pot exista
mai multe stive (fiecare cu dimensiunea maxim de 64Ko). Adresa de baz a stivei
(valoarea iniial a registrului SP ntr-un program) este diferit de adresa de baz a
segmentului de memorie alocat stivei.
Modul de organizare al stivei microprocesorului I8086 este artat n figura 4.9.
: :
:
+ FFFF
SS Adresa de baz a
segmentului de memorie
alocat stivei
8 bii
locaii ocupate n stiv
la un moment dat
Adresa de baz a stivei
(stiva vid)
S
t
i
v
d
e
d
i
m
e
n
s
i
u
n
e
6
4
K
o
Figura 4.9. Organizarea stivei microprocesorului 8086.
Anumite zone din memoria principal a sistemului sunt rezervate pentru diferite utilizri
de ctre unitatea central.
Adrese rezervate:
0 13H = dedicate pentru ntreruperi interne;
14H 7FH = rezervate pentru dezvoltri ale familiei de componente
(rezervate de firma INTEL);
0FFFF0H 0FFFFBH = dedicate pentru instruciunile executate
resetarea procesului;
0FFFFC 0FFFFFH = rezervate de firm
Porturile de intrare / ieire (I / E)
Spaiul de adrese de intrare / ieire este separat de spaiul adreselor memoriei.
Spaiul este nesegmentat i cu dimensiunea de 64 Ko ceea ce asigur posibilitatea de
adresare direct a unui mare numr de porturi I/E cu 8 sau 16 bii.
ntr-un transfer I/E, UCP citete/scrie 16 bii/ciclu de bus dac portul I/E este
localizat la adresa par i 8 bii/ciclu dac portul I/E este localizat la adres impar.
Faciliti pentru lucru n sisteme multi-master
Facilitile pentru lucrul multi-master sunt prezentate n continuare.
Interzicerea accesului la bus a altor module master cu ajutorul
semnalului LOCK. Bus-ul se utilizeaz prin diviziune n timp,
48
ntreeserea ciclurilor de acces la bus a diverselor module master
se face la nivel de ciclu de bus (i nu la nivel de ciclu de
instruciune).
LOCK = 0 indic faptul c 8086 execut o instruciune ce nu poate fi
ntrerupt (instruciunea e prefixat LOCK ex. actualizarea unui
pointer de 4 octei).
Utilizarea liniilor RQ/GT0 i RQ/GT1
Liniile RQ/GT0 i RQ/GT1 bidirecionale permit controlul accesului
la un bus local comun mai multor procesoare. Protocolul de
cerere/cedare a bus-ului decurge astfel:
o procesorul solicitator cere acces prin generarea unui impuls
(RQ=0) ctre UCP;
o UCP (la sfritul ciclului main curent) cedeaz bus-ul i
rspunde prin impulsul (GT=0);
o dup terminarea accesului, cellalt procesor elibereaz bus-ul
informnd asupra acestui fapt printr-un nou impuls (GT=0).
Sistemul de ntreruperi
Clasificarea ntreruperilor
ntreruperile interne (software)
o INT n, unde tipul este TIP=n, n {0, ..., 255}
o INTO (INTerrupt ou Overflow), provoac o ntrerupere TIP=4 dac
flag-ul overflow a fost setat n urma apariiei unor depiri la
efectuarea operaiilor aritmetice;
o IDIV, cu TIP=0, generat automat dac apare o eroare de depire la
operaia de mprirre;
o SINGLE STEP, cu TIP=1, se genereaz automat dup execuia
fiecrei instruciuni, dac flag-ul TF (test flag) a fost setat n 1.
Acest tip de ntrerupere practic UCP n modul de lucru pas cu pas,
util pentru depanarea programelor.
ntreruperile externe (hardware) se genereaz prin aplicarea unor semnale pe
intrrile de ntrerupere.
o NMI pentru ntreruperile nemascabile, cu TIP=2; semnalul este
activ pe frontul pozitiv.
o INTR pentru ntreruperi mascabile (prin flag-ul IF din registrul de
flag-uri). Semnal activ prin nivel logic 1; acesta trebuie meninut
activ pn la recunoaterea ntreruperii de ctre UCP. Tipul
ntreruperii externe mascabile se genereaz de ctre dispozitivul
ntreruptor (de exemplu controlerul de ntreruperi I8259A).
Servirea ntreruperilor
Tipul unei ntreruperi este utilizat de ctre UCP ca adres relativ ntr-un tablou
de pointer-i, amplasat n memoria principal ntre adresele 03FFH (256x4 octei).
49
Un pointer conine adresa logic pentru servirea ntreruperii. Pentru a efectua saltul la
aceast adres se efectueaz urmtoarele operaii:
IP TP(T+1,T); CSTP(T+3, T+2)
T=4xTIP
TP(+1, ) reprezint cuvntul cu 16 bii format din octeii de adres -1 i
din tabloul de pointer-i. Efectul este asemntor cu cel al instruciunii CALL
intersegment
Prioritile de servire pentru diversele tipuri de ntreruperi (care pot apare
eventual simultan) rezult din organigrama alturat.
Ciclurile INTA pentru ntreruperile externe mascabile (INTR) pe durata
celor dou cicluri INTA, semnalul LOCK este activ. Vectorul de ntrerupere este n
acest caz numrul indicator al tipului i este citit de ctre UCP n al doilea ciclu
INTA.
n figura 4.10 se prezint modul de alocare n memorie a vectorilor de
ntrerupere.
TIP I
(SINGLE STEP)
TIPO (DIV)
TIP 2 (NMI)
TIP 3 (INSTR DE INTR
CU 1 OCTET)
TIP 4 (INTO)
Zon rezervat
pentru compatibiliti
cu alte produse INTEL
.
.
.
16 bii
IP
CS
0
2
4
6
8
A
C
E
10H
12H
ntreruperea break
point destinat
depanrii programelor
7EH
8OH
3FEH
Figura 4.10. Tabel de pointer-i pentru ntreruperi
n figura 4.11 se prezint organigrama corespunztoare servirii unei ntreruperi
de ctre unitatea central I8086.
50
intreruperi
interne
Completeaz
instruciunea
curent
NMI ?
TF=1 ?
INTR ?
NU
Da
NU
NU IF=1 ?
NU Da
Execut
instruciunea
urmtoare
Confirm receptarea
ntreruperii (primul ciclu
INTA)
Citete tipul ntreruperii
(al doile ciclu INTA)
Salveaz n stiv flag-urile
TEMP TF IF, IF 0
Salveaz n stiv CS, IP
CS, IP Adresa de sevire
NMI ?
TEMP=1
Procedeu de servire a
ntreruperii
Da
Da
NU
NU
Reia programul
ntrerupt
Restabilete IP, CS
Restabilete flag-urile
Da
Da
(definit de
programator)
* TEMP = variabil intern pentru
memorarea valorii lui TF (TEST FLAG)
Figura 4.11. Organigrama servirii unei ntreruperi.
Iniializarea unitii centrale. Starea HALT. Utilizarea intrrii TEST
1 pe RESET determin:
CS FFFFH, IP 0 ; ceea ce determin generarea adresei fizice 0FFFF0H cu
adres absolut a primei instruciuni executat de I8086.
Intreruperile mascabile se invalideaz IF 0.
51
HALT (la apariia instruciunii) stopeaz toate activitile UCP pn
ce apare o ntrerupere sau semnal RESET. n aceast sare o cerere de
bus este (HOLD=1) este recunoscut i i acceptat de ctre UCP.
Intrarea TEST este testat de instruciunea WAIT i dac TEST 0,
atunci procesorul ateapt (ntr-o stare inactiv) pn ce TEST 0.
n acest timp, se pot servi ntreruperile aprute la intrri, dup care se
reia ateptarea. Intrarea TEST poate servi pentru sincronizarea UCP
cu evenimente externe.
4.4. Procesoare de semnal digitale
O dat cu dezvoltarea tehnicii digitale i n special cu creterea performanelor
microprocesoarelor s-a dezvoltat un segment aparte de componente numerice
specializate n prelucrarea numeric a semnalelor. Astfel de componente au cptat
numele de procesoare de semnal digitale, prescurtat DSP (Digital Signal Processor).
Astfel prescurtarea DSP capt dubl semnificaie; una din semnificaii se refer la
tehnica prelucrrii semnalelor n format numeric iar cea de-a doua semnificaie se refer
la dispozitivele (procesoarele) specializate, destinate implementrii tehnicilor de
prelucrare a semnalelor n format numeric.
Un procesor destinat prelucrrii numerice a semnalelor reprezint o unitate
central specializat care este capabil s execute cu vitez ridicat secvene de
instruciuni cum sunt cele de deplasare a coninutului unui registru i adunarea
coninutului acestuia sau cele de nmulire i adunare care sunt operaii uzuale n
algoritmii de prelucrare a semnalelor.
Spre deosebire de un microprocesor care este o unitate central de uz general, un
dispozitiv DSP este destinat anumitor domenii de utilizare definite de tehnica de
prelucrare numeric a semnalelor avnd instruciuni speciale, adaptate scopului propus
iar aplicaiile sunt executate n timp real ceea ce presupune un timp scurt de execuie a
instruciunilor i o structur special a sistemului de ntreruperi. Pe de alt parte, un
dispozitiv DSP lucreaz de obicei ntr-o structur ierarhizat de calcul n care
dispozitivul DSP asist un microprocesor de uz general.
Dei exist o mare varietate de dispozitive DSP acestea sunt proiectate cel mai
adesea s ndeplineasc aceleai funcii de baz. Rezult c exist un set de caracteristici
de baz pentru toate procesoarele DSP, caracteristici de baz care pot fi mprite n trei
categorii:
dispozitivele sunt specializate n efectuarea cu vitez ridicat a
operaiilor aritmetice;
sunt prevzute cu mecanisme diversificate de transfer a datelor din i
ctre lumea real;
sunt utilizate arhitecturi cu acces multiplu la memorie.
Activitile unui dispozitiv DSP impun efectuarea unor operaii specifice cum
sunt: (figura 4.12):
adunri i nmuliri;
52
ntrzieri;
manipulri de matrice.
Z
-1
Z
-1
c[0]
c[1]
c[2]
Fig. 4.12. Operaii specifice prelucrrii digitale a
semnalelor
adunri
nmuliri ntrzieri
lucru cu matrice
Operaiile de adunare i de nmulire sunt folosite pentru:
extragerea simultan a doi operanzi;
realizarea adunrii i nmulirii (de obicei simultan);
stocarea rezultatului sau reinerea acestuia n vederea repetrii
operaiei.
ntrzierile sunt folosite pentru reinerea unei valori pentru utilizare ulterioar.
Manipularea matricelor este necesar pentru:
extragerea operanzilor aflai n locaii succesive de memorie;
copierea datelor de la memorie la memorie.
Aceast suit de operaii sunt de obicei executate de dispozitivul DSP astfel:
executarea n paralel a operaiilor de nmulire i adunare;
acces multiplu la memorie n scopul extragerii simultane a doi
operanzi i memorarea rezultatului;
folosirea mai multor registre pentru reinerea temporar a datelor;
generarea eficient a adreselor pentru utilizarea matricelor;
faciliti speciale cum sunt ntrzierile sau adresarea circular.
Pentru realizarea operaiilor aritmetice dispozitivele DSP au o structur special,
de mare vitez, a unitii logice i aritmetice deoarece ele trebuie s execute simultan
adunri i nmuliri. Din acest motiv dispozitivele DSP au de regul o structur special
a circuitelor de adunare i nmulire ce permite acestor operaii n paralel, de ctre o
singur instruciune, aa cum este artat n figura 4.13.
ntrzierea permite ca valoarea intermediar rezultat n urma calculelor s fie
memorat pentru o utilizare ulterioar. Acest lucru poate fi necesar, de exemplu, cnd
trebuie calculat un total; totalul poate fi pstrat n procesor pentru a evita scrierile i
citirile repetate la memorie. Din acest motiv procesoarele DSP au un numr relativ mare
de registre, n virgul fix sau virgul mobil, care pot fi folosii pentru stocarea
valorilor intermediare.
53
Utilizarea matricelor permite ca datele s poat fi manevrate eficient n locaii
succesive de memorie. Acest lucru necesit generarea adresei de memorie unde se
gsete valoarea urmtoare i pentru aceasta dispozitivele DSP au registre de adrese ce
sunt folosii pentru pstrarea adresei i care permit generarea adresei urmtoare n mod
eficient.
P S
conversie de tip
s2
s3
s0
s1
magistral unic
nmulirea i adunarea
lucreaz n paralel
Fig. 4.13. Fluxul de date la realizarea nmulirii i adunrii
TABELUL 4.2.
Simbol
Adresare Observaii
*rP adresare indirect
prin registru
este citit data din memorie indicat de adresa coninut
n registrul rP
*rP++ postincrementare dup citirea datei din memorie, adresa din registrul rP
este incrementat, n aa fel nct s indice adresa
urmtoarei date din matrice
*rP-- postdecrementare dup citirea datei din memorie, adresa din registrul rP
este decrementat, n aa fel nct s indice adresa
urmtoarei date din matrice
*rP++r
I
postincrementare
n funcie de
registru
dup citirea datei din memorie, adresa coninut n
registrul rP este incrementat cu valoarea coninut de
registrul rl, adresa obinut indicnd noua valoare ce
urmeaz a fi citit din memorie further down the array
*rP++r
Ir
cu bii inversai dup citirea datei din memorie, valoarea ce indic adresa
este incrementat pentru a indica valoarea urmtoare din
matrice, biii adresei fiind aezai n ordine invers
Posibilitatea generrii eficiente a unei adrese noi este o facilitate caracteristic a
procesoarelor DSP. n mod obinuit adresa urmtoare poate fi generat pe durata
54
extragerii sau stocrii datelor. Procesoarele DSP au un set bogat de instruciuni pentru
generarea adreselor. Un exemplu de astfel de instruciuni este dat n tabelul 4.2.
Sintaxa n limbaj de asamblare pentru instruciunile prezentate n tabelul 4.2 este
foarte asemntoare cu limbajul C. De cte ori un operand este extras din memorie prin
utilizarea modului de adresare indirect prin registre, registrul de adres poate fi
incrementat pentru a indica urmtoarea valoare necesar din matrice. Incrementarea
adresei este liber nu sunt implicate resurse pentru calculul adresei i mai multe
astfel de adrese pot fi generate ntr-o singur instruciune. Generarea adreselor este un
factor important n creterea vitezei procesoarelor DSP i a operaiilor specializate ale
acestora.
Ultimul mod de adresare cu bii inversai arat ct de specializate pot fi
procesoarele DSP. Adresarea cu inversare de bii este necesar atunci cnd un tabel de
valori este reordonat prin inversarea ordinii biilor de adres astfel:
inversarea ordinii biilor n fiecare adres;
amestecarea datelor prin inversarea biilor, adresarea fcndu-se n
ordine cresctoare.
O astfel de operaie este utilizat exclusiv la calcului transformatei Fourier
rapide. Se poate spune deci, c dispozitivele DSP sunt proiectate special pentru a
calcula n mod eficient transformata Fourier rapid.
Din punct de vedere al legturii unitii centrale cu mediul extern, un dispozitiv
DSP este prevzut cu mai multe interfee interne (on chip) care lucreaz ntr-un sistem
specializat de ntreruperi. Cele mai frecvente interfee ale unui dispozitiv DSP sunt:
intrri/ieiri numerice;
convertoare analog-numerice (CAN);
convertoare numeric-analogice (CNA);
comparatoare;
numrtoare programabile;
interfee seriale sincrone de mare vitez pentru conectarea
perifericelor externe sau a dispozitivelor DSP;
interfee seriale standard de tip RS-232 pentru lucrul pe port serial
asincron.
4.4.1. Procesorul de semnal digital, TMS320F240
Circuitul DSP de tip TMS320F240 este un circuit integrat pe scar foarte larg
n tehnologie CMOS i se compune din trei uniti funcionale: unitatea central de tip
C2xx DSP, memoria intern i unitatea circuitelor periferice. De asemenea, n afar de
aceste uniti funcionale sunt prevzute o serie de faciliti sistem care se refer la
gestionarea memoriei, iniializarea blocurilor, ntreruperi, controlul intrrilor/ieirilor,
generarea ceasului intern i comutarea n regim de consum redus. Circuitul
TMS320F240 utilizeaz o arhitectur Harvard avansat pe folosirea a dou magistrale
separate: de date i de program.
55
n continuare sunt prezentate foarte sumar principalele faciliti oferite de
circuitul DSP n scopul formrii unei imagini asupra structurii complexe a acestuia:
unitate central de tip C2xx cu arhitectur paralel ce ofer
posibilitatea execuiei n paralel a instruciunilor, posibilitatea de
prelucrare a mai multor fluxuri de informaii simultan, execuia
instruciunilor ntr-un singur ciclu main (inclusiv a nmulirii);
memorie de program inclus n circuitul integrat de 16KB (cuvinte
de 16 bii) de tip flash EEPROM i memorie RAM cu acces dublu
pentru program/date de 544 cuvinte de 16 bii;
oscilator extern de 10MHz, bucla PLL intern a DSP lucrnd la
20MHz;
28 de intrri/ieiri numerice;
dou convertoare analog-numerice pe 10 bii ce pot lucra simultan,
numrul intrrilor analogice fiind extins prin multiplexare la 16;
trei numrtoare programabile independente pe 16 bii;
interfa serial sincron de mare vitez pentru conectarea
perifericelor externe;
interfa serial standard de tip RS-232 pentru lucrul pe port serial
asincron;
Memorie Flash
EEPROM
Memorie RAM cu
acces dublu
Interfaa cu
memoria extern
Numrtoare
programabile de uz
general
Uniti de
comparare
Unitate central de
tip C2xx
Modul interfa de
sistem
CAN dublu pe
10 bii
Interfa serial
sincron
Interfa serial
asincron
Watchdog
Timer
Fig. 4.14. TMS320F240 schema bloc
Magistrala de date
Magistrala de program
Magistrala perifericelor
Intrri/Ieiri
numerice
56
Schema bloc simplificat a circuitului DSP de tip TMS320F240 este prezentat
n figura 4.14.
Prezena celor dou magistrale, magistrala de date i magistrala de program
permite prelucrarea simultan a instruciunilor de program i a datelor.
Organizarea memoriei procesorului este prezentat n tabelele 4.3, 4.4 i 4.5.
TABEL 4.3.
Memorie Program
Hex
0000
003F
Intreruperi
(Memorie extern)
0040
FDFF
Memorie extern
FE00
FEFF
On-Chip DARAM B0
(CNF=1)
sau
Memorie extern
(CNF=0)
FF00
FFFF
Rezervat
MP/ MC =1
Mod microprocesor
TABEL 4.4.
Memorie Program
Hex
0000
003F
Intreruperi
On-Chip Flash
0040
3FFF
Memorie Flash On-
Chip
4000
FDFF
Memorie extern
FE00
FEFF
On-ChipDARAM B0
(CNF=1)
sau
Memorie extern
(CNF=0)
FF00
FFFF
Rezervat
MP/ MC =0
Mod Microcomputer
Dispozitivul DSP este prevzut cu un pin MP/ MC (microprocessor mode /
microcomputer mode) cu ajutorul cruia se pot obine dou configuraii ale memoriei de
program:
MP/ MC = 1 (microprocessor mode) modul n care memoria on chip
flash i ROM sunt dezactivate (Tabelul 4.3);
MP/ MC = 0 (microcomputer mode) modul n care memoria on chip
flash i ROM sunt activate (Tabelul 4.4).
Bitul CNF care se gsete n registrul de stare ST1 permite activarea memoriei
RAM cu acces dublu on chip, blocul 0 (CNF = 1) sau a memoriei externe (CNF = 0).
Organizarea memoriei de date este artat n tabelul 4.5. Se observ c n
memoria de date vom gsi corespondentul registrelor unitii centrale i a perifericelor
ceea ce permite lucrul cu acetia identic cu lucrul cu orice alt locaie de memorie.
Acest fapt duce la creterea vitezei de execuie i simplitatea programrii.
mprirea memoriei n dou tipuri: memorie de program i memorie de date
impune ca orice program s fie alctuit din dou segmente corespunztoare acestor
tipuri, amestecarea instruciunilor cu datele nefiind permis.
57
Organizarea ntreruperilor unitii
centrale
Sistemul de ntreruperi externe ale
unitii centrale (miezul procesorului
C2xx - CPU) este format din ase
ntreruperi mascabile (INT1-INT6) i una
nemascabil (NMI). Prioritatea maxim o
are ntreruperea NMI iar prioritile
ntreruperilor mascabile scad de la INT6 la
INT1, INT1 avnd prioritatea minim.
Fiecrei ntreruperi i corespunde
un bit n registrul fanioanelor de
ntrerupere a unitii centrale (IFR) i
fiecrei ntreruperi mascabile i
corespunde un bit n registrul mtilor
unitii centrale (IMR). O ntrerupere
mascabil este mascat (nu va genera o
ntrerupere ctre miez) cnd bitul
corespunztor n IMR este 0. De asemenea
miezul procesorului mai are un bit pentru
mascarea general a ntreruperilor (INTM)
n registrul de stare ST0. Cnd INTM este
setat la 1 toate ntreruperile mascabile sunt
dezactivate.
Rspunsurl la ntrerupere a miezului
C2xx
Cnd apare o tranziie de la unu la
zero pe o intrare de ntrerupere a miezului,
bitul corespunztor al fanionului din IFR
este setat n 1. O ntrerupere este generat
ctre miez dac aceasta nu este mascat -
ntreruperile globale sunt permise
(INTM=0) - i nu exist o alt ntrerupere
nemascat de prioritate mai mare n
ateptare (acest lucru nsemnnd c nu exist nici un fanion setat al unei ntreruperi
nemascate de prioritate mai mare). Fanionul este ters de ctre hardware o dat ce
cererea de ntrerupere este trimis ctre miez. Un fanion de ntrerupere poate fi de
asemenea ters de ctre programul utilizator scriind un 1 n bitul corespunztor.
TABEL 4.5.
Memorie Date
Hex
0000
005F
Regitrii i zon rezervat
0060
007F
Memorie On-Chip DARAM B2
0080
01FF
Rezervat
0200
02FF
Memorie On-Chip DARAM B0
(CNF=0)
sau
zon rezervat (CNF=1)
0300
03FF
Memorie On-Chip DARAM B1
0400
07FF
Rezervat
0800
6FFF
Ilegal
7000
73FF
Regitrii perifericelor (System,
WD, ADC, SPI, SCI, Intreruperi,
I/O)
7400
743F
Regitrii perifericelor
(Manager-ul de evenimente)
7440
77FF
Rezervat
7800
7FFF
Ilegal
8000
FFFF
Memorie extern
58
4.5. Microcalculatoare integrate, microcontrolere
4.5.1. Prezentare general
Electronica digital se bazeaz astzi n bun msur pe utilizarea circuitelor
integrate VLSI (Very Large Scale Integration circuite integrate pe scar foarte larg)
de tipul microprocesor, microcalculator sau microcontroler.
Dintre acestea se detaeaz net microcalculatoarele integrate i
microcontrolerele care nglobeaz n structura hard pe lng o unitate central puternic
cu faciliti speciale pentru lucrul n timp real i periferice de tipul convertoarelor A/D,
interfee paralele, interfee seriale, sisteme de generare a impulsurilor modulate, timere,
circuite de supraveghere a duratei de execuie a programelor, executiv de timp real
integrat etc. ceea ce uureaz mult munca proiectantului i duce la creterea substanial
a performanelor sistemului.
Nu exist o diferen net ntre microcalculatoare integrate i microcontrolere.
Microcontrolerele prin setul de instruciuni mai redus, sunt mai intim legate de
aplicaiile de control, urmrire i automatizare industrial.
ntre microcalculatoarele integrate mai cunoscute se pot enumera: INTEL
8048/8035, MOTOROLA 6801 i 6805 i familia ZILOG Z8.
INTEL 8048 a fost primul microcalculator integrat; acest dispozitiv conine ntr-
o capsul de 40 de pini urmatoarele:
o unitate central de 8 bii;
o memorie RAM de 64 octei;
o memorie ROM de 1 koctet;
un numr de 27 de linii de I/E (Intrare/iEire);
un oscilator pilot;
un circuit de ceas de 8 bii.
Setul de instruciuni este tributar ntr-o oarecare masur primului microprocesor
de uz general I8080, cum de altfel este i concepia hardware-ului, cuprinde: operaii cu
acumulatorul, transferuri de date, salturi, chemri i reveniri din subrutine, operaii de
intrare/ieire i operaii de control cu registre i indicatori.
MC 6801 este un microcalculator integrat de 8 bii care s-a dezvoltat din familia
microprocesorului de uz general MC6800 (MOTOROLA).
Instruciunile microcalculatorului integrat MC6801 sunt compatibile cu
instruciunile microprocesorului mam. Timpul de execuie a fost redus i cteva noi
instruciuni au fost adugate; ntre acestea i instruciunea de nmulire fr semn.
MC6801 poate funciona fie ca microcalculator de sine stttor fie ca
microcalculator de uz general ce poate utiliza o memorie extern de cel mult 64ko.
MC6841 include pe lng microprocesorul propriu-zis:
o memorie fix (ROM) de 2 ko;
o memorie citete/scrie (RAM) de 128 de octei;
un numr de 29 linii de I/E;
59
trei circuite de ceas programabile, de 16 bii fiecare;
un oscilator pilot.
Familia ZILOG Z8 cuprinde o variant standard Z8611 i mai multe versiuni de
dezvoltare. Principalele caracteristici ale acestei versiuni sunt:
43 de tipuri de instruciuni;
124 de registre de uz general, 4 registre de I/E, 16 registre de
control i configurare;
32 de linii de intrare/ieire;
un circuit de intrare/ieire serie;
2 circuite de ceas (fiecare ceas avnd un divizor programabil de 8
bii i un predivizor de 6 bii);
6 ntreruperi vectorizate, mascabile i aranjabile n ir de
prioriti;
timp de execuie mediu a instruciunilor de 2,2 s.
Dintre microcontrolerele reprezentative se pot aminti:
microcontrolerul AVR AT90S2313 al firmei ATMEL
microcontrolerul PIC 16F87X al firmei MICROCHIP
TECHNOLOGY ;
4.5.2. Microcontrolerul AT90S2313
Microcontrolerul AT90S2313 are o memorie FLASH programabila n sistem de 2K
octei.
Caracteristici principale:
Bazat pe arhitectura AVR @ RISC cu performane ridicate i consum redus:
o 118 instruciuni puternice - majoritatea se execut ntr-un ciclu main;
o 32 x 8 registre generale de lucru;
o viteza pan la 10 MIPS @ 10 MHz.
Memorie nevolatil de date:
o Mrimea memoriei Flash: 2K octei programabil In sistem;
suport 1 000 cicli de tergere/nscriere;
o 128 octei de Memorie SRAM.
o 128 octei de memorie EEPROM programabil In sistem;
suport 1 000 000 cicli de tergere/nscriere;.
o Protecie programabil pe 8 bii a memoriei de date Flash si EEPROM.
Periferice:
o un temporizator/numrtor cu prescaler separat pe 8 bii;
o un temporizator/numrtor cu prescaler separat pe 16 bii;
o comparator, moduri de captur i PWM pe 8, 9 i 10 bii;
o comparator analogic on-chip;
60
o temporizator Watchdog programabil cu oscilator ncorporat in chip;
o interfa serial SPI pentru programarea In-system;
o port serial UART full duplex.
Funcii speciale ale microcontrolerului:
o consum redus n caz de inactivitate precum i power-down de
economisire a energiei;
o surse de ntrerupere extern i intern.
Specificaii:
o tehnologie CMOS - consum redus, vitez mare;
o mod de operare complet static.
Consum de energie la 4 MHz, 3V, 25C:
o activ: 2.8 mA;
o inactiv: 0.8 mA;
o power-down: <1 A.
Intrri/Ieiri i Capsula:
o 15 linii de intrare/ieire programabile;
o capsula PDIP si SOIC de 20 pini.
Tensiuni de operare:
o 2.7 - 6.0V (AT90S2313-4);
o 4.0 - 6.0V (AT90S2313-10).
Viteza de operare:
o 0 - 4 MHz (AT90S2313-4);
o 0 - 10 MHz (AT90S2313-10).
Configuraia pinilor:
Descrierea pinilor microcontrolerului:
VCC Pin de alimentare (tensiune pozitiva).
GND Pin de mas.
Portul B (PB7..PB0). Portul B este un port I/O bidirecional pe 8 bii.
La ieirile terminalelor se pot configura rezistoare pull-up (legare
software la plusul sursei de alimentare a rezistoarelor interne
selectabil pentru fiecare pin in parte). PB0 i PB1 de asemenea
61
servesc ca intrare pozitiv (AIN0) i intrare negativ (AIN1), pentru
comparatorul analogic in chip. Portul B furnizeaz la ieire un curent
de 20 mA astfel nct poate fi legat direct la un afior LED. Atunci
cnd pinii PB0 la PB7 sunt utilizai ca intrri i din exterior sunt
comandai cu semnal digital LOW, ei vor consuma energie daca
rezistenele interne de pull-up sunt activate. Dup un Reset pinii
Portului B vor fi n starea de nalt impedan chiar dac semnalul de
ceas nu este activ.
Portul D (PD6..PD0). Portul D posed apte pini bidirecionali de I/O
(curent debitat de 20 mA) cu rezistene pull-up. Pinii portulul D intr
n starea de nalt impedan n cazul acionrii Resetului.
Figura 4.15. Schema bloc a microcontrolerului AT90S2313
62
RESET. Pin de intrare. Un semnal LOW pe acest pin pe o durat de
50 ns va genera un Reset, chiar daca semnalul de clock nu este activ.
Un semnal mai scurt nu garanteaza conditia de Reset.
XTAL1. Intrare inversat pe un oscilator amplificat i intrare n
circuitul de semnal de ceas.
XTAL2. Ieire inversat de la un amplificator oscilator.
AT90S2313 este un microcontroler CMOS pe 8 bii, cu consum redus bazat pe
arhitectura AVR RISC. Executnd instruciuni puternice ntr-un ciclu main,
AT90S2313 execut aproape 1 milion de instruciuni pe secund.
Miezul AVR combin setul bogat de instruciuni cu 32 de registre de lucru
generale. Toate cele 32 de registre sunt conectate direct la Unitatea Aritmetic i Logic
(ALU), astfel este permis accesarea a dou registre independente ntr-un singur ciclu
main. Arhitectura rezultat este mult mai eficient din punct de vedere al codului
astfel nct se obine o putere de calcul pn la zece ori mai mare dect cel al arhitecturii
microcontrolerelor CISC.
n modul "inactiv procesorul se oprete n timp ce memoria SRAM,
temporizatorii/numrtorii, portul SPI i ntreruperile de sistem continu s funcioneze.
n modul "power-down microcontrolerul salveaz coninutul registrelor i
oprete oscilatorul, se opresc toate funciile din chip pn la urmtoarea ntrerupere
extern sau un Reset hardware.
Microcontrolerul este fabricat n tehnologia memorie nevolatil de densitate
nalta. Memoria Flash intern, programabil In sistem permite reprogramarea In
sistem utiliznd interfaa serial SPI sau un programator de memorii nevolatile
convenional.
4.5.3. Microcontrolerul PIC 16F877
Microcontrolere de 28/40-Pini cu 8-Bit CMOS FLASH.
Specificaiile unitii centrale:
unitate centrala (CPU) de tip RISC;
35 de instruciuni;
toate instruciunile se execut ntr-un ciclu al unitii centrale, cu
excepia instruciunilor de ramificare a programului care se execut n
dou cicluri CPU;
frecvena de ceas: 20 MHz (durata ciclului instruciunii de 200 ns);
memoria:
o maximum 8k cuvinte de 14 bii de memorie FLASH;
o maximum 368 octei de memorie de date - Data Memory -
(RAM);
o maximum 256 octei de memorie de date EEPROM;
microcontrolerul este compatibil pin la pin cu PIC16C73B/74B/76/77
posibilitatea tratrii ntreruperilor de la 14 surse de ntrerupere;
stiv hardware cu opt nivele;
63
moduri de adresare direct, indirect i relativ;
Power-on Reset (POR) reset la aplicarea tensiunii de alimentare;
Power-up Timer (PWRT) temporizare la aplicarea tensiunii de
alimentare, i Oscillator Start-up Timer (OST) stabilizarea
oscilatorului la pornire;
Watchdog Timer (WDT) cu propriul oscilator RC on-chip pentru
funcionare sigur;
mecanism de protecie a codului programabil;
mod SLEEP pentru economisirea energiei;
opiuni selectabile pentru oscilator;
tehnologie CMOS FLASH/EEPROM de consum redus i de vitez
ridicat;
circuitul este n ntregime de tip static;
In-Circuit Serial Programming (ICSP) - programarea serial direct a
circuitului prin intermediul a doi pini;
posibilitate de programare serial cu o singur tensiune de 5V;
In-Circuit Debugging depanare direct la circuit prin intermediul
a doi pini;
acces scriere/citire a procesorului la memoria de program;
domeniul tensiunilor de alimentare: 2,0V la 5,5V;
curent maxim absorbit: 25mA;
Conexiunile externe
64
Microcontrolerele PIC16F876/873 au 28 de pini iar microcontrolerele
PIC16F877/874 au 40 de pini. Portul paralel slave nu este implementat la dispozitivele
cu 28 de pini.
Descrierea pinilor pentru PIC16F874 i PIC16F877
Numele pinului
DIP
Nr. pin
PLCC
Nr. pin
tip
I/O/P
Tip buffer
Descriere
OSC1/CLKIN 13 14 I ST/CMOS
(4)
Intrarea oscilatorului cu
cristal/surs extern de ceas
OSC2/CLKOUT 14 15 O - Ieirea oscilatorului cu cristal.
Conectarea la cristal sau la
rezonator n modul oscilator cu
cristal. n modul RC, pinul OSC2
furnizeaz CLKOUT care are 1/4
din frecvena la OSC1 i indic
durata unui ciclu de instruciune.
MCLR/VPP 1 2 I/P ST Intrarea resetului principal
Master Clear (Reset) sau intrarea
tensiunii de programare. Acest pin
este activ n zero atunci cnd se
aplic RESET.
RA0/AN0
RA1/AN1
RA2/AN2/VREF-
RA3/AN3/VREF+
RA4/T0CKI
RA5/SS/AN4
2
3
4
5
6
7
3
4
5
6
7
8
I/O
I/O
I/O
I/O
I/O
I/O
TTL
TTL
TTL
TTL
ST
TTL
PORTA este un port I/O
bidirecional
RA0 sau intrarea pentru semnal
analogic 0.
RA1 sau intrarea pentru semnal
analogic 1.
RA2 sau intrarea pentru semnal
analogic 2 sau referina negativ a
semnalului analogic.
RA3 sau intrarea pentru semnal
analogic 3 sau referina pozitiv a
semnalului analogic.
RA4 sau intrarea de ceas a
Timer0. Ieirea este de tip open
drain.
RA5 sau intrarea pentru semnal
analogic 4 sau selecia slave
pentru portul serial sincron.
RB0/INT
RB1
RB2
RB3/PGM
RB4
33
34
35
36
37
36
37
38
39
41
I/O
I/O
I/O
I/O
I/O
TTL/ST
(1)
TTL
TTL
TTL
TTL
PORTB este un port I/O
bidirecional. La PORTB poate fi
conectate prin program rezistene
interne la toate intrrile.
RB0 sau pin pentru ntreruperea
extern
RB1
RB2
RB3 sau intrare de programare de
tensiune sczut
Pin cu generarea unei ntreruperi
la schimbare
Pin cu generarea unei ntreruperi
65
RB5
RB6/PGC
RB7/PGD
38
39
40
42
43
44
I/O
I/O
I/O
TTL
TTL/ST
(2)
TTL/ST
(2)
la schimbare
Pin cu generarea unei ntreruperi
la schimbare sau pin In-Circuit
Debugger. Ceasul programrii
seriale.
Pin cu generarea unei ntreruperi
la schimbare sau pin In-Circuit
Debugger. Datele programrii
seriale.
RC0/T1OSO/T1C
KI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
15
16
17
18
23
24
25
26
16
18
19
20
25
26
27
29
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
ST
ST
ST
ST
ST
ST
ST
ST
PORTC este un port I/O
bidirecional
RC0 sau ieirea oscilatorului
Timer 1 sau intrarea de ceas Timer
1
RC1 sau intrarea oscilatorului
Timer 1 sau intrarea
Capture2/Ieirea Comare2/ieirea
PWM2
RC2 sau intrarea Capture1/Ieirea
Comare1/ieirea PWM1
RC3 sau intrarea/ieirea ceasului
serial sincron pentru modurile SPI
i I
2
C
RC4 sau intrare de date SPI (n
modul SPI) sau data I/O (n modul
I
2
C)
RC5 sau ieire de date SPI (n
modul SPI)
RC6 sau ieirea de date a
transmitorului USART sau
ceasul sincron
RC7 sau intrarea de date a
transmitorului USART sau
datele sincrone
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
19
20
21
22
27
28
29
30
21
22
23
24
30
31
32
33
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
ST/TTL
(3)
ST/TTL
(3)
ST/TTL
(3)
ST/TTL
(3)
ST/TTL
(3)
ST/TTL
(3)
ST/TTL
(3)
ST/TTL
(3)
PORTD este un port bidirecional
I/O sau un port paralel slave atunci
cnd se interfaeaz cu bus-ul unui
microprocesor
RE0/RD/AN5
8
9
I/O
ST/TTL
(3)
PORTE este un port bidirecional
I/O
RE0 sau comanda de citire pentru
portul paralel slave sau intrarea
66
RE1/WR/AN6
RE2/CS/AN7
9
10
10
11
I/O
I/O
ST/TTL
(3)
ST/TTL
(3)
analogic 5
RE1 sau comanda de scriere
pentru portul paralel slave sau
intrarea analogic 6
RE2 sau comanda de selecie
pentru portul paralel slave sau
intrarea analogic 7
VSS 12,31 13,34 P - Masa (referina de tensiune) pentru
pinii digitali I/O
VDD 11,32 12,35 P - Tensiunea de alimentare pozitiv
pentru pinii digitali I/O
NC - 1,17,
28,40
- Aceti pini nu sunt conectai
intern. Aceti pini trebuie s
rmn neconectai
Legend: I = intrare O = ieire I/O = intrare/ieire P = alimentare
- = nefolosit TTL = intrare TTL ST = intrare trigger Schmitt
SEMNAL = semnalul SEMNAL negat
Not:
1: acest buffer este o intrare trigger Schmitt cnd este configurat ca ntrerupere
extern;
2: acest buffer este o intrare trigger Schmitt cnd este folosit n modul de
programare serial;
3: acest buffer este o intrare trigger Schmitt cnd este configurat I/O de uz general
i ca intrare TTL cnd este folosit n modul port paralel slave (pentru interfaarea
cu magistrala unui microprocesor);
4: acest buffer este o intrare trigger Schmitt cnd este configurat n modul oscilator
RC i intrare CMOS n celelalte cazuri.
Caracteristici principale PIC16F873 PIC16F874 PIC16F876 PIC16F877
Frecvena de lucru DC-20 MHz DC-20 MHz DC-20 MHz DC-20 MHz
RESET (ntrzieri)
POR, BOR
(PWRT,
OST)
POR, BOR
(PWRT,
OST)
POR, BOR
(PWRT,
OST)
POR, BOR
(PWRT,
OST)
Memoria de program
FLASH
(cuvinte de 14 bii)
4k 4k 8k 8k
Memoria de date (octei) 192 192 368 368
Memoria de date
EEPROM
(octei)
128 128 256 256
ntreruperi 13 14 13 14
Porturi I/O
Porturile
A,B,C
Porturile
A,B,C,D,E
Porturile
A,B,C
Porturile
A,B,C,D,E
Timer-e 3 3 3 3
Module
Captur/Comparare/PWM
2 2 2 2
67
Comunicaie serial
MSSP,
USART
MSSP,
USART
MSSP,
USART
MSSP,
USART
Comunicaie paralel - PSP - PSP
Modul de conversie
analog-digital pe 10 bii
5 canale 8 canale 5 canale 8 canale
Set de instruciuni
35
instruciuni
35
instruciuni
35
instruciuni
35
instruciuni
Organizarea memoriei
Microcontrolerul are 3 blocuri de memorie. Memoria de program i memoria de
date au magistrale separate i deci se poate realiza accesul simultan la date i la
program.
Contorul de program are 13 bii ce poate adresa un spaiu de memorie program
de 8K x 14 bii. Accesarea locaiilor n afara spaiului fizic al memoriei implementate va
produce o adresare wraparound.
Vectorul RESET este 0000h iar vectorul de ntrerupere este 0004h.
Memoria este paginat iar paginile sunt:
pagina 0 la adresele 0005h la 07FFh inclusiv;
pagina 1 la adresele 0800h la 0FFFh inclusiv;
pagina 2 la adresele 1000h la 17FFh inclusiv;
pagina 3 la adresele 1800h la 1FFFh inclusiv.
Organizarea memoriei de date
Memoria de date este mprit n 4 bank-uri ce conin registrele de uz general
(General Purpose Registers) i registrele funciilor speciale (Special Function
Registers).
Selecia bank-urilor se face cu ajutorul biilor RP1 (STATUS<6>) i RP0
(STATUS<5>).
RP1:RP0 Bank
00 0
01 1
10 2
11 3
Fiecare bank din memoria static are 128 de octei (7Fh). Locaiile la adresele
mici sunt rezervate registrelor funciilor speciale (SFR) iar sub acestea se gsesc registre
de uz general (GPR). Fiecare bank are propriile registre SFR dar anumite registre SFR
dintr-un bank se pot gsi i ntr-un alt bank pentru reducerea dimensiunii codului i
pentru acces mai rapid la aceti registre.
Registrele de uz general pot fi accesai att n mod direct ct i indirect prin
intermediul registrelor de selecie: File Select Register (FSR).
68
Harta registrelor microcontrolerelor PIC16F877/876
Bank 0 Bank 1 Bank 2 Bank 3
Adresa
de
mem.
Registrul
din
memorie
Adresa
de
mem.
Registrul din
memorie
Adresa
de mem.
Registrul
din
memorie
Adresa
de
mem.
Registrul din
memorie
00h
adresare
indirect
(*)
80h
adresare
indirect
(*)
100h
adresare
indirect
(*)
180h
adresare
indirect
(*)
01h TMR0 81h OPTION_REG 101h TMR0 181h OPTION_REG
02h PCL 82h PCL 102h PCL 182h PCL
03h STATUS 83h STATUS 103h STATUS 183h STATUS
04h FSR 84h FSR 104h FSR 184h FSR
05h PORTA 85h TRISA 105h 185h
06h PORTB 86h TRISB 106h PORTB 186h TRISB
07h PORTC 87h TRISC 107h 187h
08h PORTD
(1)
88h TRISD
(1)
108h 188h
09h PORTE
(1)
89h TRISE
(1)
109h 189h
0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah PCLATH
0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh INTCON
0Ch PIR1 8Ch PIE1 10Ch EEDATA 18Ch EECON1
0Dh PIR2 8Dh PIE2 10Dh EEADR 18Dh EECON2
0Eh TMR1L 8Eh PCON 10Eh EEDATH 18Eh rezervat
(2)
0Fh TMR1H 8Fh 10Fh EEADRH 18Fh rezervat
(2)
10h T1CON 90h 110h 190h
11h TMR2 91h SSPCON2 111h 191h
12h T2CON 92h PR2 112h 192h
13h SSPBUF 93h SSPADD 113h 193h
14h SSPCON 94h SSPSTAT 114h 194h
15h CCPR1L 95h 115h 195h
16h CCPR1H 96h 116h 196h
17h CCP1CON 97h 117h 197h
18h RCSTA 98h TXSTA 118h 198h
19h TXREG 99h SPBRG 119h 199h
1Ah RCREG 9Ah 11Ah 19Ah
1Bh CCPR2L 9Bh 11Bh 19Bh
1Ch CCPR2H 9Ch 11Ch 19Ch
1Dh CCP2CON 9Dh 11Dh 19Dh
1Eh ADRESH 9Eh ADRESL 11Eh 19Eh
1Fh ADCON0 9Fh ADCON1 11Fh
Registre de
uz general
16 octei
19Fh
Registre de uz
general 16
octei
A0h
EFh
Registre de uz
general 80
octei
120h
16Fh
Registre de
uz general
80 octei
1A0h
1EFh
Registre de uz
general 80
octei
20h
7Fh
Registre de
uz general
96 octei F0h
FFh
acces
70h-7Fh
170h
17Fh
acces
70h-7Fh
1F0h
1FFh
acces
70h-7Fh
Locaie de memorie neimplementat, la citire se citete zero.
*
Nu este un registru fizic.
Not: 1: aceste registre nu sunt implementate la PIC16F876.
69
2: aceste registre sunt rezervate, ele nu trebuie scrise.
Biii de configurare (directiva __CONFIG)
;==============================================================
;
; Configuration Bits
;
;==============================================================
_CP_ALL EQU H'1FFF'
_CP_OFF EQU H'3FFF'
_DEBUG_OFF EQU H'3FFF'
_DEBUG_ON EQU H'37FF'
_WRT_OFF EQU H'3FFF' ; No prog memory write protection
70
_WRT_256 EQU H'3DFF' ; First 256 prog memory write
protected
_WRT_1FOURTH EQU H'3BFF' ; First quarter prog memory write
protected
_WRT_HALF EQU H'39FF' ; First half memory write protected
_CPD_OFF EQU H'3FFF'
_CPD_ON EQU H'3EFF'
_LVP_ON EQU H'3FFF'
_LVP_OFF EQU H'3F7F'
_BODEN_ON EQU H'3FFF'
_BODEN_OFF EQU H'3FBF'
_PWRTE_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FF7'
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_RC_OSC EQU H'3FFF'
_HS_OSC EQU H'3FFE'
_XT_OSC EQU H'3FFD'
_LP_OSC EQU H'3FFC'
Cuvntul de configurare (adresa 2007h)
Valoarea citit pentru biii de configurare neprogramai (teri) este 3FFFh.
Un bit programat este citit ca zero iar cel neprogramat este citit ca unu. Aceti
bii se gsesc n spaiul de program i locaia de memorie de la adresa 2007h poate fi
modificat numai pe timpul programrii.
R/P-1 U-0 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 U-0 U-0 R/P-1 R/P-1 R/P-1
CP - DEBUG WRT1 WRT0 CPD LVP BORDEN - - PWRTEN WDTEN F0SC1 F0SC0
Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
bit 13 CP: bit de protecie a codului din memoria FLASH
1 = protecia codului off
0 = codul din memoria de program este protejat odat protejat,
memoria FLASH nu mai poate fi scris.
bit 12 Neimplementat. Citit ca unu.
bit 11 DEBUG: bit pentru depanare In-Circuit
1 = depanator In Circuit dezactivat. RB6 i RB7 sunt pini de uz general
I/O
0 = depanator In Circuit activat. RB6 i RB7 sunt atribuii depanatorului
bit 10-9 WRT1:WRT0 bii de validare a scrierii memoriei de program
FLASH
71
11 = nu este activat protecia la scriere; toat memoria de
program poate fi scris sub controlul EECON
10 = 0000h la 00FFh este protejat la scriere; 0100h la 1FFFh
poate fi scris sub controlul EECON
01 = 0000h la 07FFh este protejat la scriere; 0800h la 1FFFh
poate fi scris sub controlul EECON
00 = 0000h la 0FFFh este protejat la scriere; 1000h la 1FFFh
poate fi scris sub controlul EECON
bit 8 CPD: bit de protecie a memoriei de date EEPROM
1 = memoria EEPROM nu este protejat
0 = memoria EEPROM este protejat
bit 7 LVP: bit de validare a tensiunii sczute la programarea serial in-
circuit
1 = pinii RB3/PGM au funcia PGM; programarea cu tensiune
sczut este validat;
0 = RB3 este I/O digital, trebuie utilizat HV la MCLR pentru
programare
bit 6 BORDEN: bit de validare a Brown-out Reset
1 = BOR activat
0 = BOR dezactivat
bit 5-4 Neimplementat. Citit ca unu.
bit 3 PWRTEN bit de validare a Power-up Timer
1 = PWRT dezactivat
0 = PWRT activat
bit 2 WDTEN: bit de validare a Watchdog Timer
1 = WDT activat
0 = WDT dezactivat
bit 1-0 FOSC1:FOSC0: biii de selecie a oscilatorului
11 = oscilator RC
10 = oscilator HS
01 = oscilator XT
00 = oscilator LP
72
Registre cu funcii speciale
Adr. Nume Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Valoarea
n: POR,
BOR
Bank 0
0h
(3)
INDF
Adresnd aceast locaie de memorie se folosete coninutul FSR pentru a
adresa memoria de date (nu este un registru fizic)
0000 0000
01h TMR0 Registrul Timer0 xxxx xxxx
02h
(3)
PCL Contorul de program (PC) cel mai puin semnificativ octet 0000 0000
03h
(3)
STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx
04h
(3)
FSR Pointer pentru adresarea indirect a memoriei de date xxxx xxxx
05h PORTA - - Memorare date PORTA la scriere, pini PORTA la citire --0x 0000
06h PORTB Memorare date PORTB la scriere, pini PORTB la citire xxxx xxxx
07h PORTC Memorare date PORTC la scriere, pini PORTC la citire xxxx xxxx
08h
(4)
PORTD Memorare date PORTD la scriere, pini PORTD la citire xxxx xxxx
09h
(4)
PORTE - - - - - RE2 RE1 RE0 ---- -xxx
0Ah
(1,3)
PCLATH - - -
Buffer de scriere a celor mai semnificativi 5 bii
ai contorului de program (PC)
---0 0000
0Bh
(3)
INTCON GIE PEIE TMR0IE INTE RBIE TMR0IF INTF RBIF 0000 000x
0Ch PIR1 PSPIF
(3)
ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000
0Dh PIR2 - CMIF - EEIF BCLIF - - CCP2IE -0-0 00
0Eh TMR1L
Registrul de stocare al celui mai puin semnificativ octet al registrului de 16
bii al TMR1
xxxx xxxx
0Fh TMR1H
Registrul de stocare al celui mai semnificativ octet al registrului de 16 bii al
TMR1
xxxx xxxx
10h T1CON - - T1CKPS1 T1CKPS0
T1OSC
EN
T1SYNC TMR1CS TMR1ON --00 0000
11h TMR2 Registrul Timer2 1111 1111
12h T2CON - TOUTPS3 TOUTPS2 TOUTPS1
TOUTP
S1
TMR2ON T2CKPS1 T2CKPS0 -000 0000
13h SSPBUF Registrul de transmisie/buffer de recepie a portului serial sincron xxxx xxxx
14h SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000
15h CCPR1L Registrul 1 (LSB) Captur/Comparare/PWM 0000 0000
16h CCPR1H Registrul 1 (MSB) Captur/Comparare/PWM -
17h CCP1CON - - CCP1X CCP1Y
CCP1
M3
CCP1M2 CCP1M2 CCP1M0 --00 0000
18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x
19h TXREG Registrul datelor de transmis al USART 0000 0000
1Ah RCREG Registrul datelor recepionate al USART 0000 0000
1Bh CCPR2L Registrul 2 (LSB) Captur/Comparare/PWM xxxx xxxx
1Ch CCPR2H Registrul 2 (MSB) Captur/Comparare/PWM xxxx xxxx
1Dh CCP2CON - - CCP2X CCP2Y
CCP2
M3
CCP2M2 CCP2M1 CCP2M0 --00 0000
1Eh ADRESH Registrul rezultat al octetului cel mai semnificativ al conversiei A/D xxxx xxxx
1Fh ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0
GO/
DONE
- ADON 0000 00-0
Legend: x = necunoscut, u = neschimbat, q = valoarea depinde de situaie, - =
neimplementat se citete zero, r = rezervat
Not: 1. Cel mai semnificativ octet al contorului de program nu este accesibil
direct. Registrul PCLATH conine biii PC<12:8> care vor fi transferai
n octetul cel mai semnificativ al contorului de program.
73
2. Biii PSPIE i PSPIF sunt rezervai la PIC16F873A/876A i trebuie
meninui teri.
3. Aceste registre pot fi adresate din orice bank.
4. PORTD, PORTE, TRISD i TRISE nu sunt implementai la
PIC16F873A/876A i la citire sunt zero.
5. Bitul 4 al EEADRH este implementat numai la PIC16F876A/877A.
Adr. Nume Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Valoarea
n: POR,
BOR
Bank 1
80h
(3)
INDF
Adresnd aceast locaie de memorie se folosete coninutul FSR pentru a
adresa memoria de date (nu este un registru fizic)
0000 0000
81h
OPTION_
REG
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111
82h
(3)
PCL Contorul de program (PC) cel mai puin semnificativ octet 0000 0000
83h
(3)
STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx
84h
(3)
FSR Pointer pentru adresarea indirect a memoriei de date xxxx xxxx
85h TRISA - - Registru direcie PORTA --11 1111
86h TRISB Registru direcie PORTB 1111 1111
87h TRISC Registru direcie PORTC 1111 1111
88h
(4)
TRISD Registru direcie PORTD 1111 1111
89h
(4)
TRISE IBF OBF IBOV PSPMODE - Bii direcie PORTE 0000 -111
8Ah
(1,3)
PCLATH - - -
Buffer de scriere a celor mai semnificativi 5 bii
ai contorului de program (PC)
---0 0000
8Bh
(3)
INTCON GIE PEIE
TMR0I
E
INTE RBIE TMR0IF INTF RBIF 0000 000x
8Ch PIE1 PSPIE
(2)
ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000
8Dh PIE2 - CMIE - EEIE BCLIE - - CCP2IE -0-0 00
8Eh PCON - - - - - - POR BOR ---- --qq
8Fh - Neimplementat -
90h - Neimplementat -
91h SSPCON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000
92h PR2 Registru de perioada al Timer2 1111 1111
93h SSPADD Registrul de adres al portului serial sincron (mod I
2
C) 0000 0000
94h SSPSTAT SMP CKE D/A P S R/W UA BF 0000 0000
95h - Neimplementat -
96h - Neimplementat -
97h - Neimplementat -
98h TXSTA CSRC TX9 TXEN SZNC - BRGH TRMT TX9D 0000 -010
99h SPBRG Registrul generator Baud Rate 0000 0000
9Ah - Neimplementat -
9Bh - Neimplementat -
9Ch CMCON C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 0000 0111
9Dh CVRCON CVREN CVROE CVRR - CVR3 CVR2 CVR1 CVR0 000- 0000
9Eh ADRESL Registrul octetului cel mai puin semnificativ al conversiei A/D xxxx xxxx
9Fh ADCON1 ADFM ADCS2 - - PCFG3 PCFG2 PCFG1 PCHG1 0--- 0000
Legend: x = necunoscut, u = neschimbat, q = valoarea depinde de situaie, - =
neimplementat se citete zero, r = rezervat
74
Not: 1. Cel mai semnificativ octet al contorului de program nu este accesibil
direct. Registrul PCLATH conine biii PC<12:8> care vor fi transferai
n octetul cel mai semnificativ al contorului de program.
2. Biii PSPIE i PSPIF sunt rezervai la PIC16F873A/876A i trebuie
meninui teri.
3. Aceste registre pot fi adresate din orice bank.
4. PORTD, PORTE, TRISD i TRISE nu sunt implementai la
PIC16F873A/876A i la citire sunt zero.
5. Bitul 4 al EEADRH este implementat numai la PIC16F876A/877A.
Adr. Nume Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Valoarea
n: POR,
BOR
Bank 2
100h
(3)
INDF
Adresnd aceast locaie de memorie se folosete coninutul FSR pentru a
adresa memoria de date (nu este un registru fizic)
0000 0000
101h TMR0 Registrul Timer0 xxxx xxxx
102h
(3)
PCL Contorul de program (PC) cel mai puin semnificativ octet 0000 0000
103h
(3)
STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx
104h
(3)
FSR Pointer pentru adresarea indirect a memoriei de date xxxx xxxx
105h - Neimplementat
106h PORTB Memorare date PORTB la scriere, pini PORTB la citire xxxx xxxx
107h - Neimplementat -
108h - Neimplementat -
109h - Neimplementat -
10Ah
(1,3)
PCLATH - - -
Buffer de scriere a celor mai semnificativi 5 bii
ai contorului de program (PC)
---0 0000
10Bh
(3)
INTCON GIE PEIE TMR0IE INTE RBIE TMR0IF INTF RBIF 0000 000x
10Ch EEDATA Octetul cel mai puin semnificativ (L) al registrului de date al EEPROM xxxx xxxx
10Dh EEADR Octetul cel mai puin semnificativ (L) al registrului de adres al EEPROM xxxx xxxx
10Eh EEDATH - -
Octetul cel mai semnificativ (H) al registrului de date al
EEPROM
--xx xxxx
10Fh EEADRH - - - -
(5)
Octetul cel mai semnificativ (H) al
registrului de adres al EEPROM
---- xxxx
Bank 3
180h
(3)
INDF
Adresnd aceast locaie de memorie se folosete coninutul FSR pentru a
adresa memoria de date (nu este un registru fizic)
0000 0000
181h
OPTION
_REG
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111
182h
(3)
PCL Contorul de program (PC) cel mai puin semnificativ octet 0000 0000
183h
(3)
STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx
184h
(3)
FSR Pointer pentru adresarea indirect a memoriei de date xxxx xxxx
185h - Neimplementat
186h TRISB Registru de direcie a datelor PORTB xxxx xxxx
187h - Neimplementat -
188h - Neimplementat -
189h - Neimplementat -
18Ah
(1,3)
PCLATH - - -
Buffer de scriere a celor mai semnificativi 5 bii
ai contorului de program (PC)
---0 0000
18Bh
(3)
INTCON GIE PEIE TMR0IE INTE RBIE TMR0IF INTF RBIF 0000 000x
18Ch EECON1 EEPGD - - - WRERR WREN WR RD x--- x000
18Dh EECON2 Registrul de control 2 (nu este un registru fizic) EEPROM ---- ----
75
18Eh - Rezervat, trebuie meninut ters 0000 0000
18Fh - Rezervat, trebuie meninut ters 0000 0000
Legend: x = necunoscut, u = neschimbat, q = valoarea depinde de situaie, - =
neimplementat se citete zero, r = rezervat
Not: 1. Cel mai semnificativ octet al contorului de program nu este accesibil
direct. Registrul PCLATH conine biii PC<12:8> care vor fi transferai
n octetul cel mai semnificativ al contorului de program.
2. Biii PSPIE i PSPIF sunt rezervai la PIC16F873A/876A i trebuie
meninui teri.
3. Aceste registre pot fi adresate din orice bank.
4. PORTD, PORTE, TRISD i TRISE nu sunt implementai la
PIC16F873A/876A i la citire sunt zero.
5. Bitul 4 al EEADRH este implementat numai la PIC16F876A/877A.
Figura 4.16. Schema bloc a microcontrolerului PIC16F877.
76
CAPITOLUL 5
MEMORIA
5.1. Prezentare general
Memoria unui calculator are rolul de a stoca temporar sau permanent date sau
programe. Durata de stocare a datelor se refer la timpul ct memoria este alimentat la
tensiunea electric. O memorie poate stoca permanent date dac informaia memorat
nu se pierde la ntreruperea tensiunii de alimentare a memoriei. n caz contrar, atunci
cnd memoria stocheaz informaia numai pe durata de timp ct este alimentat cu
energie electric, se spune c informaia este memorat temporar. Este momentul s
precizm faptul c un calculator numeric nu prelucreaz dect numere. Din acest motiv
mprirea informaiei n date i instruciuni are caracter pur convenional. Astfel, ntr-o
locaie de memorie se poate afla numrul (10110110
B
= 182
Z
) care pentru unitatea
central poate nsemna fie o valoare numeric egal cu 128 fie codul unei instruciuni de
tipul: aduna numarul a cu numarul b. Unitatea central decide dac numrul citit din
memorie reprezint o valoare numeric (dat) sau o comand (instruciune program).
Prin convenie, la pornire sau dup iniializare (RESET) unitatea central consider c
valoarea citit din memorie reprezint o comand. S presupunem ca acesta comanda
este: aduna numarul a cu numarul b. Asta nseamn c urmatoarele dou valori citite
din memorie se vor considera ca reprezentnd valorile numerelor a i b. Dup
executarea adunrii unitatea central va citi o nou valoare din memorie pe care o va
considera n mod automat ca reprezentnd codul numeric al unei instruciuni de
program. Rmne deci responsabilitatea programatorului ca n memorie s fie nscris o
succesiune corect de date care reprezint numere sau coduri de instruciuni.
Dup modul n care sunt stocate datele n memorie se poate face o prim
clasificare a acestora:
memorii de tip ROM (Read Only Memory) care sunt memorii ce
pot stoca permanent datele. Aa cum le arat i numele ele nu pot
fi dect citite de ctre unitatea central, nscrierea lor fiind fcut
prin procedee speciale, fie pe calculator, fie separat, pe un
dispozitiv special numit inscriptor de memorii ROM;
memorii de tip RAM (Random Access Memory) care sunt
memorii ce pot stoca temporar datele. Caracteristic acestor
memorii este faptul c ele pot fi scrise i citite n mod curent de
unitatea central.
Cele dou tipuri de memorie sunt amndou folosite n calculator n scopuri
diferite. Memoria de tip ROM stocheaz de obicei programul executat de unitatea
77
central imediat dup pornire sau la iniializare. Acest program se numete program
monitor sau program de boot. Dac n calculator s-ar folosi numai memorie de tip RAM
problema pornirii calculatorului nu ar putea fi rezolvat. La punerea sub tensiune o
memorie RAM are un coninut aleator care nu poate ajuta la pornirea calculatorului;
cum unitatea central, dup iniializare ateapt o comand valid, rezult c trebuie
folosit o memorie care s nu-i piard coninutul atunci cnd tensiunea de alimentare
este ntrerupt.
Structura unei memorii este similar cu cea a unei matrici. Vom considera un
exemplu n care n fiecare element al matricei se afl
un modul elementar de memorie care nu poate
memora dect un bit adic o valoare numeric egal
cu zero sau cu unu. Cea mai simpl structur de
memorie este prezentat n figura 5.1. Localizarea
celulei elementare de memorie care va fi citit sau
scris la un moment dat se face cu ajutorul
semnalelor de adres iar valoarea citit sau valoarea
de nscris n memorie este disponibil pe respectiv
este depus pe magistrala de date. n acest fel se
spune c selecia unei celule de memorie se face cu ajutorul semnalelor de pe magistrala
de adrese iar valoarea citit din memorie sau nscris n memorie se face cu ajutorul
semnalelor de pe magistrala de date.
C0 C1
C2 C3
Memorie
A0
A1
A2 A3
D
Fig. 5.1. Structura unei memorii
n figura 5.1, C0, C1, C2 i C3 reprezint celulele elementare de memorie, D
magistrala de date (o singur linie) iar A0, A1, A2 i A3 magistrala de adrese (patru
linii). Traseul datelor a fost
reprezentat cu linie punctat iar
cel al adreselor cu linie continu.
Din cauz c la un moment dat
numai una din celulele elementare
de memorie este activat, pentru
date este suficient o singur
linie. Considerm c o celul
elementar de memorie este activat pentru citire sau scriere dac ea se afl la
intersecia liniilor de adres pe care se afl simultan cifra unu. Funcionarea memoriei,
n acest caz este dat n tabelul 5.1. Dac pe magistrala de adrese se aplic, de exemplu,
numrul 0101 (n succesiunea A3,A2,A1,A0) atunci pe magistrala de date se gsete
coninutul celulei C0 la citire sau poate fi nscris celula C0 cu valoarea plasat pe
magistrala de date, la scriere.
TABELUL 5.1.
A3 A2 A1 A0 D
0 1 0 1 Coninutul celulei C0
1 0 0 1 Coninutul celulei C1
0 1 1 0 Coninutul celulei C2
1 0 1 0 Coninutul celulei C3
Din cauz c folosirea a patru linii de adres este neeconomic n acest caz, n
realitate la o astfel de memorie nu se afl dect dou linii de adres din cauz c se pot
obine patru combinaii distincte numai cu dou numere binare (00, 01, 10, 11).
Translatarea de la cele patru combinaii binare la cele patru adrese de selecie a celulelor
de memorie se face n interiorul memoriei cu ajutorul unui circuit de decodificare.
Pentru a obine mai multe date simultan la ieire memoriile se conecteaz n
paralel aa cum este reprezentat schematic n figura 5.2.
n structura din figura 5.2 dac se aplic la intrare (pe liniile de adres)
combinaia 0101 (n succesiunea A3,A2,A1,A0), atunci vor fi selectate simultan celulele
78
a
cantitatea e
cestui experiment se
exprim ia:
I = - log
2
P = - log
2
=1 bit
l (kb), megabitul (Mb),
gigabitul (Gb) i terabitul (Tb) cu urmtoarele relaii ntre ele:
1Tb = 1024Gb = 1 048 576 Mb = 1 073 741 824 kb = 1 099 511 627 776 bii.
aia dintr-o enciclopedie iar ntr-un terabit
form
de memorie C00 i C01, C00 fiind conectat la linia de date D0 iar C01 la D1. Toate
celulele elementare de memorie selectate simultan, formeaz o celul de memorie care
permite manipularea simultan a mai multor bii.
Din cele prezentate pn acum rezult c att magistrala de adrese ct i cea de
date furnizeaz informaii legate de dimensiunea (capacitatea memoriei).
Pentru a
msur capacitatea
(dimensiunea)
memoriei se folosete
ca unitate de baz bitul
(b) care reprezint
lementar
de informaie. Spre
exemplu, vom
considera experimentul
aruncrii unei monezi.
n urma acestui
experiment nlturm o
incertitudine de 50%
pentru c nainte de
aruncarea monezii
existau numai dou
posibiliti ale rezultatului (una din feele monezii). Astfel, probabilitatea de obinere a
unui rezultat este de 1/2 din cauz c din cele dou rezultate posibile s-a obinut unul.
Cantitatea de informaie pe care o primim dup efectuarea a
C01
C11
C21 C31
C00
C10
C20 C30
A0
A1
A2 A3
D1
D0
Fig.5.2. Structura unei memorii cu dou planuri
cu rela
Dac asociem celor dou fee ale monedei valorile binare 0 i 1, cantitatea de
informaie stocat ntr-o celul elementar de memorie (care poate memora una din
valorile 1 sau 0) este de un bit. Bitul are ca multiplii kilobitu
1kb = 1024 bii;
1Mb = 1024kb = 1 048 576 bii;
1Gb = 1024Mb = 1 048 576 kb = 1 073 741 824 bii;