+ All Categories
Home > Documents > Proiectarea Microsistemelor Digitale

Proiectarea Microsistemelor Digitale

Date post: 16-Jan-2016
Category:
Upload: malory
View: 22 times
Download: 1 times
Share this document with a friend
Description:
Proiectarea Microsistemelor Digitale. Curs 11. 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; - PowerPoint PPT Presentation
34
1 Proiectarea Microsistemelor Digitale Curs 11
Transcript

1

Proiectarea Microsistemelor Digitale

Curs 11

2

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

3

Proiectarea Microsistemelor Digitale

Exemple de periferice care utilizează transferul DMA în cadrul PC-ului: 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.

4

Proiectarea Microsistemelor Digitale

Dezavantaj al DMA: afectează coerenţa memoriei cache. Fie structura:

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ă.

UC Memorie cache Memorie operativă

Periferie

DMA

5

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:

Fiecare transfer foloseşte magistrala de 2 ori: Port cu DMA, DMA cu memoria

UC este oprit de 2 ori/ transfer.

Procesor Memorie DMA Porturi

6

Proiectarea Microsistemelor Digitale

Magistrală comună, controler DMA integrat:

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.

Procesor DMA Memorie

Port Port...

7

Proiectarea Microsistemelor Digitale

Magistrală de intrare/ ieşire distinctă:

Fiecare transfer foloseşte magistrala comună o singură dată: DMA cu memoria.

UC este oprit o singură dată/ transfer.

Procesor DMA Memorie

Port Port Port

Magistrală de intrare/ ieşire

8

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.

9

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.

10

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.

11

Proiectarea Microsistemelor Digitale

Configuraţia terminalelor:

12

Proiectarea Microsistemelor Digitale

Schema bloc internă:

13

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:

Registrele: 2 tipuri: Pentru fiecare canal, Comune tuturor canalelor.

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.

14

Proiectarea Microsistemelor Digitale

Registrele:

15

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.

16

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ă.

17

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.

18

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.

19

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;

20

Proiectarea Microsistemelor Digitale

Prioritatea: 2 tipuri selectabile prin software: Fixă, Rotativă.

Prioritatea fixă: 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:

21

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.

Proiectarea Microsistemelor Digitale

22

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

Proiectarea Microsistemelor Digitale

23

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;

Proiectarea Microsistemelor Digitale

24

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:

25

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:

Proiectarea Microsistemelor Digitale

26

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:

27

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:

28

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:

29

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.

30

Proiectarea Microsistemelor Digitale

Comenzile referitoare la registrele de cuvânt şi de adrese:

31

Proiectarea Microsistemelor Digitale

Sistem cu microprocesor pe 16 biţi, cu DMA:

32

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.

33

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)

34

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.


Recommended