Curs_11 - Universitatea Politehnica Timişoara

Download Report

Transcript Curs_11 - Universitatea Politehnica Timişoara

Proiectarea Microsistemelor Digitale
Curs 11
1
Proiectarea Microsistemelor Digitale
6. Accesul direct la memorie (DMA)
6.1. Posibilităţi de conectare a porturilor la UC:



Intrare/ ieşire programabilă (PIO): transferul se desfăşoară prin
intermediul UC; foloseşte intensiv timpul UC;
Întreruperi: procesorul este întrerupt la transferul fiecărui cuvânt
(octet); multe întreruperi care nu întotdeauna pot fi acceptate; rată
de transfer limitată
Accesul direct la memorie (DMA): transfer direct memorie – periferic
sau periferic – periferic sau memorie – memorie (neutilizat pentru că
este mai rapid prin UC); nu implică UC dar cere hardware
suplimentar conectat pe magistrale;

Controler DMA: 8237A
2
Proiectarea Microsistemelor Digitale



Exemple de periferice care utilizează transferul DMA în cadrul PCului: controlere de disc, plăci grafice, plăci de reţea, plăci de sunet.
Transferul prin DMA se desfăşoară în cadrul unui canal DMA
accesibil prin intermediul unor adrese de port;
Există 8 canale DMA în cadrul PC-ului, cuprinse în 2 circuite 8237A:








Canalul 0: folosit iniţial pentru reâmprospătarea memoriei dinamice;
acum disponibil,
Canalul 1: disponibil,
Canalul 2: pentru controlerele de hard şi floppy disc,
Canalul 3: disponibil,
Canalul 4: pentru conectarea în cascadă a altui circuit DMA,
Canalul 5: pentru controlerul de hard disk, doar la varianta PS/2 şi
disponibil la celelalte variante,
Canalul 6: disponibil,
Canalul 7: disponibil.
3
Proiectarea Microsistemelor Digitale

Dezavantaj al DMA: afectează coerenţa memoriei cache.

Fie structura:
UC
Memorie cache
Memorie operativă
DMA
Periferie


Dacă procesorul accesează locaţia X din memoria operativă, valoarea
acesteia se va înscrie şi în memoria cache şi orice acces următor la
locaţia X va actualiza valoarea din cache dar nu şi pe cea din memoria
operativă; dacă un periferic accesează locaţia X, va primi valoarea
veche dacă memoria cache nu a fost descărcată în cea operativă.
Similar, dacă un periferic scrie în locaţia X din memoria operativă,
procesorul va avea valoarea veche în memoria cache; în acest caz
locaţia din cache trebuie invalidată.
4
Proiectarea Microsistemelor Digitale

Configuraţii DMA:




Magistrală comună, controler DMA separat,
Magistrală comună, controler DMA integrat,
Magistrală de intrare/ ieşire distinctă.
Magistrală comună, controler DMA separat:
Procesor

DMA
Porturi
Fiecare transfer foloseşte magistrala de 2 ori:



Memorie
Port cu DMA,
DMA cu memoria
UC este oprit de 2 ori/ transfer.
5
Proiectarea Microsistemelor Digitale

Magistrală comună, controler DMA integrat:
Procesor
DMA
Port



...
Memorie
Port
Controlerul DMA este conectat la mai multe porturi.
Fiecare transfer foloseşte magistrala o singură dată: DMA cu
memoria.
UC este oprit o singură dată/ transfer.
6
Proiectarea Microsistemelor Digitale

Magistrală de intrare/ ieşire distinctă:
Procesor
DMA
Memorie
Magistrală de intrare/ ieşire
Port


Port
Port
Fiecare transfer foloseşte magistrala comună o singură dată: DMA
cu memoria.
UC este oprit o singură dată/ transfer.
7
Proiectarea Microsistemelor Digitale

Comunicarea UC – controler DMA:


UC iniţiază transferul;
Transmite controlerului DMA (prin programare):








Operaţia (citire sau scriere),
Adresa dispozitivului periferic (portului),
Adresa de început a blocului de memorie implicat (poate fi şi un singur octet
sau cuvânt),
Dimensiunea blocului de transferat.
UC execută alte operaţii (instrucţiuni) care nu necesită datele care se
transferă;
Controlerul DMA se ocupă de transferul memorie – port sau port –
memorie; foloseşte magistralele comune ca urmare procesorul este oprit
la fiecare transfer DMA;
Controlerul DMA anunţă încheierea transferului prin generarea unei
cereri de întrerupere către UC;
Controlerul DMA şi UC folosesc complementar magistralele.
8
Proiectarea Microsistemelor Digitale

Comunicarea UC – DMA – periferic:





Perifericul cere transfer de tip DMA activând intrarea DREQ (DMA Request) a
controlerului DMA;
Controlerul DMA activează ieşirea sa HRQ spre intrarea HOLD a procesorului
anuntându-l că are nevoie de magistrale;
Procesorul încheie ciclul maşină început, îşi trece magistralele şi semnalele de
comandă în a 3 – a stare, respectiv în starea inactivă, şi activează ieşirea
HLDA anunţând controlerul DMA că a cedat magistralele; cererea de pe
intrarea HOLD trebuie să ramînă activă pe toată durata transferului DMA;
Controlerul DMA activează ieşirea sa DACK comunicând perifericului că
cererea sa DREQ a fost acceptată şi va începe transferul;
Controlerul DMA execută transferurile:



Memorie – port: pune adresa primului octet (cuvânt) pe magistrala de adrese,
actvează semnalul de comandă MEMR şi apoi IOW,
Port – memorie: activează semnalul de comandă IOR, pune adresa primului octet
(cuvânt) pe magistrala de adrese şi apoi MEMW;
După încheierea transferurilor controlerul DMA dezactivează ieşirea HRQ
anunţând procesorul că nu mai are nevoie de magistrale.
9
Proiectarea Microsistemelor Digitale
6.2. Controlerul DMA 82C37A (o variantă mai modernă a clasicului
8237A)





Dispune de 4 canale independente,
Poate fi cascadat pentru a obţine oricâte canale,
Control individual (activare/ dezactivare şi polaritate) asupra fiecărei
cereri DREQ şi fiecărui răspuns DACK,
Permite transfer memorie – memorie,
Rată de transfer ridicată:






Până la 4 MO/ sec. cu tact de 8 MHz şi
Până la 6.25 MO/ sec. cu tact de 12.5 MHz,
Asigură incrementarea sau decrementarea adresei,
Se foloseşte cu un registru extern pentru jumătatea mai semnificativă a
adresei,
Poate lucra în mai multe moduri,
Compatibil TTL/ CMOS.
10
Proiectarea Microsistemelor Digitale

Configuraţia terminalelor:
11
Proiectarea Microsistemelor Digitale

Schema bloc internă:
12
Proiectarea Microsistemelor Digitale

3 blocuri importante:





Timing and Control: se ocupă de caracteristicile de timp ale semnalelor
interne şi externe,
Program Command Control: decodifică diversele comenzi generate de
procesor înainte de tratarea unei cereri DMA; de asemenea decodifică
cuvântul Mode Control care selectează tipul de transfer DMA,
Priority Encoder: rezolvă problemele de prioritate în cazul mai multor cereri
DMA simultane.
Tipuri de transfer:
Tip transfer
5 MHz
8 MHz
12.5 MHz
Unitate de măsură
Comprimat
2.5
4.0
6.25
MO/ sec.
Normal I/ E
1.67
2.67
4.17
MO/ sec.
Memorie - memorie
0.63
1.0
1.56
MO/ sec.
Registrele: 2 tipuri:


Pentru fiecare canal,
Comune tuturor canalelor.
13
Proiectarea Microsistemelor Digitale

Registrele:
14
Proiectarea Microsistemelor Digitale




Controlerul DMA este conectat la magistrale şi la semnalele de
comandă; ieşirile sunt în a 3-a stare când controlerul este inactiv;
Este necesar un registru pentru liniile A8 – A15;
Un transfer este declanşat de o cerere pe o linie DREQ;
În prealabil canalul a fost programat prin intermediul registrelor
Command, Mode, Address şi Word; de ex. pentru un transfer DMA –
port:







Adresa de început este încărcată în Base şi Current Address Registers,
ale canalului implicat,
Lungimea blocului este încărcată în Word Count register corespunzător,
Mode Register corespunzător este programat pentru un transfer
memorie – port,
Opţiuni sunt selectate prin Command Register şi Mode Register,
Bitul de mascare a canalului este pus la 0 pentru a valida o cerere
DREQ; aceasta poate fi un semnal sau o comandă software.
Transferul are loc prin activarea semnalelor /MEMR şi /IOW cu
actualizarea numărătorului de cuvinte (octeţi);
Transferul se încheie când Word Count Register ajunge la 0 sau
când se activează un semnal /EOP.
15
Proiectarea Microsistemelor Digitale

Controlerul poate executa 2 tipuri de cicluri:


Idle cycle: când nu există cerere DREQ,
Active cycle: intră atunci când în Idle cycle apare o cerere DREQ
validată; poate lucra în 4 moduri:





Single transfer mode,
Block transfer mode,
Demand transfer mode,
Cascade mode,
Single transfer mode:




Se execută un singur transfer;
Numărătorul de cuvinte va fi decrementat iar cel de adrese va fi
incrementat sau decrementat;
Când numărătorul de cuvinte trece de la 0000 la FFFFH, se setează
bitul TC (Terminal count) în registrul de stare, se generează un impuls
/EOP şi canalul se autoiniţializează,dacă s-a cerut această opţiune; dacă
nu, se setează bitul de mascare împreună cu TC şi /EOP;
Cererea DREQ trebuie să rămână activă până când răspunsul DACK se
activează.
16
Proiectarea Microsistemelor Digitale

Block transfer mode:





Se transferă un bloc cu dimensiunea dată de conţinutul numărătorului de
cuvinte;
Transferul este început de activarea lui DREQ şi continuă până la
trecerea numărătorului de la 0000 la FFFFH sau pînă când se activează
semnalul extern /EOP;
Cererea DREQ trebuie să rămână activă până când se activează
răspunsul DACK;
Canalul se autoiniţializează dacă s-a prevăzut această opţiune.
Demand transfer mode:

Se tranferă date continuu până când:




TC este setat sau
/EOP este activat sau
Cererea DREQ devine inactivă.
Mod util atunci când un periferic doreşte să-şi golească tamponul de
date, indiferent de capacitatea acestuia.
17
Proiectarea Microsistemelor Digitale

Cascade mode:




Permite extinderea numărului de canale prin legarea în cascadă a mai
multor circuite 82C37A;
Figura următoare arată o cascadare pe 2 nivele:
Pot fi ataşate noi nivele la intrările DREQ libere ale circuitelor de pe
nivelul 2;
Programarea începe cu circuitul cel mai aproape de procesor.
18
Proiectarea Microsistemelor Digitale

Transfer memorie – memorie:







Setarea bitului 0 din registrul de comandă;
Sunt implicate canalele 0 (sursa) şi 1 (destinaţia);
Transferul începe prin activarea lui DREQ prin hardware sau software;
Data este memorată în registrul temporar intern al controlerului;
Sunt necesare 4 stări pentru tranferul memorie – controler şi încă 4 stări
pentru transferul controler – memorie;
Numărătorul de cuvinte al canalului 1 stabileşte numărul de transferuri;
încheierea transferului are loc atunci când numărătorul trece de la 0000
la FFFFH şi se activează TC şi ieşirea /EOP; are loc autoiniţializarea
canalelor dacă s-a prevăzut această opţiune;
Este posibil ca în canalul 0 să se folosească aceeaşi adresă pentru toate
transferurile ceea ce înseamnă o operaţie de umplere a unei zone de
memorie cu aceeaşi valoare;
19
Proiectarea Microsistemelor Digitale

Prioritatea: 2 tipuri selectabile prin software:



Prioritatea fixă:



Fixă,
Rotativă.
După numărul de ordine, 0 – prioritate maximă, 3 – prioritate minimă;
După acceptarea unei cereri de la orice canal, celelalte eventuale cereri
vor trebui să aştepte terminarea tratării cerrii acceptate.
Prioritatea rotativă:



Prioritatea este rotită după fiecare cedare a magistralelor procesorului;
Previne monopolizarea sistemului de către un acelaşi canal;
Ultimul canal tratat primeşte prioritate minimă, conform figurii:
20
Proiectarea Microsistemelor Digitale

Transferul cu compresie:



Reduce un ciclu de la 4 la 2 stări;
Nu este permis la transferul memorie – memorie.
Generarea adreselor:





Jumătatea superioară a magistralei de adrese este multiplexată cu liniile
de date; apare pe linii în timpul stării S1;
Este necesară demutiplexarea cu un registru;
Încărcarea informaţiei în registru se face de către un semnal generat de
controler (ADSTB);
Activarea ieşirilor registrului este realizată de semnalul Address Enable
(AEN), generat de controler;
În cazul transferurilor lungi (Block şi Demand Transfer), S1 şi ADSTB nu
apar la fiecare transfer întrucât adresele sunt secvenţiale; S1 şi ADSTB
vor apare doar atunci când se modifică jumătatea superioara a adresei
adică la fiecare 256 transferuri; se câştigă timp.
21
Proiectarea Microsistemelor Digitale

Programarea circuitului 82C37A




Înaintea programării este necesară dezactivarea circuitului (prin setarea
rangului 2 din registrul de comandă) sau mascarea canalului care va fi
programat;
După programare se reactivează circuitul sau se anulează mascarea
canalului;
După alimentare se recomandă încărcarea tuturor registrelor cu valori
cunoscute chiar daca unele canale nu se folosesc; pentru depanare.
Descrierea registrelor

Current Address Register:






Câte unul pentru fiecare canal; 16 biţi;
Memorează adresa utilizată în transferul DMA curent;
Adresa este automat incrementată sau decrementată după fiecare transfer;
Este scrisă de procesor în 2 transferuri pe 8 biţi;
Se poate autoiniţializa, după un /EOP;
În transferurile memorie – memorie incrementarea sau decrementarea pot fi
blocate prin setarea unui bit în Command Register
22
Proiectarea Microsistemelor Digitale

Current Word Count Register:








Câte unul pentru fiecare canal; 16 biţi;
Nr. transferurilor = conţinut registru + 1;
Este decrementat după fiecare transfer;
La trecerea din 0000 în FFFFH se va activa TC;
Poate fi scris sau citit de procesor în transferuri pe 8 biţi;
Se poate autoiniţializa; are loc doar dacă se activează /EOP;
Dacă nu se autoiniţializează va avea valoarea FFFFH după TC.
Base Address şi Base Word Count Registers:




Câte unul pentru fiecare canal; 16 biţi;
Conţin valorile iniţiale;
Scrise de procesor în transferuri pe 8 biţi simultan cu registrele
corespunzătoare pentru valorile curente;
Nu pot fi citite de procesor;
23
Proiectarea Microsistemelor Digitale

Command Register:



Controlează circuitul 82C37A; 8 biţi;
Programat de procesor şi anulat de RESET sau de o comandă Master
Clear;
Structura sa:
24
Proiectarea Microsistemelor Digitale

Mode Register:




Câte unul pentru fiecare canal; 6 biţi;
La scriere, în faza de programare, biţii 0 şi 1 determină canalul care va fi
selectat;
La citire, biţii 0 şi 1 sunt 1;
Structura sa:
25
Proiectarea Microsistemelor Digitale

Request Register:






Unic; 4 biţi;
Asigură cerere DREQ prin software;
Fiecare bit este programabil independent, întregul registru poate fi şters prin
RESET sau comanda Master Clear;
Biţii sunt nemascabili şi se supun prioritizării;
La transferurile memorie – memorie, bitul pentru canalul 0 trebuie setat;
Structura sa:
26
Proiectarea Microsistemelor Digitale

Mask Register:







Unic; 4 biţi;
Fiecărui canal îi este asociat un bit de mascare a cererilor DREQ;
Bitul este setat dacă numărătorul de cuvinte ajunge la FFFFH şi nu este
programată autoiniţializarea;
Fiecare bit poate fi setat sau resetat individual sau în comun;
RESET sau comanda Master Clear setează toţi biţii mascând astfel orice
cerere;
Comanda Clear Mask Register anulează toţi biţii;
Structura sa:
27
Proiectarea Microsistemelor Digitale

Status Register:




Poate fi citit de procesor;
Arată care canal a ajuns la sfârşit şi care are cerere DREQ în aşteptare;
Dacă biţii de mascare sunt setaţi, programul poate afla care canal are cerere
în aşteptare şi să reseteze selectiv biţii de mascare influenţând astfel
prioritatea;
Structura sa:
28
Proiectarea Microsistemelor Digitale

Comenzile software:

Comenzi software speciale:





Clear First/ Last Flip – Flop,
Set First/ Last Flip – Flop,
Master Clear,
Clear Mask Register,
Clear Mode Register Counter.
29
Proiectarea Microsistemelor Digitale

Comenzile referitoare la registrele de cuvânt şi de adrese:
30
Proiectarea Microsistemelor Digitale

Sistem cu microprocesor pe 16 biţi, cu DMA:
31
Proiectarea Microsistemelor Digitale

Aplicaţie: să se scrie programul pentru transferul a 512 cuvinte de la
un port în memorie, începând cu adresa 11000H. Se va folosi
canalul 0 al unui controler DMA.




Se presupune că intrarea /CS a circuitului 82C37A este comandată de
ieşirea unui decodificator, corespunzătoare combinaţiei: A7 = 0, A6 = 1,
A5 = 0, A4 = 0;
Cei 4 biţi mai semnificativi ai adresei vor fi furnizaţi de un Page Register
independent de controler;
Programul va conţine secvenţa de iniţializare a canalului 0 şi apoi
aşteptarea încheierii transferului;
Programul începe cu o scriere la Command Register pentru a dezactiva
circuitul, apoi încărcarea registrelor de cuvânt şi adrese ale canalului 0,
apoi o scriere la Mode Register, la Mask Register şi la Command
Register. După aceste operaţii transferul va începe şi se va citi continuu
Status Register pentru a afla când s-a activat TC corespunzător
canalului 0.
32
Proiectarea Microsistemelor Digitale

Programul:
MOV AL,0A4H
OUT 48H,AL ; write command register pentru dezactivarea circuitului
MOV AX,1000H
OUT 40H,AL
MOV AL,AH
OUT 40H,AL ; scriere adresă
MOV AX,01FFH
OUT 41H,AL
MOV AL,AH
OUT 41H,AL ; scriere dată
MOV AL,84H
OUT 4BH,AL ; scriere mode register
MOV AL,00H
OUT 4AH,AL ; scriere mask register (doar pentru canalul 0)
33
Proiectarea Microsistemelor Digitale
MOV AL,0A0H
OUT 48H,AL ; write command register
; transferul începe
VER: IN
AL,48H ; citire status register
AND AL,01H
JZ VER
; transferul s-a încheiat.
34