370 likes | 572 Views
Pinout 8086 (1). Scurta recapitulare Trei tipuri de pini: Adresa (output); Date (input/output); Control (input/output);. Pinout 8086 (2). Bus Adresa/Date: AD15-AD0. Acest bus contine datele si adresa multiplexate Bus Adresa/Control (status): A19/S6 – A16/S3.
E N D
Pinout 8086 (1) • Scurta recapitulare • Trei tipuri de pini: • Adresa (output); • Date (input/output); • Control (input/output);
Pinout 8086 (2) • Bus Adresa/Date: • AD15-AD0. • Acest bus contine datele si adresa multiplexate • Bus Adresa/Control (status): • A19/S6 – A16/S3. • Aceste 4 linii contin adresa si statusul, multiplexate. • S6 = 0, S5 indica statusul flagului de intrerupere IF, S4 si S3 indica segmentul care este accesat in ciclul de magistrala curent.
Pinout 8086 (3) • Magistrala de control (1): • RD’ • Cand este activ indica prezenta unei operatii de read. • READY • Cand este 0, uP insereaza wait-stateuri in ciclul de procesor. • INTR • Folosit de periferice pentru a semnala o intrerupere • TEST’ • Acest pin este testat de instructiunea WAIT, daca este activ, WAIT se comporta ca un NOP, altfel instructiunea WAIT asteapta ca TEST’ sa devina 0 logic. • NMI • Semnaleaza o intrerupere nemascabila.
Pinout 8086 (4) • Magistrala de control (2) • RESET • Reset • MN/MX’ • Selecteaza modul minim sau maxim al procesorului. • BHE’/S7 • Bus high enable este folosit in conjunctie cu bitul A0 pentru a selecta citirea datelor pe 8 sau 16 biti. Bitul S7 este 1 intotdeauna
Pinout 8086 (5) • Magistrala de control (3) / modul minim (1): • M/IO’ • Indica un acces la memorie sau port I/O. • WR’ • O operatie de scriere este in desfasurare. • INTA’ • INTerrupt Acknowledge. • ALE • Address Latch Enable – indica faptul ca pe magistrala de Date/Adresa este o adresa. • DT/R’ • Indica ca pe magistrala de date se transmite / receptioneaza un cuvant de date
Pinout 8086 (6) • Magistrala de control (4) / Modul minim (2): • DEN • Data Enable, activeaza bufferul extern de date. • HOLD • Pin de input care este activat de un periferic pentru a semnaliza ca are nevoie de DMA. • HLDA • HoLD Acknowledge, Pin de output prin care procesorul accepta cererea de DMA. • SS0’ • Equivalent to S0 pin in maximum mode.
Pinout 8086 (7) • Magistrala de control (5) / Modul maxim(1): • S2’,S1’ and S0’ • Biti de status pentru ciclul curent de magistrala. • RO’/GT1’ and RO’/GT0’ • Pini de cerere/accept folositi pentru DMA in modul maxim. • LOCK’ • Semnalizeaza ca un periferic este scos din sistem temporar. • QS1’ and QS0 • Biti de status .
Mod minim vs. mod maxim • Modul minim este cel mai usor mod de a opera un sistem cu 8086. • Toate semnalele de control a magistralei sunt generate de procesor. • Suport pentru backward compatibility cu modele mai vechi ( 8085A ) . • Modul maxim mult mai versatil, dar si mai dificil de operat • Semnalele de control sunt generate de controllerul de magistrala. • Procesorul poate folosi coprocesorul matematic. • Procesorul poate fi folosit in sisteme multiprocesor.
Circuite de memorie • Tipuri de memorie: • ROM; • Flash; • SRAM; • DRAM. • Semnale de conectare: • Adresa; • Data; • Selectare (CS’); • Control (OE’ / WE’).
Decodarea adresei • Adresa trimisa pe magistrala trebuie decodata pentru a selecta circuitul de memorie corespunzator. • Acest semnal decodat va selecta cipurile care vor comunica cu procesorul prin intermediul magistralelor de date si control. • Se pot folosi mai multe metode de a decoda adresa: • circuite cu porti logice; • circuite decodificatoare; • decodificatoare cu memorie ROM; • automate programabile etc.
Maparea unei memorii EPROM • Cum mapam o memorie EPROM intr-un anumit spatiu de adresa ? • Cerinte tipice: • Schema bloc, cu evidentierea modului de functionare a procesorului ( mod minim / maxim) • Detalierea memoriei EPROM • Schema • Mapare
Maparea mem. EPROM (2) • Exemplu: O structura cu 8086 ce contine 64kB memorie EPROM mapata in spatiul FFFFFH- F0000H, folosind cipuri de memorie de 8k * 8 • (1) Schema bloc: se obtine din evidentierea in schemei bloc generala pentru modul minim / maxim (slide 9 si 10) a circuitului de memorie EPROM.
Maparea mem. EPROM (3) • (2) Detalierea memoriei EPROM • Identificarea numarului de cipuri necesare: • Spatiul de adresa = 64k • Capacitatea memoriei = 8k • Modul de adesare al cipurilor • 8k * 8 inseamna 8 * 1024 de cuvinte de 8 biti de date • Dimensiune memorie : 23 * 210 13 biti de adresa • Lungimea unui cuvant 8 biti 8 biti de date • Q: Cum facem sa avem cuvinte de date mai mari de 8 biti, daca avem cipuri de 8 biti ? • A: Punem in paralel mai multe cipuri de memorie 8 cipuri
Maparea mem. EPROM (4) • Cateva exemple de adresare pentru cipuri:
Maparea mem. EPROM (5) • Pentru un procesor 8086, lungimea cuvintului este de 16 biti • In cazul nostru, cu cipuri 8k * 8 2 celule in paralel • Fiecare chip are doua semnale importante: • CS’ (semnal pe logica negativa) – Chip Select • Daca nu este 0, cipul nu este activ • OE’ (semnal pe logica negativa) – Output Enable • Daca pe acest pin se trimite 0, circuitul va trimite datele la iesire
Maparea mem. EPROM (6) • Primul pas in decodificarea adresei este stabilirea semnalului de selectie a zonei mapate • Prima adresa din zona mapata: 1111 0000 0000 0000 0000 • Ultima adresa din zona mapata: 1111 1111 1111 1111 1111 • Memoria EPROM e selectata cand A19,A18,A17,A16 sunt 1 • EPROMSEL = A19^A18^A17^A16
Maparea mem. EPROM (7) • Semnalele CS • Sunt comune pentru cipurile care vor outputa in acelasi cuvant de date • In cazul nostru, cele 4 perechi de cipuri se aleg pe baza bitiilor A15-A14 • Cel mai usor in cazul nostru este sa folosim un decodificator care va fi activat de semnalul EPROMSEL
Maparea mem. EPROM (8) • Adresarea in cip • In interiorul cipului adresarea se face pe 13 biti, deci bitii A13-A1 • Citirea are loc numai pentru cipurile in care CS este activ • Disponibilitatea datelor pe octeti • Pentru 8086 sunt 3 moduri: D15-D8, D7-D0, D15-D0 • BHE’ si A0 codifica: cele 3 moduri valide pe 8086 • Daca arhitectura ar fi fost proprie, atunci se putea folosi doar bitul A0 pentru a comanda care din cele 2 cipuri va outputa octetul de citit
Maparea mem. EPROM (11) • Concluzii • Maparea unei memorii de orice fel se face asemanator • Fiti atenti la: • Nr. de biti de adresa ai procesorului • Nr. de biti de date ai procesorului • Tipul memoriei ( lungime cuvant si dimensiunea cipului) • DRAM are nevoie si de refresh (timer)
Maparea unui timer (1) • Cum mapam un timer la o anumita adresa astfel incat acesta sa genereze semnale cu o anumita frecventa? • Cerinte tipice • Dandu-se un model de timer, sa se stabileasca schema • Detalierea modului de a genera semnale (intreruperi) cu o anumita periodicitate
Maparea unui timer (2) • Exemplu: Se considera o structura cu 8086 la care se mapeaza un timer cu ceas de 5 MHz care genereaza intreruperi la fiecare 20 ms, avand adresa de baza 20H. • Cerinte: • Schema, detalierea modului de lucru, setarea divizorului
Maparea unui timer (3) • Circuitul de ceas standard la 8086 este 8253 • 3 timere pe 16 biti (IRQ0, DRAM refresh, speaker) • Fiecare timer are doi pini de intrare (CLK0-2 si GATE0-2) si unul de iesire • Semnalul de selectie TIMERCS poate fi obtinut (adresa este 20H = 0000 0000 0000 0010 0000): • Cu porti logice pe baza bitilor de adresa (¬A19¬A18…¬A7¬A6A5¬A4¬A3¬A2¬A1¬A0) (urat!) • Cu ajutorul unui decodificator • Poate decodifica mai multe adrese • Mai ieftin de implementat
Maparea unui timer (4) • Decodificarea cu circuit de decodificare • In general perifericele se pun la adrese multiple de 16 (10H, 20H…) • Folosim bitii A7,A6,A5,A4 ca input in decodifcator • In cazul nostru pinul de iesire 2 al decodificatorului este TIMERCS • Semnalul EN al decodificatorului este (IORD+IOWR) ¬A19¬A18…¬A9
Maparea unui timer (5) • Setarea divizorului • F = 5MHz T = 200 ns • Dorim sa obtinem 20 ms, deci factorul de divizare este 20ms / 200 ns = 100 000 • Timerul 8253 are cele trei countere pe 16 biti nu putem folosi doar un singur counter • Folsim doua countere • Primul il conectam la clockul de 5 MHz, initializam cu 50000 si scadem spre 0, cand atinge 0 lansam un semnal pe output T = 10 ms (mod 0) • Celui de-al doilea ii conectam CLK la iesirea primului si il initializam cu 2, cand scade si atinge 0 lanseaza semnal pe output semnal cu T = 20 ms
Circuit de monitorizat accese (1) • Exemplu: Sa se urmareasca accesele de scriere la portul 70H. Toate datele scrise la acest port sunt stocate intr-o memorie SRAM de 2k*8 mapata in spatiul 80000H-80800H. Cand memoria este umpluta se genereaza o intrerupere pe IRQ3. Memoria SRAM este accesata de procesor numai pe 8 biti.
Circuit de monitorizat accese (2) • Schema circuitului va contine urmatoarele blocuri: • Decodificator pentru adresa port (DEC) • Un numarator pe 11 biti care va genera urmatoarea adresa din SRAM • Blocul de memorie SRAM • Un multiplexor care va selecta in functie de actiunea asupra memoriei adresa care trebuie furnizata
Circuit de monitorizat accese (3) • Decodificatorul • Primeste ca intrare adresa de pe magistrala de adrese supravegheata si activeaza iesirea daca a primit adresa corespunzatoare perifericului care trebuie supravegheat • Intrarea: A7-A4 • Enable este dat de semnalul IOWR’ de la procesor • In cazul nostrul, adresa = 70H, se va alege al saptelea bit de iesire • Outputul decodificatorului va fi 1 de fiecare data cand se face un acces la scriere la adresa 70H
Circuit de monitorizat accese (4) • Numaratorul • Furnizeaza urmatoarea adresa libera din SRAM in care se scriu datele. • In cazul nostru, semnalul de ceas este output-ul decodificatorului • Dimensiunea lui este data de dimensiunea blocului pentru care el furnizeaza adrese • In cazul nostru, 2k = 211, deci trebuie sa fie pe 11 biti • Umplerea memoriei este semnalata tot de numarator, prin semnalul CARRY al acestuia • In cazul nostru, semnalul CARRY este legat la IRQ3
Circuit de monitorizat accese (5) • Multiplexorul • Selecteaza in functie de actiunea asupra memoriei, adresa care trebuie furnizata. • Daca are loc o operatiune de scriere, adresa este furnizata de la numarator • Daca are loc o operatiune de citire, va fi data adresa de la procesor (ultimii 11 biti) • Semnalul de selectie este iesirea decodificatorului • Intrarea 1 este iesirea numaratorului NUM0-NUM10 • Intrarea 2 este A0-A10
Circuit de monitorizat accese (6) • Memoria SRAM • Memoreaza datele care sunt scrise in portul 70H • Este mapat la adresa 80000H • Este accesibil pentru scriere, semnalul WR fiind activat de o scriere la portul 70H • Este accesibil pentru citire, semnalul RD fiind activat de procesor • Semnalul de activare SRAMCS este dat de o scriere sau o citire: DECOUT + SelectRAMRead • SelectRAMRead este activat atunci cand adresa este in intervalul A0-A19 si MEMRD este activ