curs prezentare vol 3 microprocesoare
DESCRIPTION
Electronica MicroprocesareTRANSCRIPT
Curs 3Microprocesorul 8085I8085A P Intel de uz general de 8 bii; NMOS; compatibil cu 8080. I8085AH (3MHz) I8085AH-2 (5MHz) I8085AH-1 (6MHz) HMOS (consum mai mic cu 20%) MSM80C85AH (0,55MHz) Oki Semiconductor
Vcc GND X1 X2 CLK HOLD HLDA TRAP INTR RST 7.5 RST 6.5 RST 5.5 INTA SI SOFig.3.1. Microprocesorul 8085 semnale la pini
A15A8
AD7AD0 IO/M S1 S0 RD WR ALE READY RESET IN RESET OUT
8085A
Caracteristici generale Alimentare: VCC = 5V; Semnal de tact: - oscilator intern pilotat cu cristal de cuar conectat ntre X1 i X2; - generator de tact extern conectat pe X1; - fXTAL = 2 fCLK (6 MHz - AH, 10MHz AH-2, 12 MHz AH-1, 110MHz MSM80C85AH) - CLK semnal de sincronizare furnizat n exterior, cu frecvena fXTAL/2; Magistral de adrese/date multiplexat n timp: - 16 linii de adrese (A15A8, AD7AD0); - 8 linii de date (AD7AD0) ALE (Address Latch Enable) - reinerea octetului inferior al adresei ntr-un registru extern. Liniile RD , WR i IO/ M - controlul transferului datelor ntre P i dispozitivele externe. S0, S1 codific starea MD (Data Bus Status) n principalele cicluri de magistral: 00 01 10 11 S1 S0 Tip ciclu HALT WRITE READ FETCH
RESET IN - iniializare PC=0000h, CBB INTE=0, CBB HLDA=0. RESET ieire de resetare a altor dispozitive externe.INTR, RST 5.5, RST 6.5, RST 7.5 i TRAP linii de prezentare a cererilor de ntrerupere INTA - linie de confirmare a acceptrii solicitrii de ntrerupere prezentate pe linia INTR. SID Serial Input Data RIM: SID ACC7, validare ntreruperi pe liniile RST SOD Serial Output Data SIM: ACC7 SOD, inhibare ntreruperi pe liniile RST
3.1. Structura intern a microprocesorului 8085A INTA RST6.5 TRAP INTR RST5.5 RST7.5 Comand ntreruperi Magistral intern de date (8 bii) SID SOD
Comand I/E serial
Acumulator A (8)
Registru temporar (8)
Bistabile condiii (5) Unitate logicoaritmetic
Registru instr. (8)
Decodif. instr. i codif. ciclu main
B (8) C (8) D (8) E (8) H (8) L (8) SP (16) PC (16) Latch i inc./dec. adr.
+5V GND X1 X2Tact extern CONTROL
Corecie zecimal Bloc de secveniere i comandSTATUS DMA RESET
Tampon adrese
Tampon adrese/date
RD WR S0 CLK OUT READY ALE
S1
RESET HOLD OUT HLDA IO/M RESET IN
A15A8
AD7AD0 Magistrale de adrese i adrese/date
Fig.3.2. Microprocesorul 8085A structura intern
3.1.1. Unitatea aritmetic i logic - un sumator paralel de 8 bii; - un acumulator (A) de 8 bii, accesibil utilizatorului; - un acumulator temporar de 8 bii, (ascuns) pentru memorarea primului operand; - un registru temporar de 8 bii, (ascuns) folosit pentru cel de-al doilea operand; - un circuit de corecie automat pentru lucrul cu operanzi n BCD. - cinci fanioane sau bistabile de condiii (F - Flags): o CY (CarrY) transport/mprumut o AC (Auxiliary Carry) - transport/mprumut interdigit o Z (Zero) rezultat zero al operaiilor o S (Sign) semn al rezultatului o P (Parity) paritate numr de bii 1 ai rezultatului
D7 PSW A7 A6 A5 A4 A3 A2 A1 A0 S
D6 Z
D5
D4 AC
D3
D2 P
D1
D0 CY
-
-
-
Cuvntul de stare al programului - PSW - Program Status Word, de 16 bii.
3.1.2. Registrele microprocesorului - PC - Program Counter numrtorul de program,; - SP - Stack Pointer - indicatorul vrfului stivei; - B, C, D, E, H i L - registre generale, utilizate individual sau n pereche (B-C, D-E, H-L) - un registru pereche W-Z (ascuns), registru temporar pentru operaii interne. PC - incrementat/decrementat nainte de a fi transferat n registrul tampon de adres. Liniile de adres de la ieirea acestui registru tampon pot fi ncrcate cu o sarcin TTL. Registrele comunic cu magistrala intern printr-un multiplexor, adresat printr-un circuit de selecie, sub controlul blocului de secveniere i comand. Magistrala intern de date - izolat de magistrala extern, D7D0, prin intermediul unui registru tampon bidirecional, care amplific semnalele la nivelul unei sarcini TTL i asigur memorarea temporar a datelor transmise de microprocesor. Registrul tampon faciliteaz intrarea datelor i a codurilor instruciunilor. Registrul de instruciuni primete codul operaiei la nceputul execuiei unei instruciuni. Blocul de decodificare a instruciunilor - memorie ROM, programat astfel nct s permit recunoaterea codurilor instruciunilor i odificare a ciclurilor main care trebuie realizate n etapa de execuie. Blocul de secveniere i comand - desfurarea temporal a ciclurilor main aferente execuiei unei instruciuni, sincronizata cu semnalul de tact generat de un oscilator intern.
Stiva zon de memorie RAM, cu acces de tip LIFO (Last In, First Out) - Stocarea temporar a coninutului registrelor interne; - Salvarea/ncrcarea adresei de revenire la execuia instruciunilor de apel/revenire; - Transferul de parametri ntre programul apelant i subrutina apelat; Adresarea informaiilor din stiv- registrul SP Stack Pointer indicatorul vrful stivei SP- conine n orice moment adresa vrfului stivei - adresa ultimei locaii ocupate din stiv Stiva crete prin decrementarea SP (n sens invers lui PC incrementare) Operaii admise depunere i extragere - Registre pereche sau cuvinte de 16 bii: o BC, DE, HL, PC, PSW - Execuie 2 cicluri succesive de scriere/citire, - Adresa este furnizat de SP - Ordinea - convenia Intel - Adresa mai mic octetul mai puin semnificativ Accesul n stiv implicit sau explicit - Acces explicit instruciuni PUSH, POP - Acces implicit CALL, RET, XTHL
Adresa MIN
RAM Memorie de date
: :
SP MAX
Stiv
3.1.3. Regimuri de funcionare Regimul de funcionare normal Execuie secvenial a instruciunilor programului Execuie secvenial a ciclurilor main (CM) Execuie secvenial a microoperaiilor specifice fiecrui ciclu main n parte Testarea strii liniei READY - sincronizare cu dispozitivele externe n fiecare ciclu main este testat starea liniei READY; Dac READY=1 - dispozitivul adresat este pregtit pentru transfer; Dac READY=0 se intr n regimul de ateptare. Testarea apariiei unei cereri de cedare de magistral Trecerea n 1 a liniei HOLD este reinut n bistabilul intern HLDA; La sfritul fiecrui CM este testat starea acestui bistabil; Dac CBB HLDA este setat, se intr n regimul de cedare magistrale. Testarea apariiei unei cereri de ntrerupere n ultimul CM al unei instruciuni Se testeaz dac exist o cerere de ntrerupere valid. Dac exist o cerere valid, se intr n regimul de ntrerupere. Execuia instruciunii HLT (Halt) Se intr n regimul de oprire (HALT)
Regimul de ateptare sincronizarea transferului dintre P i dispozitive externe mai lente Se introduc perioade de ateptare TW; Se testeaz starea liniei READY n fiecare perioad TW; Cnd READY este gsit activ, se revine n regimul de funcionare normal.
Regimul de cedare de magistrale - (regimul HOLD): Un alt dispozitiv solicit prin HOLD=1 accesul la magistrala sistemului; Cererea este memorat ntr-un bistabil intern (HLDA - HoLD Acknowledge flip-flop); P cedeaz MA, MD i MC (HZ) i confirm prin semnalul HLDA=1; La dispariia cererii (HOLD=0), bistabilul intern este resetat i P reia controlul MS.
Regimul de ntreruperi Se trece la execuia primei instruciuni a rutinei de tratare a ntreruperii: furnizat de dispozitivul solicitant la activarea de ctre P a liniei INTA (INTR) este predefinit, fixat n hardware, fiind cunoscut de P (TRAP, RST).
Regimul de oprire P i trece n starea HZ liniile de adrese, date i o parte dintre liniile de control; Se execut cicluri HALT succesive. La apariia unei cereri de cedare de magistrale, se intr n regimul HOLD. La revenirea din regimul HOLD, se continu cu cicluri HALT. La apariia unei cereri de ntrerupere, se intr n regimul de ntrerupere. La revenirea din ntrerupere se continu cu instruciunea care urmeaz lui HLT. La resetare, se intr n regimul de funcionare normal.
3.2. Secvenierea intern a operaiilor Execuia unei instruciuni: 15 cicluri main. 3.2.1. Tipuri de cicluri main Stare S1 1 1 0 1 0 1 1 1 0 S0 1 0 1 0 1 1 0 1 0IO/ M
Tip ciclu OF (Opcode Fetch) MR (Memory Read) MW (Memory Write) IOR (I/O Read) IOW (I/O Write) INA (INterrupt Acknowledge) BI (Bus Idle): DAD Ack. TRAP, RST HALT
ComandRDWRINTA
0 0 0 1 1 1 0 1 HZ
0 0 1 0 1 1 1 1 HZ
1 1 0 1 0 1 1 1 HZ
1 1 1 1 1 0 1 1 1
OF primul ciclu main al unei instruciuni 4 sau 6 perioade de tact; BI - ciclu main care nu utilizeaz magistrala sistemului; INA extragere cod operaie depus de dispozitivul I/E care a cerut o ntrerupere pe INTR.
3.2.2. Diagrama de tranziie a strilor
TRESETRESET
RESET
T1
HALT READ TWAIT HOLD Da SET CBB HLDA CC=6 HOLD=1 Nu Da SET CBB HLDA SET CBB HLDA HOLD VALIDINT THALT VALIDINT RESET CBB HALT SET CBB INTA RESET CBB INTE
HALT
T2
(READY+BI)
HOLD=1
?Nu OF
T3
T4
?
CC=4
T6CBB HLDA=1 Nu Nu Ultimul CM al instruciunii ? Da
T5
THOLD
HOLD
HOLD RESET CBB HLDA Da
DaNuVALIDINT=1
HALT=1
?
?
Da
Nu
SET CBB INTA RESET CBB INTE
Fig.3.3. Diagrama de tranziie a strilor la microprocesorul 8085A
3.2.3. Secvenierea operaiilor n ciclurile main
CLK
T1
T2
T3
M1
T4
T5, 6
T1
T2
M2 . . .
A15A8AD7AD0 ALE IO/M S1 , S0 OUT PCL
PCH IN D7 D0
NEDEF. OUT (PC+1)L
(PC + 1)H IN D7 D0
S1 = S0 = 1
RD
READY Adrese Date Decodificare i execuie Adrese Date tFig.3.4. Diagrama de semnale pentru un ciclu OF
M1 T1 CLK IO/M, S1, S0 ALE T2 T3 T4 T1
M2 T2 T3 T1
M3 T2 T3 T1
M4 T2 T3
( 0,1,1)
( 0,1,0 )
( 0,1,0 )
( 0,0,1 )
A15A8 OUTPCL
PCH INOPCODE
(PC+1)H OUT(PC+1)L
(PC+2)H OUT(PC+2)L
ADH OUTADL
INADL
INADH
OUTACC.
AD7AD0 RD
Date de la memorie
Date de la memorie
WR OF MR MR MW t
Fig.3.4. Secvenierea operaiilor la execuia instruciunii STA addr
M1 T1 CLK IO/M, S1, S0 ALE T2 T3 T4 T1
M2 T2 T3 T1
M3 T2 T3
( 0,1,1)
( 0,1,0 )
( 1,1,0 )
A15A8 OUTPCL
PCH INOPCODE
(PC+1)H OUT(PC+1)L
PORT OUTPORT
INPORT
IN Date de la port
AD7AD0 RD
Adresa port
WR OF MR RP
Fig.3.5. Secvenierea operaiilor la execuia instruciunii IN port
3.3. Interfaarea microprocesorului cu dispozitive externe 3.3.1. Demultiplexarea liniilor de adrese/date i decodificarea liniilor de comand AD7AD0, ALE A7A0, D7D0 - I8212 - controlat pe intrarea STB de semnalul ALE - funcioneaz n regimurile DATA IN - DATA LATCH - conservarea facilitii TS a liniilor A7A0 - controlat de semnalul HLDA, pe linia DS1.
IO/ M , RD , WR MEMR , MEMW , I/OR , I/OW - DCD 3/8
IO / M0 0 1 1
RD0 1 0 1
WR
Semnale de comandMEMRMEMWI / OR
8212 A2 A1 A0
1 0 1 0
7 6 5 4 3 2 1 0
I/OW I/OR
IO/M RD WR
I / OW
MEMW MEMR
- DMUX I8205 - conservarea facilitii TS a liniilor de control validat de HLDA pe linia E (Enable)
3.3.2. Interfaarea cu memoria i dispozitivele de I/E
VCC
X1
X2
A15A8VCC
8 8
16
MADCD
8085ARESET IN HLDA AD7AD0 HOLD TRAP ALE RST 7.5 CLK RST 6.5 RESET RST 5.5 OUT INTR IO/M SOD RD SID INTA WR
DS2 CLR DS1 DI81 STB DO81
CS
CS
8212MD
Memorie
Dispozitive de I/EINTA
X RD2 WR D70MDAD7AD0
CLK RD WR D70 RESET
E1 A2 8205 A1 A0 E E2 3 VCC
2 1 5 6
MEMW MEMR I/OW I/OR
MC
Fig.3.6. Structura unui sistem cu P 8085A Adresele de memorie i de I/E sunt decodificate de acelai circuit DCD Distincia ntre cele dou tipuri de dispozitive - prin semnalele de comand
Alt variant decodificatoare separate pentru memorie i dispozitive de I/E
A15A0
16
MA
IO/M
E
DCD memorie ...
E
DCD I/E ...
D7 D0 (8) INTA
MD
CS ADR D70 CS CS OE R/W Memorie WR RD CSWR RD
CS D70 Dispozitive de I/E
De la/ctre procesFig.3.7. Semnale de selecie distincte pentru memorie i I/E
Utilizarea unor periferice integrate cu o logic minimal de decodificare i selecie: 8155 256 SRAM, 3 porturi paralele de I/E, ceas programabil de 16 bii 8355/8755 2Koctei ROM/EPROM i 2 porturi paralele de I/E
+5V GND IO/M AD7AD0 ALE CE RD WR RESET TIMER CLOCK VCC VSS 8155 A Port A CLK RESET IO/M ALE AD7AD0 A10A8 CE PROG/CE RD IOR IOW
+5V GND GND sau 25V VCC VSS VDD
8355/8755
A
Port A
SRAM 256 8
B
Port B
ROM/ EPROM 2k 8
B
Port B
TIMER
C
Port C
TIMER OUT
READY
Fig.3.8. Schema bloc a circuitelor dedicate 8155 i 8355/8755
+5V
XTAL +5V 8 8 3IOR VCC VSS VDD A10A8 AD7AD0 ALE PORT B RD IOW IO/M READY
VCC VSS X1 X2 TRAP A15A8 RST 7.5 RST 6.5 AD7 AD0 RST 5.5 INTR ALE INTA 8085A S1 RD WR S0 HOLD IO/M HLDA READY SID SOD CLK OUT RESET IN RESET
8PORT A
8355/ 8755
8
8
CLK RESET PROG/CE
TIMER WR RD IO/M CE ALE AD7AD0 RESET IN 8155 VCC TIMER VDD OUT PORT A PORT B PORT C
+5V
8
8
6
3.9. Structura minimal a unui sistem cu microprocesor 8085A
3.4. ntreruperile microprocesorului 8085A - 4 linii de ntrerupere mascabile: INTR, RST 5.5, RST 6.5, RST 7.5 - o linie de ntrerupere nemascabil - TRAP 3.4.1. Linii de ntrerupere mascabile Linia INTR (INTterrupt Request) intrare de ntrerupere, activ pe nivel ridicat. Este testat la sfritul ultimului ciclu main al fiecrei instruciuni (cu unele excepii). ntreruperea se consider valid dac bistabilul intern IE (Interrupt Enable) este setat. Bistabilul IE - resetat odat cu microprocesorul (ntreruperile pe linia INTR sunt iniial inhibate); - poate fi setat prin program - instruciunea EI Enable Interrupts - poate fi resetat prin program - instruciunea DI Disable Interrupts - este resetat automat odat cu acceptarea unei cereri de ntrerupere (echivalent DI). - ntreruperile pe linia INTR nu sunt acceptate la sfritul instruciunilor EI i DI. O ntrerupere valid este acceptat odat cu urmtorul ciclu main ciclu INA: - este resetat CBB IE (chiar dac solicitarea rmne activ, nu mai este valid); - se seteaz CBB INTA se activeaz semnalul INTA - se inhib incrementarea automat a registrului PC - reine adresa instruciunii urmtoare - la activarea INTA , dispozitivul solicitant furnizeaz codul operaie al instruciunii urmtoare de executat. Teoretic - orice instruciune poate fi teoretic furnizat microprocesorului
Practic - aceast instruciune trebuie s ndeplineasc o serie de cerine pentru a fi util: - s asigure saltul la adresa de tratare a solicitrii de ntrerupere - s permit revenirea n programul ntrerupt i reluarea fluxului normal de instruciuni. Exist doar dou instruciuni care pot ndeplini aceste cerine: - o instruciune de apel necondiionat CALL addr permite apelarea rutinei de tratare amplasat oriunde n spaiul de memorie are 3 octei, deci dispozitivul solicitant trebuie s fie capabil s furnizeze succesiv cei trei octei ai instruciunii (utilizat de controlerele de ntreruperi), la activarea de trei ori succesiv a liniei INTA . - o instruciune de apel scurt RST n (Restart) (n=8p, p=07) are un singur octet, fiind uor de furnizat pe MD la activarea semnalului INTA ; codului operaie include un cmp de 3 bii (p) pentru codificarea celor 8 adrese posibile de tratare. Execuia instruciunii inserate de dispozitivul solicitant: - se salveaz n stiv coninutul registrului PC (adresa instruciunii urmtoare din programul ntrerupt) - se ncarc n PC adresa rutinei de tratare: n = 8 p (RST) sau addr (CALL)
M1 (INA) T1 CLK T2 T3 T4 T5 T6 T1
M2 (INA) T2 T3 T1
M3 (INA) T T3 T1
M4 (MW) T2 T3
M5 (MW) T1 T2 T3
INTA IO/M, S1, S0 ALE
( 1,1,1)
( 1,1,1 )
( 1,1,1)
( 0,0,1 )
( 0,0,1 )
A15A8 OUT AD7AD0PCL
PCH INCALL
PCH OUTPCL
PCH IN OUTPCL
(SP-1)H IN OUT(SP-1)L).
(SP-2)H OUT(SP-2)L).
OUTPCH
OUTPCL
ADL LOW (ADDR)
ADH HIGH (ADDR)
RD WR
t3.10. Acceptarea solicitrii de ntrerupere pe linia INTR (instruciunea CALL addr)
Rutina de tratare: - amplasat la adresa corespunztoare instruciunii de apel furnizat de solicitant; cu ajutorul directivelor de asamblare - conserv starea programului ntrerupt salvarea pe stiv a registrelor care urmeaz a fi modificate i refacerea lor la final - trateaz solicitarea de ntrerupere; operaii de I/E specifice dispozitivului solicitant; - informeaz solicitantul dup tratare pentru ca acesta s-i dezactiveze cererea; dialog cu dispozitivul solicitant n spaiul de I/E; - revalideaz ntreruperile pe linia INTR IE=1 dup execuia instruciunii EI Enable Interrupts - revine n programul apelant la terminarea tratrii cu o instruciune de revenire (RET RETurn) Liniile RST 5.5, RST 6.5 i RST 7.5 - linii de ntrerupere mascabile - pot fi mascate individual, prin bii suplimentari fa de IE; - mascarea/demascarea liniilor RST - instruciunea SIM (Set Interrupt Mask); - citirea strii biilor de mascare - instruciunea RIM (Read Interrupt Mask); - nu necesit o confirmare extern a acceptrii solicitrilor; - P 8085 execut automat instruciuni de tip RESTART implementate n hardware; - adresele rutinelor de tratare: 85.5=44=002Ch, 86.5=52=0034h i 87.5=60=003Ch; - nu se suprapun peste adresele folosite de INTR prin RST n (n=8p, p=07) Solicitri simultane ordinea prioritilor (maxim) RST 7.5, RST 6.5, RST 5.5 (minim)
Liniile RST au prioritate mai mare dect linia INTR. Liniile RST 6.5 i RST 5.5 sunt active pe nivel logic 1, la fel ca i INTR. Linia RST 7.5 - activ pe front cresctor: cererea este memorat ntr-un bistabil intern, care este resetat dup servire, printr-o mascare software sau la resetarea P. Instruciunea SIM (Set Interrupt Mask) ieire serial (SOSOD); resetarea bistabilului care reine cererea de ntrerupere aprut pe RST 7.5 (R7.5=1) mascarea/demascarea suplimentar a liniilor de ntrerupere RST (M7.5, M6.5 i M5.5), dac MSE=1 (Mask Set Enable). Ex.: MSE=1 i M5.5=1 linia de ntreruperi RST 5.5 este mascat. Dup acceptarea unei ntreruperi pe oricare din liniile RST, toate ntreruperile mascabile sunt dezactivate automat (IE=0) i ele trebuie revalidate cu o instruciune EI. 7 6 5 4 3 2 1 0
SO
-
-
R7.5
MSE
M7.5
M6.5
M5.5
Instruciunea RIM (Read Interrupt Mask) intrare serial (SIDSI); - citirea strii bistabililor de validare sau mascare a ntreruperilor (IE, M7.5, M6.5, M5.5) - citirea solicitrilor de ntrerupere pe liniile RST n curs de servire (17.5, 16.5, 15.5). 7 6 5 4 3 2 1 0
SI
17.5
16.5
15.5
IE
M7.5
M6.5
M5.5
3.4.2. Linia de ntrerupere nemascabil Linia TRAP nu poate fi mascat prin program - nu necesit o confirmare extern a acceptrii solicitrilor; - P 8085 execut automat o instruciune RST 4.5 implementat n hardware; - adresa rutinei de tratare: 84.5=36=0024h; - nu se suprapune peste adresele folosite de liniile INTR i RST; - activ att pe front pozitiv ct i pe nivel; - o solicitare e acceptat numai dac se menine pe nivel ridicat pn la testare; - conserv starea sistemului de ntreruperi mascabile (bitul de validare general IE i biii de masc ai liniilor RST); - rezervat pentru situaii catastrofale- iminenta dispariie a tensiunii de alimentare. Linia de ntrerupere TRAP RST 7.5 RST 6.5 RST 5.5 INTR Adresa de salt 0024h 003Ch 0034h 002Ch dat de instruciunea RST n sau CALL addr Nivelul de prioritate 1 (max) 2 3 4 5 (min) Modul de activare front i nivel front pozitiv nivel logic 1 nivel logic 1 nivel logic 1 Tipul ntreruperii nemascabil mascabil mascabil mascabil mascabil
8085A are integrat un controler de gestionare a cererilor multiple de ntrerupere.