Sunteți pe pagina 1din 17

Resetarea fanionului unei ntreruperi se face prin scrierea valorii 1 n registrul

EVIFRx (x = A, B sau C) sau prin citirea vectorului de ntrerupere din registrul


EVIVRx (x = A, B sau C). Acest lucru este important pentru c semnaleaz achitarea
ntreruperii i permite generarea ntreruperii urmtoare.

7.4.

Accesul direct la memorie (DMA)

Accesul direct la memorie, Direct Memory Access (DMA) ofer o cale


avantajoas de transfer de date ntre un port de interfa al unui echipament periferic i
unitatea de memorie sau ntre dou zone diferite de memorie. Aceste transferuri au o
pondere relativ ridicat n activitatea general a unui calculator i reducerea timpului n
care se realizeaz transferurile duce la creterea performanelor generale ale
calculatorului. Spre exemplu transferul DMA se utilizeaz atunci cnd este necesar
salvarea (stocarea) programelor i a rezultatelor acestora din memoria RAM pe un
suport extern de memorie (disc flexibil, harddisc, band magnetic, etc.). De asemenea
mecanismul transferurilor DMA este utilizat pentru remproasptarea coninutului
memoriilor DRAM, cnd practic nu se face un transfer real, dar procesul de citire a
memoriei DRAM n vederea transferului, realizeaz remprosptarea acestora.
Magistrala de adrese
Registru
acumulator

Magistrala de date

Unitatea
central

Magistrala de comenzi

Memoria

Porturi

Fig. 7.5. Transferul datelor prin intermediul unitii centrale

n principiu, transferul datelor se poate face prin intermediul unitii centrale,


fr a fi necesar existena unui circuit DMA. n figura 7.5 este prezentat fluxul datelor
n cazul n care transferul se face prin intermediul unitii centrale. Aceast metod este
uzual n cazul sistemelor ieftine dar ea prezint o serie de dezavantaje care o face
nerecomandabil la sistemele performante. n primul rnd, durata transferului este
relativ mare din cauz c sunt necesare dou activiti succesive ale unitii centrale: o
citire a datei din memorie n unitatea central i o scriere a datei, din memorie n port,
iar n al doilea rnd este ineficient ocuparea unitii centrale cu o activitate att de
simpl cum este transferul datelor.
n cazul utilizrii circuitului DMA performanele sistemului cresc din mai multe
motive: circuitul DMA fiind un circuit specializat pentru astfel de operaii, transferul
datelor se face mult mai rapid dect n cazul transferul datelor prin intermediul unitii
149

centrale, unitatea central este degrevat de astfel de sarcini iar traseul datelor este mai
scurt. n figura 7.6 este prezentat fluxul datelor n cazul utilizrii circuitului DMA.
Magistrala de adrese
Registru
acumulator

Magistrala de date

Unitatea
central

Magistrala de comenzi

Memoria

DMA

Porturi

Fig. 7.6. Transferul datelor prin intermediul circuitului DMA

Dup ce este programat, circuitul DMA genereaz semnalele de adres i de


control, pe magistrala de comenzi, n aa fel nct s se citeasc datele din memorie i
acestea s fie transferate
portului (sau altei zone de memorie). Circuitul DMA
este un circuit master ca i unitatea central. Din acest motiv aceste dou circuite nu pot
lucra simultan ci ele vor prelua pe rnd controlul magistralelor sistemului. Motivul
pentru care dou module master nu pot lucra simultan este c (aa cum se vede i din
figura 7.6), cele dou module genereaz att adrese ct i comenzi. Dac cele dou
module ar lucra simultan atunci adresa generat de unitatea central n scopul execuiei
programului din memorie va fi diferit de adresa generat de unitatea DMA pentru
realizarea transferului i pe magistrala de adrese (care este comun) ar aprea dou
adrese diferite ceea ce ar genera un conflict.
Cele dou uniti master (unitatea central i unitatea DMA) i suspend una
alteia activitatea, printr-un dialog desfurat pe magistrala de comenzi. Dac circuitul
DMA are de fcut un transfer, atunci va solicita unitii centrale s elibereze
magistralele. n momentul n care unitatea central poate ceda magistralele semnaleaz
acest lucru modulului DMA i i ntrerupe activitatea pe magistrale. La terminarea
transferului (sau a unei pri a acestuia, n funcie de modul n care este programat
circuitul DMA) unitatea central este informat printr-un semnal de comand c poate
prelua controlul magistralelor relundu-i n acest mod activitatea.
n mod aparent, faptul c cele dou module master nu pot lucra simultan cu
magistralele sistemului, duce la scderea eficienei acestora. Unitatea central, n mod
natural, n execuia unui program, necesit efectuarea unor activiti interne (cum ar fi
de exemplu executarea unei operaii matematice) care nu solicit lucrul cu magistralele.
n aceste intervale de timp circuitul DMA poate prelua controlul magistralelor fr a
scdea viteza de lucru a unitii centrale. De asemenea, structura ierarhizat a
magistralelor i utilizarea unor magistrale separate, care s permit funcionarea
simultan a circuitului DMA i a unitii centrale, duc la creterea eficienei
transferurilor de date. Spre exemplu, controlerul video necesit n general un flux mare
de date n mod continuu. Din acest motiv s-a extins un standard de magistral care s
150

permit accelerarea transferurilor ntre memoria principal a sistemului de calcul i


memoria video.
Importana acestui mecanism de transfer al datelor a crescut o dat cu creterea
capacitii memoriilor i a volumului de date prelucrate n sistem. Din acest motiv, un
criteriu de performan pentru un calculator este reprezentat i de numrul modulelor
DMA instalate n sistem. Unele circuite utilizeaz mecanisme DMA fr ca acest lucru
s fie specificat explicit, spre exemplu cum este sistemul memoriilor cache.
Un modul DMA are mai multe canale care pot fi programate separat i care pot
lucra cu mai multe periferice simultan. Din acest motiv la unele porturi, n afar de
adres i de numrul ntreruperii alocate se stabilete i canalul DMA asociat pentru
transferul datelor.
7.4.1. Circuitul 8257 pentru acces direct la memorie DMA

Accesul direct la memorie. Direct Memory Access, DMA, ofer o cale


avantajoas de transfer de date pe magistrala sistemului ntre un port de interfa al unui
echipament periferic i unitatea de memorie.
n varianta clasic este presupus intervenia unitii centrale, care folosete
registrele sale interne ca memorie intermediar. Un astfel de transfer periferic/memorie
presupune dou faze: transfer port/memorie n acumulatorul unitii centrale i apoi
nc un transfer din registrul intern al unitii centrale n memorie/port. Accesul direct la
memorie, realizat de un circuit LSI specializat, elimin unitatea central de pe
magistrala sistemului, dirijnd n mod independent transferurile periferic - memorie prin
intermediul semnalelor de citire/scriere, semnale generate simultan att pentru port, ct
i pentru memorie. n plus, circuitul DMA furnizeaz adresele de memorie la locaii
succesive pentru transferuri pe ir de caractere i semnalele de selecie pentru port.
Accesul la magistral se realizeaz n urma unui dialog cu unitatea central folosind
semnalele de cerere/cedare magistral (de exemplu semnalele HOLD/HLDA pentru
microprocesorul 8080 sau BUSRQ/BUSAK pentru microprocesorul Z80). Transferurile
succesive se pot realiza n pachet, la viteza maxim, sau cu cte o cerere de transfer
pentru fiecare octet, n acest din urm caz, unitatea central poate lucra n pauzele
dintre transferuri.
Circuitul 8257 ofer funcia DMA, simultan pe patru canale. Viteza maxim
corespunde transferului n pachet a cte unui octet la fiecare 4T unde T este perioada
semnalului de sincronizare al unitii centrale. T nu poate fi mai mic de 0,32
microsecunde (8257) sau 0,25 microsecunde (8257-5).
7.4.1.1.

Conexiunile externe

Schema bloc, figura 7.7, evideniaz aezarea, n jurul unei magistrale interne, a
circuitelor de interfa cu unitatea central i a celor pentru dialogul de
preluare/eliberare a magistralei acesteia, pe de o parte, i a registrelor de canal, inclusiv
circuitele de dialog cu perifericele i circuitele pentru stabilirea prioritii ntre canale,
pe de alt parte. Circuitul, prezentat n figura 7.8, are 40 de conexiuni externe, cu
urmtoarele semnificaii:
151

D0 D7

Amplificator
de
magistral
de date

I/OR
I/OW
CLK
RESET

Bloc scriere/
citire

A0
A1
A2
A3
CS
A4
A5
A6
A7
READY
HRQ
HLDA
MEMR
MEMW
AEN
ADSTB

Canal 0

DRQ 0

Numrtor
de adres
de 16 bii

DACK 0

Canal 1

DRQ 1

Numrtor
de adres
de 16 bii

DACK 1

Canal 2

DRQ 2

Numrtor
de adres
de 16 bii

DACK 2

Canal 3

DRQ 3

Numrtor
de adres
de 16 bii

Bloc de
comand

DACK 3

Arbitraj
prioritate

TC
MARK
Figura 7.7. Schema bloc a circuitului 8257

I / OR (trei stri). Semnal de la/spre magistrala unitii centrale pentru


eantionarea datelor citite din port.
I / OW (trei stri). Semnal de la/spre magistrala unitii centrale pentru
eantionarea datelor scrise n port.
MEMR (trei stri). Semnal de la/spre magistrala unitii centrale pentru
eantionarea datelor citite din locaia de memorie adresat.
MEMW (trei stri). Semnal de la/spre magistrala unitii centrale pentru
eantionarea datelor scrise n locaia de memorie adresat.
MARK (ieire). Semnal emis la fiecare al 128-lea octet transferat.
READY (intrare). Semnal care permite introducerea unor stri de ateptare, SW,
naintea ncheierii transferului, avnd port-ul i locaia de memorie selectate.

152

HLDA (intrare). Semnal primit de pe


1
40
magistrala unitii centrale, semnificnd c aceasta I/OR
A7
2
39
A6
I/OW
s-a eliberat, n vederea transferurilor DMA.
3
38
A5
MEMR
ADDSTB (ieire). Semnal de eantionare
4
37
A4
MEMW
5
36
pentru ncrcarea unui port adiional, cu octetul cel
TC
MARK
6
35
mai semnificativ al adresei de memorie.
A3
READY 7
34
AEN (ieire). Semnal care semnific HLDA
A2
8
33
A1
ocuparea magistralei unitii centrale pentru accese ADSTB 9
32
A0
DMA. Valideaz emiterea octetului cel mai AEN
10
31
Vcc
HRQ
11
30
semnificativ de adres din portul adiional.
D0
CS
12
29
HRQ (ieire). Semnal de cerere a CLK
D1
13
28
magistralei, n vederea eliminrii unitii centrale.
D2
RESET
14
27
D3
DACK
2
CS (intrare). Semnal de selecie pentru
15
26
D4
DACK 3 16
25
porturile circuitului 8257. Invalid n timpul DRQ 3
DACK 0
17
24
ciclurilor DMA.
DACK 1
DRQ 2
18
23
CLK (intrare). Semnal de sincronizare. DRQ 1
D5
19
22
D6
DRQ
0
Coincide cu semnalul de tact al unitii centrale.
20
21
D7
GND
RESET (intrare). Semnal de iniializare.
8257 intr n starea S1.
Figura 7.8. Conexiunile externe ale
circuitului 8257.
DACK 2 (ieire). Semnal de selecie
pentru portul corespunztor canalului 2. Se emite dup obinerea magistralei n vederea
selectrii portului n vederea efecturii transferului.
DACK 3 (ieire), Idem, pe canalul 3.
DRQ 3 (intrare). Semnal prin care se semnalizeaz circuitului DMA c este
necesar un transfer pe canalul 3.
DRQ 2 (intrare). Idem, pe canalul 2.
DRQ 1 (intrare). Idem, pe canalul 1.
DRQ 0 (intrare). Idem, pe canalul 0.
GND. Masa tensiunii de alimentare (0V).
(D7-D0) (trei stri). Semnale de date pe magistrala unitii centrale.
DACK1 (ieire) Semnal identic cu DACK 2 , pentru canalul 1.
DACK0 (ieire). Idem, canalul 0.
VCC Sursa de alimentare (+5V).
A0-A7 (trei stri). Octetul cel mai puin semnificativ al liniilor de adresare ale
magistralei unitii centrale.
TC(0). Semnaleaz sfritul transferului irului de octei. Se emite n timpul
ultimului transfer.
7.4.1.2.

Registrele interne ale 8257

8257 conine cte 2 registre bidirecionale de 16 bii pentru fiecare dintre cele 4
canale i nc dou registre unidirecionale, pentru comanda i examinarea funcionrii
circuitului, Semnificaia fiecrei poziii din registre rezult din tabelul 7.2.

153

TABELUL 7.2.
Adresa Bistabil
A3A2 intern D7
Adres
Cmps 0000
0
A7
A15
1
canal 0
Cms 0000
Numrtor Cmps 0001
C7
0
S
de octei Cms 0001
1
canal 0
Adres
Cmps 0010
0
A7
A15
1
canal 1
Cms 0010
Numrtor Cmps 0011
C7
0
S
de octei Cms 0011
1
canal 1
Adres
Cmps 0100
0
A7
A15
1
canal 2
Cms 0100
Numrtor Cmps 0101
C7
0
S
de octei Cms 0101
1
canal 2
Adres
Cmps 0110
0
A7
A15
1
canal 3
Cms 0110
Numrtor Cmps 0111
C7
0
S
de octei Cms 0111
1
canal 3
Mod
1000
AL
Stare
1000
0
Simboluri folosite:
Registru

Cmps
Cms
C
S
AX
CX

Octet

D6
A6
A14
C6
C

D5
A5
A13
C5
C13

Coninut
D4 D3
A4 A3
A12 A11
C4 C3
C12 C11

A6
A14
C6
C

A5
A13
C5
C13

A4
A12
C4
C12

A3
A11
C3
C11

A2
A10
C2
C10

A1
A9
C1
C9

A0
A8
C0
C8

A6
A14
C6
C

A5
A13
C5
C13

A4
A12
C4
C12

A3
A11
C3
C11

A2
A10
C2
C10

A1
A9
C1
C9

A0
A8
C0
C8

A6
A14
C6
C

A5
A13
C5
C13

A4
A12
C4
C12

A3
A11
C3
C11

A2
A10
C2
C10

A1
A9
C1
C9

A0
A8
C0
C8

TCS EV EP
0
0
UP

D2
A2
A10
C2
C10

D1
A1
A9
C1
C9

D0
A0
A8
C0
C8

EN3 EN2 EN1 EN0


TC3 TC2 TC1 TC0

= cel mai puin semnificativ octet;


= cel mai semnificativ octet;
= citire port, genereaz I / OR , MEMW ;
= scriere port, genereaz I / OW , MEMR ;
= bit adres de start transfer, X= 0, , 15;
= bit de iniializare a numrului de octei, X=0, , 13.

7.4.1.3.

Registrele de canal

Fiecruia dintre cele 4 canale i corespunde un registru pentru adresa de


memorie RAM de la care ncepe transferul, ntr-un spaiu de 64 Koctei i nc un
registru de 16 bii, ale crui prime 14 locaii au funcia de numrtor, pentru pn la 16
Koctei. iar celelalte 2 locaii biii 14 i 15, monitorizeaz generarea semnalelor I/OR ,
I/OW , MEMR , MEMW . Adresa i numrul de octei evolueaz la fiecare transfer
DMA pe canalul respectiv, iar ultimul transfer este semnalat ca ncheiere a transferului,
Terminal Count, TC, pe o conexiune exterioar a circuitului. Semnalele de citire/scriere
corespund combinaiilor:
154

Verificare
Citire port
Scriere port
Invalid

0
0
1
1

0
1
0
1

MEMW
1
0
1
-

MEMR
1
1
0
-

I / OR
1
0
1
-

I / OW
1
1
0
-

Fiecare registru de 16 bii este accesibil printr-o dubl adresare la cte 8 bii,
folosind un bistabil intern, care selecteaz ntre octetul cel mai puin semnificativ i cel
mai semnificativ.
7.4.1.4.

Registrul de mod

Registrul asigur validarea canalelor n lucru i a 4 opiuni, asupra modului de


desfurare a dialogului pe magistral.
7
AL

6
TCS

5
EW

4
RP

3
EN3

2
EN2

1
EN1

0
EN0

Registrul este nscris, de regul, dup completarea celor 2 registre de 16 bii ale
fiecrui canal cu care se lucreaz. La RESET registrul de control este ters, inhibnduse toate canalele i opiunile, astfel prevenindu-se transferuri DMA nedorite la aplicarea
tensiunii.
EN03: Enable Channel, corespunde validrii canalului pe care se dorete s se
efectueze transferuri. Se pot face transferuri pe 14 canale. Pentru mai mult de un
canal, ordinea de servire corespunde unei scheme de prioriti, stabilite de bitul 4.
RP: Rotating Priority, corespunde stabilirii schemei de prioriti, ntre dou
variante: prioritate fix sau prioritate circular. n varianta fix se aloc o prioritate
maxim canalului 0, prioritate care descrete pn la a fi minim pentru canalul 3. n
varianta circular, se aloc dinamic nivelul de prioritate al fiecrui canal, dup fiecare
ciclu de transfer. n acest caz, fiecare canal servit va trece ultimul pe lista de prioriti,
n arbitrarea ciclului DMA urmtor.
Alegerea modului RP previne fenomenul de gtuire, bottleneck, cnd unul
dintre canale monopolizeaz transferurile n mod DMA. Dac sunt prezentate cereri de
transfer pe mai multe canale, se vor servi toate canalele, pe rnd. Primul transfer se va
executa conform schemei fixe de prioriti.
EW: Extended Write, contribuie la generarea anticipat a semnalelor de scriere,
pentru compensarea unor eventuali timpi de acces mai lungi ai participanilor la
transfer. n absena acestei opiuni, ar fi fost necesare stri de ateptare, folosind
semnalul READY de la conexiunea exterioar 6 ceea ce ar fi micorat viteza de lucru.
TCS: Terminal Count Stop, specific oprirea sau continuarea transferurilor
DMA, din momentul cnd s-a emis ,,1" pe conexiunea exterioar TC, simultan cu
poziionarea bitului corespunztor canalului, n registrul de stare. Bitul de validare a
canalului este ters, iar operaiile DMA pe acest canal se pot relua dup o rescriere n
registrul de control. n cazul n care nu se programeaz bitul TCS, transferurile DMA
continu, la adrese succesive, ct timp perifericul emite DRQ.
155

AL: Autoload, autoncrcare permite, cnd este emis s, s se foloseasc


nlnuirea de comenzi, fr intervenia unitii centrale. Opiunea se aplic numai
canalului 2, utiliznd canalul 3 ca registru cu parametri de reiniializare. Canalul 2 se
programeaz obinuit, pentru primul set de parametri, iar canalul 3 se programeaz cu
setul de parametri pentru transferul ulterior. Dup ce se efectueaz ciclurile DMA
conform programrii iniiale a canalului 2, se efectueaz automat o trecere a
parametrilor din canalul 3 n canalul 2. Opiunea TCS nu are efect, dac a fost prevzut
simultan cu opiunea AL. n cazul existenei opiunii AL, programarea canalului 2 este
automat duplicata i n registrele canalului 3, ceea ce permite operaii repetate pe bloc,
prin programarea unui singur canal. Se pot nscrie parametri separai pentru cele dou
canale, dac se programeaz nti canalul 2 i apoi canalul 3. De observat c, dac este
validat i canalul 3 i apar cereri DRQ pe acest canal, se pot efectua transferuri
simultane pe canalele 2 i 3, ins, la operaia de rencrcare a canalului 2 se vor ncrca
parametrii modificai ai canalului 3, cu o diferen dat de numrul de transferuri DMA
ce s-au efectuat pe acest din urm canal. La intrarea ntr-un ciclu, dup reiniializarea
canalului 2, se poziioneaz bitul UP n registrul de stri. Reiniializarea nu distruge
parametrii canalului 3.
Reiniializarea se efectueaz la urmtorul ciclu DMA dup un ciclu TC, care va
fi astfel primul ciclu cu noii parametri. Bitul UP din registrul de stare se va terge dup
acest prim ciclu DMA. n operaii nlnuite, bitul UP se poate examina de unitatea
central pentru a semnala reiniializarea i a permite nscrierea noilor parametri n
canalul 3, pentru urmtorul bloc ce se va transfera pe canalul 2.
7.4.1.5.

Registrul de stare

Registrul indic pe care dintre canale s-a terminat transferul numrului de octei
programat, inclusiv semnalarea strii de nceput a unui bloc de transfer cu parametri
reiniializai (numai pentru canalul 2).
7
0

6
0

5
0

4
UP

3
TC3

2
TC2

1
TC1

0
TC0

TC03: Terminal Count, sfrit de numrare, corespunde strii conexiunii


exterioare TC, numai c aici se specific i numrul de ordine al canalului pe care a avut
loc evenimentul. Biii rmn nscrii pn la prima citire a registrului de stare, sau pn
la RESET. Deoarece, ntre citirea strii i nscrierea de parametri, poate aprea
semnalarea TC, este contraindicat reprogramarea canalelor n funcie de semnalrile
din registrul de stare, c ntre cele dou operaii succesive nu se blocheaz transferurile
DMA.
UP: Update, este emis la primul transfer DMA efectuat conform unor parametri
de reiniializare a canalului 2. UP nu se terge la citire. Se folosete pentru a preveni
ncrcarea unor parametri n canalul 3, nainte ca parametrii precedeni s fie trecui n
canalul 2.

156

7.4.1.6.

Efectuarea transferurilor cu DMA 8257

Funcionarea 8257 corespunde diagramei de stri date n figura 7.9. n urma


semnalului RESET se intr n starea S1, n care se ateapt lansarea unei cereri de
transfer DRQ de la periferice. Ieirea din S1 i trecerea n S0 se face la primirea DRQ
pe unul din canale i lansarea cererii HOLD, pentru obinerea magistralei unitii
centrale. n starea S0 se ateapt eliminarea unitii centrale de pe magistral, semnalat
prin sosirea semnalului HLDA, dup care se intr n starea S1. n acest moment, 8257
emite adresele superioare pe liniile de date, memorate n portul adiional, cu semnalul
ADDSTB. Se obin astfel toate cele 16 linii de adres pe magistral i se intr n starea
S2. n S2 ncepe transferul prin activarea operaiei de citire i a unei eventuale scrieri
anticipate. Se emite DACK pentru dialogul DRQ-DACK i se intr n starea S3, n care
se activeaz scrierea i se fac semnalrile MARK i TC, dac este cazul. Din aceast
stare se poate intra ntr-o stare de ateptare SW, daca nu s-a primit READY. Testarea
conexiunii externe READY este eliminat dac pe canalul respectiv a fost programat o
operaie de verificare, VERIFY. Din S3 se intr n S4, dac s-a primit semnalul READY
n operaiile de transfer efectiv. Din SW se trece n S4 dac se primete READY. Starea
S4 ncheie un ciclu DMA, inactivnd DACK i, dac este cazul, TC i MARK. n cazul
operaiilor cu TCS, se terge validarea canalului respectiv, dac a aprut TC. Se
stabilesc prioritile pentru urmtorul ciclu DMA. Se testeaz DRQ i HLDA. Dac
DRQ nu se mai emite, se terge HOLD dup semnalarea cderii HLDA. Daca DRQ se
emite n continuare, se pstreaz HOLD i, n cazul n care i HLDA se menine, se
trece n modul de transfer burst, n pachet, prin succesiunea de stri S1, S2, S3, S4, S1
etc., evitndu-se dialogul de conectare/deconectare la magistrale. La pierderea
magistralei, situaie semnalat de cderea HLDA, sau dac perifericul nu mai cere
transfer, cu DRQ la ,,0", se terge HOLD i se trece n starea S1 pentru ciclul de
reconectare S1, S0, S1, S2, S3, S4 etc.
n rezumat, transferul octet cu octet se desfoar dup cum urmeaz (figura
2.25): perifericul cere transfer prin emiterea semnalului DRQ pe unul dintre canale;
dac este prioritar i validat, canalul ncepe operaiunea de transfer, lansnd HOLD; la
recepia HLDA se lanseaz DACK pe canalul corespunztor, pentru selectarea
registrului de date al perifericului; se genereaz apoi perechea de semnale de
eantionare: IOR , MEMW sau IOW , MEMR , n funcie de sensul transferului, dac
nu este specificat operaia VERIFY; memoria este adresat la locaia specificat n
registrul de adrese al canalului, direct de 8257 pe octetul cel mai puin semnificativ i
prin intermediul portului adiional 8212, pe octetul cel mai semnificativ. Dup transferul
octetului, semnalele de eantionare i achitarea cererii, DACK, se inhib, iar dac DRQ
nu se mai emite nainte de S4, se elibereaz magistrala i se inhib HOLD.
Funcionarea n mod burst se alege pstrnd DRQ i HLDA dup efectuarea
transferului, caz in care se incrementeaz adresa memoriei i se reiau operaiile pe octet,
fr deconectare/reconectare intermediar.
Dac se cer transferuri simultan pe mai multe canale, procedura corespunde
transferului n pachet, cu comutarea canalului pe care se emit semnalele DRQ, DACK,
n funcie de schema de prioritate programat. Canalul prioritar este stabilit n S4, n
funcie de semnalele DRQ prezente.
157

Dac HLDA devine inactiv, n prezena DRQ, se elibereaz magistrala,


inhibndu-se HOLD i se revine n S1, starea dup RESET. Dac READY devine
inactiv, eantionat n S3, se insereaz stri SW. La activarea READY, din SW se intr
n S4. n acest interval semnalele de selecie DACK i de eantionare IOR / W ,
MEMR / W sunt active, prelungind timpul de selecie al portului/memoriei, n vederea
acceptrii unui timp de acces mai mare.
RESET

A
DRQ 03

READY=0
?

READY

VERIFY=0
?

VERIFY

HRQ=1
HLDA
HLDA ?
arbitrare
prioriti

READY

READY=0
?

READY

ADDSTB
eantioneaz
adresele
mari n port
auxiliar

TC STOP
TC = 1

ENCHi=0

da
AEN=1

IOR/MEMR=0
IOW/MEMW=0

IOR/MEMR = 1
IOW/MEMW = 1 (n
avans)

DACKi=0
MARK=0
TC=0

DACKi=1
nu

IOW/MEMW = 1
(normal)

TEST
NUMRTOR DE
TRANSFERURI
TC = 1 sau
MARK = 1

HLDA

DRQ03
nici un
cel puin un
DRQ03
DRQ03
AEN,HRQ=0
arbitraj
prioriti
DRQ03

Figura 7.9. Schema logic de funcionare a circuitului 8257.

158

nu

7.5.

Circuitul contor/periodizator programabil 8253

Circuitul 8253, realizat n tehnologia


NMOS pe o pastil cu 24 de terminale, ale
D7
Vcc
cror semnificaii sunt prezentate n figura
D6
WR
7.10, constitute un
contor/periodizator
D5
RD
programabil. El este organizat sub forma a 3
D4
CS
contoare independente, de cte 16 bii, avnd
D3
A1
asociat logica corespunztoare pentru
D2
A0
comunicaia
cu unitatea centrala de prelucrare
D1
C2
i cu mediul exterior. Circuitul este vzut, de
D0
O2
unitatea central de prelucrare, sub forma unui
C0
G2
tablou de porturi de I/E i poate fi folosit ca:
O0
C1
generator
programabil
de
semnale
G0
G1
dreptunghiulare, contor de evenimente, ceas
Masa
O1
de timp real, monostabil numeric, element
D7-D0 - conexiuni la magistrala de date a
pentru generarea comenzilor unor motoare pas
microsistemului (bidirecional);
cu pas. Folosirea lui n sistemele cu
C0
- ceas contor 0 (intrare);
microprocesor,
n
aplicaiile
privind
O0
- ieire contor 0 (ieire);
G0
- poarta contor 0 (intrare);
prelucrarea unor semnale sub form de trenuri
C1
- ceas contor 1 (intrare);
de impulsuri, simplific n mod considerabil
O1
- ieire contor 1 (ieire);
software-ul necesar acestor prelucrri.
G1
- poarta contor 1 (intrare);
Dup cum se poate observa n figura
C2
- ceas contor 2 (intrare);
7.11, schema bloc a circuitului const din mai
O2
- ieire contor 2 (ieire);
G2
- poarta contor 2 (intrare);
multe componente: tamponul magistralei de
A0, A1 - intrri de selecie contor (intrare);
date, logica scrie/citete, registrul cuvntului
CS
- selecie circuit (intrare);
de comand i cele trei contoare 0, 1 i 2.
RD
- comand citire (intrare);
Tamponul magistralei de date este
WR
- comand scriere (intrare);
bidirecional, organizat pe 8 bii, cu elemente
Vcc
- alimentare +5V.
MASA
cu trei stri, realizeaz interfaa circuitului
8253 cu magistrala de date a unitii centrale
Figura 7.10. Semnificaia terminalelor
de prelucrare. Datele sunt transmise sau
circuitului 8253.
recepionate de tampon, la execuia
instruciunilor IN i OUT, de ctre unitatea central de prelucrare. Prin intermediul
acestui tampon se realizeaz: programarea modurilor de lucru pentru 8253, ncrcarea
contoarelor, citirea valorilor datelor din contoare.
Logica scrie/citete pe baza semnalelor CS , RD , WR , A0 i Al, primite de la
magistrala de legtura cu unitatea central de prelucrare, genereaz semnalele de
comand pentru buna funcionare a ntregului circuit. Semnalul CS, activ pe nivel
cobort, activeaz/dezactiveaz circuitul astfel nct, dac circuitul nu este selectat
( CS = 0), funcionarea lui nu este influenat. Semnalul RD activ comand citirea
datelor de la contoarele circuitului, n timp ce semnalul WR activ asigur ncrcarea
registrului de comand i a datelor n contoare. Liniile A0 i Al sunt conectate la
magistrala de adrese i servesc la selectarea unuia dintre contoare sau a registrului de
1
24
2
23
3
22
4
21
5
20
6
19
7 8253 18
8
17
9
16
10
15
11
14
12
13

159

comand. n tabelul 7.3 se prezint efectele semnalelor amintite mai sus asupra
funcionrii circuitului.
8
D0 D7
RD
WR
A0
A1
CS

Tampon
magistral
de date

Contor 0

CLK0 (C0)
POARTA0 (G0)
OUT0 (O0)

Logica
scrie/
citeste

Contor 1

CLK1 (C1)
POARTA1 (G1)
OUT1 (O1)

Registrul
cuvntului de
comand

Contor 2

CLK2 (C2)
POARTA2 (G2)
OUT2 (O2)

Figura 7.11. Structura intern a circuitului 8253.

TABELUL 7.3.
CS RD WR
0
1
0
0
1
0
0
1
0
0
1
0
0
0
1
0
0
1
0
0
1
0
0
1
1
x
x

A1 A0
Funcia
0
1 ncarc contorul 0
0
0 ncarc contorul 1
1
1 ncarc contorul 2
1
0 ncarc cuvntul de comand
0
1 Citete contorul 0
0
0 Citete contorul 1
1
1 Citete contorul 2
1
0 Neoperaional, starea de mare impedan
x
x Circuit neselectat, starea de mare impedan

Registrul cuvntului de comand primete de la magistral, informaia prin care


se comand modul de lucru al fiecrui contor. Acest registru se selecteaz prin adresa
A1A0 = 11. Coninutul su nu poate fi citit.
Contoarele 0, 1 i 2 sunt identice, fiind implementate prin numrtoare de 16
bii, al cror coninut poate fi prestabilit, numrarea efectundu-se n sens descresctor.
Contoarele sunt independente i pot fi programate s opereze n modul binar sau BCD,
n diverse configuraii, privind intrarea de ceas, poarta de comand i citirea. Citirea
coninutului unui contor oarecare se realizeaz direct, n cazul contorizrii unor
evenimente sau printr-o tehnic special, n celelalte cazuri, fr a bloca intrarea de
ceas.
Interfaarea circuitului 8253 cu sistemul se realizeaz n maniera obinuit, a
circuitelor de interfa din familia 8080. Intrrile A0 i Al se conecteaz la liniile de
adrese A0, Al, ale sistemului, iar semnalul de selecie CS poate fi generat din semnalele
magistralei de adrese a sistemului, prin selecie liniar sau decodificare. Semnalele RD ,
WR sunt derivate din semnalele IORC , IOWC ale magistralei sistemului.
160

Modul de funcionare poate fi stabilit complet prin software, ncrcnd registrul


de comand cu un cuvnt corespunztor.
Fiecare contor este decrementat cu o unitate pe fiecare front cztor al
semnalului aplicat la intrarea de ceas. Semnalul de la intrarea de ceas poate fi asincron
sau sincron. In primul caz contorul va fi folosit pentru numrarea unor evenimente. n al
doilea caz contorul este folosit pentru generarea unor intervale de timp. Frecvena
semnalului aplicat la intrarea de ceas poate varia ntre 0 si 3MHz.
Intrarea
pe
poarta
G
poate
activa
sau
bloca
funcionarea
contorului/periodizatorului respectiv.
Ieirea 0 a fiecrui contor, n funcie de modul de programare, poate fi folosit
ca impuls singular, cerere de ntrerupere sau ca semnal simplu de comand.
Cuvntul de comand.
bit 7

bit 6

bit 5

bit 4

bit 3

bit 2

bit 1

bit 0

bitul 0
0 contorul selectat este tratat ca valoare binar (max. 65535z);
1 contorul selectat este tratat ca valoare BCD (max. 9999BCD);
biii 3,2,1
000 Mod 0;
001 Mod 1;
x10 Mod 2;
x11 Mod 3;
100 Mod 4;
101 Mod 5;
biii 5,4
00 operaia de citire a contorului, a se vedea procedura READ/WRITE;
01 citete/ncarc octetul cel mai semnificativ (la incrcare anuleaz octetul cel mai puin
semnificativ);
10 citete/ncarc octetul cel mai puin semnificativ (la incrcare anuleaz octetul cel mai
semnificativ);
11 citete/ncarc cel mai semnificativ octet, apoi cel mai puin semnificativ octet;
biii 7,6
00 selecie contor 0;
01 selecie contor 1;
10 selecie contor 2;
11 comand ilegal;
Figura 7.12. Cuvntul de comand pentru circuitul 8253.

Coninutul cuvntului de comand este prezentat n figura 7.12. Se constat c:


biii 7, 6 sunt folosii pentru selectarea contorului la care se refer comanda respectiv,
biii 5, 4 specific modalitile de manipulare ale coninuturilor octeilor inferior i
superior, care formeaz contorul selectat, biii 3, 2, 1 indic modul de operare, n timp
ce bitul 0 caracterizeaz funcionarea binar (valoare maxim: 6553510) sau zecimal
codificat binar (valoare maxim: 9999BCD), ale contorului dat.
161

Contorul selectat se consider ncrcat atunci cnd n el s-au nscris unul sau doi
octei, n funcie de specificaiile biilor 5, 4 din cuvntul de comand, operaia fiind
urmat de un front pozitiv i unul negativ ale impulsului de ceas. O eventuala citire
nainte de frontul cztor va conduce la o valoare incorect.
n continuare vor fi prezentate modurile de funcionare ale circuitului 8253.
Modul 0 este definit ca ntrerupere, la terminarea numrrii. Dup ncrcarea
cuvntului de comand, corespunztor
C
acestui mod, ieirea contorului selectat va
WR(n)
fi forat la nivelul cobort (fig. 7.13). n
5
3
4
2 1
O
continuare se ncarc contorul cu o
anumit valoare numeric, care va fi
n=5
decrementat, prin aplicarea semnalului
Figura 7.13. Modul zero
de ceas, pe intrarea corespunztoare.
Ieirea se va menine pe nivel cobort pn n momentul cnd valoarea numrului din
contor devine zero, moment n care ieirea trece pe nivel ridicat, meninndu-se astfel,
pn la o noua ncrcare a contorului. Decrementarea continu i dup atingerea valorii
finale. Renscrierea contorului, pe durata decrementrii, are ca efect blocarea operaiei
curente, dac se ncarc primul octet, sau amorsarea unei noi operaii, dac se ncarc al
doilea octet.
n figura 7.13 contorul a fost ncrcat cu valoarea 5, ca urmare a execuiei unei
operaii de nscriere ( WR = 0). Decrementarea se va declana dup un front pozitiv,
urmat de unul negativ ale semnalului de ceas. Decrementarea este blocat pe durata
aplicrii, la intrarea poart, a unui semnal de nivel cobort.
Citirea coninutului contorului, pe durata decrementrii, necesit o tehnic
special, care va fi prezentat la sfritul acestui paragraf.
Cuvntul de comand are urmtoarea structura:
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
1
0
0
1
0
0
0
0

Modul 1 este definit ca monostabil programabil. Ieirea contorului va trece de la


un nivel ridicat, la unul cobort numai dup ce cuvntul de comand i contorul au fost
ncrcate i semnalul aplicat la poart are o tranziie pozitiv. Aceast tranziie
declaneaz decrementarea care, la atingerea valorii finale (zero), va aduce la nivel
ridicat ieirea contorului selectat (fig. 7.14).
Dac n timp ce ieirea este la
C
nivel
cobort,
o nou valoare este nscris
WR(n)
n contor, aceasta nu va afecta durata
G
monoimpulsului, pn la urmtoarea
O
declanare.
Valoarea curent a contorului
5 4 3 2 1
poate fi citit n orice moment, fr a
n=5
afecta monoimpulsul. Dac intrarea la
Figura 7.14. Modul 1
poarta G are o tranziie pozitiv,
indiferent de faptul c decrementarea s-a terminat sau nu, contorul este relansat cu
valoarea ncrcat iniial. n cazul n care, pe parcursul decrementrii, se ncarc o nou
162

valoare n contor, aceasta va fi luat n consideraie la prima tranziie pozitiva a


semnalului la poarta G.
Cuvntul de comand:
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
0
1
1
0
0
0
1
1

Modul 2 este definit ca generator de impulsuri divizate cu N. Ieirea va fi forat


la nivel cobort, dup ncrcarea cuvntului de comand i a numrtorului selectat cu
constanta N, pe o perioad egal cu cea a semnalului de ceas. Perioada impulsurilor
astfel generate va fi egal cu N (fig. 7.15).
C
WR(n)
O

1
T

5T

Figura 7.15. Modul 2

Dac pe parcursul operrii, intrarea G (poarta) va fi forat la nivel cobort,


ieirea 0 va fi adus la nivel ridicat, iar la revenirea lui G la un nivel ridicat, contorul se
va decrementa din nou, de la valoarea iniial. Astfel, intrarea G poate fi folosit pentru
sincronizarea contorului.
Cuvntul de comand:
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
0
0
1
1
0
1
0
0

Modul 3 este definit ca generator de impulsuri dreptunghiulare. El este similar


cu modul 2, cu excepia faptului c ieirea va rmne la un nivel ridicat pn la
realizarea decrementrii, conform cu N/2 sau (N-1)/2 intervale de ceas i la nivel
cobort, pentru celelalte N/2 sau (N-1)/2 intervale de ceas, dup cum N este par sau
impar. Aceasta se realizeaz (fig. 7.16) prin decrementarea cu 2 pe frontul cztor al
fiecrui semnal de ceas. Cnd contorul ajunge n zero, ieirea se modific, contorul este
ncrcat cu valoarea iniial i procesul se continu, avnd un caracter repetitiv.
C
2T

O (n=4) 2T
O (n=5)

2T
3T
Figura 7.16. Modul 3

163

Modul 4, definit ca strob comandat prin software, asigur o ieire la nivel ridicat,
dup stabilirea modului. Decrementarea contorului selectat are loc dup ncrcarea lui
cu numrul dat. Ieirea va fi forat la nivel cobort pe durata unei perioade a
semnalului de ceas, cnd contorul a fost decrementat la zero. Decrementarea va fi
inhibat, dac intrarea G va fi forat la nivel cobort. Rencrcarea contorului va
reporni decrementarea, plecnd de la noua valoare plasat n contor (fig. 7.17).

C
WR(n=4)
O

0
T

4T

Figura 7.17. Modul 4.

Cuvntul de comand:
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
1
0
0
1
1
0
1
0

Modul 5, definit ca strob comandat prin hardware, asigur decrementarea


contorului selectat, dup ncrcarea lui, ncepnd cu frontul cresctor al semnalului
aplicat la poarta G. Ieirea va fi forat la nivel cobort, pe durata unei perioade de ceas,
n momentul n care coninutul contorului a devenit zero (fig. 7.18).
C
WR(n=4)
G
O

2
4T

0
T

Figura 7.18. Modul 5.

Operaia de citire a coninutului unui contor este important pentru a cunoate


valoarea acestuia la un moment dat. Citirea se poate face n dou moduri diferite.
n primul mod, citirea se face n timpul decrementrii. Pentru aceasta, pe baza
unei comenzi, coninutul contorului, care urmeaz s fie citit, se foreaz ntr-un registru
suplimentar, din circuitul 8253, contorul continund operaia de
decrementare.
Cuvntul de comand necesar are urmtoarea structur:
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
SC1 SC0
0
0
x
x
x
x

164

SC1, SC0 - biii 7 i 6 din cuvntul de comand specific contorul al crui


coninut va fi salvat n vederea citirii (00, 01, 10). Biii 5, 6 sunt egali cu 0 i specific
operaia de memorare a coninutului contorului. Ceilali bii sunt indifereni.
n al doilea mod se blocheaz n prealabil ceasul, printr-o logic extern sau
controlnd semnalul de comand la poarta G. Dup aceasta se citete coninutul
contorului i se transfer n memorie.

7.6.

Circuitele timer ale microcontrolerelor

n cazul microcontrolerelor, circuitele contor/periodizator sunt larg rspndite i


reprezint unul din circuitele de baz ale acestora, ndeplinind funcii complexe.
Se va prezenta n continuare modulul circuitelor de contorizare/periodizare ale
microcontrolerului TI 320F240 (GPTimer) datorit numeroaselor funcii ndeplinite de
acesta, reprezentnd astfel un modul complet i complex.
7.6.1. Timerele de uz general GPTimer

n modulul EV sunt trei timere de uz general (GP Timers). Aceste timere pot fi
folosite ca baze de timp independente n aplicaii cum ar fi:
o generarea perioadei de eantionare n sistemele de control;
o furnizarea unei baze de timp pentru operarea circuitului QEP sau
unitile de captur;
o furnizarea unei baze de timp pentru operarea unitile de comparare
simple sau complete (full) i a circuitelor PWM asociate pentru a
genera ieiri comparare/PWM.
Blocurile funcionale ale timerelor GP

Figura 7.19. prezint schema bloc a timerului GP. Fiecare timer conine:
o un contor up/down scriere/citire (R/W) de 16 bii, TxCNT (x=1,2,3);
o un registru R/W de 16 bii pentru comparare (cu imagine n memorie)
TxCMPR (x=1,2,3);
o un registru R/W de 16 bii pentru perioad (cu imagine n memorie)
TxPR (x=1,2,3);
o un registru de control R/W de 16 bii, TxCON (x=1,2,3);
o prescalare (divizare) programabil a ceasului de intrare intern sau
extern;
o logic de control a ntreruperilor;
o un pin de ieire al comparatorului GP timer, TxPWM/TxCMP
(x=1,2,3);
o ieire logic.

165

S-ar putea să vă placă și