curs prezentare vol 3 microprocesoare

Upload: gabyfilipescu

Post on 06-Jul-2015

45 views

Category:

Documents


1 download

DESCRIPTION

Electronica Microprocesare

TRANSCRIPT

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.