340 likes | 422 Vues
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;
E N D
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
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.
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ă. Memorie cache Memorie operativă UC DMA Periferie
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
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 ...
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 Magistrală de intrare/ ieşire Port Port Port
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.
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.
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.
Proiectarea Microsistemelor Digitale • Configuraţia terminalelor:
Proiectarea Microsistemelor Digitale • Schema bloc internă:
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.
Proiectarea Microsistemelor Digitale • Registrele:
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.
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ă.
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.
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.
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;
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:
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.
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
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;
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:
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:
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:
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:
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:
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.
Proiectarea Microsistemelor Digitale • Comenzile referitoare la registrele de cuvânt şi de adrese:
Proiectarea Microsistemelor Digitale • Sistem cu microprocesor pe 16 biţi, cu DMA:
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.
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)
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.