1 / 34

Proiectarea Microsistemelor Digitale

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;

malory
Télécharger la présentation

Proiectarea Microsistemelor Digitale

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation 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ă. Memorie cache Memorie operativă UC DMA Periferie

  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 Magistrală de intrare/ ieşire Port Port Port

  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.

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

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

  23. 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;

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

  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.

More Related