CUVANT INAINTE

Prezenta lucrare trateaza principalele aspecte legate de sistemele cu microprocesoare,
privite din punctul de vedere al inginerului de aplicatie, cu profil electrotehnic. Lucrarea
se adreseaza viitorilor utilizatori ai unor sisteme cu microprocesoare, care vor fi pusi in
situatia de a configura asemenea sisteme, de a implementa aplicatii dedicate, prin
proiectarea interfetelor specifice si elaborarea programelor aferente.

Structura prezentata reprezinta in esenta cursul de “Sisteme cu microprocesoare” predat
de catre autori studentilor de la anul IV ai facultatii de Electrotehnica a Universitatii
“Politehnica” din Bucuresti.

Scopul principal al cartii este de a oferi informatiile si a forma conceptele fundamentale
legate de problematica utilizarii sistemelor microprocesor. Diversitatea tipurilor,
caracteristicilor de lucru si performantelor diverselor familii de microprocesoare, ritmul
extrem de ridicat in care apar noi componente, tehnologii, concepte, impun utilizarea unei
anumite strategii in abordarea acestui subiect. S-a urmarit definirea notiunilor general
valabile pentru toate aceste sisteme, pe baza intelegerii carora inginerul de aplicatie va
putea aprofunda, pentru configuratii concrete, elementele specifice asociate acestor
configuratii.

In capitolul 1, “Introducere”, se face o trecere in revista a istoricului microprocesoarelor,
a evolutiei acestora in cele peste doua decenii scurse de la aparitie, a tehnologiilor,
tipurilor si performantelor acestora. Se definesc sistemele numerice operand in timp real,
si tipul reprezentativ de aplicatie asociat acestora.

Capitolul 2 “Notiuni introductive”, prezinta principalele notiuni legate de aritmetica
numerelor intregi, si a elementelor de logica circuitelor numerice. Aceste elemente sunt
fundamentale pentru intelegerea si studiul sistemelor cu microprocesoare.

Capitolul 3, “Microprocesoare - Concepte generale”, reprezinta o ampla analiza a
conceptelor legate de microprocesoare si de sistemele cu microprocesoare. Se analizeaza
atat microprocesorul, din punct de vedere functional, si al structurii hardware si software
de baza, cat si structura si principiile de configurare a memoriei si interfetelor de intrare-
iesire ale unui sistem microprocesor. Capitolul se incheie cu un exemplu de sistem
microprocesor simplificat, ce implementeaza o aplicatie simpla, dar completa, continand
atat specificatiile de proiectare hardware cat si software necesare.

SISTEME CU MICROPROCESOARE
ii
Capitolul 4 abordeaza prezentarea circuitului INTEL 8086, tip reprezentativ de
microprocesor, atat datorita structurii si caracteristicilor sale hardware si a setului de
instructiuni, cat si a utilizarii pe scara larga in constructia microcalculatoarelor de tip PC.

Capitolul 5, “Implementarea interfetelor de intrare-iesire”, prezinta apecte legate de
implementarea porturilor de uz general de tip numeric sau analogic, cat si a principalelor
tipuri de interfete de intrare-iesire specializate, de tipul porturilor seriale, ceasurilor de
timp real, sau a controlerelor de intrerupere. Se fac exemplificari ce utilizeaza
componente compatibile cu microprocesorul INTEL 8086, schemele si programele
prezentate fiind implementabile pe microcalculatoare de tip PC-AT.

Capitolul 6 “Aplicatii ale sistemelor microprocesor”, incununeaza acest studiu cu
prezentarea unui exemplu complet de proiectare a unui sistem de control discret
implementat cu microprocesor de tip 8086. Pornind de la enuntul temei aplicatiei, dupa o
analiza a structurii, alegere a componentelor si definirii parametrilor acestora, se
proiecteaza structura sistemului de control - atat constructiva - hardware, cat si programul
aferent - software. Furnizarea tuturor detaliilor de proiectare ofera astfel cititorului
posibilitatea de a cunoaste in mod concret principiile pe baza carora trebuie actionat
pentru abordarea unei asemenea problematici.

Autorii spera ca aceasta lucrare sa reprezinte un instrument util pentru intelegerea
problematicii de baza referitoare la utilizarea, configurarea si programarea sistemelor cu
microprocesoare utilizate in aplicatiile industriale. Speram ca gradul de generalitate la
care s-a incercat sa se pastreze prezentarea va fi util prin oferirea de informatii valabile
pentru cea mai mare parte a sistemelor cu microprocesoare existente, si astfel, va oferi un
punct de pornire celor interesati in intelegerea principiilor si in utilizarea cu performante
maxime a unor asemenea sisteme.



CUPRINS

1. INTRODUCERE............................................................................................... 1-1
1.1. MICROPROCESORUL - REPERE GENERALE ................................................................. 1-1
1.2. OBIECTUL CARTII ............................................................................................................. 1-5
2. NOTIUNI INTRODUCTIVE .............................................................................. 2-1
2.1 ARITMETICA NUMERELOR INTREGI................................................................................ 2-1
2.1.1 Aritmetica numerelor intregi, pozitive (fara semn)......................................................... 2-3
2.1.2 Aritmetica numerelor intregi, cu semn........................................................................... 2-4
2.1.3 Aritmetica numerelor zecimale codificate binar (BCD).................................................. 2-6
2.1.4 Aritmetica numerelor fractionare ................................................................................... 2-6
2.2 ELEMENTE DE LOGICA CIRCUITELOR NUMERICE....................................................... 2-6
2.2.1 Logica booleana ............................................................................................................ 2-7
2.2.2 Porti logice..................................................................................................................... 2-8
2.2.3 Inversoare...................................................................................................................... 2-9
2.2.4 Reprezentari logice alternative...................................................................................... 2-9
2.2.5 Poarta tri-state............................................................................................................. 2-10
2.2.6 Bistabilul de tip D......................................................................................................... 2-10
2.2.7 Registre. ...................................................................................................................... 2-12
2.2.8 Multiplexoare ............................................................................................................... 2-14
2.2.9 Demultiplexoare si decodificatoare ............................................................................. 2-15
2.2.10 Circuite logice programabile (PLD) ............................................................................. 2-16
3. MICROPROCESOARE - CONCEPTE GENERALE........................................ 3-1
3.1 MICROPROCESORUL --- PREZENTARE FUNCTIONALA ............................................... 3-2
3.1.1 Functiile de baza ale microprocesorului ........................................................................ 3-3
3.1.2 Aspectul temporal - secvential ...................................................................................... 3-6
3.1.3 Reprezentarea informatiei ............................................................................................. 3-6
3.1.4 Memorarea informatiei .................................................................................................. 3-7
3.1.5 Conceptul de program................................................................................................... 3-9
3.2 CONCEPTUL DE MAGISTRALA......................................................................................... 3-9
3.2.1 Magistrala de date....................................................................................................... 3-11
3.2.2 Magistrala de adrese................................................................................................... 3-11
3.2.3 Magistrala de control ................................................................................................... 3-12
3.3 MICROPROCESORUL - PREZENTARE HARDWARE .................................................... 3-13
3.3.1 Functia de control ........................................................................................................ 3-13
3.3.2 Functia de memorare .................................................................................................. 3-22
3.3.3 Functia aritmetico-logica ............................................................................................. 3-25
3.3.4 Functia de intrare/iesire. .............................................................................................. 3-28
3.3.5 Microprogramarea....................................................................................................... 3-29
3.4 MEMORIA INTERNA A SISTEMULUI MICROCALCULATOR......................................... 3-31
BAZELE MICROPROCESOARELOR
iv
3.4.1 Memorii RAM............................................................................................................... 3-32
3.4.2 Memorii ROM.............................................................................................................. 3-40
3.4.3 Organizarea tipica a memoriei sistemului microprocesor ........................................... 3-43
3.5 SOFTWARE-UL SISTEMULUI MICROPROCESOR-ASPECTE GENERALE ................. 3-44
3.5.1 Consideratii de baza.................................................................................................... 3-45
3.5.2 Moduri de adresare ..................................................................................................... 3-46
3.5.3 Setul de instructiuni al microprocesorului .................................................................... 3-54
3.5.4 Utilizarea stivei programului ........................................................................................ 3-67
3.5.5 Limbajul de asamblare ................................................................................................ 3-70
3.5.6 Metodologia elaborarii programelor............................................................................. 3-73
3.6 ELEMENTE DE INTRARE/IESIRE ALE SISTEMELOR MICROPROCESOR.................. 3-75
3.6.1 Operatii I/E efectuate sub controlul programului ......................................................... 3-77
3.6.2 Operatii de intrare/iesire efectuate prin intreruperi ...................................................... 3-82
3.6.3 Operatii de I/E efectuate prin acces direct la memorie................................................ 3-87
3.7 SISTEM MICROPROCESOR --- EXEMPLU ..................................................................... 3-89
3.7.1 Structura hardware a sistemului .................................................................................. 3-89
3.7.2 Structura software a sistemului ................................................................................... 3-93
3.7.3 Concluzii ..................................................................................................................... 3-97
4. MICROPROCESORUL INTEL 8086 ............................................................... 4-1
4.1 ARHITECTURA PROCESORULUI ...................................................................................... 4-2
4.1.1 EU — Unitatea de executie ........................................................................................... 4-3
4.1.2 BIU — Unitatea de interfata cu magistrala.................................................................... 4-4
4.1.3 Registrele de uz general................................................................................................ 4-4
4.1.4 Registrele de segment .................................................................................................. 4-6
4.1.5 Registrul pointerului de instructiuni................................................................................ 4-6
4.1.6 Indicatorii de conditie..................................................................................................... 4-6
4.2 ORGANIZAREA MEMORIEI ................................................................................................ 4-8
4.2.1 Segmentarea memoriei ................................................................................................. 4-9
4.2.2 Generarea adresei fizice ............................................................................................. 4-10
4.2.3 Stiva............................................................................................................................. 4-12
4.3 ORGANIZAREA SPATIULUI DE INTRARE/IESIRE.......................................................... 4-15
4.3.1 Spatiul de intrare/iesire propriu-zis.............................................................................. 4-15
4.3.2 Porturile de I/E plasate in spatiul de memorie............................................................. 4-15
4.4 SPECIFICATII HARDWARE .............................................................................................. 4-15
4.4.1 Definirea pinilor............................................................................................................ 4-15
4.4.2 Functionarea magistralei multiplexate......................................................................... 4-17
4.4.3 Circuitul de ceas.......................................................................................................... 4-23
4.4.4 Modul minim/maxim. Controlerul de magistrala 8288................................................. 4-24
4.4.5 Selectia memoriei ........................................................................................................ 4-29
4.4.6 Selectia si interfatarea porturilor de intrare/iesire........................................................ 4-32
4.5 Sistemul de intreruperi..................................................................................................... 4-34
4.5.1 Sursele de generare a intreruperilor............................................................................ 4-34
4.5.2 Vectorii de intrerupere ................................................................................................. 4-35
4.5.3 Intreruperile externe .................................................................................................... 4-37
4.5.4 Intreruperile interne ..................................................................................................... 4-40
4.5.5 Subrutina de tratare a intreruperii ................................................................................ 4-41
CUPRINS
v
5. IMPLEMENTAREA INTERFETELOR DE INTRARE / IESIRE........................ 5-1
5.1 IMPLEMENTAREA PORTURILOR DE INTRARE-IESIRE NUMERICE ............................. 5-1
5.1.1 Consideratii generale privind porturile de I/E numerice................................................. 5-1
5.1.2 Exemplu de schema de porturi de I/E numerice ........................................................... 5-2
5.1.3 Exemple de programarea porturilor de I/E numerice .................................................... 5-6
5.2 IMPLEMENTAREA PORTURILOR DE INTRARE-IESIRE ANALOGICE........................... 5-7
5.2.1 Implementarea interfetei convertorului analog-digital.................................................... 5-7
5.2.2 Implementarea interfetei convertorului digital-analog.................................................... 5-8
5.3 PORTURI SPECIALIZATE – INTERFETE SERIALE........................................................ 5-10
5.3.1 Interfete seriale - notiuni generale............................................................................... 5-10
5.3.2 Interfata seriala INTEL 8251 ....................................................................................... 5-13
5.3.3 Porturile de comunicatie seriala la calculatoarele de tip PC-AT.................................. 5-15
5.3.4 Exemplu de programare a portului serial COM2......................................................... 5-17
5.4 PORTURI SPECIALIZATE – CEASURI DE TIMP REAL .................................................. 5-18
5.4.1 Ceasuri programabile – notiuni generale..................................................................... 5-18
5.4.2 Ceasul programabil INTEL 8253................................................................................. 5-19
5.4.3 Ceasurile programabile la calculatoarele de tip PC-AT............................................... 5-22
5.4.4 Exemplu de utilizare a ceasurilor programabile la calculatoarele de tip IBM-PC........ 5-24
5.5 PORTURI SPECIALIZATE – CONTROLERE DE INTRERUPERI .................................... 5-28
5.5.1 Programarea controlerului de intreruperi 8259A ......................................................... 5-28
5.5.2 Tratarea intreruperilor externe mascabile in microcalculatoarele PC-AT.................... 5-30
5.5.3 Exemple de programe de tratarea intreruperilor ......................................................... 5-31
6 APLICATII ALE SISTEMELOR MICROPROCESOR...................................... 6-1
6.1 PERFORMANTELE IMPUSE SISTEMULUI DE CONTROL NUMERIC. ALEGEREA
CONFIGURATIEI SISTEMULUI. ........................................................................................................ 6-3
6.1.1 Sarcina .......................................................................................................................... 6-4
6.1.2 Ciclul de miscare........................................................................................................... 6-5
6.1.3 Performantele de regim dinamic ................................................................................... 6-5
6.1.4 Precizia sistemului reglat............................................................................................... 6-6
6.1.5 Viteza de lucru a sistemului de control .......................................................................... 6-6
6.1.6 Precizia traductoarelor................................................................................................... 6-6
6.1.7 Precizia de calcul........................................................................................................... 6-7
6.1.8 Alegerea componentelor de forta.................................................................................. 6-7
6.1.9 Alegerea traductoarelor ................................................................................................. 6-9
6.1.10 Alegerea tipului de schema de reglare........................................................................ 6-11
6.1.11 Alegerea microprocesorului......................................................................................... 6-11
6.2 PROIECTAREA SCHEMEI DE CONTROL. ASPECTE DE PRINCIPIU. .......................... 6-12
6.2.1 Obtinerea modelului sistemului ................................................................................... 6-13
6.2.2 Discretizarea modelului sistemului .............................................................................. 6-14
6.2.3 Proiectarea controlerului discret .................................................................................. 6-15
6.3 PROIECTAREA STRUCTURII HARDWARE A SISTEMULUI ......................................... 6-17
6.3.1 Memoria PROM........................................................................................................... 6-20
6.3.2 Memoria RAM.............................................................................................................. 6-22
6.3.3 Porturile de intrare-iesire ............................................................................................. 6-24
6.4 PROIECTAREA STRUCTURII SOFTWARE A SISTEMULUI........................................... 6-37
BAZELE MICROPROCESOARELOR
vi
6.4.1 Specificatiile de programare ale resurselor sistemului ................................................ 6-37
6.4.2 Organizarea programului............................................................................................. 6-41
6.4.3 Prezentarea programului implementat ........................................................................ 6-41
6.4.4 Concluzii ...................................................................................................................... 6-51







1. INTRODUCERE



1.1. MICROPROCESORUL - REPERE GENERALE

Printre progresele tehnologiei electronice, inregistrate in ultimele decenii, aparitia
microprocesoarelor a reprezentat un moment de cotitura, atat in ceea ce priveste plaja practic
nelimitata a domeniilor de aplicatie a acestor componente revolutionare din punct de vedere
tehnic si tehnologic, cat si in ceea ce priveste conceptia si realizarea (tehnicile de analiza,
proiectare, sintetizare si testare) a sistemelor cu microprocesor. Un nou mod de abordare a
controlului proceselor industriale, cu ajutorul sistemelor numerice, devenea posibil cu acest
prilej.

Incepand modest, cu microprocesoare de 4 biti, de viteza relativ redusa, cu costuri ridicate si
dispunand de relativ putine elemente de dezvoltare a aplicatiilor, piata microprocesoarelor a
inregistrat progrese de-a dreptul inimaginabile in urma cu cativa ani, evoluand intr-o progresie
exponentiala.

Obtinerea "calculatoarelor pe un cip", cu performante de-a dreptul spectaculoase, s-a facut
extrem de rapid, iar estimarile pentru urmatorii ani prevad o expansiune a sistemelor
microprocesor, ce vor depasi, in curand, ca numar de sisteme implementate in diverse
aplicatii, populatia globului pamantesc.

Si din punctul de vedere al caracteristicilor putere de calcul / cost / nivel de sofisticare,
microprocesoarele si microcalculatoarele (calculatoarele care utilizeaza ca unitate centrala un
microprocesor), se situeaza pe pozitii deosebit de avantajate, comparativ cu celelalte tipuri
"clasice", de calculatoare. Figura 1.1. prezinta sintetic unele dintre aceste caracteristici pentru
diversele tipuri de echipamente de calcul aflate in uz. Se remarca faptul ca microcalculatoarele
si microprocesoarele reprezinta elemente deosebit de atractive din punctele de vedere al
raportului performanta/pret, si nivel de sofisticare/pret, in comparatie cu celelalte tipuri de
asemenea echipamente.

Termenul de "microprocesor" a fost introdus in 1972 de catre firma americana INTEL,
realizatoarea primului microprocesor de 4 biti, in anul 1971. Curand, microprocesoare de 8,
16 si 32 de biti au fost produse (in 1972, 1974 si 1981, respectiv). Numarul de componente pe
cip a crescut de peste 500 de ori, frecventa de lucru a circuitelor de peste 100 de ori, in esenta
capacitatea globala a acestor sisteme s-a majorat cu peste trei ordine de marime.

BAZELE MICROPROCESOARELOR
1-2
Logica cablata
Calculatoareelementare
Microprocesoare
Microcalculatoare
Minicalculatoare
Midicalculatoare
Calculatoare de mare
performanta (mainframe)
putere de calcul
numar de biti
n
cost
lungime cuvint
minima maxima
grad de
sofisticare
foarte
ridicat
scazut
2 4 6
8
4 8
16
32 64

Fig.1.1. Compararea costului, puterii de calcul si capacitatii diverselor calculatoare numerice

In primul deceniu de existenta, microprocesoarele au evoluat de la structuri relativ elementare,
cu performante limitate, la situatia de a se impune treptat in fruntea sistemelor de calcul de
larga raspandire, atat din punct de vedere al puterii de calcul, cat si al structurii arhitecturale,
deosebit de sofisticate. Primele tipuri de microprocesoare indeplineau doar functiile de baza
ale sistemului, necesitand suplimentar o gama intreaga de circuite suplimentare pentru
generarea semnalelor de temporizare, pentru memorarea datelor si a programelor, pentru
interfatarea cu perifericele sistemului si cu procesul controlat, etc. Utilizarea
microprocesoarelor a fost orientata initial cu predilectie ca microcontrolere in structuri
dedicate, pentru aplicatii de control al proceselor. Setul de instructiuni al acestora era relativ
limitat, iar programarea se facea direct in cod masina. Dezvoltarea ulterioara a arhitecturilor
evoluate, aparitia limbajelor de programare de nivel inalt, deosebit de performante, cresterea
puterii de calcul si a flexibilitatii, aparitia si expansiunea sistemelor de dezvoltare, au largit
considerabil aria de aplicatii ale microprocesoarelor.

Din punctul de vedere al tehnologiei de fabricatie, s-a pornit initial de la tehnologia pMOS.
Practic, toate tehnologiile disponibile de fabricare a circuitelor semiconductoare au fost testate
de-a lungul anilor (CMOS, NMOS, bipolare, I
2
L). Sunt preferate circuitele realizate in
tehnologii MOS, datorita densitatii mai mari de tranzistoare pe cip, ce se pot obtine in aceste
tehnologii. Dintre acestea, tehnologia NMOS a fost cea mai utilizata, atit datorita densitatii
mari cat si a vitezei ridicate de comutatie. (Firma INTEL a denumit aceasta tehnologie HMOS
- H ↔ high performance = mare performanta). Astfel, circuitul INTEL 8086, produs in 1978,
continea 29000 de tranzistoare; nu mult mai tarziu, in 1982, era produs circuitul INTEL
80286, cu un numar de 130000 de tranzistoare pe cip. Aparut in 1988, microprocesorul 80486
a ajuns la peste 2000000 tranzistoare pe cip. Progrese tot mai mari s-au facut in tehnologia
INTRODUCERE
1-3
CMOS, care prezinta avantajul de a avea viteze superioare, consum redus de putere, si o mai
mare imunitate la zgomot.

Unul dintre cele mai importante criterii, pentru evaluarea si selectia microprocesoarelor, este
marimea cuvantului de date al acestora. Cuvinte de date mai mari implica evident o putere de
calcul si adresabilitate sporite. Actualmente, microprocesoarele de 16 si 32 biti domina piata
de microcalculatoare, desi o gama relativ importanta de aplicatii, in domeniul controlului
proceselor industriale, este implementata cu microprocesoare de putere mai mica (uzual,
microprocesoare de 8 biti), suficiente ca putere de calcul si capacitati de adresare, si
competitive ca pret de cost.

Progrese importante s-au facut si in domeniul "microprogramarii". Procesoarele
microprogramate, (spre deosebire de microprocesoarele "clasice", cu structura fixa si set de
instructiuni impus de fabricant), permit (desi la o viteza relativ mai redusa), obtinerea unor
structuri mult mai flexibile, in ceea ce priveste realizarea si modificarea eventuala a setului de
instructiuni, de catre utilizator, adaptate specific aplicatiei abordate. Aceste instructiuni
(macro-instructiuni), sunt definite pe baza unui set restrans de microinstructiuni, de catre
realizatorul sistemului. Executia programelor se face astfel in doua etape succesive (doua
nivele de control). Aceasta reduce intru-catva viteza globala a sistemului.

Progresele inregistrate din punct de vedere tehnologic au facut ca, practic, densitatea
circuitelor integrate de tip VLSI
1
ce includ microprocesoarele, sa se dubleze la fiecare doi ani.
Avantajul imediat al acestui fapt consta in posibilitatea de a se implementa seturi de
instructiuni mult imbunatatite si extinse. Exista astfel microprocesoare in care o singura
instructiune controleaza transferul unor blocuri de date din memorie, sau opereaza cu mai
multe registre simultan. De multe ori, unele instructiuni sunt apropiate de instructiuni in
limbaje de nivel inalt, usurand compilarea deosebit de eficienta a programelor, si
implementand direct o gama de functii uzual realizate prin programare (software). Cresterea
performantelor si a complexitatii acestor circuite s-a facut bineinteles cu pretul unui efort de
proiectare sensibil crescut. Astfel, acesta a crescut de la 1 om-an, la peste 100 om-an, pentru
circuitele cele mai avansate.

In decursul anilor, a crescut sensibil si capacitatea de adresare a microprocesoarelor.
Numarul de moduri auxiliare de adresare a crescut deasemenea. Multe firme ofera circuite
specializate pentru controlul si coordonarea functionarii memoriei sistemului. Totodata, firme
ca INTEL includ in circuitul microprocesorului si functiile de protectie a accesului si control
al memoriei. Utilizarea memoriei virtuale permite adresarea unor spatii de ordinul
gigaoctetilor. Este posibila astfel executia programelor foarte mari, executia "simultana" a mai
multor programe (multitasking), lucrul "simultan" al mai multor utilizatori (multiuser).
Asemenea sisteme utilizeaza suporturi de memorie exterioara (disc), pentru memorarea
temporara a programului si a datelor. Un concept deasemenea tot mai utilizat este asa-numita
memorie cache, relativ mai redusa volumic, dar de viteze foarte mari, in care se
inmagazineaza programul sau datele, extrase din memoria sistemului, sau de pe disc, marind
sensibil, per global, viteza de lucru a sistemului, si deci performantele acestuia.

1
VLSI - Very Large Scale Integrated = Integrare pe scara foarte larga
BAZELE MICROPROCESOARELOR
1-4

Microprocesoarele difera sensibil in ceea ce priveste capacitatile de memorare si manipulare
a diverselor tipuri de date. Daca reprezentarea si manipularea informatiilor sub forma octetilor
si a cuvintelor de date este uzuala la toate tipurile de microprocesoare, alte tipuri de operatii,
ca de exemplu cu informatii reprezentate pe biti, BCD
1
, reale (virgula mobila), texte (siruri de
caractere), etc., nu sunt intotdeauna direct acceptate. De exemplu, date manipulate ca biti
individuali nu sunt acceptate de catre microprocesorul 8086, desi sunt foarte utilizate in
aplicatiile de proces. Cu cat accepta o gama mai extinsa de tipuri de date, microprocesorul
devine mai potrivit unei game tot mai largi de posibile aplicatii. Din nefericire aceasta implica
o structura complexa a sistemului, si utilizarea unui numar tot mai mare de componente.
Uneori, tipuri de date suplimentare se pot folosi doar prin utilizarea unor circuite auxiliare. De
exemplu, circuitul INTEL 8087, coprocesor matematic compatibil cu microprocesorul 8086,
permite implementarea calculelor in virgula mobila in sistemele respective. Diversitatea
tipurilor de microprocesoare si a coprocesoarelor aferente, produse de diferite firme, a impus
standardizarea operatiilor aritmetice in virgula mobila (standardul IEEE P754), acceptata de
catre microprocesoarele sau coprocesoarele aritmetice aferente.

Revolutia microprocesoarelor este generata de tendinta de a se implementa toate
componentele unui calculator cu ajutorul unui numar relativ redus de cipuri. Orice calculator,
indiferent de marime, incorporeaza trei componente de baza: unitatea centrala de prelucrare
(CPU
2
), continand elementele de calcule aritmetice, logice si functiile de control; memoria
(RAM - pentru citire/scriere, si ROM - doar citire), si interfetele de intrare/iesire pentru
controlul periferiei calculatorului. Odata cu progresele tehnologice inregistrate, tot mai multe
componente pot fi integrate pe acelasi cip, si astfel tot mai multe functii auxiliare se pot
implementa pe cipul microprocesorului insusi. Se obtin astfel calculatoare construite cu foarte
putine cipuri. Un microcalculator combina un microprocesor cu memorie si capacitati de
intrare/iesire pe unul sau mai multe cipuri. Microcalculatoarele pe un singur cip constituie
un subset important al microprocesoarelor, in care toate functiile, inclusiv memoria, sunt
implementate pe acelasi cip. Evident, aparitia acestor tipuri de microcalculatoare este
intotdeauna relativ intarziata fata de aparitia microprocesoarelor cu o putere de calcul similara
(de exemplu, primul microcalculator de 8 biti pe un cip, INTEL 8048, a fost produs in anul
1976, la patru ani dupa producerea primului microprocesor de 8 biti, INTEL 8008).

Deoarece aceste circuite se produc in cantitati deosebit de mari, este necesara o proiectare
foarte atenta, optimizandu-se arhitectura propusa, memoria sistemului, setul de instructiuni,
tehnicile de adresare a memoriei, si alte restrictii de proiectare, legate de parametrii de
performanta, executie, etc. Peste 4/5 din tranzistoarele cipului tind a fi utilizate pentru functii
de memorie. Desi au performante foarte bune, aceste circuite sunt inca departe de
performantele de calcul ale supercalculatoarelor de tipul CRAY-1.

La cealalta extremitate a spectrului se afla aplicatiile ce necesita o putere de calcul foarte
mare, sau precizie sporita, ce nu se pot atinge cu microprocesoarele "clasice". Utilizarea
procesoarelor bit-slice permite legarea mai multor cipuri modulare identice in paralel, pana la

1
BCD - Binary Coded Decimal = zecimal codat binar
2
CPU - Central Processing Unit = unitate centrala de prelucrare
INTRODUCERE
1-5
obtinerea structurii cu o precizie corespunzatoare. Dupa cum s-a precizat, posibilitatea de a
dezvolta si un macro-set de instructiuni, specific unei aplicatii date, confera un avantaj
suplimentar la utilizarea acestor structuri.

O tot mai mare amploare o au in ultima vreme procesoarele specializate, de tipul
procesoarelor DSP
1
, cu capacitati de calcul deosebite (implementare specifica de filtre
numerice, transformate Fourier - FFT, corelatii, convolutii, etc.), in ceea ce priveste
prelucrarea numerica a semnalelor. Uzual, aceste microprocesoare sunt dotate cu elementele
de interfatare necesare, inclusiv convertoare A/D si D/A pentru conectarea la procese
analogice.

O evolutie interesanta au avut-o si transputerele, procesoare cu structuri pretabile la realizarea
de calculatoare cu procesare paralela, de performante deosebit de ridicate, mai ales in ceea ce
privesc performantele de calcul obtinute.

In fine, trebuiesc mentionate circuitele integrate de tip VLSI, proiectate si realizate direct
pentru o aplicatie data (asa numitele circuite de tip ASIC
2
). S-a ajuns la solutii economic
convenabile de a se proiecta, pe un sistem microcalculator de putere sporita (asa numitele
workstations
3
), utilizand pachete puternice de programe de proiectare (CAD
4
), structura
circuitului dorit. Se porneste de la caracteristicile functionale finale dorite ale circuitului.
Proiectantul trebuie sa cunoasca cerintele produsului final, si sa il sintetizeze utilizand ca
elemente componente "blocuri" functionale predefinite, puse la dispozitia sa de catre
programul de proiectare. Dupa definirea structurii functionale a sistemului, se simuleaza
functionarea si se modifica (daca este cazul) structura circuitului, pana la obtinerea
comportarii si performantelor dorite. Apoi, se produc efectiv circuitele respective, si se
testeaza "pe viu" functionarea acestora. Acest mod de proiectare ofera avantajul deosebit de a
se muta conceperea circuitului, la virtualul utilizator, care poate produce cel mai adecvat
procesor pentru aplicatia data. Bineinteles, economic vorbind, acest mod de producere a
circuitelor integrate specializate (inclusiv procesoare), este avantajos doar pentru cantitati
relativ mari de circuite de un tip dat. Durata proiectarii si realizarii circuitelor in acest mod
scade sensibil.

Concluzionand, putem remarca extrema diversitate de aspecte ridicate de caracterizarea
circuitelor microprocesor existente. Paleta deosebit de larga de performante, caracteristici,
structuri si nu in ultimul rand, de preturi de cost, poate pune probleme serioase in fata
utilizatorului, a proiectantului de sistem, care trebuie sa decida, alegand solutia optima,
conform unui criteriu complex de evaluare a sistemului.

1.2. OBIECTUL CARTII


1
DSP - Digital Signal Processing = prelucrarea numerica a semnalelor
2
ASIC - Application Specific Integrated Circuit = circuit integrat specific unei aplicatii date
3
workstations = statii de lucru
4
CAD - Computer Aided Design = proiectare asistata de calculator
BAZELE MICROPROCESOARELOR
1-6
Pe baza considerentelor prezentate in paragraful anterior, putem totusi conclude ca "filozofia"
generala a realizarii sistemelor microcalculator, componentele tipice, functiile de baza, sunt
comune tuturor tipurilor de microprocesoare, indiferent de firma producatoare si de generatia
de circuite careia ii apartine microprocesorul.
Plecand de la aceste premize, si totodata luand in considerare faptul ca, pentru acest volum,
punctul de pornire, cat si cel de sosire in studiul microprocesoarelor, este cel al aplicatiilor
industriale, si cu precadere cel al aplicatiilor in echipamentele electrice (actionari electrice,
sisteme de achizitii de date, standuri de masura, diagnoza, control, etc.), prezentul volum se
doreste o incercare de a pune bazele conceptuale ale proiectarii sistemelor cu
microprocesoare, de a fundamenta principalele aspecte si probleme legate de structura
constructiva (hardware) si programele implementate (software) in aceste sisteme.

Intr-un mod oarecum general, acoperind practic o gama extrem de larga de cazuri, figura 1.2
prezinta structura de principiu a unui asemenea sistem, controlat cu ajutorul unui
microcalculator.
Amplificator
analogic
intrare
sistem
Sistem fizic
(proces)
Traductor si
adaptare semnal
iesire
(semnal analogic)
date prelucrate
(variatie continua)
marimea
controlata
Microcalculator
Port
de
iesire
Port
de
intrare
Algoritm
numeric
sau logic
Convertor
A/D
Convertor
D/A
interfata
iesire sistem - intrare calculator
interfata
iesire calculator - intrare sistem
intrari comenzi de control
si iesiri de stare ale microcalculatorului

In instalatiile conduse cu sisteme microprocesor, de acest tip, operatiile se desfasoara
continuu, ciclic, sistemul de calcul efectuand operatii de masurare a datelor, calcule, si dand
comenzi in mod succesiv. Asemenea aplicatii ne vor interesa in cadrul cursului de fata, cu
precadere. Ele sunt denumite aplicatii in timp real, si au specific faptul ca echipamentul
controleaza functionarea unui proces, calculele facandu-se in timpul controlarii acestei
functionari. In esenta, orice aplicatie in timp real se va desfasura ca in figura 1.3.

In mod corespunzator, secventializarea operatiilor din sistem va determina o succesiune a
operatiilor ca in figura 1.4.

Trebuie remarcata deosebirea fundamentala fata de sistemele de calcul "clasice", utilizate doar
pentru calcule, in care desfasurarea acestora nu este legata si nici conditionata in vre-un fel de
evenimentele exterioare (evolutia procesului condus, nu trebuie sa scape de sub controlul
Figura 1.2. Structura de principiu a unui sistem de control numeric
INTRODUCERE
1-7
sistemului numeric, in cazul aplicatiilor in timp real). Evident, toate aceste aspecte vor implica
aparitia unor abordari si tratari specifice ale problemelor ce apar, pentru sistemele de acest gen
(pentru controlul proceselor).

initializari
conversie
date
citiredate
executie
program
scriere
date
start
t0
t1
t2
t3
t4
t5
1
2
3
4
5
Fig. 1.4. Secventializarea operatiilor intr-o
aplicatie de timp real


Ca si in alte domenii ale proiectarii
ingineresti, fazele metodologice si de
dezvoltare ale unui asemenea sistem sunt
dictate cu precadere de catre specificatiile
referitoare la performantele si
caracteristicile produsului final. Pentru
sistemele cu microprocesoare, un element
caracteristic este reprezentat de catre cele
doua elemente interconditionate -
proiectarea structurii constructive -
hardware, si proiectarea programelor -
software. Datorita legaturii foarte stranse
dintre structurile hardware si software, cele doua componente ale proiectarii interactioneaza
permanent. Astfel, conceperea acestor sisteme este ceva mai complexa decat in cazul
sistemelor logice "clasice". Activitatile cheie si fazele de dezvoltare ale unui produs bazat pe
utilizarea unui microprocesor sunt prezentate in figura 1.5.

Prezentul volum va incerca acoperirea principalelor aspecte legate de conceptele, notiunile,
structura si caracteristicile functionale ale sistemelor microprocesor, atat in general cat si prin
concretizare pentru anumite tipuri de microprocesoare si circuitele aferente. Se va insista pe
aspectele concrete, aplicative, si se vor exemplifica unele implementari de structuri
microcalculator de proces, pentru aplicatii in echipamentele electrice, dupa cum s-a
mentionat.

Fig. 1.3. Structura temporala a unei aplicatii
in timp real
Initializare parametri si definire porturi I/O
Achizitie date din porturi de intrare
(citire - "READ")
Executie program specific
(prelucrare date de intrare,
conform algoritmului numeric)
Transmitere date prelucrate
prin port de iesire
(scriere - "WRITE")
Programul
trebuie reluat
Lansare alt
program specific
STOP
BAZELE MICROPROCESOARELOR
1-8

caracteristici
produs
teorie proiectare
disponibil
dezvoltare
proprietati
elemente componente
configurare hardware
structura software
adaptare
productie
evaluare a
performantelor
faza intrare proiectare si productie faza iesire


Fig. 1.5. Etapele proiectarii si producerii unui sistem cu microprocesor





2. NOTIUNI INTRODUCTIVE


In prezentarea sistemelor cu microprocesoare, anumite elemente de baza sunt folosite cu
precadere, si este necesara cunoasterea lor, ca un punct de pornire, ca un bagaj minim de
cunostinte, pentru intelegerea aspectelor legate de aceste sisteme (structura, functionalitate,
principii de proiectare si realizare). In acest sens, doua categorii de notiuni de baza trebuiesc
cunoscute, ai anume elemente de aritmetica calculatoarelor, si elemente de logica, corelate cu
tipurile uzuale de circuite logice TTL (circuite integrate SSI
1
- porti, bistabile, etc., cat si
circuite integrate MSI
2
- registre, multiplexoare, decodificatoare, circuite PLD
3
, etc.).

Prezentul paragraf va face o trecere in revista a celor mai importante aspecte relativ la aceste
elemente.


2.1 ARITMETICA NUMERELOR INTREGI

Un sistem de calcul cu microprocesor trebuie sa aiba anumite capacitati de calcul, putand sa
implementeze cele patru operatii aritmetice fundamentale, de adunare, scadere, inmultire si
impartire. Daca fiinta omeneasca efectueaza aceste operatii in sistemul zecimal de numarare,
un microprocesor este prin structura sa o masina binara, toate informatiile sunt memorate in
cod binar, iar operatiile ce se desfasoara in ea se efectueaza deasemenea in sistemul binar de
numarare. Deasemenea, sistemele hexazecimal si (uneori) octal, sunt utilizate la listarea
programelor, astfel incat inginerul ce doreste proiectarea si/sau utilizarea unei asemenea
masini trebuie sa fie familiarizat cu o varietate de sisteme de numarare. Totodata, interfatarea
cu utilizatorul uman presupune adeseori preluarea de date in format zecimal, (tastaturi,
console) si, dupa prelucrare, prezentarea rezultatelor deasemenea zecimal (afisaje, listinguri,
etc.). Astfel, sunt necesare uneori operatii in cod BCD in interiorul microprocesorului, si deci
sunt necesare tehnici de conversie binar-BCD si reciproc.

Sub o forma generala, reamintim ca un numar reprezentat in baza b de numarare, avand n
cifre supraunitare (a
n-1
, a
n-2
, ... , a
0
), si m cifre subunitare (a
-1
, a
-2
, ... , a
-m
), va avea
valoarea in baza 10 data de relatia

(N)
10
= a
n-1
⋅b
n-1
+ a
n-2
⋅b
n-2
+ ... + a
1
⋅b
1
+ a
0
⋅b
0
+ a
-1
⋅b
-1
+ ... + a
-m
⋅b
-m


1
SSI - Simple Scale Integrated = integrate pe scara simpla
2
MSI - Medium Scale Integrated = integrate pe scara medie
3
PLD - Programable Logic Device = circuit logic programabil
BAZELE MICROPROCESOARELOR
2-2
Astfel, de exemplu, numarul binar (1011.11)
2
va avea in baza 10 valoarea

(N)
10
= 1⋅2
3
+ 0⋅2
2
+ 1⋅2
1
+ 1⋅2
0
+ 1⋅2
-1
+ 1⋅2
-2
= 8 + 0 + 2 + 0.5 + 0.25 = 11.75
10

Deoarece toate masinile de calcul existente opereaza cu elemente de circuit cu doua stari (de
tipul tranzistor in stare saturat sau blocat, avand la iesire doua nivele de tensiune continua
distincte - tipic 0V, respectiv 5V), sistemul binar de reprezentare a informatiei este unicul
prezent in toate aceste sisteme de calcul). Starea de saturare a tranzistorului (0 ÷ 0.4) V, este
asociata valorii binare 0, iar starea de blocare (2.4 ÷ 5) V, este asociata valorii binare 1.

Metodologia practica a conversiei numerelor dintr-o baza de numarare in alta este presupusa
cunoscuta, si nu se mai prezinta aici. Trebuie totusi mentionate ca fiind deosebit de importante
cazurile, uzual utilizate in cadrul sistemelor numerice, dupa cum s-a mentionat, de conversie
directa intre sistemele binar si octal, respectiv binar - hexazecimal. Aceste conversii sunt
prezentate tabelat in figurile 2.1, si respectiv 2.2.


Conversia dintr-o baza intr-alta in acest mod se va face utilizand direct reprezentarile din cele
doua tabele. Astfel, de exemplu:
Conversia binar → octal se efectueaza prin gruparea a
cate trei cifre binare, incepand din dreapta numarului, si
inlocuire cu echivalentul octal corespunzator.


Reciproc, pentru conversia octal → binar, se
procedeaza in mod similar:
Se inlocuieste fiecare cifra octala cu cei trei biti din
codul binar corespunzator.

La fel se procedeaza si pentru conversiile hexazecimal ↔ binar:

( 1011 | 1010 | 0011 |0010 )
2
( 4 F C 2 )
16

↓ ↓ ↓ ↓ respectiv ↓ ↓ ↓ ↓
( B A 3 2 )
16
( 0100 1111 1100 0010 )
2

Hexa Binar
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
Hexa Binar
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
Octal Binar
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
Fig.2.1. Conversia octal - binar Fig. 2.2. Conversia hexazecimal - binar
( 110 | 001 | 011 | 100 )
2

↓ ↓ ↓ ↓
( 6 1 3 4 )
8

( 4 3 2 7 )
8

↓ ↓ ↓ ↓
( 100 011 010 111 )
2

NOTIUNI INTRODUCTIVE
2-3
In interiorul masinilor numerice, numerele sunt reprezentate prin grupe de cifre binare. Aceste
grupe de cifre binare sunt numite cuvinte. Lungimea cuvintelor pe care le poate prelucra un
microprocesor constituie o caracteristica importanta a acestuia, reprezentand, dupa cum s-a
mai precizat, un indiciu pretios in aprecierea capacitatii de calcul a sistemului. Sunt tipice
cuvinte cu o lungime de 4, 8, 16 sau 32 de biti. Un cuvant de 8 biti se mai numeste si octet
sau, in terminologia tehnica consacrata, byte. Cuvintele microprocesoarelor sunt memorate in
registre. Un registru poate fi implementat cu un sir de circuite bistabile, fiecare dintre acestea
putand fi considerat ca un bit de memorie. Din punct de vedere functional, o masina numerica
poate fi privita ca un sistem format din registre, iar datele sunt transferate dintr-un registru in
altul in cursul efectuarii operatiilor aritmetice si logice. Acesta este evident un mod simplificat
de a prezenta lucrurile, dar poate da o imagine de baza asupra a ceea ce se intampla.

In ceea ce priveste operatiile aritmetice de baza, acestea se bazeaza pe regulile specifice,
caracteristice operatiilor respective. Regulile depind de tipul numerelor: intregi fara semn;
intregi cu semn; numere in reprezentare BCD; numere fractionare.

Nu este locul si nici cazul de a prezenta algoritmii specifici de implementare a acestor
operatii, pentru fiecare caz in parte. Se vor face doar unele consideratii si remarci, legate de
specificul implementarii acestor operatii in sistemele numerice.


2.1.1 Aritmetica numerelor intregi, pozitive (fara semn).

In cazul adunarii (sau scaderii, echivalenta in cazul reprezentarii numerelor in complement
fata de 2), trebuie remarcata problema aparitiei depasirilor (overflow), sau a imprumuturilor
(borrow), daca suma sau diferenta nu este reprezentabila intr-un cuvant de date (de exemplu,
suma a doua numere reprezentate pe 8 biti, care adunate dau un rezultat peste 256, va necesita
9 biti pentru reprezentare corecta). Data fiind lungimea finita a cuvintelor de date in
microprocesor, operatia de adunare sau de scadere va trebui sa semnalizeze suplimentar
efectuarii calculului, aparitia acestui bit de depasire; altfel, daca rezultatul este considerat pe 8
biti, se pierde chiar bitul cel mai semnificativ, alterandu-se rezultatele si obtinandu-se cu totul
alte valori decat cele corecte. De exemplu, o asemenea situatie apare in cazul urmator:

2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0

1 1 0 1 1 0 1 1 +
0 1 0 0 0 1 1 0
1 | 0 0 1 0 0 0 0 1
↑ ↑
Depasire

O situatie similara poate aparea in cazul scaderii, daca descazutul este mai mare decat
scazatorul (apare un bit de imprumut).

In ceea ce priveste inmultirea, trebuie remarcat ca rezultatul inmultirii a doua numere
reprezentate pe cate un cuvant de date se va reprezenta pe doua cuvinte de date. In general,
BAZELE MICROPROCESOARELOR
2-4
inmultirea unui numar reprezentat pe m biti cu un numar reprezentat pe n biti (intregi, fara bit
de semn), conduce la obtinerea unui rezultat reprezentat pe (m+n) biti. O situatie aparte va
aparea la impartirea a doua numere, cand trebuie sesizata si semnalizata incercarea de
impartire la zero, al carei rezultat nedeterminat poate conduce la efecte imprevizibile asupra
comportarii sistemului.

Trebuie remarcat ca practic toate microprocesoarele au implementate in setul de instructiuni
operatiile de adunare si de scadere. Doar unele microprocesoare au in setul de instructiuni
operatiile de inmultire (si eventual, de impartire). In cazul absentei acestora din setul de
instructiuni al microprocesorului respectiv, implementarea lor se face prin program, pe baza
operatiilor elementare de adunare si a celor logice.

Ca o remarca generala, cuvintele de date de 8 biti vor putea contine valori numerice pozitive
intre 0 si 255 (2
8
- 1). Cuvintele de date pe 16 biti vor putea contine valori intre 0 si 65535
(2
16
- 1).


2.1.2 Aritmetica numerelor intregi, cu semn

O posibilitate de distingere a numerelor pozitive de cele negative intr-un calculator, este de a
folosi un bit suplimentar, pentru codificarea semnului. Prin conventie, bitul cel mai
semnificativ (din stanga), este asociat semnului numarului: daca acest bit este 0, numarul este
considerat pozitiv; daca este 1, numarul este negativ. Evident, in aceste cazuri, pentru cuvinte
de date cu lungime data, plaja de valori numerice ce pot fi reprezentate difera de cazul
numerelor intregi fara bit de semn. Astfel, intr-un octet se vor putea reprezenta numere intregi
intre -128 si +127.

Cea mai simpla posibilitate de reprezentare a numerelor cu semn, care este insa practic
nefolosita, deoarece ingreuneaza implementarea operatiilor de calcul aritmetice, este cea care
utilizeaza bitul de semn si modulul numarului. Astfel, de exemplu in aceasta reprezentare:

- 23
10
= 1 , 0010111
2

iar
+ 23
10
= 0 , 0010111
2


Practic in totalitatea cazurilor se utilizeaza reprezentarea numerelor cu semn in forma
complementara, ceea ce favorizeaza in mod decisiv implementarea hardware a operatiilor
aritmetice cu aceste numere. Exista doua tipuri de reprezentare:

(1) complement fata de 2 (2's complement);
(2) complement fata de 1 (1's complement).

Deoarece reprezentarea in complement fata de 1 ridica anumite probleme, procesarile cu
numere cu semn se fac cu numere reprezentate in complement fata de 2. Calculul
complementului fata de doi, pentru un anumit numar X, reprezentat pe n biti, va fi:

NOTIUNI INTRODUCTIVE
2-5
[X]
2

= 2
n
- X

Astfel, prin reprezentarea complementului fata de doi al unui numar, se obtine reprezentarea
binara a opusului acestui numar (deci [X]
2
= - X). De exemplu, fie X = 6
10
= 0110
2
, n=4.
Calculand complementul fata de doi al acestui numar, se obtine reprezentarea pentru -X = -
6
10
, data de

[X]
2
= 2
4
- 0110 = 10000 - 0110 = 1010

Practic, se utilizeaza urmatoarele metode, pentru obtinerea complementului fata de 2 al unui
numar:

(a) se inverseaza toti bitii numarului, si se aduna 1 la cel mai putin semnificativ bit.
De exemplu, fie: X = 0110
X inversat va fi 1001
se aduna 1 1
Rezultat: [X]
2
= 1010

(b) se lasa neschimbate cifrele din numar pana la primul 1, inclusiv (de la dreapta la stanga),
inversandu-se celelalte cifre.
De exemplu, fie X = 0 1 1 0 ⇒ [X]
2
= 1 0 1 0
÷ ÷
ö õ
se inverseaza ¹ raman nemodificate

In aceste conditii, un numar reprezentat pe un cuvant de lungime data in complement fata de
2, va avea implicit 1 bit de semn (bitul cel mai semnificativ - bitul din stanga), si
reprezentarea propriu-zisa pe ceilalti biti. Astfel,

+ 19 = 0 , 0010011
ö ÷÷÷
bit de semn õ valoarea X > 0
ø ÷ 2's complement al valorii X < 0
- 19 = 1 , 1101101

De remarcat ca plaja valorilor astfel reprezentabile (pe un octet de la -128 la +127) este
nesimetrica.

Adunarea si scaderea in aceasta reprezentare vor da intotdeauna rezultate corecte, cu conditia
evidenta de a nu aparea depasiri ale limitelor de reprezentare (overflow = depasire
superioara, sau borrow = imprumut). In ceea ce priveste inmultirea, se prefera convertirea
numerelor la valoarea pozitiva (modul), inmultirea intre numerele pozitive, si corectia finala
in functie de semnul rezultatului, dedus separat din analiza semnelor celor doi termeni.


2.1.3 Aritmetica numerelor zecimale codificate binar (BCD)
BAZELE MICROPROCESOARELOR
2-6

Daca se utilizeaza frecvent numerele in reprezentare zecimala - si corespunzator BCD, la
citirea/scrierea numerelor dinspre / spre exteriorul sistemului, implementarea operatiilor
aritmetice cu numere in reprezentare BCD nu este usor de realizat. Complicatiile pe care le
presupune implementarea acestor operatii conduc de obicei la preferarea urmatoarei scheme
de lucru: reprezentare BCD → reprezentare binara propriu-zisa → calcule → conversie in
reprezentarea BCD a rezultatului.


2.1.4 Aritmetica numerelor fractionare

O valoare fractionara subunitara poate fi reprezentata in cuvantul de calculator prin simpla
mutare a virgulei la extremitatea din stanga a cuvantului de date. Aceasta este echivalent, de
exemplu pentru un cuvant de 8 biti, cu impartirea numarului intreg reprezentat pe cuvantul de
8 biti, prin 256. Astfel, numarul continut de reprezentarea respectiva, va fi X = 0 . x
7
x
6
...
x
0
. Valoarea zecimala a numarului este [X]
10
= x
7
2
-1
+ x
6
2
-2
+ ... + x
0
2
-8
. Daca numarul
contine doar cifre de 0, valoarea corespunzatoare este N = 0.00000000 = 0/256 = 0. Daca toti
bitii x
7
la x
0
sunt 1, valoarea corespunzatoare este N = 0.11111111 = 255/256 = 0.99609375.

Consideratii similare cazului numerelor pozitive se vor face pentru reprezentarea numerelor
cu semn, utilizand reprezentarea in cod complementar fata de doi.

O remarca speciala trebuie facuta in ceea ce priveste precizia reprezentarii numerelor
fractionare. Cu exceptia cazurilor cand valoarea fractionara poate fi reprezentata exact pe
cuvantul de date, uzual nu se poate reprezenta o marime fractionara exact pe un numar dat de
biti (exista, de exemplu, doar 256 de valori numerice intre 0.0 si 1.0, reprezentabile exact pe 8
biti). In rest, reprezentarea valorilor fractionare se va face prin introducerea unei erori, care
poate fi de trunchiere (se neglijeaza bitii suplimentari din reprezentarea cu precizie peste
lungimea cuvantului de date), sau de rotunjire (se ajusteaza numarul, in functie de valoarea
partii eliminate, la valoarea cea mai apropiata de reprezentarea exacta).

Evident, operatiile aritmetice cu numere fractionare vor implica erori suplimentare, de calcul.
In cazul inmultirilor, trebuie remarcat ca rezultatul va fi intotdeauna subunitar; reprezentarea
rezultatului pe un cuvant de date va conduce insa intotdeauna la o eroare de trunchiere sau de
rotunjire a rezultatului.


2.2 ELEMENTE DE LOGICA CIRCUITELOR NUMERICE

In afara capacitatii de a efectua operatii aritmetice, un microprocesor poate fi programat sa
implementeze operatii logice ca AND, OR, XOR, NOT, etc. Totodata, elemente logice
(porti), sunt utilizate ca parti componente ale sistemului microcalculator. Vom prezenta in
cele ce urmeaza o trecere in revista a principiilor logicii booleene ce sta la baza regulilor de
functionare a acestor circuite, cat si comportarea celor mai utilizate elemente logice intalnite
uzual intr-un sistem microcalculator.
NOTIUNI INTRODUCTIVE
2-7


2.2.1 Logica booleana

Iata in primul rand rememorate relatiile de echivalenta ale algebrei booleene, care stau la baza
analizei / proiectarii functionarii acestor circuite si / sau operatii logice:

(a) Postulate

⇒ ≠ ≠

⇒ ⋅
⇒ ⋅
⇒ ⋅
x = 0 daca x 1 ; x = 1 daca x 0
0 = 1 ; 1= 0
0 0 = 0 ; 1 + 1 =1
1 1 = 1 ; 0 + 0 = 0
1 0 = 0 ; 0 + 1 = 1 + 0 = 1


(b) Teoreme cu o singura variabila

⇒ ⋅ x + 1 = 1 ; x 0 = 0 (element nul)
⇒ ⋅ x + 0 = x ; x 1 = x (identitate)
⇒ ⋅ x + x = x ; x x = x (idempotenta)
⇒ ⋅ x + x = 1 ; x x = 0 (complement)
⇒ x = x (involutie)

(c) Teoreme cu 2 sau 3 variabile

⇒ ⋅ ⋅
⇒ ⋅ ⋅ ⋅
x + y = y + x ; x y = y x (comutativitate)
x + (x y) = x ; x (x y) = x (absorbtie)

⇒ ⋅ ⋅ ⋅ (x + y) y = x y ; (x y + y = x + y )

⋅ ⋅ ⋅ ⋅ ⋅ ⋅
x + y + z = x +(y + z) = (x + y) + z ;
x y z = (x y) z = x (y z) (asociativitate)

⇒ ⋅ ⋅ ⋅ (x y) + (x z) = x (y + z)

⇒ ⋅ ⋅ ⋅ (x + y) (x + z) (y + z) = (x + y) (x + z) ;
(x + y) (x + z) = x +(y z) (distributivitate) ⋅ ⋅
⇒ ⋅ ⋅ ⋅ (x + y) (x + z) = (x z) + (x y) ;
(x y) + (x z) + (y z) = (x y) + (x z) (consens) ⋅ ⋅ ⋅ ⋅ ⋅

(d) Teoreme cu n variabile

⇒ ⋅ ⋅ ⋅
⋅ ⋅ ⋅
(x +y +z+...) = x y z ... ;
(x y z ... ) = x +y +z + ... (Teoremele De Morgan)

⇒ · ⋅ + ⋅ f (
x
,
x
,...,
x
) [
x
f (1,
x
,...,
x
)] [
x
f (0,
x
,...,
x
)] ;
1 2 n 1 2 n 1
_
2 n

f (
x
,
x
,...,
x
) [
x
f (0,
x
,...,
x
)] [
x
f (1,
x
,...,
x
)]
(teoremele expansiunii)
1 2 n 1 2 n 1
_
2 n
· + ⋅ +
BAZELE MICROPROCESOARELOR
2-8


2.2.2 Porti logice

Figura 2.3 prezinta structura unei porti TTL (Tranzistor Tranzistor Logic) ce implementeaza
o functie NAND cu 2 intrari.
A
B
Intrare
+5V
C
Iesire
4.7k 1k
470
160


Fig.2.3. Structura si tabela logica a unei porti TTL de tip NAND cu
doua intrari

Similar se vor implementa si alte functii logice elementare. Cele mai utilizate porti TTL sunt:
AND, OR, NAND, NOR, XOR, si Ex NOR. Figura 2.4 prezinta tabelele de adevar ale celor 6
tipuri de porti (se considera cazul a cate 2 intrari pe poarta) (fig.2.4.a), si simbolurile asociate
(fig.2.4.b). Cercurile mici, ce apar la iesirea portilor NAND, NOR, si NOR exclusiv reprezinta
negatii, indicand de exemplu, ca o poarta NAND poate fi considerata ca o poarta AND, a carei
iesire este negata (inversata).

A B AND OR NAND NOR XOR Ex-
NOR
0 0 0 0 1 1 0 1
0 1 0 1 1 0 1 0
1 0 0 1 1 0 1 0
1 1 1 1 0 0 0 1

A
B
f=AB
A
B
f=AB
A
B
A
B
A
B
f=A+B
f=A+B
A
B
f=A B
f=A B
AND OR
XOR
NAND NOR Ex-NOR
+
.

Fig.2.4. Porti logice simple uzuale: (a) tabele de adevar (b) simboluri

2.2.3 Inversoare
logic 1: (2.4 ÷ ÷5) V
logic 0: (0 ÷ ÷0.4) V

Intrare

Iesire
A B C
1 1 0
1 0 1
0 1 1
0 0 1
Tabela logica a portii TTL
NOTIUNI INTRODUCTIVE
2-9

Sunt circuite cu schema si diagrama de functionare
prezentate in figura 2.5.a.

Este posibila obtinerea unui inversor si prin utilizarea unor
porti de tip NAND sau NOR, ca in figura 2.5.b. Trebuie
remarcat ca legarea pinilor portii NAND la "1", respectiv
pentru poarta NOR la "0", este obligatorie, fiind interzisa
lasarea neconectata a acestor terminale (caz in care pot
aparea fenomene de functionare aleatoare a portilor). O
alta posibila solutie este si aceea de a conecta semnalul de
intrare la ambii pini de intrare ai uneia dintre cele doua
porti (NAND sau NOR), ceea ce conduce insa la cresterea
(dublarea) incarcarii pe semnalul de intrare.



2.2.4 Reprezentari logice alternative

Se pot obtine reprezentari alternative
echivalente ale portilor logice, prin
aplicarea teoremelor De Morgan
functiilor implementate de catre aceste
circuite. Astfel, ecuatia unui circuit
NAND va fi
f = A B = A + B ⋅ ,
deci poarta NAND se poate echivala cu o
poarta OR, avand intrarile negate
(v.fig.2.6.a). Similar, pentru o functie
NOR se va scrie
f = A + B = A B ⋅ ,
deci ca o functie AND cu intrarile negate
(v.fig. 2.6.b). Relatii similare se pot
obtine si pentru portile AND, OR, etc.

Se poate utiliza oricare dintre
reprezentarile uneia dintre porti, in schema unui circuit. Totusi, cele doua reprezentari ale
unei porti au interpretari diferite. Astfel, pentru poarta NAND de exemplu (fig. 2.6.a), in
prima reprezentare, se poate spune ca iesirea devine de nivel logic 0, cand toate intrarile
sunt la nivel logic 1; cea de-a doua reprezentare sugereaza ca iesirea devine 1, daca oricare
dintre intrari este la nivel logic 0. Prima reprezentare se va utiliza cand iesirea este uzual la
nivel 1, dar devine activa pe nivel logic 0. Se spune ca iesirea este activa pe nivel logic 0
(active low). Reprezentarea alternata va fi utilizata cand starea de activare a portii este 1
logic la iesire (active high). Similar se vor interpreta si celelalte porti si reprezentarile lor
echivalente.

A f=A
A f
0 1
1 0
(a)
"1"
A
f = A 1 = A
A
f = A+0 = A
(b)

Fig.2.5. Poarta inversoare
A
B
A
B
A
B
A
B
A
B
A
B
A
B
A
B
f=AB
f=A+B
f=AB
f=A+B
f=A+B
f=A B
f=A + B
f=A B
(a)
(b)
(c)
(d)

Fig 2.6. Reprezentari logice alternative pentru portile
logice
BAZELE MICROPROCESOARELOR
2-10
2.2.5 Poarta tri-state

Poarta tri-state (cu trei stari) reprezinta o componenta importanta in sistemele microprocesor.
Exista atat tipuri de circuite tri-state inversoare, cat si neinversoare. Figura 2.7 prezinta
tabela de adevar si reprezentarea simbolica a circuitului tri-state (neinversor in fig. 2.7.a,
inversor in fig. 2.7.b).

Utilizarea multor elemente de circuit cu iesiri tri-state
este datorata posibilitatii de a avea starea de mare
impedanta la iesirea circuitului. Aceasta permite
decuplarea semnalului de iesire de intrarea circuitului.
Astfel, iesirile mai multor circuite tri-state pot fi
conectate impreuna, nivelul logic pe iesirea comuna
fiind dictat de circuitul activat (cu semnalul de selectie
E=1) la un moment-dat. Detalii suplimentare referitor la
functionarea circuitelor tri-state si utilizarea acestora in
sistemele cu microprocesoare se vor prezenta in
capitolul urmator.




2.2.6 Bistabilul de tip D

Bistabilul D este cel mai utilizat in sistemele cu microprocesoare ca element de memorie de 1
bit (mai rar se utilizeaza si bistabile de tip T, SR, sau JK). Circuitul are doua stari stabile,
avand reprezentarea conventionala si tabela de
adevar din figura 2.8. Se remarca faptul ca
Q = (D Q + D Q) = D
t + t
__
t t δ
⋅ ⋅ ,
ceea ce reprezinta ecuatia caracteristica a
bistabilului D, indicand faptul ca iesirea de la
momentul t+δt urmareste valoarea intrarii D la
momentul t. Transferul este controlat de catre
semnalul Clk. Exista doua categorii de bistabile
D, din punctul de vedere al controlului
transferului datei prin intermediul semnalului Clk.

Un prim tip este bistabilul D activ pe front. In acest caz, valoarea semnalului de la intrarea D
este transmisa la iesirea Q, la trecerea semnalului Clk din starea 1 in starea 0 (ca in figura
2.9.a), deci pentru front descrescator, sau la trecerea semnalului Clk din starea 0 in starea 1 (ca
in figura 2.9.b), deci pentru front crescator (se remarca din figura 2.9 si simbolurile utilizate in
aceste cazuri pentru circuitul respectiv).

A
E
Out A
E
Out
A E Out
x 0 High z
0 1 0
1 1 1
A E Out
x 0 High z
0 1 1
1 1 0
(a)
(b)

Fig.2.7. Poarta tri-state neinversoare
(a) si inversoare (b).
D
t
Q
t

Q
t+δ δt

0 0 0
0 1 0
1 0 1
1 1 1
D Q
Q
Clk

Fig. 2.8. Bistabilul D
NOTIUNI INTRODUCTIVE
2-11
Clk
D
Q
0
1
0
1
0
1
D
Q
Q
Clk
Clk
D
Q
0
1
0
1
0
1
Clk
Q
Q
D
(a) (b)

Fig.2.9. Bistabilul D cu inscriere pe front.


Un alt tip este bistabilul D
activ pe nivel. In acest caz, pe
perioada nivelului activ al
semnalului Clk (1 in cazul din
figura 2.10.a, respectiv 0 in
cazul din figura 2.10.b),
iesirea Q urmareste variatiile
intrarii D. La dezactivarea
semnalului Clk, iesirea Q
ramane in ultima stare in care
a fost (vezi figura 2.10). A se
remarca din nou simbolurile
utilizate pentru circuite in
aceste cazuri.

Mai trebuie remarcata prezenta uzuala a inca 2 semnale de comanda ale bistabilului D,
asincrone, servind la setarea sau resetarea circuitului. Sunt semnale asincrone, uzual active pe
nivel 0. Figura 2.11 prezinta simbolul bistabilului si tabela de adevar in acest caz. De remarcat
ca este interzisa valoarea 0, simultana, a celor doua semnale
stergere) - (reset R si inscriere) - (set S .



Clk
D
Q
0
1
0
1
0
1
D
Q
Q
Clk
Clk
D
Q
0
1
0
1
0
1
Clk
Q
Q
D
(a) (b)

Fig.2.10. Bistabilul D cu inscriere pe nivel.
S
D
R
Clk
Q
Q

Clk
S R
Q
* 1 1 * (operare normala)
X 0 1 1
X 1 0 0
X 0 0 - (interzis)

Fig. 2.11.Utilizarea semnalelor asincrone de Set si Reset.
BAZELE MICROPROCESOARELOR
2-12
Bistabilele de alte tipuri se pot converti
usor la o comportare similara
bistabilului D. Figura 2.12 prezinta
modul de conversie al bistabilelor de tip
JK, respectiv RS, in bistabile de tip D.

In ceea ce priveste functionarea bistabilului, trebuiesc respectate anumite restrictii la evolutia
in timp a semnalelor D si Clk. Astfel, datele trebuiesc sa fie stabile cu cel putin un interval de
timp t
su
(v.figura 2.13), inainte de tranzitia semnalului de ceas. t
su
se numeste timp de
stabilire (setup time), si uzual are valori cuprinse intre 5 si 50 de nanosecunde.

De asemenea, datele trebuie sa fie stabile cel putin o perioada t
h
(timp de mentinere -hold
time), dupa tranzitia semnalului de ceas (uzual intre 0 si 10 ns), v.fig.2.13. De multe ori, se
specifica in catalogul produsului, si latimea minima a semnalului de ceas (t
w
- pulse width), si
o frecventa maxima a ceasului, f
m
. De remarcat in figura 2.13, ca intervalele de timp se
masoara de la 0.5 din amplitudinea
semnalelor. Bineinteles, exista
intotdeauna o intarziere intre tranzitia
semnalului de ceas, si modificarea
nivelului iesirii, numita intarziere de
propagare (propagation delay), a
bistabilului. Intarzierile respective (la
tranzitii ale Q de la 0 la 1, respectiv de la
1 la 0), sunt date de catalog ale circuitului,
la fel ca si cele referitoare la semnalele de
setare si resetare.

2.2.7 Registre.

Registrele reprezinta o componenta fundamentala in orice microcalculator. Insusi
microprocesorul contine un numar de registre. Deasemenea, circuitele de memorie pot fi
privite ca niste matrici de registre, iar unele dintre porturile de I/E ca registre.

Un registru consta dintr-un sir de bistabile si este utilizat pentru a memora informatie binara
(temporar sau permanent). Figura 2.14 prezinta o schema bloc a unui registru. Datele pot fi
inscrise in registru prin semnalul de control WRITE, si raman inscrise pana la o inscriere
ulterioara. Citirea datelor se va face oricand, prin activarea semnalului de citire (READ).

O operatie frecventa intr-un microprocesor este transferul paralel al datelor intre doua
registre. Figura 2.15 prezinta schema de principiu a acestei operatii. Incarcate initial in
registrul A, datele sunt transferate in registrul B la aparitia semnalului TRANSFER pe linia de
ceas a registrului B. De remarcat ca continutul registrului A este neschimbat, pana la o
modificare ulterioara (stergere, incarcare cu alte date). Simbolic, vom reprezenta transferul
continutului registrului A in registrul B prin relatia: T:(B) ← ←(A). "La primirea semnalului de
J
K
Clk
D
Q
Q
S
R
Clk
D
Q
Q

Fig.2.12. Conversia bistabilelor JK sau RS in bistabile D
Fig. 2.13. Caracteristici temporale ale semnalelor
de intrare ale bistabilului
0
1
0
1
D
Clk
t
w
t
su
t
h

NOTIUNI INTRODUCTIVE
2-13
control T, se transfera continutul registrului A in registrul B". Acest tip de registru este de tip
PIPO
1
.
D
7A
D
6A
D
0A
D
6B
D
7B
D
0B
Clk
Transfer
Reg.A
Reg.B
A7 A6
A0
B7 B6
B0

date intrare
date iesire
WRITE
READ

Fig. 2.14 . Schema bloc a unui registru Fig.2.15. Transferul de date intre 2 registre


O alta operatie frecventa in sistemele
microprocesor este transferul serial al
datelor intre registre. De exemplu, figura
2.16 contine un asemenea registru cu
transfer serial al datelor (realizat cu
bistabile JK). Transferul unui bit de la
intrarea D pana la iesirea P a registrului va
necesita in acest caz 8 semnale de ceas. Acest tip de registru se numeste SISO
1
. Figura 2.17
prezinta schema de realizare a transferului serial intre doua registre de cate 8 biti fiecare. De
remarcat ca registrul A isi pastreaza continutul, prin recilcularea informatiei intre iesire si
intrare. Durata transferului va fi evident de 8 pulsuri de ceas.

1
PIPO - Paralel Input Paralel Output = intrare paralela, iesire paralela
1
SISO - Serial Input Serial Output = intrare seriala, iesire seriala
J7
K7
J6
K6
J0
K0
P
Q
D
Clk

Fig. 2.16. Schema unui registru serial.
BAZELE MICROPROCESOARELOR
2-14
S
Clk
S
Clk
S Clk
S Clk
Reg. A Reg. B
Reg. A Reg. B
S
Clk
S Clk
1 1 1 1
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
inainte de transfer
dupa transfer

Fig. 2.17 Transferul serial al datelor intre doua registre
Un tip uzual de registru utilizat in microcalculatoare este registrul de 8 biti de tip latch
1
, care
utilizeaza bistabile D active pe front pozitiv, ca in figura 2.18. Datele de la intrare sunt
transferate la iesirea registrului pe durata nivelului "1" al semnalului Clk, ramanand la valorile
avute in momentul frontului cazator al semnalului de ceas. Semnalul asincron de stergere va
trece la valoarea "0" toate iesirile registrului, simultan.
Fig. 2.18. Registru de tip latch. Fig. 2.19. Registru cu iesiri tri-state

Figura 2.19 prezinta un registru cu iesirile tri-state. Inscrierea datelor se face normal, dar
iesirile O0÷ ÷O7 vor contine datele inscrise in registru doar la aplicarea semnalului de activare a
circuitelor tri-state de la iesirea acestuia, prin semnalul de activare E.


2.2.8 Multiplexoare

Un multiplexor selecteaza o iesire din n intrari (n fiind uzual 4, 8, sau 16). Selectia liniei de
iesire se face cu semnale de control. Figura 2.20 prezinta un asemenea multiplexor cu patru
intrari (D0, D1, D2 si D3), si iesirea f (si negata sa). Liniile de control A si B si semnalul de
activare E complecteaza circuitul. Din punct de vedere functional, multiplexorul poate fi privit
ca un comutator cu mai multe pozitii, selectand una dintre ele la un moment dat (f, in figura

1
latch = agata
D
Clk
Q
R
R Clk
D7 D0
Q7
Q0
Reg.Latch
D
Clk
Q
R
R
Clk
D7 D0
Q7 Q0
Reg.Tri-State
E
O
E
Date intrare
Date iesire
Date iesire
Date intrare

NOTIUNI INTRODUCTIVE
2-15
2.20,b). Implementarea schematica a circuitului este data in figura 2.20.c, obtinut prin sinteza
functiei f conform expresiei

f = E (A B D + A B D + A B D + A B D
0 1 2 3
⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅

Cand A=0, B=0 ⇒ A B = 1 ⋅ , si se selecteza linia D0; cand A=0, B=1 ⇒ A B = 1 ⋅ , si se
selecteaza D1, etc. Daca E=1, se inhiba operatia intregului circuit.

Exista si circuite cu doua sau mai multe multiplexoare. Un circuit multiplexor poate fi privit
ca un circuit care converteste informatia paralela de la intrare, intr-o forma seriala.
D0
D1
D2
D3
f
D0
D1
D2
D3
Mux
4 la 1
E
f
f
A B
(a)
(b)
D3
D2
D1
D0
E B
A
f
f
(c)

Fig. 2.20. Simbolul, schema functionala si schema logica a unui multiplexor 4 la 1.

2.2.9 Demultiplexoare si decodificatoare

Un demultiplexor indeplineste functia opusa unui
multiplexor. El poate fi utilizat la convertirea unui sir de
semnale numerice transmise serial, intr-o forma paralela.
Diagrama bloc a acestui circuit este prezentata in figura 2.21.
Linia de intrare D poate fi conectata la oricare dintre cele
patru linii de iesire, prin semnalele de control A si B. Fiind
posibile 4 combinatii distincte ale celor doua semnale de
control A si B, circuitul va avea in acest caz patru linii de
iesire. Astfel, pentru A=0, B=0, semnalul D este transferat la
iesirea O0 (la activarea circuitului, prin semnalul E=0), etc.

Un decodificator este, in esenta, un demultiplexor fara intrari de date. El converteste un cod
pe n biti in maxim 2
n
iesiri individuale. Figura 2.22 prezinta diagrama bloc si tabela de adevar
a unui decodificator 3 la 8. Iesirile decodificatorului sunt active pe 0.

D
E
DeMux
1 la 4
A B
O0
O1
O2
O3
Fig. 2.21. Demultiplexor 1 la 4
BAZELE MICROPROCESOARELOR
2-16
Decodificatoarele sunt utilizate in sistemele microprocesor, servind la selectia cipurilor de
memorie, a porturilor sistemului, etc. De exemplu, decodificatorul din figura 2.22 poate fi
utilizat la selectia unuia din 8 cipuri de memorie, in functie de codul de selectie al liniilor de
intrare, furnizat de catre microprocesor. Decodificatorul are o linie de activare. De multe ori,
decodificatoarele sunt dotate cu mai multe linii de activare, (unele active pe nivel logic "0",
altele pe nivel logic "1"), ceea ce mareste flexibilitatea acestor circuite.


Dintre circuitele MSI intalnite deasemenea in sistemele microprocesor mai mentionam
encoderele (circuite complementare decodificatoarelor).

Probleme specifice sistemelor microprocesor sunt si cele legate de circuite de generare a
semnalelor de paritate, comparatoare logice, circuite aritmetice, etc. Nu vom mai intra in
detalii, care vor fi date, in masura necesitatii, la aparitia respectivelor circuite in sistemele ce
vor fi prezentate, dupa caz.


2.2.10 Circuite logice programabile (PLD)

O categorie aparte de circuite logice, utilizate tot mai mult la sinteza unor parti componente de
logica combinationala si / sau secventiala, din cadrul sistemelor digitale, o reprezinta
circuitele logice programabile (PLD - programable logic devices). In esenta, aceste circuite
contin combinatii de porti logice "SI" (AND) si "SAU" (OR), inversoare (NOT), circuite tri-
state, si bistabile. Ele pot fi programate pentru a implementa functii logice specificate. Uzual,
circuitele PLD sunt circuite cu o singura utilizare (se pot programa o singura data); exista mai
nou si circuite PLD reprogramabile, utile in fazele de proiectare si testare a schemelor
implementate. Gama de tipuri de asemenea circuite este destul de larga; uzual, sunt fabricate
in tehnologie CMOS bipolar.

E
Decod
3 la 8
A B
O0
O1
O2
O3
O5
O6
O7
O4
C
cod intrare

intrari iesiri
E A B C O
0
O
1
O
2
O
3
O
4
O
5
O
6
O
7
1 X X X 1 1 1 1 1 1 1 1
0 0 0 0 0 1 1 1 1 1 1 1
0 0 0 1 1 0 1 1 1 1 1 1
0 0 1 0 1 1 0 1 1 1 1 1
... ... ... ...
... ... ... ...

... ... ... ...
0 1 1 1 1 1 1 1 1 1 1 0
Fig.2.22. Schema si tabela de adevar a unui decodificator 3 la 8
NOTIUNI INTRODUCTIVE
2-17
In esenta, circuitele PLD implementeaza expresii
booleene utilizand matrici (retele) de porti AND pe linii,
conectate la porti OR pe coloane, iesirile PLD-ului fiind
iesirile portilor OR.

Vom prezenta in continuare principalele tipuri de circuite
PLD si caracteristicile lor de baza.

Din motive de simplitate a schemelor, se utilizeaza
simbolic reprezentarea din figura 2.23.a, echivalenta cu
schema din figura 2.23.b, pentru a indica conectarea unor semnale la intrarile unei porti (AND
sau OR). Semnele (x), de la intersectia unei linii cu o coloana, indica prezenta unui fuzibil
intact, care conecteaza semnalul de intrare la poarta logica AND (sau OR) de pe coloana
respectiva. Initial, toate semnalele de intrare sunt conectate la toate portile circuitului
(matricea are toate fuzibilele intacte). Prin programarea circuitului, se determina de fapt
distrugerea unora dintre fuzibile, astfel incat in final, prin conexiunile care raman intacte, sa se
sintetizeze functia logica dorita intre semnalul de intrare si cel de iesire. Fiecare combinatie a
semnalelor de intrare care se aplica la intrarea unei porti AND (sau OR) a circuitului PLD,
poarta numele de "product-term", sau "P-term" (v.fig. 2.23, coloana conectand semnalele A,
B, C la intrarea portii AND).


2.2.10.1 Circuite PAL - Programable Logic Array

Sunt circuite care contin o matrice programabila de porti AND, conectate la o structura fixa cu
porti OR (v.fig.2.24). Intre semnalele de intrare (A, B, C, D, E si F in exemplul din figura
2.24), se implementeaza pe baza matricii de conexiuni, combinatiile necesare pentru a
sintetiza functia logica dorita si a obtine semnalul de iesire (X in exemplul din figura 2.24).
Dupa cum se remarca din figura 2.24, uzual sunt selectabile in matrice semnalele de intrare
sau negatele lor. Deasemenea, un "P-term" poate fi tri-statat si se poate aplica sub forma de
semnal de intrare in circuit. In figura 2.24 functia booleana implementata are expresia (dedusa
usor din analiza schemei de conexiuni a semnalelor circuitului):

X = p +q + r +s = ABCD + ABCD + EF

Circuitele PAL pot fi prevazute la iesire si cu registre, utilizabile pentru a sintetiza circuite
secventiale.
Observatie
Fig. 2.23 Simboluri utilizate pentru
descrierea circuitelor PLD.
A
A
B
B
C
C
A B C
(a)
(b)
BAZELE MICROPROCESOARELOR
2-18
Fuzibil intreg
X X
p
q
r
s
A
B
C
D
E
F
linii P-term

Fig.2.24. Structura de principiu a unui circuit PAL

2.2.10.2 Circuite PROM - Programable Read Only Memory

Uzual circuitele PROM sunt incadrate si utilizate functional ca memorii cu continut
nealterabil (fix), stocand coduri de program, seturi de tabele de date constante, etc. Totusi,
este posibila si uneori convenabila utilizarea lor si in proiectarea circuitelor logice. Astfel,
structura interna a unui circuit PROM este o retea fixa de porti AND si o retea programabila de
porti OR. Figura 2.25 prezinta structura unui PROM cu trei semnale de intrare (adrese) - A, B,
C, si trei semnale de iesire (practic, este un circuit de memorie cu 8 celule de cate 3 biti
fiecare). Pentru fiecare combinatie a semnalelor de intrare (adresa), se selecteaza in mod unic
o combinatie a semnalelor P0 la P7 (reprezentand 8 P-term ficsi). Corespunzator acestuia,
prin programarea retelei OR, se genereaza semnalele O/P0, O/P1 si O/P2. (De remarcat ca
fiecare semnal de iesire poate reprezenta o combinatie a mai multor P-term, ceea ce nu se
intampla la circuitele PAL). Pentru exemplul din figura 2.25, semnalele de iesire au expresiile:

O/ P0 = P0+ P2 = CBA + CBA
O/ P1 = P2 + P4 = CBA + CBA
O/ P2 = P3+ P4 + P5 = CBA+CBA +CBA

NOTIUNI INTRODUCTIVE
2-19
A
B
C
linii P-term fixe
P0 P1 P2 P3 P4 P5 P6 P7
O/P0
O/P1
O/P2

Fig.2.25. Schema de principiu a unui circuit PROM utilizat pentru sinteza functiilor logice


2.2.10.3 Circuitele FPLA - Field Programable Logic Array.

Circuitele FPLA reprezinta primele tipuri de circuite PLD. Contin retele programabile atat
pentru portile AND cat si pentru cele OR. La fel ca si circuitele PAL, pot contine si circuite tri-
state pentru conectarea iesirilor la intrari, cat si registre pentru implementarea circuitelor
secventiale. Circuitele FPLA sunt mai flexibile decat circuitele PAL sau PROM, dar mai lente
decat acestea. Mai mult, deoarece se prefera uzual proiectarea cu retele AND sau cu retele OR
(deci utilizand doar unul dintre cele doua tipuri), ele nu sunt neaparat utilizate la capacitatea
lor maxima. Figura 2.26 prezinta structura unui circuit FPLA, sintetizand semnalele:
A
B
C
D
linii P-term
P0 P1 P2 P3
O/P0
O/P1
O/P2

Fig.2.26. Schema de principiu a unui circuit FPLA

BAZELE MICROPROCESOARELOR
2-20
P0 = A⋅ B, P1 = B⋅C⋅D, P2 = A B D ⋅ ⋅ , P3 = C⋅D
O/P0 = P2, O/P1 = P0+P1+P3, O/P2 = P2+P3


2.2.10.4 Circuitele EPLD - Erasable PLD.

Circuitele PLD din prima generatie au utilizat tehnologia bipolara, cu fuzibilele din reteaua
programabila care odata distruse nu mai puteau fi refacute. Acum, exista circuite PLD
realizate in tehnologia circuitelor EPROM, deci reprogramabile. Astfel, ele pot fi programate,
testate si, daca este necesar, reinitializate (prin expunere la radiatii ultraviolete), si
reprogramate. Aceste circuite sunt foarte utile in etapa de dezvoltare a unui produs nou, cand
este uzuala modificarea, iterativa, a structurii circuitului, pana la implementarea solutiei
finale. Evident, pretul acestor circuite este sensibil mai ridicat decat la circuitele cu o singura
utilizare (sunt realizate in capsula ceramica, nu de plastic, sunt prevazute cu o fereastra de
cuart, pentru stergerea informatiei, prin radiatii ultraviolete).

Mai trebuie specificat ca unele circuite PLD evoluate sunt prevazute la iesire cu structuri
complexe, numite "macrocelule" (v.fig.2.27), care inlocuiesc circuitele OR si bistabilele, cu
structuri flexibile, ce pot fi programate in diverse configuratii. Astfel, iesirile pot fi
programate sa fie active high sau low, se pot utiliza semnalele de iesire direct sau ca semnale
de intrare, intrarile asincrone ale registrelor pot fi programate, si chiar tipul registrului poate fi
setat (D, SR, T sau JK).
clk
reset
set
multiplexor
reactie iesiri
MUX control
MUX control
multiplexor
selectie
iesiri
I/O
Q
Q
D
de la reteaua
AND
catre reteaua
AND

Fig.2.27. Structura de principiu a unei "macrocelule" a unui circuit PLD evoluat

2.2.10.5 Circuite PLS - Programable Logic Sequencer

Acestea reprezinta circuite PLD optimizate pentru utilizarea in sinteza circuitelor secventiale
complexe (masini de stare - state machines). Au o structura de baza similara cu cea a
circuitelor FPLA (deci retele programabile AND si OR), si bistabile incorporate pentru
memorarea variabilelor de stare. Ca un exemplu, circuitul PLS167 are 6 bistabile SR, 48 P-
term, si o retea OR programabila.

Pentru sinteza functiilor logice si programarea circuitelor PLD, se utilizeaza diverse programe
si limbaje specializate, uzual specifice pentru anumite familii de circuite PLD. Acestea
NOTIUNI INTRODUCTIVE
2-21
faciliteaza munca proiectantului de circuite, transpunand proiectarea de la sinteza schemelor
logice propriu-zise, la elaborarea functiilor (expresiilor) logice ce se vor implementa. Pe baza
descrierii facute de catre utilizator, programul genereaza comenzile de programare a
circuitului PLD, ce implementeaza structura descrisa functional de catre utilizator. Tehnici
speciale si programele aferente sunt deasemenea disponibile pentru a se converti scheme
existente, la care este uneori dificila sinteza functiei logice aferente, in scheme cu
functionalitate similara, implementate cu circuite PLD.

In concluzie, reprezentand instrumente moderne de lucru, circuitele PLD capata o tot mai
mare raspandire in proiectarea si implementarea sistemelor digitale. Proiectarea la nivel logic,
posibilitatile de simulare, testare, flexibilitatea (la circuitele reprogramabile), compactitatea
solutiei finale, sunt caracteristici deosebit de atractive pentru proiectantul acestor sisteme. In
plus si din punct de vedere economic, aceste circuite se dovedesc de cele mai multe ori o
alternativa viabila la structurile logice sintetizate cu componente logice discrete "clasice".
Daca strategia abordata initial in proiectarea circuitelor logice era de a se minimiza la
maximum schemele implementate, se poate arata ca la ora actuala, la preturile curente ale
componentelor existente, este mai importanta minimizarea numarului global de circuite
integrate folosite. Se poate ajunge ca, de exemplu, o solutie continand doar cateva circuite
MSI complexe, chiar daca in final foloseste un procent relativ scazut din capacitatea
circuitelor respective, sa fie mult mai ieftina decat o solutie optimizata la maximum, dar
implementata cu circuite logice conventionale (porti, bistabile, etc.)





3. MICROPROCESOARE - CONCEPTE GENERALE


Microprocesorul reprezinta probabil cea mai importanta realizare a industriei electronice a
ultimelor doua decenii. Aparitia sa este legata de necesitatea producerii unor circuite
integrate pe scara larga (LSI) universale, apte de a fi utilizate intr-o gama extinsa de
aplicatii. Pana la crearea microprocesorului, circuitele LSI erau proiectate pentru o aplicatie
anume, ceea ce limita foarte mult extinderea masiva a productiei acestora. Era necesar un nou
concept in ceea ce priveste functionalitatea unui asemenea circuit, flexibilitatea utilizarii lui.
Aceasta varietate de functii si posibilitati, permitand realizarea, cu un numar redus si
standardizat de circuite integrate, a diverse sisteme automate complexe, a fost implementata
cu ajutorul sistemelor microprocesor. Legat, prin interfete specifice, de lumea inconjuratoare,
un astfel de sistem are posibilitatea culegerii de informatii din exterior (marimi numerice,
analogice, semnalizari), a prelucrarii lor (diversi algoritmi de calcul si decizie), si a actionarii
spre exterior (dand comenzi numerice, analogice, semnalizari diverse, comunicand rezultatele
operatiilor efectuate, etc.).

Preluand, uneori chiar dezvoltand structura functionala de baza a oricarui calculator
electronic "clasic", aceasta gama deosebit de larga de sisteme, denumite microcalculatoare,
poate implementa aplicatii limitate doar de marginile imaginatiei omenesti. Aria lor de
utilizare este considerabil marita fata de cea a calculatoarelor electronice mari, prin
dimensiuni mult reduse, functionare nepretentioasa din punct de vedere al conditiilor de
mediu ambiant, fiabilitate ridicata, viteza de lucru comparabila (tot mai mare la tipurile noi
de microprocesoare), si, nu in ultimul rand, pretul, in scadere exponentiala, al acestor tipuri
de echipamente.

Utilizatorii actuali, cat si cei potentiali, ai acestor puternice instrumente, trebuie sa
stapaneasca intr-o oarecare masura notiunile fundamentale, atat ale structurii constructive
(hardware) a microcalculatoarelor, cat si a celei referitoare la programarea lor (software). Pe
de o parte, cel ce implementeaza structura unui astfel de sistem trebuie sa cunoasca
disponibilitatile de programare (setul de instructiuni) ale microprocesorului utilizat, iar cel ce
utilizeaza sistemul are nevoie de informatii constructive si functionale pentru a implementa in
mod optim, ca performante, o aplicatie data (prin realizarea unui program adecvat).

Din aceste motive, desi prezentarea este facuta in general distinct, nu s-a realizat o separare
neta la prezentarea structurii hardware sau software a microcontrolerelor.
Pentru punerea in acord a cunostintelor de baza, necesare la intelegerea principiilor de
functionare ale unui microprocesor, ale programarii acestuia, aceasta prezentare face o trecere
in revista a notiunilor fundamentale legate de sistemele microprocesor.
BAZELE MICROPROCESOARELOR
3-2
Se considera ca cititorul poseda un bagaj minim de notiuni legate de structura si functionarea
circuitelor logice (combinationale si secventiale), cat si de aritmetica unui calculator (baze de
numarare, operatii binare etc.).


3.1 MICROPROCESORUL --- PREZENTARE FUNCTIONALA

Intrebarile la care vom incerca sa raspundem in urmatoarele paragrafe sunt: ce este un
microprocesor? ce poate face el? cum functioneaza? cum interactioneaza cu lumea
inconjuratoare? cum se implementeaza, pe baza lui, un sistem microprocesor?

Cunoasterea raspunsurilor la aceste intrebari ofera baza necesara pentru evaluarea justa a
posibilitatilor si performantelor diverselor sisteme, in vederea alegerii solutiei optime
(combinatia hardware - software cea mai indicata) pentru o aplicatie data.

Deci, ce este un microprocesor? In esenta, un circuit integrat LSI, reprezentand elementul
central (CPU
1
), ca importanta si posibilitati, in efectuarea sau coordonarea tuturor operatiilor
ce au loc in functionarea unui microcalculator.

Intr-un mod oarecum figurat, el reprezinta un circuit logic de o extrema complexitate,
reprezentabil, din punct de vedere functional, printr-o structura formata din elemente de logica
combinationala si secventiala. Elementul specific, care diferentiaza microprocesorul de o
astfel de configuratie clasica, si care ii confera totodata exceptionala gama de posibilitati de
utilizare, practic intr-un numar nelimitat de aplicatii, il reprezinta flexibilitatea sa , la nivelul
software al sistemului. Aceasta face ca, de fapt, implementarea acelei structuri logice
echivalente, pentru o aplicatie data, sa nu reprezinte o interventie la nivelul structurii
constructive, hardware, a sistemului microprocesor, ci sa se obtina prin implementarea unui
program specific. Modificarea aplicatiei nu reprezinta altceva decat modificarea programului
microprocesorului.

Astfel, in esenta, se implementeaza structuri logice prin program, deci prin software. Totusi,
trebuie evidentiat faptul ca dezvoltarea de noi programe consuma un timp ce poate fi
apreciabil, si uneori modificarile nu sunt asa de simple pe cat par a fi. Proiectarea cu
microprocesoare implica trecerea de la proiectarea cu circuite logice combinationale si
secventiale, la combinatia hardware-software optima oferind performante maxime pentru un
cost al instalatiei dat. Proiectantul sistemului microprocesor trebuie sa stapaneasca atat
proiectarea circuitelor logice, cat si tehnica programarii. Calitatile cerute unui bun
programator sunt insa similare, in esenta, celor cerute proiectantului de structuri logice. Ceea
ce trebuie remarcat de la bun inceput este faptul ca microprocesorul are posibilitatea de a
executa actiuni proprii unui anumit numar de instructiuni (uzual cateva zeci), care alcatuiesc
setul sau de instructiuni (si care este specific fiecarui tip de procesor in parte). Pe baza acestor
instructiuni se elaboreaza programul (de catre programator) pe care il va executa
microprocesorul. Memorat intr-o memorie, programul este "citit" (adus din memorie in
microprocesor), instructiune cu instructiune, care, odata decodificate, determina actiunea

1
CPU: Central Processing Unit = unitate centrala de prelucrare
MICROPROCESOARE - CONCEPTE GENERALE

3-3
dorita. O modificare in comportarea sistemului se obtine asadar printr-o modificare (sau mai
multe) in program. Evident, programul trebuie sa contina doar instructiuni al caror cod este
"inteles" de catre microprocesor (apartin setului lui de instructiuni). Orice eroare de program
poate determina functionarea partial sau complet defectuoasa a sistemului. (Aceasta va
determina si particularitatea depanarii unui sistem microprocesor. Este necesara o depanare
hardware a schemei de conexiuni, a bunei functionari a circuitelor, cat si una software, a
programului).

Nu este locul si nici nu este necesar, in vederea utilizarii adecvate a unui microprocesor, sa se
abordeze structura de detaliu, constructiv interna, a acestuia. Punctele de vedere din care se va
face prezentarea sa vor fi cel functional, legat de actiunile specifice efectuate de catre
microprocesor, si cel temporal-secvential, legat de succesiunea si durata acestora. Legatura
intre aceste doua abordari este extrem de importanta.


3.1.1 Functiile de baza ale microprocesorului

La ora actuala, exista disponibil un numar foarte mare de microprocesoare, produse de catre
diferite firme. Desi exista multe deosebiri in structura si tehnologia lor de fabricatie, toate
microprocesoarele sunt proiectate pentru a efectua un numar de operatii de baza. Dupa cum s-
a specificat, de altfel, aceste caracteristici functionale comune provin din filozofia crearii
microprocesoarelor, ca instrumente complexe utilizate la implementarea unor sisteme
numerice flexibile, puternice, si la un pret deosebit de avantajos.

Structura de baza a unui sistem microcalculator este prezentata in figura 3.1. Se remarca faptul
ca intr-o sectiune de memorie sunt memorate atat secventele de instructiuni ce alcatuiesc
programul, cat si datele numerice (de intrare, sau rezultate intermediare sau finale). Prin
sectiuni specifice de intrare sau iesire, calculatorul comunica cu perifericele exterioare, care
pot fi atat echipamente standard (tastatura, afisaj, etc.), cat si interfete specifice de conectare la
un proces fizic controlat (traductoare, elemente de executie, etc.).

Memorie
Memorare
program
Memorare
date
Interfete periferice externe
Iesire Intrare
De la / la periferice
MICROPROCESOR
(CPU)
control
magistrala date/adrese
magistrala date

BAZELE MICROPROCESOARELOR
3-4
Fig.3.1 Structura de baza a unui sistem microcalculator
Programul,
in memorie
Date de la
memorie,
sau periferice
Receptioneaza
Transmite
Memoreaza
Analizeaza
Informatie
Efectueaza operatii
logice
aritmetice
Ia decizii
Controleaza
Registrele interne
Memoria
Componentele / sistemele
externe
(b)

Fig.3.2. Reprezentarea functiilor unui microprocesor, corelat cu memoria si perifericele sistemului

Figura 3.2 prezinta structura functionala a unui microprocesor in contextul utilizarii memoriei
si a perifericelor sistemului. Se disting pe grupe functionale: manipularea informatiilor
(instructiuni pentru microprocesor, cat si date transmise sau primite de la diferite componente
ale sistemului), executia diferitelor operatii de calcul, si controlul si supervizarea tuturor
componentelor din sistem, si a operatiilor efectuate in diferitele sectiuni ale acestuia.

Functional, un sistem microprocesor (ca de altfel orice calculator numeric), prezinta cinci
functii de baza: functia de intrare (INPUT), care permite legatura intre lumea exterioara si
sistem; functia de iesire (OUTPUT), care permite legatura intre sistem si lumea exterioara;
functia de memorare (MEMORY), care permite pastrarea informatiilor (date, rezultate), si
(uneori) a instructiunilor programului; functia aritmetico-logica, (implementata prin ALU
1
)
care permite efectuarea operatiilor aritmetice si logice in sistem; functia de CONTROL, care
inglobeaza totalitatea actiunilor de secventializare si control ale activitatii sistemului.

Aceasta delimitare functionala nu este stricta, in sensul existentei intr-o proportie variabila, la
diverse tipuri de microprocesoare, a unora din cele 5 sectiuni. In speta, sectiunile de intrare si
iesire ale microprocesorului apar in general in mica masura la nivelul microprocesorului ca
legaturi directe spre exteriorul sistemului; deasemenea, doar unele microprocesoare, (si
acelea, in general, partial) acopera ele insele necesitatile de memorie ale sistemului. Uzual,
aceasta este exterioara unitatii centrale.

Figura 3.3 prezinta fluxul de informatie intre cele cinci componente functionale in sistemul
microprocesor. Uzual, informatia este adusa, prin functia de intrare, (INPUT), sub
coordonarea functiei de control, in memoria sistemului. Informatia poate fi utilizata ori pentru
a "spune" microprocesorului ce are de facut (instructiuni), ori ca data in operatii aritmetice sau

1
ALU - Arithmetic Logic Unit = unitate aritmetico - logica (UAL)
MICROPROCESOARE - CONCEPTE GENERALE

3-5
logice. (In caz general, sub forma de instructiuni, alcatuind programul, informatia poate fi
rezidenta in mod permanent in memoria sistemului).
Intrare
Microprocesor
Control
U.A.L.
Memorie Iesire
control
informatie

Fig.3.3. Structura functionala si fluxul de informatii dintr-un sistem microprocesor

Din memorie, tot sub incidenta functiei de CONTROL, informatia este citita si decodificata de
catre microprocesor, executandu-se in mod secvential instructiunile programului. Datele si
rezultatele sunt deasemenea vehiculate intre procesor si memorie, tot sub comanda functiei de
CONTROL, conform programului. Dupa caz, coordonat de catre functia de CONTROL, se
activeaza, pentru transfer de informatie spre iesirea sistemului, functia de iesire (OUTPUT).

Se remarca delimitarea, in figura 3.3, a functiilor sistemului, inglobate de catre microprocesor.
Doua dintre sectiunile sistemului sunt continute intotdeauna integral de catre microprocesor:

, care reprezinta o colectie de circuite logice complexe, programabile, capabile
sa proceseze date numerice, pe baza unui set de instructiuni ale utilizatorului, uzual bazate pe
trei operatii fundamentale: adunare, scadere, si operatii logice.

, care genereaza si coordoneaza toate semnalele de control necesare
pentru a executa operatiile de calcul din ALU, si a sincroniza transferul datelor in sistem. O
functie esentiala a sectiunii de CONTROL este aceea de a decodifica si executa instructiunile
programului pe baza caruia functioneaza intregul sistem.

Ca o remarca speciala, modul de conectare si functionarea componentelor de baza ale unui
sistem de calcul, s-au bazat si se bazeaza inca, in mod curent, in marea majoritate a
structurilor utilizate, pe asa numita arhitectura de tip von Neuman, utilizata practic in
exclusivitate la realizarea microprocesoarelor uzuale. In aceasta arhitectura, unitatea centrala
de prelucrare (CPU), va executa cate o singura instructiune la un moment dat, intr-o secventa
de program. Desi mai lenta decat in sistemele in care se executa mai multe instructiuni
deodata (procesare paralela), arhitectura von Neuman este relativ mai simplu de implementat.
Arhitecturile recentelor tipuri de microprocesoare au insa elemente de prelucrare paralela, cat
si, in cazul procesoarelor DSP, cu asa numita arhitectura Harvard, o paralelizare complecta a
Blocul ALU
Sectiunea de CONTROL
BAZELE MICROPROCESOARELOR
3-6
lantului de citire / decodificare instructiuni, respectiv efectuare operatii de calcul, si transfer al
datelor in sistem. Aceasta conduce, evident, la cresteri sensibile ale performantelor
respectivelor sisteme, fata de cele "clasice", realizate in arhitectura von Neuman.


3.1.2 Aspectul temporal - secvential

Desfasurarea operatiilor efectuate de catre diversele componente functionale ale sistemului
este controlata, ca durata si succesiune, de catre sectiunea de control. Aceasta sectiune
selecteaza in mod corespunzator (activeaza), secvential functiunile microprocesorului, pe
durate de timp fixe, determinate de specificul operatiei ce se executa. O diagrama de timp
simplificata a activarii sectiunilor sistemului este prezentata in figura 3.4.

activare
activare
activare
activare
Memorie
U.A.L.
Iesire
Intrare
Citire informatii
Prelucrare Iesire rezultate
T1 T2 T3

Fig.3.4. Inlantuirea temporala a operatiilor sistemului microprocesor

Pe intervalul t
1
, informatia (instructiuni si date), se preia de la intrare si se memoreaza
(activandu-se, corespunzator, cele doua sectiuni, de INPUT si MEMORY). In t
2
, instructiunile
din memorie sunt preluate si executate (ele alcatuind programul microprocesorului), si
impreuna cu datele, prelucrate in ALU, determina executia dorita de operatii ale sistemului.
Rezultatele sunt memorate in memorie. Intr-o ultima etapa (t
3
), se dezactiveaza ALU, si se
transfera rezultatele spre exteriorul sistemului, activandu-se functia de OUTPUT. Un semnal
de ceas de sistem (uzual controlat cu un cristal de cuart), este utilizat pentru sincronizarea si
secventializarea diverselor operatii si semnale, pe parcursul efectuarii tuturor operatiilor
sistemului.


3.1.3 Reprezentarea informatiei

Implementarea electrica / electronica a functiilor calculatorului este posibila, si se realizeaza,
prin utilizarea bazei 2 de numarare (numerele 0 si 1). Astfel, toate informatiile (instructiuni
sau date, rezultate) se memoreaza si se prelucreaza de catre microprocesor in forma binara.
Ele trebuie sa fie interpretabile in mod unic de catre microprocesor, prezentandu-se intr-un
MICROPROCESOARE - CONCEPTE GENERALE

3-7
format specific in acest scop. Depinzand de conceptia proiectantilor microprocesorului, acest
format este o combinatie de lungime fixa, de simboluri binare, alcatuind asa-numitele cuvinte
de instructiuni, respectiv cuvinte de date (fig. 3.5). Fiecare instructiune din programul
microprocesorului va fi formata din unul sau mai multe cuvinte de instructiune. Acestea
"spun" procesorului ce are de facut. Cuvantul de instructiune consta din doua parti: codul
operatiei (care indica ce operatie se va executa), si operanzii (care indica asupra cui se va
efectua operatia indicata de codul operatiei).

Figura 3.5 este un exemplu de reprezentare a cuvintelor de instructiune, pentru un
microprocesor cu formatul cuvintelor de 8 biti. (Uzuale sunt microprocesoarele cu cuvinte de
8 biti=1 byte, in ultima vreme afirmandu-se si extinzandu-se cele de 16, 32 si chiar 64 de biti).
Va exista deci cate o combinatie unica a bitilor cuvantului de instructiune, pentru desemnarea
codului operatiei (combinatia 10000 in fig. 3.5.b), si a operandului asupra caruia se va efectua
operatia dorita (combinatia 010 in fig. 3.5.b). Decodificarea cuvantului de instructiune va
furniza astfel microprocesorului informatiile necesare pentru a sti ce operatie se executa, si
asupra carei (caror) valori (date), se executa aceasta operatie.

cuvint de instructiune
cuvint de instructiune
Cod operatie Operand
cuvint de date Date , numere , litere
a
B7
B0
(MSB)
(LSB)
cod operatie
indica operatia
de adunare
operand
indica codul unui
registru continind
data ce se aduna
b
1 0 0 0 0 0 1 0

Fig.3.5. Reprezentarea informatiei (instructiuni sau date); LSB: bitul cel mai putin semnificativ (last
significant bit); MSB: bitul cel mai semnificativ (most significant bit)

Instructiunile sunt memorate in ordinea executarii (cu exceptiile ce se vor prezenta la analiza
detaliata a tipurilor de instructiuni), iar microprocesorul le citeste si executa secvential. In
esenta, se citeste un cuvant de instructiune, se decodifica, obtinandu-se operanzii, locatia lor
si se executa operatia indicata. Apoi se trece la o noua instructiune etc.


3.1.4 Memorarea informatiei

Plecand de la o reprezentare intuitiva, de genul organizarii numerelor de telefon, fiecare
cuvant de instructiune sau date are asociat, in mod unic, un numar care simbolizeaza (si se
numeste), adresa sa . A citi o anumita instructiune sau data din memorie va insemna, in mod
practic, a se activa, prin intermediul functiilor de control, acea celula de memorie, a carei
BAZELE MICROPROCESOARELOR
3-8
adresa este cea dorita. Continutul ei (instructiune sau data --- este raspunderea
programatorului de a sti ce se va gasi acolo si de a se ingriji de corectitudinea amplasarii lor)
este prelucrat in mod corespunzator de catre microprocesor.

Memoria sistemului este organizata sub forma unei matrice, cu liniile avand un numar de
celule (biti), egal cu cel al cuvantului de instructiune sau de date, fiecarei linii corespunzandu-
i, in mod unic, o adresa proprie. Selectarea unei astfel de celule permite accesul de la / la
microprocesor, la / de la aceasta celula de memorie, sensul transferului de informatie fiind
indicat de sectiunea de CONTROL. Figura 3.6 prezinta modul de organizare a unei astfel de
memorii, pe cuvinte de n biti (n = numarul de biti din cuvantul de date sau instructiune al
microprocesorului --- 8, 16 etc.).

Aparitia unei operatii cu memoria de la o anumita adresa va determina activarea tuturor
celulelor de memorie elementare de la adresa respectiva (de pe linia cu aceeasi adresa). Prin
intermediul semnalului R/ W (citeste/scrie), sectiunea de CONTROL va indica operatia ce se
executa, deci sensul fluxului de informatie (de la microprocesor la memorie, pentru operatie
de scriere, sau de la memorie la microprocesor, pentru o operatie de citire). In mod
corespunzator, informatia de la microprocesor va fi inscrisa in celulele adresate (la scriere),
sau va fi preluata de la memorie de catre microprocesor (la citire). Transferul se va efectua pe
toate cele n linii de date simultan (in paralel).

Dupa cum memoria contine informatii fixe (in speta programe), sau informatii alterabile in
cursul desfasurarii programului, exista memorii de tip ROM
1
, respectiv RAM
2
. O memorie
ROM poate fi doar citita; informatia din ea este permanenta si nu dispare la incetarea
alimentarii calculatorului. Memoria RAM permite scrierea si citirea informatiilor. Ea este o
memorie volatila (se pierde informatia din ea, prin oprirea alimentarii circuitului).
scrie
Bit n
Adresa 1
Adresa 2
Adresa 3
Adresa m
citeste/
(R/W)
Intrare
data
Iesire
data
data
data data
Intrare Iesire
Bit n-1 Bit 0
data
Intrare
Iesire


Fig.3.6. Organizarea interna a unui circuit de memorie de m cuvinte de cate n biti

1
ROM - Read Only Memory = memorie "citeste numai"
2
RAM - Random Access Memory = memorie cu acces aleator
MICROPROCESOARE - CONCEPTE GENERALE

3-9
Trebuie mentionat ca microprocesorul poate contine pe cip atat memorie ROM (eventual
programe), cat si memorie RAM (de uz general, sau, sub denumirea de registre, celule cu
destinatie speciala in memorarea, decodificarea si executarea instructiunilor, a operatiilor
aritmetice si logice etc.).


3.1.5 Conceptul de program

Se ajunge, prin imbinarea conceptelor prezentate, de operare secventiala, reprezentare si
memorare a informatiilor, la conceptul final de program. Astfel, executarea unei secvente
dorite de operatii, de catre microprocesor, este obtinuta prin implementarea unei succesiuni de
instructiuni, memorate in memoria sistemului, alcatuind programul acestuia. Fiecare operatie
dorita a sistemului va fi implementata printr-o secventa de una sau mai multe instructiuni.
Odata implementat programul si pornita executia sa , sistemul va actiona conform
instructiunilor din program, realizand functiile si operatiile dorite.


3.2 CONCEPTUL DE MAGISTRALA

Sunt necesare, in functionarea unui sistem microprocesor, legaturi multiple si complexe intre
diferitele parti functionale ale acestuia. Grupurile de interconexiuni cu functii similare,
legand diversele sectiuni ale unui sistem microprocesor, se numesc magistrale. Ele
conecteaza semnalele de date, adrese, control, ale unei sectiuni, cu semnalele omologe ale
celorlalte sectiuni, constituind calea de legatura dintre ele.

Exista doua seturi de magistrale in orice sistem microprocesor: magistrale interne
(reprezentand canalele de legatura intre diversele unitati functionale din unitatea centrala
(CPU) a sistemului) si magistrale externe (reprezentand caile de comunicatie intre CPU si
componentele externe acestuia). Fiecare grup de magistrale poate fi subdivizat in trei
categorii, dupa tipul informatiei transferate: magistrale de adrese, de date, si de control. O
magistrala poate avea mai multe linii, permitand transferul simultan al unui cuvant de
informatie (adresa sau data), caz in care magistrala se numeste magistrala paralela. Exista
deasemenea magistrale seriale, pentru care datele sunt transmise multiplexat in timp (un
cuvant este transmis bit cu bit, pe aceeasi linie), care sunt, in mod evident, mult mai lente
decat magistralele paralele. Practic, toate magistralele interne ale CPU, cat si cele externe care
conecteaza CPU cu memoria, si cu majoritatea interfetelor de intrare / iesire ale sistemului,
sunt organizate ca magistrale paralele. Legaturi seriale se utilizeaza mai ales pentru
transmiterea datelor la / de la echipamente aflate la distanta de CPU (terminale, linii
telefonice, etc.).

In figura 3.7 se reprezinta o structura de principiu a modului de interconectare intre diferitele
elemente componente ale sistemului microprocesor prin intermediul diferitelor magistrale ale
acestuia. Deoarece unitatea centrala nu poate alimenta simultan un numar prea mare de
circuite exterioare (exista valori limitate ale curentilor pe care acesta ii suporta sau genereaza),
este necesara amplificarea semnalelor de pe magistralele sistemului. Aceasta adaptare a
BAZELE MICROPROCESOARELOR
3-10
semnalelor este efectuata cu diferite tipuri de circuite, distingandu-se in esenta urmatoarele
tipuri: circuite tampon amplificatoare de magistrala (drivere); circuite tampon
bidirectionale (buffere bidirectionale); circuite pentru retinerea datelor (latch).

(unidirectionala) Magistrala de adrese
Magistrala de date
Magistrala de control
(bidirectionala)
(bidirectionala)
U.C.P. Memorie Intrare Iesire

Fig.3.7. Structura unui sistem microprocesor. Magistralele sistemului.

Figura 3.8 prezinta utilizarea circuitelor tampon (uni si bidirectionale), pe magistralele
sistemului. Semnalele obtinute la iesirea acestor circuite formeaza magistrale similare celor
din care provin. Uzual, se utilizeaza circuite tampon unidirectionale pentru semnalele de pe
magistralele de adrese si de control, si circuite tampon bidirectionale, pentru magistralele de
date (v. par. urmatoare). In cazurile in care microprocesorul se interfateaza cu periferice mult
mai lente decat unitatea centrala, este necesar ca informatia sa fie prezenta la intrarea acestor
circuite, pana la preluarea ei de catre respectivul circuit. In aceste cazuri, se pot utiliza circuite
pentru retinerea datelor (latch - reprezentand in esenta, registre paralele), in care informatia
prezenta pe pinii de intrare, de pe o magistrala a sistemului, este inscrisa la primirea unui
semnal de control (de scriere), generat direct de catre microprocesor sau de catre un circuit
decodificator. Figura 3.9 prezinta structura unui asemenea montaj, care mentine la iesirea
catre un afisaj cu segmente informatia dorita, pana la inscrierea altor date, la un acces ulterior
al circuitului latch din schema.
Magistrala de control
Magistrala de adrese
Magistrala de date
Circuit tampon
(buffer) unidir.
Circuit tampon
(buffer) unidir.
Circuit tampon
(buffer) bidirectional
Memorie si
periferice
Unitate centrala
de prelucrare
(CPU)
Magistrala de control
Magistrala de adrese
Magistrala de date
Fig.3.8. Utilizarea circuitelor tampon (buffere)

MICROPROCESOARE - CONCEPTE GENERALE

3-11
Magistrala de date
Unitate centrala
de prelucrare
(CPU)
mag.adrese
Decodificator
Circuit
memorare
(latch)
a
b
c
d
e
f
g
Amplif.
activare
selectie
a
b
c
d
e
f
g
a
b
c
d
e
f
g
afisaj cu 7
segmente

Fig.3.9. Utilizarea circuitelor de tip latch


3.2.1 Magistrala de date


Magistrala de date este destinata atat transferului unidirectional de instructiuni de la memorie
(citire a programului), cat si celui bidirectional, de date intre memorie, unitatea centrala si /
sau interfetele de intrari/iesiri (informatia parcurge magistrala in ambele sensuri, sau de la
procesor la una dintre unitatile externe acestei unitati, sau de la una dintre aceste unitati spre
procesor). Directia transferului de informatie este supervizata de catre sectiunea de CONTROL
a microprocesorului, prin generarea de semnale specifice (citire sau scriere). Lungimea
cuvantului microprocesorului determina numarul de linii de conexiune din magistrala de date
(8, 16, 32, etc.).


Daca in structurile de tip von Neuman, exista o singura magistrala de date, pe
care se vehiculeaza, la momente de timp diferite, atat cuvintele de program (coduri de
instructiune), citite din memoria program, catre microprocesor, cat si cuvintele de date, intre
memorie sau periferice si microprocesor, la executia instructiunilor, in structurile de tip
Harvard (specifice procesoarelor DSP), exista magistrale independente pentru transferul
cuvintelor de instructiune, respectiv a datelor propriu-zise ale programului. Astfel, este marita
eficienta globala a sistemului, in acest al doilea caz.


3.2.2 Magistrala de adrese

Magistrala de adrese este o magistrala unidirectionala. Ea vehiculeaza codul binar
reprezentand locatia (adresa) datei ce se va utiliza in cadrul operatiei ce se executa. Astfel, ea
poate selecta adresa celulei de memorie de la care se citeste o noua instructiune, data, sau la
care se memoreaza un rezultat. Multe microprocesoare utilizeaza magistrala de adrese si
pentru configurarea adresei echipamentului de intrare-iesire, selectat la o operatie de INPUT
sau OUTPUT. Este sarcina sectiunii de CONTROL de a delimita si indica, prin generarea de
Observatie
BAZELE MICROPROCESOARELOR
3-12
semnale de control specifice, daca este vorba de o operatie de citire sau scriere din memorie
sau intrare-iesire.

Adresabilitatea unui microprocesor este data de numarul de biti ai magistralei de adrese. Un
numar uzual de 65536 (64 ko) celule de memorie vor necesita 16 linii de adresa pe aceasta
magistrala. (2
16
=65536). In general, se vor putea adresa 2
N
celule de memorie prin
intermediul a N linii de adresa.

Similar remarcii de la paragraful anterior, mentionam si aici ca structurile von
Neuman au o singura magistrala de adrese, vehiculand la momente de timp diferite, adresa de
unde se citeste cuvantul de instructiune, respectiv adresa la / de la care se efectueaza transferul
datelor, la executia propriu-zisa a instructiunii. Structurile cu arhitectura Harvard au doua
magistrale separate de adrese, pentru adresarea memoriei de program, respectiv a celei de date
(ceea ce permite ca in paralel cu executia unei instructiuni sa se poate adresa si citi cuvantul
de instructiune urmator).


3.2.3 Magistrala de control

Aceasta magistrala furnizeaza informatii suplimentare necesare pentru indicarea operatiei ce
se efectueaza. Numarul de semnale de pe aceasta magistrala depinde de numarul de semnale
de control necesare pentru microprocesorul utilizat. Tipice sunt semnalul de ceas al sistemului
(care asigura functionarea secventiala cu o periodicitate fixa a intregului sistem
microprocesor), semnalele de citire/scriere in memorie, citire/scriere pentru intrare/iesire din
sistem etc.

Corelate cu magistrala de adrese, semnalele de pe magistrala de control permit selectia unica a
echipamentului sau a celulei de memorie careia/de la care, prin intermediul magistralei de
date, se transmite/preia informatia, conform operatiei ce se executa.

Un aspect important ce trebuie clarificat aici este cel ridicat de problema desfasurarii
operatiilor in sistem, pe aceste magistrale, in mod corect, fara probleme de interferenta a
informatiilor, care pe aceleasi cai sunt transferate in sensuri si spre/de la echipamente diferite.
Raspunsul este dat de insasi functionarea secventiala, sub supravegherea functiei de
CONTROL, a intregului sistem. Este asigurata activarea unica, dupa cum s-a mentionat, a
celulelor de memorie sau a elementelor de intrare/iesire cu care se opereaza la un moment dat.
Acestea sunt dotate cu circuite tampon (buffere) proprii. Conectarea pe liniile magistralelor, in
sensul transferului de informatie pe magistrala, este efectuata prin circuitele tampon
respective, care sunt selectate (deschise) doar in cazul adresarii circuitului respectiv. La fel,
inscrierea informatiei intr-o anumita celula de memorie sau element de iesire se face prin
activarea functiei de memorare doar pentru elementul respectiv. Astfel, la efectuarea unei
operatii de transfer de informatii in sistem, va exista o singura sursa a semnalelor de pe fiecare
magistrala, si va fi selectat un singur element in care datele se vor inscrie la operatia
respectiva. Aceste selectii unice vor trebui asigurate prin proiectarea corespunzatoare a
circuitelor de adresare si decodificare, dupa cum se va prezenta detaliat in paragrafele
urmatoare.
Observatie
MICROPROCESOARE - CONCEPTE GENERALE

3-13

Ceea ce poate fi evidentiat acum este faptul ca microprocesorul nu trebuie sa fie privit ca o
colectie de circuite digitale, conectate intr-o maniera conventionala. Aceasta conectare intre
circuite este in primul rand o functie a programului (software-ului) microprocesorului.
Selectii, activari si operatii specifice ale elementelor sistemului microprocesor apar ca urmare
a executiei instructiunilor programului. Se evidentiaza deci necesitatea stapanirii unei noi
tehnici de "realizare" a acestor conexiuni logice functionale, aceea a programarii
microprocesorului. Prin program se implementeaza astfel echivalentul unor structuri logice
complexe, variabile in timp.


3.3 MICROPROCESORUL - PREZENTARE HARDWARE

Sa trecem acum la o examinare detaliata a structurii functionale a microprocesorului. Acesta
va fi prezentat in maniera de abordare a utilizatorului orientat spre hardware-ul sistemului.
Fiecare dintre cele cinci sectiuni de baza sunt identificate in mod unic. Trebuie insa
mentionata prezenta unor portiuni ale functiei MEMORY atasate celorlalte sectiuni, cat si
prezenta in mai multe locatii a elementelor de INPUT---OUTPUT. Aceasta s-a facut pentru o
mai buna intelegere a operarii detaliate a hardware-ului microprocesorului, dupa cum se va
vedea in continuare.

Figura 3.10 prezinta diagrama functionala detaliata a microprocesorului. Se vor discuta pe
rand: fiecare sectiune functionala a acestuia, operatiile sale si legatura cu celelalte sectiuni.

3.3.1 Functia de control

Dupa cum s-a aratat, microprocesorul opereaza in mod secvential, determinat de catre un
program memorat, format din instructiuni. Dar programul in sine nu este suficient pentru
functionarea sistemului. (De exemplu, calculatorul trebuie sa stie de unde sa inceapa citirea
din memorie a primei instructiuni din program). Trebuie sa fie activate in mod corespunzator
semnalele de control, la momente adecvate de timp, pentru sectiunile de MEMORY, ALU,
INPUT/OUTPUT, in vederea citirii, decodificarii si executarii instructiunilor in ordinea dorita
si evitandu-se interferenta operatiilor.

Toate aceste cerinte sunt indeplinite de catre sectiunea de CONTROL. In esenta, sectiunea de
CONTROL reprezinta "sistemul nervos" al microprocesorului, asigurand secventializarea,
decodificarea si activarea operatiilor acestuia.


3.3.1.1 Ciclul microprocesorului

Realizarea operatiilor microprocesorului are loc in mod secvential-repetitiv. Semnalul de
temporizare minima, in raport cu care se desfasoara toate celelalte temporizari sincronizate
din functionarea acestuia, se numeste semnal de ceas (clock) al sistemului. Se defineste ciclul
de instructiune al microprocesorului, care dureaza un numar variabil de perioade de ceas, in
BAZELE MICROPROCESOARELOR
3-14
functie de microprocesor si de instructiunea ce se executa, ca fiind secventa de operatii
efectuate pentru a extrage o instructiune din memorie, a o decodifica si executa.

circuit
tampon
M A R
PC
RI
Decodificare
timing si
control
U A L
Registrele
UAL
circuit
tampon
circuit
tampon
registre de
uz general
R O M
R A M
mag. adrese
mag.
date
mag.
control

Fig.3.10. Structura interna a unui microprocesor

Ciclul microprocesorului este format din unul sau mai multe subcicluri, fiecare la randul lui
durand mai multe perioade de ceas (vezi fig. 3.11.a). Cate un subciclu este utilizat pentru
obtinerea fiecarui cuvant de instructiune sau date, sau pentru fiecare operatie de baza ce
trebuie executata.


T1 T2 T3 T4 T5
Subciclu
Subciclul 1 Subciclul n
Ciclul microprocesorului


Fig.3.11.a. Structura ciclului microprocesorului

Deoarece microprocesorul executa cate o instructiune la un moment dat, incepand cu prima
instructiune din program, este necesar a se cunoaste in permanenta care instructiune se
executa (sau va fi executata la pasul urmator). Se utilizeaza in acest scop un registru special,
numit registru contor de program (PC = program counter), care contine adresa urmatoarei
instructiuni de program care va fi citita din memorie. Deoarece programul este memorat la
MICROPROCESOARE - CONCEPTE GENERALE

3-15
adrese succesive, contorul de program va fi actualizat uzual prin simpla incrementare cu 1, la
fiecare transfer al unui cuvant de instructiune din memorie in registrul de instructiuni al
microprocesorului (descris in sectiunea urmatoare). Astfel, putem considera registrul PC ca un
indicator (pointer) aratand unde s-a ajuns cu executia programului la un moment dat.

Primul subciclu al fiecarui ciclu al procesorului este utilizat pentru extragerea de informatie
din memorie (fetch) si are de regula patru perioade de ceas. In prima perioada, continutul
numaratorului de adresa (PC), reprezentand adresa de unde se va citi instructiunea curenta,
este adus pe magistrala de adrese, selectand, impreuna cu semnalele de control, celula de
memorie dorita. In a doua perioada, continutul PC este incrementat, pregatindu-l pentru
urmatoarea extragere din memorie. In a treia perioada, continutul memoriei adresate este adus
in microprocesor si memorat temporar. In perioadele t
4
, t
5
(prezente sau nu, in functie de
operatia ce se executa), se transfera informatia intre registre sau se efectueaza operatii
aritmetice simple. (In functie de procesor si de instructiunea executata, un subciclu poate dura
si mai multe perioade de ceas). Trebuie accentuat ca intotdeauna, in primul subciclu,
procesorul citeste un cuvant considerat ca primul din instructiune. Odata decodificat, acest
cuvant va indica ce instructiune se executa, si daca este necesara citirea suplimentara de
cuvinte de date din memorie (efectuata in subciclurile urmatoare). O instructiune poate fi
formata din unul sau mai multe --- de regula, pana la trei --- cuvinte.
Fig.3.11. b. Ciclul microprocesorului. Exemplu: memorarea unei constante
(continuta in octetul al doilea al instructiunii)

Subciclul 1 Subciclul 2
Urmatoarea
instructiune
C
o
n
t
i
n
u
t
u
l

P
C

p
e

m
a
g
i
s
t
r
a
l
a

d
e

d
a
t
e

P
C

=

P
C

+

1

S
e

e
x
t
r
a
g
e

p
r
i
m
u
l

c
u
v
a
n
t

d
e

i
n
s
t
r
u
c
t
i
u
n
e

d
i
n

m
e
m
o
r
i
e

O
p
e
r
a
t
i
i

i
n
t
e
r
n
e

(
d
e
c
o
d
i
f
i
c
a
r
e
,

e
t
c
.
)

C
o
n
t
i
n
u
t
u
l

P
C

p
e

m
a
g
i
s
t
r
a
l
a

d
e

d
a
t
e

S
e

c
i
t
e
s
t
e

a
l

d
o
i
l
e
a

c
u
v
a
n
t

a
l

i
n
s
t
r
u
c
t
i
u
n
i
i

(
d
a
t
a
)

s
i

s
e

m
e
m
o
r
e
a
z
a

t
e
m
p
o
r
a
r

i
n
t
r
-
u
n

r
e
g
i
s
t
r
u

S
e

c
o
n
f
i
g
u
r
e
a
z
a

a
d
r
e
s
a

c
e
l
u
l
e
i

d
e

m
e
m
o
r
i
e

l
a

c
a
r
e

s
e

m
e
m
o
r
e
a
z
a

d
a
t
a

S
e

t
r
a
n
s
f
e
r
a

d
a
t
a

i
n

m
e
m
o
r
i
e

BAZELE MICROPROCESOARELOR
3-16

Astfel, in figura 3.11.b se prezinta structura unei instructiuni de transfer, intr-o celula de
memorie externa, a unei valori specificate in codul instructiunii respective. In primul subciclu
al instructiunii se citeste si decodifica codul instructiunii; in urma acestei decodificari,
sectiunea de control "stie" (din tabela de coduri microprogramate ale microprocesorului) ca
trebuie citit si un al doilea cuvant al instructiunii, continand valoarea numerica ce se doreste a
fi transferata in memoria externa. Aceasta valoare odata citita din memoria program, la
inceputul subciclului al doilea al instructiunii (de la adresa de memorie indicata de catre
continutul registrului PC - reactualizat dupa fiecare citire din memoria program), se
memoreaza temporar intr-unul din registrele interne ale microprocesorului. Se trece apoi la
executarea propriu-zisa a instructiunii. Astfel, se configureaza pe magistrala de adrese adresa
celulei de memorie la care se va efectua transferul, iar pe magistrala de date se transmite data
respectiva, din registrul temporar al microprocesorului, catre celula de memorie externa
selectata. Prin secventializarea corecta a semnalelor de catre sectiunea de control (adrese, date,
semnale de control), aceasta data prezenta pe magistrala de date, este inscrisa in celula de
memorie externa selectata, incheindu-se astfel executia propriu-zisa a instructiunii. In
continuare, o noua instructiune poate fi citita, decodificata si executata, etc. A se remarca
faptul ca pe magistralele sistemului, la diferite momente de timp, se vehiculeaza informatii cu
semnificatii diferite din punct de vedere functional. Astfel, la citirea cuvantului de
instructiune, magistrala de adrese contine intotdeauna valoarea memorata de catre registrul
contor de program, PC, iar datele citite de la celula de memorie astfel selectata sunt preluate
de catre microprocesor si interpretate ca reprezentand cuvinte de instructiune. La executia
instructiunii, in cazul instructiunilor de transfer de date externe (la / de la memorie sau
interfete de intrare/iesire), pe magistrala de adrese se va utiliza adresa la/ de la care se va face
transferul, iar magistrala de date va contine data transferata. Functionarea intregului sistem,
dupa cum se remarca odata in plus, este coordonata de catre sectiunea de control.

Trebuie remarcat ca registrul PC al unui microprocesor are o capacitate (numar de biti),
corelata cu adresabilitatea maxima a procesorului respectiv. Astfel, cu un registru de 16 biti,
spatiul de adresare total va fi de 2
16
= 65536 celule de memorie. Mecanisme specifice de
adresare apar la unele tipuri de microprocesoare, la care se utilizeaza combinatia mai multor
registre, pentru a obtine adresa fizica dorita (de exemplu microprocesorul 8086 - pentru
detalii, v.cap.4). Uzual, microprocesoarele de 8 biti au o adresabilitate de 64 ko (kiloocteti) de
memorie. Microprocesoarele de 16 si 32 de biti au adresabilitatea mult sporita, de la 1 M
cuvant de memorie, la 16, 32M sau chiar mai mult.


3.3.1.2 Decodificare si control

Diagrama functionala a unei sectiuni de CONTROL tipice este prezentata in fig. 3.12.
Revenim cu observatia ca, desi din punct de vedere fizic, registrele sectiunii de CONTROL
apartin sectiunii de memorie a microprocesorului, functional ele fac parte din cea dintai.
Aceste registre interne opereaza fara a fi vizibile (continutul lor nu poate fi examinat) sau
controlabile (continutul lor nu poate fi modificat direct prin program), de catre utilizator.


MICROPROCESOARE - CONCEPTE GENERALE

3-17
M A R
Registrul de instructiuni
Decodificatorul de instructiune
Generatorul de control
Ceas
Generator temporizare
T1÷T5
P C
Ceas
sistem
µP
Magistrala
de date
Magistrala
de adrese


Fig 3.12. Diagrama functionala a sectiunii de control a microprocesorului

La executia subciclurilor de fetch (extragere a cuvantului de instructiune din memorie), dupa
cum s-a specificat, continutul PC (reprezentand adresa celulei de memorie de unde se va citi
acest cuvant de instructiune), este transferat pe magistrala de adrese a sistemului.

[Uzual, exista un registru intermediar, registrul de adresa a memoriei (MAR
*
), care contine
adresa locatiei de memorie curenta cu care se lucreaza (v.fig. 3.6, si 3.8). Aceasta adresa poate
proveni fie din PC - la operatiile de fetch, fie dintr-unul dintre registrele generale ale
microprocesorului - o adresa utilizata de catre o instructiune pentru a efectua transferul de date
de la / la memorie. Registrul MAR este deasemenea un registru intern, inaccesibil
utilizatorului in mod direct prin program].

Continutul celulei de memorie adresata la operatia de fetch este transferat pe magistrala de
date, si de acolo este memorat in registrul de instructiune. Acesta memoreaza cuvantul de
instructiune pana la decodificarea instructiunii. Uzual, dimensiunea registrului de instructiune
este egala cu dimensiunea cuvantului de date al microprocesorului respectiv (8, 16 sau 32 de
biti). Dupa cum se va prezenta si pentru microprocesorul 8086, unele microprocesoare au
implementata o structura numita "pipeline" (conducta), care permite citirea in avans a mai
multor cuvinte din memoria program, ceea ce mareste viteza globala de executie a
microprocesorului (in timp ce o instructiune se executa, o alta poate fi decodificata, iar o alta
poate fi citita de catre microprocesor, daca instructiunea executata nu acceseaza magistralele
externe ale microprocesorului, tinand cont ca aceste operatii se desfasoara in sectiuni distincte
ale sistemului microprocesor si sunt practic independente una de cealalta).

BAZELE MICROPROCESOARELOR
3-18
In continuare, cuvantul de instructiune memorat de catre registrul de instructiune, este
decodificat de catre decodificatorul de instructiune. Acesta, in functie de codul citit
(combinatia binara a acestuia), determina actiunea specifica de executat. Decodificatorul de
instructiune este activat doar in subciclurile in care se stie ca informatia de pe magistrala de
date contine un cod de instructiune. Prin decodificarea codului de operatie din primul cuvant
al instructiunii, sectiunea de control "stie" daca instructiunea este formata dintr-unul sau mai
multe cuvinte. Corespunzator, acestea se citesc succesiv, pana cand intreaga instructiune a fost
transferata din memorie in microprocesor. Decodificatorul de instructiune converteste apoi
codul operatiei in secventa corespunzatoare a semnalelor de control si temporizare si
declanseaza executia propriu-zisa a instructiunii (transfer de date, operatii aritmetico-logice,
etc.). Astfel se desfasoara, in esenta, un ciclu complect al unei instructiuni.

Implementarea fizica a decodificatorului de instructiune este realizata fie prin integrare
echivalenta cu o retea de porti logice, fie cu o memorie de tip ROM, ale carei adrese sunt
selectate de catre registrul de instructiune si al carui continut, la fiecare adresa, contine
semnalele de control necesare executarii respectivei instructiuni.

Semnalele de control ale sistemului sunt obtinute in generatorul de control. Acesta, pe baza
iesirilor decodificatorului de instructiuni si ale ceasului sistemului, furnizeaza semnalele de
control pentru intreg sistemul microprocesor. Deasemenea, el supravegheaza si registrul
numarator de program (PC) care, dupa cum s-a mentionat, contine adresa urmatoarei locatii
de memorie ce se va utiliza pentru citirea programului. Deoarece PC va trebui incarcat cu o
adresa data (de exemplu, la startul sistemului, cu adresa primei instructiuni din program),
incrementat sau decrementat, modificat in functie de instructiunea ce se executa, generatorul
de control este cel mai indicat (cunoscand ce operatie se executa), pentru a-i supraveghea
functionarea. Trebuie mentionat aici faptul ca toate tipurile de microprocesoare au un pin
special, denumit RESET, care, prin activare, aduce sistemul intr-o stare initiala unica,
permitand lansarea in executie a primei instructiuni a programului (in speta, contorul de
program PC primeste o valoare fixa, cunoscuta, reprezentand adresa celulei de memorie de
unde se va citi aceasta prima instructiune; programatorul va amplasa la aceasta adresa
inceputul programului). Semnalul RESET determina si unele initializari interne ale
microprocesorului, tot sub incidenta functiei de CONTROL.

In functionarea unitatii centrale, tot sub incidenta sectiunii de CONTROL a acesteia, este
analizat semnalul de READY (gata), furnizat microprocesorului de catre o logica externa
corespunzatoare. Prin testarea valorii semnalului de READY, prin functia de CONTROL,
microprocesorul poate prelungi o instructiune pe o durata nedefinita. Aceasta se face
introducand un numar de perioade denumite de asteptare (WAIT) in subciclul curent, pana ce
semnalul de READY devine activ. Pe perioada de asteptare, semnalele de adrese si control
(eventual date, la operatia de scriere), sunt mentinute nemodificate pe magistralele sistemului.
Aceasta posibilitate este introdusa pentru a permite utilizarea corecta a elementelor externe
microprocesorului (memorii, porturi), cu timpi de selectie si acces mai mari decat ai unitatii
centrale. Astfel, la selectia unui element mai lent, doar atunci cand informatia a fost preluata
de catre acesta (la operatii de scriere) sau cand este disponibila la iesirile acestuia pe
magistrala de date (la operatii de citire), se va activa semnalul de READY al
microprocesorului. Este sarcina proiectantului sistemului de a cunoaste viteza de lucru a
MICROPROCESOARE - CONCEPTE GENERALE

3-19
diverselor elemente ale sistemului microprocesor si de a implementa sintetizarea corecta a
semnalului de READY. Trebuie mentionat ca orice operatie externa cipului microprocesor
(inclusiv citirea instructiunilor) trebuie sa asigure generarea semnalului de READY. Daca
memoriile si porturile sistemului au viteza de lucru suficient de rapida, permitand absenta
perioadelor de asteptare, si daca programul este corect (pentru a nu se ajunge la selectii
incorecte, adrese inexistente in configuratia sistemului microprocesor), se poate activa
permanent semnalul de READY, evitand configurarea unei logici de generare a acestui semnal.


3.3.1.3 Generarea semnalelor de ceas. Temporizarea operatiilor

Toate operatiile dintr-un sistem numeric se desfasoara la intervale discrete de timp. Aceasta
impune ca, pe baza unei frecvente fixe (impusa de un element exterior de tipul cristalului cu
cuart), microprocesorul sau un circuit aferent specializat sa sintetizeze semnalul de ceas al
sistemului. Acesta va determina viteza de baza de operare a sistemului. Temporizarile pentru
fiecare subciclu al ciclului microprocesorului sunt obtinute, pe baza semnalului de ceas
(prezent ca un tren continuu de impulsuri de frecventa fixa), in sectiunea de CONTROL, de
catre generatorul de temporizare (vezi fig. 3.12). Utilizand o serie de circuite de temporizare si
secventializare, acesta va coordona momentele de aparitie a diferitelor semnale de control, cat
si de vehiculare a adreselor si datelor pe magistralele sistemului. Astfel, va fi posibila selectia
corecta si la momentele de timp necesare a circuitelor exterioare unitatii centrale, asigurandu-
se transferul corect al informatiilor in sistem. In par. 3.3.1.1 s-a prezentat o structura posibila a
ciclului si a subciclurilor aferente ale unui microprocesor (v.fig. 3.11).

Frecventa normala de lucru a unui microprocesor este de ordinul megahertzilor (1--10--50)
MHz (din ce in ce mai mare, la tipurile cele mai evoluate de microprocesoare). Semnalul de
ceas este utilizat atat intern, la sincronizarea operatiilor sectiunii de control al
microprocesorului, cat si extern, pentru sincronizarea componentelor exterioare
microprocesorului, cu functionarea acestuia. Dupa cum s-a precizat deja, un ciclu instructiune
dureaza un numar dat de subcicluri, fiecare fiind format, la randul lui, dintr-un numar
specificat de perioade de ceas elementare. Cunoscand, din manualul de utilizare al unui
microprocesor, numarul si structura subciclurilor fiecarei instructiuni a acestuia, se poate
calcula, pentru o frecventa a semnalului de ceas data, durata instructiunii respective. (Aceste
calcule pot fi necesare in cazul unor aplicatii de timp real, necesitand performante ridicate in
ceea ce priveste viteza de calcul a sistemului, si deci minimizarea si optimizarea cat mai
riguroasa a programului).

Deoarece viteza de lucru a diverselor circuite de intrare, iesire, memorie, ALU, etc., este
diferita, este necesara coordonarea functionarii lor, asigurarea unor succesiuni si durate
corespunzatoare ale semnalelor vehiculate pe magistralele sistemului, pentru o functionare
corecta a acestuia. Dupa cum s-a precizat deja, este necesar ca aceste sectiuni, activate la un
moment-dat, sa fie "gata" (READY) de a efectua corect operatiile dorite. Generatoarele de
control si temporizare (v.fig. 3.12) implementeaza aceste functii, prin utilizarea unui set de
circuite de secventializare si temporizare. Toate acestea vor functiona avand la baza semnalul
de ceas de sistem. Desi tipul, denumirea si succesiunea exacta a acestor semnale difera de la
microprocesor la microprocesor, operatiile de baza, de citire si de scriere, din memorie sau
BAZELE MICROPROCESOARELOR
3-20
porturi, sunt practic aceleasi, la toate tipurile de microprocesoare. Mai mult, nu exista din
punct de vedere al semnalelor externe (adrese, semnale de control), nici o distinctie intre
operatiile de citire a codului de instructiune (fetch), si citirea datelor din memorie, la executia
unei instructiuni. Aceasta diferentiere se va face de catre sectiunea de control a
microprocesorului, intern.

Utilizarea semnalelor de citire/scriere si coordonarea temporala a lor cu celelalte semnale din
sistem, este prezentata in mod principial in continuare. Ca o remarca, se prezinta structura si
secventializarile operatiilor de citire, respectiv de scriere, din/in memorie; absolut
asemanatoare sunt operatiile de citire/scriere din/in interfetele de intrare/iesire ale sistemului.
In esenta, semnalele de control vor fi diferite, in sensul ca exista semnale distincte de citire
din memorie, sau de citire de la o interfata de intrare; similar, vor exista semnale de scriere
distincte in memorie, respectiv intr-o interfata de iesire.

Operatiile dintr-un ciclu de citire sunt (v.fig. 3.13):

1. Unitatea centrala plaseaza pe magistrala de adrese continutul registrului de adrese, prin
intermediul circuitelor tampon de iesire de pe aceasta magistrala. Uzual, intre semnalul de
ceas al sistemului si aparitia semnalelor de adrese pe magistrala va aparea o intarziere (t
ad
).
2. Dupa o intarziere specificata, t
acc
, se genereaza semnalul de citire a datelor;
3. Dupa un timp de acces t
ds
, semnalele de pe magistrala de date a sistemului sunt preluate de
catre microprocesor si memorate intr-un registru intern al acestuia. Se presupune ca circuitul
de memorie selectat poate furniza datele la iesirea sa , dupa acest timp t
ds
. In cazul unor
memorii mai lente, se vor insera perioade de WAIT (asteptare), (v.par. 3.3.1.2), pentru ca
microprocesorul sa poata citi datele corecte de la memoria selectata.

Pentru un microprocesor cu semnalul de ceas de 20MHz, valori tipice pentru t
ad
, t
acc
si t
ds

sunt de 20ns, 50ns, si respectiv 20ns. Asadar, numarul de perioade de ceas (N
r
) necesare
pentru a implementa ciclul de citire va trebui sa satisfaca conditia (t
p
= perioada semnalului
de ceas al sistemului):

N
r
⋅t
p
> t
ad
+ t
acc
+t
ds
= 90 ns (tipic).

Astfel, pentru t
p
= 50 ns, se obtine o valoare a N
r
de 1,8 perioade de ceas; tinand insa seama si
de intarzierile introduse de catre circuitele tampon de pe magistrala de adrese, t
ab
, si de cea
introdusa de catre circuitele tampon de pe magistrala de date, t
db
, o relatie mai corecta ar fi:

N
r
⋅t
p
> t
ad
+ t
acc
+ t
ds
+ t
ab
+ t
db
, ceea ce implica uzual o durata a ciclului de citire de
peste 2 perioade de ceas.

Operatiile efectuate intr-un ciclu de scriere in memorie
sunt descrise in mod similar ciclului de citire, in figura 3.14.

In aceasta figura, s-au notat cu:
t
as
= timpul de stabilire al adreselor (adresele trebuie sa fie stabile inainte de inceperea
transferului datelor);
(a) Ciclul de citire din memorie
(b) Ciclul de scriere in memorie
MICROPROCESOARE - CONCEPTE GENERALE

3-21
semnalul de
CEAS de SISTEM
adresa pe
MAGISTRALA de ADRESE
activare semnal
CITIRE (READ)
datele pe
MAGISTRALA de DATE
t
p
t
ad
t
acc
t
ds
(a)
1 ciclu masina
adrese valide
activare
citire
date valide
semnalul de
CEAS de SISTEM
MAGISTRALA de ADRESE
semnal CITIRE (READ)
MAGISTRALA de DATE
(b)
timp acces
citire

Fig.3.13. Diagramele de timp asociate unei operatii de citire din memorie. (a) forme de unda cu
considerarea intarzierilor semnalelor; (b) forme de unda idealizate
semnalul de
CEAS de SISTEM
adresa pe
MAGISTRALA de ADRESE
datele pe
MAGISTRALA de DATE
t
p
t
ad
(a)
1 ciclu masina
adrese valide
date valide
semnalul de
CEAS de SISTEM
MAGISTRALA de ADRESE
semnal SCRIERE(WRITE)
MAGISTRALA de DATE
(b)
t
ds
t
as
t
w
t
dh
semnalul de
SCRIERE (WRITE)
timp selectie
adrese
timp acces
date
timp retinere
date
durata puls
scriere

Fig.3.14. Diagramele de timp asociate unei operatii de scriere in memorie. (a) forme de unda cu
considerarea intarzierilor semnalelor; (b) forme de unda idealizate
BAZELE MICROPROCESOARELOR
3-22

t
ds
= timpul de stabilire al datelor, inainte de inceperea transferului (datele trebuie sa fie
stabile deja, inainte de inceperea transferului);
t
w
= durata pulsului de scriere (timpul necesar pentru a inscrie efectiv datele in memorie);
t
dh
= durata de mentinere a datelor, dupa disparitia semnalului de scriere.

Deoarece perioada de suprapunere a semnalelor stabile, de adrese, date, si scriere trebuie sa fie
minimum t
w
, operatia de scriere va necesita un numar minim de N
w
de perioade de ceas, dat
de relatia

N
w
t
p
> t
as
+ t
w
+ t
dh
.+ t
ad
.

In cazul unui calcul mai riguros, se obtine, luand in considerare si intarzierile introduse de
catre circuitele tampon de pe magistralele de adrese si de date, t
ab
, respectiv t
db
,

N
w
t
p
> t
as
+ t
w
+ t
dh
+ t
ab
+ t
db
+ t
ad
.

Astfel, cunoscand valoarea diferitelor intarzieri aparute in sistem, se poate calcula durata unui
ciclu complet de scriere in memorie, si numarul minim de perioade de ceas necesare.

Pentru majoritatea microprocesoarelor, ciclurile de citire sau scriere se efectueaza in 2 sau 3
perioade de ceas. Numarul total de perioade de ceas necesare pentru efectuarea unei operatii
complete de citire sau scriere din/in memorie (sau port de intrare-iesire), este uneori denumit
si ciclu masina (v.fig. 3.13.b si 3.14.b). Un ciclu instructiune, dupa cum s-a precizat deja, va
reprezenta timpul total necesar pentru extragerea, decodificarea si executia unei instructiuni.
Deoarece o instructiune poate fi reprezentata pe mai mult de un cuvant, este necesara uneori
efectuarea de mai multe cicluri de acces la memorie, la executia unui ciclu instructiune, deci a
mai multor cicluri masina.

Cu cat frecventa de lucru a microprocesorului creste, vor fi necesare si componente externe
din ce in ce mai rapide (memorii, porturi, cu timpi de selectie si acces cat mai redusi), pentru
compatibilitate cu microprocesorul respectiv, in vederea obtinerii unei performante maxime a
sistemului (evitandu-se introducerea de timpi de asteptare, WAIT, la efectuarea acestor accese
externe).


3.3.2 Functia de memorare

Dupa cum s-a mentionat, microprocesorul poate contine, in cazul cel mai general, atat
memorie ROM si RAM, cat si, ca o categorie aparte (fizic tot memorie RAM), registrele.

Acestea din urma alcatuiesc un element cu totul aparte fata de memorie, din punctul de vedere
al programarii microprocesorului. Astfel, datele memorate de catre registre pot fi manipulate,
modificate, operate in ALU, prin instructiuni specifice de operare cu registrele, sau coordonat
de catre sectiunea de CONTROL. Totodata, aceste instructiuni sunt cele mai rapide. O operatie
MICROPROCESOARE - CONCEPTE GENERALE

3-23
tipica cu un registru dureaza cateva zeci de nanosecunde, fata de sute de nanosecunde
necesare atunci cand se opereaza cu memoria externa.


3.3.2.1 Registrele microprocesorului

Se pot considera doua categorii de registre ale unui microprocesor: cele speciale si cele de uz
general. Cu exceptia registrului indicator de adresa a stivei programului (stack pointer),
registrele speciale sunt utilizate functional, in celelalte sectiuni ale microprocesorului. (De
exemplu registrul de instructiuni, registrul adresei de program --- PC etc.).

Avand uzual o lungime de unul sau doua cuvinte de date, registrele sunt folosite la stocarea
diferitelor informatii utilizate prin program, sau sub coordonarea functiei de control.
Registrele de uz general sunt adresabile de catre utilizator, si pot fi folosite pentru stocarea si
manevrarea datelor programului - operanzi, date, adrese de memorie continand date utile
programului, etc. Uzual, aceste registre contin informatiile cele mai utilizate de catre program.
Aceasta conduce la o sporire a vitezei de lucru globale a sistemului, deoarece timpii de acces
la registrele interne sunt sensibil mai redusi decat timpii de acces la memoria externa a
sistemului, dupa cum s-a mentionat. Aceste registre sunt conectate atat la alte registre interne
ale microprocesorului, cat si la magistralele externe, prin intermediul magistralelor interne si
al circuitelor tampon (v.fig. 3.15).

sunt utilizate pentru manipularea si memorarea temporara a datelor.
In general, orice registru de acest tip este accesibil programatorului, prin instructiuni specifice,
fiind posibile: incarcarea cu un cuvant dorit de date, deplasarea informatiei intre registre, sau
intre registre si memorie, rotirea continutului acestora; tratarea unei perechi de registre ca
reprezentand date pe cuvinte cu lungime dubla (la registre de 8 biti, perechi de 16 biti) si
posibilitatea operarii cu acestea.

Prezentarea organizarii si a posibilitatilor specifice de utilizare a registrelor de uz general, din
punctul de vedere al software-ului, va fi facuta ulterior, pe larg.

Selectarea registrului de uz general desemnat de o instructiune este facuta tot prin sectiunea de
CONTROL. Daca, in urma decodificarii codului operatiei, se indica o operatie cu registre, se
folosesc anumiti biti ai instructiunii, prin intermediul registrului de selectie (vezi fig. 3.15),
pentru selectarea registrului dorit.

Numarul registrelor de uz general variaza, in functie de microprocesor, in game foarte largi,
de la 2 pana la 48.

- numite si registre de lucru, sau registre interne ale microprocesorului,
au functii predefinite specifice in functionarea acestuia. Desi uneori pot fi setate la valori
initiale specificate, aceste registre nu sunt accesibile prin program, la executia instructiunilor.
Deja mentionate in aceasta categorie sunt registrele contor de program (PC), registrul de
instructiuni, registrul decodificator de instructiuni, etc.

Registrele de uz general
Registrele speciale
BAZELE MICROPROCESOARELOR
3-24
Selectie registre
R0
R1
Registre uz general
Adresa 0
Adresa 1
ROM
Adresa n
Adresa n+1
RAM
Adresa m
Magistrala
de date
Magistrala
de adrese
Magistrala
de control

Fig.3.15. Structura principiala a memoriei interne a unui microprocesor

De multe ori se utilizeaza subrutine la scrierea programelor, pentru o structurare si mai buna
organizare a acestora. Subrutinele reprezinta portiuni de program utilizate frecvent pentru a
efectua anumite operatii specifice. Subrutinele sunt apelate din diferite locuri ale programului,
evitandu-se astfel repetarea unei aceleasi secvente de instructiuni. Deoarece la randul ei, o
subrutina poate apela o alta subrutina, etc., este necesara utilizarea unui mecanism specific
pentru a se putea cunoaste adresa de revenire, la terminarea executiei unei subrutine, la
punctul din program de unde se facuse apelarea ei.

Deasemenea, in functionarea microprocesorului, pot aparea evenimente exterioare care sa
necesite o tratare imediata (de exemplu, necesitatea de a se citi valoarea unei marimi la
intervale date de timp). In astfel de cazuri, operarea curenta este oprita, iar microprocesorul
trece la executarea unei secvente speciale din program, care va efectua operatiile dorite,
conforme evenimentului aparut. Acest mod de a trata evenimentele asincrone, relativ la
desfasurarea curenta a programului microprocesorului, poarta numele de lucru in
intreruperi. Si la aparitia unei intreruperi, in esenta, se apeleaza o subrutina, specifica
intreruperii respective.
Se va face ulterior prezentarea detaliata a functionarii microprocesorului la apelarea unei
subrutine, sau la aparitia unei intreruperi. Ceea ce trebuie mentionat aici este faptul ca o
subrutina odata apelata, (din program, sau ca urmare a unei intreruperi), odata tratata, trebuie
MICROPROCESOARE - CONCEPTE GENERALE

3-25
sa permita revenirea in program, permitand continuarea acestuia din punctul de apel al
subrutinei, sau de intrerupere. In acest scop exista o zona speciala a memoriei, numita stiva
(stack), in care se stocheaza, pe perioada executiei unei subrutine, sau tratarii unei intreruperi,
adresa la care se va reveni, la terminarea acestei sectiuni speciale de program. In acest scop,
microprocesorul este prevazut cu un registru special, numit registrul indicator de adresa al
stivei programului (SP - stack pointer). El contine adresa ultimei celule de memorie RAM, in
care este salvat, la apelarea subrutinei, continutul actual al registrului contor de program (PC).
Trecerea la zona de program pentru executia subrutinei se face prin modificarea valorii PC,
care va contine adresa de inceput a acestei zone de program.

Microprocesorul va executa urmatoarea instructiune incepand de la aceasta adresa, deci va
incepe executia subrutinei (apelata prin program sau ca urmare a unei intreruperi). La sfarsitul
acestei zone de program, o instructiune specifica de revenire la programul initial va determina
readucerea in PC, din memorie, de la adresa specificata de registrul indicator al adresei stivei,
a valorii salvate a PC in momentul apelarii subrutinei. Astfel, programul va continua apoi din
punctul de unde a fost efectuat apelul subrutinei.

3.3.2.2 Memoria RAM si ROM

Dupa cum s-a mentionat, unele microprocesoare au incluse pe cip celule de memorie RAM si
ROM. Si aici, dimensiunea acestor zone de memorie este dependenta de tipul
microprocesorului; de la procesoare care nu au memorie locala, la cele cu cativa ko de
memorie ROM si cateva sute de octeti de memorie RAM. Adresele acestor celule de memorie
sunt unice. Prin intermediul magistralei de adrese se poate selecta in mod unic o celula de
memorie, sectiunea de CONTROL determinand ce anume este de facut la aceasta locatie. Daca
se doreste citirea (READ) informatiei, continutul celulei de memorie apare pe magistrala de
date. La o scriere a informatiei (WRITE), se memoreaza informatia de pe magistrala de date in
celula selectata.

Prezentarea modului de adresare si a organizarii memoriilor exterioare va fi facuta ulterior.


3.3.3 Functia aritmetico-logica

Sectiunea care efectueaza operatiile aritmetice si logice este compusa dintr-o unitate
aritmetico-logica (ALU), ce efectueaza operatia propriu-zisa, si registre speciale necesare la
manipularea si memorarea temporara a operanzilor (vezi fig. 3.16).

3.3.3.1 Unitatea aritmetico-logica (ALU)

O structura comuna a ALU este prezentata in figura 3.17. Cele doua intrari de date vor furniza
valorile celor doi (uzual) operanzi ai unei operatii aritmetice sau logice efectuate in ALU.

Intrarea de selectie a functiei provine de la sectiunea de CONTROL, si specifica operatia ce se
va efectua. In plus, intrarea semnalului de transport (carry), este utilizata la efectuarea
operatiilor aritmetice cu precizie extinsa.
BAZELE MICROPROCESOARELOR
3-26
Registru de stare
carry
Acumulator Registru de date
A L U
Magistrala
de date

Fig.3.16. Structura sectiunii aritmetico-logice a microprocesorului

Rezultat
Stare ALU
UNITATE
ARITMETICO-
LOGICA
(ALU)
Mag. date
Mag. date
intrare
CARRY
Selectie
FUNCTIE
Intrari
de date
(operatie)
(operand 1)
(operand 2)

Fig.3.17. Structura de baza a ALU

Posibilitatile ALU depind de tipul si performantele microprocesorului. Ele pot varia de la
simple operatii de adunare si scadere pe cuvinte de 8 biti si operatii logice elementare, pana la
inmultiri si impartiri pe 16 biti etc. In general insa, ALU poate efectua adunari binare, scaderi
binare, operatii logice booleene, rotatii la dreapta sau la stanga ale continutului operanzilor.
Alte operatii, mai complexe, pot fi implementate prin succesiuni de astfel de operatii simple,
printr-un software adecvat. Multe microprocesoare (mai ales de 8 biti) efectueaza operatiile de
inmultire si de impartire utilizand o serie de operatii elementare de adunare sau scadere.
Microprocesoarele recent aparute, practic toate microprocesoarele de 16 sau 32 biti, au
implementate in setul de instructiuni si operatiile de inmultire si impartire (cu numere intregi
pozitive sau in complement fata de doi). Evident, pretul acestor dispozitive va fi mai mare
decat al procesoarelor standard. Exista o singura unitate aritmetico-logica intr-un
microprocesor, si cate unul sau doua acumulatoare si registre auxiliare.

3.3.3.2 Registre pentru functia aritmetico-logica

Una dintre cele doua intrari in ALU este intotdeauna conectata la un registru de uz general, cu
utilizare specifica, denumit acumulator (A), care deci va furniza unul dintre operanzii oricarei
operatii aritmetice sau logice. In plus, dupa efectuarea operatiei, in acumulator se va transfera
rezultatul operatiei efectuate in ALU. Astfel, operandul aflat initial in acumulator se va pierde.
Unele operatii specifice se pot efectua direct cu continutul acumulatorului, cum ar fi
MICROPROCESOARE - CONCEPTE GENERALE

3-27
incrementarea sau decrementarea continutului acestuia cu 1, stergerea sa , etc. Fiind adresabil
ca oricare alt registru general, continutul acumulatorului poate fi incarcat / transferat direct sau
indirect (v.par. 3.5), din/in memoria sistemului, sau alte registre de uz general, fara a necesita
utilizarea ALU.

Pentru memorarea temporara a celuilalt dintre operanzi (in cazul efectuarii operatiilor care
necesita doi operanzi), se prevede un registru de date. Datele in registrul de date si
acumulator sunt vehiculate sub comanda sectiunii de CONTROL, dinspre / catre registrele de
uz general, sau memorie, prin intermediul magistralelor de date interna, respectiv externa.

Pentru a se cunoaste caracteristicile rezultatului unei operatii (depasirea rangului cuvantului
de date, la o adunare, de exemplu, semnul rezultatului, sau faptul ca s-a obtinut un rezultat nul
etc.), este prevazut un registru special, registrul de stare. Acest registru special, inaccesibil
direct utilizatorului, are intre 8 si 16 biti, fiecare bit avand o semnificatie aparte, si fiind
controlat de cate o structura logica specifica. Uneori acest registru este denumit si registrul
indicatorilor de conditie. Continutul bitilor individuali, denumiti indicatori de conditie (flag),
este modificat (setat sau resetat), in functie de rezultatul operatiilor efectuate in ALU. Acesti
indicatori (unii dintre ei putand fi initializati prin program, cu 1=set, 0=reset), reprezinta baza
mecanismului de luare a deciziilor de catre unitatea centrala. Continutul registrului de stare va
furniza la orice moment de timp informatii importante despre starea procesorului si rezultatele
ultimei operatii aritmetice sau logice efectuate in ALU. Desi continutul acestui registru nu este
direct accesibil prin program, executia instructiunilor conditionate de salt sau apel de
subrutina permite testarea indirecta a valorii bitilor indicatori de stare. In functie de
semnificatie, bitii de stare din registrul indicator de stare vor fi modificati prin program sau in
urma efectuarii operatiilor in ALU. In descrierea detaliata a setului de instructiuni al unui
microprocesor, se indica pentru fiecare instructiune daca si care anume dintre bitii de stare
sunt modificati, si cum, de catre instructiunea respectiva. Programatorii trebuie sa cunoasca
aceste specificatii, la elaborarea programelor implementate.

Semnificatia principalilor biti indicatori de stare intalniti la majoritatea microprocesoarelor
este prezentata in continuare.

Indicatorul de transport: este utilizat pentru a indica depasirea preciziei de lucru
a microprocesorului, in urma efectuarii unei operatii aritmetice (de exemplu, adunarea a doua
numere a caror suma depaseste dimensiunea cuvantului de date al procesorului). Rezultatul se
va memora in aceste cazuri in acumulator, cu exceptia bitului cel mai semnificativ, memorat
in indicatorul de transport (carry), utilizat astfel ca o extensie a acumulatorului. Acest bit
poate fi astfel ulterior testat, sau utilizat in operatii ulterioare ale ALU (v.fig. 3.17). Avem
CF = 1, daca rezultatul ultimei operatii in ALU a generat transport;
CF= 0, daca rezultatul ultimei operatii in ALU nu a generat transport.
Carry poate fi initializat uzual (0 sau 1), prin instructiuni specifice ale microprocesorului.
Valoarea sa se va modifica insa, in cursul efectuarii de operatii in ALU.

Indicatorul de zero: este utilizat pentru a indica faptul ca rezultatul unei operatii
Carry (CF)
Zero (ZF)
BAZELE MICROPROCESOARELOR
3-28
aritmetice sau logice a fost 0 sau nu. Acest bit nu poate fi initializat direct printr-o instructiune
specifica. Avem
ZF = 1, daca s-a obtinut rezultat nul la ultima operatie aritmetica sau logica;
ZF = 0, daca nu s-a obtinut rezultat nul la ultima operatie aritmetica sau logica.

Indicatorul de paritate: este utilizat pentru a indica tipul sumei modulo 2 a
rezultatului ultimei operatii efectuate in ALU. Astfel
PF = 0, daca rezultatul are un numar impar de biti cu valoarea 1;
PF = 1, daca rezultatul are un numar par de biti cu valoarea 1.
Acest bit este uzual testat in cadrul programelor de verificare a corectitudinii informatiilor
codificate, sau la transmisii de date.

Indicatorul de semn: este utilizat pentru a indica semnul rezultatului unei operatii
efectuate in ALU. Astfel,
SF = 0, daca s-a obtinut un rezultat pozitiv (sau zero);
SF = 1, daca s-a obtinut un rezultat negativ.
Semnul rezultatului este decis in functie de valoarea celui mai semnificativ bit al sau,
considerat ca bit de semn, numerele fiind tratate ca numere reprezentate in complement fata
de doi.

Exista si alti biti de stare specifici, cum ar fi indicatorul de activare a intreruperilor (IF), de
aparitie a depasirilor de calcul (overflow - OF), etc., numarul, tipul si semnificatia lor fiind
diferite de la microprocesor la microprocesor. In capitolul 4 se va prezenta descrierea
indicatorilor de conditii ai microprocesorului INTEL 8086.

In esenta, indicatorii de stare vor permite luarea unei decizii in functie de valoarea lor,
permitand de exemplu, efectuarea unui salt (ramificare) in program (trecerea, din punctul in
care era programul in acel moment, la o alta adresa - nu cea urmatoare - prin modificarea
explicita a continutului registrului de adresa al programului (PC), se numeste salt in program),
la o zona unde se va trata adecvat situatia respectiva.


3.3.4 Functia de intrare/iesire.

In general, dupa cum s-a mentionat, sectiunea de intrare/iesire este prezenta in mica masura la
nivelul cipului microprocesor, cu exceptia hardware-ului necesar pentru izolarea cipului de
exterior. Uzual, operatiile de intrare/iesire se fac tot prin configurarea unei adrese pe
magistrala de adrese, corelata cu generarea, de catre sectiunea de control, a semnalelor
adecvate de intrare sau iesire, permitand selectarea unica a unuia dintre elementele de
intrare/iesire (generic denumite porturi ale sistemului) si transferul in sensul dorit de la/la
microprocesor la/de la port, a datelor, pe magistrala de date. (Portul poate fi un periferic, un
convertor A/D sau D/A etc.).

Legarea mai multor semnale la acelasi bit al unei magistrale se va face, dupa cum s-a mai
mentionat, prin circuite tampon (buffere), ca in figura 3.18. Ele permit transferul de informatie
Paritate (PF)
Semn (SF)
MICROPROCESOARE - CONCEPTE GENERALE

3-29
din microprocesor in afara (pe
magistrala de adrese si de control), si
bidirectional, pe magistrala de date.
Aceste circuite cu 3 stari (tri-state),
reproduc la iesire marimea binara de
la intrare, daca li se activeaza o borna
speciala, de comanda (v.cap.2). Cand
nu sunt activate, iesirile circuitelor
tri-state sunt intr-o stare flotanta
(mare impedanta). Aceasta permite legarea iesirilor mai multor astfel de circuite impreuna, pe
fiecare linie a unei magistrale.

Selectarea unui singur buffer la un moment-dat va implica impunerea nivelului de zero sau
unu logic de catre acest circuit (in speta de catre valoarea intrarii lui), pe magistrala la care
este conectat. Transferul de informatie pe magistrale are astfel loc utilizand asemenea circuite.
Pe fiecare linie (bit) a magistralelor se gasesc iesirile circuitelor tampon uni sau bidirectionale
- in functie de tipul magistralei - ale diferitelor elemente componente ale sistemului (blocuri
ale microprocesorului - pentru magistralele interne, sau microprocesor, memorii, interfete -
pentru magistralele externe).

Trebuie remarcat inca odata faptul ca sectiunea de CONTROL raspunde de activarea
corespunzatoare a circuitelor tampon ale microprocesorului. De asemenea, in perioadele cand
acesta nu face acces la memorie sau porturi exterioare cipului, tot sectiunea de control asigura
dezactivarea circuitelor tampon (aceasta reduce consumul de putere al cipului). Selectia
circuitelor tampon externe cipului microprocesor trebuie asigurata prin decodificarea
corespunzatoare, unica, a semnalelor de adrese si control, pentru fiecare dintre componentele
din sistem.

Dezactivarea magistralelor externe ale microprocesorului are loc si in situatii speciale, cand
acestea sunt utilizate pentru transferul direct de date de la/la un periferic la/de la memoria
sistemului, fara ajutorul microprocesorului (acesta fiind in asa-numita stare de HOLD).


3.3.5 Microprogramarea

Dupa cum s-a precizat in sectiunile anterioare, un ciclu instructiune dureaza un numar de
cateva perioade de ceas, in timpul carora unitatea centrala va executa un set spcific de operatii
interne, corespunzatoare instructiunii respective. In esenta, aceste operatii se clasifica intr-una
din urmatoarele subgrupe: extragere a codului operatiei, decodificarea acestuia, extragere a
operandului, si executia instructiunii. Pentru fiecare dintre aceste etape, microprocesorul
executa un numar de operatii elementare. Combinarea acestor operatii intr-o secventa coerenta
determina executia instructiunii respective. Aceste operatii elementare, efectuate in decursul
executiei unei instructiuni, poarta numele de microinstructiuni. Memorate, dupa cum s-a
precizat deja, in zona decodificatorului de instructiuni al microprocesorului, intr-o memorie
Fig.3.18. Conectarea circuitelor tampon pe magistrala
en 2 en 1
Bit al magistralei
i i
1
2
en n
i
n
BAZELE MICROPROCESOARELOR
3-30
de tip ROM, aceste microinstructiuni nu sunt accesibile utilizatorului. De fapt,
microprocesorul va executa o inlantuire de asemenea microinstructiuni, similar unei subrutine,
la executia fiecarei instructiuni. Inlantuirea microinstructiunilor, specifica executiei fiecarei
instructiuni, este o caracteristica a microprocesorului, si este fixa, pentru microprocesoarele
uzuale, fiind implementata intern, fix, in structura hardware a acestuia. Exista insa si
microprocesoare speciale, (de exemplu microprocesoarele bit-slice), la care utilizatorul isi
defineste singur setul de instructiuni, pe baza unui set de microinstructiuni elementare
acceptate de catre microprocesor. Oferind flexibilitate sporita (se poate configura un set de
instructiuni specific, adaptat unei aplicatii date), aceasta solutie prezinta dezavantajul
implementarii software a setului de instructiuni, ceea ce reduce in esenta viteza de lucru
globala a sistemului. Marea majoritate a microprocesoarelor uzuale au un set de instructiuni
fix, impus de catre firma constructoare.

Figura 3.19 prezinta desfasurarea microoperatiilor intr-un microprocesor fictiv, la executia
unei operatii de adunare a doua numere aflate in memorie, si de memorare a rezultatului intr-
o alta celula de memorie. Se evidentiaza operatiile necesar a fi efectuate, la executia propriu-
zisa a instructiunii (deci dupa citirea si decodificarea cuvantului de instructiune).

M2
B
M3
Magistrala date
TR2
X
ALU
X
inactiv
M1
A
A
TR1
M3
Magistrala date
ALU
X
inactiv
M1
A
A
TR1
M2
B
M3
Magistrala date
ALU
X
activ
M1
A
A
TR1
M2
B
Magistrala date
TR2
B
M1
A
A
TR1
(a) (b)
(c)
(d)
M2
B
TR2
B
TR2
B
A + B
ALU
Cod
adunare
A + B
ALU
M3
A+B
Fig. 3.19. Microinstructiunile executate la adunarea a doua numere din memorie:
(a) citirea primului operand; (b) citirea celui de-al doilea operand;
MICROPROCESOARE - CONCEPTE GENERALE

3-31
(c) adunarea celor doua numere; (d) salvarea rezultatului in memorie
S-au notat cu TR1 si TR2 doua registre temporare, utilizate pentru stocarea operanzilor cititi
din cele doua celule de memorie, M1 si M2. Rezultatul adunarii celor doua numere se
memoreaza in celula de memorie de la adresa M3. Dupa cum se remarca, pentru executia
acestei instructiuni, ar fi necesare 4 microinstructiuni:

(1) citirea primului operand (A), din celula de memorie de la adresa M1 (fig. 3.19.a);

(2) citirea celui de-al doilea operand (B), din celula de memorie de la adresa M2 (fig. 3.19.b);

(3) efectuarea operatiei de adunare in ALU, C = A+B; (fig.3.19.c);

(4) memorarea rezultatului (C) in celula de memorie de la adresa M3 (fig.3.19.d).


3.4 MEMORIA INTERNA A SISTEMULUI MICROCALCULATOR

Memoria interna a sistemului microcalculator reprezinta o parte componenta esentiala a
acestuia. Ea este utilizata pentru memorarea programelor executate de catre microprocesor, si
pentru vehicularea datelor si rezultatelor diferitelor operatii efectuate. Denumita memorie
principala a sistemului, capacitatea sa depinde de tipul microprocesorului utilizat, fiind uzual
de maxim 64 ko si ajungand pana la 1 Mo (sau mai mult, la noile tipuri de microprocesoare,
unde sunt utilizate capacitati maxime de 8, 16, 64 M cuvinte de memorie).

Timpul de acces
1
al memoriei, variind intre cateva zeci, uzual sute de nanosecunde, si
microsecunde, este dependent de tipul de memorie utilizat. Dupa cum s-a precizat, efectuarea
operatiilor interne ale procesorului necesita timpi foarte scurti de acces la elementele de
memorie locala (registre), de ordinul zecilor de ns, deci ca viteza de lucru, memoria principala
a sistemului microcalculator, externa cipului microprocesor, se situeaza imediat dupa
elementele de memorie interna a microprocesorului (registre, RAM, PROM de pe cip).

Ne vom referi in cele ce urmeaza la tipurile si caracteristicile acestor circuite de memorie,
utilizate pentru implementarea memoriei principale, situate in afara cipului microprocesor.

Accesul la memoria principala (externa cipului microprocesor) necesita timpi de acces impusi
de durata subciclurilor si a ciclurilor instructiune ai microprocesorului. Astfel aceasta
memorie trebuie sa poata furniza/receptiona informatii la viteza cu care poate lucra
microprocesorul (citire de instructiuni, date, prelucrari, memorari rezultate). Memoriile lente
introduc perioade de asteptare (WAIT) care micsoreaza viteza globala a sistemului.

Trebuie reamintit ca unele tipuri de microprocesoare --- de exemplu INTEL 8086 --- poseda
facilitatea citirii si memorarii interne a unui set de mai multe cuvinte de instructiune
succesive, paralel cu desfasurarea unor operatii interne (pipeline). Aceasta suprapunere a

1
Timp de acces la o memorie: intervalul de timp intre momentul selectarii acesteia si momentul disponibilitatii la
iesirea memoriei a datei cerute (la citire), respectiv momentul memorarii datei (la scriere).
BAZELE MICROPROCESOARELOR
3-32
operatiilor mareste viteza globala a sistemului, necesitand totodata utilizarea unor memorii
mai rapide).

Acele informatii care sunt necesare relativ rar si care ocupa un volum mare de memorie sunt,
in mod uzual, memorate pe elemente de memorie externe, de tipul banda sau disc magnetic,
cu timpi de acces de ordinul milisecunde pana la secunde, dar cu un pret per bit de informatie
memorat substantial redus.

Din punct de vedere al accesului la memorie, se poate defini:

• Accesul aleator, care permite operarea directa cu elementul de memorie dorit. Caracteristic
accesului aleator este timpul de acces maxim identic, pentru orice celula adresata.
• Accesul secvential, care necesita o trecere ciclica prin toate locatiile anterioare celei dorite.
Evident, timpul de acces este variabil, in functie de locul unde se afla celula cautata in
memorie (ca exemplu tipic de memorie cu acces secvential, putem mentiona banda, caseta
magnetica).

Din punct de vedere al modului de operare, memoriile se pot imparti in:
• Memorie RAM, continand informatii temporar memorate ce pot fi modificate oricand in
cursul operarii.
• Memorie ROM, continand informatii fixe, nemodificabile, ce pot fi furnizate doar catre
microprocesor (pot fi citite de catre acesta).


3.4.1 Memorii RAM

Dupa cum s-a precizat, memoria RAM stocheaza informatii variabile. Unitatea centrala, sub
controlul programului, poate citi sau modifica continutul unei celule de memorie RAM, dupa
dorinta. Memoria RAM poate fi de doua feluri: statica sau dinamica.

Retine informatia prin incarcarea cu sarcina electrica a capacitatii
portii unui tranzistor MOS. Deoarece sarcina acumulata pe capacitate scade in timp, prin
descarcarea acesteia, informatia se va pierde daca nu se reface periodic. Aceasta operatie de
reimprospatare (refresh) a memoriei RAM dinamic, depinde de valoarea constantei RC a
circuitului, (uzual de 1--2 milisecunde, cu C de ordinul fractiunilor de picofarad) si depinde de
tipul de memorie utilizat.

Reimprospatarea are loc prin efectuarea
unei operatii de citire, pe durata careia,
de obicei, este oprit accesul procesorului
la circuitul de memorie respectiv.
Aceasta inaccesibilitate pe perioada de
reimprospatare ocupa 1--5% din timpul
total de lucru al memoriei dinamice.

(Structura de principiu a unei celule
Memoria RAM dinamic
Fig.3.20. Structura unei celule de memorie RAM
dinamice Selectie celula
memorie
Intrare
data
Iesire
data
MICROPROCESOARE - CONCEPTE GENERALE

3-33
tipice de memorie dinamica este prezentata in figura 3.20).

Data
Selectie
celula
memorie
Data
Data
Data
Selectie
celula
memorie
Vcc
Vdd
a b
+ V
c

Fig.3.21. Structura unei celule de memorie RAM statice:
a) tehnologie bipolara; b) tehnologie MOS; c) tehnologie CMOS.

Nu necesita reimprospatare; celulele de memorie sunt bistabile, similare ca schema de
principiu cu bistabilele conventionale. Figura 3.21 prezinta implementarea unor celule de
memorie RAM static, in diverse tehnologii.

Memoria dinamica prezinta doua mari avantaje fata de cea statica:

(a) consumul de putere mult mai redus (cand nu este adresata, consuma putere doar pe
perioadele de reimprospatare); (b) numarul de tranzistori pe celula mai mic, deci se obtin
densitati mult mai mari de celule de memorie pe cip.

Memoria statica nu necesita circuite externe speciale si nu prezinta probleme de sincronizare
a ciclurilor de reimprospatare cu operatiile normale de citire/scriere ale unitatii centrale.

Deoarece memoriile RAM sunt memorii volatile, al caror continut se pierde odata cu pierderea
tensiunii de alimentare, apare uneori necesitatea prevederii alimentarii auxiliare a acestora, de
la baterii. In aceste cazuri, consumul de putere al memoriei devine un element precumpanitor
in alegerea solutiei, preferandu-se memorii RAM dinamic, sau RAM static de tehnologie
CMOS.

In functie de tip, cipurile de memorie pot fi organizate pe cuvinte de 1, 2, 4 sau 8 biti. Figura
3.22 prezinta o structura tipica a unei memorii RAM statice, in acest exemplu de 64x8
1

cuvinte de memorie. Pentru a selecta in mod unic un cuvant de memorie dintre cele 64, vor fi
necesari (64 = 2
6
) 6 biti de adresa.

Prin intermediul decodificatorului intern de adresa, acestia vor permite selectia unica a
cuvantului de memorie dorit. Furnizat de catre logica de control a microprocesorului,

1
64x8 simbolizeaza 64 cuvinte de memorie de cate 8 biti fiecare
Memoria RAM static
BAZELE MICROPROCESOARELOR
3-34
semnalul de R/ W (citire/scriere)
2
, va indica logicii interne a cipului de memorie sensul
transferului de informatie, permitand comanda adecvata a circuitelor tampon ale memoriei,
determinand totodata actiunea de inscriere a datelor prezente de pe magistrala de date, pe pinii
de date ai cipului, in celula selectata, la operatia de scriere, respectiv transferarea continutului
celulei selectate, pe pinii de date ai cipului, spre magistrala de date, la operatia de citire.
Decodificator
intern
de adrese
Bloc de
control
R/W
CS
__
6
Matrice
memorie
Circuit
tampon
8
Magistrala
de adrese Magistrala
de date

Fig.3.22. Structura unui circuit RAM static de 128 octeti

In ceea ce priveste structura interna a unui asemenea circuit de memorie, o celula elementara
(bit) de memorie, de tip static (registru), este prezentata in fig. 3.23. Daca se efectueaza o
operatie de scriere (WRITE), valoarea datei de intrare (DATA INPUT) este memorata de catre
registru. Daca se efectueaza o operatie de citire (READ), continutul registrului este transmis
la iesirea de date (DATA OUTPUT), prin comanda circuitului tampon de iesire. Deoarece
operatiile de citire sau scriere nu se efectueaza simultan, se utilizeaza uzual un singur semnal,
de tipul celui din figura (R/ W), cu actiuni complementare in functie de valoarea sa logica: 1 =
citire, 0 = scriere. Aceasta celula de memorie stocheaza doar un bit de informatie, deci retine
doar data inscrisa la ultima operatie de scriere. Totodata, operatiile de citire nu afecteaza
valoarea inscrisa in celula de memorie.


2
se va conveni reprezentarea barata a semnalelor a caror semnificatie este indeplinita cand iau valoare logica "0"
(active pe zero), si nebarate, cand sunt active pe "1" --- de exemplu, citire/scriere va insemna operatie de citire,
daca acest semnal are valoare logica 1, si operatie de scriere pentru valoare logica 0.
MICROPROCESOARE - CONCEPTE GENERALE

3-35
DATA
DE
INTRARE
DATA
DE
IESIRE
______
"1" pt. CITIRE
CITIRE / SCRIERE
1 pt. CITIRE 0 pt.SCRIERE
"0"pt.SCRIERE


Fig. 3.23. Structura unei celule de memorie cu capacitate de un bit
Pentru a memora un cuvant de date de n biti, (de exemplu un octet), se conecteaza n asemenea
celule ca in figura 3.24. Aceasta permite accesul simultan la cele n celule de memorie, datele
fiind inscrise sau citite in paralel din toate celulele cuvantului de date astfel configurat. Se
remarca faptul ca in acest caz va fi necesar doar un singur semnal R/ W, aplicat tuturor
celulelor de memorie simultan.
______
bit7
bit1
bit0
bit7
bit1
bit0
Intrare
Iesire
CITIRE / SCRIERE

Fig. 3.24. Structura unui cuvant de memorie RAM.
Pentru a putea configura cipuri cu capacitati de memorie sporite, celulele acestora se
organizeaza de obicei intr-o matrice ca in figura 3.25, in care bitii de adresa se utilizeaza uzual
divizat, pe linii si coloane, ce se decodifica astfel incat sa se asigure, pentru fiecare adresa,
selectia unica a unei celule de memorie a cipului.
BAZELE MICROPROCESOARELOR
3-36
992
celula
memorie
de un bit
0 1 2 3 31
Decodificator pentru adresa coloana
selectie
coloana
993 994
995
96
97 98
99
127
64 65 66 67 95
32 33 34
35
63
0 1 2 3 31
selectie rind
Decodi-
ficator
pentru
adresa
rind
31
3
2
1
0
MAGISTRALA ADRESE MEMORIE
9 8 7 6 5 4 3 2 1 0

Fig. 3.25. Configuratia unui circuit de memorie cu o capacitate de 1024 celule (biti).
Circuite scriere
Circuite
citire
4
CS WE
OPERATIA
CS
WE
3
2
1
CITIRE
SCRIERE
0 0 SCRIERE INTRARE
0 1 CITIRE IESIRE
1 0
1 1
} } INACTIV
INALTA
IMPEDANTA
SENS TRANSFER
DATE

Fig. 3.26. Utilizarea tipica a semnalelor de control (citire/scriere, selectie de cip), la o memorie RAM.

MICROPROCESOARE - CONCEPTE GENERALE

3-37
Structura si utilizarea de principiu a liniilor de control ale unui circuit de memorie sunt
prezentate in figura 3.26. Dupa cum se poate remarca din schema circuitului, cat si din tabela
de functionare a circuitului, semnalul R/ W va selecta corespunzator valorii sale circuitele de
citire (pentru 0 logic) sau scriere (pentru 1 logic), care vor asigura transferul corect al datelor
din/in celula de memorie selectata conform adresei prezente pe bitii de adrese ai cipului. Se
mai remarca utilizarea unui pin special, CS (Chip Select = selectie de cip). Doar cand acest
semnal este activ (0 logic in acest caz), este validata operatia de citire sau scriere din/intr-o
celula de memorie a cipului respectiv (dupa cum se poate remarca si din tabela de functionare
a cipului, din figura 3.26). Daca semnalul de selectie de cip CS este inactiv (1 pentru
exemplul abordat), nu se efectueaza nici o operatie cu nici o celula de memorie a cipului
respectiv (atat operatia de citire (READ) cat si cea de scriere (WRITE) sunt inhibate.

Structura de principiu a memoriilor RAM dinamice este asemanatoare cu cea a memoriilor
RAM static prezentate anterior, in ceea ce priveste modul de organizare si conectare a
celulelor de memorie ale cipului. In esenta, structura cipului este tot de tip matricial, celulele
fiind plasate pe o retea de linii (row) si coloane (column). In plus fata de memoriile RAM
statice, prin modul de organizare al cipurilor de RAM dinamic, in vederea reducerii timpului
necesar reimprospatarii continutului celulelor (refresh), ori de cate ori este selectata o linie a
matricii de celule, continutul tuturor celulelor de pe acea linie este reimprospatat. Astfel,
reimprospatarea se face linie cu o linie, ceea ce conduce la structuri cu un numar redus de
linii, si la scheme interne speciale, utilizand tehnici de multiplexare a schemei de adresare
interne a cipului (v.fig. 3.27). Bitii de adresa ai cipului se multiplexeaza, sub controlul unui
selector bidirectional, permitand selectia unei linii si apoi, succesiv, a tuturor coloanelor
matricii de memorie.
LATCH ADRESA RIND
LATCH
ADRESA
COLOANA
Selectie
Adresa
Coloana
Selectie
Adresa
Rind

( RAS )

( CAS )
CONTROL
RIND/COLOANA
COLOANA
RIND
MAGISTRALA ADRESE MEMORIE

Fig.3.27. Multiplexarea liniilor si coloanelor unui circuit de memorie RAM dinamic.

BAZELE MICROPROCESOARELOR
3-38
Trebuie remarcat ca, in cazul memoriilor cu mai putini biti pe cuvant decat cei ai cuvantului
microprocesorului, se vor conecta in paralel numarul necesar de cipuri, pentru a se obtine
lungimea dorita a cuvantului de memorie.

Figura 3.28 prezinta in acest sens un exemplu de formare a unei memorii de 2k x 8 biti, din
circuite de 2k x 4 biti. Se observa conectarea acelorasi semnale de adrese si control la cele
doua cipuri. Semnalele de date vor fi insa cuplate pentru primii 4 biti la primul cip, respectiv
pentru urmatorii 4 biti la cel de-al doilea. O operatie cu o celula de memorie de la o anumita
adresa va determina selectia simultana, in cele doua cipuri, a celulelor cu aceeasi adresa;
astfel, efectuand in paralel transferul de informatie in/din ambele celule, se obtine o operatie
pe 8 biti.
Decodificare
adrese sup.
2k x 4
Magistrala de adrese
CS
R / W
----
---
A0 A10
CS
R / W
---
2k x 4
16 11
5
---
Magistrala de date
8
4 4
A11 A15
A0 A10
D0 D3
D4 D7
µ P
÷
÷
÷
÷
÷

Fig.3.28. realizarea unei memorii 2k x 8 biti, cu doua circuite de 2k x 4 biti
Din punctul de vedere al microprocesorului, ansamblul celor doua cipuri de memorie vor
reprezenta un singur circuit, deoarece orice operatie de citire sau scriere efectuata la una dintre
adresele celulelor continute de catre cele doua cipuri va determina efectuarea transferului in
paralel, simultan, de la/catre cele doua circuite. Conectarea distincta a acestora pe magistrala
de date a sistemului va realiza operatiile pe un cuvant de date simultan (8 biti in cazul
exemplului din fig. 3.28).

Dupa cum se poate remarca si din figura 3.28, in procesul construirii memoriei RAM sau
ROM a sistemului, din mai multe elemente (cipuri), fiecare avand o anumita capacitate, uzual
mai mica decat capacitatea maxima de adresare a microprocesorului, adresarea trebuie facuta
la doua nivele. Trebuie astfel selectat intai cipul in care se va gasi cuvantul de memorie dorit.
Prin configurarea a bitilor de adresa ai acestuia, se selecteaza apoi celula dorita din cip.

Primul nivel de adresare se numeste adresarea de selectie a cipului ( CS - Chip Select).

Plecand de la considerentul unicitatii unei celule de memorie in cadrul sistemului
microprocesor, se va proceda dupa cum urmeaza:

Se vor grupa bitii de adresa in doua categorii: cei inferiori vor fi aplicati direct bitilor de
adresa ai cipurilor de memorie (astfel, pentru o memorie de 2k x 8, se vor utiliza 11 dintre
MICROPROCESOARE - CONCEPTE GENERALE

3-39
bitii de adresa, direct pe cip; 2k=2
11
). Restul de biti de adresa, superiori, vor fi utilizati intr-o
logica de decodificare (vezi fig. 3.29).

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Bitii superiori de adresa utilizati la
obtinerea selectiei de chip (CS)
Bitii inferiori de adresa,conectati
direct la pinii memoriei

Fig.3.29. Utilizarea tipica a bitilor de adresa pentru paginarea memoriei sistemului microprocesor

Aceasta va permite obtinerea unor semnale logice de selectie de cip ( CS), in numar de (fie o
magistrala de 16 biti de adresa) 2
(16-11)
= 2
5
= 32. Se spune ca memoria s-a paginat in 32 de
pagini (blocuri) de cate 2k x 8 cuvinte. Corespunzator unei combinatii din cele 32 posibile,
data de bitii superiori de adresa, se obtine o selectie unica, la un moment-dat, a unuia dintre
cele 32 de cipuri. Acest lucru este posibil, deoarece, pe langa semnalele uzuale (biti de adresa,
de date, de scriere-citire), cipurile de memorie poseda un pin special (unele tipuri de memorie,
mai multi pini) de selectie de cip ( CS in fig. 3.22, 3.28, 3.30.a). Doar daca pe acest pin se
aplica un nivel logic dorit (in cazurile exemplificate, 0 logic
1
), se va selecta, conform
informatiei de adresa si control de pe pinii cipului de memorie, celula dorita. Evident, logica
de decodificare trebuie sa elimine in mod obligatoriu posibilitatea selectiei simultane
multiple (deci a aparitiei la doua cipuri, pentru o aceeasi adresa, a semnalului de cip select).
Aceasta ar determina la o citire din memorie, iesirea pe magistrala de date a informatiei din
cele doua celule de memorie, expunand respectivele cipuri la riscul de a se distruge, pe de o
parte, si furnizand o informatie falsa microprocesorului, deci alterand buna functionare a
sistemului, pe de alta parte.

Figura 3.30.a prezinta structura de principiu a memoriei intr-un asemenea sistem. In figura
3.30.b este redata tabela de adrese ale cipurilor. Astfel, primul cip va contine celulele de
memorie cu adresele intre 0 si 2047 (sau, in reprezentare hexazecimala uzual intrebuintata, de
la 0 la 07FFH), al cincelea, de exemplu, adrese intre 2000H si 27FFH
1
, etc. Dupa cum se
observa in tabelul de configurare a semnalelor de selectie de cip din figura, indiferent de
combinatia bitilor inferiori de adresa (A0÷A10) - simbolizati din acest motiv cu x
2
- fiecare
combinatie a bitilor superiori de adresa (A11÷A15) va determina generarea cate unuia dintre
cele 32 de semnale de selectie de cip.

1
semnalul fiind barat, implica selectia de cip pentru CS = 0
1
1000H = 4k de memorie; 400H = 1k de memorie
2
x = indiferent (don't care)
BAZELE MICROPROCESOARELOR
3-40
µP
Magistrala
de adrese
Magistrala
de date
Decodificare
A0
÷
A10
CS
2k x 8
R/W
A0÷ A10
CS
2k x 8
R/W
A0÷ A10
CS
2k x 8
R/W
R/W
0 1
31
5 32
÷
CS0
CS1
CS31
(a)
CS0
Configuratie adresa
A15 A14 A13 A12 A11 A10 A9 ... A0
CS1
CS2
CS31
0 0 0 0 0 x x ... x
0 0 0 0 1 x x ... x
0 0 0 1 0 x x ... x
1 1 1 1 1 x x ... x
CS
x-adresa variabila
0-0 logic
1-1 logic
(b)
A11 A15 ÷
16
5
11 11 11
.
.
.
.
.
.

Fig.3.30. (a) Organizarea unei memorii de 64k x 8, pagini de cate 2k x 8 biti; (b) Configurarea adreselor.
Se remarca astfel din figura modul de grupare a adreselor microprocesorului: bitii superiori
(A11÷A15) sunt decodificati pentru a furniza cele 32 de selectii de cip (doar unul dintre cele
32 de semnale de selectie de cip este activ la un moment dat); bitii inferiori (A0÷A10) sunt
utilizati pe pinii de adrese ai tuturor cipurilor de memorie. La efectuarea unei operatii de
transfer de date de la/la o adresa de memorie, selectia de cip (data de bitii de adresa superiori),
combinata cu selectia celulei interne (data de bitii de adresa inferiori), si cu semnalul de
control al directiei transferului R/ W, vor determina selectia unica a unei celule de memorie,
si deci vor asigura functionarea corecta a schemei.

Bineinteles, nu toata memoria sistemului trebuie sa fie organizata din cipuri de aceeasi
capacitate. Un exemplu de organizare cu memorii diferite va fi dat in paragraful urmator.


3.4.2 Memorii ROM

MICROPROCESOARE - CONCEPTE GENERALE

3-41
Desemnand initial memorii cu continut fix, nealterabil, termenul de memorie ROM si-a
imbogatit semnificatia odata cu aparitia mai multor tipuri diferite de astfel de circuite.
Informatia prezenta in memoriile ROM nu se modifica, nici in cazul unor operatii de scriere
accidentala in ele (operatie nepermisa, de altfel), nici la disparitia tensiunii de alimentare a
acestora.

Memoriile ROM se impart in trei grupe: prima cuprinde memoriile ROM programate de catre
producator, dupa cerintele utilizatorului, prin realizarea unor masti de programare specifice
fiecarui set de circuite realizat. Ele reprezinta solutia finala, implementata in produse de cel
putin cateva sute de bucati (pentru a fi economica). Orice modificare ulterioara dorita
presupune comanda unui nou set de memorii, realizate adecvat.

O a doua clasa de memorii ROM este reprezentata de circuitele PROM
1
, care sunt programate
individual, de catre utilizator. Programarea acestora este realizata prin distrugerea selectiva,
conform informatiei ce se memoreaza, a unor micro-fuzibile, prin aplicarea unor tensiuni mai
mari, de programare, pe bitii doriti (vezi fig. 3.31). Dupa programare, la citirea din memorie,
dupa mecanisme similare de adresare si selectie a celulelor, cu cele de la memoriile RAM,
continutul celulei selectate va fi transmis pe magistrala de date a cipului. Informatia va avea
valoare logica "0" pentru celulele cu fuzibilul distrus, respectiv "1" pentru celulele cu fuzibilul
intact (in starea initiala, circuitul contine in toate celulele, valoarea "1" - fuzibile intacte).

Nici in cazul circuitelor PROM, informatia odata memorata nu mai poate fi modificata.

Posibilitatea reprogramarii memoriilor ROM este oferita de catre cea de-a treia grupa de astfel
de circuite, memoriile EPROM
2
. Acestea retin informatia ca o sarcina intr-o celula MOSFET,
putand fi stearsa, prin expunerea cipului (acesta este prevazut cu o "fereastra" de cuart, in zona
celulelor de memorie), la o sursa de radiatii ultraviolete. Dupa stergere, cipul poate fi
reprogramat.

1
PROM: programmable ROM --- ROM programabil
2
EPROM: erasable PROM --- memorie PROM reprogramabila
BAZELE MICROPROCESOARELOR
3-42
Bitii de
adresa
Iesire de date
Circuit tampon
C S
__
D
E
C
O
D
I
F
I
C
A
T
O
R
+V
1111
1001
1011
1001
n

Fig.3.31. Schema de principiu a unui circuit de memorie PROM (nx4 biti).

Celulele memoriilor EPROM nu au conexiuni electrice (tranzistoare cu baza flotanta).
Aplicarea unor pulsuri de tensiuni mai mari (25÷50 V) pe pinii de date corespunzatori,
concomitent cu selectia unei celule a cipului, determina injectia unor electroni de mare energie
in baza flotanta a celulei selectate, ceea ce este echivalent cu comanda tranzistorului, care
astfel intra in starea de conductie. Electronii respectivi raman blocati la disparitia pulsului de
programare, lasand celula respectiva programata. La aplicarea unor radiatii ultraviolete asupra
cipului (prin fereastra de cuart a acestuia), se genereaza un fotocurent intre baza flotanta a
celulelor de memorie si substratul de siliciu al cipului. Aceasta readuce celulele in starea
initiala, neprogramata ("1" in toate celulele).

Acest tip de memorii este utilizat cu precadere in etapa de dezvoltare si testare a sistemului
sau a unei aplicatii. Timpul de pastrare a informatiilor in memoriile EPROM este de ordinul
anilor, chiar al zecilor de ani. Operatia de stergere si reprogramare a acestor circuite poate fi
repetata de zeci, chiar sute de ori. Procesul de programare a memoriilor EPROM se face cu
ajutorul unui montaj special, denumit programator de EPROM-uri, montat in si coordonat de
catre un microcalculator de uz general (sistem de dezvoltare, v. cap. 3.5), care va coordona
procesul de programare, transmitand datele ce se inscriu in memoria EPROM.

O versiune mai noua de circuite reprogramabile este oferita de catre memoriile EEPROM
1

sau de catre memoriile flash. Acestea permit modificarea dorita - reprogramarea informatiei
(in general selectiva), prin utilizarea unor semnale electrice, in locul radiatiei ultraviolete.

1
EEPROM: electrically erasable PROM --- PROM ce poate fi sters electric
MICROPROCESOARE - CONCEPTE GENERALE

3-43
Astfel, modificarile pot fi facute chiar in cursul executiei programului, ceea ce mareste
sensibil utilitatea acestor circuite (valori ale unor parametri modificati de catre utilizatorul
sistemului, sau parametri de control ai unui proces, determinati in urma unor teste, sau
parametrii de stare ai unui sistem, etc)., pot fi salvati in aceste memorii nevolatile; dupa
oprirea alimentarii sistemului - deconectare, sau avarii - la realimentarea acestuia, valorile
salvate pot fi citite din aceste memorii si utilizate la reluarea programului, utilizand ultimele
valori, actualizate, ale acestor parametri).

C S
Magistrala
de adrese
Magistrala
de date
Matrice
memorie
Circuit
tampon
10
Decodifi-
cator
intern de
adrese
á

Fig.3.32. Structura unui circuit de memorare PROM/EPROM de 1kx8 biti.

Figura 3.32 prezinta structura principiala a unei memorii PROM de 1kx8 biti. Se remarca
disparitia pinului de R/ W (operatia de scriere neavand sens). De aceea, proiectantul
sistemului microprocesor trebuie sa asigure formarea selectiei de cip (CS), atat din bitii
superiori de adresa cat si din semnalul de citire din memorie. Daca s-ar folosi doar semnalele
de adresa la obtinerea semnalului CS, informatia din celula de memorie selectata ar fi
transmisa la iesirea cipului, pe magistrala de date, si in cazul unei operatii de scriere; in acest
caz, microprocesorul ar transmite deasemenea informatii (date) pe magistrala de date. S-ar
ajunge astfel la un conflict pe magistrala de date, intre semnalele provenind de la cele doua
surse (memorie si microprocesor). Pe de o parte, informatia pe care microprocesorul ar incerca
s-o inscrie intr-o celula de memorie nu s-ar inscrie niciunde (memoria PROM neputand fi
modificata fara aplicarea tensiunilor speciale de programare), iar pe de alta parte, conflictul de
date de pe magistrala poate duce la distrugerea unora dintre circuitele componente (memoria
sau microprocesorul).

Este absolut interzis, intr-o proiectare corecta, sa existe posibilitatea ca, printr-o operatie
software (deci prin program), indiferent care ar fi aceasta operatie, sa poata aparea o situatie
ce poate pune in pericol integritatea hardware a sistemului. Utilizarea, alaturi de bitii
superiori de adresa, a semnalului de control de citire (READ), pentru sinteza semnalului de
selectie de cip (CS), va elimina asemenea situatii inacceptabile.

Uzual, memoriile ROM sunt organizate pe cuvinte de cate 8 biti. Capacitatea de memorare,
avand valori curente de 2ko, poate creste pana la 32 ko, si chiar mai mult.

BAZELE MICROPROCESOARELOR
3-44
Gama de aplicatii a acestor circuite, practic nelimitata, cuprinde memorare de programe ale
sistemului microprocesor, generare de coduri pentru caractere alfanumerice si simboluri
grafice, trecerea dintr-un cod intr-altul, memorare de tabele de constante, valori tabelate ale
unor functii necesare aplicatiei, etc.

Dupa cum s-a precizat in capitolul 1, utilizarea memoriilor PROM (cat si a circuitelor PLD ---
ce contin si elemente de memorie RAM si se programeaza pentru implementarea unor functii
logice diverse) permite inlocuirea tot mai accentuata a functiilor implementate prin circuite
logice traditionale.

Se remarca deasemenea solutia unora dintre producatorii de circuite integrate VLSI, de a
implementa pe acelasi cip atat elemente de memorie, cat si porturi de intrare/iesire
programabile, circuite de ceas programabile etc., imbogatind posibilitatile de utilizare ale
circuitului.


3.4.3 Organizarea tipica a memoriei sistemului microprocesor

Structura uzuala a memoriei unui sistem microprocesor cuprinde atat memorii RAM cat si
memorii ROM. Organizarea si dimensiunile acestora depind de aplicatia in care se utilizeaza
sistemul. Zonele de adrese ocupate de memoria RAM si ROM depind de proiectantul
sistemului, de regula memoria ROM continand adresa la care trebuie sa se gaseasca prima
instructiune din program, la care microprocesorul face acces dupa primirea unui semnal de
RESET.

Pentru exemplificare, consideram o structura continand o memorie de 64 ko, organizata in 60
ko memorie PROM si 4 ko memorie RAM (fig. 3.33).

Se considera utilizarea unor cipuri de 4 ko memorie PROM si de 512 octeti memorie RAM.
Se remarca utilizarea ultimilor 4 biti de adresa superiori (A15÷A12) pentru impartirea
memoriei in blocuri de 4 ko.

Primele 15 dintre cele 16 combinatii posibile ale acestor biti de adrese sunt utilizate pentru
selectia memoriei PROM (generarea celor 15 semnale CSP14 la CSP0 , de CS ale celor 15
cipuri de memorie PROM), bitii inferiori de adresa A11÷A0 fiind aplicati direct pe pinii de
adresa ai memoriilor PROM.

Ultimul semnal de selectie, B15, impreuna cu urmatorii 3 biti de adresa (A11÷A9), permite
selectia cipurilor de memorie RAM [care au cate 512 octeti, deci 9 biti de adresa direct pe cip
(A8÷A0), si 7 pentru obtinerea selectiei de cip (A15÷A9)] - semnalele CSR0 la CSR7 .

Asadar, memoria PROM ocupa primii 60 ko ai memoriei sistemului, iar memoria RAM,
ultimii 4 ko. Se remarca utilizarea decodificarii in doua etape a adreselor superioare, pentru
memoria RAM. Memoria este astfel organizata in 15 pagini de cate 4 ko pentru PROM, si 8
MICROPROCESOARE - CONCEPTE GENERALE

3-45
pagini de cate 512 octeti, situate in pagina a 16-a de 4 ko, a memoriei globale, pentru memoria
RAM.

Se remarca deasemenea utilizarea semnalului de R/ W pentru validarea semnalelor de selectie
a circuitelor PROM, doar pentru operatii de citire (READ) din memorie, respectiv aplicarea
acestui semnal direct pe cipurile de memorie RAM, in vederea selectiei corecte a sensului
transferului datelor din/in aceste circuite.
<
<
<
>
Decodificare
4:16
Magistrala
de adrese
4K x 8 CS
PROM
4K x 8 CS
PROM
4K x 8 CS
PROM
<
<
. . . . . .
16
4
A15 A12
R / W
BO B15
CSP0
CSP1
CSP14
8
8
8
8
12
12
12
3
Decodificare 3:8
9
9
9
CSR0
CSR7
8
8
512 x 8 CS
RAM
512 x 8 CS
RAM
Magistrala
de date
P µ
12

BAZELE MICROPROCESOARELOR
3-46
Fig.3.33. Exemplu de organizare a unei zone de memorie de 64 kx8 a unui sistem microprocesor
(60 ko PROM si 4 ko RAM).







MICROPROCESOARE - CONCEPTE GENERALE

3 - 45

3.5 SOFTWARE-UL SISTEMULUI MICROPROCESOR-ASPECTE GENERALE

In acest paragraf se va aborda microprocesorul dintr-un alt punct de vedere, cel al programarii sale,
al posibilitatilor si al modului de organizare a setului de instructiuni. Dupa cum s-a precizat deja,
intrepatrunderea celor doua aspecte, hardware si software, impune stapanirea notiunilor de baza
corespunzatoare, atat in proiectarea sistemului, cat si in realizarea programelor pentru o aplicatie
data.


3.5.1 Consideratii de baza

Pentru o gama foarte larga de microprocesoare, informatia este data sub forma cuvintelor de 8 biti,
sau a cuvintelor de 16 biti. Deoarece o instructiune poate necesita un numar mai mare de biti pentru
transmiterea informatiei necesare executarii unei anumite operatii, instructiunile unui microprocesor
vor avea o lungime de unul sau mai multe cuvinte de 8 (16, 32) biti. Intotdeauna primul cuvant din
instructiune va contine codul operatiei (eventual continuat si in al doilea cuvant), urmatoarele cuvinte
continand, daca sunt necesare, eventuale valori numerice semnificand constante sau adrese de celule
de memorie sau porturi, cu care opereaza instructiunea respectiva.

Citind primul cuvant al instructiunii, microprocesorul il decodifica si, sub incidenta sectiunii de
CONTROL, executa operatia corespunzatoare. Daca, de exemplu, codul operatiei indica o
instructiune cu trei octeti (fie un microprocesor de 8 biti), in care octetii 2 si 3 contin o adresa din
memorie, al carei continut va fi adus in acumulator, succesiunea de operatii ce au loc va fi dupa cum
urmeaza:

• se citeste primul octet al instructiunii;
• se decodifica codul operatiei;
• conform codului, se mai citesc doi octeti suplimentari (la fiecare citire, PC este incrementat), de la
adresele succesive primei citiri (instructiunea are cuvintele unul dupa altul in memoria program);
• se configureaza pe magistrala de adrese adresa desemnata de catre cei doi octeti suplimentari cititi
si se citeste aceasta celula de memorie, continutul ei fiind transferat in acumulator;
• se trece la citirea si executarea altei instructiuni.

In general, pentru o organizare pe cuvinte de 8 biti, cele 256 de combinatii posibile oferite de un
cuvant sunt suficiente pentru a se configura un set de instructiuni destul de bogat. Evident,
microprocesoarele de 16 biti au o paleta de posibilitati mult crescuta.

Astfel, de exemplu, figura 3.34 prezinta structura principiala a instructiunilor unui microprocesor pe 8
biti, avand cuvinte de instructiune de 1, 2 sau 3 octeti. Dupa cum s-a precizat, primul cuvant contine
codul operatiei, si eventual, operandul (operanzii) instructiunii, cuvantul (cuvintele) suplimentare (daca
exista, in functie de instructiune), continand date necesare la executia instructiunii respective.
BAZELE MICROPROCESOARELOR
3 - 46
LSB MSB
cuvint de date
instructiune
pe 1 cuvint
instructiune
instructiune
pe 2 cuvinte
pe 3 cuvinte
cod operatie
cod operatie
cod operatie
adresa
sau data
data sau
adresa
B4 B3 B2 B1 B0 B7 B6 B5
B4 B3 B2 B1 B0 B7 B6 B5
B4 B3 B2 B1 B0 B7 B6 B5
B4 B3 B2 B1 B0 B7 B6 B5
B4 B3 B2 B1 B0 B7 B6 B5
B4 B3 B2 B1 B0 B7 B6 B5
B4 B3 B2 B1 B0 B7 B6 B5

Fig.3.34. Structura principiala a instructiunilor unui microprocesor


3.5.2 Moduri de adresare

O operatie frecventa in diversele etape de executie ale unui program este referirea la diversele celule
de memorie RAM, ROM, sau la registrele microprocesorului. Aceste referiri la locatii de memorie
implica operatia de adresare, fiind posibile multiple moduri de adresare. Indicat prin codul
operatiei ce se executa, modul de adresare implica obtinerea, prin diverse procedee, a adresei cu
care se va opera in instructiunea respectiva.

Exista o gama relativ importanta de moduri de adresare. In functie de tipul microprocesorului, se
implementeaza prin setul de instructiuni unele dintre aceste moduri de adresare. O posibilitate de
apreciere a performantelor unui microprocesor este data si de paleta de moduri de adresare ale
acestuia. Cu cat gradul de sofisticare oferit de modurile de adresare creste, cresc si posibilitatile si
flexibilitatea programatorului de a realiza programe mai eficiente, compacte, performante. Pe de alta
parte, intervin deasemenea, ca de altfel in general in procesul elaborarii programelor, si elemente
subiective, legate de optiunile personale ale programatorului, de experienta si capacitatea sa de a
gasi solutia optima pentru implementarea unei aplicatii date.

Vom prezenta in continuare cele mai intalnite moduri de adresare, utilizate la diferite tipuri de
microprocesoare, insotite de explicatii si exemplificarea utilizarii lor. In esenta, se va explica felul in
care pentru fiecare mod de adresare in parte, se obtine operandul unei instructiuni a
microprocesorului. Unele instructiuni contin si acest operand, altele indica adresa sau modul de
obtinere al adresei unde se va gasi operandul respectiv. Mecanismul obtinerii acestor operanzi va
diferentia modurile de adresare posibile. Figura 3.35. reprezinta in mod sintetic cele mai des intalnite
MICROPROCESOARE - CONCEPTE GENERALE

3 - 47
moduri de adresare. Desi figura exemplifica aceste moduri de adresare pentru un microprocesor de
8 biti, prezentarea ce urmeaza este general valabila, si pentru microprocesoare cu capacitati sporite
(16 sau 32 de biti).

Exemplele prezentate utilizeaza instructiuni si notatii specifice microprocesorului INTEL 8086. Pentru
a nu intra in detalii care la acest stadiu al prezentarii pot fi incomode si pot complica inutil
prezentarea, se prezinta in esenta modul de obtinere al deplasamentului in cazul adresarii memoriei
sistemului microprocesor. Mecanismul de operare al microprocesorului 8086 pentru obtinerea
adreselor efective, prin utilizarea registrelor de segment, in combinatie cu deplasamentul, nu este
evidentiat aici, el fiind de altfel transparent pentru scrierea programului, atata timp cat se vor utiliza
registrele segment implicit destinate fiecarei instructiuni in parte.

Detalii suplimentare se pot gasi la prezentarea microprocesorului 8086, facuta in capitolul 4 al
lucrarii.
Reg. index selectat in octetul de instr.
>
>
Adr. (reg.) inclusa in cadrul instr.
Octet 1
Octet 2 Octet 3 Octet 1
Low High
Octet 1 Octet 2 Octet 3
Low High
Octet 1 Octet 2
Octet 3
Low High
>
>
Octet 2
Octet 3
Octet 1
Low High
>
>
Adr. de baza
>
Adunare
>
Adr.
efectiva
Data ; nu este necesar acces la mem
Imediata
Registru
Indexata
Directa
Indirecta
>
>
>
>
<
Valoare index
Adr. 0 ÷255
Adr. 0 ÷65536
Prima adresa
>
Adr.
efectiva
Data
Data
Data
Data
Data
Data
Octet 2 Octet 3 Octet 1
Low High
Relativa
>
Adunare
> >
Adr. efectiva
P C
â
Valoarea
contorului de
program, la
urmatoarea
instructiune
Observatie : Octet 1 reprezinta octetul de
instructiune in toate cazurile
Registre

BAZELE MICROPROCESOARELOR
3 - 48
Fig.3.35. Moduri de adresare ale unui microprocesor

Adresarea imediata

In cazul adresarii imediate, instructiunea contine in primul cuvant codul operatiei, iar in urmatorul
cuvant (urmatoarele cuvinte), contine o valoare constanta, reprezentand chiar operandul necesar
pentru executia instructiunii respective (v. fig. 3.35). Aceasta valoare este deci definita inca din faza
de scriere a programului, fiind data de programator in codul instructiunii, reprezentand deci in general
valori constante, fixe, ale programului. Acest mod de adresare este cel mai simplu mod de
manipulare a unei valori constante de catre programator, necesitand un timp redus de executie,
deoarece imediat dupa citirea codului operatiei, in subciclul urmator al instructiunii, se extrage
(fetch) valoarea operandului, utilizat de catre instructiune la executia sa.

Adresarea imediata este utila in compararea continutului unui registru cu o valoare constanta, in
vederea luarii unei decizii in program, fara a mai necesita utilizarea de memorie RAM suplimentara.
Principala limitare a acestui mod de adresare este data de faptul ca valoarea operandului, fiind
continuta in codul instructiunii, este fixa pentru un program dat, neputand fi modificata in cursul rularii
acestuia. De exemplu, o instructiune de transfer a unei valori constante intr-un registru al
microprocesorului 8086 va avea structura din figura 3.36, indicand incarcarea registrului BX cu
valoarea constanta 3.
Mnemonica Reprezentare in memorie Executie instructiune
MOV BX, 3
BX
cod operatie
operand
initial: BX = xxxx
final: BX = 0003
PC
PC+1
PC+2
0003
BB
03
00
memorie program
registre

Fig. 3.36. Executia unei instructiuni ce utilizeaza adresarea imediata.

Adresarea directa (absoluta)

In cazul adresarii directe, instructiunea contine, dupa primul cuvant, al codului operatiei, un cuvant
(sau 2, in functie de tipul microprocesorului si de capacitatea sa de adresare), reprezentand adresa
efectiva la care se gaseste operandul necesar pentru implementarea instructiunii respective (v. fig.
3.35). Astfel, daca s-ar utiliza adrese reprezentate pe un octet, cu un cuvant se poate adresa oricare
dintre 256 de celule (prea putin, uzual); daca se utilizeaza 2 octeti pentru reprezentarea unei adrese
(reprezentate pe 2 cuvinte de instructiune pentru microprocesoarele de 8 biti, sau pe 1 cuvant de
instructiune pentru microprocesoarele de 16 biti), se poate indica in instructiune, direct, adresa uneia
dintre 64 k cuvinte de memorie. Pentru un microprocesor cu capacitatea totala de adresare de 64 k
cuvinte, sau pentru adresarea in interiorul unei pagini de memorie de 64 k cuvinte (specifica unor
microprocesoare de 16 biti, precum INTEL 8086), reprezentarea pe 16 biti a adresei, in cadrul
cuvantului de instructiune, permite programatorului adresarea oricareia dintre celulele de memorie
adresabile (global, sau in pagina de memorie curenta). Figura 3.37. prezinta un exemplu de
MICROPROCESOARE - CONCEPTE GENERALE

3 - 49
instructiune ce utilizeaza adresarea directa, pentru a transfera continutul unui registru (AX = 0523H),
intr-o celula de memorie de adresa specificata (ALFA = 07F8H), din segmentul de date curent
(celula contine initial o valoare in locul careia se va inscrie noul operand, continutul registrului AX).
Mnemonica Reprezentare in memorie Executie instructiune
MOV ALFA,AX
AX
cod operatie
operand
initial: AX =0523H
final: AX = 0532H
PC
PC+1
PC+2
ALFA=07F8
ALFA=XXXX
ALFA = 0532H
0532
0532H
A3
F8
07
0532
memorie program
registre
memorie de date

Fig. 3.37. Executia unei instructiuni ce utilizeaza adresarea directa

Avantajul adresarii absolute fata de adresarea imediata rezulta din modul de obtinere a datei
utilizate la executia instructiunii: dupa cum s-a specificat deja, la adresarea imediata, structura fixa
a instructiunii implica utilizarea unei valori constante a operandului; la adresarea absoluta, daca se
modifica continutul celulei de memorie a carei adresa este continuta in instructiune, instructiunea va
utiliza la executie data de la adresa respectiva, care poate diferi pe parcursul executiei programului.
Ca un exemplu, figura 3.38 prezinta comparativ doua secvente de program, prima efectuand
adunarea a doua numere constante, specificate in codul operatiilor (utilizand adresarea imediata),
iar cea de-a doua efectuand adunarea a doua numere aflate in doua celule din memoria de date
(utilizand adresarea directa).
BAZELE MICROPROCESOARELOR
3 - 50
Instructiuni(mnemonici)
Reprezentare in memorie
MOV AX, 123H
AX PC
PC+1
PC+2
ADD AX, 345H
MOV REZ, AX
PC+8
1
2
3
REZ:100H
+
1
2
3
...
(a) utilizind adresarea imediata
Instructiuni(mnemonici)
Reprezentare in memorie
MOV AX, OP1
PC
PC+1
PC+2
ADD AX, OP2
MOV REZ, AX
PC+8
1
2
3
REZ:100H
+
1
2
3
...
(b) utilizind adresarea directa
0468H
123H
345H
123H
468H
468H
OP1:80H
OP2:90H
0123H
0345H
0468H
memorie program
memorie de date
memorie de date
memorie program
AX
AX
123H
345H 468H
468H
B3
23
01
05
45
03
A3
00
01
B3
80
00
05
90
00
A3
00
01
registre
registre

Fig. 3.38. Compararea implementarii programelor utilizand adresarea imediata (a), sau directa (b)

In esenta, pentru a modifica datele ce se aduna, programatorul va trebui sa modifice, in cazul
adresarii imediate, codul instructiunilor (deci programul), pe cand in cel de-al doilea caz, al
adresarii absolute, programatorul va trebui sa modifice continutul celulelor de memorie din
memoria de date, in care se gasesc cele doua valori; programul ramane neschimbat in acest caz,
pentru diferitele valori ale celor doua numere din memoria de date. Solutia adresarii imediate se va
prefera in cazul operarii cu constante (ce nu se schimba in timpul programului), fiind o solutie mai
rapida la executia programului.

Adresarea registru

Acest mod de adresare reprezinta o varianta a adresarii directe, in care operandul (operanzii) sunt
continuti in registrele de uz general ale microprocesorului, in loc de memorie (v.fig. 3.35). Deoarece
numarul de registre de uz general ale unui microprocesor este relativ redus, se codifica adresa
registrului (registrelor) pe cate un cimp de 3-4 biti (functie de numarul maxim al acestor registre),
continut in insasi cuvantul de instructiune, care astfel contine operanzii instructiunii. Aceasta permite
ca instructiunea sa aiba doar un singur cuvant, fiind deci scurta, si sa se execute foarte rapid
(datorita vitezei de executie sporite, la accesarea registrelor interne ale microprocesorului, dupa cum
s-a mai mentionat).
Figura 3.39 prezinta un exemplu de instructiune utilizand adresarea registru, care transfera continutul
unuia dintre registrele microprocesorului (CS), in alt registru al microprocesorului (AX).
MICROPROCESOARE - CONCEPTE GENERALE

3 - 51
Mnemonica Reprezentare in memorie
Executie instructiune
MOV AX,CS
AX
initial: AX =XXXX
final: AX = A3C2H
PC
PC+1
CS = A3C2H
CS = A3C2H
memorie program CS A3C2
A3C2
A3C2
A3
F8
registre

Fig.3.39. Executia unei instructiuni ce utilizeaza adresarea registru

Adresarea indexata

Unele microprocesoare sunt prevazute cu registre denumite registre index, care pot fi utilizate
pentru implementarea acestui mod de adresare. In esenta, adresa datei ce se va utiliza de catre
instructiune se obtine prin adunarea continutului registrului index, specificat de catre instructiune, cu
o valoare numerica continuta in codul instructiunii. Aceasta permite ca, prin modificarea continutului
registrului index, sa se obtina adrese diferite ale datei utilizate de catre instructiune. Figura 3.40
prezinta o instructiune de adunare la continutul acumulatorului (AX), a valorii continute in celula de
memorie cu adresa data de suma dintre adresa de inceput a unui tabel (TAB) si un indice continut
intr-un registru index (SI).
Mnemonica Reprezentare in memorie Executie instructiune
ADD AX, TAB[SI]
AX
PC
PC+1
memorie program
SI 0005
03
04
registre
00
01
...
memorie de date
TAB=100H
TAB+5
0422
AX = 0123H
SI = 0005H
TAB[5]=0422H
dupa executie:
AX = 0545H
SI = 5
TAB[5] = 0422H
inainte de executie:
100H
100H
5H
105H
422H
123H
545H
123H / 545H

Fig. 3.40. Executia unei instructiuni ce utilizeaza adresarea indexata.
BAZELE MICROPROCESOARELOR
3 - 52

Continutul registrului index poate fi modificat automat (prin indicarea in codul instructiunii a acestui
lucru), incrementat sau decrementat, pregatindu-l astfel pentru utilizari ulterioare, ale aceleiasi
instructiuni (de exemplu intr-o bucla de program), pentru a se adresa locatii distincte (uzual
consecutive), ale memoriei. Tipic, acest mod de adresare este util la adresarea unor elemente ale unui
tabel de valori. Adresa de inceput a tabelului (adresa de baza), este continuta in codul instructiunii
(ca operand al acesteia), iar deplasamentul fata de inceputul tabelului (deci indicele elementului de
tabel ce se doreste a se adresa), in registrul index.

Astfel, prin implementarea unei bucle de program, se pot adresa in mod succesiv locatiile unei zone
de memorie. La fiecare trecere a programului prin bucla respectiva, continutul registrului index se
reactualizeaza (prin incrementare, de exemplu), fiind pregatit pentru a adresa urmatorul element al
tabloului. Figura 5.41 prezinta un asemenea exemplu, in care bucla de program prezentata se executa
de un numar de ori egal cu valoarea initiala a registrului CX. La fiecare pas, valoarea registrului
index (SI) - initial 0 - este incrementata, determinand adunarea succesiva a tuturor numerelor din
tabelul TAB (fie 10 numere). La iesirea din bucla, registrul AX (setat initial cu 0), va contine suma
continuturilor tuturor celulelor de memorie din tabelul TAB.
SI = 0
AX = 0
CX = 10
AX = AX + TAB[SI]
CX = CX - 1
CX = 0
MOV AX, 0
MOV SI, AX
MOV CX, 10
ADD AX, TAB[SI]
ADD SI, 1
LOOP BUCLA
...
(a) (b)
BUCLA
; initializari
; calcul suma elemente

Fig. 3.41. Implementarea unei bucle de program, ce utilizeaza adresarea indexata
.(a) Schema logica a secventei de program; (b) secventa de program

Adresarea indirecta

In esenta, in cadrul adresarii indirecte, instructiunea contine in cuvantul de instructiune, ca operand,
o adresa la care se va gasi, in memorie, adresa efectiva unde este localizata data cu care va opera
instructiunea la executia sa (v.fig. 3.35). Acest tip de adresare ofera un grad suplimentar de
flexibilitate fata de adresarea indexata, in sensul ca apar "doua grade de libertate" in ceea ce priveste
modul de localizare a datei ce se manipuleaza in instructiunea respectiva. Ca o varianta, la adresarea
indirecta prin registru, instructiunea se refera la un registru al microprocesorului (sau la o pereche
de registre), care contin adresa datei ce se va utiliza in instructiune. Figura 3.42 contine un exemplu
MICROPROCESOARE - CONCEPTE GENERALE

3 - 53
de acest tip, in care se schimba continutul registrului BX cu continutul celulei de memorie a carei
adresa este continuta in registrul SI.
Mnemonica Reprezentare in memorie Executie instructiune
XCHG BX, [SI]
BX
PC
PC+1
memorie program
SI 0100H
87
1C
registre
...
memorie de date
BX = 1234
SI = 100H
mem(100H) =6789
dupa executie:
BX =6789
SI = 100H
mem(100H) = 1234
inainte de executie:
100H
5678 1234
1234/6789
6789/1234
100H

Fig.3.42. Executia unei instructiuni ce utilizeaza adresarea indirecta

Adresarea relativa

Acest mod de adresare utilizeaza operandul continut in codul de instructiune pentru a efectua o
deplasare "in sus" sau "in jos" in program, din punctul curent (de la adresa curenta, continuta in
registrul contor de program), cu valoarea acestui operand, deci cu un numar dat de cuvinte de
memorie. Uzual, acest tip de adresare se utilizeaza la implementarea instructiunilor de salt relativ in
program (salturi scurte). Operandul va reprezenta in acest caz nu o adresa, ci o constanta (pozitiva
sau negativa - un numar in complement fata de 2), reprezentand numarul de cuvinte de instructiune
peste care trebuie sa sara programul "inainte" in memorie - in sensul cresterii adresei (pentru valori
pozitive ale operandului), sau "inapoi" in memorie - in sensul descresterii adresei (pentru valori
negative ale operandului), de la locatia curenta a programului. Aceasta valoare continuta in operandul
unei instructiuni cu adresare relativa se numeste "offset" (deplasare), reprezentand diferenta dintre
adresa instructiunii destinatie si cea a instructiunii imediat urmatoare instructiunii curente. Aceste
valori de deplasare sunt uzual calculate de catre programul asamblor, in mod automat, programatorul
utilizand o scriere formala, convenabila.
Figura 3.43 prezinta modul de scriere, si codul generat pentru o secventa de program ce utilizeaza o
adresare relativa inainte (JLE ERR), si una inapoi (JMP TST). Se poate remarca modul de obtinere
al deplasamentului in cele doua cazuri, reprezentat in cod complementar fata de 2.

BAZELE MICROPROCESOARELOR
3 - 54
8B
DB
83
20
00
7E
05
0F
10
00
EB
F6
8B
C3
MOV BX, AX
CMP BX, 20H
JLE ERR
ADD BX, 10H
JMP TST
MOV AX, BX
Coduri instructiuni Memorie program Comentarii
adresa
0
1
2
3
4
5
6
7
8
9
10
11
12
13
salt pozitiv cu +5
salt negativ cu -10=F6h
TST
ERR
; incarcare BX cu continut AX
; comparare BX cu 20H
; daca BX < 20H, sau BX=20H, salt la ERR
; BX = BX + 10H
; reluare program de la adresa TST
; memorare BX in AX
cod

Fig. 3.43. Utilizarea adresarii relative la efectuarea salturilor scurte in program





3.5.3 Setul de instructiuni al microprocesorului

Gradul de complexitate si varietate al operatiilor ce pot fi efectuate de catre microprocesor definesc
puterea de calcul si performantele posibile ale acestuia. Totalitatea operatiilor posibile: intre
registre, a celor cu memoria, aritmetico-logice si alte operatii speciale, prin care se activeaza
diversele parti constitutive ale microprocesorului (prezentate la sectiunea de hardware) alcatuiesc, in
ansamblul lor, setul de instructiuni al microprocesorului. El permite "conectarea" intre ele a
diverselor parti ale microprocesorului, dand flexibilitatea deosebita a acestuia. O simpla modificare
de program a uneia sau a mai multor instructiuni, si functionarea globala a sistemului este alta. Iata un
nou mod de "construire" a unui sistem automat.

Pentru a prezenta, in mod principial, modul de organizare al setului de instructiuni al unui
microprocesor, se considera un procesor organizat pe cuvinte de 8 biti. Cele 256 de combinatii
posibile din codul operatiei vor fi suficiente pentru a genera un set de instructiuni tipic.

Clasificarea instructiunilor

• • Instructiuni de transfer si actualizare a informatiei

MICROPROCESOARE - CONCEPTE GENERALE

3 - 55
Grupul 0 --- operatii generale. Instructiunile
acestui tip permit incrementarea, decrementarea
(cresterea, respectiv scaderea continutului
registrelor, sau a unei celule de memorie),
incarcarea continutului registrelor, rotirea
continutului acestora si alte operatii de acest
gen.

Grupul 1 --- operatii de transfer al
informatiei. Contine instructiunile ce permit
transferarea informatiei dintr-o locatie denumita
sursa, intr-o alta locatie, destinatia, fara a se
modifica informatia. Sursele pot fi registre,
celule de memorie RAM, PROM, porturi de
intrare. Destinatiile pot fi registre, celule de
memorie RAM, porturi de iesire. De facto,
aceste operatii realizeaza legatura intre o locatie
si alta (ca si cum ar fi conectate fizic una cu
alta).

• • Instructiuni de modificare a informatiei

Grupul 2 --- operatiile aritmetico-logice. Contine instructiunile ce permit efectuarea de operatii
aritmetice sau logice, asupra continutului unor registre ale microprocesorului, sau (doar pentru unele
microprocesoare), asupra unor celule de memorie.

• • Instructiuni de control

Grupul 3a --- operatii de control al programului. Sunt instructiunile care permit transferarea
executiei programului, de la locatia curenta, intr-o alta zona a programului (modificarea PC).
Transferul se poate efectua neconditionat, sau doar in cazul setarii unora dintre indicatorii registrului
de stare. In plus, transferurile pot fi cu revenire in punctul de unde se genereaza transferul, in care caz
adresa curenta a programului este salvata inainte de a se efectua transferul, sau fara revenire, caz in
care nu se salveaza adresa curenta.

Grupul 3b --- operatii de control al procesorului. Sunt operatii ce actioneaza direct asupra
microprocesorului. Tipice sunt operatiile de stop al procesorului, activare / dezactivare intreruperi,
instructiunea inoperanta (NOP - no operation).

Se utilizeaza unii dintre bitii octetului de cod al instructiunii pentru a desemna grupa de operatii din
care face parte instructiunea. Astfel, pentru cele patru grupe anterior definite, vor fi necesari 2 biti (fie
cei mai semnificativi ai octetului), care definesc grupa careia ii apartine o operatie data.

Fig.3.44. Structura codurilor operatiilor unui
microprocesor
0 0 D D D N N N
0 1 D D D S S S
S S S 1 0 X X X
1 1 C C C Y Y Y
cod
Grupa 0
destinatie operatie
destinatie cod sursa
grupa 1
cod
cod
grupa 2
grupa 3
operatie sursa
operatiede
transfer
conditie
transfer
(a)
(b)
(c)
(d)
BAZELE MICROPROCESOARELOR
3 - 56
In figura 3.44 sunt prezentate structurile codurilor operatiilor instructiunilor din cele patru grupe,
pentru un microprocesor de 8 biti (pentru simplitatea prezentarii).

Astfel, instructiunile din grupa 0 sunt formate din cei doi biti de cod de grupa, trei biti (desemnati
prin DDD), codificand registrul asupra caruia se opereaza (se remarca deci limitarea la 8 registre ---
sau, uzual, 7 registre si o celula de memorie, adresata indexat de catre un registru index) si trei biti
(NNN), indicand operatia ce se efectueaza. Cunoscand, din manualul de programare al
microprocesorului, codurile fiecarui registru al acestuia, cat si ale operatiilor dorite a se efectua, se
poate genera codul unei anume instructiuni din aceasta grupa. De exemplu, considerand o operatie
de incrementare (cod 100) a registrului 3, (cod 011), codul binar al operatiei va fi (DDD=011,
NNN=100), 00011100 sau, intr-o forma accesibila, in baza 8 de numarare, 034
8
.

Scrierea unor programe sub aceasta forma, (desemnata ca programare in cod masina), ar fi nu
numai greoaie, dar si expusa la foarte probabile erori. De aceea, se utilizeaza asa-numitele
mnemonici, cuvinte abreviate, de provenienta engleza, semnificand operatia ce se efectueaza, sursa
si destinatia ei (unde este cazul). Ca un exemplu, instructiunea anterioara poate fi referita ca INC R3;
(incrementeaza R3).

Trebuie accentuat ca scrierea programelor cu aceste mnemonici, alcatuind ceea ce se numeste
limbajul de asamblare al microprocesorului (si fiind specific fiecarui procesor in parte), permite
elaborarea programelor "pe hartie". Fizic, procesorului i se va pregati in memorie succesiunea de
coduri binare, corespunzatoare acestor mnemonici, conform setului de instructiuni, care vor
corespunde programului in limbaj de asamblare. Operatia de trecere de la limbajele de asamblare la
programul executabil poate fi facuta sau prin elaborarea de catre programator a codurilor
corespunzatoare instructiunilor si introducerea lor (de exemplu) de la niste comutatoare, in memoria
sistemului (programarea fiind practic efectuata in cod masina), sau prin executarea, la sistemele mai
evoluate, a unui program special, numit asamblor. Acesta poate prelua textul, denumit text sursa,
continand programul scris in limbaj de asamblare (de exemplu prin citirea de la un periferic a unui
fisier), analizeaza aceste instructiuni, generand, in cazul corectitudinii lor, codul binar
corespunzator operatiilor dorite. (Evident, trebuie date indicatii suplimentare, referitoare la adresa de
memorie unde se va genera codul programului etc., probleme ce nu fac obiectul acestui paragraf).

Asamblorul reprezinta o prima etapa in gradul de "evolutie" a limbajelor in care poate fi programat
un microprocesor. El realizeaza o corespondenta "unu la unu", fiecare instructiune in limbaj de
asamblare generand cod pentru o singura instructiune a microprocesorului. Totodata, limbajul de
asamblare este propriu fiecarui tip de microprocesor. Exista limbaje de nivel inalt, care permit
programarea microprocesorului cu instructiuni puternice (limbaj FORTRAN, PL/M, BASIC,
PASCAL, C, C++, ADA, FORTH. etc.). Dispunand de programele specifice, numite
compilatoare (specifice pentru fiecare limbaj), se pot genera, din texte sursa, scrise in aceste
limbaje, coduri obiect pentru microprocesorul respectiv. Aceste programe vor necesita pentru a fi
executate, sisteme de calcul, uzual asa numitele sisteme de dezvoltare, microcalculatoare de putere
sporita, cu facilitati specifice in ceea ce priveste resursele sistemului (memorie, suporturi de memorie
externa de tip disc, etc.).
MICROPROCESOARE - CONCEPTE GENERALE

3 - 57

Instructiunile grupei 1 au structura conform figurii 3.44b. Cele doua grupe de cate trei biti, DDD
si SSS semnifica registrul destinatie, respectiv sursa, pentru efectuarea transferului. Transferul
informatiei din registrul R3 (cod 011) in R6 (cod 110) va avea deci codul 163
8
. ({1} inseamna cod
operatie de transfer, {6} cod registru destinatie, {3} cod registru sursa). Mnemonica
corespunzatoare poate fi scrisa ca MOV R6,R3.

Pentru operatiile aritmetico-logice, codul operatiei este dat in figura 3.44c. Aici, grupul XXX de
trei biti indica operatia ce se efectueaza, iar SSS, registrul sursa, continand unul dintre operanzi. In
mod implicit, celalalt operand este considerat a fi continut de catre acumulator. Totodata, rezultatul
este memorat tot in acumulator (alterand operandul continut de catre acesta). Astfel, o instructiune
ADD R4, va aduna la continutul acumulatorului, continutul registrului R4, rezultatul fiind plasat in
acumulator.

Instructiunile grupei a treia nu pot fi clasificate intr-o maniera la fel de clara ca pentru grupele
anterioare. Totusi, o pondere speciala o au, in aceasta grupa, instructiunile de ramificare a
programului. Acestea permit, dupa cum s-a mentionat, devierea executiei programului de la secventa
normala de instructiuni, operatie necesara in anumite puncte de decizie (in functie de un anume
rezultat, sau data de intrare, de exemplu, se va initia o anume actiune sau alta) sau, in mod
neconditionat, in unele puncte din program.

Ramificarea conditionata se bazeaza pe examinarea registrului de stare, care contine informatii
referitoare la rezultatele ultimei operatii aritmetice sau logice efectuate in ALU. Dupa cum s-a
mentionat, indicatorii de stare continuti in acest registru pot specifica:
• rezultat nul (Z --- zero), sau nenul (NZ --- not zero);
• a aparut depasire (sau imprumut) (C --- carry), sau nu (NC --- not carry);
• rezultatul are un numar par de biti 1 (PE -- parity even), sau impar (PO -- parity odd);
• rezultat pozitiv (P --- plus), sau negativ (M --- minus); etc.
Ca exemple tipice de instructiuni de ramificare conditionate, vom mentiona instructiunile JUMP,
CALL si RETURN (toate putand fi instructiuni conditionate sau nu).

Instructiunea JUMP ("salt"), permite saltul programului la o noua adresa, in cazul indeplinirii unei
conditii in registrul de stare. De exemplu, saltul la aparitia unui rezultat nul, simbolizat prin
mnemonica JZ, urmata de adresa dorita la care se comuta programul. Daca indicatorul testat nu
este setat, (de exemplu, nu a fost rezultat nul), se continua executia programului, cu instructiunea
urmand celei de salt conditionat (nu se efectueaza saltul).

Instructiunea CALL ("cheama") permite apelarea de subrutine. Acestea reprezinta zone de
program (denumite si subprograme), care se vor executa de mai multe ori in decursul operarii
sistemului. Aceste subprograme pot fi "chemate" ("apelate") din programul "principal", sau din alte
subrutine, prin instructiuni de tipul CALL. Transferul executiei programului la adresa unde se gaseste
subrutina poate fi deasemenea conditionat si se executa din acest punct de vedere ca si pentru
instructiunile de salt. Ceea ce deosebeste acest transfer de instructiunile de salt, il reprezinta salvarea
BAZELE MICROPROCESOARELOR
3 - 58
continutului PC, din punctul de unde se face aplelul. Aceasta permite ca, la terminarea subrutinei
apelate, prin executarea unei instructiuni de tip RETURN ("intoarcere"), sa se refaca in PC
valoarea salvata la apelare. Se determina astfel continuarea programului apelant, de la instructiunea
imediat urmatoare celei de apelare (CALL).

Si instructiunea de RETURN poate fi conditionata. Salvarea (refacerea) continutului PC este facuta
cu ajutorul registrului indicator de stiva (SP). La executarea unei instructiuni de salt la subrutina,
microprocesorul va depune in memoria sistemului, la adresa indicata de SP, valoarea numaratorului
de program, PC. Aceasta zona de memorie RAM, unde se depune valoarea PC la apelare de
subrutine si unde se mai poate depune si continutul registrelor microprocesorului (prin instructiuni
specifice de salvare a acestora, necesare la tratarea intreruperilor), se numeste stiva programului.
Organizarea acesteia in memoria externa microprocesorului permite realizarea de stive oricat de
mari. Dupa fiecare salvare in stiva, SP se modifica, continand adresa varfului noii stive (permitand
salvari succesive, nealterand vechile valori din stiva). Aceasta permite executarea de apelari de
subrutine, din alte subrutine, inlantuit. La executarea instructiunilor de RETURN, se aduce, de la
adresa indicata de SP, (din varful stivei), valoarea PC care fusese salvata la apelare si se
reactualizeaza SP, micsorand stiva corespunzator. O asemenea inlantuire a apelurilor de subrutine
este prezentata in figura 3.45.

Evident, este raspunderea programatorului de a respecta ordinea strict inversa celei de la apelare, in
cazul unor inlantuiri de apeluri (ordine LIFO --- last in, first out --- ultimul intrat, primul iesit).
Deasemenea, daca s-au salvat registre in stiva, ele trebuiesc refacute etc.

Pentru stiva, se rezerva o anumita zona din memoria sistemului. Nu exista uzual o marime standard a
stivei, limitarile fiind legate de disponibilul total de memorie, aflat la dispozitia programatorului pentru
a-l aloca stivei. Principalul avantaj al utilizarii stivei este ca permite memorarea temporara a datelor
fara complicatia de a specifica in mod explicit adresa cu care se opereaza (necesara la adresarile
tipice ale memoriei - vezi modurile de adresare). Utilizatorul nu cunoaste si nici nu trebuie sa
cunoasca adresa unde se memoreaza datele, operatiile desfasurandu-se indirect, prin utilizarea
registrului indicator de stiva. Principala limitare a acestei modalitati de stocare a datelor este data
de modul de acces la stiva, secvential. Detalii privind utilizarea stivei vor fi date ulterior, intr-un alt
paragraf.

In afara instructiunilor de ramificare a programului, mai exista operatii speciale, cu registrul
indicator de stiva, operatii de intrare/iesire, operatii de control al microprocesorului etc.,
pentru fiecare tip de procesor in parte.
MICROPROCESOARE - CONCEPTE GENERALE

3 - 59
adresa instructiune
memorie program
0A50 CALL SUBA
011A CALL SUBB
0100
...
...
...
0200
...
RETURN
RETURN
...
...
1
2
3
4
- salvare continut PC in stiva
-executie subrutina SUBA (100H)
- salvare continut PC in stiva
- executie subrutina SUBB (200H)
- refacere continut PC din stiva
-continuare executie subrutina SUBA
- salvare continut PC in stiva
-continuare executie program principal
SP
SP
SP
SP
SP
inainte de 1 1 2 3 4
0A51 0A51 0A51
011B
Stiva
(memorie date)
0A51
011B

Fig.3.45. Modul de utilizare a stivei la apelarea subrutinelor

Pentru a sesiza mai bine corelarea ansamblului de operatii ce se efectueaza pentru executarea unei
instructiuni a microprocesorului, se prezinta, in figura 3.46, respectiv 3.47, in mod schematic,
transferul de informatie si operatiile efectuate in fiecare perioada de ceas in parte, pentru doua
instructiuni ale unui microprocesor de 8 biti (ZILOG 80).

Astfel, figura 3.46 prezinta executia instructiunii ADD R de adunare la continutul acumulatorului, a
continutului registrului R al microprocesorului. Se remarca executia instructiunii intr-un singur
subciclu, de patru perioade de ceas. Primele trei perioade de ceas se folosesc pentru extragerea si
decodificarea instructiunii, iar in al patrulea se executa operatia. Durata acestei instructiuni va fi deci
de 4xT
c
. (Pentru un ceas de 2 MHz, instructiunea va dura deci 2 microsecunde).

Instructiunea LDA adr (cel de-al doilea exemplu), implica incarcarea continutului acumulatorului cu
continutul celulei de memorie de la adresa adr. Figura 3.47 prezinta desfasurarea acestei instructiuni,
pentru care se vor efectua 4 accese la memorie (3 pentru citirea codului instructiunii - 1 cod
operatie, 2 operanzii, adresa de unde se face citirea - adresare directa, si unul pentru citirea datei
dorite, de la adresa adr). Se remarca aparitia a 4 subcicluri pentru executarea acestei instructiuni,
durand 13 perioade de ceas (deci 6,5 microsecunde).

BAZELE MICROPROCESOARELOR
3 - 60

U A L
R I
Registru de
instructiuni
unitate de
comanda
Registru
de adrese
Acc
R T R
Registru
temporar
Registrul R
Magistrala interna
Magistrala de date
9 F 52
Magistrala
de adrese
Memorie program
P C
>
1
ceas


Fig.3.46. Executia instructiunii ADD R. Registrul contor de program are
valoarea 9F52
H
(a)(Subciclul 1, T1) Se selecteaza celula de memorie program la adresa 9F52
H
(valoarea curenta a PC)


U A L
R I
Registru de
instructiuni
unitate de
comanda
Registru
de adrese
9 F 52
Acc
R T R
Registru
temporar
Registrul R
Magistrala
de adrese
+1
>
ceas
1000 0010
Magistrala de date
Magistrala interna
P C
Memorie program
1 2


Fig.3.46.b. (Subciclul 1, T2) Codul instructiunii (din celula de memorie selectata)
pe magistrala de date; se incrementeaza PC
9F 52
ADD R : 1000 0010
9F 52
9F 53
ADD R: 1000,0010
MICROPROCESOARE - CONCEPTE GENERALE

3 - 61
U A L
R I
Registru de
instructiuni
unitate de
comanda
Registru
de adrese
9 F 52
Acc
R T R
Registru
temporar
Registrul R
Magistrala
de adrese
9 F 53 >
ceas
Magistrala de date
Magistrala interna
P C
Memorie program
1 2 3


Fig.3.46.c. (Subciclul 1, T3) Codul instructiunii citit pe magistrala de date,
in registrul de instructiuni



ADD,R : 1000 0010
R I
Registru de
instructiuni
unitate de
comanda
9 F 52
Registru
temporar
Registrul R
Magistrala
de adrese
9 F 53 >
ceas
Magistrala de date
Magistrala interna
P C
Memorie program
1000 0010
1 2 3
Registru de adrese
cod operatie
4


Fig.3.46.d. (Subciclul 1, T4) Se decodifica si executa instructiunea; se aduna continutul
registrului R la acumulator; rezultatul in acumulator



ADD R: 1000 0010
1000 0010
Acc
R RT
UAL
BAZELE MICROPROCESOARELOR
3 - 62
U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
cod operatie
Date : 1100 0010 :C2 8B2F
10A3
10A2
10A1
10A0
Adrese
Ad1 : 10001011 :8B
Ad2: 00101111 :2F
Ad1 Ad2
Registru temp.
de adrese
Registru
de adrese
1
10A0
program
Memorie
Memorie
date


Fig.3.47. Instructiunea de incarcare a acumulatorului de la adresa ADR =
8B2F
H
,. continuta in instructiune, PC are valoarea 10A0
H
. Subciclul 1 -- se
va citi si decodifica ciclul instructiunii:
(a) T1. Se selecteaza celula de memorie program de la adresa 10A0
H


U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
10 A0
Ad1 Ad2
Registru temp.
de adrese
Registru
de adrese
1
program
Memorie
Memorie
date 8B2F
10A3
10A2
10A1
10A0
Adrese
Date : 1100 0010 :C2
Ad1 : 10001011 :8B
Ad2: 00101111 :2F
2
+1


Fig.3.47.b. T2. Codul instructiunii pe magistrala de date; se incrementeaza PC
LDA : 00111010 : 3A
10 A0
10 A0
LDA : 00111010 : 3A
LDA : 00111010 : 3A
10 A1
MICROPROCESOARE - CONCEPTE GENERALE

3 - 63

U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
10 A0
Ad1 Ad2
Registru temp.
de adrese
Registru
de adrese
program
Memorie
Memorie
date
8B2F
10A3
10A2
10A1
10A0
Adrese
Ad1 : 10001011 :8B
Ad2: 00101111 :2F
1 2
00111010
Date : 1100 0010 :C2
10
A1
3


Fig.3.47.c. T3. Codul instructiunii citit de pe magistrala de date in registrul de instructiuni

U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de
date
Magistrala interna
P C
10 A0
Ad1 Ad2
Registru temp.
de adrese
Registru
de adrese
program
Memorie
Memorie
date
8B2F
10A3
10A2
10A1
10A0
Adrese
:3A LDA : 00111010
Ad1 : 10001011 :8B
Ad2: 00101111 :2F
00111010
Date : 1100 0010 :C2
10
A1
1 2 3 4


Fig.3.47.d. T4. Se decodifica codul instructiunii
LDA : 00111010 : 3A
00111010
BAZELE MICROPROCESOARELOR
3 - 64
U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
cod operatie
8B2F
10A3
10A2
10A1
10A0
Adrese
:3A
Ad2: 00101111 :2F
Ad1 Ad2
Registru temp.
de adrese
Registru
de adrese
1
program
Memorie
Memorie
date
10A1
Date : 1100 0010 :C2
LDA : 00111010


Subciclul 2 -- se va citi cel de-al doilea octet al instructiunii (data)
Fig.3.47.e. T1. Se selecteaza celula de memorie progarm de la adresa 10A1
H
; celula
contine cei 8 biti superiori ai adresei ADR


U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
Ad1 Ad2
Registru temp.
de adrese
Registru
de adrese
1
program
Memorie
Memorie
date
8B2F
10A3
10A2
10A1
10A0
Adrese
:3A LDA : 00111010
Ad2: 00101111 :2F
2
+1
Date : 1100 0010 :C2
10 A1


Fig.3.47.f. T2. Valoarea octetului cel mai semnificativ al adresei ADR pe magistrala
de date; se incrementeaza PC
Ad1: 10001011 : 8B
10 A1
10 A1
Ad1 : 10001011 : 8B
Ad1 : 10001011 : 8B
10 A2
MICROPROCESOARE - CONCEPTE GENERALE

3 - 65
U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
Ad2
Registru temp.
de adrese
Registru de adrese
program
Memorie
Memorie
date 8B2F
10A3
10A2
10A1
10A0
Adrese
:3A LDA : 00111010
Ad2: 00101111 :2F
1 2
Ad1 : 10001011 :8B
Date : 1100 0010 :C2
10 A1
10 A2
3


Fig.3.47.g. T3. Memorarea octetului cel mai semnificativ al adresei ADR in partea
superioara a registrului de adrese


U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
cod operatie
8B2F
10A3
10A2
10A1
10A0
Adrese
LDA : 00111010 :3A
Ad1 Ad2
Registru temp.
de adrese
Registru
de adrese
1
program
Memorie
Memorie
date
Ad2 : 10001011 :8B
Date : 1100 0010 :C2
10A2
8B


Subciclul 3 -- se va citi al treilea octet al instructiunii (data)
Fig.3.47.h. T1. Se selecteaza celula de memorie program de la adresa 10A2
H
(PC)
celula contine cei 8 biti inferiori ce compun adresa ADR

10001011 8B
8B
Ad1
Ad2 : 00101111 : 2F
10 A2
10 A2
BAZELE MICROPROCESOARELOR
3 - 66
U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
Ad1 Ad2
Registru temp.
de adrese
Registru
de adrese
1
program
Memorie
Memorie
date
8B2F
10A3
10A2
10A1
10A0
Adrese
:3A LDA : 00111010
2
+1
Ad1 : 10001011 :8B
Date : 1100 0010 :C2
10 A2
8B


Fig.3.47.i. T2. Valoarea octetului cel mai putin semnificativ al adresei ADR pe magistra-
la de date; se incrementeaza PC


U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
Ad1
Registru temp.
de adrese
Registru de adrese
program
Memorie
Memorie
date 8B2F
10A3
10A2
10A1
10A0
Adrese
:3A LDA : 00111010
Ad2: 00101111 :2F
1 2
Ad1 : 10001011 :8B
Date : 1100 0010 :C2
10 A2
10 A3
8B
3


Fig.3.47.j. T3. Memorarea octetului cel mai putin semnificativ al adresei ADR in
partea superioara a registrului de adrese

Ad2 : 00101111 : 2F
Ad2 : 00101111 : 2F
10 A3
Ad2 : 00101111 : 2F
2F
Ad2
MICROPROCESOARE - CONCEPTE GENERALE

3 - 67

U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
Ad1 Ad2
Registru temp.
de adrese
Registru de adrese
program
Memorie
Memorie
date
8B2F
10A3
10A2
10A1
10A0
Adrese
:3A LDA : 00111010
Ad2: 00101111 :2F
Ad1 : 10001011 :8B
10 A3
8B2F
1


Subciclul 4 -- se va executa efectiv instructiunea: se incarca acumulatorul cu
valoarea de la adresa ADR
Fig.3.47.k. T1. Se selecteaza celula de memorie de date de la adresa 8B2F
H
aflata in
registrul tampon de adrese

U A L
R I
Registru de
instructiuni
unitate de
comanda
Acc
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
Ad1 Ad2
Registru temp.
de adrese
Registru
de adrese
program
Memorie
Memorie
date
8B2F
10A3
10A2
10A1
10A0
Adrese
:3A LDA : 00111010
Ad1 : 10001011 :8B
Ad2: 00101111 :2F
10 A3
1 2


Fig.3.47.l. T2. Data din celula selectata pe magistrala de date
Date: 11000010 : C2
8B 2F
8B 2F
Date: 11000010 : C2
Date: 11000010 : C2
BAZELE MICROPROCESOARELOR
3 - 68
U A L
R I
Registru de
instructiuni
unitate de
comanda
R T
Registru
temporar
>
ceas
Magistrala de date
Magistrala interna
P C
Ad1 Ad2
Registru temp.
de adrese
Registru de adrese
program
Memorie
Memorie
date 8B2F
10A3
10A2
10A1
10A0
Adrese
:3A LDA : 00111010
Ad1 : 10001011 :8B
Ad2: 00101111 :2F
10
A3
1 2 3


Fig.3.47.m. T3. Data din celula adresata este memorata in acumulator



3.5.4 Utilizarea stivei programului

Desi s-au facut si in paragrafele precedente referiri si s-au dat unele explicatii referitor la definirea si
modul principial de utilizare a stivei, data fiind importanta conceptului, se vor da in prezentul paragraf
detalii suplimentare in acest sens.

In mod implicit, nu exista posibilitatea, in cursul executiei programului, de a se "rememora" adresa
unei anumite instructiuni, dupa executia acesteia. Astfel, la apelarea unei subrutine, programatorul
trbuie sa indice la sfarsitul acesteia unde trebuie sa se "reintoarca" registrul indicator de program,
pentru a continua executia normala a acestuia. Deoarece o subrutina poate fi apelata din puncte
diferite ale programului, nu se poate face acest lucru prin revenire intr-un punct fix al programului (a
carui adresa ar putea fi, eventual, indicata la revenirea din subrutina). Din cauza structurii explicite a
instructiunilor, nu exista aceasta posibilitate in programele scrise in limbajul de asamblare; de aceea,
programatorul trebuie sa salveze adresa de revenire, ori de cate ori executia programului se
transfera dintr-un punct (unde este memorat secvential), in alta zona a memoriei, unde este memorata
alta parte a programului. Conceptul de stiva, introdus in paragrafele precedente, va fi utilizat pentru a
explica elementele esentiale legate de operarea cu stiva, particularizat pentru apelarea subrutinelor
(CALL), si revenirea din subrutine (RETURN).

Dupa cum s-a mentionat, stiva este organizata pe sistemul FIFO, cu registrul indicator de stiva
continand adresa urmatoarei locatii libere din stiva. Se utilizeaza doi termeni legat de operatiile cu
Date: 11000010 : C2
Date : 11000010 : C2
C2
MICROPROCESOARE - CONCEPTE GENERALE

3 - 69
stiva: salvarea in stiva (push), si refacerea din stiva (pop). Primul implica transferarea unei date in
varful stivei, iar cel de-al doilea, extragerea unei date din varful stivei. Data respectiva poate
reprezenta in sens general atat o adresa, necesara la revenirea dintr-o subrutina, cat si argumente
(valori, sau continutul unora dintre registrele microprocesorului) transmise prin stiva, subrutinei, sau
returnate programului apelant. Figura 3.48 prezinta acest mecanism de utilizare a stivei in cele doua
scopuri.

program principal
PUSH AX
PUSH BX
PUSH CX
CALL SUB1
urmat. instr.
PC1
CALL SUB2
urmat. instr.
subrutina 1
...
...
...
...
RETURN
SUB1
PC2
adresa
adresa
subrutina 2
RETURN
SUB2
adresa
cresterea continutului
stivei
adresa de inceput a stivei
AX
BX
CX
PC1
PC2

Fig. 3.48. Salvarea continutului registrelor si a adreselor de revenire in stiva

Programatorul trebuie sa tina seama de urmatoarele elemente relativ la utilizarea stivei:

- stiva reprezinta o zona de memorie, operand in modul LIFO;

- orice cuvant de date salvat in stiva, va trebui extras de acolo la un moment dat in cursul executiei
programului;

- o consecinta a modului LIFO de lucru cu stiva este ca informatia poate fi refacuta din stiva in
ordine inversata fata de cea de la salvarea in stiva;

BAZELE MICROPROCESOARELOR
3 - 70
- cresterea stivei este corelata cu scaderea continutului registrului indicator de stiva; astfel, cand stiva
este goala, SP are valoarea initiala (maxima); cand stiva este plina, SP are o valoare minima. Stiva
creste catre baza (valorile mici) ale memoriei sistemului.

Apelarea succesiva a unei subrutine din alta subrutina, inlantuit, este posibila in principiu fara alte
restrictii decat memoria aflata la dispozitie, alocata stivei. Mai mult, este posibila chiar apelarea unei
subrutine de catre ea insasi (apel recursiv), utilizata uzual corelat cu testarea unui indicator care
asigura iesirea din bucla recursiva.


Subrutinele si stiva

Exista trei operatii esentiale, asociate executiei corecte a unei subrutine:

- salvarea registrului indicator de program (PC), reprezentand adresa instructiunii imediat urmatoare
celei de apelare a subrutinei (prima instructiune de dupa cea de CALL); dupa executia subrutinei,
executia programului se reia de la aceasta instructiune;

- executarea subrutinei apelate;

- revenirea la adresa memorata la aplelare, si continuarea executiei din punctul respectiv.

Aceste operatii se efectueaza utilizand cele doua operatii complementare, de apelare a subrutinei
(CALL) si, respectiv, de revenire din subrutina (RETURN). Trebuie remarcat ca la orice operatie de
salvare in stiva, dupa salvarea valorii respective (PC la apelarea unei subrutine), continutul registrului
indicator de stiva SP este actualizat automat (decrementat), permitand o eventuala salvare ulterioara,
de exemplu in cazul unui alt apel, inlantuit, al unei alte subrutine. La orice operatie de revenire din
subrutina, se actualizeaza SP, (prin incrementare), si doar apoi se reface continutul PC, cu valoarea
care se citeste din stiva, reprezentand chiar valoarea salvata la apelarea subrutinei.

Transmiterea parametrilor

La apelarea sau revenirea dintr-o subrutina, este necesara comunicarea de date intre subrutine, in
afara de salvarea adresei de revenire. Acest proces de comunicare intre subrutine este cunoscut sub
numele de transmitere a parametrilor (argumente, sau variabile). Se pot evidentia trei metode de baza
in transmiterea parametrilor intre subrutine, ce vor fi descrise in continuare.

Prima si cea mai simpla metoda de transmitere a parametrilor este de a asocia fiecarei subrutine un
set de locatii de memorie, unde programatorul memoreaza date necesar a fi prelucrate de o alta
subrutina, apelata de prima. Aceste locatii de memorie pot contine atat date cat si adrese ale unor
date (variabile). Principala limitare a acestei metode (simpla, in esenta), este blocarea unor locatii de
memorie care vor fi utilizate doar pentru apelarea rutinei respective.

MICROPROCESOARE - CONCEPTE GENERALE

3 - 71
A doua metoda de transmitere a parametrilor se bazeaza pe utilizarea registrelor de uz general.
Inainte de a apela o subrutina, se incarca aceste registre cu argumentele ce trebuiesc transferate
subrutinei. Problemele asociate cu aceasta metoda (deasemenea simpla), sunt: necesitatea de a salva
continutul registrelor, utilizate la apelarea rutinei, pentru reutilizarea continutului lor dupa revenirea
din subrutina; limitarea introdusa de numarul relativ redus al registrelor de uz general.

A treia metoda de comunicatie este o forma speciala a celei anterioare, si se bazeaza pe utilizarea
stivei pentru memorarea temporara a datelor ce trebuiesc transferate subrutinei. In acest scop,
majoritatea microprocesoarelor au in setul de instructiuni operatii de transfer in/din stiva a continutului
registrelor de uz general (PUSH, respectiv POP, la microprocesorul 8086), care permit
salvarea/refacerea explicita in/din stiva, la executia instructiunilor respective, a registrelor
procesorului. Argumentele ce trebuiesc transmise subrutinei pot fi astfel salvate in stiva, apoi se face
apelul subrutinei; la intrarea in subrutina, se fac refaceri din stiva, citindu-se aceste valori, ce pot
astfel fi utilizate in cursul executiei subrutinei. Operatii de acest gen necesita, dupa cum s-a mai
mentionat, o mare atentie din partea programatorului, pentru a nu afecta procesul de revenire din
subrutina (regasirea continutului PC salvat la apelarea rutinei, in momentul revenirii la programul
apelant).

Registrul indicator de stiva trebuie initializat la lansarea programului, cu adresa de inceput a stivei.
Uzual, incarcarea stivei se face de la adrese mari spre cele mici, deci la start, continutul registrului SP
are o valoare uzual reprezentand limita superioara a memoriei de date. Programului si variabilelor
programului li se aloca, tot uzual, locatiile inferioare ale memoriei de date. Pe cand aceste locatii sunt
atribuite si fixate pe tot parcursul rularii programului (deci ocupa permanent o zona din memorie),
stiva se modifica in mod dinamic, dupa cum s-a mai precizat. Principala problema in timpul
utilizarii stivei este legata de cresterea acesteia la dimensiuni prea mari, conducand la suprapunerea
acesteia peste zona de date sau de cod de program. Daca se ajunge la o asemenea situatie,
(posibila in principiu, deoarece evolutia stivei poate scapa de sub estimarea programatorului),
efectele pot fi catastrofale pentru executia programului, complet imprevizibile (de exemplu, daca
stiva patrunde in zona de cod de program, acesta va fi alterat, prin inscrierea de date in stiva; daca
programul ajunge cu executia - contorul de program - in zona respectiva, se citeste data salvata in
stiva, ca un cod de program, se decodifica si, in functie de "codul" pe care il reprezinta - daca exista
codul respectiv in setul de instructiuni - se "executa". Evident, programul este complet alterat.
Problema este dificil de depanat, deoarece este foarte greu de detectat cauza unui asemenea "defect"
de program (care, ca simptome, se poate manifesta similar si in cazul unor defecte ale hardware-ului
- memorii defecte, de exemplu). Se poate ajunge la executarea "pas cu pas" a programului, si
examinarea continutului memoriei program, pe parcursul executiei programului. O masura necesara
este de a implementa o stiva cat mai mare cu putinta, avand o rezerva cat mai mare de memorie.


3.5.5 Limbajul de asamblare

Limbajul de asamblare utilizeaza, dupa cum s-a mentionat, mnemonici reprezentand prescurtari
(abrevieri) ale denumirilor - semnificatiilor - instructiunilor unui anumit tip de microprocesor. Faptul
BAZELE MICROPROCESOARELOR
3 - 72
ca se asociaza fiecarei instructiuni a microprocesorului cate o mnemonica, face ca programarea in
limbaj de asamblare sa reprezinte, dupa cum deasemenea s-a precizat, o programare in limbaj de
nivel scazut. Aceasta se datoreaza faptului ca fiecare microprocesor are structura sa specifica
(arhitectura, modalitati de interfatare si moduri de adresare distincte), si corespunzator, seturile de
instructiuni ale diferitelor tipuri de microprocesoare difera intre ele. Astfel, programatorul care scrie
programe in limbaj de asamblare trebuie sa stapaneasca foarte bine atat elementele legate de
hardware-ul cat si de software-ul microprocesorului respectiv. Pe de alta parte insa, programatorul
ce utilizeaza limbajul de asamblare are la indemana un instrument de lucru foarte puternic, in
momentul in care il stapaneste, deoarece doar prin utilizarea programarii in limbaj de asamblare se
poate avea un control absolut al procesorului. Principalul dezavantaj al utilizarii limbajului de
asamblare este ca scrierea, depanarea si modificarea acestor programe este mult mai dificila, si cere
o foarte buna cunoastere a microprocesorului si intelegere a functionarii sale. O experienta bogata in
acest sens este necesara pentru a implementa programe bune, eficiente.

Uzual, la ora actuala, la implementarea aplicatiilor industriale, utilizarea limbajului de asamblare se
face concomitent cu utilizarea unui limbaj de nivel inalt. Astfel, partile critice ale programului (de
obicei cele asociate operatiilor de timp real ale sistemului), necesitand o maxima eficientizare, mai
ales din punctul de vedere al vitezei de executie, se scriu in limbaj de asamblare. Restul
programului, care contine parti ce se pot executa cu prioritati mai scazute, nu neaparat in timp real,
poate fi implementat prin utilizarea unor limbaje de nivel inalt. Se poate astfel optimiza la miximum ca
raport performanta/cost de producere, procesul de implementare a aplicatiei respective.

Pentru programul (partea de program) scris in limbaj de asamblare, faptul ca este necesara
implementarea elementara a programului, instructiune cu instructiune, face dificila scrierea si testarea
acestuia (prin defalcarea operatiilor sistemului in operatii elementare, implementate cu cate o
instructiune de program). Pe de alta parte, apare facilitatea de utilizare, gestionare a tuturor
resurselor procesorului (registre, memorie, etc.), ceea ce poate conduce la optimizarea la maxim a
programului.

Cateva reguli de baza la scrierea programelor in limbaj de asamblare sunt urmatoarele:

- programatorul raspunde de completa gestionare a tuturor resurselor sistemului; zonele de
memorie ocupate de catre program, cele alocate variabilelor, cat si cele alocate pentru stiva, trebuie
definite explicit si respectate pe tot parcursul implementarii programului. Similar, adresarea
interfetelor de intrare/iesire trebuie facuta corect, coreland pentru fiecare port in parte semnificatia
cuvintelor de date, cu actiunile efectuate la adresarea acestora. O selectie gresita (adresare
incorecta, sau a unei celule de memorie sau port inexistent), sau utilizarea incorecta a semnificatiei
datelor, poate conduce la blocarea sau functionarea defectuoasa a sistemului;

- in program trebuiesc specificate adresele pentru fiecare variabila, locatie de memorie sau port
accesate la un moment dat;

MICROPROCESOARE - CONCEPTE GENERALE

3 - 73
- trebuiesc anticipate si evitate (prin modul de realizare a programului, sau prin implementarea de
teste corespunzatoare) situatiile de aparitie a operatiilor cu rezultate imposibile (depasiri - overflow
sau underflow);

- programatorul trebuie sa asigure gestiunea valorilor (date), necesare la executia programului.
Astfel, trebuie asigurata salvarea datelor (continutul registrelor de uz general, a celulelor de memorie
cu utilizare multipla), in diferitele parti ale programului care utilizeaza aceleasi resurse ale sistemului;

- manipularea datelor la nivel intern se va face in cod binar, ceea ce va implica necesitatea unor
conversii de la/la nivelul utilizator (valori zecimale, hexazecimale, caractere), la nivelul masina
(binar);

- depanarea programelor se va face mai dificil, uzual utilizand metode speciale (de genul executiei
pas cu pas a programului, si examinarii registrelor, continutului memoriei, etc.);

- in cazul unei functionari defectuoase a sistemului, este dificila localizarea defectului, care poate
proveni din defecte pe partea hardware, sau din partea software, sau din combinatii ale celor doua
componente, ceea ce necesita tehnici speciale, si o experienta bogata in testarea sistemului; uzual,
prin programe simple se testeaza integritatea si completa functionare a hardware-ului, apoi se trece
la implementarea unor programe complexe.

Elaborarea unui program in limbaj de asamblare nu este suficienta, dupa cum s-a mentionat, pentru
obtinerea si implementarea formei finale a programului, in cod obiect, in memoria sistemului, si
executia acestuia. Este necesar sa se dispuna de programul numit asamblor, care poate prelua
programul sursa, scris in limbaj de asamblare (mnemonici), si poate genera codul obiect
corespunzator fiecarei instructiuni. Scrise intr-o forma simbolica, asambloarele au o seama de
facilitati suplimentare: comenzi, directive, care faciliteaza scrierea programelor; utilizarea de denumiri
simbolice pentru variabilele programului; utilizarea etichetelor formale (in locul utilizarii adreselor
efective ale variabilelor, subrutinelor, etc.); conversii automate din diverse baze de numarare in binar;
posibilitatea definirii macroinstructiunilor ce permit simplificarea scrierii programului; etc. Totodata,
programul asamblor verifica corectitudinea sintactica a programului scris in limbaj de asamblare,
verifica corectitudinea adresarilor variabilelor din memorie, unicitatea lor, etc.

Programul asamblor poate fi rezident in memoria PROM a sistemului microprocesor, sau poate fi
incarcat in memorie si apoi executat.

Pentru scrierea programelor sursa, continand programul in limbaj de asamblare, se utilizeaza
deasemenea alte programe speciale, numite editoare de text, care permit scrierea efectiva a acestor
programe, si memorarea acestora, intr-o zona a memoriei sistemului sau, la sistemele mai evoluate,
pe un suport de memorie externa de tipul discului flexibil, hard-discului, etc.

In fine, in etapa finala a elaborarii unui program, si mai ales in cazul necesitatii generarii programului
executabil in forma sa finala, din mai multe parti de program, elaborate separat, (scrise eventual in
BAZELE MICROPROCESOARELOR
3 - 74
limbaje diferite, si compilate deasemenea individual, fiecare prin executia programului asamblor sau a
compilatorului corespunzator), va fi executat un alt program specific, care realizeaza legarea acestor
componente ale programului, numit linker (link = legatura). Linker-ul va face totodata alocarea
efectiva a adreselor si resurselor sistemului, generand valorile corecte ale acestora in codul obiect
final ce se va implementa si executa.

In etapa implementarii si testarii unui program, este deosebit de util un program de depanare
(debug), prezent deasemenea la unele sisteme microprocesor.

Toate aceste programe necesare pentru a dezvolta, implementa si testa o aplicatie pe un sistem
microprocesor, vor necesita ca, in etapa de creare a unei aplicatii, utilizatorul sa aiba la dispozitie un
microcalculator de putere relativ ridicata, denumit sistem de dezvoltare. Pe aceste sisteme,
programele se incarca in memoria RAM a sistemului, si pot fi cu usurinta testate, modificate, etc. De-
abia dupa testarea completa, programele pot fi memorate definitiv in memorii de tip PROM, si
implementate pe sistemele ce se vor utiliza in aplicatia finala, care eventual sunt dotate cu resurse mai
reduse (mai putina memorie, periferice, etc.).

Din cele prezentate, reiese clar necesitatea utilizarii unei anumite strategii in elaborarea programelor
pentru sistemele microprocesor.



3.5.6 Metodologia elaborarii programelor

Pasul important ce poate fi facut odata cu stapanirea setului de instructiuni al microprocesorului este
elaborarea de programe, pentru a determina, prin lansarea lor in executie, implementarea aplicatiilor
dorite pe sistemul microprocesor. Programatorul trebuie sa elaboreze un program corect din toate
punctele de vedere, nici o eroare neputand fi acceptata. De aceea, in general, strategia elaborarii unui
program de la punerea problemei, pana la utilizarea lui, va trebui sa treaca prin urmatoarele faze: (1)
analiza; (2) organizare; (3) codificare; (4) testare; (5) elaborarea documentatiei aferente
programului.

In faza de analiza se contureaza cu claritate cerintele programului, se elaboreaza expresiile
matematice ce se vor utiliza. Un program bine elaborat se va ghida dupa un algoritm, care prevede
si indica ce trebuie sa faca programul, in oricare dintre situatiile posibile ce apar in cursul rezolvarii
problemei propuse. Astfel, algoritmul implica cel putin indicatii asupra actiunilor de urmat, intr-un
numar finit de pasi, pentru o problema data. (Ca un exemplu clasic, etapele necesare pentru
prepararea unei retete reprezinta un algoritm).
Strans legata de faza de analiza este faza de organizare. Algoritmul generat anterior este
organizat in operatiile necesare pentru rezolvarea problemei. Este etapa in care se elaboreaza asa
numitele scheme logice (diagrame ale algoritmului, utilizand niste simboluri standard, desemnand
diversele actiuni posibile --- vezi fig.3.49).

MICROPROCESOARE - CONCEPTE GENERALE

3 - 75
De modul de elaborare optima a algoritmului si a schemei logice, ca organizare si eliminare a
portiunilor redundante, depinde obtinerea unui program cat mai eficient (rapid si ocupand memorie
cat mai mica). Nu este absolut necesara, pana in acest punct, cunoasterea setului de instructiuni.
Totusi, pentru o utilizare cat mai eficace a posibilitatilor microprocesorului, cunoasterea elementelor
de hardware si software specifice acestuia este de dorit.

Faza de codificare, care urmeaza, reprezinta momentul trecerii la elaborarea codului programului.
Aici se utilizeaza setul de instructiuni. Pe baza lui, se scriu instructiunile ce vor genera actiuni ale
microprocesorului, corespunzatoare algoritmului si schemei logice elaborate.

Decizie
Operatie
iesire
Operatie
intrare
calcule
operatii
Start sau Stop
conector

Fig.3.49. Simboluri tipice utilizate la alcatuirea schemelor logice

Dupa codificare, programul este mai intai testat prin comparare cu schema logica, verificand
corectitudinea fiecarei instructiuni. Apoi, programul este introdus in memoria microcalculatorului (in
cod masina), trecandu-se la executia lui. Este etapa in care se localizeaza si lamuresc diversele erori
ce au putut aparea la una dintre fazele trecute.

Totodata trebuie remarcat faptul ca, adesea, aceste erori vor implica revenirea si modificarea unor
parti din algoritm si/sau schema logica, si/sau codul elaborat. Programul va trebui executat de mai
multe ori, pana la obtinerea variantei corecte si definitive.

In acest ultim punct, un pas deosebit de important este reprezentat de faza de documentare. Toate
informatiile referitoare la etapele anterioare, de la punerea problemei, elaborarea algoritmului si a
schemei logice (eventual diversele versiuni succesive, indicand evolutia programului), codul
programului (cu comentarii suficiente pentru a se corela cu schema logica), eventuale esantioane de
date de intrare/iesire, daca este cazul, trebuie sistematizate si incluse in documentatia aferenta
programului respectiv.

Sensurile majore ale acestei faze sunt reprezentate atat de necesitatea de a putea rememora cu
usurinta elaborarea programului (o succesiune de instructiuni necomentate devine, dupa cateva zile
de la scriere, foarte greu de analizat, chiar de catre cel care a elaborat-o), cat si de posibilitatea
utilizarii ulterioare a experientei castigate la scrierea programului respectiv, pentru eventuale
modificari ale acestuia, sau la elaborarea unor programe noi.
BAZELE MICROPROCESOARELOR
3 - 76

, programarea microprocesoarelor reprezinta o problema serioasa, necesitand
o buna pregatire si experienta, castigate prin scrierea de programe cu grad de dificultate crescut,
corelata cu posibilitatea testarii acestora pe viu (pe un sistem microprocesor), ajutand la identificarea
si eliminarea erorilor inerente ce apar. Ea se bazeaza pe cunoasterea, cel putin pana la un anumit
nivel de profunzime, a arhitecturii de baza a sistemului, a setului de instructiuni al microprocesorului, a
posibilitatilor si a metodelor de interfatare cu echipamente de intrare/iesire, cat si pe aplicarea unei
anumite metodologii de programare. Aceste aspecte vor fi reluate in capitolele urmatoare, insotite de
exemple corespunzatoare.


3.6 ELEMENTE DE INTRARE/IESIRE ALE SISTEMELOR MICROPROCESOR

Sistemul microprocesor trebuie sa interactioneze cu lumea inconjuratoare. Este necesara atat
primirea de informatii, din afara acestuia, cat si, pe baza calculelor efectuate, furnizarea de informatii,
comenzi etc., spre exterior.

Desi unitatea centrala (CPU) poate efectua multiple operatii interne, este necesara comunicatia
acesteia cu exteriorul, fara de care functionalitatea sistemului ar fi practic inexistenta. Deoarece
singura cale de comunicatie dintre procesor si exterior este reprezentata de magistrala de date a
sistemului, (utilizand totodata magistralele de adrese si control), este necesar sa se utilizeze circuite
speciale care sa converteasca informatiile diverse, de la o gama foarte larga de echipamente si
componente de intrare si iesire, la semnale compatibile cu cele de pe magistralele sistemului
microprocesor. Aceste circuite, care implementeaza o functie de compatibilizare, se numesc
module de interfata (sau module de intrare-iesire). Astfel, comunicatia cu unitatea centrala
reprezinta transferul datelor prin aceste interfete, realizata intr-un mod selectiv si controlat uzual (dar
nu exclusiv - vezi tehnicile DMA), de catre microprocesor. Conventiile utilizate pentru a implementa
aceasta comunicatie, incluzand temporizarile semnalelor, controlul procesului de transfer de date,
modul de reprezentare (codificare) a datelor, alcatuiesc asa-numitul protocol al comunicatiei.
Functia de baza a modulelor de interfata va fi aceea de a converti semnalele de pe magistralele CPU
pentru seturile de porturi de intrare sau iesire. Un port reprezinta astfel o colectie de componente
ale sistemului la care se pot conecta echipamente externe (periferice).

Dupa cum s-a precizat si in paragrafele precedente, gama arhitecturilor si a implementarilor
diverselor sisteme microprocesor este extrem de larga, fara o standardizare a functiilor si/sau
semnalelor magistralelor acestora. Pe de alta parte, aceste sisteme diverse vor trebui sa
interactioneze cu gama, deasemenea larga si nu neaparat unitara, a echipamentelor periferice,
utilizand o paleta importanta de semnale, viteze de lucru si protocoale de comunicatie.
Compatibilitatea intre operatiile interne ale procesorului si aceste semnale externe se va asigura de
catre o mare varietate de tipuri de interfete. Uzual, firmele producatoare de microprocesoare vor
asigura si circuitele specializate, compatibile cu tipurile de microprocesoare produse de catre
acestia, pentru a se implementa diversele interfete specializate.

Concluzionand
MICROPROCESOARE - CONCEPTE GENERALE

3 - 77
Astfel, comunicatia intre microprocesor si echipamentele externe are loc in doua etape succesive:
prima, in care transferul are loc intre CPU si interfata, si a doua , in care comunicatia are loc intre
interfata si periferic. Uzual, primul stadiu se denumeste operatie de intrare-iesire, iar al doilea,
operatie de transmisie a informatiilor (v.fig.3.50).

In consecinta, interfetele de intrare/iesire reprezinta calea de legatura ce asigura transferul de date
intre microprocesor si exteriorul lui.

Exista numeroase posibilitati pentru realizarea acestor legaturi. In functie de configuratia sistemului si
de cerintele aplicatiei, se pot utiliza structuri mai simple sau deosebit de complexe.


Memorie
Microprocesor
Interfata I/E
Periferic
Memorie
Microprocesor
Interfata DMA
Periferic
a
b
Fig.3.50. Moduri de interfatare: (a) sub controlul microprocesorului; (b) prin acces direct la memorie


Tinand seama ca elementele de intrare asigura preluarea informatiei dintr-o forma accesibila omului
(reprezentari --- caractere, litere, cifre, pana la imagini tv.), sau de la elemente diverse ale instalatiilor
industriale (semnalizari, traductoare etc.), respectiv cele de iesire furnizeaza informatii utilizabile de
catre operatorul uman (mesaje tiparite, semnalizari audio-vizuale, sinteza de voce), cat si pentru
comanda, actionarea elementelor echipamentelor industriale, se poate aprecia gama deosebit de
larga de tipuri si configuratii in care se vor prezenta atat interfetele de intrare/iesire, cat si perifericele
sistemelor microprocesor.

Semnale exterioare de o mare varietate a formelor de prezentare (analogice, numerice, de alta natura
decat electrice), trebuie convertite la formele de informatie, limitate, acceptate de catre
microprocesor. Conversii similare trebuie efectuate la iesirea spre exteriorul sistemului
microprocesor. Trebuie adaptate deasemenea vitezele de lucru diferite ale perifericelor, respectiv ale
microprocesorului. Uzual, acesta lucreaza mult mai rapid, putand efectua numeroase operatii, in timp
ce, de exemplu, se preia un caracter de la o consola (prin apasarea unei clape a acesteia) si se
pregateste intr-o forma adecvata citirii de catre microprocesor. De asemenea, exista si echipamente
foarte rapide (discuri magnetice, de exemplu), care pot furniza/prelua informatii catre/de la memoria
BAZELE MICROPROCESOARELOR
3 - 78
sistemului, cu viteze mai mari decat cele ce pot fi obtinute daca transferul se efectueaza de catre
microprocesor (sub comanda acestuia). In aceste cazuri, se utilizeaza asa-numitele tehnici de transfer
al informatiei prin acces direct la memorie (DMA
1
), pentru care accesul intre interfata si memoria
sistemului se face sub controlul unui circuit specializat, fara controlul programului microprocesorului.
Se vor adopta solutii hardware-software care sa asigure o performanta optima a sistemului. In
functie de cerintele acestuia, de numarul de elemente pe care le supervizeaza microprocesorul, se vor
adopta diverse tehnici de lucru.
Exista trei moduri principale de lucru cu elementele de intrare/iesire, permitand controlul si
sincronizarea transferului de date:

(a) Operatii de intrare/iesire efectuate sub controlul programului;
(b) Operatii de intrare/iesire prin intreruperi;
(c) Operatii de intrare/iesire prin acces direct la memorie.

Tipul de operatie I/E utilizata intr-o aplicatie va depinde de rata de transmitere a datelor, de
intarzierea maxima cu care microprocesorul poate prelua/transmite datele din momentul
disponibilitatii echipamentului care le vehiculeaza, de posibilitatea executarii, intercalat cu operatiile
I/E, a altor operatii ale unitatii centrale.

Din punctul de vedere al programarii microprocesorului pentru operatii de I/E, acestea se pot
efectua fie prin executarea de instructiuni specifice de I/E, fie prin instructiuni proprii operarii
cu elemente de memorie (v.par.urmator). In orice caz, pentru diferentierea intre diversele
echipamente ale sistemului, acestea sunt selectate in mod unic, conform informatiei de pe magistralele
de adrese si de control, in mod asemanator selectiei celulelor de memorie.

Porturile sistemului vor prelua sau transmite informatia sub forma de cuvinte de date, de lungime
specifica procesorului (8, 16 biti). Accesul la magistrala de date va fi facut tot prin circuite tampon.
Astfel, tehnicile generale de adresare si selectie de cip ale porturilor vor fi similare celor de la
memorii, cu unele particularitati specifice, care vor fi mentionate in paragrafele urmatoare.

Ca o mentiune speciala, trebuie remarcat ca, spre deosebire de memorii, unde la o adresa se va
gasi o singura celula de memorie, aceeasi si pentru operatiile de scriere si pentru cele de citire, la
operatiile cu porturi, este permis, si se si intalnesc situatii in care o aceeasi adresa este utilizata
pentru doua interfete diferite, una de intrare, si alta de iesire. Aceasta deoarece pot exista porturi
doar de intrare, si altele doar de iesire, deci cu flux unic al datelor, doar de la sau doar spre
microprocesor.

In continuare se vor analiza cele trei tipuri de baza de organizare a transferurilor de date in operatiile
de I/E ale microprocesorului.


3.6.1 Operatii I/E efectuate sub controlul programului

1
DMA: Direct Memory Access --- acces direct la memorie.
MICROPROCESOARE - CONCEPTE GENERALE

3 - 79

Una dintre cele mai accesibile si utilizate metode de efectuare a operatiilor de I/E este sub controlul
nemijlocit al programului microprocesor. Astfel, prin instructiuni specifice, care determina selectia
porturilor de I/E ale sistemului, microprocesorul efectueaza operatii de transfer de date intre aceste
interfete si CPU.
Exista doua tipuri de baza (din punctul de vedere al semnificatiei), pentru informatia transmisa intre
microprocesor si portul de intrare/iesire, si anume cuvintele de control si cuvintele de date
(vezi fig. 3.51).

>
>
<
<
cuvinte de date
date de intrare
date de iesire
cuvinte de control
cuvinte de comanda
cuvinte de stare
Echipament
intrare / iesire
Microprocesor

Fig.3.51. Fluxul de informatie intre microprocesor si o interfata de I/E

Cuvintele de control sunt utilizate pentru sincronizarea operatiilor portului si ale
microprocesorului, si setarea/testarea unor parametri, operatii necesare in vederea transmiterii
cuvintelor de date.

Folosite in operatii de scriere spre port, cuvintele de control sunt denumite cuvinte de comanda
a portului si permit, prin afectarea pentru fiecare bit al cuvantului, a unei semnificatii unice,
programarea portului (pentru porturile care pot fi programate). Astfel se pot initia unele operatii
sau seta unii parametri (oprirea unui motor, modificarea ratei de transmisie a unor date, stergerea
unui indicator de eroare etc.).

Citirea cuvintelor de control, denumite in acest caz cuvinte de stare, permite, prin testarea prin
program a bitilor cuvantului citit de la port, analizarea starii acestuia (daca are sau nu informatie
disponibila, daca poate prelua alt cuvant de date, daca transferul s-a efectuat corect etc., in functie
de posibilitatile si functiile portului) si luarea de decizii adecvate de catre microprocesor (in speta, se
vor executa in mod corespunzator acele sectiuni din programul sistemului care trateaza situatia
existenta).

La efectuarea operatiilor de intrare/iesire sub controlul programului, se pot utiliza:

(a) instructiuni specifice de I/E. In acest caz, microprocesorul este prevazut cu semnale pe
magistrala de control, diferite pentru operatiile cu memoria, respectiv cu porturile. Se conecteaza atat
memoria cat si porturile la magistralele de adrese si de date ale sistemului, dar se utilizeaza semnale
de control distincte pentru cele doua categorii de componente ale sistemului. Figura 3.52 prezinta
BAZELE MICROPROCESOARELOR
3 - 80
modul de structurare a sistemului in acest caz. Utilizand instructiunile specifice de I/E, prin program,
se genereaza la executia acestor instructiuni semnalele de control asociate, selectand porturile de I/E
si efectuand transferul dorit al informatiilor.
Mag.
adrese
Decodificare
Memorie Interfata I/E
Periferic
Mag. date
selectie
memorie
selectie port
operatie cu porturi
operatie cu memoria
Micro-
procesor
Mag.
control
Decodificare

Fig. 3.52. Utilizarea operatiilor specifice de I/E, distincte de cele cu memoria

Exista doua moduri principiale de implementare a acestui tip de operatii I/E:

(a1) cate o instructiune unica pentru fiecare operatie de I/E mentionata, utilizand minimum
o singura adresa pentru un port. In acest caz, exista patru instructiuni tipice:

(1) citire de date (citire cuvant de date);
(2) scriere de date (scriere cuvant de date);
(3) transmitere comanda (scriere cuvant de comanda);
(4) citire stare (citire cuvant de stare).

Acest tip de operatie cu porturile ar necesita un numar de minimum 2 semnale de control, pentru a
diferentia, la o operatie cu acelasi port, sensul si tipul instructiunii executate la un moment dat.

Figura 3.53 prezinta structura sistemului in acest caz. Metoda nu este utilizata in mod tipic, in
sistemele microprocesor uzuale.
MICROPROCESOARE - CONCEPTE GENERALE

3 - 81
adrese
Periferic
Mag. date
selectie port
scriere comanda port
Micro-
procesor
Mag.
control
Decodificare
Mag.
citire stare port
citire date port
scriere date port

Fig. 3.53. Utilizarea unei singure adrese de port, si a patru semnale de control I/E

(a2) doua instructiuni I/E, una pentru intrare, alta pentru iesire, atat pentru cuvintele de
date, cat si pentru cele de control. Se vor utiliza in acest caz minimum doua adrese pentru un
port, pentru a diferentia operatia ce se efectueaza, referitor la date sau control. Cele doua
instructiuni tipice, ce se definesc in acest caz, vor fi:

(1) citire informatie (cuvant de data sau de stare);
(2) scriere informatie (cuvant de data sau de comanda).

Pentru acest tip de operatie de I/E, este necesar minimum un semnal de control care sa
diferentieze sensul transferului datelor (citire sau scriere), care corelat cu adresa de la / la care se
face transferul, sa poata defini in mod unic operatia ce se executa. Metoda este una dintre cele mai
intalnite tehnici de utilizare a porturilor de I/E. Figura 3.54 prezinta structura de principiu a sistemului
in acest caz.
adrese
Periferic
Mag. date
selectie port
scriere port
Micro-
procesor
Mag.
control
Decodificare
Mag.
citire port
control
selectie port
date
Fig. 3.54. Utilizarea a doua adrese I/E si a doua semnale de control

BAZELE MICROPROCESOARELOR
3 - 82
(b) nu se folosesc instructiuni separate de I/E. Se va adresa portul ca o celula de memorie.
Se configureaza memorie in sistem, mai putina decat capacitatea maxima a acestuia. La adresele
ramase libere se va asigura selectia portului respectiv. (Deci, la aparitia semnalelor de adresa
corespunzatoare si a celor de control, proprii lucrului cu celula de memorie respectiva, se va selecta
de fapt si se va vehicula informatie cu portul dorit)
1
. Desi memoria sistemului devine astfel mai mica,
acesta este un impediment minor, compensat in primul rand de faptul ca paleta de posibilitati oferita
de instructiunile de tip lucru cu memoria este mult mai larga. (Din punctul lui de vedere,
microprocesorul va efectua operatii cu o celula de memorie, nu cu un port). Operatiile tipice pentru a
efectua transferul datelor vor fi in acest caz:

(1) incarcare data (citire cuvant de data sau stare);
(2) memorare data (scriere cuvant de data sau comanda).

Figura 3.55 prezinta structura de principiu a sistemului in acest caz.
Mag.
adrese
Decodificare
Memorie Interfata I/E
Periferic
Mag. date
selectie
memorie
selectie port
citire/scriere
Micro-
procesor
Mag.
control

Fig. 3.55. Utilizarea operatiilor de I/E, de tipul "memory mapped I/O"

O comparatie succinta a celor doua metode prezentate anterior poate evidentia elementele
esentiale ale acestora, de care se tine seama la configurarea structurii sistemului microprocesor.
Astfel, utilizarea instructiunilor si a semnalelor specifice de I/E, are avantajul unei mai bune
organizari si clarificari a programului, cat si a configurarii schemei de selectie a memoriei si porturilor
sistemului. Pe de alta parte, metoda "memory mapped I/O" permite utilizarea instructiunilor uzuale
de lucru cu memoria, cu avantajele aferente (mult mai multe instructiuni aferente, moduri de adresare
complexe, etc.); pe de alta parte insa, metoda implica complicatii in ceea ce priveste schemele de
adresare si selectie a memoriei si interfetelor sistemului. In plus, o problema suplimentara in acest caz
o reprezinta modul si metodologia necesar a fi utilizata la depanarea programului, fiind mai dificila
diferentierea operatiilor cu memoria de cele cu porturi, de vreme ce instructiunile utilizate la aceste
operatii coincid (doar adresele diferentiind cele doua tipuri de componente).

1
Metoda este desemnata cu termenul de "memory-mapped I/O" --- intrare/iesire mapata in memorie
MICROPROCESOARE - CONCEPTE GENERALE

3 - 83

Capacitatea de adresare a porturilor, pentru tipurile uzuale de microprocesoare, variaza de la 256
de porturi I/O (uzual la microprocesoarele de 8 biti), pana la 64k porturi de I/O sau mai mult. In
cazul utilizarii porturilor organizate ca "memory mapped I/O", din totalul spatiului de memorie
configurabil pentru microprocesorul respectiv se va decide combinatia memorie/porturi optima
pentru aplicatia respectiva. Uzual, atat memoria cat si porturile sistemului se organizeaza in acest caz
in zone compacte de adrese (blocuri) (pentru memorie acest lucru fiind, evident, absolut necesar).

Modalitatile de utilizare in program a cuvantului de control sunt, in principal, date de o
secventa de program, de genul:

(a) se scrie cuvantul de comanda la port, pentru a cere transferul de cuvant de date;
(b) se citeste cuvantul de stare de la port;
(c) se verifica bitii de stare ce indica posibilitatea transferarii datelor;
(d) se reiau pasii b-c, pana ce portul este gata de transfer;
(e) se citeste (scrie) cuvantul de date.

O astfel de secventa poate aparea pe parcursul programului principal al microprocesorului.

Cu aceasta mentiune, figura 3.56.a prezinta implementarea secventei de executare a operatiilor de
I/E in cadrul programului principal, utila in realizarea programelor simple; in figura 3.56.b se prezinta
implementarea acestei secvente sub forma unei subrutine, apelata in cursul programului principal, in
punctele in care se doreste transferul de informatie de la/la portul respectiv, sau doar se testeaza
starea acestuia. Se evita astfel pierderea din timpul de lucru al procesorului. Problema este si mai
delicata in cazul mai multor porturi. Utilizarea a cate unei astfel de subrutine pentru testarea starii nu
este avantajoasa; se implementeaza solutii de genul celor din figura 3.56.c. Microprocesorul poate
testa rapid starea mai multor porturi, evitand testarea separata a acestora. Totusi, pot aparea
intarzieri considerabile intre disponibilitatea portului si preluarea/transmiterea datelor de la/la acesta.
Totodata, programul principal trebuie sa apeleze, in puncte stabilite de catre programator, si deci
doar cand este disponibil (neavand alte sarcini mai importante), aceste subrutine.

O solutie mult mai avantajoasa, din punctul de vedere al timpului de raspuns la evenimente (cand este
posibil transferul), care permite implementarea unor programe mai clar si corect elaborate, este
oferita de catre efectuarea operatiilor I/E prin intreruperi.


3.6.2 Operatii de intrare/iesire efectuate prin intreruperi

Operarea prin intreruperi este bazata pe utilizarea unor semnale de control specifice, lansate
de la periferice, catre microprocesor, anuntand un eveniment semnificativ la nivelul acestora
(date disponibile pentru a fi preluate, posibilitatea acceptarii de noi date de la procesor etc.).

BAZELE MICROPROCESOARELOR
3 - 84
Lucrul in intreruperi permite operarea aparent simultana a mai multor programe distincte ale
microprocesorului.

In principal, aceasta tehnica este aplicata pentru controlul si lucrul cu echipamentele periferice si
pentru implementarea sistemelor ce opereaza in timp real (efectuand anumite operatii ---
masuratori, calcule, comenzi), la intervale predeterminate de timp. Bazandu-se pe faptul ca, in
general, procesorul are viteza de lucru net superioara perifericelor, el lucreaza cu fiecare doar la
"cererea" acestuia, putand astfel sa serveasca mai multe dintre ele, la vitezele lor de lucru.

Sistemul de intreruperi va permite acest mod de solutionare a problemei. Intr-o forma simplificata,
aparitia unei intreruperi la procesor determina urmatoarele evenimente:

• • terminarea instructiunii curente a microprocesorului;
• • memorarea valorii contorului de program (PC) in stiva;
• • incarcarea PC cu o adresa de program, predefinita;
• • inhibarea intreruperilor si continuarea executiei de la noua adresa a PC.


MICROPROCESOARE - CONCEPTE GENERALE

3 - 85
(a)
program
principal
transfer
posibil
da
transfer date
prin I/E
continuare
program
principal
nu
verificare
stare
transfer
posibil
da
transfer date
prin I/E
nu
verificare
stare
subrutina
I/E
return
program
principal
(b)
program
principal
exista
date
disp.
nu
da
exista
date
disp.
transfer
posibil
echip.1
transfer
posibil
echip.2
â
nu
etc.
transfer
date
(echip.2)
transfer
date
(echip.1)
nu
da
return
subrutina
I/E
(c)

Fig.3.56 Operatii I/E controlate prin program
BAZELE MICROPROCESOARELOR
3 - 86
Dupa tratarea intreruperii (zona de program la care s-a sarit la intrerupere este scrisa special
pentru evenimentul aparut), se executa o instructiune specifica de revenire in programul intrerupt
(se reface PC din stiva), continuandu-se executia acestuia (printr-un proces asemanator celui
intalnit la revenirea din subrutinele obisnuite, apelate prin program). Figura 3.57 prezinta un exemplu
in acest sens.
vector de
intrerupere
recunoastere
cerere de
intrerupere
memorare
adresa
intrerupere
adresa de
revenire
transfer
posibil
nu
da
transfer
date I/E
refacere stare
microprocesor
salt la adresa
de revenire
salt fortat la
program
principal
verificare
stare
subrutina
tratare
intrerupere

Fig. 3.57. Operatii I/E controlate prin intreruperi

Inhibarea intreruperilor, la acceptarea cererii de intrerupere, evita tratarea unei noi intreruperi pana
ce nu s-a rezolvat cea in curs de tratare. Uzual, sistemul permite existenta mai multor intreruperi,
de la diverse echipamente. Exista diverse modalitati pentru a determina saltul la adresa subrutinei
aferente intreruperii respective. Astfel, este posibila existenta mai multor pini distincti ai
procesorului, fiecare corespunzator unei anumite intreruperi. Aparitia pe unul dintre acestia a unui
semnal activ va implica saltul programului curent, la o adresa fixa, cunoscuta de catre
programator, si unde a fost plasata subrutina de tratare a intreruperii respective.
In cazul existentei unei singure linii de intrerupere la microprocesor, exista doua moduri
principale de recunoastere a sursei care a generat intreruperea:

(a) Scanarea echipamentelor (polling). Saltul in subrutina de tratare a intreruperii este la adresa
fixa. Aici se testeaza cuvantul de stare al fiecarui echipament de I/E, pentru a se determina, prin
program, care echipament de I/E a generat intreruperea. Figura 3.58 prezinta aceasta tehnica, ce
permite deci recunoasterea software a sursei de intrerupere.

(b) Vectori de intrerupere. In aceste structuri, in momentul in care microprocesorul este disponibil
pentru acceptarea intreruperii, el confirma acest accept, setand un semnal catre echipamentele ce
solicita intreruperea. Primind acceptarea, acestea vor genera pe magistrala de date, un cod de
MICROPROCESOARE - CONCEPTE GENERALE

3 - 87
instructiune de apelare de subrutina, cod generat de catre logica de intrerupere (uzual, un
controler de intrerupere --- circuit specializat pentru arbitrarea si generarea intreruperilor).
Acest cod contine cate o adresa pentru fiecare echipament in parte. In general, aceste adrese sunt
localizate secvential in memoria program si formeaza asa-numitul vector de intrerupere al
sistemului. (De exemplu, vor fi plasate in memorie, din 8 in 8 celule de memorie). Evident, cele 8
celule nu permit, de regula, tratarea corespunzatoare a intreruperii. De aceea, programatorul va plasa
aici doar o instructiune de salt, catre adresa unde se gaseste subrutina corespunzatoare de
tratare a intreruperii).

O problema importanta, la tratarea intreruperilor, este reprezentata de prioritatea cu care se
executa acestea. Este posibila aparitia simultana a mai multor intreruperi, sau aparitia unei
intreruperi ce trebuie deservita, chiar in timp ce se deservea o intrerupere mai putin urgenta.
Inhibarea, pur si simplu, a intreruperilor elimina aceasta posibilitate, ceea ce poate sa nu ofere
performante satisfacatoare sistemului. De aceea, acordarea unei prioritati fiecarei cereri de
intrerupere si solutionarea acestora conform prioritatii avute sunt foarte importante.

intrare la
intrerupere
verificare stare
bit intrerupere
al echipam.I/E 1
verificare stare
bit intrerupere
al echipam.I/E 2
verificare stare
bit intrerupere
al echipam.I/E 3
iesire la eroare
param. pt.
echipam.3
param. pt.
echipam.2
param. pt.
echipam.1
return
ß à
â â
â
â
â
â
â
â
da
da
da
nu
nu
nu
â

Fig. 3.58. Testarea cererii de intrerupere a echipamentelor de I/E in rutina de intrerupere
Se poate rezolva problema prioritatii atat prin software, cat si prin hardware.

(a) Prioritatati software. Ordinea in care se testeaza starea echipamentelor de I/E (conform fig.
3.58) corespunde prioritatii acestora. Detectarea, in ordinea testarii, a unei cereri de intrerupere
implica saltul la rutina corespunzatoare acestei intreruperi, care va avea prioritate.

(b) Prioritati hardware. Un semnal de control trimis de catre microprocesor in exterior trece prin
logica de control a fiecarui echipament (vezi fig. 3.59). Daca intreruperile sunt inhibate (mascate),
acest semnal nu permite generarea de intreruperi catre procesor. Cand intreruperile sunt activate,
semnalul trece pe rand prin echipamentele ce nu cer intrerupere. Ajungand la cel care cere
intrerupere, logica implementata blocheaza generarea de intreruperi de la urmatoarele echipamente si
BAZELE MICROPROCESOARELOR
3 - 88
determina generarea intreruperii catre procesor. Astfel, pozitia in lantul de echipamente determina
prioritatea acestora.
Echipam.I/E3
logica control
intreruperi
Echipam.I/E2
logica control
intreruperi
Echipam.I/E1
logica control
intreruperi
logica control
intreruperi
Microprocesor

Fig.3.59. Implementarea hardware a logicii de prioritati la intrerupere, de la echipamentele I/E

Schemele cele mai sofisticate permit existenta a cate unui bit de mascare a intreruperii corespunzator
fiecarui nivel de intrerupere existent. Conform acestor scheme, aparitia unei intreruperi determina
mascarea nivelelor de prioritate inferioara. Intreruperi de prioritate mai mare vor intrerupe, la randul
lor, subrutinele de tratare a intreruperilor de nivel inferior. Dupa tratarea evenimentelor prioritare, se
va reveni la tratarea celor mai putin prioritare. Intreruperile aparute pe nivele inferioare celui tratat
vor astepta (fiind mascate), terminarea tratarii curente. Figura 3.60 prezinta modul de desfasurare a
evenimentelor in acest caz.

O mentiune trebuie facuta si referitor la salvarea starii programului, la aparitia unei intreruperi.
Saltul la rutina de intrerupere va implica alterarea, prin operatiile efectuate acolo, a informatiei din
registrele procesorului.
MICROPROCESOARE - CONCEPTE GENERALE

3 - 89
Subrutina
tratare
intrerupere
nivel 1
program
principal
cerere de
intrerupere
nivel 3
cerere de
intrerupere
nivel 1
cerere de
intrerupere
nivel 2
Subrutina
tratare
intrerupere
nivel 2
Subrutina
tratare
intrerupere
nivel 3
return
return
return

Fig.3.60. Rezolvarea intreruperilor multiple cu prioritati software mascabile

Deoarece, la revenirea in programul intrerupt, procesorul trebuie sa reia operatiile din starea dinainte
de intrerupere, este necesara salvarea prealabila a acestei stari, inainte de a se incepe tratarea
propriu-zisa a intreruperii. Se vor executa instructiuni specifice de salvare in stiva procesorului a
continutului registrelor acestuia. La terminarea tratarii intreruperii, se vor reface, din stiva, aceste
informatii.

Unele microprocesoare au doua seturi de registre, unul pentru programul principal, altul pentru
rutinele de intreruperi. Alte procesoare au zona de registre de lucru in memoria RAM a sistemului,
exterioara microprocesorului. Adresa de baza a zonei de registre este continuta intr-un registru
special al procesorului. Modificarea continutului acestuia implica operarea in alta zona de memorie.
Refacerea valorii sale implica revenirea la vechea stare a programului (evident, trebuie luate masuri
ca celelalte rutine sa nu afecteze, in cursul efectuarii diverselor operatii, aceste zone de memorie).

Aceste operatii de salvare a starii procesorului, durata lor in speta, vor determina viteza de raspuns a
sistemului, pentru tratarea intreruperilor la evenimentele aparute.


3.6.3 Operatii de I/E efectuate prin acces direct la memorie

Accesul direct la memorie (DMA) este utilizat, dupa cum s-a mentionat deja, in cazul transferurilor
foarte rapide de date, care se efectueaza de la/la periferice cu viteze de lucru superioare celei a
microprocesorului. Se permite astfel transferul de informatii fara a se opera sub controlul programului
procesorului. In cazul transferurilor DMA, transferul de date intre periferice si memoria sistemului
este coordonat de catre un controler specializat pentru aceste transferuri, programat in prealabil de
catre microprocesor (in vederea cunoasterii adreselor unde/de unde sa se faca transferul de date de
la/la periferice).

BAZELE MICROPROCESOARELOR
3 - 90
Operatiile DMA se intrepatrund cu operatiile normale ale sistemului. Exista trei metode uzuale pentru
transferuri DMA. Una dintre ele opreste microprocesorul, pe cand celelalte doua interfereaza cu
operatiile sale curente.

Metoda de oprire a activitatii procesorului (HALT) implica, la aparitia unei cereri de acces
DMA, terminarea efectuarii instructiunii curente a procesorului, urmata de trecerea tuturor
pinilor acestuia (pe magistralele de date, adrese si control) in starea de mare impedanta si
permite efectuarea transferurilor DMA pe aceste magistrale. Dezavantajul metodei consta in
faptul ca vor fi necesare cateva cicluri-masina din momentul aparitiei cererii de transfer, pana la
posibilitatea satisfacerii acesteia. Uneori, aceasta intarziere poate fi prea mare. Avantajos este faptul
ca, odata obtinut, controlul magistralelor poate fi mentinut pentru transferuri oricat de lungi. Figura
3.61 prezinta aceasta tehnica de transfer DMA.

O alta metoda consta in oprirea microprocesorului in cadrul instructiunii curente, la
terminarea ciclului de instructiune curent. Se obtin timpi de raspuns mult mai buni, deci
performante sporite. Se pot transfera deasemenea seturi mari de date, la o astfel de intrerupere a
executiei programului.
Microprocesor
Circuit
tampon
Circuit
tampon
Magistrala
de adrese
Magistrala
de date
< Memoria
si I / E
<
>
<
R / W
transfer posibil
cerere D M A
halt

Fig.3.61. Transfer DMA cu oprirea microprocesorului la terminarea executarii instructiunii curente

Figura 3.62 prezinta schema tipica a sistemului in acest caz. Metoda lungeste practic durata
executarii unor instructiuni (in timpul carora procesorul este oprit si se efectueaza transferul de
informatii prin DMA).

A treia metoda este complet "transparenta" pentru procesor. Acesta nu este oprit, si nici incetinit la
executarea programului. Este metoda cea mai rapida, dar si cea mai critica in acelasi timp. Necesita
o deosebita atentie la proiectare si memorii cu timpi de acces foarte mici. Operatiile
microprocesorului si ale DMA sunt multiplexate, luand in considerare faptul ca transferurile
unitatii centrale apar doar pentru anumite faze ale ceasului sistemului.

MICROPROCESOARE - CONCEPTE GENERALE

3 - 91
Utilizarea unei anumite tehnici DMA se va face printr-un compromis intre complexitatea structurii
hardware, viteza de executie necesara si rata de transfer DMA ce trebuie obtinuta.

Microprocesor
Circuit
tampon
Circuit
tampon
Magistrala
de adrese
Magistrala
de date
<
Memoria
si I / E
<
<
R / W
cerere D M A
Control
ceas
ceas
acces memorie
valid
CT
<
transfer posibil
ceas D M A

Fig.3.62.Transfer DMA cu oprirea microprocesorului la terminarea subciclului curent de instructiune


3.7 SISTEM MICROPROCESOR --- EXEMPLU

Pe baza conceptelor referitoare la hardware-ul si software-ul sistemelor microprocesor, prezentate
in paragrafele anterioare, se va implementa in continuare un sistem microprocesor, intr-un exemplu
complet, atat ca structura hardware, cat si ca program, pentru o aplicatie data.
In ideea de a nu complica prezentarea cu detalii care ar dauna coerentei paragrafului, scopul urmarit
fiind de a se concretiza modul de implementare al acestor sisteme, se va considera un microprocesor
ipotetic, nu dintre tipurile existente, ci cu unele simplificari, la prezentarea structurii hardware a
sistemului. Mentionam insa ca partea de software este implementata in limbajul de asamblare al unui
microprocesor de 16 biti (compatibil 8086).
Aplicatia aleasa, fiind doar un exemplu simplu, nu va acoperi nici pe departe posibilitatile reale ale
unui microprocesor, atat din punct de vedere al hardware-ului, cat si din cel al software-ului. Dar
nu acesta este scopul acestei prezentari.

Deci, care este problema: sistemul microprocesor sa realizeze liniarizarea iesirii unui
element neliniar (un traductor, de exemplu), generand, pe baza achizitionarii marimii
analogice de la iesirea traductorului, un semnal analogic corespunzator, liniarizat. Altfel
spus, sistemul va trebui sa genereze un semnal analogic (iesirea), avand o valoare depinzand de
un semnal analogic de intrare, dependenta, neliniara, fiind cunoscuta si memorata in memoria
sistemului, sub forma unui tabel de valori.

BAZELE MICROPROCESOARELOR
3 - 92
Din considerente de simplitate, s-au utilizat, atat pentru conversia analog-numerica, cat si pentru
cea numeric-analogica, convertoare de 8 biti. Deoarece exista 256 de valori posibile ale marimii de
intrare, s-au considerat existente si memorate intr-un tabel de 256 de elemente valorile
corespunzatoare pe care poate sa le ia marimea de iesire.

Pentru a sugera posibilitatea ca aceasta functie a sistemului procesor sa reprezinte doar una din
sarcinile sistemului, s-a utilizat lucrul in intreruperi, iar portiunea de program implementand functia
dorita a fost considerata o subrutina de intreruperi. In acest context, doar la momente de timp
corespunzand disponibilitatii datelor de intrare (de la CA/N, la sfarsitul conversiei analog-numerice),
procesorul va fi anuntat de catre acesta, prin intrerupere, va executa citirea, prelucrarea datei si va
da catre CN/A valoarea corespunzatoare intrarii. Terminarea intreruperii va permite revenirea la
executarea altor sarcini ale sistemului.


3.7.1 Structura hardware a sistemului

Schema de principiu care va implementa aplicatia dorita este prezentata in fig.3.63. Trebuie sa
mentionam ca, pe baza aceleiasi scheme, modificarea programului va permite implementarea unor
functii noi (sistemul poate functiona, de exemplu, si ca regulator etc.).

S-a presupus, dupa cum se observa, ca s-a utilizat un microprocesor de 8 biti, cu o magistrala de
adrese de 16 biti. Se considera disponibile direct la iesirea microprocesorului semnalele: IO/M
(indicand operatie cu un port, daca este 1 logic, sau cu memoria, daca este 0 logic); WR (operatie
de scriere, pentru 0 logic); RD (operatie de citire pentru 0 logic); INTA (acceptarea unei cereri de
intrerupere, pentru 0 logic). La intrari, se considera semnalele: RESET (care pentru 0 va aduce
procesorul in starea de start initial; se considera in acest caz, ca PC va fi initializat cu valoarea 0);
READY (indicand procesorului ca transferul de date de la/la memorie sau port s-a efectuat); INT
(semnal care, la valoarea 1 logic, va indica cerere de intrerupere catre procesor). Tot din
considerente de simplitate, s-a presupus existenta unui singur nivel de intrerupere, la adresa, fie,
0004H, fixa, valoare pe care contorul de program (PC), o va primi in mod automat, la acceptarea
unei cereri de intrerupere.

Ca o mentiune cu caracter general, legata de simbolistica utilizata in prezentarea schemelor,
reamintim ca semnalele barate sunt active pentru valoarea 0 logic, cele nebarate sunt active
pentru 1 logic. Totodata, simbolul de inversare este utilizat in scheme, in conformitate cu functia
logica implementata de catre circuit, din punct de vedere al logicii semnalelor de intrare si al celor de
iesire din circuit. Astfel, la inversarea semnalului IO/M, pentru a genera semnalul M/IO folosit la
selectarea memoriilor, se remarca utilizarea simbolului de inversare la intrarea si nu, cum era uzual, la
iesirea inversorului. Astfel se accentueaza faptul ca un semnal 0 pe intrare va fi 1 pe iesire, aceasta
fiind situatia necesara la selectie de memorie. Aceeasi remarca si la sinteza selectiei de cip pentru
circuitele PROM: semnalul CSP0, de exemplu, va aparea la coincidenta in valoare logica 0 a
semnalelor RD si BANC0 (un SI-NU de semnale active pe 0), deci dat de functia logica:

MICROPROCESOARE - CONCEPTE GENERALE

3 - 93
CSP0 = RD BANC0 ⋅ = RD + BANC0

implementata fizic cu un circuit de tip SAU. Utilizarea simbolului pentru circuitul SAU nu ar fi fost
suficient de clara pentru a intelege direct functionarea logica a schemei.

Pentru memoria program s-au utilizat doua circuite PROM de cate 256x8 biti capacitate, suficient,
dupa cum se va vedea, pentru aplicatia data. Memoria RAM, de 256 cuvinte, s-a obtinut prin
utilizarea a 2 cipuri de 256x4 biti fiecare, functionand in paralel, unul pe primii 4 biti de date (D0÷
D3), celalalt pe ultimii 4 (D4÷D7). Profitand de utilizarea memoriilor de 256 octeti, s-a implementat
logica de selectie a memoriei din bitii superiori de adresa (Ad8 ÷ Ad15), obtinandu-se semnalele
BANC0, BANC1, BANC2, corespunzator zonelor de adrese 0÷0FFH, 100H÷1FFH, respectiv
200H÷2FFH. Astfel, memoria program se va gasi incepand de la adresa 0 (de la aceasta adresa se
lanseaza procesorul, la RESET), pana la adresa 1FFH, iar memoria RAM, intre adresele 200H si
2FFH.

Se remarca selectia memoriei PROM doar la operatii de citire (corelat cu semnalul RD). Bitii
inferiori de adresa Ad0÷Ad7 sunt utilizati direct la nivelul cipurilor, pentru selectia celulelor de
memorie de pe cipul selectat.

BAZELE MICROPROCESOARELOR
3 - 94
Decodifi-
care
pentru
selectia
memoriei
BANC 0
BANC 1
BANC 2
CS
256 x 4 biti
RAM
CS
256 x 4 biti
RAM
CS
256 x 8 biti
PROM
CS
256 x 8 biti
PROM
RD
MICRO-
PROCESOR
IO/M
RD
WR
cuart
RESET
INT INTA
CLK
READY
RD

PORT0


PORT1

WR
P0I

P0O
Q
R
D
T
"1"
intrare
analogica
iesire
analogica
CN/A
Latch
Tampon
P1O
WR
START
CONV
EOC
CA/N
SF.CONV
PORT1
Magistrala
de date
Magistrala
de adrese
8
16
8
Bistabil
8
8
MEMREADY
8
Ad0
Ad7
¸ Ad0
Ad7
¸
Ad0
Ad7
¸
Ad0
Ad7
¸
8
8
CSP1
CSP0
(CSRAM)
4
D0 ¸ D3
D4 ¸ D7 D0 ¸ D7
D0 ¸ D7
4
8 8
Ad0 Ad7 ¸
IOREADY
Decodificare
pentru
selectia
convertoa-
relor
(adresate
ca porturi)
8
8

Fig. 3.63. Schema de principiu a sistemului microprocesor exemplificat
MICROPROCESOARE - CONCEPTE GENERALE

3 - 95

In ceea ce priveste adresarea convertoarelor, s-a considerat ca sunt elemente de tip porturi, adresate
prin instructiuni de I/E. Se considera ca microprocesorul poate adresa un numar de 256 porturi de
intrare, si 256 porturi de iesire, deci la o operatie de I/O, denotata de aparitia semnalului IO/M de
valoare 1, primii 8 biti de pe magistrala de adrese contin adresa portului cu care se va opera. Corelat
cu semnalele de RD sau WR, se poate cunoaste si sensul transferului de informatie (input sau
output). (Nu este necesara nici o legatura functionala intre un port de intrare si unul de iesire, care au
aceeasi adresa, diferenta constand in selectarea unuia printr-o operatie de INPUT --- semnal RD,
respectiva celuilalt printr-o operatie de OUTPUT --- semnal WR).

Convertorul A/N considerat are un pin de comanda START.CONV, pe care, aplicand un semnal 0
logic, se determina startul unei conversii analog-numerice a marimii de la intrarea convertorului.
Durata conversiei este de odinul 100 microsecunde --- nu consideram un convertor prea rapid. Tot
din considerente de simplitate, se presupune ca semnalul de intrare variaza lent comparativ cu durata
conversiei (pe timpul careia se considera constant), altfel fiind necesara utilizarea unui circuit de
esantionare si retinere (SAMPLE AND HOLD). La sfarsitul conversiei, convertorul va genera
semnalul EOC (End of Conversion - sfarsit de conversie).

In configuratia aleasa, semnalul va determina setarea unui bistabil, generand un semnal de intrerupere
catre procesor. Printr-o operatie de citire de la portul P0 (fie la adresa 00H), microprocesorul va
avea acces, prin deschiderea circuitului tampon, la valoarea convertita de la iesirea CA/N. Se
considera ca startul conversiei se va da printr-o operatie de OUTPUT, la portul P0.

In ceea ce priveste conversia numeric-analogica, se va selecta la o operatie de OUTPUT, la adresa
1H (portul P1), un circuit latch, care va memora informatia corespunzatoare de pe magistrala de
date. Iesirile acestui circuit vor fi aplicate la intrarile CN/A. Conversia N/A dureaza de ordinul sutelor
de nanosecunde.


Se remarca in schema sintetizarea semnalului de READY, din doua semnale furnizate de catre logica
de selectie a memoriei, respectiv a porturilor. Se considera ca timpul de selectie al memoriei este
inferior celui critic pentru a opera fara perioade de WAIT. Pentru operatiile cu porturile
(START.CONV, citire valoare marime convertita A/N, output o noua valoare la CN/A), se
considera deasemenea ca nu se pune problema timpilor de WAIT.

Semnalul INTA, generat de microprocesor, in cazul acceptarii unei intreruperi, va determina
resetarea bistabilului care a generat intreruperea si anularea cererii de intrerupere, pana la
semnalizarea unui nou sfarsit de conversie.





BAZELE MICROPROCESOARELOR
3 - 96
3.7.2 Structura software a sistemului

Structura programului care va implementa aplicatia dorita este deosebit de simpla. Programul
principal va trebui doar sa genereze semnalul de start pentru prima conversie, sa initializeze si sa
activeze intreruperile. Apoi, microprocesorul va intra in starea de HALT, din care poate fi scos doar
la intrerupere (sau la RESET, dar nu acest caz intereseaza). La aparitia unei intreruperi, anuntand
sfarsitul conversiei A/N, se va trece la tratarea intreruperii. Subrutina scrisa in acest scop va salva
starea microprocesorului (continutul registrelor). (Subrutina este scrisa pentru cazul general cand
procesorul ar fi intrerupt din executia unui program, in care, revenind la sfarsitul intreruperii, trebuie
sa poata continua executia normala). Apoi se va citi valoarea convertita. Considerand ca elementele
tabloului cu valori ale functiei de iesire sunt aranjate la adrese succesive in memoria PROM, incat
elementul corespunzator valorii n citite la intrare (n ia valori intre 0 si 255 --- marime pe 8 biti), va fi
al n-lea in tabloul memorat, adresa acestuia va fi data de suma intre adresa primului element al
tabloului si valoarea n citita. Odata obtinuta aceasta adresa, se va extrage din tabel valoarea
corespunzatoare si se va transmite convertorului N/A prin operatia de OUTPUT respectiva. Se va
da apoi un nou start de conversie la CA/N pentru o noua achizitie. Dupa refacerea starii
microprocesorului dinainte de intrerupere (refacerea continutului registrelor) si reactivarea
intreruperilor (acestea se dezactiveaza automat la acceptarea intreruperii), se revine in programul
intrerupt (se reface din stiva, prin executia unei instructiuni de RETURN, valoarea PC salvata la
acceptarea intreruperii --- in acest caz, adresa primei instructiuni dupa cea de HALT). Schema
logica a subrutinei de intrerupere este prezentata in figura 3.64.

Exemplul fiind fictiv, dupa cum s-a mentionat deja, utilizam doar pentru convenienta, instructiuni
specifice microprocesorului 8086 (ca mnemonica si semnificatie de principiu), fara a implementa in
acest caz, un program riguros corect dedicat acestui microprocesor.

In continuare vom face cateva precizari inainte de a prezenta programul scris in limbajul de
asamblare al unui asemenea microprocesor - de tipul INTEL 8086 (sau, echivalent, microprocesorul
8088, care are magistrala de date exterioara cipului, de 8 biti, iar interior opereaza pe 16 biti).
Pentru intelegerea instructiunilor utilizate (comentate de altfel), reamintim ca microprocesorul 8086
(8088) are un registru acumulator AX, de 16 biti (care contine un operand, si rezultatul, la operatii
aritmetice sau logice; la operatii de INPUT contine data citita de la portul adresat; la operatii de
OUTPUT continutul sau este scris la portul adresat pentru iesire).

Exista deasemenea si registre utilizabile ca registre de uz general, cum ar fi BX, CX, de cate 16 biti,
etc. (Pentru detalii asupra microprocesorului 8086, v. cap. 4). Toate aceste registre pot fi adresate
global, ca registre de 16 biti, dar si individual, ca registre de 8 biti (AL si AH, ce compun registrul
AX; BL si BH, ce compun registrul BX; CL si CH, ce compun registrul CX, etc.). Instructiuni
specifice pot fi utilizate pentru a adresa si manipula continutul acestor registre, in operatii pe 8 biti.
Deoarece exemplul dat este fictiv, respectam in cele ce urmeaza mnemonicile si sensul primar al
instructiunilor similare ale microprocesorului 8086. Detaliile si elementele specifice acestui
microprocesor se vor prezenta doar in capitolul urmator (segmentarea memoriei, moduri de
adresare, tratarea intreruperilor, etc).
MICROPROCESOARE - CONCEPTE GENERALE

3 - 97

Mai remarcam faptul ca trebuie avuta in vedere
valoarea adreselor diferitelor parti din program (zona
de cod, continand programul propriu-zis, si tabelul cu
valorile functiei, situate uzual in memoria PROM,
precum si zona de date, necesara in acest caz doar
pentru crearea stivei programului, situata in memoria
RAM).

La RESET, presupunem ca microprocesorul isi
initializeaza PC cu 0. Deasemenea, se presupune, in
mod simplificat, si fara a preciza mecanismele
complete ale procesului de intrerupere, saltul la
adresa 0004H, la aparitia unei cereri de intrerupere.
Deoarece programul principal incepe la adresa 0H, la
aceste doua adrese se vor gasi instructiuni de salt
neconditionat, la programul principal propriu-zis si,
respectiv, la subrutina de tratare a intreruperii.

In afara instructiunilor in limbaj de asamblare, carora
le corespunde cod masina pentru microprocesor, se
utilizeaza si asa-numitele directive pentru asamblor.
Acestea nu determina generare de cod. Ele dau
indicatii asamblorului, despre adresa la care sa se
amplaseze o zona de program, valoarea unor
simboluri literale in program etc. Deasemenea,
asamblorul permite utilizarea adreselor simbolice
(asemanatoare etichetelor instructiunilor in limbajele
de nivel inalt), ceea ce usureaza efortul
programatorului, eliminand si erorile posibile; de
exemplu, o secventa de salt la o adresa se scrie:

...
...
...

instructiuni

JMP ADR1
instructiuni
...
...
...
ADR1: instructiune
...

START
Salvare registre
in stiva
Citire valoare
C A / N
Calculul adresei
elementului
corespunzator din
tabelul de valori
Citire din tabel a
valorii functiei
Output la
C N / A
Output,start o
noua conversie
Refacere registre
din stiva
Activare intreruperi
STOP

Fig.3.60. Schema logica a subrutinei de tratare a
intreruperii la sfarsitul conversiei analog-
numerice
BAZELE MICROPROCESOARELOR
3 - 98

Asamblorul va calcula, stiind lungimea (in cuvinte de instructiune, octeti), a fiecarei instructiuni,
valoarea reala a adresei ADR1, si va genera codul corect de salt la aceasta adresa.

Textele scrise dupa semnul ";" sunt comentarii, neluate in seama de catre
asamblor. Ele ajuta la intelegerea cat mai rapida a programului.


Listingul programului pentru implementarea aplicatiei propuse:

;===============================================================
; Program test pentru citirea unui semnal analogic (utilizand un convertor
; A/D), gasirea unei valori corespunzatoare unei dependente functionale,
; prin cautare intr-un tabel de valori memorate, si transmiterea valorii
; din tabel, la o iesire D/A a sistemului.
;===============================================================
; Definirea adreselor porturilor sistemului:
; ----------------------------------------------------------
PORT0 EQU 0H ; adresa convertorului A/D. Operatiile de
; output la PORT0 determina startul conversiei
; A/D; input de la portul PORT0 permite citirea
; valorii convertite de catre convertor
PORT1 EQU 1H ; adresa convertorului D/A. Prin output la PORT1,
; se transmite data ce trebuie convertita;
;------------------------------------------------------------------------------
; Zona de cod a programului ;
;----------------------------------------
; la adresa 0, salt la programul principal
;
ORG 0 ; directiva pentru asamblor; se genereaza cod de la adresa 0
;
JMP PRINC ; instructiune de salt la programul principal
;
; la adresa 4, salt la subrutina de tratare a intreruperii
;
ORG 4
;
JMP INTRER
; ---------------------------------------------------------------------
; programul principal, fie de la adresa 10H
;
ORG 10H
;
PRINC: MOV CS, 280H ; initializare CS; in CS se incarca adresa
; varfului stivei initiale a programului, fie 280H
OUT (PORT0), AL ; start conversie A/D
; (nu conteaza continutul acumulatorului)
EI ; activare intreruperi
BUCLA:
HLT ; procesorul in HALT, pe perioada cat nu se
; trateaza intrerupere de la CA/D
Observatie
MICROPROCESOARE - CONCEPTE GENERALE

3 - 99
JP BUCLA ; la revenire din intreruperi, salt din nou la
; instructiunea de HALT
; --------------------------------------------------------------------
; Urmeaza subrutina de tratare a intreruperilor;
; aici sare programul (prin executarea instructiunii de salt,
; de la adresa 0004H, la aparitia intreruperii, la sfarsitul conversiei).
; Inainte de saltul la rutina de intrerupere, se salveaza in stiva continutul PC.
; La executia instructiunii de RET, programul se reia de unde fusese intrerupt,
; prin refacerea PC din stiva.
;
INTRER:
; La intrarea in rutina de tratare a intreruperilor, se salveaza in mod explicit,
; prin program, in stiva, toate registrele microprocesorului, al caror continut este
; modificat de catre rutina respectiva. La iesirea din subrutina, se reface, in
; ordine inversa celei de salvare, continutul initial al acestor registre.
; Pentru exemplul dat, sunt salvate registrele AX si SI.
;
PUSH AX ; salvare registru AX in stiva
PUSH SI ; salvare registru SI in stiva
;
IN AL, PORT0 ; citire in A valoare convertita de CD/A
MOV SI, [TABEL] ; SI contine adresa primului element al
; tabloului cu valorile functiei
MOV AH, 0 ; AX = AH & AL, contine valoarea conversiei
; A/D, identica cu indexul elementului de tablou,
; corespunzator transformarii functionale
ADD AX, SI ; se aduna la SI, valoarea din AX, si se obtine
; in AX rezultatul, adresa elementului cautat
; in tabelul TABEL
MOV SI, AX ; SI contine adresa elementului cautat in tabel
MOV AL, [SI] ; in AL se aduce, prin citire din memorie,
; de la adresa denotata de SI, valoarea functiei
;
OUT PORT1, AL ; valoarea functiei este transmisa convertorului D/A
OUT PORT0, AL ; start o noua conversie A/D
; cind se va termina conversia, convertorul A/D va genera o noua intrerupere
; refacerea continutului registrelor SI si AX
POP SI
POP AX
EI ; activare intreruperi (dezactivate automat la
; intrarea in rutina de intreruperi)
RET ; revenire la programul intrerupt (se reface PC
; din stiva, salvat la acceptarea intreruperii)
;--------------------------------------------------------------------------------------------------------
; in continuare, urmeaza tabelul cu valori ale functiei (fie, pe cate un octet)
; se utilizeaza directiva DB --- define byte
; lista contine, despartite de virgule, elementele tabloului (vor fi in PROM),
; valori memorate in ordinea scrierii:
;
TABEL:
DB 0, 1, 5, 17, 22, 9
DB 8, 7, 11, 33, 19,...
... (in total 256 numere, cu valori intre 0 si 255)
...
BAZELE MICROPROCESOARELOR
3 - 100
...
END ; directiva indicand asamblorului sfarsitul textului sursa


3.7.3 Concluzii

Prezentul paragraf nu a urmarit si nici nu poate sa acopere problemele ridicate de implementarea
reala a hardware-ului si software-ului unui sistem microprocesor in totalitatea sa. Cu toate acestea,
au fost prezentate elementele fundamentale si problemele ce apar in acest sens.

Cateva dintre problemele care nu au fost, cu buna stiinta, abordate, sunt urmatoarele:

• nu s-au facut consideratii asupra timpilor de acces si selectie pentru diferitele circuite
utilizate (presupuse deci ca opereaza cu viteze satisfacatoare relativ la viteza microprocesorului);

• nu s-au facut consideratii privitoare la capacitatea de incarcare (fan-out) a
magistralelor si semnalelor de iesire ale microprocesorului (de regula insuficiente si necesitand circuite
repetoare cu fan-out mai mare);

• nu s-au detaliat circuitele de selectie ale memoriei si porturilor (circuite combinationale cu
grad relativ redus de complexitate);

• s-au facut ipoteze simplificatoare privind semnalele de control, tratarea intreruperii (salt la
adresa fixa) --- apare doar la unele tipuri de microprocesoare;

• nu s-a evaluat durata executiei subrutinei de intrerupere; compararea acesteia cu durata
conversiei A/N permite, in cazul unei durate mai mici a executiei subrutinei, sa se execute
instructiunea OUT PORT0, de start a conversiei, imediat dupa citirea valorii convertite. (Astfel se
castiga timp, executandu-se instructiuni de prelucrare a valorii citite --- cautare in tabel, OUTPUT
valoarea functiei --- in timp ce se converteste deja o noua valoare). Mai trebuie mentionat din nou
ca, dispunand eventual si de un circuit de ceas programabil, care sa permita achizitia de date la
intervale fixe de timp, structura hardware a sistemului prezentat ar putea implementa, cu un alt
program, de exemplu un regulator de orice tip (in functie de algoritmul utilizat, de parametrii
implementati), bineinteles pentru un proces cu constante de timp corelate cu durata maxima a
executiei calculelor care ar impune temporizarea ceasului.





4. MICROPROCESORUL INTEL 8086


La patru ani de la prezentarea primului microprocesor pe 8 biti — 8080 (magistrala de adrese
de 16 biti, magistrala de date de 8 biti), ca urmare a succesului de piata repurtat cu acesta si a
dezvoltarii tehnologiei H-MOS, firma INTEL realizeaza microprocesorul 8086 (magistrala
multiplexata — 20 linii de adresa, 16 linii de date) cu care se implanteaza solid si in domeniul
microprocesoarelor de 16 biti.

Patru concepte arhitecturale noi la momentul respectiv au stat la baza proiectarii si realizarii
familiei lui 8086. Primul este acela al segmentarii memoriei, prin care se permite
programarea modulara, deschizindu-se astfel calea implementarii tehnicilor de protectie si
partajare a memoriei. Al doilea este acela al posibilitatii implementarii cu usurinta a unor
moduri de adresare caracteristice limbajelor de programare de nivel inalt (bazata,
indexata, pentru structuri de date). Un alt concept atins il constituie cresterea puterii de calcul
pe baza unui set de registri optimizat pentru a realiza functii generale si specializate de
procesare a datelor, precum si introducerea unitatilor aritmetice de calcul de tipul
coprocesoarelor aritmetice, echipamente care se conecteaza pe magistralele microprocesorului
in paralel cu acesta, crescind mult viteza de lucru a sistemului in unele aplicatii. In fine,
microprocesorul 8086 dispune de un set de instructiuni codificat anume pentru utilizarea la
viteza crescuta si cu eficienta maxima a memoriei.

8086 extinde performantele unui microprocesor la niveluri neatinse de predecesorul sau pe 8
biti: operatii aritmetice pe 16 biti cu numere cu si fara semn (inclusiv inmultiri si impartiri);
operatii complexe de manipulare a sirurilor de caractere precum si la nivel de bit; posibilitatea
realizarii de programe relocatabile in mod dinamic; adresarea directa a unui megabyte de
memorie; posibilitatea configurarii unor structuri foarte variate din punct de vedere al
complexitatii sistemului; simplitatea implementarii unor sisteme complexe multi-
microprocesor.

Realizarea acestor performante cu un circuit in capsula cu doar 40 de pini (ca si 8080) se
indeplineste pe doua cai si vom semnala inca din acest moment al prezentarii cele doua
caracteristici hardware esentiale ce definesc functionarea microprocesorului I 8086. Prima
caracteristica o constituie multiplexarea in timp a magistralei de adrese si date (descrisa in
detaliu in sectiunea 4.4.2.). In al doilea rind, microprocesorul are o configuratie interna
comutabila pentru adaptarea la nivelul de complexitate a sistemului in care este utilizat.
Astfel, in sistemele simple, 8086 isi genereaza si controleaza singur semnalele de pe
magistrala de control; in sistemele complexe, magistrala de control este generata de un circuit
specializat din familia lui 8086, circuit denumit "controler de magistrala" (8288 Bus
Controller), opt dintre conexiunile fizice ale microprocesorului fiind comutate pentru a
BAZELE MICROPROCESOARELOR
4-2
indeplini functiunile de coordonare necesare. Un singur pin al lui 8086, pinul 33 ( MN MX / ),
conectat la masa sau la alimentare, comanda comutarea configuratiei interne a
microprocesorului pentru adaptarea la sistemul extern.


4.1 ARHITECTURA PROCESORULUI

Asa cum s-a prezentat in capitolul precedent, executia unui program intr-un sistem cu
microprocesor are ca efect (intr-o abordare simplificata) repetarea ciclica a pasilor de mai jos:

1. Extragerea urmatoarei instructiuni din memorie.
2. Citirea unui operand (daca instructiunea o cere).
3. Executia instructiunii.
4. Scrierea rezultatului (daca instructiunea o cere).

micropro-
cesoare
din a doua
generatie
CPU:
BUS:
EU:
BIU:
BUS:
micropro-
cesoare
8086/8088
Execute
T
Execute Execute Execute
Execute Execute
Write
Write
Fetch
Fetch Fetch Fetch Fetch
Fetch Read
Read
Busy
Busy Busy Busy Busy Busy
Busy Busy Busy
Busy
Prima instructiune (deja extrasa):
"Executa" si "Scrie" rezultatul
A doua instructiune:
doar "Executa"
A treia instructiune:
"Citeste" operandul si "Executa"
A patra instructiune:
(nedefinita)
A cincea instructiune:
(nedefinita)
LEGENDA

Fig. 4.1. Suprapunerea in timp a etapelor de extragere si executie a instructiunilor procesorului 8086

Datorita arhitecturii specifice, executia acestor pasi are loc in doua unitati separate de
procesare a datelor din cadrul CPU: EU (execution unit) — unitatea de executie — si BIU
(bus interface unit) — unitatea de interfata cu magistrala. In EU are loc executia
instructiunilor in timp ce BIU extrage instructiunile, citeste operanzii si scrie rezultatele in
memorie. Cele doua unitati pot opera independent una de cealalta si pot asigura — in
majoritatea cazurilor — suprapunerea in timp a etapei de extragere a unei instructiuni cu etapa
de executie a unei instructiuni precedent extrase din memorie. In acest mod, practic "dispare"
MICROPROCESORUL INTEL 8086
4-3
timpul necesar extragerii instructiunilor din memorie, crescand viteza de lucru a
microprocesorului deoarece EU executa instructiuni al caror cod a fost deja adus de catre BIU
din memorie in microprocesor. Figura 4.1 ilustreaza aceasta suprapunere in timp a fazelor de
extragere si executie a instructiunilor printr-un exemplu in care timpul necesar executiei a trei
instructiuni este mai mic la 8086 in comparatie cu microprocesoarele din generatia
precedenta, doua instructiuni in plus fiind deja extrase si asteptind sa fie executate.


4.1.1 EU — Unitatea de executie

Unitatea de executie contine registrii de uz general, unitatea aritmetico-logica, registrul
indicatorilor de conditie, un bloc logic de control si o magistrala interna de date de 16 biti
(figura 4.2).

Functiile EU acopera executia tuturor instructiunilor, furnizarea datelor si a adreselor catre
BIU, controlul registrelor de uz general si al indicatorilor de conditie. Cu exceptia citorva pini
de control, unitatea de executie este complet izolata de "lumea exterioara". Asa cum se
evidentiaza in figura 4.2, EU preia instructiunea urmatoare de executat dintr-o coada de
asteptare alimentata continuu de unitatea de interfata cu magistrala.

AH AL
BH BL
CH CL
DH DL
SP
BP
DI
SI
registre temporare
é é
UAL
indicatori de conditie
(16biti)
CS
DS
SS
ES
IP
registre de
comunicatii
interne
Magistrala de adrese
(20 biti)
Magistrala
de date
(16 biti)
8086
Unitatea de executie
Unitatea de interfata cu magistrala
(EU)
(BIU)
1 2 3 4 5 6
magistrala
de control
logic
BUS
coada de instructiuni
sistem
control
EU
magistrala date UAL
16
Registre de
uz general
1

Fig. 4.2. 8086 — schema bloc
BAZELE MICROPROCESOARELOR
4-4

In situatia in care nu exista nici o instructiune de preluat pentru a fi executata, unitatea de
executie asteapta pina cand coada este realimentata de catre BIU. Daca in cursul executiei
instructiunii este necesar accesul la o locatie de memorie sau la un echipament periferic, EU
solicita unitatii de interfata cu magistrala sa transfere data, executand ciclul de magistrala
corespunzator (citire/scriere la memorie sau port). Totodata, desi magistrala EU are doar 16
biti, se poate accesa in exterior intregul spatiu de un megaoctet de memorie prin intermediul
BIU care asigura relocatarea adresei inaintea fiecarui transfer.

4.1.2 BIU — Unitatea de interfata cu magistrala

Unitatea de interfata cu magistrala executa toate operatiile externe de magistrala ce sunt
necesare pe parcursul extragerii si executiei unei instructiuni. Ea se compune din registrii de
segment, un registru de tip contor de program denumit pointer de instructiuni (instruction
pointer), registri de comunicatie interna, o schema logica pentru generarea adresei pe cele 20
de linii de adresa ale microprocesorului 8086 si pentru controlul magistralei multiplexate
precum si o coada de instructiuni (queue). Aceasta este realizata cu o memorie RAM de 6
octeti si contine instructiuni care sunt extrase in avans de BIU si urmeaza sa fie preluate de
EU pentru decodificare si executie.

Cele doua unitati de procesare ale CPU opereaza independent una de alta — in sensul ca, ori
de cite ori doi sau mai multi octeti din coada sunt liberi, iar EU nu solicita BIU la efectuarea
vreunui ciclu de magistrala, unitatea de interfata cu magistrala executa in avans cicluri de
extragere de instructiuni pentru a realimenta locatiile libere din coada de instructiuni. Acest
mod de lucru permite BIU sa furnizeze EU instructiuni extrase anterior fara a monopoliza
magistrala sistemului caci, in mod normal, in majoritatea situatiilor coada de instructiuni
contine cel putin un octet ce poate fi preluat de EU pentru decodificare si executie. In plus,
cum sistemele cu microprocesor 8086 au uzual magistrala de date de 16 biti, intr-un singur
ciclu de extragere se alimenteaza coada cu doi octeti, cu exceptia cazurilor cand adresa de la
care se citeste instructiunea urmatoare este impara, asa cum se va arata ulterior.

Instructiunile extrase in avans de BIU sunt cele care urmeaza in mod logic intr-o procesare
seriala a programului, ele aflindu-se in memorie in locatii adiacente si la adrese superioare
adresei instructiunii care se executa la un moment dat. In cazul in care EU executa o
instructiune care transfera controlul programului catre o alta locatie de memorie, BIU
reseteaza coada, extrage instructiunea de la noua adresa, transferand-o imediat unitatii de
executie, apoi incepe realimentarea cozii de la noua locatie. De asemenea, BIU suspenda
operatiile de extragere de instructiuni (cu exceptia celei in curs de desfasurare) ori de cite ori
unitatea de executie solicita efectuarea pe magistrala a unui transfer cu memoria sau cu un
port de intrare/iesire.


4.1.3 Registrele de uz general

MICROPROCESORUL INTEL 8086
4-5
Microprocesorul 8086 are 8 registre generale de 16 biti grupate in doua seturi a cite 4 registre
fiecare: registrele de date (uneori denumite grupul registrelor H&L de la high si low) si
registrele pointer si index (denumite si grupul P&I).
15 8 7 0
15 0
H L
AX
BX
CX
DX
AH
BH
CH
DH
AL
BL
CL
DL
SP
BP
SI
DI
ACCUMULATOR
BASE
COUNT
DATA
STACK
BASE
SOURCE
DESTINATION
POINTER
POINTER
INDEX
INDEX
DATA
GROUP
INDEX
POINTER
AND
GROUP


Un registru apartinind grupului H&L se caracterizeaza prin faptul ca poate fi adresat ca
registru de 16 biti, dar se compune din doua entitati de 8 biti, partea high si partea low, care
pot fi adresate la rindul lor separat, ca registre de 8 biti. Registrele pointer si index nu pot fi
adresate decat ca registre de 16 biti.

Atat registrele de date cat si registrele pointer si index pot fi folosite in majoritatea operatiilor
aritmetice si logice, oricare dintre ele putand juca rolul registrului "acumulator" existent la
generatiile precedente de microprocesoare. Pentru a permite utilizarea unui set compact, dar
puternic de instructiuni, anumite registre sunt folosite in mod implicit de unele instructiuni,
asa cum arata tabelul 4.1.

Tabelul 4.1. Utilizarea implicita a registrelor de uz general
REGISTRU OPERATII
AX Inmultiri, impartiri si I/E pe cuvint
AL Inmultiri, impartiri si I/E pe octet, translatari, aritmetica
zecimala
AH Inmultiri si impartiri pe octet
BX Translatari
CX Operatii cu siruri de caractere, contor pentru operatii repetate
CL Deplasari si rotiri cu mai mult de o pozitie
DX Inmultiri si impartiri pe cuvint, I/E cu adresare indirecta
SP Operatii cu stiva
BAZELE MICROPROCESOARELOR
4-6
sI, DI Operatii cu siruri de caractere


4.1.4 Registrele de segment

Spatiul fizic de memorie de 1 Mb direct adresabil de microprocesorul 8086 este divizat in
segmente logice de pana la 64 kb fiecare (vezi sectiunea 4.2.1.). CPU are acces direct in orice
moment la patru segmente logice ale caror adrese de baza (adresele de inceput ale
segmentelor) se afla in registrii de segment ai microprocesorului.
Registrul segmentului de cod (CS) contine
adresa de inceput a segmentului din care sunt
extrase instructiunile — segmentul de cod.
Stiva programului se afla in asa numitul
segment de stiva catre care "pointeaza"
registrul segmentului de stiva (SS). Mai exista
de asemenea doua segmente de date, unul
propriu-zis (DS) si unul suplimentar (ES)
fiecaruia fiindu-i asociat cate un registru de
segment ce contine adresa de inceput
respectiva. Si registrele de segment sunt accesibile programatorului, continutul lor putind fi
modificat de anumite instructiuni.


4.1.5 Registrul pointerului de instructiuni

Registrul pointerului de instructiuni (Instruction Pointer) este similar registrului contor de
program (Program Counter) al microprocesoarelor pe 8 biti. Actualizat de catre BIU, el
contine ofsetul (distanta in octeti) urmatoarei instructiuni, masurat de la inceputul
segmentului curent de cod. Astfel spus, IP reprezinta in mod normal un pointer catre
urmatoarea instructiune ce urmeaza a fi extrasa de catre BIU, iar atunci cand este salvat in
stiva se modifica automat pentru a indica ofsetul urmatoarei instructiuni ce urmeaza a fi
executata de EU. Operarea cu continutul IP odata salvat in stiva constituie calea prin care
acesta poate fi modificat indirect in decursul executiei unui program.


4.1.6 Indicatorii de conditie

Microprocesorul 8086 are 6 biti de stare si 3 biti de control grupati in registrul
indicatorilor de conditie (flags). Cei de stare sunt pozitionati de unitatea de executie pentru a
reflecta anumite proprietati ale rezultatului unei operatii aritmetice sau logice. Acestia pot fi
utilizati de un grup al setului de instructiuni pentru a modifica secventialitatea executiei
programului in functie de rezultatul operatiei anterioare. In general, indicatorii starii
programului reflecta urmatoarele conditii:

15 0
CODE
SEGMENT
DATA
SEGMENT
STACK
EXTRA
SEGMENT
SEGMENT
CS
DS
SS
ES
MICROPROCESORUL INTEL 8086
4-7
Auxiliary Carry Flag. Daca AF=1, a existat un transport dinspre bitul 7 spre bitul 8 sau
un imprumut dinspre bitul 8 catre bitul 7. Acest indicator este folosit indeosebi in cazul
instructiunilor ce implica operatii aritmetice cu numere zecimale codificate binar.

Carry Flag. Daca CF=1, a existat un transport dinspre sau un imprumut catre cel mai
semnificativ bit (MSB) al rezultatului reprezentat pe 8 sau 16 biti. Acest indicator este
utilizat de instructiunile ce implica operatii de adunare sau scadere cu numere
reprezentate pe unul sau mai multi octeti. Biti ai operanzilor din memorie sau registri
pot fi izolati in CF prin intermediul instructiunilor de rotire si deplasare.

Overflow Flag. Daca OF=1, a aparut o depasire aritmetica, adica s-a pierdut cel mai
semnificativ bit al rezultatului datorita faptului ca dimensiunea acestuia a depasit
capacitatea de reprezentare a locatiei destinatie. Este de remarcat faptul ca exista o
instructiune (INTerrupt On Overflow) care genereaza o cerere de intrerupere pentru
semnalarea aparitiei acestei situatii.

Sign Flag. SF=1 indica faptul ca cel mai semnificativ bit al rezultatului are valoarea 1.
Cum numerele intregi cu semn sunt reprezentate in complement fata de 2, rezulta ca SF
arata semnul rezultatului (0=pozitiv, 1=negativ).

Parity Flag. PF=1 atunci cand rezultatul are un numar par de biti pozitionati pe 1. Poate
fi utilizat pentru verificarea erorilor de transmisie a datelor.

Zero Flag. Valoarea zero a rezultatului este evidentiata prin ZF=1.

TRANSPORT
PARITATE
TRANSPORT AUXILIAR
ZERO
SEMN
DEPASIRE
ACTIVARE INTRERUPERE
DIRECTIE
PAS CU PAS
TF DF IF OF SF ZF AF PF CF
INDICATORI DE
CONTROL
INDICATORI DE
STARE

Fig. 4.3. Indicatorii de conditii

Cei 3 indicatori de control pot fi modificati prin program pentru a determina anumite operatii
ale procesorului. Astfel:


AF

CF

OF

SF
PF
ZF
BAZELE MICROPROCESOARELOR
4-8
Direction Flag. Acest indicator este utilizat de instructiunile ce opereaza cu siruri de
caractere (string) si semnalizeaza autodecrementarea (DF=1) respectiv
autoincrementarea (DF=0) registrilor SI si DI care contin ofsetul adreselor sursa si
destinatie ce intervin in transfer.

Interrupt — enable Flag. Setarea IF prin instructiunea SeT Interrupt — enable flag
permite CPU sa recunoasca cererile de intrerupere externa mascabile, in timp ce
resetarea aceluiasi indicator cu instructiunea CLear Interrupt — enable flag le va
dezactiva. Modificarea valorii lui IF nu are efect asupra intreruperilor generate intern in
CPU sau a celor externe nemascabile.

Trap Flag. Daca TF=1, procesorul intra in modul de operare pas cu pas in care CPU
genereaza automat o intrerupere interna dupa fiecare instructiune pentru a permite
examinarea starii programului si deci depanarea acestuia.


4.2 ORGANIZAREA MEMORIEI

Microprocesorul 8086 poate adresa direct un spatiu de 2
20
= 1Mo = 1.048.576 octeti
organizat liniar cu adresele joase la inceput si adresele inalte la sfirsit. Instructiunile si datele
pe octet sau cuvant pot fi plasate liber la orice adresa, fie ea para sau impara, pentru a permite
o stocare densa a codului programului in memorie — acesta fiind unul din conceptele impuse
la proiectarea procesorului, asa cum s-a aratat in paragraful introductiv (v. si fig. 4.4). Totusi,
trebuie remarcat faptul ca memorarea unei variabile de tip word la o adresa impara — situatie
in care se spune ca variabila este nealiniata (unaligned) — anuleaza din punct de vedere al
transferului variabilei respective avantajul microprocesorului 8086 de a avea o magistrala de
date de 16 biti (vezi sectiunea 4.4.5.). In ceea ce priveste instructiunile, alinierea sau
nealinierea lor nu afecteaza performantele microprocesorului datorita cozii de asteptare din
BIU.

00000H
7 0 7
0
7 0 7 0
00001H 00002H
FFFFEH FFFFFH
1 MEGABYTE
Adrese
joase
Adrese
inalte
ß
à
19H
Instruc-
tiune
Instructiune
Byte
varia-
bil
Byte
varia-
bil
Byte
varia-
bil
Variabila word
aliniata
Variabila word
nealiniata
1AH 1BH 1CH 1DH 1EH 1FH 20H 21H 22H 23H
(b)
(a)

Fig. 4.4. Organizarea memoriei — Memorarea variabilelor si instructiunilor


DF

IF

TF
MICROPROCESORUL INTEL 8086
4-9
Conform conventiilor INTEL, o variabila de tip word este intotdeauna memorata cu octetul cel
mai semnificativ in locatia de memorie cu adresa superioara.

Aceasta regula se extinde si la memorarea variabilelor de tip pointer (variabile pe un cuvint
dublu folosite pentru a adresa date in afara segmentului de date sau de program ce este
adresabil in mod curent la momentul respectiv): cuvantul ce contine ofsetul se memoreaza la
cele doua adrese inferioare, cuvantul ce contine adresa de baza a segmentului se memoreaza la
cele doua adrese superioare la care este stocat pointerul, iar in cadrul fiecarui cuvant, octetul
cel mai semnificativ este la randul lui memorat la adresa superioara (vezi figura 4.5).

0 4 8 C
246H 247H
HEXA
BINAR 0000 0100 1000 1100
Valoarea variabilei word
memorata la 246H este 8C04H
6 5 0 0 4 C 3 B
0110 0101 0000 0000 0100 1100 0011 1011
HEXA
BINAR
4H 5H 6H 7H
VALOAREA POINTERULUI STOCAT LA 4H:
ADRESA BAZA SEGMENT:3B4CH OFFSET:65H

Fig. 4.5. Memorarea variabilelor de tip word si pointer


4.2.1 Segmentarea memoriei

8086 localizeaza spatiul de memorie fizica de 1 Mo prin intermediul unui grup de segmente
logice definite de fiecare aplicatie in parte. Segmentele sunt unitati logice de memorie
continua cu marimea de maxim 64 ko fiecare, independente unele de altele si adresabile in
mod separat. Fiecarui segment i se asigneaza software o adresa de baza ce reprezinta adresa
de inceput a segmentului respectiv, mai concret — adresa celei mai de jos locatii de memorie
a segmentului.

Singura restrictie ce se aplica segmentelor logice este ca aceasta adresa de baza sa fie un
multiplu de 16. In rest, segmentele pot fi adiacente, disjuncte, suprapuse partial sau total (vezi
figura 4.6), astfel incat o locatie fizica de memorie poate fie sa nu apartina nici unui segment,
fie sa apartina unui singur segment, fie mai multor segmente.

Amintindu-ne ca in BIU exista 4 registre de segment ce contin fiecare cate o adresa de baza de
segment, rezulta ca la un moment dat exista 4 segmente adresabile in mod curent (figura
4.7). In cursul executiei unui program, accesul la instructiuni sau date apartinand altor
segmente decit cele adresabile in mod curent se face prin simpla modificare a continutului
registrelor de segment corespunzatoare.

BAZELE MICROPROCESOARELOR
4-10
SEGMENT A SEGMENT B
SEGMENT C
SEGMENT D
SEGMENT E
0H 10000H
20000H 30000H
memorie
fizica
segmente
locale
disjuncte
complet suprapuse
partial suprapuse
continue


Fig. 4.6. Alocarea segmentelor in memoria fizica

A
B
C
D
E
F
G
H
I J
K
B
J
E
H
FFFFFH
0H
DATA DS:
COD CS:
STIVA SS:
EXTRA ES:


Fig. 4.7. Segmentele adresabile in mod curent

Fiecare aplicatie trebuie sa-si defineasca de la inceput adresele de baza ale segmentelor pentru
a se asigura localizarea informatiilor in memorie. Daca 64 ko de cod, 64 ko de stiva si 128 ko
de date sunt suficienti pentru aplicatia respectiva, registrele de segment raman nemodificate
pana la terminarea executiei acesteia. Pentru aplicatiile mai complexe, se recomanda fie
modularea programelor, fie utilizarea corecta a registrelor de segment.


4.2.2 Generarea adresei fizice

Se poate imagina ca fiecare locatie de memorie are doua feluri de adresa: fizica si logica.
Adresa fizica este acea valoare pe 20 de biti care identifica in mod unic fiecare octet din
spatiul de memorie de 1Mo. Ea este cuprinsa intre 0H si FFFFFH si exista pe liniile
magistralei multiplexate la inceputul fiecarui ciclu de scriere sau citire in/din memorie.
MICROPROCESORUL INTEL 8086
4-11
Programatorul opereaza insa mai mult cu adresa logica decat cea fizica, ceea ce permite
scrierea unui program fara a cunoaste dinainte locul unde codul acestuia va fi incarcat in
memorie si faciliteaza controlul dinamic al resurselor de memorie. O adresa logica consta
dintr-o valoare de baza a segmentului si o valoare de ofset, ambele fiind marimi fara semn
reprezentate pe 16 biti. Pentru orice locatie de memorie, valoarea de baza a segmentului indica
primul octet continut in segment (inceputul segmentului) iar valoarea de ofset reprezinta
distanta in octeti de la acest inceput pana la locatia respectiva. Primul octet (cel mai de jos)
apartinand unui segment are deci ofsetul egal cu zero. Avand in vedere conceptul de segment
logic, rezulta ca o locatie fizica de memorie poate avea o multime de adrese logice. Acest fapt
este ilustrat in figura 4.8 in care locatia de memorie fizica 2C3H este continuta in doua
segmente logice suprapuse partial, unul incepand la 2B0H iar altul la 2C0H.
2C4H
2C3H
2C2H
2C1H
2C0H
2BFH
2BEH
2BDH
2BCH
2BBH
2BAH
2B9H
2B8H
2B7H
2B6H
2B5H
2B4H
2B3H
2B2H
2B1H
2B0H
BAZA
SEGMENT
OFFSET
(3H)
OFFSET
(13H)
BAZA
SEGMENT
ADRESE
LOGICE
ADRESE
FIZICE


Fig. 4.8. Adresa fizica si adrese logice

Ori de cite ori unitatea de interfata cu magistrala acceseaza memoria — pentru a extrage o
instructiune sau pentru a obtine sau stoca o variabila — ea genereaza adresa fizica pe baza
adresei logice. Aceasta se realizeaza prin deplasarea la stanga cu patru pozitii binare a valorii
de baza din registrul de segment si adunarea valorii de ofset.

BAZELE MICROPROCESOARELOR
4-12
+
=
Deplasare stinga 4 biti
SEGMENT
OFFSET
CATRE MEMORIE
ADRESA
LOGICA
ADRESA FIZICA
19 0
15 0
19
0
15 0
15 0
1 2 3 4
0 0 2 2
1 2 3 4 0
0 0 2 2
1 2 3 6 2


BIU obtine adresa logica a locatiei de memorie din diferite surse, in functie de scopul
accesului la memorie (vezi tabelul 4.2).

Instructiunile sunt extrase din segmentul de cod iar ofsetul este dat de registrul IP, operatiile
cu stiva sunt executate in segmentul de stiva curent iar ofsetul este dat de registrul SP, s.a.m.d.
Ofsetul unei variabile din memorie este calculat de unitatea de executie in functie de modul de
adresare specificat in instructiune; rezultatul se numeste adresa efectiva (effective address —
EA).

In majoritatea cazurilor, utilizarea segmentelor implicite pentru accesul datelor in memorie
este convenabila pentru programator. Este posibil insa si accesul unei variabile in oricare
dintre segmentele adresabile in mod curent (cu exceptia instructiunilor ce manipuleaza siruri
de caractere unde operandul destinatie este obligatoriu sa se gaseasca in segmentul de date
suplimentar). Pentru a obtine acest lucru, instructiunea trebuie precedata de un prefix —
segment override prefix — care indica BIU ce registru de segment sa utilizeze pentru a accesa
variabila respectiva.

Modul de obtinere a adresei fizice si structura segmentata a memoriei creaza posibilitatea
realizarii de programe ce nu depind de locul unde sunt incarcate in memorie, adica programe
Tabelul 4.2. Sursele de adresa logica

SCOPUL ACCESULUI LA
MEMORIE
SEGMENT
IMPLICIT
SEGMENT
ALTERNATIV

OFSET
Extragere instructiune CS - IP
Operatie cu stiva SS - SP
Variabila (cu exceptia urmatoarelor) DS CS, ES, SS Adresa
Efectiva
Sursa sir caractere DS CS, ES, SS sI
Destinatie sir caractere ES - DI
BP utilizat ca registru de baza SS CS, DS, ES Adresa
Efectiva
MICROPROCESORUL INTEL 8086
4-13
relocatabile in mod dinamic, ceea ce permite utilizarea deplina a memoriei disponibile si
realizarea de sisteme multitasking. Astfel, programele inactive pot fi indepartate din memorie
(transferate pe disc) si spatiul ocupat de ele alocat altor programe. Activarea unui program se
face prin incarcarea lui in orice zona libera din memorie si lansarea in executie. In mod
similar, daca un program are nevoie de un spatiu de memorare continuu de capacitate mare,
iar zona disponibila este fragmentata, segmentele altui program pot fi compactate pentru a
elibera spatiul, situatie ilustrata in figura 4.9.

Pentru a fi relocatabil dinamic, un program trebuie sa nu-si incarce sau modifice registrele de
segment sau sa transfere controlul intr-o locatie aflata in afara segmentului curent de cod.
Toate ofseturile vor fi relative la valorile fixe continute in registrele de segment. Programul
poate fi mutat oriunde in memorie, prin simpla actualizare a adreselor de baza de segment.


4.2.3 Stiva

Stiva microprocesorului 8086 este implementata in memorie prin intermediul registrului de
segment SS si al registrului indicator de stiva SP (stack pointer).

segment
code
segment
stiva
segment
data
extra
segment
segment
code
segment
stiva
segment
data
extra
segment
CS
SS
DS
ES
CS
SS
DS
ES
spatiu
liber
inainte de
relocatare
dupa
relocatare

Fig. 4.9. Relocatarea dinamica a programelor

Un sistem poate avea un numar nelimitat de stive a cite cel mult 64 ko fiecare, dar una singura
este direct adresabila la un moment dat: aceasta este stiva curenta, sau pur si simplu "stiva".
SP contine ofsetul varfului stivei (TOS — top of stack) fata de adresa de baza indicata de
registrul SS. Cum elementele stivei sunt cuvinte de 16 biti, instructiunile care opereaza cu
stiva cauzeaza decrementarea (pentru PUSH) respectiv incrementarea (pentru POP) cu 2 a
BAZELE MICROPROCESOARELOR
4-14
registrului indicator de stiva SP (vezi figura 4.10). Cu alte cuvinte, stiva creste in jos in
memorie, catre adresa de baza a segmentului de stiva. Este de remarcat faptul ca operatiile cu
stiva nu transfera elemente dintr-o zona in alta a acesteia, nici nu le sterg, ci doar provoaca
modificarea varfului stivei prin actualizarea registrului SP.

O constrangere ce se aplica tuturor segmentelor de memorie, nu numai stivei, este cauzata de
existenta unor locatii de memorie dedicate sau rezervate. Aceste locatii, prezentate in figura
4.11, sunt: 0H-7FH (128 octeti) si FFFF0H-FFFFFH (16 octeti). Ele sunt folosite pentru
intreruperi si pentru pornirea sistemului dupa reset, putand fi si rezervate de firma pentru
dezvoltari ulterioare, iar utilizarea lor de catre programator trebuie sa se faca respectind scopul
pentru care au fost definite ca "locatii speciale".



00 11
22 33
44 55
66 77
88 99
AA BB
01 23
45 67
89 AB
CD EF
10 50
00 06
OPERATIILE CU STIVA PT. SECVENTA DE COD
PUSH AX
POP AX
POP BX
SS
SP
SS
SP
SS
SP
1062
1060
105E
105C
105A
1058
1056
1054
1052
1050
TOS
00 11
22 33
44 55
66 77
88 99
AA BB
34 12
45 67
89 AB
CD EF
10 50
00 06
PUSH AX
12 34
1062
1060
105E
105C
105A
1058
1056
1054
1052
1050
TOS
00 11
22 33
44 55
66 77
88 99
AA BB
34 12
45 67
89 AB
CD EF
10 50
00 06
POP AX
PUSH BX
12 34
AA BB
AX
BX
1062
1060
105E
105C
105A
1058
1056
1054
1052
1050
TOS
a
b
s
e
n
t
e
d
i
n
s
t
i
v
a
baza
stivei
stiva
existenta
AX

Fig. 4.10. Operatii cu stiva

MICROPROCESORUL INTEL 8086
4-15
rezervat
dedicat
disponibil
rezervat
dedicat
disponibil
rezervat
disponibil
memorie
I/O
FFFFFH
FFFFCH
FFFFBH
FFFF0H
FFFEFH
80H
7FH
14H
13H
0H
FFFFH
100H
FFH
F8H
0H
F7H

Fig. 4.11. Spatiul de memorie si I/E cu precizarea "locatiilor speciale"





4.3 ORGANIZAREA SPATIULUI DE INTRARE/IESIRE

Microprocesorul 8086 dispune de un spatiu larg de intrare/iesire separat de memorie, precum
si de instructiuni care transfera date intre CPU si echipamente localizate in acest spatiu.
Acestea pot de asemenea sa fie dispuse in zona de memorie, pentru a beneficia de o putere
sporita a setului de instructiuni si a modurilor de adresare, si in ceea ce priveste operatiile de
intrare/iesire.


4.3.1 Spatiul de intrare/iesire propriu-zis

Spatiul propriu-zis este de 64 ko porturi de 8 biti sau 32 ko porturi de 16 biti. Instructiunile
INput si OUTput transfera date intre acumulator (AL pentru transfer pe octet si AX pentru
transfer pe cuvint) si porturile localizate in spatiul de intrare/iesire.

Spre deosebire de memorie, spatiul de I/E nu este segmentat: pentru a accesa un port, unitatea
de interfata cu magistrala plaseaza adresa portului (cuprinsa, deci, intre 0H si FFFFH) pe cele
mai putin semnificative 16 linii ale magistralei de adrese. In functie de forma instructiunii de
I/E, adresa respectiva poate fi specificata ca o valoare fixa in instructiune, sau ca o variabila
luata din registrul DX.


4.3.2 Porturile de I/E plasate in spatiul de memorie

BAZELE MICROPROCESOARELOR
4-16
Si in sistemele cu microprocesor 8086 se poate plasa zona de I/E peste spatiul de memorie
(memory-mapped I/O) — daca, bineinteles, acesta nu este complet ocupat cu circuite de
memorie. Aceasta permite efectuarea operatiilor de I/E prin instructiuni de lucru cu memoria,
microprocesorul accesand locatii in spatiul de 1 Mo de memorie, locatii care in realitate sunt
porturi de I/E. Avantajul este ca se dispune de o clasa puternica de instructiuni si de moduri de
adresare caracteristice memoriei, ceea ce asigura o mare flexibilitate programarii operatiilor
de I/E. Pretul care trebuie platit pentru aceasta este, pe de o parte faptul ca se
indisponibilizeaza o parte a spatiului de memorie (desi 1 Mo inseamna o dimensine mare a
memoriei), iar pe de alta parte, instructiunile cu memoria se executa intr-un timp mai mare si
sunt mai putin compacte decat simplele IN si OUT.


4.4 SPECIFICATII HARDWARE

4.4.1 Definirea pinilor

Microprocesorul 8086 are o magistrala de date si adrese multiplexata in timp (la inceputul
ciclului masina informatia prezenta pe magistrala multiplexata reprezinta o adresa, ulterior ea
schimbandu-se si reprezentand data implicata in transferul efectuat la adresa respectiva) ceea
ce permite unui numar de pini sa indeplineasca functii duale si in consecinta
microprocesorului sa poata fi incorporat intr-o singura capsula cu 40 de pini.

Fig. 4.12. Microprocesorul 8086
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
40
38
39
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
UCP
8086
GND
AD14
AD13
AD12
AD11
AD10
AD9
AD8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND
Vcc
AD15
A16/S3
A17/S4
A18/S5
A19/S6
BHE/ST
MN/MX
RD
HOLD (RQ/GTO)
HLDA
WR
M/IO
DT/R
DEN
ALE
INTA
TEST
READY
RESET
(RQ/GT1)
(LOCK)
(S2)
(S1)
(S0)
(QS0)
(QS1)

MICROPROCESORUL INTEL 8086
4-17
Deasemenea, asa cum se va arata ulterior, un numar de pini de control ai CPU sunt definiti
diferit in functie de cum este conectat un singur pin de intrare, pinul 33 ( MN MX / ), la masa
sau la Vcc. In figura 4.12 este prezentata asignarea pinilor, denumirile in paranteza
corespunzand conectarii pinului 33 la masa, iar in tabelul 4.3, functiile si tipul semnalelor.


Tabelul 4.3. Functiile si tipul semnalelor microprocesorului 8086
SEMNALE COMUNE
Nume Functie Tip
AD15-AD0 Address/Data Bus — Magistrala de adrese/date Bidirect., 3-
state
A19/S6-
A16/S3
Address/Status — Adrese/Stare Iesire, 3-state
BHE/S7 Bus High Enable/Status — Activare octet superior pe
mag./Stare
Iesire, 3-state
MN/MX Minimum/Maximum Mode Control — Control mod
min./max.
Intrare
RD Read Control — Control citire Iesire, 3-state
TEST Wait On Test Control — Test asteptare Intrare
READY Wait State Control — Sincronizare transfer pe mag. de
date
Intrare
RESET System Reset — Initializare sistem Intrare
NMI Non-Maskable Interrupt Request — Cerere intrerupere
nemascabila
Intrare
INTR Interrupt Request — Cerere intrerupere mascabila Intrare
CLK System Clock — Ceas de sistem Intrare
Vcc + 5 V Intrare
GND Ground — Masa
SEMNALE PENTRU MODUL MINIM ( MN/MX = Vcc )
Nume Functie Tip
HOLD Hold Request — Cerere magistrala Intrare
HLDA Hold Acknowledge — Acceptare cerere magistrala Iesire
WR Write — Control scriere Iesire, 3-state
M/IO Memory/IO Control — Control selectie memorie/port de
I/E
Iesire, 3-state
DT/R Data Transmit/Receive — Control sens transfer date pe
magistrala
Iesire, 3-state
DEN Data Enable — Activare date pe magistrala Iesire, 3-state
ALE Address Latch Enable — Activare adrese pe magistrala Iesire
INTA Interrupt Acknowledge — Acceptare cerere de
intrerupere
Iesire
SEMNALE PENTRU MODUL MAXIM ( MN/MX = GND )
Nume Functie Tip
BAZELE MICROPROCESOARELOR
4-18
RQ/GT1,0 Request/Grant Bus Access Control — Cerere/Acceptare
acces mag.
Bidirectional
LOCK Bus Priority Lock Control — Control acces pe
magistrala
Iesire, 3-state
S2 — S0 Bus Cycle Status — Specificare stare ciclu de magistrala Iesire, 3-state
QS1,QS0 Instruction Queue Status — Specificare stare coada de
instructiuni
Iesire


4.4.2 Functionarea magistralei multiplexate

Pentru a intelege modul de operare pe magistrala multiplexata in timp, trebuie analizat ciclul
de magistrala al BIU. Sa observam ca, in esenta, un ciclu de magistrala este un eveniment
asincron care incepe prin aparitia adresei unui port de I/E sau a unei locatii de memorie,
urmata fie de un semnal de control de citire (pentru a captura sau "a citi" data de la
echipamentul accesat), fie de un semnal de control de scriere impreuna cu data asociata
(pentru a transmite sau "a scrie" data in echipamentul adresat). La rindul lui, echipamentul
selectat — memorie sau port — accepta data de pe magistrala pe durata ciclului de scriere sau
plaseaza data ceruta pe magistrala in timpul ciclului de citire. La terminarea ciclului,
echipamentul respectiv memoreaza data care a fost scrisa (uzual prin intermediul unor circuite
de tip latch pe intrare), sau indeparteaza de pe magistrala data citita de microprocesor
(trecandu-si circuitele tampon de iesire pe magistrala in stare de inalta impedanta.

Asa cum se arata in figura 4.13, toate ciclurile de magistrala constau din cel putin patru
perioade de ceas sau T-states identificate ca T1, T2, T3 si T4. CPU plaseaza pe magistrala
adresa locatiei de memorie sau portului cu care doreste sa efectueze un transfer pe durata starii
T1. In cazul unui ciclu de scriere, data este plasata pe magistrala de CPU din starea T2 pana in
starea T4. In cazul unui ciclu de citire, CPU accepta data prezenta pe magistrala pe perioada
starilor T3 si T4, iar magistrala multiplexata de adrese/date este in stare flotanta in T2 pentru a
permite CPU sa faca trecerea din modul de scriere (iesirea adreselor) in modul de citire
(intrarea datelor).

T1 T2 T3 T4 T1 T2 T3 T4
adresa buffer data adresa buffer data
ciclu de magistrala ciclu de magistrala


Fig. 4.13. Ciclu tipic de magistrala

Sa ne amintim insa faptul ca un ciclu de magistrala (deci un acces in afara microprocesorului)
are loc doar atunci cand este cerut de EU pentru executia unei instructiuni sau cand BIU
trebuie sa realimenteze coada de instructiuni. Prin urmare, intre ciclurile de magistrala ce
corespund acestor situatii vor exista perioade de ceas in care magistrala este neutilizata de
microprocesor. Aceste perioade de ceas de inactivitate a microprocesorului pe magistrala se
numesc idle states — T
I
. Desi ele pot apare ca urmare a diferitor situatii (chiar si acceptarea
MICROPROCESORUL INTEL 8086
4-19
cererii de magistrala a unui coprocesor cauzeaza aceasta comportare), cel mai frecvent caz
este acela al executiei unor instructiuni "lungi". Astfel, in figura 4.14 este prezentata executia
unei instructiuni de inmultire a doua registre de 8 biti — MULtiply — care dureaza intre 70 si
77 cicli de ceas. Intre ciclurile normale de magistrala de extragere de instructiuni de catre
BIU, apar perioade de inactivitate pe magistrala , T
I
, in timpul carora in microprocesor se
desfasoara intern executia instructiunii.

ciclu de
magistrala
ciclu de
magistrala
ciclu de
magistrala
T1 T2 T3 T4 T1 T2 T3 T4 T1 TI TI TI TI
T1 T2 T3 T4
1 2 3 4 5 6 7 8 9 10 11
perioade de
inactivitate


Fig. 4.14. Idle states pe magistrala

In plus fata de starile de inactivitate pe magistrala deja descrise, CPU dispune de un mecanism
care insereaza stari aditionale intr-un ciclu de magistrala pentru a sincroniza transferul cu
acele circuite de memorie sau port care sunt mai lente si nu pot lucra la viteza
microprocesorului. Aceste stari T suplimentare sunt numite stari de asteptare — T
W
— wait
si sunt inserate, daca este cazul, intre starile T3 si T4. Pe durata unei stari T
W
informatia
ramane neschimbata pe magistrala, iar in momentul in care circuitul selectat poate efectua
transferul, el semnaleaza CPU sa iasa din starea de asteptare si sa intre in starea T4.

In diagramele de timp ce urmeaza sunt prezentate ciclurile de magistrala de citire si scriere in
cazul in care microprocesorul 8086 este configurat in modul minim ( MN MX / conectat la
addr.,
BHE out
status out
A19/S6--
A16/S3
SI BHE/S7
CLK
addr.
out
data in
AD15--
AD0
ALE
M/IO low=I/O read,high=memory read
RD
DT/R
DEN
un ciclu de magistrala
T1 T2 T3 T4
BAZELE MICROPROCESOARELOR
4-20
+5V, microprocesorul controland direct toate semnalele de pe magistrala de control a
sistemului).

Referindu-ne la figurile 4.15 si 4.16, sa observam ca 8086 plaseaza o adresa de 20 de biti pe
magistrala multiplexata pe durata starii T1. Pe durata T2, aceasta adresa este indepartata de pe
magistrala pentru a permite trecerea celor mai putin semnificative 16 linii fie in stare de inalta
impedanta pentru efectuarea unei operatii de citire, fie in stare de iesire a datei furnizate in
cazul unei operatii de scriere. In acelasi timp, cele 4 linii "de sus" ale magistralei isi schimba
semnificatia din linii de adresa (AD19-AD16) in linii de stare
1
(S6-S3) a ciclului de
magistrala. Aceste linii se mentin si pe periada T3 in care pe cele 16 linii "de jos" fie este
prezenta in continuare data scrisa, fie este esantionata (strobata) data citita. Daca nu se
solicita de catre echipamentul selectat inserarea unei stari T
W
, dupa T3 urmeaza T4 in care
ciclul de magistrala se termina, liniile de control sunt dezactivate si magistrala trece in stare
de inalta impedanta.


1
— S3 si S4 codifica in care din cele 4 segmente de memorie este localizata data ce intervine in transfer;
— S5 reflecta starea indicatorului de conditie IF;
— S6 = 0 indica faptul ca 8086 este pe magistrala;
addr.,
BHE out
status out
A19/S6--
A16/S3
SI BHE/S7
CLK
addr.
out
data out
AD15--
AD0
ALE
M/IO low=I/O write,high=memory write
WR
DT/R
DEN
un ciclu de magistrala
T1 T2 T3 T4
Fig. 4.15. Operatia de citire — ciclu de magistrala
Fig. 4.16 Operatia de scriere — ciclu de magistrala
MICROPROCESORUL INTEL 8086
4-21

Cum majoritatea circuitelor de memorie sau port dintr-un sistem microprocesor au nevoie de o
adresa stabila pe durata ciclului de magistrala, este necesar ca magistrala de adrese/date a lui
8086 sa fie demultiplexata, generandu-se magistrale separate de adrese si de date. Pentru
aceasta, microprocesorul furnizeaza semnale specifice de control, in afara celor de citire —
RD, de scriere — WR si de selectie a memoriei sau a porturilor de I/E — IO M/ .

Astfel, pe durata starii T1 a fiecarui ciclu de magistrala, deci atunci cand pe magistrala
multiplexata se afla informatia de adresa, microprocesorul (sau in modul maxim, un controler
de magistrala — 8288) isi activeaza semnalul ALE al carui front cazator care va fi folosit in
sistem pentru a determina memorarea acestei adrese in niste circuite de tip latch (de exemplu
circuitele latch pe 8 biti neinversoare 8282, respectiv inversoare 8283). Aceste circuite,
beneficiind si de un fan-out
1
sporit, vor distribui in sistem ceea ce reprezinta o magistrala de
adrese stabila pe durata intregului ciclu si care se numeste simplu, magistrala de adrese a
sistemului.

Magistrala de date nu poate fi demultiplexata datorita comportarii diferite in timp intr-o
operatie de scriere fata de una de citire, precum si datorita timpilor diferiti de raspuns al
echipamentelor sistemului la primirea unui semnal de citire. In consecinta, magistrala de date
multiplexata poate sa fie folosita direct asa cum este, adica multiplexata, sau poate sa fie
buferata (prevazuta cu circuite tampon bidirectionale conectate la liniile AD15-AD0).

Prima situatie este ilustrata in figura 4.17. Daca un echipament de memorie sau un port de
intrare/iesire este conectat direct la magistrala multiplexata, proiectantul trebuie sa se asigure
ca echipamentul respectiv nu intervine pe magistrala pe durata starii T1 pentru a distruge

1
capacitatea unei iesiri de a controla un anumit numar de intrari de circuit
8282
8282
8282
8086
ALE
BHE
ADRESA
BHE
A19-A16
A15-A8
A7-A0
AD15-AD0
Magistrala multiplexata
in timp (adrese/date)
Fig. 4.17. Magistrala de date utilizata direct, multiplexata in timp.

BAZELE MICROPROCESOARELOR
4-22
cumva adresa furnizata in acel interval (ceea ce ar insemna de fapt arderea unor circuite prin
punerea in scurtcircuit a doua iesiri care pot fi pe nivele de tensiune diferita).

Pentru a evita acest lucru, driver-ele de iesire ale echipamentului nu trebuie sa fie activate de
semnalul de selectie de circuit — Chip Select — ci de un semnal de activare a iesirii —
Output Enable — care sa fie activ dupa trecerea lui T1 si sa semnifice necesitatea citirii datei
pe magistrala, adica semnalul de control citire — Read. Multe circuite de memorie sau port
dispun de o intrare de tip OE , astfel incat se pot conecta direct pe magistrala de date
multiplexata ca in figura 4.18. (daca circuitul nu dispune de o astfel de intrare, atunci
semnalul de selectie de circuit — CS — va trebui generat doar in prezenta unui semnal activ
de citire sau scriere date pe magistrala).

Atat datorita simplitatii modului de interfatare a circuitelor pe magistrala cat si necesitatii unui
fan-out corespunzator, uzual se utilizeaza magistrala de date buferata prin intermediul unor
circuite tampon bidirectionale (exemplu, transceiver-ele pe 8 biti 8286 — neinversoare sau
8287 — inversoare). Specializate pentru acest mod de utilizare, circuitele tampon respective
sunt comandate de doua semnale de control ale CPU : DEN — semnifica intervalul de timp
cand se efectueaza un transfer de date pe magistrala, cu alte cuvinte este un semnal de activare
a magistralei de date, respectiv DT R / — semnal ce controleaza sensul transferului datei
(1=scriere, 0=citire). In acest mod se obtine si magistrala de date a sistemului (figura 4.19).


STB
DI
DI
DO
8282
DATA
WA
AD/OE
CS
magistrala
multiplexata
ALE
A19-A16,BHE
AD15-AD0
WA
RD
decodificare
magistrala
de
adrese
A19-A0,BHE
MICROPROCESORUL INTEL 8086
4-23




4.4.3 Circuitul de ceas

Pentru a controla sincronizarea semnalelor pe magistrala, CPU are nevoie de un semnal extern
de ceas. Circuitul de ceas INTEL 8284, apartinand familiei 8086, in afara de generarea
semnalelor de ceas, dispune si de posibilitatea interfatarii hardware cu un circuit de initializare
(reset) a microprocesorului precum si de un mecanism pentru inserarea de stari de asteptare —
T
W
— in cadrul ciclului de magistrala.

8284 necesita conectarea la intrare din exterior a unui cristal de cuart de frecventa tripla fata
de frecventa la care functioneaza 8086 caruia ii furnizeaza direct semnalul de ceas CLK. In
plus fata de
iesirea CLK,
Fig. 4.18. Conectarea circuitelor direct pe magistrala multiplexata
8282
8282
8282
8086
ALE
BHE
ADRESA
BHE
A19-A16
A15-A8
A7-A0
à
à
à
à à
MAGISTRALA DE DATE
BUFERATA
8286/
8287
A
EN
T
B
8286/
8287
A
EN
T
B
DATA
magistralele
sistemului
DEN
DT/R
D15-D8
D7-D0
Fig. 4.19. Magistrala de date buferata

BAZELE MICROPROCESOARELOR
4-24
sunt disponibile si un semnal Peripheral CLocK de frecventa jumatate (fata de CLK) si un
semnal TTL — OSCillator avind aceeasi frecventa ca si cristalul de cuart. Aceste semnale
suplimentare de ceas pot fi utilizate de echipamentele din sistem.

Functia de hardware reset a lui 8284 este implementata cu un circuit trigger Schmitt activat
de intrarea RES . Cand aceasta intrare este trasa in zero de un contact la masa, se activeaza
semnalul RESET, furnizat de 8284 microprocesorului sincronizat cu semnalul de ceas CLK.
Semnalul de RESET trebuie sa fie activ cel putin patru perioade de ceas pentru a provoca
initializarea procesorului si ca atare extragerea si executia primei instructiuni de program care
se incarca din memorie de la locatia FFFF0H. Uzual, un circuit extern RC conectat la intrarea
RES realizeaza functia de initializare la pornirea tensiunii de alimentare (power-on reset) daca
semnalul furnizat circuitului de ceas dureaza cel putin 50 de microsecunde. Iesirea de RESET
ce se aplica microprocesorului se utilizeaza si in restul sistemului, ca un semnal general de
initializare a sistemului.



Inserarea de stari de asteptare in ciclul de magistrala al CPU se realizeaza prin dezactivarea
uneia din cele doua intrari de ready ale 8284 (ReaDY1 sau ReaDY2) de catre echipamentul
care doreste incetinirea transferului pe magistrala. Fiecare dintre intrarile RDY1 si RDY2 poate
participa la generarea semnalului READY catre microprocesor, dupa cum intrarea
corespondenta AEN 1 sau AEN 2 (address enable) este activa.

Iesirea READY, care este sincronizata cu semnalul de ceas CLK, este conectata direct la
intrarea READY a lui 8086. Asa cum se arata in figura 4.21, cand echipamentul selectat este
RES
RDY1
AEN1
AEN2
RDY2
X1
X2
F/C
CLK
RESET
READY
8284
8086
CLK
RESET
READY
8 19
10 21
5 22
17
18
13
11
3
4
7
6
+5V
Fig. 4.20. Interfatarea circuitului de ceas 8284 la microprocesorul 8086

CLK
RDY
INPUT
READY
OUTPUT
ß à
UN CICLU DE MAGISTRALA
T1 T2 T3 TW
T4
Fig. 4.21. Generarea starii de asteptare (TW) pe magistrala

MICROPROCESORUL INTEL 8086
4-25
lent si se doreste inserarea de stari de asteptare pe magistrala, el trebuie sa dezactiveze intrarea
RDY a lui 8284 inainte de sfarsitul starii T2 astfel incat iesirea READY sa fie inactiva la
sfarsitul starii amintite. Starea de asteptare obtinuta este inserata intre T3 si T4. Pentru a se
iesi din T
W
, echipamentul selectat va activa intrarea RDY a lui 8284 care la randul lui va
activa intrarea READY in 8086 la sfarsitul starii wait, ceea ce va permite CPU sa intre in
starea T4 pentru a termina ciclul de magistrala. Evident ca, prin mentinerea in continuare a lui
RDY pe nivel low, se pot insera multiple stari T
W
inainte de T4.


4.4.4 Modul minim/maxim. Controlerul de magistrala 8288

Probabil ca una din facilitatile cele mai deosebite
oferite de 8086 este posibilitatea de a selecta
hardware configuratia de baza a masinii prin
simpla conectare la masa sau alimentare a pinului
33 ( MN MX / ), prin care se defineste modul de
lucru. Practic se realizeaza astfel o selectie intre
doua definitii functionale ale unui subset de iesiri
ale lui 8086. Asignarea pinilor in cele doua
moduri de functionare este prezentata in tabelul
4.4.


MO D U L MI N I M

Pentru a configura microprocesorul in modul minim, intrarea MN MX / trebuie conectata la
+5V. In acest mod de operare, CPU este optimizata sa functioneze in sisteme mici, mono-
procesor, 8086 generand singur toate semnalele de control pe magistrala (DT R / , DEN , ALE,
M IO / , RD, WR si INTA ) si, in plus, furnizand un mecanism pentru functia de acceptare cerere
de magistrala compatibil cu un echipament de tip DMA (exemplu: controlerul DMA INTEL
Tabelul 4.4.
PIN MINIM MAXIM
31 HOLD RQ/GT0
30 HLDA RQ/GT1
29 WR LOCK
28 M/IO S2
27 DT/R S1
27 DEN S0
25 ALE QS0
24 INTA QS1

BAZELE MICROPROCESOARELOR
4-26
STB
8282
sau
T
OE
8286
CLK
READY
RESET
RES
8284
GENE-
RATOR
CEAS
Vcc
MN/MX
M/IO
RD
WR
DT/R DEN
ALE
AD15-AD0
A19-A16
BHE
8086
UCP
Vcc
sau
8287
8283
Memorie
data
Periferice
I/O
data
BHE
mag. adrese
mag. date
A^
A/D^
Legenda:
A^=adresa
A/D^=adresa/data
(b)
STB
OE
8282
2 sau 3
T
OE
8286
(2)
CLK
READY
RESET
RES
RDY
8284
GENE-
RATOR
CEAS
Vcc
MN/MX
M/IO
INTA
RD
WR
DT/R
DEN
ALE
AD0-AD15
A16-A19
BHE
8086
UCP
Vcc
magistrala
de
comanda
magistrala
de adrese
(1MB)
magistrala
de date
16 biti
GND
GND
(a)


Fig. 4.22. Microprocesorul 8086 in modul minim.
(a) Configurarea magistralelor; (b) conectarea resurselor sistemului
MICROPROCESORUL INTEL 8086
4-27
8257). In figura 4.22. se prezinta modul de configurare a magistralelor in modul minim (a),
precum si un exemplu de sistem cu microprocesor 8086 functionand in modul minim (b).

Cand un echipament extern de tip DMA doreste sa efectueze un transfer direct intre un port de
I/E si memorie, el semnalizeaza aceasta prin activarea liniei HOLD catre microprocesor. Ca
raspuns la solicitarea de cedare a magistralei, 8086 isi activeaza iesirea HLDA, prin care
semnalizeaza acceptarea cererii si cedarea magistralei simultan cu trecera tuturor iesirilor pe
magistrala multiplexata si pe magistrala de control in stare de inalta impedanta. Cum o cerere
de magistrala este un eveniment asincron, CPU esantioneaza intrarea HOLD pe fiecare
tranzitie pozitiva a ceasului si, asa cum se arata in figura 4.23, isi activeaza iesirea HLDA fie
la sfirsitul ciclului curent de magistrala, in cazul in care era vreunul in curs de desfasurare, fie
la sfarsitul urmatoarei perioade T
I
. Microprocesorul se mentine in starea de hold pina cand
"solicitantul de magistrala" dezactiveaza linia HOLD, moment in care CPU redobandeste
controlul propriu asupra magistralelor de sistem. Oricum, si pe durata acestei stari
microprocesorul continua sa execute instructiuni pana in momentul in care este necesar un
ciclu de magistrala.


MO D U L MA X I M

Daca pinul MN MX / este conectat la masa, 8086 va opera in modul maxim in care se extinde
arhitectura sistemului, pentru a suporta configuratii multi-procesor pe magistralele de sistem,
precum si coprocesoare pe magistrala locala.

Microprocesorul codifica semnalele de control pe trei linii de stare, S2-S0,
si utilizeaza restul celor 5 linii ramase libere din cele care isi redefinesc
semnificatia pentru a-si coordona activitatea pe magistrala cu alte microprocesoare din sistem.

Cele trei linii de stare sunt utilizate de un alt circuit din familia lui 8086 — controlerul de
magistrala INTEL 8288 — pentru a furniza semnalele de control si comanda pe magistralele
sistemului.

In tabelul 4.5 este prezentata decodificarea liniilor S S S 2 1 0 , , si comanda generata de 8288 in
fiecare stare, iar in figura 4.24, modul de configurare a magistralelor in modul maxim (a) si un
exemplu de sistem cu microprocesor 8086 functionand in modul maxim (b).

CLK
T4
sau
T1
HOLD
HLDA

S2, S1, S0

Fig. 4.23. Semnalele HOLD si HOLDA
BAZELE MICROPROCESOARELOR
4-28




Tabelul 4.5.
S2 S1 S0 CICLU
MICROPROCESOR
IEsIRE 8288
0 0 0 Acceptare intrerupere INTA
0 0 1 Citire port I/E IORC
0 1 0 Scriere port I/E IOWC,
AIOWC
0 1 1 Halt -
1 0 0 Extragere instructiune MRDC
1 0 1 Citire memorie MRDC
1 1 0 Scriere memorie MWTC,
AMWC
1 1 1 Pasiv -
STB
OE
8282
2 sau 3
8286
à
à
à
CLK
READY
RESET
RES
RDY
8284
GENE-
RATOR
CEAS
á
à
Vcc
AD0-AD15
A16-A19
BHE
8086
UCP
mag
de
contr.
magistrala
de adrese
(1MB)
magistrala
de date
16 biti
GND
à
à
à
à
GND
OE
(2)
8286
T
LOCK
N.C.
MN/MX
ß
GND
S0
S1
S2
MRDC
MWTC
AMWC
IORC
IOWC
AIOWC
INTA
S0
S1
S2
DEN
DT/R
ALE
CLK
à
8288
à
à
à
Fig. 4.24. Microprocesorul 8086 in modul maxim
(a) Configurarea magistralelor;

MICROPROCESORUL INTEL 8086
4-29


Fig. 4.24. Microprocesorul 8086 in modul maxim


Liniile de cerere / acordare de magistrala (request/grant)
implementeaza functia de acces la magistrala locala in cazul
microprocesorului 8086 functionand in modul maxim in sisteme multi-procesor — inlocuind
mecanismul HOLD/HOLDA existent in modul minim. Functia de cerere/acordare de
magistrala necesita insa aici o singura linie, spre deosebire de cele doua din cazul precedent.

Asa cum se arata in figura 4.25, operatia se desfasoara intr-o secventa ce contine trei faze. Ea
este initiata de un alt procesor din sistem — "solicitantul de magistrala", de obicei
coprocesorul aritmetic 8087 — ce furnizeaza un puls pe una din liniile request/grant, cerand
astfel acces la magistrala (faza de cerere). Drept raspuns, CPU da la randul lui un puls (pe
aceeasi linie) la sfarsitul fie al ciclului curent de magistrala, daca asa ceva are loc in momentul
respectiv, fie al starii T
I
in desfasurare. Prin aceasta, indica solicitantului ca si-a trecut driver-
ele de magistrala in stare de inalta impedanta si ca se va deconecta logic de la controlerul de
magistrala pe urmatoarea perioada de ceas (faza de acordare), intrand intr-o stare hold. 8086
continua sa execute intern instructiuni, fara sa se opreasca decat daca trebuie sa execute un
ciclu de magistrala sau daca nu mai exista instructiuni in coada de asteptare. In a treia faza,
STB
8282
sau
à
à
à
CLK
READY
RESET
RES
8284
GENE-
RATOR
CEAS
à
Vcc
AD15-AD0
A19-A16
BHE
8086
UCP
à
à
à
8283
à
è
è
è
ç
ç
â
Memorie
data
Periferice
I/O
data
â ê
ââ â ê
ââ
é
ê
é
ê
à
BHE
mag. adrese
mag. date
A^
A/D^
Legenda:
A^=adresa
A/D^=adresa/data
MN/MX
S0
S1
S2
MRDC
MWTC
AMWC
IORC
IOWC
INTA
S0
S1
S2
DEN
DT/R
ALE
CLK
à
8288
à
à
à
T
OE
8286
sau
8287
à
è ç
è

RQ/GT1, RQ/GT0

BAZELE MICROPROCESOARELOR
4-30
cea de cedare, procesorul solicitant furnizeaza din nou un puls pe linia request/grant,
semnaland

CPU ca este gata sa elibereze magistrala. Pe urmatorul semnal de ceas (de remarcat, din figura
4.25, ca protocolul se desfasoara sincron cu acelasi semnal de ceas CLK), 8086 reia controlul
magistralei.

O ultima mentiune este aceea ca linia RQ GT / 0 are prioritate mai mare decat linia RQ GT / 1
care, la randul ei — ca si HOLD, de altfel, in modul minim — este prioritara fata de o cerere
de intrerupere.

Iesirea LOCK poate fi utilizata in sisteme multi-microprocesor in care accesul pe
magistralele sistemului este controlat de un arbitru de magistrala INTEL 8289.
Ea garanteaza accesul exclusiv pe magistrala comuna, pe durata executiei unei instructiuni.
Iesirea este controlata software prin precedarea instructiunii ce necesita acces exclusiv de
instructiunea pe un octet — LOCK. Cand decodifica acest prefix, unitatea de executie
informeaza unitatea de interfata cu magistrala sa activeze iesirea LOCK incepand cu urmatorul
ciclu de ceas. Semnalul ramane activ inca un ciclu de ceas dupa executia instructiunii ce a
accesat o resursa comuna a sistemului multi-microprocesor (de exemplu, un buffer, un pointer
sau un semafor). Daca accesul la resursa respectiva nu este controlat, un microprocesor ar
putea citi o valoare eronata din resursa comuna, in timp ce altul o actualizeaza.

QS1 si QS0 sunt doua linii de stare (queue status) ce permit monitorizarea
de catre coprocesorul aritmetic a starii in care se afla coada de instructiuni
din BIU. Ele specifica ce activitate s-a executat, relativ la instructiunile din coada pe durata
ciclului anterior de ceas (00 — nici un octet nu a fost extras din coada; 01 — s-a extras primul
octet al unei instructiuni; 10 — coada a fost reinitializata ca urmare a executiei unei
instructiuni de transfer; 11 — s-a extras al doilea octet al unei instructiuni).

4.4.5 Selectia memoriei

Spatiul de memorie de un megabyte este divizat fizic in doua zone (numite bank) a cate 512
Ko fiecare. Una din ele (lower bank) este asociata partii inferioare a magistralei de date (bitii
D7-D0), iar cealalta (upper bank) este conectata pe bitii cei mai semnificativi ai magistralei de
date (D15-D8).

LOCK

QS1, QS0

CLK
T4
sau
T1
RQ/QT
coprocesorul
cere
accesul la
magistrala
UCP acorda
magistrala
coprocesorului
coprocesorul
elibereaza
magistrala
Fig. 4.25. Secventa temporala pe linia request/grant

MICROPROCESORUL INTEL 8086
4-31
Liniile de adresa A19-A1 se utilizeaza
pentru a adresa o locatie de un octet in mod
simultan, atat in lower bank cat si in upper
bank, in timp ce linia A0 nu se foloseste
pentru adresarea locatiei in cadrul unui
bank, ci pentru selectia bank-ului. Bank-ul
inferior, care contine octeti aflati la adrese
pare, este selectat cind A0=0. Bank-ul
superior, continand octeti situati la adrese impare, este selectat de semnalul BHE (semnifica
transferul unui octet pe liniile D15-D8), in conditia BHE = = 0 . Acest mecanism de selectie este
ilustrat in tabelul 4.6 si in figura 4.26.


Cand se acceseaza un octet la o
adresa para, acesta este
transferat pe liniile inferioare
ale magistralei, D7-D0. In
aceasta situatie, nivelul inactiv
al liniei de adresa A0 (A0=0)
permite selectia locatiei aflata
in bank-ul inferior; in acelasi
timp, nivelul inactiv al
semnalului BHE (BHE = = 1)
impiedica selectia locatiei
aflata in bank-ul superior.


Tabelul 4.6. Mecanismul de transfer cu memoria
BHE A0 Octet transferat
0 0 Ambii octeti
0 1 Octetul high la / de la adresa
impara
1 0 Octetul low la / de la adresa
para
1 1 Nici unul
MAGISTRALA DE ADRESE
A19-A1
A0
BHE
â â
ê
é é
ê
ê
ê
1/2 SUPERIOARA A MAG. DATE
1/2 INFERIOARA A MAG. DATE
D15-D8
D7-D0
A0-A18
SEL SEL
A0-A18
BANK-UL
SUPERIOR
(IMPAR)
512Kx8
BANK-UL
INFERIOR
(PAR)
512Kx8
Fig. 4.26. Selectia bank-urilor de memorie
Y+1
X+1
Y
(X)
TRANSFER
X
A19-A1
D15-D8 D7-D0
BHE(HIGH)
A0(LOW)
BAZELE MICROPROCESOARELOR
4-32

In mod similar, cand se
acceseaza un octet la o adresa
impara, acesta este transferat pe
liniile superioare ale
magistralei, D15-D8. Acum
nivelul activ al lui BHE
(BHE = = 0 ) permite selectia
locatiei aflata in bank-ul
superior, in timp ce nivelul
activ al liniei de adresa A0
(A0=1) impiedica selectia
bank-ului inferior.


Asa cum se arata in tabelul 4.6,
8086 poate accesa o locatie din
lower bank simultan cu una din
upper bank pentru a efectua
transferul unei date de tip
word. Cand octetul low al cu-
vintului ce trebuie transferat se
afla la o adresa para (deci se
afla in lower bank), cuvantul
este aliniat si poate fi
transferat intr-un singur ciclu
de magistrala. Liniile A19-A1
adreseaza locatia
corespunzatoare din ambele bank-uri, bank-uri care sunt amandoua selectate simultan, cel
inferior prin A0=0 iar cel superior prin BHE = = 0 .

Cand octetul mai putin semnificativ al cuvantului se afla la o adresa impara, cuvantul este
nealiniat si se va transfera in doua cicluri de magistrala. In prima faza, octetul low este
transferat pe bitii B15-B8, cu semnalele de selectie A0=1 si BHE = = 0 . Adresa de memorie este
incrementata in a doua faza, ceea ce face A0=0 si octetul high aflat in lower bank va fi
transferat pe liniile D7-D0. Aceasta secventa este initiata automat de 8086 ori de cate ori
transfera un cuvant la o adresa impara, dar cu exceptia celor 4 perioade de ceas suplimentare,
necesare executiei celui de-al doilea ciclu de magistrala, intrega operatie este transparenta
pentru program.


Y+1
(X+1)
Y
(X)
TRANSFER
X+1.X
A19-A1
D15-D8 D7-D0
BHE(LOW)
A0(LOW)
Y+1
(X+1)
Y
X
TRANSFER
X+1
A19-A1
D15-D8 D7-D0
BHE(LOW)
A0(HIGH)
MICROPROCESORUL INTEL 8086
4-33


4.4.6 Selectia si interfatarea porturilor de intrare/iesire

Nu este obligatoriu ca un port de I/E utilizat intr-un sistem cu microprocesor 8086 sa dispuna
de 16 linii pentru conectare pe magistrala de date, ci se pot utiliza si porturi pe 8 biti.

Porturile pe 8 biti se pot lega fie pe liniile D15-D8, fie pe D7-D0. Pentru a nu aparea o supra-
incarcare a driver-elor de magistrala, este recomandabil ca circuitele de I/E pe 8 biti sa fie
distribuite in mod egal pe ambele parti ale magistralei de date.

Daca un port este conectat pe liniile D7-D0, toate adresele de I/E care ii sunt asignate trebuie
sa fie pare (A0=0). In mod similar, toate adresele asignate unui port conectat pe liniile D15-
D8 trebuie sa fie impare (A0=1). Aceasta permite transferarea unui octet pe liniile superioare
sau inferioare ale magistralei de date, dupa cum adresa portului selectat este para, respectiv
impara. Rezulta de aici ca A0 nu poate fi utilizata ca o linie de adresa de port pentru a selecta
eventuale registre sau canale ale acestuia, ci impreuna cu BHE va determina obtinerea selectiei
de circuit (CS ). Cateva tehnici in acest sens sunt prezentate in figura 4.27.

Prima tehnica (a) utilizeaza 2 decodificatoare separate de tip 8205 pentru a genera semnalele
de selectie de circuit pentru porturi pe 8 biti situate la adrese pare sau impare, precum si
pentru porturi pe 16 biti situate la adrese pare (un port pe 16 biti poate fi constituit si din 2
porturi pe 8 biti situate la adrese consecutive).

Schema (b) permite selectia de circuite de I/E doar pentru transferuri de octet la porturi pe 8
biti, indiferent la ce adresa se afla.

Schema (c) implementeaza aceeasi functie de selectie ca si (a), dar utilizeaza un singur
decodificator.

Y+1
(X+1)
Y
X
Primul ciclu de mag.
A19-A1
D15-D8 D7-D0
BHE(LOW)
A0(HIGH)

Y+1
(X+1)
(Y)
X
Al doilea ciclu de mag.
A19-A1
D15-D8 D7-D0
BHE(HIGH)
A0(LOW)

BAZELE MICROPROCESOARELOR
4-34



Fig. 4.27. Tehnici pentru selectia porturilor de I/E

O ultima tehnica pentru interfatarea porturilor pe 8 biti situate la adrese succesive este
prezentata in figura 4.28. Magistrala de date de 16 biti este multiplexata, cu ajutorul a 2
circuite tampon bidirectional cu iesiri 3-state de tip 8286, intr-o magistrala de 8 biti utilizata
de circuitele periferice pe 8 biti. Aceasta permite efectuarea de transferuri DMA orientate pe
octet, sau transferuri la porturi de I/E pe 8 biti suprapuse peste memorie (memory-mapped
I/O).
A0-A2
E1
E2
E3
O0
O7
á
â
8205
ADRESA
A0
BHE
porturile
aflate la
adrese
pare
A0-A2
E1
E2
E3
O0
O7
á
â
8205
porturile
adrese
impare
aflate la
( b)

A0-A2
E1
E2
E3
O0
O7
á
â
8205
ADRESA
A0
BHE
porturile
aflate la
adrese
pare
A0-A2
E1
E2
E3
O0
O7
á
â
8205
porturile
adrese
impare
aflate la
(a)

A0-A1
E1
E2
E3
O0
O7
á
â 8205
ADRESA
A0
porturile
aflate la
adrese
pare
porturile
adrese
impare
aflate la
A2
(c)

Fig. 4.28. Conversie de magistrala 16-8 biti
D15-D8
MAG. DATE
16 BITI
D7-D0
B
B
OE
OE
8286
8286
T
A
T
A
D7-D0
BHE
A0
CS
PORTURI
RD
MAG. DATE
PORTURI
8-BITI
MICROPROCESORUL INTEL 8086
4-35
In ceea ce priveste porturile pe 16 biti (sau, mai general, porturile pe mai mult de 8 biti: 10, 12
sau 16), este evident ca, din motive de eficienta a utilizarii magistralei si de simplitate a
selectiei echipamentelor, ele trebuie situate la adrese pare. Pentru a garanta ca portul este
utilizat doar pentru transferuri de date de tip word, A0 si BHE trebuie sa conditioneze
generarea de semnale de selectie de circuit, o posibila implementare a obtinerii semnalelor de
selectie fiind ilustrata in figura 4.29.

A0-A2
E1
E2
E3
O0
O7
á
â
8206
ADRESA
A0
BHE
porturile
aflate la
adrese
pare


Fig. 4.29. Decodificarea porturilor de I/E pe 16 biti

4.5 Sistemul de intreruperi

Asa cum s-a aratat in capitolul 3, una din cele mai utilizate metode pentru a efectua operatiile
de I/E se bazeaza pe utilizarea tehnicii intreruperilor.

Prin aceasta metoda, executia programului principal de catre CPU este oprita in mod asincron
de catre un echipament de I/E care solicita, printr-o cerere de intrerupere, un tratament
preferential (tratament care sa rezolve cauza ce a generat aparitia evenimentului semnificativ
ce a determinat cererea de intrerupere). Procesorul termina de executat instructiunea curenta
si, prin intermediul unui vector de intrerupere, ajunge la rutina de tratare a intreruperii
respective in care serveste echipamentul ce a solicitat intreruperea. La sfarsitul acestei
subrutine, procesorul revine in programul principal, reluandu-l de la instructiunea urmatoare
celei ce a fost executata inainte de acceptarea intreruperii. Prin acest mecanism, operatiile de
intrare/iesire sunt executate practic fara intarziere fata de momentul in care apare necesitatea
efectuarii lor. Aceasta implica insa existenta unui hardware suplimentar, care sa permita
implementarea unui astfel de mod de operare (circuitul INTEL 8259 — Programmable
Interrupt Controller — este special proiectat in acest scop, fiind pe deplin compatibil cu
sistemul de intreruperi al lui 8086).

In plus fata de intreruperile generate de porturile de I/E, care apartin clasei intreruperilor
externe, 8086 poate fi solicitat si de intreruperi generate intern, ca urmare a executiei
programului.

4.5.1 Sursele de generare a intreruperilor

Microprocesorul 8086 accepta intreruperi externe (generate de un echipament extern) si
intreruperi interne — generate intern in CPU fie prin executia unor instructiuni specifice
(intreruperi software), fie ca urmare a intrunirii unor conditii specifice la nivelul
microprocesorului.

BAZELE MICROPROCESOARELOR
4-36
Fiecarei intreruperi ii este atribuit un cod numit tipul intreruperii, care permite identificarea
acesteia de catre microprocesor. 8086 poate manipula pana la 256 tipuri diferite de intreruperi.
Figura 4.30 prezinta posibilele surse de intrerupere intr-un sistem cu microprocesor 8086, iar
figura 4.31 ilustreaza secventa de raspuns a logicii de control al intreruperilor.
Fig. 4.30. Sursele de intrerupere


4.5.2 Vectorii de intrerupere

Legatura dintre tipul intreruperii si procedura care deserveste intreruperea respectiva este
reprezentata de tabela vectorilor de intrerupere. Aceasta tabela ocupa primul ko de
memorie incepand cu adresa zero si are pana la 256 de intrari, corespunzand la 256 de vectori
de intrerupere—cate unul pentru fiecare tip de intrerupere ce poate fi definit intr-un sistem cu
microprocesor 8086.

Un vector de intrerupere al microprocesorului 8086 reprezinta un pointer (4 octeti)
continand adresa rutinei de tratare a intreruperii asociate. Cuvantul cel mai semnificativ al
pointerului contine adresa de baza de segment — si se va incarca in registrul CS — iar
cuvantul mai putin semnificativ contine ofsetul fata de inceputul segmentului al subrutinei
respective — ofset ce se va incarca in registrul IP — astfel incat urmatoarea instructiune ce se
va extrage si executa va fi prima instructiune din cadrul subrutinei de intrerupere. Cum fiecare
intrare in tabela vectorilor de intrerupere are o lungime de 4 octeti, CPU calculeaza locatia
vectorului asociat unei intreruperi anume prin simpla inmultire cu 4 a numarului (cuprins intre
0 si 255) ce reprezinta tipul intreruperii respective (figura 4.32.).

Primii 5 vectori de intrerupere sunt dedicati intreruperilor generate prin software, precum si
unei intreruperi externe, NMI (0—divide error, 1—single-step, 2—NMI, 3—breakpoint, 4—
overflow), urmatorii 27 (deci pina la locatia 07FH) sunt rezervati de firma INTEL, iar restul
(vectorii 32 pina la 255) sunt la dispozitia utilizatorului.

CERERE DE
INTRERUPERE
NEMASCABILA
â
LOGICA
INTRERUPERI
NMI
instr.
INT n
instr.
INTO
UCP 8086/8088
8259A
ß
ß
ß
ß
ß
ß
ß
ß
CERERI DE
INTRERUPERE
MASCABILE ß
INTR
impartire
cu zero
pas cu pas
(TF=1)
á á á á


MICROPROCESORUL INTEL 8086
4-37

Fig. 4.31. Secventa de raspuns la intrerupere

intr.
interna
â
â
NMI
INTR
TF
executie
instr.
urmatoare
instr.
curenta
completa
â
â
â
â
à
à
à à
IF
1
0
ß
acceptare
intr.
citire
cod
tip
nu
nu
da
da
nu
da
â
à
ß
0
1
à
â
â
â
â
â
â
â
â
â
â
push flags
TEMP=TF
sterge
IF&TF
push
CS&IP
cheama
R.T.I.
NMI
da
nu
TEMP
1
0
executa
R.T.I.
pop
IP&CS
pop flags
paraseste
proced.
de intr.
à
ß
BAZELE MICROPROCESOARELOR
4-38


4.5.3 Intreruperile externe

Microprocesorul 8086 pune la dispozitia surselor externe de intrerupere doua linii de intrare
prin care se poate comunica CPU o cerere de intrerupere.

Una este linia NMI (cerere de intrerupere nemascabila), o intrerupere pe aceasta cale
aparand ca rezultat al tranzitiei pozitive a semnalului NMI. Cum intrarea este asincrona,
pentru a fi sigur ca este recunoscuta, NMI trebuie sa aiba o durata de minimum 2 perioade de
ceas. Cererea de intrerupere nemascabila este utilizata, de obicei, pentru a semnala micro-
procesorului aparitia unui eveniment "catastrofal" ce semnifica existenta unui pericol major
pentru buna functionare a sistemului. Exemple tipice sunt iminenta cadere a tensiunii de
alimentare, aparitia unei erori de memorie sau a unei erori de paritate pe magistrala.

Deoarece intreruperii NMI ii este asociat tipul 2 de intrerupere, la acceptarea acesteia — la
sfirsitul executiei instructiunii curente — controlul programului este transferat rutinei de
tratare a intreruperii nemascabile a carei adresa este data de vectorul 2. Aceasta implica
salvarea in stiva a continutului registrului indicatorilor de conditie (SP este decrementat cu 2)
si apoi resetarea indicatorilor IF si TF (dezactivandu-se, deci, automat intreruperile mascabile
si intreruperea pentru modul de operare pas-cu-pas). Registrele CS si IP sunt incarcate cu
adresele continute de vectorul 2, urmand extragerea si executia primei instructiuni din rutina
de tratare a intreruperii nemascabile.

Fig. 4.32. Directionarea catre rutina de tratare a intreruperii
prin intermediul tabelei vectorilor de intrerupere
IP
SP
IP
SP
subruti-
tratare
a intre-
ruperii 5
0
5
255
000
014
3FE
400
Nr. tip
intrerupere
adresa
memorie
IP
SP
tabela
vectoru-
lui de
intreru-
pere
ß
na de
00000101
adresa
tabelei
vectorului
de
intrerupere
Nr. tip
intrerupere
à
FFFFE
00
MICROPROCESORUL INTEL 8086
4-39
A doua cale prin care sistemul extern de intreruperi poate emite o cerere de intrerupere este
linia INTR. Aceasta este deobicei activata de controlerul de intreruperi 8259A ale carui
sarcini, in ceea ce priveste declansarea unui proces de intrerupere, sunt urmatoarele:

a) primeste cererile de intrerupere de la echipamentele de I/E atasate la el;
b) determina care dintre solicitanti (daca apar mai mult de unul, la un moment dat) are cea
mai inalta prioritate;
c) activeaza linia INTR catre microprocesor daca solicitantul selectat are un nivel de
prioritate mai mare decit al acelui care este servit in acel moment (daca exista vreunul in
aceasta situatie).

Chiar si numai cele aratate mai sus sugereaza faptul ca INTEL 8259A este un circuit
programabil, fiind controlat prin software de catre programul executat de 8086 in care
controlerul de intreruperi este privit ca o interfata specializata (un set de porturi de I/E) — v.
figura 4.33. In plus, asa cum se va vedea in continuare, circuitul are un rol important in
specificarea vectorului asociat unei cereri de intrerupere acceptate de catre microprocesor.
CS
WR
RD
D7
D6
D5
D4
D3
D2
D1
D0
CAS0
CAS1
GND
Vcc
A0
INTA
IR7
IR6
IR5
IR4
IR3
IR2
IR1
IR0
INT
SP/EN
CAS2
8259A
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
20
19
18
17
16
15
CONFIGURATIA PINILOR
D7-D0
RD
WR
A0
CS
CAS1-CAS0
SP/EN
INT
INTA
IR0-IR7
linii cascadare
mag. date (bidirectionala)
selectie circuit
intrare acceptare intr.
cereri de intr.
iesire intrerupere
slave/enable
adresa selectie comanda
intrare scriere
intrare citire
SEMNIFICATIA PINILOR


logica de
control
buffer
mag.
date
logica
citire/
scriere
buffer
casca-
dare/
comp.
registru
cerere
intr.
reg. masca intr.
mag. interna
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
ß
ß
ß
ß
ß
ß
ß
ß
(IMR)
á á á
registru
intreru-
peri
servite
(ISR)
resol-
ver
priori-
tati
(IRR)
D0-D7
à
à
à
à
à
à
ß
ß
ß
á
á
ß
ß
â â
á á
â
á
SP/EN
CAS2
CAS1
CAS0
CS
A0
WR
RD
INTA INT
SCHEMA BLOC
Fig. 4.33. Schema bloc si configuratia pinilor circuitului INTEL 8259A

BAZELE MICROPROCESOARELOR
4-40

Aparitia semnalului INTR cauzeaza actiuni diferite ale CPU in functie de starea indicatorului
de conditie de activare a intreruperii mascabile (IF). Starea acestuia este controlata de
instructiunile STI (IF=1) si, respectiv, CLI (IF=0). Nici o actiune nu are loc insa pana la
terminarea executiei instructiunii curente. Apoi, daca IF=0 (ceea ce inseamna ca intreruperile
ce apar pe linia INTR sunt mascate, dezactivate) CPU ignora cererea de intrerupere si continua
cu executia urmatoarei instructiuni. Este de notat faptul ca semnalul INTR nu este memorat in
vreun circuit latch in microprocesor, astfel incat el trebuie mentinut activ pana se primeste un
raspuns sau cererea este retrasa. Din punct de vedere al specificatiei de semnal, intrarea INTR
este activa pe nivel si triggerata pe frontul pozitiv al ceasului CLK. Ea trebuie sa fie deci
activa pe durata perioadei de ceas ce precede sfarsitul executiei instructiunii curente.

Daca intreruperile sunt activate (deci daca IF=1), atunci CPU recunoaste intreruperea (o
accepta) si urmeaza sa o proceseze. In afara instructiunilor STI si CLI, intreruperile ce sosesc
la controlerul de intreruperi pot fi selectiv mascate (unele inhibate, altele activate) prin cuvinte
de comanda trimise catre 8259A — cuvinte ce programeaza starea bitilor unui registru de
mascare a cererilor de intrerupere ce exista la nivelul acestuia.

Asa cum se arata in figura 4.34, recunoasterea unei intreruperi mascabile implica executia de
catre microprocesor a doua cicluri de magistrala de acceptare a intreruperii — INTA
cycles.



Fig. 4.34. Secventa de recunoastere a intreruperii INTR

Pe durata primului ciclu, CPU isi trece in stare de inalta impedanta driver-ele de magistrala si
furnizeaza semnalul de control INTA ( INTerrupt Acknowledge) din starea T2 pina in starea
T4. Daca este in modul minim, microprocesorul va refuza recunoasterea unei cereri de
magistrala (HOLD) pina la terminarea completa a secventei de acceptare a intreruperii. Daca
este in modul maxim, 8086 isi activeaza iesirea LOCK incepand cu starea T2 a primului
ciclu si pana in starea T2 a celui de-al doilea ciclu, pentru a semnala unui eventual arbitru de
magistrala (de tip INTEL 8289) interzicerea accesului unui alt procesor pe magistrala.
Rolul acestui prim ciclu INTA este de a avertiza controlerul de intreruperi ca cererea
transmisa pe linia INTR este onorata de microprocesor.
CLK
ALE
^LOCK
INTA
tip
vector
AD7-AD0
T1 T2 T3 T4 T1 T2 T3 T4
ß ß à à primul ciclu INTA al doilea ciclu INTA
^ -doar ptr. modul maxim

MICROPROCESORUL INTEL 8086
4-41

8259A este gata acum sa "participe" la transferul executiei programului catre rutina de tratare
a intreruperii in cauza. Aceasta se realizeaza pe parcursul celui de-al doilea ciclu INTA initiat
de catre microprocesor, in care 8259A plaseaza pe liniile cele mai putin semnificative ale
magistralei de date (AD7-AD0) un octet ce contine tipul intreruperii asociate liniei Interrupt
Request (vezi figura 4.33) activata de echipamentul ce a solicitat intreruperea. In acest mod se
realizeaza identificarea sursei externe ce a generat intreruperea.

In tabelul 4.7 este ilustrat modul de
constituire a octetului respectiv.
Bitii D7-D3 sunt la dispozitia
utilizatorului si sunt incarcati
printr-un cuvint de comanda la
programarea circuitului. Bitii D2-
D0 sunt automat inserati de 8259A,
pentru a specifica pe care din cele 8
intrari IR7-IR0 a primit o cerere de
intrerupere in urma careia a generat
semnalul INTR catre microprocesor, cauzand astfel cele doua cicluri INTA . Octetul in discutie
(reprezentind chiar tipul intreruperii) este citit de CPU intocmai ca intr-un ciclu READ (de
altfel, in ambele cicluri INTA este acompaniat de semnalele DT R / si DEN), valoarea lui
multiplicata cu 4 indicand adresa din tabela vectorilor de intrerupere unde se gaseste (prin
grija programatorului !) adresa rutinei de tratare a intreruperii determinata de tipul respectiv.

Saltul efectiv la rutina de serviciu se face din acest moment la fel ca si in cazul intreruperii
nemascabile (procedeul este valabil si pentru intreruperile interne): se salveaza in stiva
indicatorii de conditie, se reseteaza IF si TF, se salveaza CS si IP si se incarca noile valori ale
registrelor CS si IP din tabela vectorilor de intrerupere.

Intreruperea INTR are prioritate mai mica decit intreruperea NMI.


4.5.4 Intreruperile interne

Instructiune INT n genereaza o intrerupere de tip n prin insasi executia sa. Vectorul intre-
ruperii respective nu mai trebuie furnizat de nimeni, intrucat se afla codificat direct in
instructiune.

Daca indicatorul de conditie OF este setat, instructiunea INTO (INTerrupt on Overflow) gene-
reaza o intrerupere de tip 4, a carei rutina de serviciu trebuie sa trateze situatia aparitiei unei
depasiri.

CPU insasi genereaza o intrerupere al carei tip este 0 (divide error) imediat dupa executia
instructiunilor DIV (DIVide) sau IDIV (Integer DIVide), daca destinatia specificata in
instructiune pentru a memora catul impartirii nu are dimensiunea suficienta pentru acest scop.

Tabelul 4.7. Octetul vectorului de intrerupere
IR D7 D6 D5 D4 D3 D2 D1 D0
7 T7 T6 T5 T4 T3 1 1 1
6 T7 T6 T5 T4 T3 1 1 0
5 T7 T6 T5 T4 T3 1 0 1
4 T7 T6 T5 T4 T3 1 0 0
3 T7 T6 T5 T4 T3 0 1 1
2 T7 T6 T5 T4 T3 0 1 0
1 T7 T6 T5 T4 T3 0 0 1
0 T7 T6 T5 T4 T3 0 0 0
BAZELE MICROPROCESOARELOR
4-42
Daca indicatorul de conditie TF este setat, microprocesorul genereaza automat o intrerupere
de tip 1 dupa fiecare instructiune, intrind astfel in modul de operare pas-cu-pas (single-step).
Intreruperea de tip 1 constituie astfel o "unealta" puternica pentru depanarea programelor
intrucat rutina de tratare se poate constitui ca o "fereastra in sistem" prin care executia
programului sa poata fi urmarita instructiune cu instructiune. O rutina de tratare a intreruperii
single-step poate afisa continutul registrelor microprocesorului, variabile semnificative etc.,
urmarindu-le evolutia pe parcursul executiei programului pentru a determina punctul in care
apare o functionare nedorita.

Ultima intrerupere dedicata este cea de tip 3 — intreruperea de breakpoint. Un breakpoint
reprezinta un punct in program unde executia este oprita pentru a se efectua anumite procesari
speciale — de exemplu, trecerea in modul de operare pas-cu-pas pentru a depana o zona de
program suspectata de erori. Avind doar lungimea unui octet (cod CCH), instructiunea INT 3
poate fi usor "introdusa" intr-un program in curs de depanare.

Toate instructiunile interne (unele exceptii prezinta intreruperea pas-cu-pas) au urmatoarele
caracteristici:

1. Codul tipului intreruperii este fie predefinit, fie continut in instructiune.
2. Nu are loc nici un ciclu de magistrala de recunoastere a intreruperii.
3. O intrerupere interna nu poate fi dezactivata (cu exceptia intreruperii pas-cu-pas ce
este inhibata de resetarea indicatorului TF).
4. Orice intrerupere interna (cu exceptia intreruperii pas-cu-pas) are prioritate mai
mare decit orice intrerupere externa. Ordinea de prioritate este:
I. intrerupere interna (cu exceptia pas-cu-pas)
II. NMI
III. INTR
IV. intreruperea pas-cu-pas


4.5.5 Subrutina de tratare a intreruperii

Cand se intra intr-o rutina de tratre a intreruperii, am vazut ca se salveaza in stiva in mod
automat indicatorii de conditie, registrele CS si IP, iar TF si IF sunt resetati. Procedura
respectiva poate reactiva intreruperile externe cu instructiunea STI, permitand sa fie ea insasi
intrerupta de o cerere pe linia INTR, si desigur ca o rutina de tratare a intreruperii poate
oricand fi suspendata de o cerere de intrerupere nemascabila. Acelasi efect il are si aparitia
unei intreruperi interne. Trebuie evitata posibilitatea ca o intrerupere de un anumit tip sa-si
intrerupa propria rutina de serviciu a intreruperii (de exemplu, o incercare de impartire la zero
in rutina de tratare a intreruperii de tip 0 ar avea ca efect reintrarea continua in procedura
respectiva).

Subrutina de tratare a unei intreruperi trebuie sa salveze toti registrii pe care ii utilizeaza
inainte de a-i initializa si sa-i restaureze inainte de terminarea rutinei. Ca urmare, in cazul
procesarii unor intreruperi simultane, stiva trebuie sa aiba la dispozitie un spatiu suficient
pentru salvarile succesive ce pot aparea. O alta problema ce trebuie avuta in vedere este faptul
MICROPROCESORUL INTEL 8086
4-43
ca dezactivarea intreruperilor externe intr-o rutina de tratare a unei intreruperi poate duce la
pierderea acestora, daca rutina are un cod prea mare.

Toate subrutinele de intrerupere trebuie sa se termine cu instructiunea IRET (Interrupt
RETurn), instructiune a carei executie se bazeaza pe ipoteza ca stiva este in aceeasi conditie
in care a fost la intrarea in procedura. IRET extrage din stiva trei cuvinte succesive pe care le
incarca in IP, CS si registrul indicatorilor de conditie, determinand astfel reluarea executiei
programului cu instructiunea ce urma in mod logic, daca nu s-ar fi efectuat saltul la
intrerupere.

Ceea ce se proceseaza efectiv in cadrul unei rutine de tratare a intreruperii depinde de aplicatia
respectiva. De exemplu, in cazul unei proceduri care serveste o cerere de intrerupere externa,
prima actiune ce trebuie executata (daca acest lucru nu se intampla automat) este trimiterea
unei comenzi catre echipamentul ce este servit, prin care sa se determine retragerea cererii de
intrerupere. Urmatoarea actiune uzuala este de a se citi starea echipamentului pentru a se
identifica motivul pentru care s-a solicitat o intrerupere. In fine, in functie de cauza respectiva,
se comanda executia unor operatii corespunzatoare.








5. IMPLEMENTAREA INTERFETELOR DE INTRARE / IE“IRE


Prezentul capitol va prezenta principalele tipuri de porturi de intrare-ieºire utilizate in sisteme
microprocesor de tipul 8086. Se vor prezenta atat porturile de intrare-ieºire de uz general de
tip numeric – par.5.1, sau analogic – par.5.2), cat ºi cele specializate (seriale – par.5.3, timere
–par.5.4, ºi controlere de intrerupere – par.5.5).

Schemele de implementare prezentate pentru porturile de I/E de uz general vor fi proiectate in
ideea realizarii unei placi compatibile cu un microcalculator de tip PC-AT. In ceea ce priveºte
porturile specializate, acestea vor fi considerate compatibile cu cele ale unui microcalculator
PC-AT, permitand ca exemplele de programe ce vor fi prezentate sa fie direct executabile pe
un asemenea microcalculator.


5.1 IMPLEMENTAREA PORTURILOR DE INTRARE-IEªIRE NUMERICE

5.1.1 Consideratii generale privind porturile de I/E numerice

Dupa cum s-a specificat in capitolele anterioare, unitatea centrala a unui sistem microprocesor
comunica cu exteriorul prin intermediul unor circuite de intrare/ieºire, numite porturi. Daca
informatiile vehiculate de aceste circuite se prezinta la exteriorul sistemului sub forma unor
semnale binare (contact inchis sau deschis, dispozitiv luminos aprins sau stins,
semiconductor saturat sau blocat etc.), porturile respective se numesc porturi de intrari/ieºiri
numerice.

Printr-un port de ieºiri numerice, unitatea centrala poate transmite comenzi (START, STOP,
etc.) sau semnalizari (OK — starea sistemului supravegheat este normala, AVARIE —
parametrul X a depaºit valoarea maxima admisa) inspre exteriorul sistemului microprocesor.

Pentru a realiza aceasta, portul de ieºire respectiv va fi selectionat de catre microprocesor, iar
informatia prezenta pe magistrala de date va fi "inmagazinata" de port, spre a fi disponibila la
ieºire.

Selectionarea portului implica prezenta pe magistrala de adrese a unei combinatii numerice de
valori binare reprezentand adresa acelui port, simultan cu activarea unor anumite semnale
semnificand operatie de scriere la port, pe magistrala de control. Ele vor semnifica faptul ca,
in acel moment, se realizeaza o operatie de ieºire (se executa o instructiune de tip OUT).
BAZELE MICROPROCESOARELOR
5-2

Odata selectat, portul de ieºiri numerice face ca informatia inscrisa in el sa fie disponibila la
ieºire atata timp cat nu apare o noua selectie. Rezulta deci ca, din punct de vedere structural,
un port de ieºiri numerice are la baza un element de inmagazinare a informatiei, de memorare
a ei, adica un circuit de tip latch. Acesta, in absenta comenzii de incarcare, iºi mentine
neschimbata starea ieºirilor, indiferent de variatia marimilor de la intrare.

Unitatea centrala de prelucrare poate primi informatii despre starea unor marimi binare
externe prin intermediul porturilor de intrari numerice. Selectia unui port de intrari
numerice se face, ca ºi in cazul portului de ieºiri, pe baza adresei portului ºi a activarii unor
semnale de control (in acest caz, semnificand operatie de citire de la port). In acest caz, ele vor
specifica efectuarea unei operatii de intrare (se executa o instructiune de tip IN). Odata
selectat, portul de intrare realizeaza transferul informatiei dinspre exterior inspre magistrala de
date a sistemului microprocesor. Deoarece ieºirile unui port de intrare sunt cuplate la
magistrala de date, fiecare ieºire are la baza un circuit tri-state. Acesta, atunci cand nu este
activat (deci portul nu este selectat), prezinta o stare de inalta impedanta echivalenta,
functional, cu decuplarea fizica de la liniile magistralei de date.


5.1.2 Exemplu de schema de porturi de I/E numerice

Pentru a studia porturile de intrari/ieºiri numerice ºi analogice, se prezinta o interfata de I/E
pentru un sistem microprocesor de tipul IBM-PC (compatibil 8086).

Standardul PC prevede ca spatiul de adrese pentru porturi sa fie intre 0H ºi 3FFH. Din aceasta
cauza in decodificare au fost folosite numai adresele A A 0 9 ÷ (3FFH este reprezentabil pe 10
biti). Figura 5.1 prezinta schema de decodificare pentru generarea semnalelor de selectie de
cip ale interfetei. Jumperii JP1, JP2, JP3, JP4, JP5, JP6 permit modificarea adresei de baza a
interfetei de intrare-ieºire.

7430
JP1
A7
A6
A1
A0
A2
E1
E2
8205
O1
O2
O3
O0
O4
O5
O6
O7
A3
A0
A1
A2
CS0
CS7
IODECODE
A8
A9
A5
A4
JP2
JP3
JP4
JP5
JP6
IOR
IOW
AEN
Vcc E3
U6


Fig.5.1. Schema de decodificare a porturilor de intrare-ieºire de uz general

IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-3

In Fig.5.1 a fost aleasa ca adresa de baza 2A0H (JP2, JP4, JP6 - inchise).

Tabela de decodificare este:

A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
∀ IOR
IOW
AEN Selectia Adresa Semnificatia
1 0 1 0 0 0 0 0 0 0 0 0 CS0 2A0 LED-uri
1 0 1 0 0 0 0 0 0 1 0 0 CS1 2A1 A/D
1 0 1 0 0 0 0 0 1 0 0 0 CS2 2A2 A/D
1 0 1 0 0 0 0 0 1 1 0 0 CS3 2A3 butoane
1 0 1 0 0 0 0 1 0 0 0 0 CS4 2A4 D/A
octetul low
1 0 1 0 0 0 0 1 0 1 0 0 CS5 2A5 D/A
octetul high

Semnalul IODECODE din Fig.5.1 indica un acces de scriere/citire de la orice port din
intervalul 2 0 2 7 A H A H ÷ . Practic nu exista nici un port care sa fie selectionat pentru adresele
2A6H ºi 2A7H.

In decodificarea propriu-zisa sunt folosite numai adresele A0, A1, A2. Celelalte adrese sunt
folosite pentru sintetizarea semnalului IODECODE iar A3 este folosit ca validare pentru
decodificatorul U6 de tip 3 la 8. Ieºirile sale sunt active in starea low (0 logic).


5.1.2.1 Portul de ieºiri numerice

In cazul particular al exemplului de fata, portul de ieºiri numerice este proiectat astfel incat
valoarea semnalelor de ieºire din port sa poata fi vizualizata prin starea de aprins sau stins a 8
leduri, notate LED1-LED8 (deci, un port pe 8 biti).

Portul propriu-zis este realizat in jurul circuitului 8212 (U10), utilizat ca registru latch cu
incarcare paralela. Semnalele de intrare in registru, D0-D7, provin de pe magistrala de date a
sistemului microprocesor, octetul cel mai putin semnificativ DB0-DB7, prin intermediul
circuitului tampon 74LS245 (U4). Acesta permite transferul informatiei dinspre intrarile A1-
A8 catre ieºirile B1-B8, atunci cand se efectueaza o operatie de scriere la unul din porturile
aflate in spatiul de decodificare al interfetei de I/E ( IODECODE = 0 ºi IOR = 1). Urmarind
schema din Fig.5.2, se observa ca, daca adresa portului la care se efectueaza operatia de output
( IOW = 0) va determina activarea semnalului de selectie CS 0, atunci informatia de pe liniile
D0-D7 se va incarca in circuitul 8212-U10, ramanand disponibila la ieºirile O1-O8 ale
acestuia.
BAZELE MICROPROCESOARELOR
5-4

Tranzitia din "0" in"1" pe intrarea DS2 pe durata semnalului activ pe nivel "0" existent la
intrarea DS1 determina memorarea (strobarea) datelor in latch-ul 8212-U10 ºi astfel
disponibilitatea lor la ieºire pana la urmatoarea comanda de incarcare.
74LS245
U4
A8
A7
A6
A5
A4
A3
A2
A1
B8
B7
B6
B5
B4
B3
B2
B1
D0
D7
D6
D5
D4
D3
D2
D1
DB8
DB7
DB6
DB5
DB4
DB3
DB2
DB1
B8
B7
B6
B5
B4
B3
B2
B1
U9
8287
D8
D7
D6
D5
D4
D3
D2
D1
O8
O7
O6
O5
O4
O3
O2
O1
U10
8212
DS1 DS2
T OE
DIR G
IODECODE
IOR
IOW
CS0
74LS04
Vcc
LED8
LED1
Vcc
U11
U12
CS3
INT_A/D
R17 5K
+5V
7406
R1
330
R8
330
"1"
A8
A7
A6
A5
A4
A3
A2
A1
C7
C1
(I/O, 2A3H)
(I/O, 2A0H)
(I/O, 2A0 - 2A7H)

Fig 5.2. Schema porturilor de I/E numerice

Circuitele U11 ºi U12 de tip 7406 sunt inversoare cu nivel ridicat de fan-out, permitand
conectarea la ieºire a ledurilor prin intermediul unor rezistente de limitare a curentului.

In concluzie, executia unei instructiuni OUT la adresa 2A0H va determina aprinderea ledului
j, daca valoarea bitului (j-1) din octetul DB7-DB0 este 1.

5.1.2.2 Portul de intrari numerice

In schema din Fig.5.2 se implementeaza un singur port de intrare, uilizabil pentru citirea starii
a 7 comutatoare C7-C1. Nivelurile de tensiune de 0V — comutator inchis (la masa) ºi 5V —
comutator deschis (conectat la alimentare) sunt transferate pe magistrala locala a interfetei de
I/E, bitii D6-D0, prin intermediului circuitului tampon inversor 8287.

Observatii:
IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-5
1. Necesitatea utilizarii liniei D7 pentru a citi starea semnalului INTA D / va fi justificata in
paragraful 5.2, privind porturile de I/E analogice.

Este de remarcat faptul ca 8287 este un circuit tampon care se conecteaza la ieºire pe o
magistrala de date ºi deci dispune de ieºiri tri-state, astfel incat sa nu perturbe magistrala
atunci cand nu este selectat. El se deschide numai pe durata aplicarii unui nivel logic "0" pe
intrarea OUTPUT ENABLE . Aceasta situatie apare in momentul selectiei portului aflat la
adresa 2A3H, cand se genereaza prin decodificarea adresei semnalul de selectie de circuit
CS 3 . Intrarea T, de control a sensului transferului, conectata la "1" logic, comanda transfer
numai in sensul "A catre B".
Informatia ajunsa pe liniile D0-D7 este transferata in continuare pe magistrala de date a
sistemului microprocesor (DB0-DB7) prin comanda deschiderii pentru transfer "B catre A"
aplicata circuitului U4 ( IOR = 0 ºi IODECODE = 0).
Prin urmare, executia unei instructiuni IN de la adresa 2A3H va avea ca efect transferul in
microprocesor al unui octet in care bitii 0–6 reflecta starea celor 7 comutatoare (bitul j=1
inseamna comutator j+1 inchis - la masa).

5.1.2.3 Dimensionarea elementelor pasive ale scheme

Rezistenta R17 conecteaza la alimentare comutatoarele aflate pe pozitia "deschis". Ea trebuie
sa satisfaca cerinta de a asigura curentul minim de 40 µA necesar pentru fiecare intrare TTL a
circuitului 8287, pentru nivelul logic "1".
Conditia de dimensionare este deci urmatoarea:
R V A k < × · 5 7 40 18 µ Ù
O valore standard pentru aceasta rezistenta este de 5 kÙ.

Rezistentele R1-R8 conectate in serie cu ledurile se calculeaza din conditia de a asigura un
curent optim prin leduri (10–20 mA), considerand o cadere de tensiune pe ledul in conductie
de 1.2–1.5V. Totodata, curentul absorbit de o ieºire TTL (circuitul 7406) aflata pe nivel logic
"0" nu poate depaºi 16 mA.

Rezulta:

( . ) ( . ) 5 1 5 16 5 1 5 10 V V mA R V V mA − < < −
adica,
220 350 Ω Ω < < R

Valoarea rezistentelor din schema este de 330 Ω.

BAZELE MICROPROCESOARELOR
5-6

5.1.3 Exemple de programarea porturilor de I/E numerice

In aceasta sectiune sunt prezentate doua secvente de programare pentru utilizarea porturilor de
intrare/ieºire de mai sus.

Exemplul 5.1.1. Executia secventei de program urmatoare determina aprinderea ledurilor
LED7-LED1 in functie de starea comutatoarelor C7-C1, astfel:

C1 inchis (la masa) = se aprinde LED1;
....
C7 inchis (la masa) = se aprinde LED7;

PORT0EQU2A0H ;
PORT3EQU2A3H ;

CIT:MOV DX, PORT3 ; citeºte starea comutatoarelor C1-C7 de la adresa PORT0
IN AL,DX ; in registrul AL, bitul i=1 inseamna comutator inchis
AND AL,7FH ; ledul LED8 va fi stins caci nu exista comutatorul C8
MOV DX, PORT0 ; adresa pentru portul de ieºiri numerice
OUT DX, AL ; aprinde ledul i daca comutatorul i este inchis
JMP CIT ; repeta actiunea

Exemplul 5.1.2. Secventa de mai jos prezinta o subrutina de temporizare, necesara in cazul
unei aplicatii cum ar fi realizarea unei "lumini dinamice":

C1 inchis = se "deplaseaza" un led aprins dinspre LED1 catre LED8;
C2 inchis = se "deplaseaza" un led aprins dinspre LED8 catre LED1;
C1-C7 deschise = nu se aprinde nici un led;

De aceasta data, efectul obtinut va fi unul dinamic, cu o viteza depinzand de ceasul sistemului,
ceas care are o frecventa ridicata. Din acest motiv, pentru a putea percepe evolutia in timp a
deplasarii luminoase a ledurilor, este necesara introducerea unei temporizari inainte sau dupa
fiecare comanda ce schimba starea ledurilor.

In acest scop, se poate utiliza subrutina TAU, exemplificata in continuare.

TAU: ; subrutina de temporizare
MOV CX, V1 ; bucla exterioara se va executa de V1 ori
B:PUSH CX ; salvez in stiva valoarea curenta obtinuta prin ;decrementarea lui V1
MOV CX,V2 ; bucla interioara se va executa de V2 ori
b:XCHG SI, DI ; instructiunea de repetat
LOOP b ; repeta b de V2 ori
POP CX ; restaurez din stiva valoarea curenta a lui V2
LOOP B ; repeta B de V1 ori

Subrutina determina executia in mod repetat a unei instructiuni oarecare a microprocesorului
— fie aceasta XCHG OP1, OP2 — instructiune care interschimba 2 operanzi. Temporizarea
IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-7
dorita se realizeaza prin buclarea executiei instructiunii XCHG in doua cicluri suprapuse,
obtinute prin decrementarea la zero a doua valori, V1 ºi V2, incarcate in registrul CX. Pentru
buclare, se utilizeaza instructiunea LOOP ETICHETA, care decrementeaza valoarea din
registrul CX ºi executa saltul la ETICHETA, daca CX>0.

Temporizarea obtinuta poate varia intre cateva microsecunde ºi cateva minute in functie de
valorile V1 ºi V2 (cea mai mica intarziere se obtine daca V1=V2=1, iar cea mai mare daca
V1=V2=FFFFH).

5.2 IMPLEMENTAREA PORTURILOR DE INTRARE-IEªIRE ANALOGICE

O interfata analog-numerica reprezinta o componenta importanta in cadrul unui sistem cu
microprocesor. Marea majoritate a semnalelor provenite din mediul exterior nu au un format
acceptabil pentru un sistem digital (calculator). Rolul unei interfete analog-numerice este de a
transforma informatiile externe, de tip analogic, intr-un format digital ºi/sau invers. Exista 2
moduri de conectare a unei interfete la un sistem de calcul: prin intermediul unui canal de
comunicatie standard (de tip serial sau paralel) sau direct pe magistrala sistemului.

In primul caz interfata se poate instala (fizic) langa procesul de interes, ºi necesita o sursa
proprie de alimentare. In cel de-al doilea caz ca avantaje se pot cita: o rata mult mai mare de
transfer a informatiilor intre sistemul de calcul ºi interfata, dimensiuni ºi pret de cost reduse.

In acest paragraf se prezinta un exemplu de scheme cu convertor analog-digital, respectiv
digital-analog. Schemele sunt bazate, din punct de vedere al decodificarii selectiei porturilor,
pe schema de selectie din Fig.5.1 din paragraful precedent.


5.2.1 Implementarea interfetei convertorului analog-digital

Este realizat ca in Fig.5.3, cu circuitul ADC0804 care are ieºirile de date de tip tri-state.

Plaja tensiunii de intrare este de 0 5 ÷ V. Astfel:

- pentru un semnal de intrare de 0V, codul binar al marimii convertite binar va fi 0000 0000
- pentru un semnal de intrare de 5V, codul binar al marimii convertite binar va fi 1111 1111

Data convertita este valida doar daca semnalul INTR este 0 (semnalul notat cu D A INT / _ ce
intra in U9 pe bitul 7 ºi e citit pe magistrala de date ca bit D7 – v.Fig.5.2). Pe durata
conversiei D A INT / _ este 1. Testarea acestui bit indica daca conversia s-a terminat sau nu.

BAZELE MICROPROCESOARELOR
5-8
D0
D7
CS1
IOW
BIT1
AIn
BIT2
BIT8
INTR
Uin
+5V
ADC0804
INT_A/D
U5
CS
WR
RD IOR
CS2

Fig.5.3. Implementarea schemei de conversie analog-numerica

Tabela de functionare a convertorului analog-digital este:

CS WR RD
Functia
1 x x circuit neselectat
0 1 0 citire data convertita (deschide bufferul de
ieºire)
0 0 1 start conversie

Secventa de program corespunzatoare utilizarii circuitului este:

asm
mov dx, CS1; Start Conversie !
out dx,al ;
again:
mov dx, CS3; citire bit D7 din portul CS3
in al,dx;
and al,0x80; conversia s-a terminat ?
jz again; daca nu aºteapta

mov dx, CS1; conversia s-a terminat, deci:
in al,dx; se preia data din convertor ºi
mov result, al; se salveaza intr-o variabila
end;

Circuitul este selectat (CS = 0) pentru oricare dintre adresele 2A1H sau 2A3H
( 2 1 CS CS CS • ≡ ).

5.2.2 Implementarea interfetei convertorului digital-analog

Este realizat ca in Fig.5.4, in jurul circuitului U8 (DAC 80) - convertor D/A pe 12 biti. La
intrarea sa exista 2 circuite latch U7 ºi U14 de tip Intel 8212 care pastreaza intrarea digitala la
ieºirile lui U8 pe durata conversiei. Acest procedeu (de a tine intrarea constanta) este necesar
deoarece convertorul functioneaza continuu (nu are start conversie).

IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-9
Deoarece exista 2 variante de DAC 80 (cu ieºiri in curent sau in tensiune) a fost prevazut
circuitul U13 (amplificator operational βM 741) pentru a realiza conversia din curent in
tensiune in plaja 0 5 ÷ V.

Datele de la intrarea convertorului sunt furnizate in 2 paºi:

1 - se furnizeaza primii 4 biti mai semnificativi (B B 12 9 ÷ ) printr-un OUT la adresa 2A5H
(vezi schemele);
2 - se furnizeaza ultimii 8 biti (B B 8 1 ÷ ) printr-un OUT la adresa 2A4H (vezi schemele).

Deoarece datele nu apar sincron (toti cei 12 biti de date) la intrarea in convertor ci cu o
intarziere (dependenta de viteza procesorului) astfel: intai bitii cei mai semnificativi ºi apoi cei
mai putin semnificativi, ieºirea va inregistra o fluctuatie (vizibila pe osciloscop).


B11(MSB)
B8
B7
B1
B0(LSB)
OUT
DAC80
bM741
AnOut
D8
D7
D6
D5
D4
D3
D2
D1
O8
O7
O6
O5
O4
O3
O2
O1
U7
8212
DS1 DS2
D8
D7
D6
D5
D4
D3
D2
D1
O8
O7
O6
O5
O4
O3
O2
O1
U14
DS1 DS2
D8
D7
D6
D5
D4
D3
D2
D1
U8
IOW
CS4
CS5

Fig.5.4. Implementarea schemei de conversie numeric-analogrica

Secventa de program corespunzatoare utilizarii circuitului este:

asm
mov ax, data; D16 contine pe bitii B0-B11 data ce se va converti
mov dx, CS5; selectie port biti superiori
out dx,ah ; inscriere biti superiori
mov dx, CS4; selectie port biti inferiori
out dx, al; inscriere biti inferiori
end;
BAZELE MICROPROCESOARELOR
5-10

5.3 PORTURI SPECIALIZATE – INTERFETE SERIALE

Dupa cum s-a precizat, porturile de I/E permit interconectarea microcalculatorului cu
exteriorul, utilizind diferite interfete de intrare-ieºire. Deoarece marea majoritate a micro-
calculatoarelor vor avea anumite elemente de I/E frecvent utilizate, producatorii furnizeaza
circuite de I/E specializate, cu un inalt grad de integrare (circuite VLSI). In aceasta categorie
intra ceasurile programabile, interfetele seriale controlerele de intreruperi, porturi paralele
programabile, controlere de disc, controlere de acces direct la memorie-DMA, etc. Se vor
prezenta in paragrafele urmatoare principalele tipuri de asemenea porturi specializate, cu
exemplificari concrete din familia microprocesorului INTEL 8086.

5.3.1 Interfete seriale - notiuni generale

In mod uzual, la un sistem cu microprocesor apare necesitatea schimbului de informatii –
uzual date - intre sistem ºi utilizator, sau chiar intre doua sisteme distincte. O solutie simpla ar
putea-o constitui aºa-numita transmitere in paralel a datelor. De exemplu, la un sistem care are
cuvantul de date de 8 biti, transmisia paralela inseamna transmiterea simultana a datelor prin
intermediul unui cablu format din 8 conductori, fiecare alocat unui bit, ca in figura 5.5.

Sistem emitator
b0
b1
b4
b5
b2
b3
b6
b7
b0
b1
b4
b5
b2
b3
b6
b7
Sistem receptor
Linie de transmisie
paralela

Fig.5.5. Transmisia paralela a datelor

Problema este ca transmiterea datelor intre doua calculatoare sau intre un calculator ºi o
consola nu se poate face pe distante mai mari de cativa metri, in paralel. Motivele ar fi:
problemele legate de ecranarea acestor cabluri, pretul de cost ridicat. Cu alte cuvinte, nu se pot
realiza (sau nu este convenabil sa se realizeze) "magistrale" de date care sa permita transferul
simultan al tuturor bitilor cuvintelor de date intre doua asemenea echipamente. Se utilizeaza in
mod frecvent interfete speciale, care transforma informatia paralela — cuvantul de date —
intr-o succesiune de impulsuri, transmise pe un singur fir de legatura (vezi Fig. 5.6) in mod
serial.

IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-11
Registru de deplasare
b0
b1
b4
b5
b2
b3
b6
b7
b0
b1
b4
b5
b2
b3
b6
b7
Registru de deplasare
b0 b1 b4 b5 b2 b3 b6 b7
Linie seriala

Fig.5.6. Transmisia seriala a datelor

Evident, la celalalt echipament, un circuit similar cu functionare complementara va receptiona
informatia seriala, transformand-o intr-o reprezentare paralela. Deci transmisia in acest mod
se face cu viteza mai mica decat transmisia paralela, nu mai apar probleme de zgomot, iar
pretul echipamentelor este mult mai scazut. Trebuie remarcat ca transmisia seriala se va face
prin emiterea unor impulsuri de tensiune cu doua niveluri, corespunzatoare valorilor logice
"0" sau "1" ale bitilor ce se transmit. De asemenea, durata acestor pulsuri este fixa, fiind fixata
de semnalul de "ceas", care va impune viteza de serializare a datelor. Este evident ca, pentru o
functionare corecta, va fi necesar ca ambele circuite, atat cel emitator (transmitator) cat ºi
receptorul, sa functioneze cu aceeaºi frecventa a ceasului. De aceea, aceste viteze de
transmisie/receptie seriala sunt standardizate. Ele se masoara in numarul de biti ce se
transmit/receptioneaza pe secunda, unitate numita baud. Viteze standard tipice sunt: 110, 300,
600, 1200, 2400, 4800 ºi 9600 de baud. Exista doua moduri principale de transmisie a datelor:
modul asincron (cel mai utilizat) ºi modul sincron.

Structura mai detaliata a informatiei seriale transmise la unitatea unui cuvant de date este
prezentata in figura 5.7. Trebuie remarcat ca semnalul de ieºire seriala se afla in starea "1"
cand nu se transmite nimic.

d0 d1 d2 d3 d4 d5 d6 d7
bit
de
start
perioada semnalului
de ceas
bit
de
paritate
biti de stop

Fig.5.7. Structura informatiei seriale transmise in mod asincron

Deoarece momentul transmisiei este declanºat in mod asincron, pentru a se putea semnaliza
inceperea transmisiei, intotdeauna primul bit transmis are valoarea logica "0" ºi se numeºte bit
de start (vezi Fig.5.7). Acesta va declanºa, la receptor, operatia de receptie ºi deserializare a
urmatorilor biti, ce reprezinta informatia propriu-zisa care se transmite (b0 pana la b7 in figura
5.7). Deasemeni, din ratiuni ce tin de viteza de lucru a acestor echipamente, transmisia se va
BAZELE MICROPROCESOARELOR
5-12
incheia cu un numar precizat (cel putin 1) de biti de stop (valoarea logica "1"). Abia apoi se va
putea emite, eventual, un alt cuvant de date, in aceeaºi succesiune a operatiilor.

Observatii

1. In figura 5.7, cuvantul de date transmis corespunde valorii binare

1 0 0 0 1 0 1 1 sau hexazecimale 8BH
(bit7) (bit0)

2. Se observa ca informatia "utila" este este formata din 8 biti (d0-d7), ceilalti 4 biti (start,
paritate + 2 biti de stop), "consumand" din timpul de transmisie ºi facand ca acest protocol
(mod) sa nu fie prea eficient. O posibilitate de imbunatatire a acestuia ar putea sa para
"lungirea" cuvantului de date. Trebuie spus insa ca, la acest protocol, atat receptorul cat ºi
emitorul au propriul lor cuvant de ceas. Chiar daca ele sunt programate sa functioneze la
aceeaºi viteza, practic dupa o anumita perioada de timp ele se desincronizeaza, fapt ce
conduce la aparitia erorilor de transmisie. S-a demonstrat statistic ca o lungime de 8 biti a
cuvantului de date este optima pentru acest protocol.

3. Pentru o mai buna sincronizare a transmisiei/receptiei, se utilizeaza uneori un semnal de
ceas al circuitului de serializare, cu o frecventa mai mare decat cea de transmisie/receptie
— uzual, de 16 sau 64 de ori, divizarea suplimentara facandu-se in circuitul de serializare.

4. Intr-un mod oarecum diferit se efectueaza operatiile in aºa-numitul mod sincron de lucru,
posibil cu unele circuite de interfata seriala. Principial insa, lucrurile sunt similare, doar
protocolul dialogului intre transmitator ºi receptor este mai complicat. Principala diferenta
consta in aparitia unei linii suplimentare care poarta informatia de ceas, furnizata de obicei
de transmitator. Aceasta face ca atat receptorul, cat ºi transmitatorul sa functioneze cu
acelaºi ceas, deci sa se reduca erorile de transmisie. Natural, aparitia unei linii
suplimentare mareºte probabilitatea de aparitie a zgomotului, cat ºi costul.

5. Este frecvent utilizat, inaintea bitului de stop, un "bit de paritate", care permite verificarea
corectitudinii transmiterii informatiei. Astfel, pentru "paritate para", suma modulo 2 a
tuturor bitilor transmiºi (b0 pana la b7) ºi a bitului de paritate trebuie sa dea "0". Similar,
in cazul "paritatii impare", aceasta suma trebuie sa dea "1". Neconcordantele se
semnaleaza; uzual, circuitul serializator inverseaza bitul de paritate/analizeaza
corectitudinea paritatii la receptie.

6. Cuvintele de date vehiculate serial pot contine informatii binare interne ale
calculatoarelor. Totuºi, uzuala este vehicularea seriala a informatiilor codificate in aºa-
numitul cod ASCII (American Standard Code of Information Interchange), in care toate
caracterele alfanumerice tiparibile ºi o serie de coduri standardizate de control au un cod
corespunzator. Utilizand 7 biti in versiunea standard, codul ASCII are deci 128 de
componente; in versiunea extinsa, codul ASCII utilizeaza cuvinte de 8 biti, in numar de
256.

IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-13
De exemplu, litera "A" are codul ASCII 01000001B (binar) sau 41H (hexa), iar cifra "5"
are codul ASCII 00110101B (binar) sau 35H (hexa), etc.

7. Legatura seriala se face la alte niveluri de tensiune decat cele TTL. Uzual, se folosesc:
(a) "bucle de tensiune" (0-12V) pentru legaturi pana la 200 m;
(b) "bucle de curent" (0-20mA) pentru legaturi pana la 2 km;
(c) Circuite "modem" pentru modularea semnalelor, la transmisii pe distante mari (linii
telefonice).
(d) Standardul RS-232 prevede pentru nivelul logic "1" o tensiune de -12V, cu un nivel
limita de -3V, iar pentru nivelul logic "0" o tensiune de +12V, cu un nivel limita de +3V,
pentru distante de ordinul kilometrilor.

5.3.2 Interfata seriala INTEL 8251

In familia circuitelor INTEL, se utilizeaza ca interfata seriala programabila circuitul INTEL
8251. Circuitul poate lucra atat in mod sincron, cat ºi asincron, permitand atat transmisia, cat
ºi receptia seriala. (Denumirea sa: circuit USART = Universal Synchronous Asynchronous
Receiver Transmiter). Este un circuit LSI, cu multe facilitati.

Vom prezenta in continuare doar acele elemente necesare pentru utilizarea circuitului in mod
asincron. Pentru detalii suplimentare, se va consulta catalogul firmei.

Circuitul contine 2 porturi de intrare ºi 2 porturi de ieºire, corespunzatoare cuvintelor de
control/date de intrare ºi ieºire. Le vom nota cu IUS1, IUS2, respectiv OUS1, OUS2.

(a) Cuvinte de control

Cuvantul 1 de comanda — mod asincron (OUTPUT, la portul OUS2)

b7 b6 b5 b4 b3 b2 b1 b0
------ ------ ------ ------
| | | |- 00 - invalid
| | | 01 - rata x 1
| | | 10 - rata x 16
| | | 11 - rata x 64
| | |----------- 00 - car. 5 biti
| | 01 - car. 6 biti
| | 10 - car. 7 biti
| | 11 - car. 8 biti
| |-------------------- x0 - dezactivare
| 01 - paritate para
| 11 - paritate impara
|---------------------------- 00 - invalid
01 - 1 bit de stop
10 - 1 1/2 bit de stop
11 - 2 biti de stop
BAZELE MICROPROCESOARELOR
5-14
Cuvantul 2 de comanda — mod asincron (OUTPUT la portul OUS2)

b7 b6 b5 b4 b3 b2 b1 b0
0 0 1 1 0 1 1 1

- initializeaza circuitul
- pentru detalii, vezi manual firma

Cuvantul de stare (INPUT, de la portul IUS2)

b7 b6 b5 b4 b3 b2 b1 b0
--------------------------- | |-- TxRdy (transmisie gata)
| |------- RxRdy (receptie gata)
|
alte conditii (vezi catalogul)

(b) Cuvinte de date (porturile OUS1, IUS1)

Dupa programarea circuitului (printr-o instructiune de OUTPUT la portul OUS2), se pot
transmite serial caractere (output la portul OUS1), sau citi — daca s-au receptionat —
caractere (input de la portul IUS1).

Orice operatie de transmisie se va face daca s-a terminat transmisia unui caracter anterior.
Pentru aceasta, se va transmite circuitului 8251 data doar dupa ce se testeaza starea
transmitatorului (vezi cuvantul de stare, bitul 1). Astfel, se va aºtepta incheierea acestei
transmisii ºi doar apoi se va continua, cu un nou caracter (doar daca bitul 1 din cuvantul de
stare are valoarea 1, indicand incheierea transmisiei anterioare). Similar, se citeºte o data
valida prin INPUT de la adresa IUS1 doar daca, in cuvantul de stare (citit cu INPUT de la
adresa IUS2), bitul indicand receptia unui caracter (bitul2) este setat la valoarea 1. Altfel, se
aºteapta setarea acestui bit, dupa care se face citirea datei convertite serial-paralel.

Observatii

1. Dupa cum s-a precizat, este imperios necesar ca rata de transmisie a circuitului emitator sa
fie egala cu rata de receptie a circuitului receptor. In caz contrar, informatia este eronat
reconstituita la receptor.

2. Se recomanda alimentarea circuitului cu un semnal de ceas de 16 (sau 64) de ori mai mare
decat rata de transmisie dorita ºi setarea corespunzatoare a cuvantului de comanda. De
exemplu, pentru a obtine o rata de transmisie de 300 de baud, este necesar:

- fara divizare suplimentara: ceasul trebuie sa aiba frecventa 300 Hz
- cu divizare x16: ceasul trebuie sa aiba frecventa 16x300=4.800 Hz
- cu divizare x64: ceasul trebuie sa aiba frecventa 64x300=19.800 Hz

IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-15
3. Legarea seriala standard a doua echipamente se va face, uzual, prin intermediul a 3
conductoare de legatura, ca in Fig.5.8.

transmisie
receptie
masa
receptie
transmisie
masa

Fig.5.8. Conectarea seriala a doua echipamente

4. Se pot transmite cuvinte de date nu doar de 8 biti (tipic), ci ºi de 7, 6, 5 sau chiar 4 biti.


5.3.3 Porturile de comunicatie seriala la calculatoarele de tip PC-AT

Marea majoritate a calculatoarelor PC-AT compatibile dispun de un sistem de comunicatie
seriala construit in jurul unui circuit INTEL 8251, sau al unuia compatibil. Pentru a simplifica
programarea acestuia, o serie din logica de comanda a fost scoasa pe niºte registre accesibile,
prin operatii de intrare/ieºire pe porturi de 8 biti. Numele ºi adresa de port ale acestor registre
sunt date in tabelul 5.1.

Tabelul 5.1.
Adresa Registrul DLAB
XF8 Registrul tampon TX de transmisie date 0 (scriere)
XF8 Registrul tampon RX de receptie date 0 (citire)
XF8 Partea Low a Baud generator LBG 1
XF9 Partea High a Baud generator HBG 1
XF9 Registrul de activare a intreruperilor 0
XFA Registrul de identificare a intreruperilor
XFB Registrul de control linie RCL
XFC Registrul de control modem
XFD Registrul de stare linie RSL
XFE Registrul de stare modem

Observatii:

1. Litera X din adresele registrelor va fi:
X = 3, in cazul in care ne referim la primul port serial ( COM1 )
BAZELE MICROPROCESOARELOR
5-16
X = 2, in cazul in care ne referim la primul port serial ( COM2 )
Uzual se va lucra pe al doilea port serial, primul fiind utilizat pentru mouse.

2. Din tabelul de mai sus vor fi detaliate aici registrele cele mai utilizate. Pentru mai multe
informatii, se va consulta catalogul firmei.

3. Aºa cum se constata, exista situatii in care mai multe registre sunt plasate la aceeaºi adresa
(XF8, ºi XF9). Acest lucru este posibil prin faptul ca registrele in cauza nu sunt folosite
niciodata simultan. Controlul asupra accesului la aceste registre se face prin intermediul
bitului 7 (DLAB) din registrul de control linie ºi prin operatia ce se executa asupra
registrului. Astfel, daca bitul DLAB este 0, atunci o citire a portului XF8 ne da valoarea
registrului RX (de receptie), iar o scriere in acelaºi port va scrie in registrul TX (de
transmisie). Daca bitul DLAB este 1, atunci la adresele XF8 ºi XF9 se vor scrie valori ce
vor determina rata de transmisie/receptie in Baud.

Registrele TX ºi RX sunt registre ce vor contine cuvantul transmis, respectiv ultimul cuvant
de date receptionat.

Registrele LBG ºi HBG sunt folosite la programarea vitezei de transmisie. Ele vor fi scrise o
singura data, la initializarea transmisiei, ºi apoi nu vor mai fi accesate. Pentru accesul lor, se
va seta pe nivel logic "1" bitul 7 din registrul RCL. Pentru viteza de 9600 baud, ele vor
contine:

LGB = (0CH), iar HGB = (0H). Pentru mai multe informatii, se va consulta catalogul firmei.


Registrul RCL este registrul prin care comandam efectiv functionarea portului serial.
Semnificatia bitilor sai este urmatoarea:

b7 b6 b5 b4 b3 b2 b1 b0
| | | | | | |-----|
| | | | | | |-----|---> Lungimea cuvantului de date:
| | | | | | 00 - 5 biti
| | | | | | 01 - 6 biti
| | | | | | 10 - 7 biti
| | | | | | 11 - 8 biti
| | | | | |-------------> Numarul de biti de stop: 0 - 1 bit de stop
| | | | | 1 - 2 bit de stop
| | | | |-----------------> Activeaza verificarea paritatii
| | | |---------------------> Selecteaza paritatea para (uzual 0)
| | |-------------------------> Blocheaza paritatea (uzual 0) — neutilizat
| |-----------------------------> Forteaza 0 pe transmisie
|---------------------------------> DLAB (controleaza accesul la setare Baud sau
registrele de transmisie/receptie (vezi obs. 3 de mai sus)


IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-17
Registrul de stare linie RSL este registrul prin care se poate deduce starea portului serial.
Semnificatia bitilor este urmatoarea:

b7 b6 b5 b4 b3 b2 b1 b0
| | | | | | | |-----> 1 - Caracter receptionat
| | | | | | |---------> 1 - Eroare de sincronizare
| | | | | |-------------> 1 - Eroare de paritate
| | | | |-----------------> 1 - Eroare de incadrare
| | | |---------------------> 1 - Fortare in 0
| | |-------------------------> 1-Portul e gata sa accepte un caracter de transmis
| |-----------------------------> 1 - Portul e complet liber pe transmisie
|---------------------------------> intotdeauna 0

Restul regiºtrilor sunt folositi pentru comunicatia prin modem (linie telefonica) ºi pentru
lucrul in intreruperi al portului.


5.3.4 Exemplu de programare a portului serial COM2

Se prezinta in continuare listingul complet al unui exemplu de programare a portului serial
COM2 al unui microcalculator compatibil de tip PC-AT. Se prezinta rutina de initializare a
comunicatiei seriale la o viteza de 9600 baud, pe cuvinte de 8 biti. Se definesc deasemenea ºi
cele doua rutine de baza necesare pentru a implementa comunicatia seriala, rutina de
transmisie ºi rutina de receptie a unui caracter la / de la interfata seriala.

*******************************************
Exemplu de programare a portului serial COM2;
*******************************************
; Subrutina de initializare a portului pentru 9600 baud, cuvinte 8 biti, fara controlul paritatii,
; un bit de stop

initser:

EQU COMD2 0x2f8 ; adresa portului de date com2
EQU COMC2 0x2fB ; adersa RCL
EQU COMS2 0x2fD ; adresa RSL
EQU COML2 0x2f8 ; adresa LBG
EQU COMH2 0x2f9 ; adresa HBG

MOV DX,COMC2
MOV AL,$80
OUT DX,AL ; aici se seteaza DLAB=1 pentru programare Baud rate
MOV DX,COML2
MOV AL,$0C
OUT DX,AL
MOV DX,COMH2
MOV AL,0
OUT DX,AL ; Baud rate = 9600
MOV DX,COMC2
MOV AL,3 ; 8 biti, fara paritate, 1 bit de stop
BAZELE MICROPROCESOARELOR
5-18
OUT DX,AL
RET
;aici s-a terminat initializarea

;******************************************
; Rutina de transmisie a unui caracter aflat in registrul AH

co:
MOV DX,COMS2
IN AL,DX ; citeºte starea portului
AND AL,$20 ; este gata de transmisie? (bitul 5 e pe 1?)
JZ co ; daca nu, continua sa incerci
MOV DX,COMD2 ; daca da
MOV AL,AH
OUT DX,AL ; transmite caracterul

; ******************************************
; Rutina de receptie a unui caracter. Se va receptiona caracterul in registrul AL

ci:
MOV DX,COMS2
IN AL,DX ; citeºte starea portului
AND AL,1 ; a receptionat ceva?
JZ ci ; daca nu, continua sa incerci
MOV DX,COMD2 ; daca da,
IN AL,DX ; preia in AL caracterul receptionat

; *******************************************


5.4 PORTURI SPECIALIZATE – CEASURI DE TIMP REAL

5.4.1 Ceasuri programabile – notiuni generale

Functionarea microcalculatoarelor in aplicatii de proces va necesita, in majoritatea cazurilor,
realizarea unor temporizari precise intre diversele actiuni efectuate in sistem. In acest scop, se
utilizeaza aºa-numitele ceasuri de timp real (Real Time Clock — RTC), circuite ce pemit
obtinerea unor temporizari programate, cu precizie ridicata. In principiu, aceste circuite vor
diviza un semnal de intrare de frecventa fixa, cu un numar precizat prin programare,
functionand ca numaratoare programabile (furnizand un semnal cu factor de umplere
apropiat de 0.5, deci aproximativ jumatate din perioda semnalul de ieºire are valoare logica 1,
iar cealalta jumatate de perioada are valoare logica 0; vezi Fig 5.9.a) sau ca circuite de
temporizare (furnizand un puls, de durata egala cu cea a semnalului de ceas, dupa o perioada
de timp egala cu N perioade de ceas; v. Fig. 5.9.b). Uzual, ieºirea RTC se conecteaza la
sistemul de intreruperi al microcalculatorului, declanºind lansarea unei subrutine specifice la
sfarºitul temporizarii respective. Semnalul de intrare al RTC poate fi semnalul de ceas al
sistemului, dar poate proveni ºi din exterior (de exemplu, impulsurile de la un traductor
incremental). Uneori este posibila sicronizarea declanºarii numararii de la un semnal exterior .

IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-19
(N*T)
T
(a)
(N*T)
T
(b)
t
t
t
t

Fig.5.9. Principalele moduri de numarare ale unui circuit de tip RTC:
(a) numarator programabil; (b) ceas programabil


5.4.2 Ceasul programabil INTEL 8253

In familia circuitelor firmei INTEL, se utilizeaza ca circuit de ceas programabil circuitul
INTEL 8253. Acesta este un circuit VLSI continand 3 numaratoare de cate 16 biti (fiecare
putand, deci, sa divida semnalul de intrare pana la de 2
16
= 65535 ori). Daca se doreºte o
divizare ºi mai mare a frecventei semnalului de intrare, se pot lega in cascada doua, sau chiar
toate trei numaratoarele circuitului. Prin programare (utilizand cuvinte de comanda ºi de date
corespunzatoare) se indica modul de lucru al circuitului (sunt posibile 5 moduri distincte) ºi se
programeaza numaratoarele utilizate.

Circuitul 8253 opereaza cu cuvinte de 8 biti, fiind direct compatibil cu microprocesoarele
8080, 8085, eventual Z80. Este, de asemenea, utilizat in microcalculatoarele de tip IBM PC cu
microprocesor 8086 etc.

Din punct de vedere al adresarii, circuitul 8253 ocupa un numar de 4 adrese de I/E, deci
contine, practic, din punct de vedere functional, 4 porturi de intrare ºi 4 porturi de ieºire .

Observatie: Porturile de intrare ºi cele de ieºire ale circuitului 8253 au aceleaºi adrese. Nu
este obligatorie nici o legatura intre doua porturi, unul de intrare ºi altul de ieºire, avand
aceeaºi adresa; ele sunt diferentiate tocmai de semnalele de control ce indica sensul
transferului datelor: citire sau scriere.

Figura 5.10 prezinta schema de principiu a circuitului INTEL 8253. Dupa cum se poate
remarca, circuitul 8253 contine un registru de control, care coordoneaza functionarea celor 3
numaratoare de cate 16 biti fiecare, incluse in circuit.
BAZELE MICROPROCESOARELOR
5-20
Registru
de control
Numarator 0
Numarator 1
Numarator 2
Decodificator
intern
(16 biti)
(16 biti)
(16 biti)
sel num.2
sel num.1
sel num.0
sel control
activare selectie
INTEL 8253
Mag.
date
A0
A1
CS
Clk 0
Clk 1
Clk 2
Out 0
Out 1
Out 2
Tampon
RD
WR
Gate 0
Gate 1
Gate 2

Fig.5.10. Structura de principiu a circuitului INTEL 8253

Decodificatorul intern utilizeaza doi biti de adresa ce trebuie furnizati circuitului 8253, pentru
a selecta unic unul din cele 4 porturi de I/E ale acestuia: portul de control ºi cele trei porturi
corespunzatoare celor trei numaratoare. Pentru portul de control, o operatie de scriere va
determina inscrierea in registrul de control a unui cuvant de comanda, indicand ce operatie ºi
asupra carui numarator se va efectua in continuare. O operatie de citire de la portul de control
nu este permisa (vezi aliniatul urmator pentru detalii). Scrierea la un port corespunzator
unuia dintre numaratoare va determina programarea acestuia cu valoarea intervalului de
numarare (numarul de pulsuri de ceas pe care le va numara numaratorul respectiv). Citirea de
la portul corespunzator unuia dintre aceste numaratoare va detemina citirea valorii curente a
continutului numaratorului respectiv. Numararea are loc prin scaderea continutului
numaratorului, cu cate o unitate la fiecare impuls de ceas primit pe intrarea sa de ceas (Clk
i
).

Logica de control a circuitului se bazeaza pe utilizarea semnalelor CS, RD , WR, A0 ºi A1.
Semnalul de CS (Chip Select — selectie de cip) valideaza functionarea circuitului (fara ca
acest semnal sa fie activ = 0 logic, circuitul nu este selectat ºi functionarea sa nu este
afectata). Semnalul RD activ indica citirea din registrul de control sau din numaratoare, iar
semnalul WR activ asigura incarcarea cuvantului de control sau a datelor in numaratoare. Cei
doi biti de adresa, A0 ºi A1, vor selecta, dupa cum s-a mentionat, unul din cele 4 porturi ale
circuitului. Tabela 5.2 sintetizeaza functionarea circuitului, in functie de valorile acestor
semnale.

Semnalele Clk0, Clk1, respectiv Clk2 vor furniza semnalul de intrare, care va fi divizat prin
numarare, pentru fiecare dintre cele trei numaratoare (0, 1 ºi, respectiv, 2). Semnalele Gate0,
Gate1 ºi Gate2 vor putea fi utilizate pentru sincronizarea circuitului cu exteriorul (ele pot
bloca numaratorul asociat). Semnalele Out0, Out1 ºi Out2 reprezinta ieºirile celor trei
IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-21
numaratoare ºi pot fi utilizate pentru a genera semnale de intrerupere catre microprocesor,
semnale dreptunghiulare, monostabil numeric, comenzi pentru un motor pas cu pas etc.
Notam cele 8 porturi ale circuitului (4 de intrare ºi 4 de ieºire) conform tabelei de mai jos.
Astfel, OTIM0, OTIM1 ºi OTIM2 vor reprezenta porturile asociate numaratoarelor 0, 1
respectiv 2, la operatii de scriere; OTIMC, portul de comanda, iar ITIM0, ITIM1 ºi ITIM2,
porturile asociate numaratoarelor 0, 1, respectiv 2, la operatii de citire.

Tabelul 5.2. Semnificatia semnalelor de selectie ºi comanda ale circutiul ui 8253.
CS RD WR
A0 A1 Functia Port
0 1 0 0 0 Incarca continutul numaratorului 0 OTIM
0
0 1 0 0 1 Incarca continutul numaratorului 1 OTIM
1
0 1 0 1 0 Incarca continutul numaratorului 2 OTIM
2
0 1 0 1 1 Incarca cuvantul de comanda OTIM
C
0 0 1 0 0 Citeºte continutul numaratorului 0 ITIM0
0 0 1 0 1 Citeºte continutul numaratorului 1 ITIM1
0 0 1 1 0 Citeºte continutul numaratorului 2 ITIM2
0 0 1 1 1 Neoperational — stare de mare impedanta -
1 X X X X Circuit neselectat. Stare de mare
impedanta
-
0 1 1 X X Neoperational — stare de mare impedanta -

Se prezinta in continuare continutul cuvantului de comanda pentru circuitul 8253,
precizandu-se semnificatia fiecaruia dintre bitii acestui cuvant. Acest cuvant poate fi doar
scris, deci este posibila doar operatia de scriere la adresa A
1
A
0
= 11
2
(OUTPUT, la portul
OTIM4. Vezi tabela 5.2).
b7 b6 b5 b4 b3 b2 b1 b0
------- ------ ------------ |-- 0 - binar (max.65536)
| | | 1 - zecimal (max.9999)
| | |------------------- 000 - mod 0
| | 001 - mod 1
| | x10 - mod 2
| | x11 - mod 3
| | 100 - mod 4
| | 101 - mod 5
| |------------------------ 00 - citire contor
| 01 - citire/scriere octet low
| 10 - citire/scriere octet high
| 11 - cit./scr. octet low, apoi high
|----------------------------- 00 - selectie ceas 0
01 - selectie ceas 1
10 - selectie ceas 2
BAZELE MICROPROCESOARELOR
5-22
11 - ilegal

Dupa cum se poate remarca, pentru a programa circuitul 8253 trebuie efectuata o operatie de
inscriere a unui cuvant de comanda (OUTPUT la portul OTIM4), care specifica:

• ce numarator se va programa (bitii 6 ºi 7 din cuvantul de comanda);
• in ce mod va lucra numaratorul (bitii 1, 2, 3); modurile au urmatoarea semnificatie:
- modul 0 = intrerupere, la terminarea numararii;
- modul 1 = monostabil programabil;
- modul 2 = generator de impulsuri divizate cu N;
- modul 3 = generator de impulsuri dreptunghiulare;
- modul 4 = strob comandat prin software;
- modul 5 = strob comandat prin hardware;
• in ce mod se va incarca valoarea numerica (16 biti) reprezentand cu cat va divide
numaratorul respectiv (bit 4 ºi 5);
• reprezentarea numerica a acestui numar: binar sau BCD (bitul 0).

Cuvintele de date (OUTPUT — date de ieºire) se utilizeaza dupa ce s-a dat cuvantul de
comanda pentru numaratorul care a fost selectat prin cuvantul de comanda. Permit inscrierea
valorii numerice cu care va divide numaratorul respectiv. Se utilizeaza:

OUTPUT la portul OTIM1, pentru programarea numaratorului 1
OUTPUT la portul OTIM2, pentru programarea numaratorului 2
OUTPUT la portul OTIM3, pentru programarea numaratorului 3

Cuvintele de date (INPUT — date de intrare) permit citirea continutului numaratoarelor
circuitului 8253, la un moment dat.

(Obs.: Deoarece uzual nu sunt utilizate, informatii suplimentare despre toate modurile de
lucru, cuvantul de stare ºi cuvintele de date de intrare se pot gasi in datele de catalog ale
circuitului).

Un exemplu de programare al circuitului 8253 se prezinta in sectiunea 5.1.4 a lucrarii.


5.4.3 Ceasurile programabile la calculatoarele de tip PC-AT

In prezentul paragraf se prezinta un exemplu de utilizare al ceasului programabil existent pe
microcalculatoarele de tip PC-AT ºi compatibile. Se va utiliza circuitul 8253 existent in
sistem, ºi anume numaratorul 2, disponibil pentru a putea fi programat de catre utilizator, care
poate alimenta difuzorul sistemului. Totodata, deºi nu se va intra in detalii aici, se utilizeaza ºi
doi dintre bitii de date ai unui circuit de tip port paralel programabil, 8255, pentru a se permite
accesul ºi, respectiv, blocarea semnalului de ieºire al numaratorului 2 al circuitului 8253, catre
difuzorul microcalculatorului. Schema de principiu a acestei parti a sistemului este prezentata
in figura 5.11.

IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-23
INTEL 8253
Gate0
Clk0
Gate1
Clk1
Gate2
Clk2
Out0
Out1
Out2
PCCLK
2.38 MHz
2
5Vcc
5Vcc
Bit 0
Address 0061H
Address 0061H
Bit 1
Output port
Output port
Amplificator
Filtru
trece jos
catre 8259A, IRQ0
refresh diagram

Fig.5.11. Schema de conexiuni exterioare a circuitului 8253, de pe microcalculatoarele de tip PC-AT

Porturile circuitului de ceas programabil 8253 ocupa, in spatiul de adrese de I/O ale micro-
calculatorului PC realizat cu microprocesorul 8086 (sau cu microprocesoarele compatibile:
80286, 80386, 80486):

• ITIM0, OTIM0: 40H (furnizeaza tactul pentru ceasul de sistem al microcalculatorului);
• ITIM1, OTIM1: 41H (furnizeaza semnalul de reamprospatare a memorie dinamice pentru
circuitul DMA, canalul 0, al sistemului);
• ITIM2, OTIM2: 42H (furnizeaza semnalul pentru difuzorul sistemului);
• OTIMC: 43H (registrul de comanda al circuitului).

Observatii:

1. Calculatoarele de tip PC-AT ºi cele bazate pe microprocesorul 80386, 80486 utilizeaza
circuitul 8254 — similar, in cele prezentate, cu circuitul 8253.
2. Adresele din zona de porturi de la 44H pana la 5FH sunt decodificate redundant, pentru
circuitele 8253 / 8254 ale sistemului.

Semnalul de intrare al numaratorului 2 al circuitului 8253 (8254) este, dupa cum se remarca
din figura 5, de 1.19 MHz. Aceasta frecventa de baza trebuie considerata pentru determinarea
valorii de divizare, pentru a genera la ieºirea numaratorului un semnal de frecventa dorita.

Deoarece numaratorul poate fi programat sa divida cu minim 2 ºi maxim 65535, plaja de
frecventa a semnalului de ieºire al numaratorului va fi:

- maximum 595 KHz (divizare cu 2);
BAZELE MICROPROCESOARELOR
5-24
- minimum 18,15 Hz (divizare cu 65535).

Trebuie remarcat ca validarea numararii va fi posibila prin activarea a doi biti suplimentari ai
portului paralel 8255 al sistemului, de la adresa 61H, ºi anume bitii 0 ºi 1 ai acestui port.
Pentru ca numaratorul sa numere, trebuie setat bitul 0 al acestui port, iar pentru ca semnalul de
ieºire al numaratorului sa fie efectiv aplicat catre difuzor, trebuie setat bitul 1 al portului
paralel de ieºire de la adresa 61H.

Observatie importanta: Dupa cum se constata ºi din schema din Fig. 5, celelalte
numaratoare ale circuitului 8253 sunt folosite de catre sistem pentru alte resurse ale
sistemului. Aceeaºi situatie exista ºi pentru circuitul 8255, ceilalti biti ai portului de ieºire de
la adresa 61H fiind utilizati pentru controlul altor resurse ale sistemului. IN CONSECINTA,
este imperios necesar ca, in aplicatiile ce se vor testa in continuare, sa NU SE MODIFICE
(prin programare, sau date eronate) valorile de la celelalte numaratoare ale circuitului 8253,
sau bitii 2–7 de pe portul de ieºire de la adresa 61H.

Rezumand, adresele porturilor ce se vor utiliza practic, pentru a determina (re)programarea
numaratorului 2 al circuitului 8253 ºi generarea unui sunet la difuzorul sistemului, sunt:

port adresa tip port functie

OTIMC 43H OUTPUT port control
OTIM3 42H OUTPUT inscriere valoare dividere numarator

8255, canal B 61H OUTPUT bitii 0,1: setati la 1 = validare ieºire 8253;
bitii 0,1: setati la 0 = blocare ieºire 8253.

5.4.4 Exemplu de utilizare a ceasurilor programabile la calculatoarele de tip
IBM-PC

Vom prezenta trei subrutine care realizeaza:

− programarea numaratorului 2 al circuitului 8253 pentru a genera un semnal de frecventa
data;
− programarea circuitului 8255, canalul B (portul de ieºire de la adresa 61H), pentru a
debloca semnalul generat de catre numaratorul 2 al circuitului 8253, catre difuzorul
sistemului;
− programarea circuitului 8255, canalul B (portul de ieºire de la adresa 61H), pentru a bloca
semnalul generat de catre numaratorul 2 al circuitului 8253, catre difuzorul sistemului.

Pentru obtinerea unui semnal de 500 Hz, cuanta de divizare a numaratorului va fi:

N = f
in
/ f
out
= 1 193 180 / 500 = 2386 = 0952H

Modul cel mai convenabil de numarare al numaratorului, pentru a genera un semnal sonor,
este modul 3 (semnal dreptunghiular, vezi par. precedent).
IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-25

Cu aceste observatii, cele trei subrutine sunt prezentate in continuare:

;======================================
;; Subrutina pentru initializarea circuitului 8253
; ----------------------------------------------------------------
;; Argumente: <Intrare>: BX = valoarea N, cu care va divide numaratorul 2 al 8253
; <Ieºire> : -
; Altereaza: registrul AX
;
OTIMC EQU 43H ; adresa portului de control al 8253
OTIMD EQU 42H ; adresa portului de date al numaratorului 2 al 8253
DTCMD EQU 0B6H ; valoarea cuvantului de comanda al 8253 = 1011 0110 b, deci:
; set numarator 2; mod 3 de numarare; incarcare succesiva
; (octet low, apoi high); numar incarcat in reprezentare binara
;
INITIM2: MOV AL, DTCMD ; incarca AL cu cuvantul de comanda
OUT OTIMC, AL ; transmite cuvantul de comanda la 8253
MOV AX, BX ; incarca AX cu valoarea N
OUT OTIM2, AL ; transmite low(N) la 8253, numaratorul 2
OUT OTIM2, AH ; transmite high(N) la 8253, numaratorul 2
;
RET ; programarea incheiata, return
;======================================
; Subrutina pentru activarea sunetului la difuzor
; Argumente: <Intrare> : -
; <Ieºire> : -
; Altereaza: registrul AL
;
PPAR EQU 61H ; adresa portului paralel 8255, canal B, la care se vor
; programa bitii 0 ºi 1 pentru activare sunet la difuzor
AMASC EQU 03H ; masca pentru setarea bitilor 0 ºi 1: bitul 0 de valoare 1 va
; seta semnalul Gate2 (permitand numararea numaratorului 2),
; iar bitul 1 de valoare 1 va permite ieºirii Out2 sa fie aplicata pe
; difuzor
;ASUNET: IN AL, PPAR ; citeºte actuala valoare a bitilor de la portul paralel, canal
B
OR AL, AMASC ; seteaza bitii 0 ºi 1, lasand ceilalti biti nemodificati
OUT PPAR, AL ; inscrie noua valoare la portul paralel, canal B
;
RET ; programare incheiata, return
;======================================
; Subrutina pentru blocarea sunetului la difuzor
; Argumente: <Intrare> : -
; <Ieºire> : -
; Altereaza: registrul AL
;
PPAR EQU 61H ; adresa portului paralel 8255, canal B, la care se vor
; programa bitii 0 ºi 1 pentru activare sunet la difuzor
BMASC EQU 03H ; masca pentru resetarea bitilor 0 ºi 1: bitul 0 de valoare 0 va
; reseta semnalul Gate2 (blocand numararea numaratorului 2),
; iar bitul 1 de valoare 0 nu va permite ieºirii Out2 sa fie aplicata
; pe difuzor
; Obs: poate fi resetat doar unul dintre cei doi biti, pentru blocarea sunetului
BAZELE MICROPROCESOARELOR
5-26
;
BSUNET: IN AL, PPAR ; citeºte actuala valoare a bitilor de la portul paralel, canal
B
AND AL, BMASC ; reseteaza bitii 0 ºi 1, lasand ceilalti biti nemodificati
OUT PPAR, AL ; inscrie noua valoare la portul paralel, canal B
;
RET ; programare incheiata, return
;======================================
; Program principal, care apeleaza cele trei subrutine definite mai sus
;
NDATA EQU 0952H ; valoarea calculata pentru N, pentru a genera un semnal
; cu frecventa de 500 Hz la ieºirea numaratorului 2 al 8253
MAIN: MOV BX, NDATA ; incarca BX cu valoarea N
CALL INITIM2 ; programeaza numaratorul 2 al 8253
CALL ASUNET ; activeaza sunet la difuzor
;
; ... aici, pune o temporizare, pentru a lasa sunetul activ, pentru
; o durata data de timp
;
CALL BSUNET ; blocheaza sunetul la difuzor
; HLT ; program terminat
;======================================

Reluam programul, prezentandu-l in limbaj PASCAL, combinat cu utilizarea unora dintre
sectiunile programului scrise in limbaj de asamblare. Se programeaza 8253, se apasa o tasta de
la tastatura calculatorului pentru a activa sunetul ºi se blocheaza sunetul la urmatoarea apasare
a unei taste.

{======================================}
Program Sunet;

const:
OTIMC = $43; { defineºte adresa portului de control al 8253 }
OTIM2 = $42; { defineºte adresa portului de date pentru numaratorul 2 al 8253 }
PPAR = $61; { defineºte adresa portului paralel, canal B, circuitul 8255 }
;
DTCMD = $B6; { cuvantul de comanda pentru 8253, 1011 0110 b, setand
programare numarator 2, in mod 3 de numarare, incarcare
succesiva
octet low, apoi high, cu valoare binara }
AMASC = $03; { masca pentru activarea sunetului la difuzor }
BMASC = $FC; { masca pentru blocarea sunetului la difuzor }
;
NDATA = $0952; { valoarea N pentru a obtine 500 Hz la ieºirea
numaratorului 2 al 8253 }
{-----------------------}
begin
asm
MOV AL, DTCMD ; incarca AL cu cuvantul de comanda
OUT OTIMC, AL ; transmite cuvantul de comanda la 8253
MOV AX, NDATA ; incarca AX cu valoarea N
OUT OTIM2, AL ; transmite low(N) la 8253, numaratorul 2
OUT OTIM2, AH ; transmite high(N) la 8253, numaratorul 2
IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-27
end;
{-----------------------}
write('Apasati o tasta pentru a activa sunetul');
readln();
{-----------------------}
asm
IN AL, PPAR ; citeºte actuala valoare a bitilor de la portul paralel, canal
B
OR AL, AMASC ; seteaza bitii 0 ºi 1, lasand ceilalti biti nemodificati
OUT PPAR, AL ; inscrie noua valoare la portul paralel, canal B
end;
{-----------------------}
write('Apasati o tasta pentru a bloca sunetul');
readln();
{-----------------------}
asm
IN AL, PPAR ; citeºte actuala valoare a bitilor de la portul paralel, canal
B
AND AL, BMASC ; reseteaza bitii 0 ºi 1, lasand ceilalti biti nemodificati
OUT PPAR, AL ; inscrie noua valoare la portul paralel, canal B
end;
{-----------------------}
end.
{======================================}

Observatie: Pentru generarea de semnale audibile, spectrul de frecvente maxim ce poate fi
sesizat de urechea omeneasca este in gama 15 Hz – 20 kHz. Tabela de mai jos indica valorile
zecimale ce pot fi utilizate pentru a genera unele note muzicale, pe un sistem PC.

Frecventa de intrare a generatorului de semnal este de 1.193.180 Hz

\ Nota
octava
Do Re Mi Fa
1 18357 16345 14551 13715
2 9108 8117 7231 6818
3 4554 4058 3616 3409
4 2277 2096 1808 1705
5 1139 1015 904 852
6 569 507 452 426
7 285 254 226 213

In esenta, un salt de o octava se va obtine prin dublarea (injumatatirea) frecventei.



5.5 PORTURI SPECIALIZATE – CONTROLERE DE INTRERUPERI

BAZELE MICROPROCESOARELOR
5-28
Paragraful 4.5 a prezentat structura sistemului de intreruperi a microprocesorului 8086, cat ºi
caracteristicile de baza ale controlerului de intreruperi 8259A. Figura 4.33 a prezentat pinii
circuitului, iar par.4.5.3 a dat detalii despre utilizarea acestuia in sistemele cu microprocesor
8086. In continuare se vor prezenta principalele aspecte legate de programarea acestui port
specializat, si unele exemple concrete de utilizare pe microcalculatorele de tip PC.

5.5.1 Programarea controlerului de intreruperi 8259A

Dupa cum s-a precizat, tratarea intreruperilor externe mascabile este gestionata cu ajutorul
circuitului programabil PIC 8259A (PIC = Programmable Interrupt Controller). In acest
paragraf vom da detalii suplimentare, referitoare la programarea ºi utilizarea acestui circuit.
Specificatii complete de utilizare se pot gasi in cataloagele ºi manualele de aplicatie oferite de
firma INTEL.

Trebuie precizat ca circuitele 8259A pot fi utilizate ºi in montaje in cascada, avand rol de
Master (1), respectiv Slave (max. 8), circuitele Slave avand conectate ieºirile INT la intrarile
IRn ale circuitului Master. Astfel, pana la 64 de semnale de intrerupere externe pot fi tratate
de catre aceste structuri.

Pe scurt, pinii circuitului 8259A au urmatoarea semnificatie (v.fig. 4.33):
− D0-D7: pinii de date, permitand comunicarea cu microprocesorul, pentru programarea
circuitului, testarea starii acestuia ºi transmiterea pe ciclul 2 INTA a codului intreruperii
solicitate de 8259A.
− RD, WR: semnale de control, indicand operatia de citire, respectiv scriere in circuit;
− CS : semnalul de selectie a circuitului (Cip Select);
− A0 : bit adresa, permitand selectia unuia din cele 2 porturi interne ale circuitului (v.
programarea);
− INT, INTA: semnale omonime cu cele corespunzatoare microprocesorului 8086;
− SP/EN : ca semnal de intrare, indica circuit utilizat ca Master (1), sau Slave (0); intr-un
mod special de functionare a circuitului (buffer mode), este utilizat pentru a comanda
circuite tampon externe.
− CAS 0-2: semnale generate in schemele cascadate (mai multe circuite 8259A) de catre
Master, catre Slave, indicand carui Slave i s-a acceptat cererea de intrerupere la un moment
dat.

Circuitul 8259A este programat utilizand o secventa de pana la 4 cuvinte de initializare (ICW
– Initialisation Command Word), a caror semnificatie este, pe scurt, urmatoarea (se insista pe
elementele specifice utilizarii in sistemele 8086 – circuitul este utilizabil ºi in sisteme 8080,
8085):

ICW1:
A0 D7 D6 D5 D4 D3 D2 D1 D0
0 X X X 1 LTIM ADI SNGL IC4
- IC4: 1 = se va transmite ºi ICW4; 0 = nu se va transmite ICW4;
- SNGL: 1 = un singur circuit 8259A in sistem; 0 = mai multe circuite, cascadate;
IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-29
- ADI: 1 = interval de 4 adrese, 0 = interval de 8 adrese, intre
vectorii de intrerupere;
- LTIM: 1 = intrarile IRi(0-7) sunt sensibile pe nivel; 0=intrarile Iri(0-7) sunt sensibile
pe front;

ICW2:
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 T7 T6 T5 T4 T3 0 0 0

- T7-T3 : bitii vectorului de intrerupere de baza, asociat intreruperilor generate de catre
circuit;

ICW3: (utilizat doar in schemele cascadate):
- pentru circuitul Master:
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 S7 S6 S5 S4 S3 S2 S1 S0

Si: 1= intrarea IR asociata este conectata la un Slave; 0= intrarea IR asociata nu este conectata
la un slave;

- pentru circuitul Slave:
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 1 0 0 0 0 ID2 ID1 ID0

- ID0-2 : indica identificatorul (numarul – unic) circuitului Slave;

ICW4: utilizat pentru a specifica detalii suplimentare despre modul de lucru al circuitului (a
se consulta catalogul circuitului, pentru prezentarea acestui cuvant de initializare).

In afara cuvintelor de initializare, se utilizeaza, in functionarea normala a circuitului, aºa-
numitele cuvinte de operare (OCW – Operation Command Word), permitand modificarea
unora dintre parametrii ºi/sau modurile de lucru ale circuitului 8259A. Aceste cuvinte permit:

OCW1:
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 M7 M6 M5 M4 M3 M2 M1 M0

Mi : 1 = masca pe IRi; 0=IRi nu este mascata;

OCW2:
A0 D7 D6 D5 D4 D3 D2 D1 D0
0 R SL EOI 0 0 L2 L1 L0

BAZELE MICROPROCESOARELOR
5-30
- valoarea uzuala a OCW2 este 20H, indicand transmiterea unui mesaj de sfarºit de intrerupere
(EOI = End Of Interrupt), inainte de ieºirea din rutina de tratare a intreruperii. Pentru detalii
suplimentare, a se consulta catalogul circuitului 8259A.

OCW4: utilizat in moduri speciale de functionare ale circuitului; a se consulta catalogul
circuitului, in acest sens.

Trebuie mentionat ca, in mod implicit, cele 8 niveluri de intreruperi au prioritati fixe: maxima
pentru IR0, minima pentru IR7. Se pot utiliza ºi moduri de lucru pentru care prioritatile se
rotesc dupa fiecare tratare a unei cereri de intrerupere (nivelul tratat devine de prioritate
minima, celelalte ajustandu-ºi prioritatea in mod corespunzator), sau chiar la indicatia
specifica a utilizatorului – utilizand OCW2.

De asemenea, trebuie specificat ca, in schemele cascadate, TOATE circuitele 8259A prezente
in schema trebuiesc programate in mod individual. Trebuie indicate (hardware sau software)
circuitul Master ºi circuitele Slave; pentru fiecare in parte se transmit cuvintele de initializare
(ICW), indicandu-se adresele vectorilor de intrerupere asociati (DISTINCTE !) etc. La aparitia
unei cereri de intrerupere la o intrare IR a unui circuit Slave, acesta va genera o cerere de
intrerupere catre circuitul Master, pe intrarea IR corespunzatoare, la care este conectata ieºirea
INT a circuitului Slave respectiv. In ciclul INTA, circuitul Master va indica, pe liniile CAS0-
2, identificatorul circuitului Slave a carui cerere de intrerupere a fost transmisa
microprocesorului ºi acceptata. Apoi, circuitul Slave va fi cel ce furnizeaza pe magistrala de
date a sistemului codul intreruperii solicitate, permitand localizarea vectorului de intrerupere
ºi a rutinei de tratare a intreruperii, asociate acestei intreruperi. Pentru fiecare dintre circuitele
din schema se aplica logica de prioritate programata pentru circuitul respectiv, permitand
implementarea unor scheme sofisticate de rezolvarea a prioritatilor in cazul cererilor de
intrerupere simultane. De mentionat ca este posibil ca doar unele dintre intrarile IR ale
circuitului Master sa fie conectate la circuite Slave, celelalte fiind conectate direct la
echipamente de I/E (v. par. urmator).

5.5.2 Tratarea intreruperilor externe mascabile in microcalculatoarele PC-AT

Microcalculatoarele PC-AT utilizeaza 2 circuite 8259A in conexiune Master-Slave, cu urma-
toarea configuratie:

Tabel 5.3. Asignarea nivelurilor de intreruperi in microcalculatoarele PC-AT.
CTRL1
(Master)
CTRL2
(Slave)
Nivel intrerupere Utilizare
IRQ0 8h Ieºire 0 a circuit ceas 8254
IRQ1 9h Tastatura (buffer ieºire plin)
IRQ2 <--- IRQ8 70h Intrerupere ceas timp real al sistemului
IRQ9 71h Redirectata software la INT 0Ah (IRQ 2)
IRQ10 72h Rezervat
IRQ11 73h Rezervat
IRQ12 74h Rezervat
IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-31
IRQ13 75h Coprocesor
IRQ14 76h Controler hard disk
IRQ15 77h Rezervat
IRQ3 0Ah Port serial COM2
IRQ4 0Bh Port serial COM1
IRQ5 0Ch Port paralel 2
IRQ6 0Dh Controler disc flexibil
IRQ7 0Eh Port paralel 1


5.5.3 Exemple de programe de tratarea intreruperilor

In exemplele urmatoare, se vor implementa programe tratand intreruperea de la circuitul de
ceas 8254 (ieºirea 0). Pentru detalii privind programarea ºi utilizarea acestui circuit, a se
consulta paragraful 5.4.

Observatie: Se utilizeaza, in exemplele urmatoare, functii specifice pentru a se genera/salva
vectorii de intreruperi (SetIntVect, GetIntVect) ºi a genera o procedura specifica tratarii unei
intreruperi, conforma cu caracteristicile limbajului de programare Pascal. A se consulta
manualul acestuia sau facilitatea “Help on-line” pentru detalii referitoare la aceste functii.

0. Intreruperi software de tip general

{-----------------------------------------}
{ Test 0: intreruperi software }
{ Programul genereaza intreruperea 35H, unde alternativ se
activeaza / opreºte generarea unui sunet la difuzor }

uses Dos;
const
NDATA = $0952; { val.pt. a obtine 500 Hz la ieºirea numaratorului 2 al 8253 }
start : Boolean = true;
var
Int35Save : Pointer;
regs : Registers;
{-------------------------------}
{ Initializare ceas de timp real (NUM.2, 500 Hz la ieºire) }
procedure InitCeas;
begin
asm
MOV AL, $B6 { incarca AL cu cuvantul de comanda }
OUT $43, AL { transmite cuvantul de comanda la 8253 }
MOV AX, NDATA { incarca AX cu valoarea N }
OUT $42, AL { transmite low(N) la 8253, numaratorul 2 }
MOV AL, AH { transfera high(N) in AL }
OUT $42, AL { transmite high(N) la 8253, numaratorul 2 }
end;
end;
{-------------------------------}
procedure SunetOn;
BAZELE MICROPROCESOARELOR
5-32
begin
asm
IN AL, $61 { citeºte bitii de la portul paralel, canal B }
OR AL, $03 { seteaza bitii 0 ºi 1, lasand ceilalti biti nemodificati }
OUT $61, AL { inscrie noua valoare la portul paralel, canal B }
end;
end;
{-------------------------------}
{ Stop sunet la difuzor }
procedure SunetOff;
begin
asm
IN AL, $61 { citeºte bitii de la portul paralel, canal B }
AND AL, $FC { reseteaza bitii 0 ºi 1, lasind ceilalti biti nemodificati }
OUT $61, AL { inscrie noua valoare la portul paralel, canal B }
end;
end;
{--------------------------------------}
{$F+}
{ Procedura de intrerupere de nivel 35H (RTI 35H) }
procedure Intrerupere35; interrupt;
begin
if(start) then SunetOn else SunetOff;
WriteLn('Intrerupere 35H! start =', start);
ReadLn;
start := FALSE;
end;
{$F-}

begin
{-------------------------------}
{ Program principal }
{-------------------------------}
{ Initializare vector de intreruperi pt. nivelul 35 }
GetIntVec($35,Int35Save); { Salvare vechiul vector de intreruperi }
SetIntVec($35,Addr(Intrerupere35)); { Setare noul vector de intreruperi }
{-------------------------------}
InitCeas; { Initializare ceas 2 al 8253 }
{-------------------------------}
{ >>>>>}
WriteLn('Apasati o tasta pentru a genera intrerupere 35');
ReadLn;
Intr($35, regs);
WriteLn('Apasati o tasta pentru a genera intrerupere 35');
ReadLn;
Intr($35, regs);
{<<<<<}
{--------------------------------}
SetIntVec($35,Int35Save); { Refacere vector de intrerupere de nivel 35 }
end.

1. Intreruperea interna de impartire prin 0.

IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-33
In acest caz, se pot efectua modificari minore in exemplul de mai sus, legate in esenta de
urmatoarele aspecte:
− intreruperea de impartire prin 0 genereaza intrerupere pe nivel 0 al microprocesorului
(aceeaºi intrerupere este generata ºi daca, in urma unei impartiri, rezultatul acesteia nu
poate fi reprezentat pe precizia cu care s-a efectuat operatia). Astfel, secvente de genul:

MOV AX, 2000
MOV BL, 2
DIV BL
sau
MOV AX, 10
MOV BL, 0
DIV BL

vor genera aceasta intrerupere. In programul de mai sus, se pot efectua urmatoarele
modificari:
− se elimina toate secventele referitoare la utilizarea circuitului de ceas;
− se modifica nivelul de intrerupere de la 35h, la 0h (peste tot unde este cazul);
− in rutina de tratare a intreruperii, se poate da un mesaj specific ºi seta un indicator de
eroare;
− se inlocuieºte secventa de instructiuni dintre liniile {>>>>>} ºi {<<<<<}, cu o bucla in
care, de exemplu, se citesc de la tastatura 2 numere (unul de tip integer, celalalt shortint),
care apoi se impart; rezultatul (shortint) se afiºeaza. Secventa de calcul se poate scrie in
assembler. Utilizand cazuri care genereaza intrerupere de nivel 0, se poate verifica
programul.
− daca nu apare eroare (se testeaza indicatorul de eroare), se tipareºte rezultatul; altfel, un
mesaj de eroare.

{--------------------------------------}
{ Test 1: intreruperi interne }
{ Programul trateaza intreruperea 0 }

uses Dos;

const
Eroare : Boolean = FALSE;
N1: Integer = 0;

var
Int0Save : Pointer;
N2: Shortint;
N3: Shortint;
{--------------------------------------}
{$F+}
{ Procedura de intrerupere de nivel 0H }
procedure Intrerupere0; interrupt;
begin
Write('Intrerupere 0H! Eroare la impartire !');
ReadLn;
Eroare := TRUE;
BAZELE MICROPROCESOARELOR
5-34
end;
{$F-}

begin
{-------------------------------}
{ Program principal }
{-------------------------------}
{ Initializare vector de intreruperi pt. nivelul 0 }
GetIntVec($0,Int0Save); { Salvare vechiul vector de intreruperi }
SetIntVec($0,Addr(Intrerupere0)); { Setare noul vector de intreruperi }
{-------------------------------}
while (n1 <> -1) do
begin
Write('Introduceti n1:');
ReadLn(n1);
Write('Introduceti n2:');
ReadLn(n2);

asm
MOV AX, N1
MOV BL, N2
DIV BL
MOV N3, AL
end;

if Eroare then
begin
WriteLn('Rezultat = INFINIT');
Eroare := FALSE;
end
else WriteLn('Rezultat =',n3);
end;
{--------------------------------}
SetIntVec($0,Int0Save); { Refacere vector de intrerupere de nivel 0 }

end.

2. Intreruperea interna de depaºire (overflow).

Se trateaza similar cazului de mai sus, cu urmatoarele mentiuni suplimentare:
− nivelul intreruperii este 4;
− intreruperea este generata la aparitia unei depaºiri de calcul ºi testata automat intr-o
secventa de genul:

MOV BL, N2
ADD AL, BL
INTO ; daca a aparut overflow, va genera INT 4
MOV N3, AL

Se prezinta in continuare programul:

{--------------------------------------}
IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-35
{ Test 1: intreruperi interne }
{ Programul trateaza intreruperea 4 - Overflow }

uses Dos;

const
Eroare : Boolean = FALSE;
N1: ShortInt = 0;

var
Int4Save : Pointer;
N2: ShortInt;
N3: ShortInt;
{--------------------------------------}
{$F+}
{ Procedura de intrerupere de nivel 4H }
procedure Intrerupere4; interrupt;
begin
Write('Intrerupere 4H! Depasire !');
ReadLn;
Eroare := TRUE;
end;
{$F-}

begin
{-------------------------------}
{ Program principal }
{-------------------------------}
{ Initializare vector de intreruperi pt. nivelul 4 }
GetIntVec($4,Int4Save); { Salvare vechiul vector de intreruperi }
SetIntVec($4,Addr(Intrerupere4)); { Setare noul vector de intreruperi }
{-------------------------------}
while (n1 <> -1) do
begin
Write('Introduceti n1:');
ReadLn(n1);
Write('Introduceti n2:');
ReadLn(n2);

asm
MOV AL, N1
MOV BL, N2
ADD AL, BL
INTO
MOV N3, AL
end;

if Eroare then
begin
WriteLn('Rezultat = DEPASIRE');
Eroare := FALSE;
end
else WriteLn('Rezultat =',n3);
end;
{--------------------------------}
BAZELE MICROPROCESOARELOR
5-36
SetIntVec($4,Int4Save); { Refacere vector de intrerupere de nivel 4 }

end.

3. Intreruperea externa de la circuitul de ceas 8254, contor

Se utilizeaza informatiile prezentate in lucrarea prezenta ºi in lucrarea “Porturi specializate.
Ceasuri programabile. Intrefete seriale”. Deoarece circuitele 8259A ale microcalculatorului
PC sunt deja programate, este necesar sa se utilizeze doar cuvintele de operare: OCW1 pentru
a se modifica masca intreruperii de nivel 0 a circuitului Master (v. Tabel 2) ºi OCW2 pentru a
se transmite comanda de sfarºit de intrerupere catre circuitul 8259A, la sfarºitul rutinei de
tratare a intreruperii respective. In aceste conditii, un posibil exemplu de program care
utilizeaza aceasta intrerupere este urmatorul (programul permite citirea de caractere de la
consola, iar in rutina de intrerupere, deoarece se poate programa o rata a intreruperilor de
minim 18,7 Hz, s-a programat o rata – mai exacta – de 25 Hz ºi, utilizand un contor software,
la 25 de intreruperi – o data pe secunda – se tipareºte un alt caracter, ‘X’) :

{------------------------------------------}
{ Test 3: intreruperi hardware }
{ Programul trateaza intreruperea de nivel 8.
Aceasta provine de la PIC0, IR0,
generata la aparitia unui semnal de la 8253, canal 0 }

uses Dos, Crt;
label
bucla;
const
NDATA = 46800; { val.pt. a obtine 25 Hz la ieºirea numaratorului 0 al 8253 }
contor : Integer = 0;
PIC_OCW1 = $20; { adresa 8259, OCW1 }
PIC_OCW2 = $21; { adresa 8259, OCW2 }
ch: char = 'a';

var
Int8Save : Pointer;
regs : Registers;
Mascve: ShortInt;
{-------------------------------}
{ Initializare ceas de timp real (NUM.0, 25 Hz la ieºire) }
procedure InitCeas0;
begin
asm
MOV AL, $36 { incarca AL cu cuvantul de comanda }
OUT $43, AL { transmite cuvantul de comanda la 8253 }
MOV AX, NDATA { incarca AX cu valoarea N }
OUT $40, AL { transmite low(N) la 8253, numaratorul 0 }
MOV AL, AH { transfera high(N) in AL }
OUT $40, AL { transmite high(N) la 8253, numaratorul 0 }
end;
end;

{--------------------------------------}
IMPLEMENTAREA INTERFETELOR DE INTRARE-IEªIRE
5-37
{$F+}
{ Procedura de intrerupere de nivel 8H (RTI 8H) }
{ Procedura este lansata de catre semnalul de la 8253, la fiecare 40 ms }
procedure Intrerupere8; interrupt;
begin
contor:=contor+1;
if (contor > 25) then
begin
{ odata pe secunda tipareºte 'X' }
write('X');
contor := 0;
end;

asm
MOV DX, $20 { adresa PIC-OCW1, pt. a da EOI }
MOV AL, $20 { in AL, cod EOI }
OUT DX, AL { se da EOI la PIC }
end;
end;
{$F-}

begin
{-------------------------------}
{ Program principal }
{-------------------------------}
{ Initializare vector de intreruperi pt. nivelul 8 }
GetIntVec($8,Int8Save); { Salvare vechiul vector de intreruperi }
SetIntVec($8,Addr(Intrerupere8)); { Setare noul vector de intreruperi }
{-------------------------------}
InitCeas0; { Initializare ºi start ceas 0 al 8253 }
{-------------------------------}
{ Initializare PIC }
asm
MOV DX, $21 { in DX, adresa OCW2 – Mask port }
IN AL, DX { citire masca intreruperi curente }
MOV MASCVE, AL { memorare masca veche }
AND AL, $FE { demascare bit 0, pt. IR0 }
OUT DX, AL { programare noua masca }
STI { activare intreruperi }
end;
{-------------------------------}
{ In aceasta bucla se citesc caractere de la tastatura }
{ La cate o secunda, rutina de intrerupere tipareºte caracterul "X" }
while (ch <> ' ') do { Se iese din program apasand "Spatiu" }
begin
if Keypressed then
begin
read(ch);
write(ch);
end;
end;
{--------------------------------}
{ refacere masca initiala PIC }
asm
MOV DX, $21 { in DX, adresa OCW2 – Mask port }
BAZELE MICROPROCESOARELOR
5-38
MOV AL, MASCVE { memorare masca veche }
OUT DX, AL { programare noua masca }
end;
{-------------------------------}
SetIntVec($8,Int8Save); { Refacere vector de intrerupere de nivel 8 }
end.








6 APLICATII ALE SISTEMELOR MICROPROCESOR


Capitolele precedente au incercat sa creeze o imagine cat mai precisa in ceea ce priveste
elementele componente definitorii ale sistemelor microprocesor, prezentarea caracteristicilor
lor functionale, a modului de implementare a structurilor hardware de principiu si a metodelor
de utilizare prin program a acestor resurse ale sistemelor respective. Prezentarea facuta in
capitolul 3 a avut ca principal scop familiarizarea cititorului cu toate aspectele de principiu
privind sistemele microprocesor. Capitolul 4 a concretizat studiul microprocesoarelor cu unul
dintre tipurile cele mai reprezentative pentru acestea — circuitul INTEL 8086 — oferind
detalii concrete referitoare la parametrii, arhitectura interna si externa a microsistemelor
realizate cu acest tip de circuit si a circuitelor aferente utilizate la constructia sistemelor
respective. In fine, capitolul 5 a prezentat principalele tipuri de porturi specializate si interfete
utilizate pentru conectarea diferitelor periferice uzuale folosite in sistemele microprocesor.

Se poate astfel considera ca, in acest stadiu al lucrarii, pe baza elementelor generale
prezentate, cititorul este in masura sa abordeze problematica realizarii in detaliu a unui
asemenea sistem, in vederea implementarii unor aplicatii industriale ce utilizeaza sistemul
microprocesor ca element central de comanda si control. Doar printr-o exemplificare concreta,
detaliata, a unor aplicatii reprezentative, se vor putea evidentia aspecte practice a caror
prezentare a fost uneori in mod voit evitata in prezentarea din capitolele precedente, cu scopul
de a oferi o abordare treptata, cu un grad din ce in ce mai mare de dificultate, a problematicii
conceperii, proiectarii si implementarii practice a acestor sisteme. Numeroase “mici” detalii, a
caror prezentare ar fi ingreunat urmarirea elementelor fundamentale ce erau descrise, vor
putea fi astfel evidentiate, cu scopul de a oferi cititorului nu doar un material de principiu, ci si
un punct de pornire pentru eventualii proiectanti ai acestor microcalculatoare. Totodata, chiar
si pentru categoria, probabil, mult mai larga, a viitorilor utilizatori ai unor structuri hardware
existente, pentru a implementa prin software aplicatii specifice exemplele urmatoare vor
constitui elemente foarte utile. Si aceasta, reamintim din nou, deoarece in cazul aplicatiilor
industriale ale sistemelor microprocesor legatura hardware-software este foarte stransa, iar o
aplicatie performanta nu se poate implementa decat prin cunoasterea temeinica a ambelor
laturi definitorii ale acestor sisteme.

Exemplul ce va fi prezentat in continuare a fost ales din gama, practic nelimitata, a aplicatiilor
ce pot fi concepute cu un sistem microprocesor, datorita unor caracteristici ce au fost
considerate reprezentative pentru scopul urmarit:

BAZELE MICROPROCESOARELOR

6-2
– aplicatia aleasa reprezinta o aplicatie de complexitate ridicata, justificand necesitatea
utilizarii unui sistem microprocesor performant pentru implementarea sa;
– structura hardware necesara acestei aplicatii contine, practic, toate tipurile de componente
reprezentative (memorie, porturi), utilizate in mai mica sau mai mare masura in majoritatea
aplicatiilor de proces ale sistemelor microprocesor;
– de asemenea, structura software necesar a fi implementata, de o complexitate relativ
ridicata, este reprezentativa pentru gama de componente definitorii ale programelor apli-
catiilor de acest fel;
– metodologia conceperii structurii sistemului, a configurarii hardware si software a acestuia,
sunt valabile pentru marea majoritate a aplicatiilor industriale ale sistemelor microprocesor.


Sistem pentru controlul numeric al pozitiei unei actionari electrice,
realizat cu microprocesorul 8086

Consideram urmatoarea tema de proiectare: Sa se implementeze un sistem de control
discret al unei actionari electrice cu motor de c.c.

Problema controlului discret al sistemelor de actionare electrica reprezinta o aplicatie de varf
pentru realizatorii acestor sisteme, datorita performantelor extrem de ridicate pe care trebuie
sa le aiba componentele utilizate: motoare cu caracteristici dinamice foarte ridicate (constante
de timp mecanice de ordinul milisecundelor), convertizoare de putere realizate uzual cu
tranzistoare (MOSFET sau bipolare), functionand la frecvente ridicate (zeci de kHz), senzori
si traductoare aferente si, in fine, sisteme de control suficient de puternice, cu facilitati de
calcul (viteza, precizie, set de instructiuni) si resurse (memorie, interfete) care sa permita con-
trolul in timp real al acestor componente electromecanice.

Din start trebuie precizat ca, pentru o asemenea aplicatie, pentru un sistem de actionare rapid,
va fi necesar un sistem de control realizat cu un microprocesor de 16 biti, de viteza suficient
de ridicata pentru a se putea implementa structura de control cu constante de timp de
esantionare de ordinul milisecundelor, sau chiar mai reduse. Microprocesorul 8086 poate
reprezenta o alternativa pentru implementarea acestor sisteme, alte solutii ce ar trebui
considerate fiind reprezentate de utilizarea unui microprocesor de prelucrare a semnalelor,
DSP, sau a unui microcontroler pe un cip, de 16 biti.

Deoarece implementarea inclusiv a buclei de curent in sistemul numeric nu poate fi asigurata
intr-un sistem cu microprocesor de tip 8086 (perioada de esantionare pentru aceasta bucla
poate ajunge pentru unele motoare chiar la ordinul zecilor de microsecunde), se va presupune
ca aceasta bucla este realizata in sistemul analogic, clasic. De altfel, aceasta abordare este mult
mai realista din punct de vedere al costului implicat (ar putea fi utilizat un microprocesor mult
mai rapid, dar la un pret mult sporit), cat si al faptului ca o bucla analogica de curent se poate
implementa relativ simplu si nu necesita o structura complexa a regulatorului, uzual o schema
de tip PI fiind suficienta in acest sens.

APLICATII ALE SISTEMELOR MICROPROCESOR
6-3
Astfel, sistemul numeric va putea implementa atat bucla de control al vitezei cat si cea de
control al pozitiei, cu avantajele cunoscute ale flexibilitatii, ale posibilitatii implementarii de
structuri adaptive, de proceduri de identificare a parametrilor sistemului si de auto-acordare a
schemei de reglaj etc.

Plecand de la enuntarea temei propuse, dupa cum s-a precizat si in capitolul 1 al acestei
lucrari, va trebui urmata o anumita metodologie pentru a se putea realiza o proiectare eficienta
si corecta a unui asemenea sistem. Principalele etape pe care le vom parcurge in paragrafele
urmatoare, pentru a configura sistemul de control dorit, vor fi:

(a) evaluarea performantelor impuse sistemului si, de aici, alegerea configuratiei acestuia;
(b) proiectarea schemei de control numeric;
(c) proiectarea structurii hardware a sistemului;
(d) proiectarea structurii software a sistemului;
(e) concluzii.

Prezentarea se va axa, in conformitate cu scopul acestei lucrari, cu prioritate pe evidentierea
aspectelor legate in mod direct de proiectarea sistemului microprocesor. Doar in masura in
care e necesara precizarea calitativa a unor aspecte legate de proiectarea sistemului in
ansamblu, se va face referire si la elemente definitorii legate de modelarea sistemului, la
aspectele teoretice ale proiectarii schemei de control numeric etc. Aceste elemente sunt, de
altfel, aprofundate in detaliu in lucrari dedicate studiului servomecanismelor, sau al teoriei
sistemelor si a reglajului automat (v. bibliografia).

6.1 PERFORMANTELE IMPUSE SISTEMULUI DE CONTROL NUMERIC.
ALEGEREA CONFIGURATIEI SISTEMULUI.

Pornind de la performantele impuse de catre utilizator pentru aplicatia ce se va implementa, se
va putea decide tipul componentelor si evalua caracteristicile acestora pentru sistemul de
control numeric propus. In esenta, utilizatorul va impune, pornind de la specificatiile
sistemului existent pe de o parte, si de la specificatiile sistemului final, controlat, pe de alta
parte, doua categorii de caracteristici ce vor sta la baza configurarii intregului sistem:

− caracteristici globale initiale (tipul si parametrii sarcinii, tipul si parametrii traiectoriilor
de miscare etc.);
− caracteristicile globale finale (performante si parametri ai sistemului de reglare:
comportare dinamica, precizie, robustete etc.).

Pe baza specificarii acestor elemente definitorii, se va putea defini tipul si specifica parametrii
de baza ai diverselor componente din sistem, ajungand, in final, la alegerea corecta a acestora.

Figura 6.1 prezinta o posibila schema de principiu a structurii decizionale continand
principalele aspecte ce trebuiesc studiate, in vederea unei abordari corecte si complete a
acestei problematici.

BAZELE MICROPROCESOARELOR

6-4
Caracteristici globale, initiale
Caracteristici (performante) fi nale
Sarcina Cicluri miscare Performante
regim dinamic
Precizie sistem
reglat
Viteza de lucru
a sistemului
de cont rol
Precizia
traductoarelor
Ω, ϑ, I, ...
Precizie de
calcul
Alegerea componentelor de
forta (motor, amplificator,
transmisie)
Alegerea tipului
schemei de reglaj
Alegerea
traductoarelor
Alegerea
microprocesorului
Obt inerea
modelului
sistemului
Discretizarea modelului.
Proiectarea controlerului discret
Configurarea hardware a
sistemului microprocesor
(memorie, interfete)
Implementare
software

Figura 6.1. Diagrama decizionala pentru configurarea si proiectarea
sistemului de control al unei actionari electrice
Dupa cum se poate remarca din figura, se includ in categoria caracteristicilor globale, initiale
ale sistemului, parametrii si specificatiile ce definesc sarcina si ciclurile de miscare ce vor
trebui sa fie efectuate de catre sistem.

6.1.1 Sarcina

Sarcina este impusa de aplicatia propriu-zisa, iar utilizatorul trebuie sa aiba specificati toti
parametrii de baza, definitorii, ai acesteia:

– tipul de miscare a sarcinii: rotativa sau liniara;

– parametrii statici de baza :
- momentul de inertie total al sarcinii, J
s
;
APLICATII ALE SISTEMELOR MICROPROCESOR
6-5
− cuplul de frecari statice, M
s
(pentru sarcini rotative), respectiv forta de frecari
statice, Ff
s
(pentru sarcini liniare);
− coeficientul de frecari vascoase, F
s
.

– componentele dinamice ale cuplului (ale fortei - in cazul miscarii liniare) de sarcina:
− componenta dependenta de timp: M
s
(t) in cazul miscarii rotative, respectiv F
s
(t) in
cazul miscarii liniare;
− componenta dependenta de viteza: M
s
(Ω) in cazul miscarii rotative, respectiv F
s
(v)
in cazul miscarii liniare;
− componenta dependenta de pozitie: M
s
(ϑ) in cazul miscarii rotative, respectiv F
s
(x)
in cazul miscarii liniare

– parametrii limita de miscare:
− acceleratia maxima a sarcinii: ε
smax
in cazul miscarii rotative, respectiv a
smax
in
cazul miscarii liniare;
− viteza maxima a sarcinii: Ω
smax
in cazul miscarii rotative, respectiv v
smax
in cazul
miscarii liniare;
− viteza minima a sarcinii: Ω
smin
in cazul miscarii rotative, respectiv v
smin
in cazul
miscarii liniare

6.1.2 Ciclul de miscare

Ciclul de miscare este impus de asemenea de catre aplicatia ce se va implementa. Legat de
ciclul de miscare, trebuiesc precizate tipul serviciului de functionare al sarcinii, eventual
forma semnalului de referinta de pozitie, cat si durata acestuia. Eventuala utilizare a
profilelor de viteza va trebui, de asemenea, sa fie specificata.


Dupa cum se poate remarca din figura 6.1, se includ in categoria caracteristicilor globale
finale ale sistemului parametrii si specificatiile ce definesc performantele de regim dinamic
si precizia sistemului reglat ce vor trebui sa fie asigurate de catre sistem.

6.1.3 Performantele de regim dinamic

Aceste performante vor fi impuse de catre utilizator, fiind obtinute pe baza unor considerente
legate de caracteristicile si cerintele sistemului reglat. Ele sunt uzual impuse, pentru un anumit
tip de semnal de referinta, de genul treapta, rampa sau sinusoidal. Astfel, se vor specifica
urmatorii parametri:

− timpul tranzitoriu t
tranzit
, al raspunsului sistemului, sau pulsatia proprie a sistemului
reglat, ω
n
;
− suprareglajul raspunsului sistemului, σ, sau factorul de amortizare, ξ;
BAZELE MICROPROCESOARELOR

6-6

6.1.4 Precizia sistemului reglat

Precizia sistemului reglat este, de asemenea, o caracteristica importanta, impusa de catre
utilizator, si reprezinta unul dintre parametrii de performanta de baza ce trebuie asigurati de
sistemul de control.
Principalii parametri ce trebuiesc specificati in aceasta categorie vor fi:

− gama de variatie a marimii de iesire (pozitie): [Θ
min
, Θ
max
] in cazul miscarii rotative,
respectiv [x
min
, x
max
] in cazul miscarii liniare;
− precizia cu care trebuie efectuata pozitionarea sarcinii: dΘ
min
in cazul miscarii rotative,
respectiv dx
min
in cazul miscarii liniare;

Pe baza acestor parametri se poate determina rezolutia sistemului reglat, deci acuratetea cu
care trebuie sa fie efectuata reglarea.

6.1.5 Viteza de lucru a sistemului de control

Aceasta caracteristica va rezulta in mod direct din performantele de regim dinamic impuse
sistemului. Acest parametru va fi direct corelat, deci va impune la randul sau perioada de
esantionare a buclei de reglare discrete si, indirect, va conditiona si frecventa de lucru a
microprocesorului. Uzual, pentru sistemele de pozitionare care sunt implementate cu control
discret al pozitiei (si al vitezei) si bucle analogice de control al curentului masinii electrice,
vor fi necesare perioade de esantionare de ordinul milisecundelor sau, eventual, inferioare
(sute de microsecunde) in cazul sistemelor cu constante de timp mecanice foarte reduse.

6.1.6 Precizia traductoarelor

Precizia traductoarelor din sistem va fi impusa, implicit, de precizia sistemului reglat. Astfel,
precizia traductorului de pozitie pentru o miscare rotativa va fi impusa de precizia de
pozitionare, dΘ
min
. In ceea ce priveste rezolutia interfetei de conversie analog-numerica a
pozitiei, aceasta se va calcula pe baza raportului dintre valoarea maxima a plajei de variatie a
pozitiei (Θ
max
- Θ
min
) si precizia de pozitionare, dΘ
min
, rotunjit superior la cea mai apropiata
putere a lui 2. Astfel, plaja de variatie a pozitiei convertite va fi (in biti) data de relatia:

plaja
biti_tp
= (Θ
max
- Θ
min
) / dΘ
min
(6.1)

iar rezolutia traductorului de pozitie va fi data de valoarea n
biti_tp
, care satisface relatia:

2
n
biti_tp-1
< plaja
biti_tp
≤ 2
n
biti_tp
(6.2)

APLICATII ALE SISTEMELOR MICROPROCESOR
6-7
Astfel, de exemplu, pentru o plaja de variatie a pozitiei de 360
o
si o precizie a pozitionarii de
30
o
, se obtine plaja
biti_tp
= 360/30 = 12 < 16 = 2
4
, deci n
biti_tp
= 4 biti; pentru o precizie a
pozitionarii de 1
o
, plaja
biti_tp
= 360/1 = 360 < 512 = 2
9
, iar n
biti_tp
= 9 biti.

6.1.7 Precizia de calcul

Precizia de calcul va fi de asemenea impusa implicit de precizia sistemului reglat. Astfel, se
poate evalua:
− acuratetea reprezentarii matematice utilizate (numarul de biti utilizat pentru memorarea
variabilelor si pentru efectuarea calculelor matematice);
− tipul reprezentarii matematice utilizate: numere intregi, in virgula fixa, sau in virgula
mobila.

Uzual, in cazul utilizarii numerelor intregi sau a celor in virgula fixa, acuratetea repre-
zentarilor numerice este de 16 biti. In cazul utilizarii numerelor in virgula mobila, acuratetea
reprezentarilor numerice este de 32 de biti (24 pentru mantisa si 8 pentru exponent). Daca
reprezentarea in numere intregi sau in virgula fixa are avantajul efectuarii operatiilor mai
rapid, posibil cu microprocesoare de performante mai putin elevate, principala problema in
acest caz, pentru implementarea algoritmilor de control, este data de necesitatea scalarilor si a
testarilor depasirilor ce pot aparea in cursul functionarii sistemului de control numeric.
Aceste operatii de scalare si tratare a depasirilor nu sunt deloc usor de implementat si
controlat, necesitand o analiza atenta si, uneori, simulari intensive ale functionarii sistemului,
pentru a asigura o functionare corecta a acestuia. Pe de alta parte, calculul in virgula mobila
elimina toate aceste inconveniente—cu pretul, deloc redus, al utilizarii unui microprocesor de
performante mult sporite (sau a unui co-procesor aritmetic, de tipul 8087)—ceea ce conduce,
evident, la cresterea costului sistemului, uneori peste limitele admisibile. Decizia solutiei
adoptate va depinde de specificatiile concrete ale aplicatiei respective.

6.1.8 Alegerea componentelor de forta

Alegerea componentelor de forta reprezinta o etapa ce poate fi solutionata pe baza datelor
furnizate din definirea sarcinii, respectiv a ciclului de miscare a acesteia. Principalele
componente ce vor putea fi definite in acest stadiu al proiectarii vor fi: motorul, amplifi-
catorul si elementele de transmisie din sistem.

• Motorul va fi dimensionat pe criterii energetice si din parametrii limita specificati ai
sarcinii si ai miscarii. Astfel, vor fi considerate puterea maxima solicitata motorului in
cursul miscarii, cuplul si turatia maxime, atat in regim permanent cat si in regim de scurta
durata. Eventuale calcule termice vor completa aceste evaluari. Pe aceste baze se va putea
alege dintr-un catalog de produse, sau se va putea elabora o tema de proiectare continand
caracteristicile ce trebuiesc a fi satisfacute de motor.

BAZELE MICROPROCESOARELOR

6-8
Pentru tema abordata, se considera ca se utilizeaza un servomotor de c.c. cu magneti
permanenti, ai carui parametri nominali de catalog vor fi cunoscuti, necesari la elaborarea
modelului sistemului si la proiectarea schemei de control discret a acestuia. Astfel,
principalii parametri necesari in acest caz vor fi: n
max
(turatia maxima), R
A
(rezistenta
rotorica), L
A
(inductivitatea rotorica), J
M
(momentul de inertie al motorului), T
A
(constanta
de timp electrica), T
em
(constanta de timp electromecanica), I
max
(curentul permanent
maxim), I
imp
(curentul impulsional), K
T
( constanta de cuplu).

In sistemele de actionare moderne, uzual servomotorul se realizeaza intr-o structura
modulara cu tahogenerator si frana electromagnetica incorporate. Considerand ca acesta
este si cazul exemplului ales, va mai fi definita odata cu motorul, ca parametru necesar, si
constanta tahogeneratorului, k
TG
. De asemenea, pentru frana electromagnetica va fi
necesara comanda acesteia, cu un semnal de tip binar (0/1, inchis/deschis), deci cu un bit al
unui port de iesire numerica al sistemului microprocesor. Cunoasterea parametrilor franei,
si anume tensiunea de alimentare U
f
, respectiv curentul absorbit de frana, I
f
, vor permite
dimensionarea elementului de comanda al acesteia (etajul de alimentare al franei, uzual
realizat cu un tranzistor de putere cu caracteristicile compatibile cu acesti parametri).

• Amplificatorul de putere, care va alimenta motorul, trebuie dimensionat la o putere si la
un curent furnizate cel putin egale cu cele solicitate de motor. Necesitatea de a implementa
o schema reversibila va impune folosirea unui convertizor, uzual implementat cu tran-
zistoare, cu functionare in 4 cadrane. Parametrii definitorii, in acest caz, vor fi valorile
maxime ale curentului in regim permanent, I
cmax
, tensiunii, U
cmax
, si curentului impulsional
I
camp
pe care convertizorul le poate furniza.

De asemenea, un parametru de interes va fi plaja tensiunii de comanda, U
c
, care va fi
furnizata de catre o iesire analogica (obtinuta prin utilizarea unui convertor D/A) a siste-
mului microprocesor. Uzual, plaja de valori pentru U
c
este de [-10, +10] V sau de [-5, +5]
V, compatibila cu iesirea tipurilor standard de convertoare D/A. Rezolutia convertorului
D/A utilizat va depinde de sensibilitatea amplificatorului. Uzual, o rezolutie de 10 sau 12
biti va fi necesara pentru a asigura o functionare corecta a sistemului. Presupunem ca,
pentru aplicatia propusa, s-a utilizat un convertor de 10 biti, ceea ce asigura o precizie de
sub 0.1 % pentru marimea de comanda a amplificatorului.

Uzual, amplificatoarele moderne sunt dotate cu anumite facilitati de diagnoza si comanda,
care vor putea fi conectate la sistemul digital, oferind avantajul de a se putea semnaliza in
mod automat, la aparitia unei avarii a amplificatorului, situatia existenta si localizarea
defectului (diagnoza), respectiv posibilitatea de a se comanda intr-o secventa automata
functionarea acestuia (comenzi).

Astfel, semnalizarile utilizabile pentru implementarea unor functii de diagnoza automata a
starii amplificatorului vor putea fi, in cazul exemplului abordat:
– indicator de functionare corecta a amplificatorului (OK general);
– indicatori de avarie:
- viteza limita depasita (Ω > Ω
max
);
APLICATII ALE SISTEMELOR MICROPROCESOR
6-9
- curent limita depasit (i > i
max
);
- temperatura limita depasita (t > t
max
);
- atingere limita cursa stanga de miscare;
- atingere limita cursa dreapta de miscare.

Aceste semnalizari vor fi implementate ca biti ai unui port de intrari numerice, fiecare cu
semnificatia indicata de numele semnalului, cu o conventie prestabilita a starilor (0 sau 1)
pentru fiecare semnal in parte, functie de schema implementata la nivelul amplificatorului
si de interfata utilizata pentru a citi aceste semnale de la amplificator.

Comenzile de la sistemul microprocesor catre amplificator vor fi, in cazul studiat:
- deblocarea franei electromagnetice;
- oprirea rapida a motorului;
- aprindere indicator OK;
- comanda contactor forta;
- aprindere bec eroare.

Aceste comenzi vor fi implementate ca biti ai unui port de iesiri numerice ale sistemului
microprocesor, fiecare cu semnificatia indicata de numele semnalului, cu o conventie
prestabilita a starilor (0 sau 1) pentru fiecare semnal in parte, functie de schema imple-
mentata la nivelul amplificatorului si de interfata utilizata pentru a genera aceste semnale
de comanda.

• Elementele de transmisie vor fi utilizate in vederea adaptarii caracteristicilor motorului cu
cele ale sarcinii (turatii, cupluri), si a tipului de miscare (rotativa, liniara). Parametrii
necesar a fi considerati vor fi puterea maxima, turatia maxima, inertia si randamentul
transmisiei. In principiu, acestia vor interveni in dimensionarea motorului prin modificarea
parametrilor echivalenti (moment de inertie, cuplu de sarcina echivalent) totali ai siste-
mului, raportati la axul motorului.

6.1.9 Alegerea traductoarelor

Pentru masurarea diferitelor marimi din sistemul de actionare, vor fi utilizate traductoare si
interfete specializate aferente, care vor permite achizitionarea acestor parametri de catre
sistemul microprocesor. Pentru aplicatia propusa, vor fi necesare doua traductoare:

• Traductorul de pozitie, pentru a furniza masura pozitiei sistemului de actionare (montat
pe motor sau/si pe sarcina). Uzual, o solutie ce ofera un raport avantajos pret/performanta
este oferit de utilizarea traductoarelor de tip encoder incremental. Acesta este un traductor
relativ, furnizand un numar specificat de impulsuri pentru o rotatie a axului sau. Acest
numar de impulsuri pe rotatie va reprezenta rezolutia traductorului, care poate fi considerat
ca un convertor analog/digital de pozitie. Astfel, pentru un numar de N impulsuri pe
rotatie, parametrii echivalenti ai traductorului de pozitie vor fi:

- plaja de variatie a marimii de iesire: N [biti];
BAZELE MICROPROCESOARELOR

6-10
- rezolutia traductorului: [log
2
N] [biti];
- precizia traductorului: 2π/N [rad/bit].

Deoarece encoderul nu furnizeaza o informatie de pozitie absoluta, va fi utilizata o interfata
specializata, in principiu un circuit de numarare, pentru a contoriza impulsurile furnizate de
encoder. Totodata, deoarece utilizarea unui singur tren de impulsuri nu permite decelarea
sensului de rotatie, encoderele furnizeaza 2 trenuri de impulsuri dreptunghiulare, decalate
la 90
0
unul fata de celalalt. Un circuit detector de sens poate fi proiectat pentru a putea, pe
baza sesizarii acestui defazaj (avans sau intarziere cu 90
0
a unui semnal fata de celalalt), sa
se determine incrementarea sau decrementarea informatiei de pozitie. Deoarece acest
traductor este un traductor relativ, care nu indica decat modificarile de pozitie fata de
pozitia initiala a sistemului, encoderele furnizeaza inca un semnal numeric, asa-numitul
semnal de zero al encoderului. Acest semnal devine activ (se emite un puls pe durata unui
pas de encoder), doar o data pe o rotatie si poate fi folosit pentru initializarea schemei dupa
punerea sub tensiune, pentru a se seta corespunzator o informatie de pozitie absoluta a
sistemului. Figura 6.2 prezinta forma semnalelor furnizate de encoder (A si B, cele doua
canale de masura; Z, canalul de pozitie initiala).

De remarcat, de asemenea, ca este posibila
utilizarea fiecaruia dintre fronturile cresca-
toare sau cazatoare ale semnalelor A si B ale
encoderului, ceea ce permite marirea de 4 ori
a preciziei encoderului, prin implementarea
unor scheme de decodificare adecvate,.

Astfel, pentru exemplul abordat se considera
ca se utilizeaza un encoder tipic cu un numar
de 1024 de pulsuri pe rotatie; encoderul poa-
te fi echivalat unui convertor A/D cu plaja de
variatie de 1024 biti/rotatie, rezolutia de
log
2
1024 = 10 biti si precizia de 360
0
/1024
≈ 0.3516
0
/bit. Utilizarea schemei de multi-
plicare cu 4 va creste rezolutia la 12 biti, iar precizia traductorului va ajunge la ≈ 0.088
0
/bit.

• Traductorul de viteza va furniza informatia de viteza a motorului; in cazul aplicatiei
propuse, s-a presupus deja ca se utilizeaza un tahogenerator de c.c. pentru a furniza
informatia de viteza necesara. Deoarece acest traductor furnizeaza o tensiune analogica la
iesirea sa, proportionala cu viteza motorului, va fi necesara utilizarea unui convertor A/D
pentru a obtine valoarea numerica a acestui semnal, utilizabila in sistemul microprocesor.
Din cunoasterea valorii constantei tahogeneratorului, k
TG
[V/rad/s], si a valorii maxime
admise a vitezei motorului, Ω
max
[rad/s], se poate determina valoarea maxima a tensiunii de
la iesirea tahogeneratorului pe care schema va trebui sa o masoare, U
TGmax
= k
TG
* Ω
max

[V]. Uzual, schema de conectare a iesirii tahogeneratorului la intrarea convertorului A/D va
trebui adaptata (prin utilizarea unui simplu divizor rezistiv), pentru a adapta plaja de
variatie a acestui semnal la plaja de valori acceptata de intrarea convertorului A/D (de
A
B
B
Z
(dreapt a)
(st inga)
1 pas

Figura 6.2 Semnalele generate la iesirea unui
encoder de pozitie
APLICATII ALE SISTEMELOR MICROPROCESOR
6-11
obicei, +/- 10 sau +/- 5 V). Rezolutia convertorului in aplicatiile de tipul celei studiate este
de 10 sau 12 biti, uzual. Presupunem ca o rezolutie de 10 biti a fost decisa pentru
masurarea vitezei sistemului, dedusa din valoarea vitezei minime pe care, prin tema de
proiectare, utilizatorul o impune pentru sistem.
6.1.10 Alegerea tipului de schema de reglare

Pentru implementarea unui sistem de pozitionare, exista mai multe structuri posibile,
diferentiate in functie de modul de realizare a controlului diferitelor variabile din sistem.
Astfel, se pot in general distinge urmatoarele posibilitati:

• realizarea unui sistem exclusiv discret de control, pentru care ansamblul amplificator-
motor-sarcina este condus in totalitate de sistemul numeric. Toate marimile de stare
(curent, viteza, pozitie) sunt controlate de microprocesor. Aceasta solutie prezinta deza-
vantajul de a necesita componente discrete foarte rapide (in primul rand, microprocesorul),
ceea ce conduce la sisteme foarte scumpe sau chiar, in unele cazuri, imposibil de realizat cu
microprocesoare de tip general.
• realizarea unui sistem partial discret de control, pentru care sistemul numeric controleaza
doar unele dintre variabilele de stare. Aceasta solutie ofera, pe de o parte, avantajul
utilizarii unor bucle de control analogice pentru controlul unora dintre variabilele de stare,
care au o variatie rapida, dar nu necesita implementarea unor bucle sofisticate de control —
de exemplu, bucla de curent. Pe de alta parte, sistemul numeric va realiza reglarea
numerica a celorlalte variabile de stare, ca viteza si pozitia, care nu au in mod uzual o dina-
mica atat de ridicata ca bucla
de curent, dar necesita
proceduri de reglare mai
sofisticate.
Aceasta a doua solutie este
preferabila pentru structura
propusa in exemplul abordat.
Figura 6.3 prezinta schema de
principiu a sistemului in acest
caz. Dupa cum se remarca,
bucla de reglare a curentului
este inchisa la nivelul amplifi-
catorului, iar buclele de viteza
si pozitie, la nivelul sistemu-
lui microprocesor.


6.1.11 Alegerea microprocesorului

Pe baza definirii caracteristicilor si a alegerii componentelor sistemului de pozitionare facute
in paragrafele precedente, se poate trece la etapa definirii performantelor necesare pentru
microprocesorul utilizat in sistemul de control. Pentru exemplul studiat, interfetele utilizate
Amplificator Motor
Sistem
microprocesor
U
A
* U
A
Θ*
m
s

Θ
i
A

Figura 6.3 Schema sistemului de reglare a pozitiei cu bucla locala
de curent si bucle digitale de viteza si pozitie
BAZELE MICROPROCESOARELOR

6-12
pentru traductoarele de viteza si pozitie, cat si interfata utilizata pentru generarea tensiunii de
comanda a amplificatorului au o rezolutie de peste 8 biti. Totodata, din estimarea preciziei de
calcul pentru implementarea procedurilor de control, se evidentiaza necesitatea utilizarii unei
reprezentari matematice pe mai mult de 8 biti. Astfel rezulta in mod implicit ca, pentru a se
putea implementa in mod eficient sistemul de control propus, va fi nevoie sa se utilizeze un
microprocesor de 16 biti. Totodata, considerand ca sistemul electromecanic motor-transmisie-
sarcina conduce la obtinerea unei constante de timp de ordinul 10 ms, conform teoremei
esantionarii a lui Shannon perioada minima de esantionare va trebui sa fie de 5 ms (frecventa
de esantionare trebuie sa fie de cel putin doua ori mai mare decat frecventa componentei de
frecventa maxima a semnalului esantionat). Din considerente practice, insa, se prefera
utilizarea unei perioade de esantionare de 5–10 ori mai mici — deci fie, in cazul nostru, h = 1
ms. Tinand cont ca, pentru a asigura obtinerea unor rezultate corecte prin schema de control
discret, este necesar ca durata intregului proces de achizitie de date, calcul si comanda a
amplificatorului sa nu depaseasca un procent de maxim 10–30% din perioada de esantionare
(altfel, trebuind sa se considere in etapa de proiectare a schemei de control discret si timpul
mort introdus de aceste intarzieri), deducem ca sistemul microprocesor va trebui sa realizeze
aceste operatii intr-un interval de timp de aproximativ 100–300 µs. Daca se face un calcul
estimativ, se poate deduce ca, pentru un microprocesor de tip 8086 functionand la o frecventa
de 8 MHz, durata medie a unei instructiuni este de 1 µs, deci ar fi necesar ca rutina de control
a sistemului sa fie implementata prin executia a 100–300 de instructiuni. Aceste valori pot, in
principiu, sa permita implementarea unei bucle de control, fara a avea insa facilitati deosebite
de genul control adaptiv, optimizari etc. Daca se doresc asemenea caracteristici pentru sistem,
va fi necesar sa se opteze pentru un sistem de performante superioare, solutia cea mai indicata
fiind, la ora actuala, utilizarea unui microprocesor de prelucrare a semnalelor, de tip DSP.

Considerand ca pentru aplicatia studiata se va implementa o schema de reglare cu parametri
constanti, fara facilitati de tipul celor sus-mentionate, putem conchide, din analiza de mai sus,
ca solutia optima performanta/pret pentru aceasta aplicatie va fi de a utiliza un microprocesor
de tipul INTEL 8086.

6.2 PROIECTAREA SCHEMEI DE CONTROL. ASPECTE DE PRINCIPIU.

Paragrafele precedente au indicat modul de alegere a componentelor sistemului de pozitionare
si au indicat criteriile esentiale in ceea ce priveste obtinerea parametrilor reprezentativi, din
punctul de vedere al interfatarii acestora cu sistemul de control discret. Odata stabilita
configuratia sistemului si alese componentele sale, se poate trece la etapa obtinerii modelului
sistemului controlat (ansamblul motor-amplificator-sarcina). Pe baza modelului obtinut si a
performantelor impuse sistemului controlat, se va putea alege structura si se vor putea calcula
parametrii schemei de control discret utilizate.

Din analiza metodelor de control ce pot fi implementate pentru sistemul de pozitionare, o
solutie ce ofera anumite avantaje in ceea ce priveste performantele obtinute si robustetea sche-
mei de control este cea a implementarii unei scheme de reglare cu reactie dupa stare, calculul
coeficientilor schemei de reglare fiind efectuat printr-o procedura de alocare a polilor.

APLICATII ALE SISTEMELOR MICROPROCESOR
6-13
6.2.1 Obtinerea modelului sistemului

In vederea implementarii, dupa cum s-a mentionat, a unei scheme de reglare cu reactie dupa
stare, pentru controlul pozitiei unui servomotor de c.c. este necesara obtinerea modelului de
stare al ansamblului amplificator-motor-sarcina.

Astfel, intr-o reprezentare avand ca variabile de stare curentul, viteza si pozitia motorului,
deci pentru care vectorul de stare este dat de relatia

x
i
A
·
¹
'
¹
¹
¹
¹
'
¹
¹
¹

Θ
, (6.3)

setul de ecuatii de stare al motorului si al sarcinii raportate la axul acestuia va fi:

i
J T
i L
u J m
A A A
A s

Θ
Τ Κ Φ
Κ Φ Ω
Θ
Α Ε Ε
Ε Ε

]
]
]
]
]
· −

]
]
]
]
]

]
]
]
]
]
+

]
]
]
]
]
⋅ +

]
]
]
]
]

1 0
1 0
0 1 0
1
0
0
0
1
0
/
/ /
/
/ (6.4)

unde J = momentul total de inertie raportat la axul motorului, T = constanta electromecanica
totala echivalenta a sistemului.

Pentru ansamblul amplificator-motor-sarcina insa, bucla de curent fiind incorporata in
structura analogica de reglare a amplificatorului, considerand ca marimea de comanda a
acestuia este curentul impus (deci, considerand ca se utilizeaza amplificatorul ca sursa de
curent a motorului), schema echivalenta a sistemului controlat devine cea din figura 6.4.

1
1
/ k
sT
Ti
I
+
1
1 F sT ( ) +
1
s
i
A
* i
A
m
k
- m
s
Σ
Ω Θ

Figura 6.4 Schema ansamblului amplificator de curent–motor–sarcina

Pentru aceasta schema, considerand neglijabila valoarea constantei de timp a amplificatorului
T
I
, (ipoteza valabila pentru cazurile practice), modelul de stare va fi dat de ecuatiile:


Θ

Θ
Τ

Τ

]
]
]
·

]
]
]

]
]
]
+

]
]
]
]
⋅ +

]
]
]
]

1 0
1 0
0
0
/
/
*
T
k
k k
J k i
k
J
m
T
T
TI A
T
s
(6.5)

unde s-au considerat parametrii echivalenti ai schemei, incluzand si constantele traductoarelor
pentru traductorul de viteza k
TΩ
= Ω
T
/Ω
max
(Ω
T
= iesirea tahogeneratorului), iar pentru bucla
de amplificare, k
TI
= I
Amax
/ I*
Amax
.
BAZELE MICROPROCESOARELOR

6-14

Asadar, setul de ecuatii de stare ale ansamblului amplificator-motor-sarcina poate fi repre-
zentat sub forma clasica a ecuatiilor de stare, de forma:

x A x b u e v
y c x
T
· ⋅ + ⋅ + ⋅
· ⋅
(6.6)

unde u ≡ i*
A
, v ≡ m
s
, c
T
= [0 1].

Modelul astfel obtinut va fi utilizat in continuare pentru obtinerea modelului discret al
sistemului si proiectarea controlerului cu reactie dupa stare.

6.2.2 Discretizarea modelului sistemului

In vederea discretizarii modelului continuu obtinut in paragraful anterior, este necesara
cunoasterea pasului de esantionare cu care va lucra sistemul de control digital. Valoarea
acestui parametru se obtine din performantele de regim dinamic impuse sistemului de
pozitionare prin tema de proiectare, urmandu-se in esenta o metodologie axata pe urmatoarele
considerente:

• se estimeaza timpul de crestere (timpul necesar pentru atingerea valorii 0.9 din valoarea
impusa pentru referinta), t
c
≈ T, constanta de timp principala a procesului controlat.
• se estimeaza timpul tranzitoriu (pentru atingerea benzii de +/-2% din valoarea de referinta),
cu relatia t
t
≈ 4 t
c
.
• utilizand factorul de amortizare ξ (ales, uzual, de o valoare apropiata de 0.7), se determina
pulsatia naturala a sistemului reglat, cu relatia Ω
n
≈ 4/ξt
t
.
• latimea de banda a sistemului se obtine din relatia Ω
b
= 4π/t
t
= π/T.
• pulsatia de esantionare se alege cu relatia Ω
s
≈ (5÷10)Ω
b
.
• pasul de esantionare rezulta: h = 2π/Ω
s
[s].

Astfel, se poate determina modelul discretizat al procesului, cu relatiile:

x
i+1
= A
d
x
i
+ b
d
u
i
+ e
d
v
i

y
i
= c
d
T
x
i
(6.7)

unde x
i
= vectorul de stare la momentul i de esantionare, u
i
= comanda la momentul i de
esantionare, iar matricele A
d
, b
d
, e
d
si c
d
T
sunt date de relatiile:

A e b e b d e e e d c c
d
Ah
d
A
h
d
A
h
d
T T
· · ∫ ⋅ ⋅ · ∫ ⋅ ⋅ , , , =
τ τ
τ τ
0 0
(6.8)

De remarcat totodata ca, pe baza performantelor de regim dinamic impuse sistemului si pe
baza pasului de discretizare, se vor putea determina si polii sistemului, atat in planul s cat si in
planul z. Astfel:
APLICATII ALE SISTEMELOR MICROPROCESOR
6-15

• se determina polii principali ai sistemului reglat in planul s:
s j
n n 1 2
2
1
,
· − ⋅ t ⋅ ⋅ − ξ ω ω ξ
• restul polilor se aloca uzual pe axa reala negativa, la distante de (5÷10) ori partea reala a
polilor s
1,2
.
• se calculeaza polii in planul z, cu relatia z e
k
s
k
h
·

.

6.2.3 Proiectarea controlerului discret

Pe baza cunoasterii modelului sistemului, se poate
trece la etapa proiectarii controlerului discret cu
reactie dupa stare. Schema de principiu a unui
asemenea controler este prezentata in figura 6.6.
Marimea de comanda a sistemului, u (iesirea
controlerului) va fi calculata pe baza unei relatii de
forma:

u = f
T
x (6.9)

deci reprezinta o combinatie liniara a componentelor vectorului de stare al sistemului,
coeficientii f
T
reprezentand ponderile diverselor componente ale vectorului de stare x la
calculul marimii u. La vectorul de stare al sistemului, mai trebuie adaugat si efectul tipului de
variatie in timp al semnalului de referinta, conform principiului “modelului intern” al
compensatorului. Astfel, pentru o referinta de tip treapta, schema de principiu a sistemului de
reglare va deveni cea din figura 6.6. Dupa cum se poate remarca din figura, la vectorul de
stare x se va adauga o variabila de stare suplimentara, ζ, care nu reprezinta altceva decat
integrala marimii de eroare, ε. Astfel, la ecuatiile de stare ale sistemului se va adauga si
ecuatia suplimentara:

ζ
i+1
= ζ
i
+ ε
I
(6.10)

deci ordinul n al sistemului de ecuatii de
stare va creste cu o unitate, capatand
valoarea n
e
= n + 1. In consecinta, sistemul
(6.7) de ecuatii de stare capata forma extinsa
(6.11):



x
i+1
e
= A
de
x
ie
+ b
de
u
i
+ e
de
v
i

y
ie
= c
de
T
x
i
e

u
i
= f
de
T
x
i
e
(6.11)

unde
Hc(z)
y*
-y
Σ
ε
y
x
u

Figura 6.5 Schema de principiu a unui
regulator dupa stare
Hc(z)
x
u
y*
-y
ε
y
Σ
1
1 z −
ζ

Figura 6.6 Structura de principiu a regulatorului
dupa stare in cazul referintei treapta
BAZELE MICROPROCESOARELOR

6-16

[ ] 0 ,
0
,
0
,
1
0
,
T
d
T
de
d
de
d
de T
d
d
de
i
i e
i
c c
e
e
b
b
c
A
A
x
x ·
]
]
]

·
]
]
]

·
]
]
]

·
]
]
]

·
ζ
(6.12)


Coeficientii de comanda f
de
T
vor fi calculati prin rescrierea sistemului (6.11)

x
i+1
e
= (A
de
+ b
de
f
de
T
) x
i
e
+ e
de
v
i

y
ie
= c
de
T
x
i
e
(6.13)

Daca Λ
e
= { z
1
, z
2
, ..., z
ne
} reprezinta multimea polilor complecsi obtinuti prin impunerea
performantelor dinamice, prin efectuarea unei proceduri de alocare a polilor se asigura satis-
facerea relatiei

σ(A
de
+ b
de
f
de
T
) = Λ
e
(6.14)

de unde rezulta coeficientii f
de
T
. Astfel, se vor obtine termenii vectorului f
de
T
= [ f
1
, f
2
, f
3
], iar
comanda u
i
se va obtine din relatia

u
i
= f
1

i
+ f
2
Θ
i
+ f
3
ζ
i
(6.15)

Figura 6.7 prezinta schema sistemului de reglare in acest caz, indicand atat structura
sistemului reglat, cat si structura regulatorului dupa stare implementat in sistemul
microprocesor.

Dupa cum se remarca din relatiile prezentate si din schema din figura 6.7, calculul marimii de
comanda a amplificatorului se bazeaza pe o combinatie liniara a marimilor de stare (viteza,
pozitia si integrala erorii de pozitie).

EOZ
(CN/A)
H(z)
sistem
x
i+1
= A
d
x
i
+ b
d
u
i
+ e
d
v
i
y
i+1
= c
d
T
x
i
f
d
T
ζ
i+1
= ζ
i
+ ε
i ϕ
Σ Σ
(CA/N)
y*
y
i
*
*
ε
i
y
i y
(CA/N)
h
h
x
i
+
+
y
u
v(z)
u
ζ

Figura 6.7 Schema de implementare a sistemului de reglare discreta dupa stare,
APLICATII ALE SISTEMELOR MICROPROCESOR
6-17
pentru semnal de referinta treapta

Implementarea practica a algoritmului de control discret se va prefera insa sub urmatoarea
forma, care asigura o mai mare protectie impotriva eventualelor depasiri de calcul:

• se masoara variabilele de stare din sistem la momentul i: viteza Ω
i
si pozitia, Θ
i
.
• se calculeaza eroarea de pozitie la momentul i: ε
i
= Θ*
i
- Θ
i

• se calculeaza variatia pozitiei fata de momentul i-1: δΘ
i
= Θ
i
- Θ
i-1

• se calculeaza variatia vitezei fata de momentul i-1: δΩ
i
= Ω
i
- Ω
i-1

• se calculeaza comanda la momentul i: u
i
= u
i-1
+ f
1
δΩ
i
+ f
2
δΘ
i
+ f
3
ε
i



6.3 PROIECTAREA STRUCTURII HARDWARE A SISTEMULUI

Paragrafele precedente au permis definirea tuturor cerintelor aplicatiei si definirea compo-
nentelor utilizate pentru a se configura intregul sistem de pozitionare. Pe baza cunoasterii
performantelor cerute sistemului de control numeric, a evaluarii capacitatii de calcul si a
vitezei acestuia, s-au putut indica tipul si caracteristicile definitorii ale microprocesorului ce
trebuie folosit si se poate estima necesarul de memorie program si de date pentru
implementarea aplicatiei propuse. De asemenea, pe baza cunoasterii structurii partii de forta, a
interfetelor ce trebuiesc realizate pentru achizitia de date din sistem, comanda elementului de
executie, si elementele de diagnoza, si estimand elementele de interfatare cu utilizatorul
sistemului de comanda, se vor putea estima si principalele cerinte in ceea ce priveste necesarul
si tipul interfetelor de intrare si de iesire ale sistemului.

Odata specificat in intregime necesarul de resurse ale sistemului microprocesor, se va putea
incepe proiectarea propriu-zisa a structurii hardware a acestuia.

Vom trece la evaluarea acestui necesar de resurse, in ceea ce priveste structura aleasa pentru
sistemul microprocesor, memoria PROM si RAM, cat si interfetele de intrare si de iesire.

Vom considera ca se utilizeaza un microprocesor de tip INTEL 8086, functionand la o
frecventa de 24 Mhz, configurat in modul minim (deci intr-o structura uniprocesor), asadar
generand direct semnalele de control, fara a necesita utilizarea unui circuit controler de
magistrala, de tip INTEL 8288. Pentru furnizarea semnalului de ceas CLK si a semnalelor
READY si RESET, se utilizeaza circuitul specializat INTEL 8284 (v.cap.4). Conexiunile
microprocesorului la circuitul de ceas (8284), circuitele latch pentru memorarea adreselor
(8282) si circuitele tampon pentru magistrala de date (8286) sunt prezentate in schema de
conexiuni din figura 6.8. Bitii magistralelor de adrese (A19–A0) si ai celei de date (D15÷D0),
cat si semnalele de control generate de microprocesor, vor fi utilizate pentru conectarea cu
toate resursele sistemului (memorii si porturi).

In ceea ce priveste necesarul de memorie PROM, in care se va stoca programul ce
controleaza sistemul, evaluarea acestuia se va face pe baza experientei prealabile a
BAZELE MICROPROCESOARELOR

6-18
proiectantului, combinata cu eventuala evaluare bazata pe scrierea si executia pe un sistem de
dezvoltare a principalelor module ale programului. Totodata, nu trebuie uitat ca, data fiind
insasi “filosofia” proiectarii acestor sisteme, vor trebui estimate si lasate rezerve de memorie
pentru eventuale dezvoltari ulterioare ale sistemului, adaugari de noi functii etc. Dupa cum s-a
mentionat in cateva randuri deja, aceste modificari vor implica, in cele mai multe cazuri,
modificarea sau adaugarea de noi parti de program.

Bazat pe aceste elemente, pentru aplicatia propusa si in ideea lasarii unei rezerve pentru
extinderea programului la functii suplimentare care nu vor fi incluse in versiunea ce se va
prezenta aici, se poate estima ca o cantitate de 16 ko de memorie PROM va fi suficienta.
Consideram ca se utilizeaza circuite de tipul 2716, cu o capacitate de 2k x 8 pe cip. Asadar,
necesarul de memorie PROM va fi asigurat cu un numar de 8 cipuri.

Din considerente similare, necesarul de memorie RAM este estimat la 4 ko. Consideram ca se
utilizeaza circuite de tip 2114, cu o capacitate de 1k x 4 pe cip, deci vor fi necesare 8 cipuri de
acest tip.

• In ceea ce priveste porturile sistemului, vor fi necesare:

– porturi de intrare:
- 1 port: interfata traductorului de pozitie - encoder / circuite de numarare (10 biti);
- 1 port: interfata traductorului de viteza - tahogenerator / convertor A/D (10 biti);
- 1 port: semnalizari generale (16 biti);
- 1 port: tastatura locala - linii tastatura (16 biti);

– porturi de iesire:
- 1 port : comanda amplificatorului de curent - convertor D/A (10 biti);
- 1 port : tastatura locala - selectii coloane taste (16 biti);
- 1 port : comenzi digitale generale (16 biti);
- 2 porturi : afisaj local (4 cifre a 8 segmente fiecare) (2x16 biti).

– porturi speciale:
- circuit de ceas programabil INTEL 8253;
- controler de intreruperi INTEL 8259A.

Presupunem urmatoarea localizare a resurselor sistemului:

− memoria PROM, in ultimii 16 ko de memorie ai sistemului: zona de adrese (0FC000h ÷ ÷
0FFFFFh);
− memoria RAM, in primii 4 ko de memorie ai sistemului: zona de adrese (0h ÷ ÷ 0FFFh);
− porturile I/O: incepand de la adresa 300h (compatibile cu adresele rezervate pentru
interfete utilizator in calculatoarele PC).

In continuare, se vor prezenta considerentele de proiectare, tabelele de decodificare si
schemele de implementare pentru toate resursele sistemului microprocesor, atat memorie cat
si porturi.
APLICATII ALE SISTEMELOR MICROPROCESOR
6-19
1
2
3
4
5
6
7
8
9 11
12
13
14
15
16
17
18
19
DI0
DI7
Do0
Do7
STBOE
8282
STBOE
8282
T OE
T OE
1
2
3
4
5
6
7
8 12
13
14
15
16
17
18
19
8286
8286
A7
A1
A0
B7
B0
B1
D15
A15
A8
A7
A0
D0
11 9
8086
AD1539
RESET
X1 X2
RES CLK
RESET
READY
PCLK AEN2
RDY2
AEN1
RDY1
C4M 4MHz
8 19
10 21
5 22
CLK
READY
AD14
AD13
AD12
AD11
AD10
AD9
AD8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
ALE
11
Vcc
24MHz
17 18
MEMRDY
4
3
6
7
IORDY
INTR INTR 18
17 NMI NMI
DEN DT/R
26 27
2
3
4
5
6
7
8
12
13
14
15
16
9
10
11
25
34
35
36
37
38
A19
A18
A17
A16
A19
A18
A17
A16
BHE
BHE
INTA
RD
WR
M/IO
INTA
RD
WR
M/IO
24
32
29
28
MN/MX
Vcc
33
8282
STB OE
1 2
7404
8284
D8
D7

Figura 6.8 Schema de conexiuni a microprocesorului 8086
BAZELE MICROPROCESOARELOR

6-20
6.3.1 Memoria PROM

Dupa cum s-a precizat deja, se va implementa un total de 16 ko memorie PROM, utilizand
circuite de tip 2716, cu o capacitate de 2k x 8 pe cip. Adresa de inceput a zonei de memorie
PROM este 0FC000h. Zona de memorie ocupata va fi, pana la sfarsitul memoriei micro-
procesorului, 0FFFFFh. Cipurile vor fi conectate astfel: 4 in blocul de memorie de la adrese
pare si 4 in blocul de memorie de la adrese impare. Avand o capacitate de 2 ko, cipurile au un
numar de 11 biti de adrese (2 k = 2048 = 2
11
), deci bitii de adrese A1–A11 vor fi conectati
direct pe cipuri. Bitul A0 si semnalul BHE vor fi folosite pentru selectia cipurilor de la adrese
pare, respectiv impare. Bitii de adrese superioare, A12–A19, vor fi utilizati pentru a obtine,
prin decodificare, semnalele de selectie de cip ale circuitelor (CS). Tabelul de decodificare 6.1
prezinta modul de obtinere a semnalelor de selectie de cip pentru toate memoriile PROM ale
schemei. Se remarca utilizarea, pentru generarea acestor selectii, si a semnalelor de control
M/IO si RD (validand selectia doar pentru operatii de citire din memorie). Circuitele PROM
sunt denotate P0 la P7, indicandu-se si zona de adrese ocupata de catre fiecare dintre ele.


Tabelul 6.1. Alocarea memoriei pentru selectia circuitelor PROM

Figura 6.9 prezinta modul detaliat de sinteza a semnalelor de selectie de cip a acestor circuite.
Se remarca utilizarea unui circuit NAND cu 8 intrari pentru a genera semnalul de selectie E
3

pentru decodificatorul 8205, bazat pe combinatia bitilor de adrese superioare A19÷A14 si a
semnalului M/IO. Aceste semnale vor valida operatiile de citire din pagina de memorie
ocupata de cipurile de memorie PROM, pentru care bitii de adrese vor avea valorile: A19 = 1,
A18 = 1, A17 = 1, A16 = 1, A15 = 1, A14 = 1, iar semnalul M/IO = 1 (conform tabelului 6.1,
pentru toate cipurile de memorie PROM, acestea sunt valorile semnalelor respective ce
valideaza selectia unuia dintre PROM-uri). Bitii de adresa A13 si A12 sunt apoi utilizati la
nivelul decodificatorului, pentru a genera 4 semnale de selectie, corespunzatoare uneia dintre
cele 4 pagini de cate 2 ko (1 k word) fiecare, in care se poate sub-imparti memoria PROM a
sistemului. In fine, utilizand semnalele A0 si BHE, se pot genera efectiv semnalele de selectie
de cip, pentru fiecare dintre cele 8 cipuri de memorie PROM, CSP0 la CSP7. A0 valideaza
generarea selectiilor de cip pentru cipurile de la adresele pare, iar BHEpentru cipurile de la
adresele impare (v. cap.4, pentru detalii relativ la mecanismul adresarii memoriei in sistemele
cu microprocesor 8086).
A
19

A
18

A
17

A
16

A
15

A
14

A
13

A
12

A
11


...

...
A
2

A
1

A
0

____
BHE
__
RD
__
M/IO
Port se-
lectat
P0-P7

Adrese

1

1

1

1

1

1

1

1

x

...

...

x

x

0

x

0

1
__
P6

FF000÷
FFFFE
(pare)

1

1

1

1

1

1

1

1

x

...

...

x

x

0

x

0

1
__
P7
FF001÷
FFFFF
(impare)

1

1

1

1

1

1

1

0

x

...

...

x

x

0

1
__ __
P4&P5
FE000÷
FEFFF

1

1

1

1

1

1

0

1

x

...

...

x

x

0

1
__ __
P2&P3
FD000÷
FDFFF

1

1

1

1

1

1

0

0

x

...

...

x

x

0

1
__ __
P0&P1
FC000÷FD
FFF
APLICATII ALE SISTEMELOR MICROPROCESOR
6-21
2
1
3
5
6
7
11
12
8
A1
A0
A2
E1
E2
E3
8205
o1
o2
o3
o0
o4
o5
o6
o7
A13
A12
1
2
3
4
5
6
7
9
10
11
12
13
14
15
3 4
PROMRDY
A19
A18
A17
A16
A15
A14
M/IO
+5V
7404
7430
7432
1
2
3
4
5
6
8
9
10
11
12
13
CSP0
CSP1
CSP6
CSP7
A0
BHE
s
s
s
s
FC001 FC000
FFFFF FFFFE
BHE=0 A0=0
P7 P6
P5 P4
P3 P2
P1 P0

Figura 6.9. Schema de decodificare pentru memoriile PROM

De remarcat, din figura 6.9, utilizarea semnalului de activare al decodificatorului 8205 si
pentru a genera semnalul PROMRDY, semnal care poate fi utilizat la generarea semnalului
READY al microprocesorului. Acest semnal poate fi utilizat pentru a genera READY ori de
cate ori va avea loc o operatie de selectie a memoriei PROM a sistemului, deoarece timpul de
acces la aceste circuite este suficient de redus (200 ns) pentru a nu necesita introducerea unor
perioade de asteptare in ciclul de acces la memoria respectiva. Utilizand chiar semnalul care
se genereaza la selectia oricareia dintre celulele din zona de adrese ocupata de memoria
PROM, se asigura generarea de PROMRDY doar pentru cazurile in care s-a generat o adresa
din aceasta zona de memorie. Daca, printr-o greseala de program, se solicita o operatie de
acces la o adresa de memorie din afara acestei zone, semnalul PROMRDY nu este generat,
deci microprocesorul nu primeste semnal activ READY. In consecinta, se intra in stare de
asteptare (WAIT), sistemul ramanand “blocat” in starea respectiva (cu bitii de adrese si
semnalele de control nemodificate). Aceasta stare de functionare anormala poate deci fi
detectata si, prin analiza semnalelor respective, utilizatorul poate detecta eroarea de program
respectiva. Tactica, utilizata uneori, de a genera semnal de READY in permanenta (ceea ce ar
simplifica intrucatva schema implementata) ar prezenta pericolul de a nu se detecta asemenea
erori decat foarte greu, datorita comportamentului foarte derutant al sistemului, in asemenea
configuratii, la aparitia erorii. Semnalul PROMRDY va fi combinat cu semnalele similare
generate la selectia celorlalte resurse ale sistemului (memorie RAM, porturi de intrare si de
iesire) pentru a genera semnalul global READY catre microprocesor. Astfel, se va asigura
generarea acestui semnal catre microprocesor doar daca una dintre resursele existente in
sistem a fost adresata. Orice alta selectie va implica intrarea sistemului in starea de asteptare
WAIT, permitand detectarea erorii respective.
In fine, figura 6.10 prezinta schemele de conexiuni ale cipurilor de memorie PROM ale
sistemului. Se remarca utilizarea bitilor de adrese A11÷A1 direct pe cip. Semnalul RD
permite deschiderea circuitelor tampon de pe iesirile de date ale cipurilor de PROM doar in
cazul operatiilor de citire, prin conectare la pinul de activare al acestor iesiri, OE. Iesirile de
date ale memoriilor sunt conectate pentru cipurile de la adresele pare (CSP0,CSP2,CSP4 si
CSP6) la bitii inferiori ai magistralei de date (D7 la D0), iar pentru cele de la adresele impare
(CSP1,CSP3,CSP5 si CSP7), la bitii superiori ai magistralei de date (D15 la D8).

BAZELE MICROPROCESOARELOR

6-22
8
7
6
5
4
3
2
1
23
22
19
A0
A10
CE
O7
2716
O0
OE
RD
O6
O5
O4
O3
O2
O1
A1
A2
A3
A4
A5
A6
A7
A8
A9
17
16
15
14
13
11
10
9
A10
A1
A2
A3
A4
A5
A6
A7
A8
A9
A11
D7
D0
D6
D5
D4
D2
D1
D3
CSP0
20
CE
CSP1
D15
D8
CE
CSP3
D15
D8
CE
CSP4
D15
D8
CE
CSP6
D7
D0
CE
CSP2
D7
D0
CE
CSP5
D7
D0
CE
CSP7
D15
D8
2716 2716 2716 2716 2716 2716 2716

Figura 6.10. Schema de conectare a circuitelor de memorie PROM

6.3.2 Memoria RAM

Dupa cum s-a precizat deja, se va implementa un total de 4 ko memorie RAM, utilizand
circuite de tip 2114, cu o capacitate de 1k x 4 pe cip. Adresa de inceput a zonei de memorie
RAM este 0h. Zona de memorie ocupata va fi, deci, pana la adresa 0FFFh. Cipurile vor fi
conectate astfel: 4 in blocul de memorie de la adrese pare si 4 in blocul de memorie de la
adrese impare — cate doua cipuri in paralel pentru a asigura selectii pe cuvinte de date de cate
8 biti fiecare. Avand o capacitate de 1 k x 4, cipurile au un numar de 10 biti de adrese (1 k =
1024 = 2
10
), deci bitii de adrese A1÷A10 vor fi conectati direct pe cipuri. Bitul A0 si
semnalul BHE vor fi folosite pentru selectia cipurilor de la adrese pare, respectiv impare. Bitii
de adrese superioare, A11÷A19, vor fi utilizati pentru a obtine, prin decodificare, semnalele
de selectie de cip ale circuitelor (CS). Tabelul de decodificare 6.2 prezinta modul de obtinere
a semnalelor de selectie de cip pentru toate memoriile RAM ale schemei. Se remarca
utilizarea, pentru generarea acestor selectii, si a semnalului de control M/IO (validand selectia
doar pentru operatii de acces la memorie). Semnalele de selectie a circuitelor RAM sunt
denotate CSR0 la CSR3, indicandu-se si zona de adrese ocupata de fiecare dintre ele.

Tabelul 6.2. Alocarea memoriei pentru selectia circuitelor RAM
A
19
A
18
A
17
A
16
A
15
A
14
A
13
A
12
A
11
A
10
... A
2
A
1
A
0
___
BHE
__
M/IO

SEL

Adrese

0

0

0

0

0

0

0

0

0

x

...

x

x

0

x

1
____
CSR0

0 -

x

0
____
CSR1
007FF

0

0

0

0

0

0

0

0

1

x

...

x

x

0

x

1
____
CSR2

00800 -

x

0
____
CSR3
00FFF

Figura 6.11 prezinta modul detaliat de sinteza a semnalelor de selectie de cip ale acestor
circuite. Se remarca utilizarea unui circuit NAND cu 8 intrari pentru a genera semnalul de
selectie globala a memoriei RAM, bazat pe combinatia bitilor de adrese superioare A19÷A12
APLICATII ALE SISTEMELOR MICROPROCESOR
6-23
si a semnalului M/IO. Aceste semnale vor valida operatiile de citire din pagina de memorie
ocupata de cipurile de memorie RAM pentru care bitii de adrese vor avea valorile: A19 = 0,
A18 = 0, A17 = 0, A16 = 0, A15 = 0, A14 = 0, A13 = 0, A12 = 0, iar semnalul M/IO = 1
(conform tabelului 6.2, pentru toate cipurile de memorie RAM, acestea sunt valorile
semnalelor respective ce valideaza selectia unei perechi de 2 dintre RAM-uri). Bitul de adresa
A11 este apoi utilizat pentru a genera 2 semnale de selectie, corespunzatoare uneia din cele
2 pagini de cate 2 ko (1 k word) fiecare, in care se poate subimparti memoria RAM a siste-
mului. In fine, utilizand semnalele A0 si BHE, se pot genera efectiv semnalele de selectie de
cip pentru fiecare din cele 8 cipuri de memorie RAM, CSR0 la CSR3. A0 valideaza generarea
selectiilor de cip pentru cipurile de la adresele pare, iar BHE pentru cipurile de la adresele
impare (v. cap. 4, pentru detalii relativ la mecanismul adresarii memoriei in sistemele cu
microprocesor 8086).

De remarcat, din figura 6.11, utilizarea semnalului de selectie a paginii de memorie RAM si
pentru a genera semnalul RAMRDY, semnal care este fi utilizat la generarea semnalului
READY al microprocesorului. Acest semnal este utilizat pentru a genera READY ori de cate
ori va avea loc o operatie de selectie a memoriei RAM a sistemului, deoarece timpul de acces
la aceste circuite este suficient de redus (300 ns) pentru a nu necesita introducerea unor
perioade de asteptare in ciclul de acces la memoria respectiva.

Semnalul RAMRDY este fi combinat cu semnalul PROMRDY, dupa cum se remarca din
figura, pentru a genera semnalul MEMRDY, indicand operatie valida cu memoria sistemului
(PROM sau RAM), in cazul in care s-a adresat o celula de memorie din zona de PROM sau
din cea de RAM a sistemului microprocesor. Acest semnal va fi utilizat la nivelul circuitului
8284 pe pinul RDY1, pentru a genera semnalul READY catre procesor.

A19
A18
A17
A16
A15
A14
7430
A13
A12
7432
CSR0
CSR1
CSR2
CSR3
7400
7408
M/IO
A0
BHE
A11
7432
PROMRDY
RAMRDY
MEMRDY

Figura 6.11. Schema de decodificare pentru memoriile RAM

In fine, figura 6.12 prezinta schemele de conexiuni ale cipurilor de memorie RAM ale
sistemului. Se remarca utilizarea bitilor de adrese A10÷A1 direct pe fiecare cip. Semnalul
BAZELE MICROPROCESOARELOR

6-24
WR valideaza operatiile de scriere in memorie, prin conectare la pinul de control de activare a
scrierii, WE. Iesirile de date ale memoriilor sunt conectate pentru cipurile de la adresele pare
(CSR0 si CSR2) la bitii inferiori ai magistralei de date (D7 la D0), iar pentru cele de la adre-
sele impare (CSR1 si CSR3), la bitii superiori ai magistralei de date (D15 la D8). Se remarca
utilizarea a cate 2 cipuri selectate simultan, pentru a putea genera cuvinte de date de cate 8
biti, datorita faptului ca cipurile de memorie RAM au cuvinte de date de cate 4 biti fiecare.

6.3.3 Porturile de intrare-iesire

Din analiza necesarului de porturi de intrare-iesire prezentata la inceputul paragrafului 6.3, se
poate alcatui tabela de selectie 6.3. Aceasta permite generarea a 8 grupe de selectie de cate 8
porturi fiecare, asigurand astfel o structura unitara pentru grupele de porturi existente in
sistem. Desi nu toate porturile astfel configurate sunt efectiv utilizate in implementarea
prezentata, se asigura omogenitatea schemei de decodificare, ceea ce reduce in mod simtitor
gradul de complexitate a schemei respective. Se vor considera doar porturi care se gasesc la
adrese pare, astfel se pot adresa atat porturi pe un octet, cat si porturi pe un cuvant de 16 biti,
utilizand aceleasi semnale de selectie. Bitii de adresa A1 si A2 vor putea fi folositi in
interiorul fiecareia din paginile de port astfel generate, pentru eventuale decodificari
ulterioare. Considerand adresa de baza a zonei de porturi 300h, selectiile paginilor de port
(semnalele P0÷P7) vor fi generate la aceleasi valori ale bitilor superiori de adrese (A15=0,
A14=0, A13=0, A12=0, A11=0, A10=0, A9=1, A8=1, A7=0, A6=0) si la operatii de selectie a
porturilor, M/IO=0. Bitii de adrese A5, A4 si A3 vor genera cele 8 combinatii corespunza-
toare celor 8 pagini de port configurate.
APLICATII ALE SISTEMELOR MICROPROCESOR
6-25
5
6
7
4
3
2
1
16
15
A0
CS
I/O1
2114
WE
WR
A1
A2
A3
A4
A5
A6
A7
A8
A9
14
13
12
11
A10
A1
A2
A3
A4
A5
A6
A7
A8
A9
D7
D0
D6
D5
D4
D2
D1
D3
CSR0
10
CS
CSR1
CS CS
D8
D11
(1Kx4)
2114
(1Kx4)
2114
(1Kx4)
2114
(1Kx4)
I/O2
I/O3
I/O4
14
13
12
11
D12
D15
D9
D10
D13
D14
17
8 8
CS
I/O1
2114
14
13
12
11 D7
D0
D6
D5
D4
D2
D1
D3
CSR2
CS
CSR3
CS CS
D8
D11
(1Kx4)
2114
(1Kx4)
2114
(1Kx4)
2114
(1Kx4)
I/O2
I/O3
I/O4
14
13
12
11
D12
D15
D9
D10
D13
D14
8 8

Figura 6.12. Schema de conectare a circuitelor de memorie RAM

Tabelul 6.3 prezinta si zonele de adrese ocupate de fiecare dintre cele 8 pagini de port.

Tabelul 6.3. Alocarea adreselor pentru selectia porturilor sistemului
A
15
A
14
A
13
A
12
A
11
A
10
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
__
M/IO

SE
L

Adrese

0

0

0
__
P0
300 -
307

0

0

1
__
P1
308 -
30F

0

1

0
__
P2
310 -
317

0

0

0

0

0

0

1

1

0

0

0

1

1

x

x

x

0
__
P3
318 -
31F

1

0

0
__
P4
320 -
327

1

0

1
__
P5
328 -
32F

1

1

0
__
P6
330 -
337

1

1

1
__
P7
338 -
33F

Figura 6.13 prezinta schema de implementare a adresarii globale a porturilor si de generare a
semnalelor P0÷P7 in conformitate cu continutul tabelei 6.3 si a considerentelor prezentate
BAZELE MICROPROCESOARELOR

6-26
mai sus. Se remarca utilizarea tuturor semnalelor de selectie ale circuitului decodificator 8205,
pentru a valida diversele combinatii de semnale necesare in acest scop. Totodata, similar
situatiei de la adresarea memoriilor, acelasi semnal care delimiteaza operatiile cu porturi din
pagina globala de 8 x 8 = 64 porturi configurata in sistem se utilizeaza si pentru generarea
unui semnal IORDY, indicand microprocesorului efectuarea unei operatii valide cu unul
dintre porturile definite ale sistemului. Acest semnal va fi utilizat la nivelul circuitului 8284
pe pinul RDY2, pentru a genera semnalul READY catre procesor.

6
2
3
4
5
11
12
8
A15
A14
A13
A12
A11
A10
7430
A8
A9
1
2
9
1
8
2
6
1
6
3
5
4
5 10 11 M/IO IO/M
A7
A6
A1
A0
A2
E1
E2
E3
8205
o1
o2
o3
o0
o4
o5
o6
o7
1
2
3
4
5
6
7
9
10
11
12
13
14
15
A0
A3
A4
A5
P0
P7
7402
1
2
3
IORDY
3 8
7410

Figura 6.13. Schema de decodificare pentru porturile de intrare-iesire

In paragrafele urmatoare se vor utiliza in mod diferentiat aceste semnale globale de selectie,
pentru a implementa in mod specific fiecare dintre porturile sistemului.

6.3.3.1 Interfata traductorului de pozitie

Traductorul de pozitie, encoder incremental cu 1024 de pulsuri pe tura, va trebui conectat la
microprocesor prin intermediul unei interfete dedicate, proiectata pentru a furniza, pe baza
pulsurilor de la encoder, informatia de pozitie a sistemului. Figura 6.14 prezinta o posibila
structura pentru a implementa aceasta interfata. Semnalele A si B furnizate de catre encoder
(v. par. 6.1.9 pentru detalii privind functionarea encoderului), sunt aplicate ca semnale de
intrare intr-un circuit care detecteaza sensul de miscare si apoi determina contorizarea
impulsurilor primite, pentru a stoca pozitia absoluta a masinii, pe o rotatie a acesteia.
Semnalul Z de la encoder este utilizat pentru a initializa cu 0 continutul numaratorului ce
contine informatia de pozitie. Acest numarator are 10 biti (corespunzator numarului de 1024
de pulsuri generate de catre encoder pentru o rotatie completa) si este reversibil. In functie de
sensul de deplasare (dreapta/stanga), continutul sau se va incrementa, respectiv decrementa.
Avand doar 10 biti, informatia de pozitie este absolut cunoscuta doar pentru o tura a axului
encoderului. Va fi necesar ca pentru deplasari mai mari de o rotatie sa se contorizeze numarul
de ture parcurse prin program, deci la nivel software. Din acest moment, in functie de tipul
variabilei utilizate in program pentru a memora numarul de ture efectuate, plaja de valori
APLICATII ALE SISTEMELOR MICROPROCESOR
6-27
absolute a pozitiei poate fi oricat de mare (de exemplu, pentru o variabila de tip intreg
reprezentata pe 16 biti, poate fi memorata o plaja de pozitii cuprinsa intre -32768 si 32767
ture).

Iesirile numaratorului vor fi conectate la intrarile unor circuite tampon de tip 8286 prin care
vor putea fi preluate, la o operatie de citire de la portul P0 (adresa 300h) pe magistrala de date
si transferate in microprocesor. Portul este configurat ca un port de 16 biti (cuvant), la o citire
transferandu-se informatie pe toti cei 16 biti ai magistralei de date a sistemului. Deoarece bitii
de date superiori (D10÷D15) nu contin informatie de pozitie provenind de la numarator, ei
sunt conectati la masa pentru ca marimea citita de la port sa fie corect interpretabila in
microprocesor, ca o marime pe 16 biti. De remarcat faptul ca circuitele 8286 au selectat doar
sensul de transferare a datelor de la pinii A catre pinii B, prin conectarea pinului T la nivel 1
logic (la +5 V). Activarea circuitelor tampon este facuta la aparitia semnalului de selectie P0,
simultan cu semnalul de citire, RD.

Asadar, prin program, aceasta interfata va fi utilizata astfel (port P0≡ ≡300h):

IN AX, 300h ; dupa executie, registrul AX contine informatia de pozitie

D0
D7
D8
D15
B0
B7
A0
A7
OE T
B0
B7
A0
A7
OE T
8286
8286
Vcc
Detector
sens +
Numarator
reversibil
(10 biti)
RES
A
B
Z
Encoder
10 Biti
P0
RD
7432
4
5
6

Figura 6.14. Schema interfetei traductorului de pozitie
6.3.3.2 Interfata traductorului de viteza

BAZELE MICROPROCESOARELOR

6-28
Traductorul de viteza utilizat in sistem — un tahogenerator de c.c. — va fi interfatat cu
sistemul microprocesor prin intermediul unui convertor A/D de 10 biti, dupa cum s-a precizat
in paragraful 6.1.9. Pentru aceasta, dupa cum se poate remarca din figura 6.15, s-a utilizat un
convertor analog/numeric pe 10 biti de tipul AD571, produs de catre firma Analog Devices.
Deoarece marimea aplicata la intrarea analogica AIn a circuitului AD571 poate avea o variatie
in plaja de (-10÷10) V, semnalul furnizat de tahogenerator va trebui eventual divizat in
prealabil printr-un divizor rezistiv, pentru a asigura respectarea acestei restrictii, in cazul
vitezei maxime a motorului — deci a tensiunii maxime furnizate de tahogenerator. Rezisten-
tele R
1
si R
2
vor fi determinate din urmatoarele relatii:

• curentul U
Tgmax
/(R
1
+R
2
) sa fie cel putin de 10 ori mai mare decat valoarea curentului
absorbit de intrarea convertorului A/D.
• R
2
/(R
1
+R
2
) ≤ 10/U
tgmax
, cu U
Tgmax
masurat in volti.

Pinul AnCom al convertorului se va conecta la masa partii analogice de masura a schemei.
Pinul DigCom se conecteaza la masa partii digitale a schemei. Pinul B&C trebuie utilizat
pentru a genera inceperea unei noi conversii (start conversie), la aparitia unui puls pozitiv pe
acest pin. Dupa cum se remarca din figura, acest puls va fi generat, in schema propusa, la
efectuarea unei operatii de output la portul P1 al sistemului (adresa 308h). Semnalul de
selectie a portului, P1, impreuna cu semnalul de scriere, WR, genereaza semnalul ITGWR
aplicat pe pinul B&C al convertorului A/D. Bitii de date de iesire ai convertorului (BIT1 la
BIT10) vor fi conectati la intrarile unor circuite tampon de tip 8286 prin care vor putea fi
preluate, la o operatie de citire de la portul P1 (adresa 308h) pe magistrala de date, si
transferate in microprocesor. Portul este configurat ca un port de 16 biti (cuvant), la o citire
transferandu-se informatie pe toti cei 16 biti ai magistralei de date a sistemului. De remarcat
utilizarea bitului D15 de date ca bit indicator de stare a conversiei, prin conectarea acestui bit
la iesirea DATA READY a convertorului A/D. Astfel, pe durata unei conversii A/D, acest
semnal are valoare logica 1, iar dupa incheierea conversiei, valoarea logica 0. Prin program,
utilizatorul va putea efectua operatii de citire de la portul P1 si, prin testarea bitului D15 de
date, va putea determina starea conversiei A/D. [Ca o remarca suplimentara, ceilalti biti de date
(D10÷D14) nu sunt utilizati si ar putea, in principiu, sa fie folositi ca biti de intrare de uz general.] De
remarcat faptul ca circuitele 8286 au selectat doar sensul de transferare a datelor de la pinii A
catre pinii B, prin conectarea pinului T la nivel 1 logic (la +5 V). Activarea circuitelor tampon
este facuta la aparitia semnalului de selectie P1, simultan cu semnalul de citire, RD (generand
semnalul ITGRD aplicat intrarilor OE ale circuitelor 8286).

Asadar, prin program, aceasta interfata va fi utilizata astfel (P1 ≡ ≡ 308h):

OUT 308h, AX ; determina startul conversiei A/D. Continutul registrului
; AX nu este utilizat pentru aceasta operatie, la nivelul portului;

IN AX, 308h ; prin izolarea bitului D15, se poate detecta starea conversiei A/D
; (1 = conversie in curs de desfasurare; 0 = conversie incheiata);

APLICATII ALE SISTEMELOR MICROPROCESOR
6-29
IN AX, 308h ; prin izolarea bitilor D0÷D9 se obtine informatia de viteza,
; convertita numeric de catre convertorul A/D.
; ATENTIE! Aceasta informatie va fi valida doar daca bitul de stare
; a conversiei, conectat la bitul D15 de date, are valoarea logica 0.
D0
D7
D8
D15
B0
B7
A0
A7
OE T
B0 A0
OE T
8286
8286
P1
RD
6
A1
D9
B1
Vcc
A7 B7
WR
6
ITGRD
ITGWR
17
9
8
7
6
5
4
3
2
1
18
(MSB)BIT1
AIn BIT2
BIT10
V+ V-
BIPOFF
DigCom
AnCom
B&C
TG
s
-15V +15V
DATA
READY
ITGWR
U
TG
R1
R2
t10V
11
13
14
15
16
AD571

Figura 6.15. Schema interfetei traductorului de viteza

6.3.3.3 Interfetele pentru semnalizari si comenzi (I/E generale)

Dupa cum s-a mentionat, s-a prevazut pentru sistemul microprocesor un numar de biti de uz
general pentru citirea de date numerice din proces (semnalizari diverse de la amplificator —
elemente de diagnoza, contacte limitatoare de cursa, butoane de comanda manual/automata
etc.) si pentru darea de comenzi numerice catre proces (comenzi catre amplificatorul de
putere, comenzi pentru actionarea elementelor de tip binar — contactoare, frana electromag-
netica etc.). Se poate considera ca un numar de 16 biti de intrare si 16 biti de iesire vor fi
suficienti pentru aceste porturi de I/E de uz general. Asadar, sunt necesare un port de intrare si
un port de iesire pentru acest scop. Figura 6.16 prezinta schema de implementare a acestor
porturi, realizata cu:

• circuite de tip 8286 pentru portul de intrare (circuite tampon izoland semnalele de intrare
de magistrala de date a sistemului). Sensul transferului de date prin aceste circuite fiind de
BAZELE MICROPROCESOARELOR

6-30
la intrarile A catre iesirile B, pinul de control al sensului transferului de date, T, este
conectat permanent la nivel logic “1”. Activarea circuitelor tampon se face prin pinul OE,
utilizand semnalul de selectie a portului P2 (adresa 310h), utilizat ca port de intrare—
impreuna cu semnalul RD. Evident, se utilizeaza 2 circuite 8286, conectate la bitii inferiori
D0÷D7, respectiv superiori D8÷D15, ai magistralei de date. Semnificatia fiecaruia dintre
semnalele SIG0 la SIG15, reprezentand cei 16 biti de date de intrare ai portului, va fi
definita in sectiunea de software a acestui capitol.

• circuite de tip 8282 pentru portul de iesire, pentru memorarea unor comenzi date de
microprocesor spre exterior. Iesirile acestor circuite sunt in permanenta activate (pinul OE
este conectat la masa), iar impulsul de memorare a datelor de pe magistrala de date este
sintetizat pe baza semnalului de selectie a portului P2 (adresa 310h), utilizat ca port de
iesire — impreuna cu semnalul WR . Sunt utilizate 2 circuite 8282 conectate la bitii
inferiori D0÷D7, respectiv superiori D8÷D15, ai magistralei de date. Semnificatia fiecaruia
dintre semnalele CMD0 la CMD15, reprezentand cei 16 biti de date de iesire ai portului, va
fi definita in sectiunea de software a acestui capitol.

Asadar, prin program, aceasta interfata va fi utilizata astfel (P2 ≡ ≡ 310h):

OUT 310h, AX ; port iesire; inscriere pe bitii de comanda CMD0÷CMD15 a
; continutului registrului AX (bitii D0÷D15)

IN AX, 310h ; port intrare; citire in registrul AX (bitii D0÷D15) a
; semnalelor SIG0÷SIG15

8286
A0
A1
A7
SIG0
SIG1
SIG7
B0
B1
B7
T OE
CMD0
CMD1
CMD7
Comenzi
8282
STB OE
8286
A0
A1
A7
SIG8
SIG9
SIG15
B0
B1
B7
T OE
CMD8
CMD9
CMD15
Comenzi
8282
STB OE
Intrari
din
proces
(semnalizari)
Vcc
P2
RD
P1
WR
D0 D7
D8 D15

Figura 6.16. Schema interfetei porturilor de I/E de uz general (semnalizari si comenzi digitale)

APLICATII ALE SISTEMELOR MICROPROCESOR
6-31


6.3.3.4 Interfata pentru generarea marimii de comanda analogica

Pentru generarea semnalului analogic aplicat ca semnal de comanda a amplificatorului de
forta al sistemului de pozitionare, este necesara o interfata ce contine un convertor digital/
analog. Acesta va avea o rezolutie de 10 biti, conform celor prezentate in paragraful 6.1.8, la
alegerea amplificatorului. Figura 6.17 prezinta schema de implementare a interfetei respective.
Se considera ca interfata este configurata ca portul P0 de iesire (adresa 300h). Semnalul de
selectie al acestui port, P0, este utilizat impreuna cu semnalul de scriere, WR, pentru a genera
impulsul de memorare a datelor de pe magistrala de date a sistemului microprocesor, in
circuitele de tip latch 8282 (prin conectare la pinul STB al acestor circuite). Iesirile acestor
circuite, permanent activate (pinul OE conectat la masa), sunt aplicate — primii 10 biti, la
intrarile de date ale unui convertor D/A de 10 biti, de tip AD7520, de productie Analog
Devices. In ceea ce priveste conectarea celorlalti pini ai acestui circuit, de mentionat ca,
deoarece iesirea convertorului este o iesire in curent, se utilizeaza un convertor curent–
tensiune implementat cu ajutorul unui amplificator operational, dupa cum se poate vedea din
schema prezentata. Pentru detalii asupra conectarii si utilizarii circuitului AD7520, a se
consulta catalogul firmei Analog Devices. Iesirea analogica astfel obtinuta, denotata An.Out,
va putea fi aplicata la intrarea de comanda a amplificatorului de curent al sistemului de
pozitionare si va reprezenta valoarea impusa curentului prin motor, calculata in sistemul
microprocesor, in bucla de control discret dupa stare. Ca o remarca suplimentara, deoarece
bitii superiori de date (6 biti ai celui de-al doilea circuit 8282) nu sunt utilizati pentru
convertorul D/A, in principiu, acesti biti ar putea fi folositi ca biti de uz general de iesire.
Totodata, in cazul in care s-ar considera necesara utilizarea unui convertor D/A de rezolutie
mai mare, se poate inlocui convertorul, fara a necesita modificari pe partea de interfata cu
magistrala sistemului.

Asadar, prin program, aceasta interfata va fi utilizata astfel (P0 ≡ ≡ 300h):

OUT 300h, AX ; port iesire; informatia din bitii D0÷D9 este convertita la
; nivelul convertorului D/A in informatie analogica

BAZELE MICROPROCESOARELOR

6-32
DAD0
DAD1
8282
STB OE
DAD8
DAD9
8282
STB OE
P0
WR
DAD7
D0
D1
D7
D8
D9
A0
A1
A7
A0
A1 B9(MSB)
B8
B7
B1
B0(LSB)
RFB
OUT1
OUT2
GND
+15V
VREF
AD7520
4
5
6
12
13
βM108
5K
AnOut
(±5V)
10K
15
1
2
3
+15V
+5V
4
5
10

Figura 6.17. Schema interfetei pentru generarea marimii de comanda analogica
6.3.3.5 Interfata pentru tastatura

Consideram ca, pentru a permite utilizatorului sa genereze unele comenzi locale, este necesara
utilizarea unei tastaturi si a unui afisaj cu structuri simple, dar suficiente pentru a ilustra
principiul implementarii unor asemenea interfete. Pentru configuratii mai sofisticate, se vor
utiliza circuite specializate (de exemplu circuitul 8257), sau chiar se va considera conectarea
sistemului microprocesor la un monitor (tastatura-display), prin interfete specializate de tip
serial sau module video dedicate.

Pentru tastatura, se va implementa o structura continand un numar de 32 de taste. Schema de
implementare a interfetei este prezentata in figura 6.18. In esenta, se realizeaza o structura
matriceala, avand 2 linii si 16 coloane, cele 32 de taste (denotate K
00
la K
0F
pe prima linie si
K
10
la K
1F
pe a doua linie) fiind conectate in nodurile acestei retele matriceale. Coloanele sunt
conectate prin niste rezistente la nivel logic “1”, pe de o parte, si la magistrala de date a
sistemului— prin intermediul unor circuite tampon, pe de alta parte. Selectia uneia dintre
liniile structurii (cel mult una dintre cele doua linii de taste poate fi selectata la un moment
dat) se face prin trecerea liniei respective la nivel logic “0”. In consecinta, nivelul logic al
semnalelor de pe cele 16 coloane va corespunde starii tastei de la intersectia coloanei
respective cu linia selectata la acel moment: daca tasta nu este apasata, nivelul logic este “1”,
iar daca tasta este apasata, nivelul logic este “0”. Daca se apasa o tasta de pe aceeasi coloana,
dar de pe o linie neselectata, nivelul logic de pe coloana respectiva nu este influentat.

Pentru a implementa structura propusa, sunt necesare 2 porturi de intrare. Bazat pe semnalul
de selectie de port P3 (zona de adrese 318h÷31Fh), schema utilizeaza bitul de adresa A2
pentru a diferentia cele 2 porturi. Astfel, selectia celor doua linii de taste se va face generand
semnalele de selectie de linie 0 - Sel. Linia0 (portul de intrare de la adresa 318h), respectiv de
linie 1 - Sel. Linia1 (portul de intrare de la adresa 31Ch). Se utilizeaza semnalele P3, RD si
bitul de adresa A2, respectiv negatul sau, A2 . Concomitent cu generarea unuia din cele doua
semnale de selectie de linie, se vor deschide circuitele tampon 8286 (prin activarea pinului
OE al acestora) si nivelurile logice ale celor 16 coloane ale structurii matriceale a retelei de
taste vor fi transmise pe magistrala de date a sistemului microprocesor. In consecinta, prin
APLICATII ALE SISTEMELOR MICROPROCESOR
6-33
instructiuni de citire de la porturile de la adresele 308h, respectiv 31Ch, se obtine informatia
de pozitie a primelor, respectiv a urmatoarelor 16 taste.

Asadar, prin program, aceasta interfata va fi utilizata astfel (P3 ≡ ≡ 318h):

IN AX, 318h ; selecteaza linia 0 de taste si transfera in registrul AX
; pozitia acestora: 1= tasta neapasata; 0 = tasta apasata

IN AX, 31Ch ; selecteaza linia 1 de taste si transfera in registrul AX
; pozitia acestora: 1= tasta neapasata; 0 = tasta apasata

Figura 6.18. Schema interfetei pentru tastatura
6.3.3.6 Interfata pentru afisaj

Pentru a permite afisarea locala a unor informatii privind functionarea sistemului de
pozitionare, afisarea si, eventual, modificarea unor parametri ai schemei de control si a
parametrilor de miscare (referinta), se prevede in schema, alaturi de tastatura prezentata in
paragraful precedent, un afisaj realizat cu 4 cifre a cate 8 segmente fiecare. Figura 6.19
prezinta schema de implementare a acestei scheme. Se utilizeaza un numar de doua porturi de
iesire configurate in zona de adrese ale portului P3 (318h÷31Fh). Bitul de adresa A2 este
utilizat pentru a selectiona cele doua porturi la adresa 318h, respectiv 31Ch. Se utilizeaza
semnalele P3, WR si bitul de adresa A2, respectiv negatul, sau A2 . Cele doua porturi sunt
implementate utilizand cate doua circuite de tip latch 8282. Semnalele de selectie a porturilor
sunt aplicate pe pinii STB de inscriere a informatiei de pe magistrala de date a sistemului
microprocesor in aceste circuite. La iesirea circuitelor 8282 se conecteaza cate un element de
afisaj cu segmente de tip LED. Cei 8 biti de date de iesire sunt asociati celor 8 segmente ale
unei cifre, in conformitate cu structura urmatoare:

B7 B0
DP g f e d c b a

P3
RD
K00 K01 K0F
K10 K11 K1F
Vcc
T
OE
T
OE
A0 A7
B0 B7
A0
A7
B0 B7
D0 D7 D8 D15
SelLinie 0
SelLinie 1
Vcc
8286 8286
decod.
linii

BAZELE MICROPROCESOARELOR

6-34
S-au considerat segmentele afisajului cu anod comun, ceea ce implica conectarea acestora in
schema conform figurii 6.19. Valoarea logica “1” pe o iesire a circuitelor 8282 implica
segment stins, iar valoarea logica “0” implica segment aprins.

Rezistentele conectate in serie cu fiecare segment se dimensioneaza din urmatoarele
considerente:
- caderea de tensiune pe un segment in starea aprins este de aproximativ 2 V;
- curentul prin segment trebuie sa fie suficient de mare pentru a asigura o luminozitate
satisfacatoare a acestuia, uzual 7÷15 mA. Aceasta implica R ≤ (5-2) V/ /0.007A ≈430 Ω.
- curentul la iesirile circuitelor 8282 la nivel logic “0” nu trebuie sa depaseasca limita
de catalog admisa, 30 mA, iar curentul prin segmente nu trebuie sa depaseasca limita admisa
pentru acestea, 20 mA. Dimensionand R pentru a se asigura respectarea limitei minime de 20
mA, se obtine R ≥ (5-2)V/0.02A = 150 Ω.

Uzual, o valoare convenabila pentru R este 300 Ω.

In partea de software se vor include subrutine speciale de afisare a cifrelor si a unor caractere
ce se pot configura pe afisaje de acest tip. Pentru fiecare cifra sau caracter afisabil, trebuie
definita prin tabelare combinatia de biti corespunzand segmentelor cifrei care asigura aparitia
simbolului cifrei sau a caracterului respectiv pe afisajul cu segmente.

Asadar, prin program, aceasta interfata va fi utilizata astfel (P3 ≡ ≡ 318h):

OUT AX, 318h ; bitii D0÷D7 sunt utilizati pentru selectia segmentelor cifrei 0
; bitii D8÷D15 sunt utilizati pentru selectia segmentelor cifrei 1
; 1 = segment stins; 0 = segment aprins

OUT AX, 31Ch ; bitii D0÷D7 sunt utilizati pentru selectia segmentelor cifrei 2
; bitii D8÷D15 sunt utilizati pentru selectia segmentelor cifrei 3
; 1 = segment stins; 0 = segment aprins
APLICATII ALE SISTEMELOR MICROPROCESOR
6-35

Figura 6.19. Schema interfetei pentru afisaj

6.3.3.7 Interfata ceasului de timp real

Pentru a putea implementa o structura de control discret, este necesara executia procedurii de
control la intervale de timp egale cu pasul de esantionare al procedurii de control (1 ms, in
cazul aplicatiei studiate). In acest sens, este necesara utilizarea unui mod de masurare a
acestor intervale de timp, operatie efectuata in mod uzual prin utilizarea unui ceas de timp real
care, la sfarsitul fiecarui pas de esantionare, este utilizat pentru a furniza un semnal de
intrerupere catre microprocesor. O posibilitate ar fi de a utiliza un circuit de numarare cu
structura data, furnizand un semnal de frecventa fixa. Pentru a avea insa o schema flexibila,
este preferabila utilizarea unui circuit de numarare programabil. Acesta va furniza semnale
periodice cu frecventa programabila intr-o anumita gama de valori, ceea ce permite modifica-
rea usoara a perioadei de esantionare, prin simpla modificare a secventei de programare a
circuitului respectiv.

Pentru sistemul studiat, se propune utilizarea unui circuit de ceas programabil de tipul INTEL
8253, circuit care contine un numar de 3 numaratoare de cate 16 biti fiecare, programabile in
mai multe moduri, putand deci diviza un semnal de ceas de intrare aplicat fiecaruia dintre cele
3 numaratoare, cu o valoare numerica cuprinsa intre 2 si 65536. Figura 6.20 prezinta structura
interfetei realizate in acest scop. Circuitul 8253 utilizeaza intern un numar de 4 porturi, astfel
ca s-a utilizat pentru selectia circuitului semnalul de selectie de port P0 ca semnal de selectie
de cip, CS. Bitii de adresa A1 si A2 au fost conectati direct pe cip, respectiv la semnalele A0
si A1 ale acestuia. Semnalul C4M de la iesirea circuitului 8284 de ceas al sistemului este
DAD0
DAD1
8282
STB OE
DAD8
DAD9
8282
STB
OE
P3
WR
DAD7
D0
D1
D7
D8
D9
A0
A1
A7
A0
A1
A2
a b c d e f g DP+5V
DAD15
DAD0
DAD1
8282
STB OE
DAD8
DAD9
8282
STB
OE
DAD7
D0
D1
D7
D8
D9
A0
A1
A7
A0
A1
DAD15
cifra 0
cifra 1
cifra 2
cifra 3

BAZELE MICROPROCESOARELOR

6-36
divizat intr-un numarator de tip 7493, pentru a fi aplicat la intrarea de ceas CLK0 a circuitului
8253, deoarece ca data de catalog acest circuit accepta un semnal de frecventa maxima 2 MHz
pentru acest semnal. Prin programarea circuitului, frecventa semnalului de iesire CLKTIM0
de la pinul OUT0 al circuitului 8253 poate fi deci situata in gama de minim 31 Hz si maxim
1 MHz, deci cu perioada cuprinsa intre 1 µs si aproximativ 30 ms. Validarea permanenta a
numararii este asigurata prin conectarea semnalului GATE0 la nivel logic “1”. Celelalte doua
numaratoare ale circuitului 8253 sunt neutilizate in structura propusa, ramanand ca resurse ale
sistemului utilizabile ulterior. Pentru detalii referitoare la structura interna si la modul de
programare a circuitului 8253, a se consulta documentatia de firma referitoare la acest circuit.

Asadar, prin program, aceasta interfata va fi utilizata astfel (P4 ≡ ≡ 320h):

- la adresa 320h: port date / stare contor 0
- la adresa 322h: port date / stare contor 1
- la adresa 324h: port date / stare contor 2
- la adresa 326h: port control circuit 8253

1
2
3
4
5
6
7
8
9
10
11
13
14
15
16
17
18
19
20
21
22
23
Gate1 D7
D0
D1
D2
D3
D4
D5
D6 OUT1
CLK1
Gate0
OUT0
CLK0
Gate2
OUT2
CLK2
RD
WR
CS
A1
A0
8253
D7
D0
D1
D2
D3
D4
D5
D6
RD
WR
P4
A2
A1
CLKTIM0
12 A
(2MHz) (4MHz)
INA 14
7493
C4M


Figura 6.20. Schema interfetei pentru ceasul de timp real

6.3.3.8 Interfata controlerului de intreruperi

Pentru a gestiona intreruperile externe microprocesorului prin semnalul INTR, este necesara
utilizarea unui controler de intreruperi de tip 8259A (vezi cap. 4, pentru detalii referitoare la
structura, functiile si modul de programare si utilizare ale acestui circuit). Figura 6.21 prezinta
schema de conexiuni a unui asemenea circuit utilizat in sistemul microprocesor propus. Bitii
de date ai circuitului se leaga la bitii de date D0÷D7 ai magistralei de date, selectia de cip este
asigurata de semnalul de selectie a portului P5 si, din motive didactice, se presupune ca
semnalul furnizat de circuitul de ceas de timp real 8253, CLKTIM0 (v. par. 6.3.3.9) este
aplicat la intrarea IR3 a circuitului 8259A, pentru a furniza intreruperea de timp real la
terminarea fiecarei perioade de esantionare si a determina apelarea rutinei de control discret al
APLICATII ALE SISTEMELOR MICROPROCESOR
6-37
sistemului de pozitionare. Sectiunea de software va prezenta modul de utilizare prin program
a acestei structuri. Circuitul 8259A functioneaza ca circuit master unic (se utilizeaza un singur
controler de intreruperi), deci pinul SP/EN este conectat la nivel logic “1”, iar pinii
CAS0÷CAS2 sunt neutilizati. Iesirea INT a circuitului se conecteaza la intrarea INTR a
microprocesorului 8086, iar intrarea INTA la iesirea cu acelasi nume a microprocesorului.
Bitul de adresa A1 este utilizat la nivelul cipului 8259A, pe intrarea A0 a acestuia. Tot din
motive didactice, se presupune ca semnalul care indica functionarea corecta a
amplificatorului, OKconvertizor , este conectat la pinul de intrerupere nemascabila a micro-
procesorului, NMI.
1
2
3
4
5
6
7
8
9
10
11
13 12 15 16
18
19
20
21
22
23
27
24
25
26
17
D7
D0
D1
D2
D3
D4
D5
D6
RD
WR
CS
A0
INT
INTA
SP/EN CAS0–2
IR7
IR6
IR5
IR4
IR3
IR2
IR1
IR0
INTA
INTR
CLKTIM0
D7
D0
D1
D2
D3
D4
D5
D6
A1
8259A
~ ~ ~
Vcc

Figura 6.21. Schema interfetei pentru controlerul de intreruperi

Asadar, prin program, aceasta interfata va fi utilizata astfel (P5 ≡ ≡ 328h):

- la adresa 328h: port cuvinte initializare 8259A
- la adresa 32Ch: port cuvinte de operare 8259A
(vezi documentatia de firma referitoare la circuitul 8259A, pentru detalii).

6.4 PROIECTAREA STRUCTURII SOFTWARE A SISTEMULUI

In paragraful 6.3 s-a realizat proiectarea structurii hardware a sistemului microprocesor care
implementeaza controlul discret al actionarii electrice de c.c. S-au configurat circuitele, s-au
definit zonele de adrese si modul de interconectare al tuturor componentelor sistemului micro-
procesor. In continuare, se poate trece la specificarea unor elemente suplimentare legate de
implementarea programului microprocesorului, urmata de elaborarea programului propriu-zis.

Trebuie precizat de la inceput ca programul ce va fi prezentat in continuare este o versiune
minimala, necesara pentru a implementa functiile esentiale ale aplicatiei studiate. Bazate pe
aceeasi structura hardware, se pot imagina programe mai complexe, cu functii si facilitati
suplimentare.
BAZELE MICROPROCESOARELOR

6-38

6.4.1 Specificatiile de programare ale resurselor sistemului

In continuare, reluam specificatiile fiecareia dintre resursele sistemului, importante din punct
de vedere al programului: adrese, semnificatia bitilor interfetelor sistemului etc.

• Memoria PROM

Ocupa zona de adrese
(0FC000h÷ ÷0FFFFFh). La adresa
0FFFF0h trebuie plasata prima
instructiune din program (executata
dupa initializarea microprocesorului,
prin aplicarea semnalului de RESET).
Programul propriu-zis va fi plasat de la
startul memoriei PROM, de la adresa
0FC000h. Memoria PROM va fi
structurata ca in figura 6.22.




• Memoria RAM

Ocupa zona de adrese
(0h÷ ÷0FFFh). La adresa 8h se va plasa
vectorul de intrerupere pentru tratarea
intreruperii nemascabile NMI.
Consideram ca adresa de baza pentru
vectorii de intrerupere externa este
80h. Aceasta adresa va fi utilizata la
programarea circuitului controler de
intreruperi 8259A. Intreruperea de la
ceasul de timp real fiind conectata la
intrarea IR3 a acestui circuit, adresa la
care trebuie plasat vectorul de in-
trerupere asociat acestui nivel de
intrerupere va fi 8Ch. Variabilele
generale ale programului vor fi am-
plasate incepand cu adresa 100h. Stiva
programului va fi amplasata la
sfarsitul zonei de memorie RAM, de
la adresa 0FFFh inspre adrese mici.

0C000h
0FFFF0h
0FFFFFh
prima instructiune
programul
propriu-zis

Figura 6. 22. Organizarea memoriei PROM
adresa
8
80h
8Ch
100h
vectori
intreruperi
externe
vector
intrerupere
NMI
variabile
generale
NMI
IR3
baza 8259A
stiva
programului 0FFFh

Figura 6.23. Structura memoriei RAM
APLICATII ALE SISTEMELOR MICROPROCESOR
6-39

• Interfata traductorului de pozitie

Port de intrare, la adresa 300h. Informatia de pozitie este citita pe bitii (D0÷ ÷D9) de date.


• Interfata traductorului de viteza

Port de iesire, la adresa 308h. Start conversie A/D. Bitii de date neutilizati.

Port de intrare, la adresa 308h :

Bitul D15 indica starea conversiei : D15=1 conversie neterminata
D15 = 0 conversie terminata
Bitii D0÷ ÷D9 contin data convertita, daca conversia s-a incheiat (D15=0)


• Semnalizari generale

Port de intrare, la adresa 310h. Se presupune urmatoarea semnificatie a bitilor de date:

bit bit
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OK general [1]
I limitare [1]
Rotor blocat [1]
Eroare tacho [1]
Lim. cursa stanga [1]
Lim. cursa dreapta[1]

Intre paranteze s-a indicat valoarea logica pentru care semnalul este activ. Se remarca faptul
ca bitii de date D6÷ ÷D15 nu sunt utilizati in structura actuala, ei putand fi conectati la alte
semnalizari, definite ulterior, si tratati in mod corespunzator in program.


• Comenzi generale

Port de iesire, la adresa 310h. Se considera urmatoarea semnificatie a bitilor de date:

bit bit
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0


BAZELE MICROPROCESOARELOR

6-40
Deblocare frana [1]
Franare rapida [1]
Bec OK [1]
Contactor forta [1]
Bec eroare [1]

Intre paranteze s-a indicat valoarea logica pentru care semnalul este activ. Se remarca faptul
ca bitii de date D5÷ ÷D15 nu sunt utilizati in structura actuala, ei putand fi conectati la alte
comenzi, definite ulterior, si tratati in mod corespunzator in program.


• Afisaj cu 4 cifre

2 porturi de iesire la adresele 318h si 31Ch. Se considera urmatoarea structurare a informatiei:
C3 C2 C1 C0
High Low High Low
port 318h port 31Ch
a
b
c
d
e
f
g
DP
DP g f e d c b a
b7 b0 b6 b5 b4 b3 b2 b1


Cele 4 cifre sunt grupate cate doua pentru fiecare port, iar bitii asociati fiecarei cifre sunt
corelati, conform figurii prezentate, cu segmentele acesteia. Dupa cum s-a mentionat deja,
valoarea 0 a unui bit va implica aprinderea segmentului asociat acestuia.


• Tastatura

Port de intrare, la adresa de baza 318h. Se considera urmatoarea semnificatie a bitilor de date:

- linia 0 de taste (taste de comanda) (port intrare, adresa 318h):

Set Go Stop
bit 0 bit 1 bit 2 bit 3 ...


Tasta va fi utilizata pentru a seta pozitia finala a miscarii.

Tasta va fi utilizata pentru a comanda inceperea miscarii

Tasta va fi utilizata pentru a opri miscarea

Celelalte taste ale liniei 0 nu sunt utilizate in structura actuala a programului, deci pot primi
semnificatia dorita pentru dezvoltari ulterioare si adaugari de functii noi.


Set
Go
Stop
APLICATII ALE SISTEMELOR MICROPROCESOR
6-41

- linia 1 de taste (taste numerice, numerotare hexazecimala) (port intrare, adresa 31Ch):

2 1 0
bit 0 bit 1 bit 2 bit 3
3 4 5 6 7
bit 4 bit 5 bit 6 bit 7
A 9 8
bit 8 bit 9 bit 10 bit 11
B C D E F
bit 12 bit 13 bit 14 bit 15



• Comanda D/A

Port de iesire, la adresa 300h. Bitii D0÷ ÷D9 trebuie sa contina informatia, in cod complemen-
tar fata de 2, a marimii digitale a comenzii (bit D9 ≡ bit de semn).


• Porturi specializate

Se utilizeaza un controler de intreruperi 8259A, cu adresa de baza 320h (porturi localizate
doar la adrese pare) si un ceas de timp real 8253, cu adresa de baza 328h (porturi localizate
doar la adrese pare).

Considerand perioada de esantionare T = 1ms, rezulta cuanta de divizare a ceasului de timp
real (frecventa de intrare, 2 MHz) de N = 2000.

6.4.2 Organizarea programului

Dupa cum s-a mai mentionat deja, programul va avea o structura de baza simplificata. In
esenta, s-a urmarit implementarea tuturor caracteristicilor fundamentale necesare pentru a se
putea efectua initializarile de baza ale componentelor hardware si software, pentru a se
accepta comenzi elementare de la tastatura sistemului, a se afisa pozitia curenta a motorului si
a se implementa algoritmul de reglare discreta dupa stare a pozitiei.

In figura 6.24 este prezentata schema logica a programului principal, iar in figura 6.25 schema
logica a subrutinei de tratare a intreruperii de timp real in care se implementeaza schema de
control discret propusa si a rutinei de tratare a intreruperii nemascabile NMI.

6.4.3 Prezentarea programului implementat

In continuare, se va prezenta listingul programului complet. Se utilizeaza conventiile,
comenzile si directivele acceptate de catre programul de asamblare ASM-86 al firmei INTEL,
BAZELE MICROPROCESOARELOR

6-42
realizat pentru microprocesorul 8086. A se consulta documentatia de firma, pentru detalii
suplimentare referitoare la aceste programe.








Initializari generale
Generare vectori intrerupere
Initializari porturi comanda
Programare 8253, 8259A
Test
Stare OK
Eroare
Semnalizare eroare
OK
Comanda deplasare stinga
Limita
stinga atinsa
Da Nu
Citire corectie pozitie
Activare intreruperi
Deblocare frina
Stop miscare
"SET" Nu Da
"SET"
Da
Nu
"STOP"
Da
Nu
"GO"
Da Nu
Comanda start
Citire referinta
Citire taste
Program principal
1
1
Fig. 6.25. Organigrama programului principal

APLICATII ALE SISTEMELOR MICROPROCESOR
6-43
Salvarea registre
Citire pozitie
Citire viteza
Start conversie A/D
conversie Nu Da
Calcul variatie pozitie
Calcul variatie viteza
Calcul eroare pozitie
Calcul comanda u
Saturatie u Da Nu
u = Usat
Comanda la D/A
Refacere registre
Salvare registre
Semnalizare eroare
Refacere registre
End
Rutina de tratare IR3
Rutina tratare NMI
RETI
RETI

Fig. 6.26. Organigrama subrutinelor de tratare a intreruperilor

; =================================================================
; Program pentru controlul unui sistem de pozitionare cu motor de c.c.
; ----------------------------------------------------------------------------------------------------------------
;
; (A) Definirea variabilelor generale ale programului
; ------------------------------------------------------------------
; porturi generale:
PPOZITIA EQU 300H ; port interfata pozitie (I)
PADSTART EQU 308H ; port start conversie A/D (O)
PADDATA EQU 308H ; port citire stare/date conversie A/D (I)
PSEMNAL EQU 310H ; port citire semnalizari (I)
PCMD EQU 310H ; port dare comenzi digitale (O)
PDADATA EQU 300H ; port convertor D/A (O)
PKYBD0 EQU 318H ; port 0 tastatura (citire taste comenzi) (I)
PKYBD1 EQU 31CH ; port 1 tastatura (citire taste numerice) (I)
PDISP0 EQU 318H ; port 0 afisaj (cifre: C0 - low, C1 - high) (O)
PDISP1 EQU 31CH ; port 1 afisaj (cifre: C2 - low, C3 - high) (O)
; ceas timp real 8253:
PRTC0 EQU 320H ; port timer 0 RTC (I/O)
PRTC1 EQU 322H ; port timer 1 RTC (I/O)
PRTC2 EQU 324H ; port timer 2 RTC (I/O)
PRTCCMD EQU 326H ; port control RTC (O)
; controler intreruperi 8259A:
PICICW1 EQU 328H ; port ICW1 PIC (O)
PICICW24 EQU 32AH ; port ICW2-ICW4 PIC (O)
PICOCW1 EQU 32AH ; port OCW1 PIC (O)
BAZELE MICROPROCESOARELOR

6-44
PICOCW23 EQU 328H ; port OCW2-OCW3 PIC (O)
; adrese vectori intrerupere
INTVNMI EQU 8H ; adresa vector intrerupere NMI
INTVRTC0 EQU 8CH ; adresa vector intrerupere IQ3
;
;-----------------------------------------------------------------------------------------------------------------
; Variabile generale (localizate in memoria RAM)
; --------------------------------------------------------------
ORG 100H ; zona de date generale incepe de la adresa 100H
; ---------------
POZCOR DW 0 ; corectie pozitie [1 word; initial = 0]
POZREF DW 0 ; referinta pozitie (Θ Θ*) [1 word; initial = 0]
POZCRT DW 0 ; pozitia curenta (Θ ΘI) [1 word; initial = 0]
VITCRT DW 0 ; viteza curenta (Ω ΩI) [1 word; initial = 0]
VIM1 DW 0 ; viteza la pasul anterior (Ω ΩI-1) [1 word; initial = 0]
UCRT DW 0 ; comanda curenta (ui) [1 word; initial = 0]
DPOZ DW 0 ; variatia pozitiei (∆ ∆Θ Θ= Θ Θi - Θ ΘI-1) [1 word; initial = 0]
DVIT DW 0 ; variatia vitezei (∆ ∆Ω Ω = Ω Ωi - Ω ΩI-1) [1 word; initial = 0]
POZIM1 DW 0 ; pozitia la pasul anterior (Θ ΘI-1) [1 word; initial = 0]
VITIM1 DW 0 ; viteza la pasul anterior (Ω ΩI-1) [1 word; initial = 0]
PERROR DW 0 ; eroarea de pozitie (ε ε = Θ Θi* - Θ ΘI) [1 word; initial = 0]
UIM1 DW 0 ; comanda la pasul anterior (ui-1) [1 word; initial = 0]
;
;==================================================================
;
APLICATII ALE SISTEMELOR MICROPROCESOR
6-45

; (B) Zona de cod a programului (localizata in memoria PROM)
; --------------------------------------------------------------------------------
;
; Programul principal
; ---------------------------
;
; ORG 0FFFF0H ; adresa de salt la RESET
; -----------------------
JMP MAIN ; salt la zona de program propriu-zis
;
ORG 0FC000H ; adresa de inceput a memoriei PROM
; --------------------
;
MAIN: ; inceput program principal propriu-zis
MOV CS, 0FC00H ; initializare CS, adresa de inceput PROM
MOV DS, 0 ; initializare DS, adresa de inceput RAM
MOV SS, 0 ; initializare SS, adresa de inceput RAM
MOV SP, 1000H ; initializare SP, adresa de sfarsit RAM
;
; scriere vectori de intrerupere in memoria RAM
LEA AX, NMIERR ; AX = adresa rutinei de tratare a NMI
MOV INTVNMI, AX ; memorare vector tratare NMI in RAM
LEA AX, SRTC0 ; AX = adresa rutinei de tratare a IR3
MOV INTVRTC0, AX ; memorare vector tratare IR3 in RAM
;
; initializari porturi
MOV AX, 0
OUT PDADATA, AX ; comanda D/A = 0
OUT PCMD , AX ; comenzi generale = 0
;
; programare 8253
MOV AL, 06H ; set control 8253
OUT PRTCMD, AL ; set mod 3, timer 0, numarare binara
MOV BX, 2000 ; BX = N, cuanta de divizare
MOV AL, BL
OUT PRTC0, AL ; set low(N)
MOV AL, BH
OUT PRTC0, AL ; set high(N)
;
; programare 8259A
MOV AL, 000010111B ; set ICW1:
OUT PICICW1, AL ; edge / call 4/ single / +ICW4
MOV AL, 10000000B ; set ICW2:
OUT PICICW24, AL ; adresa de baza a vectorilor de intrerupere, 80H
MOV AL, 00000001B ; set ICW4:
OUT PICICW24, AL ; mod 8086, normal EOI
MOV AL, 11110111B ; set OCW1:
OUT PICOCW1, AL ; nemascat doar IR3
; -------------------------------------------
; alimentare partea de forta
MOV AX, 01000B
OUT PCMD, AX ; actionare contactor de forta
MOV AX, 2000
CALL WAIT1MS ; asteptare 2 secunde
BAZELE MICROPROCESOARELOR

6-46
;
; test daca convertizorul este OK
TESTOK:
IN AX, PSEMNAL
AND AX, 1 ; izolare bit de OK (B0)
JZ ERROK ; eroare OK, se semnalizeaza pe bec eroare
;
; deplasare pentru gasire pozitie initiala
MOV AX, 1101B ; comenzi:
OUT PCMD, AX ; deblocare frana / alimentare forta / aprindere bec OK
MOV AX, -25 ; referinta mica de viteza negativa
OUT PDADATA, AX ; deplasare stanga cu viteza mica
;
LOOP0:
IN AX, PSEMNAL ; citire semnalizari
MOV BX, AX ; salvare in BX
AND AX, 1 ; test OK (izolare bit B0)
JZ ERROK ; salt, daca nu e OK
MOV AX, BX
AND AX, 100B ; test bit limitator cursa stanga
JZ LOOP0 ; reia, daca nu s-a atins limita stanga
;
; limita stanga s-a atins
IN AX, POZITIA ; citire pozitia la limita stanga
MOV POZCOR, AX ; memorare ca si corectie de pozitie
;
MOV AX, 0
MOV POZREF, AX ; initial, referinta pozitie = 0
MOV POZCRT, AX ; initial, pozitia curenta = 0
MOV UIM1, AX ; set ui-1 = 0
MOV POZIM1, AX ; set Θ ΘI-1 = 0
MOV VITIM1, AX ; set Ω ΩI-1 = 0
;
; activare intreruperi
STI
;
STOPCMD:
MOV AX, 1111B ; setare comenzi:
OUT PCMD, AX ; deblocare frana / franare rapida / bec OK /
; contactor forta alimentat
MOV AX, POZCRT
CALL AFISAJ ; afisare pozitia curenta
;
BIGLOOP:
CALL KEYBDC ; citire comanda taste in AL
AND AL, 1 ; test, daca comanda “SET”
JNZ BIGLOOP ; ignora alte taste, reia test
;
; s-a apasat tasta “SET”, se citeste pozitia de referinta
BEGCIT:
CALL KEYBDD ; citire o cifra hexa, transmisa in AL
MOV BX, AL ; salvare in BX
CALL AFISAJ ; afisare noua valoare
; citire cifra a doua
CALL KEYBDD
APLICATII ALE SISTEMELOR MICROPROCESOR
6-47
MOV CL, 4
ROL BX, CL ; rotire BX cu 4 biti la stanga
OR BL, AL ; cifra 2 pe ultimii 4 biti ai BL
MOV AX, BX
CALL AFISAJ ; afisare valoarea curenta a referintei
; citire cifra a treia
CALL KEYBDD
MOV CL, 4
ROL BX, CL ; rotire BX cu 4 biti la stanga
OR BL, AL ; cifra 3 pe ultimii 4 biti ai BL
MOV AX, BX
CALL AFISAJ ; afisare valoarea curenta a referintei
; citire cifra a patra
CALL KEYBDD
MOV CL, 4
ROL BX, CL ; rotire BX cu 4 biti la stanga
OR BL, AL ; cifra 4 pe ultimii 4 biti ai BL
MOV AX, BX
CALL AFISAJ ; afisare valoarea curenta a referintei
; BX contine cele 4 cifre hexa pe cei 16 biti ai sai
;
WAITCMD:
CALL KEYBDC ; citire comanda tastatura
MOV CL, AL ; salvare cod comanda
AND AL, 1 ; test, daca “SET”
JZ BEGCIT ; daca “SET”, reia citirea referintei
;
MOV AL, CL
AND AL, 100B ; test, daca “STOP”
JZ STOPCMD ; salt, daca “STOP”
;
MOV AL, CL
AND AL, 10B ; test, daca “GO”
JNZ WAITCMD ; salt; daca nu, reia asteptare comanda
;
; s-a dat “GO”, setare noua referinta
MOV POZREF, BX
MOV AX, 1101B ; setare comenzi:
OUT PCMD, AX ; deblocare frana rapida
JMP WAITCMD ; reia asteptare comanda
; In acest timp, bucla de control lucreaza pentru
; a deplasa motorul la noua pozitie de referinta
;
;------------------------------------------------
EROKK:
; Secventa apelata, daca convertizor defect
MOV AX, 11000B ; setare comenzi:
OUT PCMD, AX ; forta alimentata / frana blocata /
; bec OK - stins / bec eroare - aprins
MOV AX, 0E111H ; afisare cod eroare OK, “E111”
CALL AFISAJ
JMP TESTOK ; reia test convertizor
;-----------------------------------------------------------------------------------------------------------------
;
BAZELE MICROPROCESOARELOR

6-48
; Subrutine diverse
; -----------------------
WAIT1MS:
; Rutina de asteptare multiplu de 1 ms. Implementare software
; (Neimplementata ...)
; Argumente: <I>: AX = N ms de asteptat
...
;
RET
;------------------------------------------------
AFISAJ:
; Rutina de afisare pe display a 4 cifre hexazecimale
; Argumente: <I>: AX = cele 4 cifre de afisat
; Bit 15 ... 12 11 ... 8 7 ... 4 3 ... 0
; | C3 | C2 | C1 | C0 |
; Registre afectate: AX, BX, CX, DX
;
MOV BX, AX ; BX = numarul initial
;
; cifra 0
LEA CX, TABELH ; CX = adresa tabelului de coduri cifre
AND AX, 0FH ; izolare cifra 0 (ultimii 4 biti)
ADD CX, AX ; CX = adresa codului cifrei, din tabel
MOV DL, [CX] ; citire cod cifra 0, memorare in DL
;
; cifra 1
MOV AX, BX ; AX = numarul initial
AND AX, 0F0H ; izolare cifra 1 (bitii 4÷ ÷7)
MOV CL, 4
ROR AX, CL ; rotire AX cu 4 biti spre dreapta
; cifra 1 pe bitii B0÷ ÷B3 ai AL
LEA CX, TABELH ; CX = adresa tabelului de coduri cifre
ADD CX, AX ; CX = adresa codului cifrei, din tabel
MOV DH, [CX] ; citire cod cifra 1, memorare in DH
;
MOV AX, DX ; cod cifre 1 si 0 (AH, AL)
OUT PDISP0, AX ; afisare cifrele 1 si 0 pe display
;
; cifra 2
MOV AX, BX ; AX = numarul initial
AND AX, 0F00H ; izolare cifra 2 (bitii 8÷ ÷11)
MOV CL, 8
ROR AX, CL ; rotire AX cu 8 biti spre dreapta
; cifra 2 pe bitii B0÷ ÷B3 ai AL
LEA CX, TABELH ; CX = adresa tabelului de coduri cifre
ADD CX, AX ; CX = adresa codului cifrei, din tabel
MOV DL, [CX] ; citire cod cifra 2, memorare in DL
;
; cifra 3
MOV AX, BX ; AX = numarul initial
AND AX, 0F000H ; izolare cifra 3 (bitii 12÷ ÷15)
MOV CL, 12
ROR AX, CL ; rotire AX cu 12 biti spre dreapta
; cifra 3 pe bitii B0÷ ÷B3 ai AL
APLICATII ALE SISTEMELOR MICROPROCESOR
6-49
LEA CX, TABELH ; CX = adresa tabelului de coduri cifre
ADD CX, AX ; CX = adresa codului cifrei, din tabel
MOV DH, [CX] ; citire cod cifra 3, memorare in DH
;
MOV AX, DX ; cod cifre 3 si 2 (AH, AL)
OUT PDISP1, AX ; afisare cifrele 3 si 2 pe display
;
RET
;------------------------------------------------
KEYBDC:
; Rutina de citire a tastelor de comanda
; Argumente: <O> : returneaza codul de comanda in AL
;
IN AL, PKYBD0 ; citire port taste comenzi
CMP AX, 0FFFFH ; test, daca tasta apasata
JZ KEYBDC ; daca nici o tasta nu e apasata, reia
;
RET ; daca s-a apasat o tasta, return
; AL = data citita (tasta apasata seteaza
; bitul corespunzator pe 0)
;------------------------------------------------
KEYBDD:
; Rutina de citire a tastelor numerice de la “0” la “F”
; Argumente: <O>: returneaza in AL codul hexazecimal al tastei citite
; (valoare intre 0 si F)
IN AX, PKYBD1 ; citire de la portul de taste numerice
CMP AX, 0FFFFH
JZ KEYBDD ; reia, daca nu s-a apasat tasta
; s-a apasat o tasta numerica
MOV CX, AX ; memorare data citita
MOV AL, 0
KEYL: INC AL ; AL = AL + 1
ROR CX, 1 ; rotire CX dreapta cu 1, prin CF
JC KEYL ; reia, daca B0 ≠ ≠ 0: (CY = 1)
; la iesire s-a gasit bit = 0; AX = cod tasta + 1
DEC AL ; corectie AL = cod hexa tasta numerica
;
RET
;------------------------------------------------
NMIERR:
; Rutina tratare NMI (eroare de OK convertizor)
;
; salvare registre in stiva
PUSH AX
PUSH BX
PUSH CX
PUSH DX
; ca la ERROK
MOV AX, 11000B
OUT PCMD, AX ; comenzi
MOV AX, 0E111H
CALL AFISAJ ; afisare mesaj eroare
;
; refacere registre din stiva
POP DX
BAZELE MICROPROCESOARELOR

6-50
POP CX
POP BX
POP AX
;
RETI
;------------------------------------------------
SRTC0:
; Rutina tratare intrerupere de la RTC, timer 0. Este lansata la fiecare perioada
; de esantionare (1 ms)
;
; salvare registre in stiva
PUSH AX
PUSH BX
PUSH CX
PUSH DX
;
; citire pozitie curenta
IN AX, POZITIA ; citire date encoder
SUB AX, POZCOR ; corectie pozitie
MOV POZCRT, AX ; memorare pozitia curenta
; citire viteza curenta de la tahogenerator
OUT PADSTART, AX ; start conversie A/D
WDA: IN AX, PADDATA ; citire stare si data de la A/D
MOV BX, AX ; salvare in BX
AND AX, 8000H ; izolare bit “Data Ready” (B15)
JNZ WDA ; reia, daca conversie in curs de desfasurare
MOV VITCRT, BX ; data valida, se memoreaza (conversia e terminata)
;
; calcul variatie pozitie
MOV AX, POZCRT ; AX = Θ ΘI
SUB AX, POZIM1 ; AX = ∆ ∆Θ Θ
MOV DPOZ, AX ; memorare ∆ ∆Θ Θ
;
; calcul variatie viteza
MOV BX, VITCRT ; BX = Ω ΩI
SUB BX, VITIM1 ; BX = ∆ ∆Ω Ω
MOV DVIT, BX ; memorare ∆ ∆Ω Ω
;
; calcul eroare de pozitie
MOV CX, POZREF ; CX = Θ Θ*
SUB CX, POZCRT ; CX = ε εΘ Θ
MOV PERROR, CX ; memorare ε εΘ Θ
;
; calcul comanda ui
; ui = ui-1 + F1*ε ε + F2*∆ ∆Ω Ω + F3*∆ ∆Θ Θ
; F1, F2 si F3 sunt reprezentate pe 8 biti fiecare
;
; calcul F1*ε ε
MOV AL, F1 ; AL = F1
IMUL PERROR ; AX = F1 * ε ε
MOV CX, AX ; memorare in CX
;
; calcul F2*∆ ∆Ω Ω
MOV AL, F2 ; AL = F2
APLICATII ALE SISTEMELOR MICROPROCESOR
6-51
IMUL DVIT ; AX = F2*∆ ∆Ω Ω
ADD CX, AX ; CX = F1*ε ε + F2*∆ ∆Ω Ω
;
; calcul F3*∆ ∆Θ Θ
MOV AL, F3 ; AL = F3
IMUL DPOZ ; AX = F3*∆ ∆Θ Θ
ADD CX, AX ; CX = F1*ε ε + F2*∆ ∆Ω Ω + F3*∆ ∆Θ Θ
;
MOV AX, UIM1 ; AX = ui-1
ADD AX, CX ; AX = ui = ui-1 + F1*ε ε + F2*∆ ∆Ω Ω + F3*∆ ∆Θ Θ
;
; aici, eventual saturare comanda ui (neimplementata)
; ...
;
; comanda spre convertizor (prin convertorul D/A)
MOV UCRT, AX ; memorare comanda ui
OUT PDADATA, AX
;
; setari pentru pasul urmator
MOV AX, POZCRT ; AX = Θ ΘI
MOV POZIM1, AX ; Θ ΘI-1 = AX
;
MOV AX, VITCRT ; AX = Ω ΩI
MOV VITIM1, AX ; Ω ΩI-1 = AX
;
MOV AX, UCRT ; AX = ui
MOV UIM1, AX ; ui-1 = AX
;
; refacere registre din stiva
POP DX
POP CX
POP BX
;
; setare sfarsit de intrerupere, EOI catre 8259A
MOV AL, 20H
OUT PICOCW23, AL ; EOI catre 8259A
;
POP AX
;
RETI
;-----------------------------------------------------------------------------------------------------------------
;
; Tabelul de coduri pentru cele 16 cifre hexazecimale (coduri segmente de afisaj aprinse)
;
TABELH:
DB 3FH, 03H, 76H, 67H ; “0”, “1”, “2”, “3”
DB 4BH, 6DH, 7DH, 47H ; “4”, “5”, “6”, “7”
DB 7FH, 6FH, 5FH, 79H ; “8”, “9”, “A”, “b”
DB 3CH, 73H, 7CH, 5CH ; “C”, “d”, “E”, “F”
;
; Exemplu: codul cifrei “5”
; c
; ====
; //
BAZELE MICROPROCESOARELOR

6-52
; d // g
; ====
; // a
; f //
; ====
; DP g f e d c b a
; 0 1 1 0 1 1 0 1 ≡ ≡ 6DH
;
;------------------------------------------------
; Coeficientii de comanda pentru controlul dupa stare.
; Fie valorile reprezentate pe 8 biti (obtinute prin proiectarea regulatorului
; discret cu reactie dupa stare si scalarile necesare) :
;
F1: DB 1
F2: DB 5
F3: DB -3
;
;------------------------------------------------
END ; directiva asamblor pentru incheierea fisierului sursa
;-----------------------------------------------------------------------------------------------------------------


6.4.4 Concluzii

In concluzie, aplicatia propusa reprezinta un exemplu tratat complet, incepand cu enuntarea
temei de proiectare, o etapa de analiza a structurii, a caracteristicilor si a parametrilor elemen-
telor componente ale sistemului ce va implementa cerintele impuse, urmata de modelarea
sistemului controlat, prezentarea principiala a problematicii proiectarii regulatorului discret,
proiectarea structurii hardware si apoi implementarea structurii software aferente.

Gradul relativ inalt de complexitate al aplicatiei si performantele ridicate cerute sistemului
numeric au impus, practic, baleirea in aceasta abordare a intregii problematici cu care se
confrunta proiectantul unei aplicatii industriale a sistemelor microprocesor. Evident, prezen-
tarea facuta nu atinge toate problemele de detaliu tehnic, cum ar fi analiza semnalelor in
schema digitala (temporizari, fan-out etc.), probleme de realizare fizica a cablajelor si a
circuitelor electronice de acest tip (proiectarea cablajelor, elaborarea schemelor, tehnologii de
implementare a circuitelor integrate etc.), de punere in functiune si metode specifice de
testare, hardware si software, a acestor sisteme. Scopul urmarit a fost acela de a da o cat mai
corecta si completa evaluare a gamei de probleme care apar, a metodelor de baza legate de
proiectarea acestor sisteme.

Consideram ca prin aceasta abordare se poate ajunge la un grad de intelegere a principiilor de
functionare si utilizare ale acestor sisteme. In consecinta, estimand ca majoritatea cititorilor
acestor randuri sunt, cel mai probabil, potentiali utilizatori ai unor asemenea sisteme, care vor
trebui sa implementeze sau sa modifice aplicatii industriale ale unor configuratii hardware
specificate sau selectabile intr-o gama relativ precizata de structuri posibile, deci sa elaboreze
programele pentru aceste sisteme, scopul urmarit a fost de a sublinia elementele esentiale pe
baza carora se poate aborda o asemenea problematica. Doar intelegand principiile de func-
APLICATII ALE SISTEMELOR MICROPROCESOR
6-53
tionare si organizare a acestor sisteme, se vor putea elabora programe eficiente, bine
proiectate, flexibile, deschise spre modificari si/sau dezvoltari ulterioare.

Prezentarea facuta poate fi, totodata, si un solid punct de pornire pentru studierea, intelegerea
si utilizarea practica a unor alte tipuri de microprocesoare utilizate din ce in ce mai mult in
aplicatiile industriale. Reamintim aici doua categorii foarte importante: microcontrolerele
industriale si procesoarele de semnal, DSP. Utilizand conceptele de baza si principiile de
proiectare hardware si software introduse in prezenta lucrare, se va putea trece relativ usor la
studiul si utilizarea acestor echipamente.

Nu putem incheia fara a sublinia un element fundamental legat de problema invatarii elemen-
telor prezentate in aceasta lucrare: SINGURA cale pentru a putea intelege cu adevarat si a
invata ce sunt, cum functioneaza, cum se proiecteaza si cum se programeaza sistemele cu
microprocesoare este de a LUCRA EFECTIV cu asemenea sisteme, a le testa, a scrie, a
depana si a dezvolta programe de aplicatii. Doar astfel se poate ajunge efectiv de la stadiul
unei intelegeri reale, la experienta si indemanarea tehnica necesare pentru a deveni un
utilizator eficient al acestor echipamente, ce pot si trebuie sa devina pentru specialistul
modern “rigla de calcul”, instrumentul indispensabil in rezolvarea problemelor ingineresti
celor mai complexe.

CUVANT INAINTE
Prezenta lucrare trateaza principalele aspecte legate de sistemele cu microprocesoare, privite din punctul de vedere al inginerului de aplicatie, cu profil electrotehnic. Lucrarea se adreseaza viitorilor utilizatori ai unor sisteme cu microprocesoare, care vor fi pusi in situatia de a configura asemenea sisteme, de a implementa aplicatii dedicate, prin proiectarea interfetelor specifice si elaborarea programelor aferente. Structura prezentata reprezinta in esenta cursul de “Sisteme cu microprocesoare” predat de catre autori studentilor de la anul IV ai facultatii de Electrotehnica a Universitatii “Politehnica” din Bucuresti. Scopul principal al cartii este de a oferi informatiile si a forma conceptele fundamentale legate de problematica utilizarii sistemelor microprocesor. Diversitatea tipurilor, caracteristicilor de lucru si performantelor diverselor familii de microprocesoare, ritmul extrem de ridicat in care apar noi componente, tehnologii, concepte, impun utilizarea unei anumite strategii in abordarea acestui subiect. S-a urmarit definirea notiunilor general valabile pentru toate aceste sisteme, pe baza intelegerii carora inginerul de aplicatie va putea aprofunda, pentru configuratii concrete, elementele specifice asociate acestor configuratii. In capitolul 1, “Introducere”, se face o trecere in revista a istoricului microprocesoarelor, a evolutiei acestora in cele peste doua decenii scurse de la aparitie, a tehnologiilor, tipurilor si performantelor acestora. Se definesc sistemele numerice operand in timp real, si tipul reprezentativ de aplicatie asociat acestora. Capitolul 2 “Notiuni introductive”, prezinta principalele notiuni legate de aritmetica numerelor intregi, si a elementelor de logica circuitelor numerice. Aceste elemente sunt fundamentale pentru intelegerea si studiul sistemelor cu microprocesoare. Capitolul 3, “Microprocesoare - Concepte generale”, reprezinta o ampla analiza a conceptelor legate de microprocesoare si de sistemele cu microprocesoare. Se analizeaza atat microprocesorul, din punct de vedere functional, si al structurii hardware si software de baza, cat si structura si principiile de configurare a memoriei si interfetelor de intrareiesire ale unui sistem microprocesor. Capitolul se incheie cu un exemplu de sistem microprocesor simplificat, ce implementeaza o aplicatie simpla, dar completa, continand atat specificatiile de proiectare hardware cat si software necesare.

SISTEME CU MICROPROCESOARE

Capitolul 4 abordeaza prezentarea circuitului INTEL 8086, tip reprezentativ de microprocesor, atat datorita structurii si caracteristicilor sale hardware si a setului de instructiuni, cat si a utilizarii pe scara larga in constructia microcalculatoarelor de tip PC. Capitolul 5, “Implementarea interfetelor de intrare-iesire”, prezinta apecte legate de implementarea porturilor de uz general de tip numeric sau analogic, cat si a principalelor tipuri de interfete de intrare-iesire specializate, de tipul porturilor seriale, ceasurilor de timp real, sau a controlerelor de intrerupere. Se fac exemplificari ce utilizeaza componente compatibile cu microprocesorul INTEL 8086, schemele si programele prezentate fiind implementabile pe microcalculatoare de tip PC-AT. Capitolul 6 “Aplicatii ale sistemelor microprocesor”, incununeaza acest studiu cu prezentarea unui exemplu complet de proiectare a unui sistem de control discret implementat cu microprocesor de tip 8086. Pornind de la enuntul temei aplicatiei, dupa o analiza a structurii, alegere a componentelor si definirii parametrilor acestora, se proiecteaza structura sistemului de control - atat constructiva - hardware, cat si programul aferent - software. Furnizarea tuturor detaliilor de proiectare ofera astfel cititorului posibilitatea de a cunoaste in mod concret principiile pe baza carora trebuie actionat pentru abordarea unei asemenea problematici. Autorii spera ca aceasta lucrare sa reprezinte un instrument util pentru intelegerea problematicii de baza referitoare la utilizarea, configurarea si programarea sistemelor cu microprocesoare utilizate in aplicatiile industriale. Speram ca gradul de generalitate la care s-a incercat sa se pastreze prezentarea va fi util prin oferirea de informatii valabile pentru cea mai mare parte a sistemelor cu microprocesoare existente, si astfel, va oferi un punct de pornire celor interesati in intelegerea principiilor si in utilizarea cu performante maxime a unor asemenea sisteme.

ii

CUPRINS

1. INTRODUCERE............................................................................................... 1-1
1.1. 1.2. MICROPROCESORUL - REPERE GENERALE .................................................................1-1 OBIECTUL CARTII ............................................................................................................. 1-5

2. NOTIUNI INTRODUCTIVE .............................................................................. 2-1
2.1 ARITMETICA NUMERELOR INTREGI................................................................................2-1 2.1.1 Aritmetica numerelor intregi, pozitive (fara semn).........................................................2-3 2.1.2 Aritmetica numerelor intregi, cu semn...........................................................................2-4 2.1.3 Aritmetica numerelor zecimale codificate binar (BCD)..................................................2-6 2.1.4 Aritmetica numerelor fractionare ...................................................................................2-6 2.2 ELEMENTE DE LOGICA CIRCUITELOR NUMERICE .......................................................2-6 2.2.1 Logica booleana ............................................................................................................2-7 2.2.2 Porti logice.....................................................................................................................2-8 2.2.3 Inversoare......................................................................................................................2-9 2.2.4 Reprezentari logice alternative ......................................................................................2-9 2.2.5 Poarta tri-state .............................................................................................................2-10 2.2.6 Bistabilul de tip D.........................................................................................................2-10 2.2.7 Registre. ......................................................................................................................2-12 2.2.8 Multiplexoare ...............................................................................................................2-14 2.2.9 Demultiplexoare si decodificatoare .............................................................................2-15 2.2.10 Circuite logice programabile (PLD) .............................................................................2-16

3. MICROPROCESOARE - CONCEPTE GENERALE........................................ 3-1
3.1 MICROPROCESORUL --- PREZENTARE FUNCTIONALA ...............................................3-2 3.1.1 Functiile de baza ale microprocesorului ........................................................................3-3 3.1.2 Aspectul temporal - secvential ......................................................................................3-6 3.1.3 Reprezentarea informatiei .............................................................................................3-6 3.1.4 Memorarea informatiei ..................................................................................................3-7 3.1.5 Conceptul de program...................................................................................................3-9 3.2 CONCEPTUL DE MAGISTRALA.........................................................................................3-9 3.2.1 Magistrala de date .......................................................................................................3-11 3.2.2 Magistrala de adrese ...................................................................................................3-11 3.2.3 Magistrala de control ...................................................................................................3-12 3.3 MICROPROCESORUL - PREZENTARE HARDWARE ....................................................3-13 3.3.1 Functia de control ........................................................................................................3-13 3.3.2 Functia de memorare ..................................................................................................3-22 3.3.3 Functia aritmetico-logica .............................................................................................3-25 3.3.4 Functia de intrare/iesire. ..............................................................................................3-28 3.3.5 Microprogramarea .......................................................................................................3-29 3.4 MEMORIA INTERNA A SISTEMULUI MICROCALCULATOR .........................................3-31

BAZELE MICROPROCESOARELOR 3.4.1 3.4.2 3.4.3 Memorii RAM...............................................................................................................3-32 Memorii ROM ..............................................................................................................3-40 Organizarea tipica a memoriei sistemului microprocesor ...........................................3-43

3.5 SOFTWARE-UL SISTEMULUI MICROPROCESOR-ASPECTE GENERALE .................3-44 3.5.1 Consideratii de baza....................................................................................................3-45 3.5.2 Moduri de adresare .....................................................................................................3-46 3.5.3 Setul de instructiuni al microprocesorului....................................................................3-54 3.5.4 Utilizarea stivei programului ........................................................................................3-67 3.5.5 Limbajul de asamblare ................................................................................................3-70 3.5.6 Metodologia elaborarii programelor.............................................................................3-73 3.6 ELEMENTE DE INTRARE/IESIRE ALE SISTEMELOR MICROPROCESOR ..................3-75 3.6.1 Operatii I/E efectuate sub controlul programului .........................................................3-77 3.6.2 Operatii de intrare/iesire efectuate prin intreruperi ......................................................3-82 3.6.3 Operatii de I/E efectuate prin acces direct la memorie................................................3-87 3.7 SISTEM MICROPROCESOR --- EXEMPLU .....................................................................3-89 3.7.1 Structura hardware a sistemului..................................................................................3-89 3.7.2 Structura software a sistemului ...................................................................................3-93 3.7.3 Concluzii ..................................................................................................................... 3-97

4. MICROPROCESORUL INTEL 8086 ............................................................... 4-1
4.1 ARHITECTURA PROCESORULUI......................................................................................4-2 4.1.1 EU — Unitatea de executie ...........................................................................................4-3 4.1.2 BIU — Unitatea de interfata cu magistrala ....................................................................4-4 4.1.3 Registrele de uz general................................................................................................4-4 4.1.4 Registrele de segment ..................................................................................................4-6 4.1.5 Registrul pointerului de instructiuni................................................................................4-6 4.1.6 Indicatorii de conditie.....................................................................................................4-6 4.2 ORGANIZAREA MEMORIEI ................................................................................................4-8 4.2.1 Segmentarea memoriei .................................................................................................4-9 4.2.2 Generarea adresei fizice .............................................................................................4-10 4.2.3 Stiva.............................................................................................................................4-12 4.3 ORGANIZAREA SPATIULUI DE INTRARE/IESIRE..........................................................4-15 4.3.1 Spatiul de intrare/iesire propriu-zis ..............................................................................4-15 4.3.2 Porturile de I/E plasate in spatiul de memorie.............................................................4-15 4.4 SPECIFICATII HARDWARE ..............................................................................................4-15 4.4.1 Definirea pinilor............................................................................................................4-15 4.4.2 Functionarea magistralei multiplexate.........................................................................4-17 4.4.3 Circuitul de ceas ..........................................................................................................4-23 4.4.4 Modul minim/maxim. Controlerul de magistrala 8288 .................................................4-24 4.4.5 Selectia memoriei........................................................................................................4-29 4.4.6 Selectia si interfatarea porturilor de intrare/iesire ........................................................4-32 4.5 Sistemul de intreruperi.....................................................................................................4-34 4.5.1 Sursele de generare a intreruperilor............................................................................4-34 4.5.2 Vectorii de intrerupere .................................................................................................4-35 4.5.3 Intreruperile externe ....................................................................................................4-37 4.5.4 Intreruperile interne .....................................................................................................4-40 4.5.5 Subrutina de tratare a intreruperii................................................................................4-41 iv

...6-11 6....3 PORTURI SPECIALIZATE – INTERFETE SERIALE ........10 Alegerea tipului de schema de reglare ...................................4...................6-17 6...2 PROIECTAREA SCHEMEI DE CONTROL.......................5-28 5.....................6-22 6...............................................................2 Ceasul programabil INTEL 8253 ...........6-37 v .........4.............................................2.............................................................................5-22 5..................................6-6 6...........6-9 6............1 PERFORMANTELE IMPUSE SISTEMULUI DE CONTROL NUMERIC....2...........................................................................4 PROIECTAREA STRUCTURII SOFTWARE A SISTEMULUI................... 6-1 6...................................................................................................5-6 5............................2 IMPLEMENTAREA PORTURILOR DE INTRARE-IESIRE ANALOGICE ..........3...........6-15 6...........2 Interfata seriala INTEL 8251 .............6-14 6.................................6-12 6...........................6-6 6...................CUPRINS 5........6-5 6.......................................................................................3........1.......5 Viteza de lucru a sistemului de control ......1 IMPLEMENTAREA PORTURILOR DE INTRARE-IESIRE NUMERICE ................................................................................. ASPECTE DE PRINCIPIU........................5 PORTURI SPECIALIZATE – CONTROLERE DE INTRERUPERI ...............3....................1 Implementarea interfetei convertorului analog-digital.....5-18 5.............6-11 6........................................................................ ........................................................................................................1.....................................4 Exemplu de utilizare a ceasurilor programabile la calculatoarele de tip IBM-PC .....................................6-20 6...............3......5-2 5.......................4 Precizia sistemului reglat......5......5-24 5.................................5.............................................1 Sarcina ...........................................1.....................1.....................................................................6-4 6...............................................................................3......6 Precizia traductoarelor............... ..........3........6-3 6.3 Exemple de programe de tratarea intreruperilor ..............6-7 6...........4..1.....2 Ciclul de miscare .............................................................3 Exemple de programarea porturilor de I/E numerice ..........4.................................5-15 5......3 Proiectarea controlerului discret ........................5-18 5...............................1...........................3 Porturile de comunicatie seriala la calculatoarele de tip PC-AT.......................................6-6 6................2 Memoria RAM....5-19 5..................1.........5-10 5..1 Ceasuri programabile – notiuni generale...1 Programarea controlerului de intreruperi 8259A ..........1.....6-7 6......9 Alegerea traductoarelor ...3 Performantele de regim dinamic ..................................5-30 5.... IMPLEMENTAREA INTERFETELOR DE INTRARE / IESIRE......................2 Implementarea interfetei convertorului digital-analog............................................8 Alegerea componentelor de forta ........................3 Ceasurile programabile la calculatoarele de tip PC-AT............1 Memoria PROM.....1.........5....6-5 6........2.............................4 PORTURI SPECIALIZATE – CEASURI DE TIMP REAL ...........2 Discretizarea modelului sistemului ..........2.......notiuni generale ..................................................................1.........................................5-7 5..1............................................11 Alegerea microprocesorului......5-28 5....................................7 Precizia de calcul......................3 PROIECTAREA STRUCTURII HARDWARE A SISTEMULUI ........................5-13 5.............5-17 5.1 Obtinerea modelului sistemului ...............................................2 Tratarea intreruperilor externe mascabile in microcalculatoarele PC-AT..............................4 Exemplu de programare a portului serial COM2 .........5-7 5.........1............ 5-31 6 APLICATII ALE SISTEMELOR MICROPROCESOR ..................................1 Consideratii generale privind porturile de I/E numerice.....................3 Porturile de intrare-iesire ................2.3..2 Exemplu de schema de porturi de I/E numerice ............................................................................................5-10 5...1 Interfete seriale ...................................6-24 6.5-1 5............1.....1...................6-13 6...........................5-8 5.......... 5-1 5.................................................................................................... ALEGEREA CONFIGURATIEI SISTEMULUI.........................5-1 5................................

..........................................................4...6-41 Concluzii .......4 Specificatiile de programare ale resurselor sistemului .....4....................BAZELE MICROPROCESOARELOR 6..4............4..3 6..............1 6....................2 6................................6-41 Prezentarea programului implementat ........................6-37 Organizarea programului..............................................6-51 vi ...............................................................................................

16 si 32 de biti au fost produse (in 1972. realizatoarea primului microprocesor de 4 biti. iar estimarile pentru urmatorii ani prevad o expansiune a sistemelor microprocesor. in esenta capacitatea globala a acestor sisteme s-a majorat cu peste trei ordine de marime. inregistrate in ultimele decenii. respectiv). in anul 1971. populatia globului pamantesc.1. ce vor depasi. Termenul de "microprocesor" a fost introdus in 1972 de catre firma americana INTEL. MICROPROCESORUL . de calculatoare. devenea posibil cu acest prilej. proiectare. prezinta sintetic unele dintre aceste caracteristici pentru diversele tipuri de echipamente de calcul aflate in uz. evoluand intr-o progresie exponentiala. Se remarca faptul ca microcalculatoarele si microprocesoarele reprezinta elemente deosebit de atractive din punctele de vedere al raportului performanta/pret. microprocesoare de 8. Un nou mod de abordare a controlului proceselor industriale. cu costuri ridicate si dispunand de relativ putine elemente de dezvoltare a aplicatiilor. Si din punctul de vedere al caracteristicilor putere de calcul / cost / nivel de sofisticare. si nivel de sofisticare/pret. ca numar de sisteme implementate in diverse aplicatii. Obtinerea "calculatoarelor pe un cip". cu performante de-a dreptul spectaculoase. piata microprocesoarelor a inregistrat progrese de-a dreptul inimaginabile in urma cu cativa ani. frecventa de lucru a circuitelor de peste 100 de ori. in comparatie cu celelalte tipuri de asemenea echipamente. atat in ceea ce priveste plaja practic nelimitata a domeniilor de aplicatie a acestor componente revolutionare din punct de vedere tehnic si tehnologic. INTRODUCERE 1. Curand. cu ajutorul sistemelor numerice. sintetizare si testare) a sistemelor cu microprocesor. microprocesoarele si microcalculatoarele (calculatoarele care utilizeaza ca unitate centrala un microprocesor).REPERE GENERALE Printre progresele tehnologiei electronice. cat si in ceea ce priveste conceptia si realizarea (tehnicile de analiza. Incepand modest. se situeaza pe pozitii deosebit de avantajate. in curand. . Figura 1. de viteza relativ redusa.1. aparitia microprocesoarelor a reprezentat un moment de cotitura. comparativ cu celelalte tipuri "clasice". cu microprocesoare de 4 biti.1. Numarul de componente pe cip a crescut de peste 500 de ori. 1974 si 1981. s-a facut extrem de rapid.

necesitand suplimentar o gama intreaga de circuite suplimentare pentru generarea semnalelor de temporizare.1. la situatia de a se impune treptat in fruntea sistemelor de calcul de larga raspandire. continea 29000 de tranzistoare. cresterea puterii de calcul si a flexibilitatii. Practic. toate tehnologiile disponibile de fabricare a circuitelor semiconductoare au fost testate de-a lungul anilor (CMOS. pentru interfatarea cu perifericele sistemului si cu procesul controlat. Din punctul de vedere al tehnologiei de fabricatie.BAZELE MICROPROCESOARELOR grad de sofisticare foarte ridicat Calculatoare de mare performanta (mainframe) Midicalculatoare Minicalculatoare Microcalculatoare Microprocesoare Calculatoareelementare scazut Logica cablata 2 4 minima 8 16 4 n 32 6 cost 8 lungime cuvint 64 maxima numar de biti putere de calcul Fig. I2L). pentru aplicatii de control al proceselor. s-a pornit initial de la tehnologia pMOS. cu performante limitate. (Firma INTEL a denumit aceasta tehnologie HMOS .1.H ↔ high performance = mare performanta). iar programarea se facea direct in cod masina. in 1982. Primele tipuri de microprocesoare indeplineau doar functiile de baza ale sistemului. Sunt preferate circuitele realizate in tehnologii MOS. Compararea costului. datorita densitatii mai mari de tranzistoare pe cip. aparitia si expansiunea sistemelor de dezvoltare. Astfel. etc. cat si al structurii arhitecturale. deosebit de sofisticate. atat din punct de vedere al puterii de calcul. Dintre acestea. Utilizarea microprocesoarelor a fost orientata initial cu predilectie ca microcontrolere in structuri dedicate. tehnologia NMOS a fost cea mai utilizata. atit datorita densitatii mari cat si a vitezei ridicate de comutatie. Aparut in 1988. aparitia limbajelor de programare de nivel inalt. pentru memorarea datelor si a programelor. circuitul INTEL 8086. era produs circuitul INTEL 80286. ce se pot obtine in aceste tehnologii. microprocesorul 80486 a ajuns la peste 2000000 tranzistoare pe cip. Dezvoltarea ulterioara a arhitecturilor evoluate. au largit considerabil aria de aplicatii ale microprocesoarelor. cu un numar de 130000 de tranzistoare pe cip. Progrese tot mai mari s-au facut in tehnologia 1-2 . Setul de instructiuni al acestora era relativ limitat. puterii de calcul si capacitatii diverselor calculatoare numerice In primul deceniu de existenta. deosebit de performante. NMOS. microprocesoarele au evoluat de la structuri relativ elementare. bipolare. produs in 1978. nu mult mai tarziu.

Unul dintre cele mai importante criterii. Totodata. marind sensibil. la peste 100 om-an. In decursul anilor. in care se inmagazineaza programul sau datele. Progresele inregistrate din punct de vedere tehnologic au facut ca. in ceea ce priveste realizarea si modificarea eventuala a setului de instructiuni. sau opereaza cu mai multe registre simultan. relativ mai redusa volumic. permit (desi la o viteza relativ mai redusa). Este posibila astfel executia programelor foarte mari. si competitive ca pret de cost. microprocesoare de 8 biti). practic. si implementand direct o gama de functii uzual realizate prin programare (software). pentru circuitele cele mai avansate. Executia programelor se face astfel in doua etape succesive (doua nivele de control).INTRODUCERE CMOS. este marimea cuvantului de date al acestora.Very Large Scale Integrated = Integrare pe scara foarte larga 1-3 . extrase din memoria sistemului. (spre deosebire de microprocesoarele "clasice". a crescut sensibil si capacitatea de adresare a microprocesoarelor. de catre utilizator. Progrese importante s-au facut si in domeniul "microprogramarii". obtinerea unor structuri mult mai flexibile. cu structura fixa si set de instructiuni impus de fabricant). Utilizarea memoriei virtuale permite adresarea unor spatii de ordinul gigaoctetilor. Astfel. si deci performantele acestuia. Aceasta reduce intru-catva viteza globala a sistemului. viteza de lucru a sistemului. Un concept deasemenea tot mai utilizat este asa-numita memorie cache. Numarul de moduri auxiliare de adresare a crescut deasemenea. densitatea circuitelor integrate de tip VLSI1 ce includ microprocesoarele. 1 VLSI . sa se dubleze la fiecare doi ani. Asemenea sisteme utilizeaza suporturi de memorie exterioara (disc). per global. este implementata cu microprocesoare de putere mai mica (uzual. in domeniul controlului proceselor industriale. care prezinta avantajul de a avea viteze superioare. Exista astfel microprocesoare in care o singura instructiune controleaza transferul unor blocuri de date din memorie. De multe ori. pentru evaluarea si selectia microprocesoarelor. suficiente ca putere de calcul si capacitati de adresare. firme ca INTEL includ in circuitul microprocesorului si functiile de protectie a accesului si control al memoriei. si o mai mare imunitate la zgomot. desi o gama relativ importanta de aplicatii. de catre realizatorul sistemului. adaptate specific aplicatiei abordate. Cresterea performantelor si a complexitatii acestor circuite s-a facut bineinteles cu pretul unui efort de proiectare sensibil crescut. Avantajul imediat al acestui fapt consta in posibilitatea de a se implementa seturi de instructiuni mult imbunatatite si extinse. Procesoarele microprogramate. unele instructiuni sunt apropiate de instructiuni in limbaje de nivel inalt. consum redus de putere. Aceste instructiuni (macro-instructiuni). Cuvinte de date mai mari implica evident o putere de calcul si adresabilitate sporite. lucrul "simultan" al mai multor utilizatori (multiuser). sunt definite pe baza unui set restrans de microinstructiuni. dar de viteze foarte mari. executia "simultana" a mai multor programe (multitasking). usurand compilarea deosebit de eficienta a programelor. pentru memorarea temporara a programului si a datelor. acesta a crescut de la 1 om-an. sau de pe disc. Multe firme ofera circuite specializate pentru controlul si coordonarea functionarii memoriei sistemului. microprocesoarele de 16 si 32 biti domina piata de microcalculatoare. Actualmente.

a fost produs in anul 1976. a impus standardizarea operatiilor aritmetice in virgula mobila (standardul IEEE P754).Binary Coded Decimal = zecimal codat binar CPU . incorporeaza trei componente de baza: unitatea centrala de prelucrare (CPU2).doar citire). acceptata de catre microprocesoarele sau coprocesoarele aritmetice aferente. texte (siruri de caractere). De exemplu. reale (virgula mobila).pentru citire/scriere.BAZELE MICROPROCESOARELOR Microprocesoarele difera sensibil in ceea ce priveste capacitatile de memorare si manipulare a diverselor tipuri de date. De exemplu. este necesara o proiectare foarte atenta. microprocesorul devine mai potrivit unei game tot mai largi de posibile aplicatii. indiferent de marime. Evident. ce nu se pot atinge cu microprocesoarele "clasice". INTEL 8048. aceste circuite sunt inca departe de performantele de calcul ale supercalculatoarelor de tipul CRAY-1. etc. Microcalculatoarele pe un singur cip constituie un subset important al microprocesoarelor. legate de parametrii de performanta. sau precizie sporita. ca de exemplu cu informatii reprezentate pe biti. setul de instructiuni. memoria sistemului. permite implementarea calculelor in virgula mobila in sistemele respective. Diversitatea tipurilor de microprocesoare si a coprocesoarelor aferente. si utilizarea unui numar tot mai mare de componente. memoria (RAM . si ROM . Din nefericire aceasta implica o structura complexa a sistemului.. desi sunt foarte utilizate in aplicatiile de proces. Un microcalculator combina un microprocesor cu memorie si capacitati de intrare/iesire pe unul sau mai multe cipuri. Uneori. etc. Orice calculator. produse de diferite firme. Daca reprezentarea si manipularea informatiilor sub forma octetilor si a cuvintelor de date este uzuala la toate tipurile de microprocesoare. Odata cu progresele tehnologice inregistrate.Central Processing Unit = unitate centrala de prelucrare 1-4 . executie. Utilizarea procesoarelor bit-slice permite legarea mai multor cipuri modulare identice in paralel. aparitia acestor tipuri de microcalculatoare este intotdeauna relativ intarziata fata de aparitia microprocesoarelor cu o putere de calcul similara (de exemplu. Desi au performante foarte bune. continand elementele de calcule aritmetice. La cealalta extremitate a spectrului se afla aplicatiile ce necesita o putere de calcul foarte mare. Revolutia microprocesoarelor este generata de tendinta de a se implementa toate componentele unui calculator cu ajutorul unui numar relativ redus de cipuri. in care toate functiile. tot mai multe componente pot fi integrate pe acelasi cip. Cu cat accepta o gama mai extinsa de tipuri de date. INTEL 8008). pana la 1 2 BCD . BCD1 . si interfetele de intrare/iesire pentru controlul periferiei calculatorului. optimizandu-se arhitectura propusa. logice si functiile de control. tehnicile de adresare a memoriei. sunt implementate pe acelasi cip. inclusiv memoria. nu sunt intotdeauna direct acceptate. primul microcalculator de 8 biti pe un cip. circuitul INTEL 8087. si astfel tot mai multe functii auxiliare se pot implementa pe cipul microprocesorului insusi. Peste 4/5 din tranzistoarele cipului tind a fi utilizate pentru functii de memorie. date manipulate ca biti individuali nu sunt acceptate de catre microprocesorul 8086. si alte restrictii de proiectare. coprocesor matematic compatibil cu microprocesorul 8086. tipuri de date suplimentare se pot folosi doar prin utilizarea unor circuite auxiliare. la patru ani dupa producerea primului microprocesor de 8 biti. alte tipuri de operatii. Deoarece aceste circuite se produc in cantitati deosebit de mari. Se obtin astfel calculatoare construite cu foarte putine cipuri.

care poate produce cel mai adecvat procesor pentru aplicatia data. alegand solutia optima. care trebuie sa decida. Bineinteles. cu capacitati de calcul deosebite (implementare specifica de filtre numerice. conform unui criteriu complex de evaluare a sistemului. putem remarca extrema diversitate de aspecte ridicate de caracterizarea circuitelor microprocesor existente. Proiectantul trebuie sa cunoasca cerintele produsului final. si se testeaza "pe viu" functionarea acestora. Uzual. Paleta deosebit de larga de performante. proiectate si realizate direct pentru o aplicatie data (asa numitele circuite de tip ASIC2 ). Dupa cum s-a precizat. utilizand pachete puternice de programe de proiectare (CAD4). structuri si nu in ultimul rand. aceste microprocesoare sunt dotate cu elementele de interfatare necesare. acest mod de producere a circuitelor integrate specializate (inclusiv procesoare). OBIECTUL CARTII 1 2 3 4 DSP . de tipul procesoarelor DSP1. In fine. trebuiesc mentionate circuitele integrate de tip VLSI. a proiectantului de sistem. posibilitatea de a dezvolta si un macro-set de instructiuni. la virtualul utilizator. confera un avantaj suplimentar la utilizarea acestor structuri.Computer Aided Design = proiectare asistata de calculator 1-5 . de preturi de cost. O evolutie interesanta au avut-o si transputerele. Durata proiectarii si realizarii circuitelor in acest mod scade sensibil. de performante deosebit de ridicate.FFT. inclusiv convertoare A/D si D/A pentru conectarea la procese analogice. corelatii.Application Specific Integrated Circuit = circuit integrat specific unei aplicatii date workstations = statii de lucru CAD . procesoare cu structuri pretabile la realizarea de calculatoare cu procesare paralela. 1. Acest mod de proiectare ofera avantajul deosebit de a se muta conceperea circuitului.Digital Signal Processing = prelucrarea numerica a semnalelor ASIC . Concluzionand.2. poate pune probleme serioase in fata utilizatorului. Apoi. pe un sistem microcalculator de putere sporita (asa numitele workstations3). transformate Fourier .INTRODUCERE obtinerea structurii cu o precizie corespunzatoare. se produc efectiv circuitele respective. se simuleaza functionarea si se modifica (daca este cazul) structura circuitului. Se porneste de la caracteristicile functionale finale dorite ale circuitului. caracteristici. convolutii. in ceea ce priveste prelucrarea numerica a semnalelor. Dupa definirea structurii functionale a sistemului.). si sa il sintetizeze utilizand ca elemente componente "blocuri" functionale predefinite. puse la dispozitia sa de catre programul de proiectare. mai ales in ceea ce privesc performantele de calcul obtinute. este avantajos doar pentru cantitati relativ mari de circuite de un tip dat. specific unei aplicatii date. pana la obtinerea comportarii si performantelor dorite. economic vorbind. structura circuitului dorit. O tot mai mare amploare o au in ultima vreme procesoarele specializate. etc. S-a ajuns la solutii economic convenabile de a se proiecta.

este cel al aplicatiilor industriale.). Amplificator analogic intrare sistem Sistem fizic (proces) marimea controlata Traductor si adaptare semnal iesire (semnal analogic) date prelucrate (variatie continua) Convertor D/A Microcalculator Port de iesire Algoritm numeric sau logic Port de intrare Convertor A/D interfata iesire calculator . figura 1. nu trebuie sa scape de sub controlul 1-6 . etc. cu precadere. Ele sunt denumite aplicatii in timp real. controlat cu ajutorul unui microcalculator. sistemul de calcul efectuand operatii de masurare a datelor. indiferent de firma producatoare si de generatia de circuite careia ii apartine microprocesorul. in care desfasurarea acestora nu este legata si nici conditionata in vre-un fel de evenimentele exterioare (evolutia procesului condus. Plecand de la aceste premize. functiile de baza. Structura de principiu a unui sistem de control numeric In instalatiile conduse cu sisteme microprocesor. Trebuie remarcata deosebirea fundamentala fata de sistemele de calcul "clasice". ciclic. calcule. prezentul volum se doreste o incercare de a pune bazele conceptuale ale proiectarii sistemelor cu microprocesoare. In mod corespunzator. orice aplicatie in timp real se va desfasura ca in figura 1.intrare calculator intrari comenzi de control si iesiri de stare ale microcalculatorului Figura 1.3. si au specific faptul ca echipamentul controleaza functionarea unui proces. putem totusi conclude ca "filozofia" generala a realizarii sistemelor microcalculator. punctul de pornire.2. de a fundamenta principalele aspecte si probleme legate de structura constructiva (hardware) si programele implementate (software) in aceste sisteme. utilizate doar pentru calcule. standuri de masura. acoperind practic o gama extrem de larga de cazuri. sisteme de achizitii de date. In esenta.BAZELE MICROPROCESOARELOR Pe baza considerentelor prezentate in paragraful anterior. componentele tipice. pentru acest volum. Asemenea aplicatii ne vor interesa in cadrul cursului de fata. calculele facandu-se in timpul controlarii acestei functionari.2 prezinta structura de principiu a unui asemenea sistem.4.intrare sistem interfata iesire sistem . diagnoza. secventializarea operatiilor din sistem va determina o succesiune a operatiilor ca in figura 1. si cu precadere cel al aplicatiilor in echipamentele electrice (actionari electrice. Intr-un mod oarecum general. si totodata luand in considerare faptul ca. operatiile se desfasoara continuu. cat si cel de sosire in studiul microprocesoarelor. si dand comenzi in mod succesiv. control. de acest tip. sunt comune tuturor tipurilor de microprocesoare.

1-7 . pentru aplicatii in echipamentele electrice. conceperea acestor sisteme este ceva mai complexa decat in cazul sistemelor logice "clasice". Activitatile cheie si fazele de dezvoltare ale unui produs bazat pe utilizarea unui microprocesor sunt prezentate in figura 1.5. si se vor exemplifica unele implementari de structuri microcalculator de proces. un element caracteristic este reprezentat de catre cele Fig. cele doua componente ale proiectarii interactioneaza permanent.INTRODUCERE sistemului numeric. Se va insista pe aspectele concrete. fazele metodologice si de dezvoltare ale unui asemenea sistem sunt Programul dictate cu precadere de catre specificatiile trebuie reluat referitoare la performantele si caracteristicile produsului final. pentru sistemele de acest gen (pentru controlul proceselor). Prezentul volum va incerca acoperirea principalelor aspecte legate de conceptele. conform algoritmului numeric) t2 2 t1 1 initializari t0 start Fig. Secventializarea operatiilor intr-o aplicatie de timp real conversie date Transmitere date prelucrate prin port de iesire (scriere . Structura temporala a unei aplicatii Lansare alt doua elemente interconditionate in timp real STOP program specific proiectarea structurii constructive hardware. 1. in cazul aplicatiilor in timp real)."READ") Initializare parametri si definire porturi I/O scriere date 4 t3 3 executie program citiredate Executie program specific (prelucrare date de intrare. 1. structura si caracteristicile functionale ale sistemelor microprocesor. Astfel.4."WRITE") Ca si in alte domenii ale proiectarii ingineresti. Datorita legaturii foarte stranse dintre structurile hardware si software. dupa cum s-a mentionat. aplicative. atat in general cat si prin concretizare pentru anumite tipuri de microprocesoare si circuitele aferente. Pentru sistemele cu microprocesoare. t5 5 t4 Achizitie date din porturi de intrare (citire . notiunile. si proiectarea programelor software. toate aceste aspecte vor implica aparitia unor abordari si tratari specifice ale problemelor ce apar.3. Evident.

Etapele proiectarii si producerii unui sistem cu microprocesor 1-8 .BAZELE MICROPROCESOARELOR caracteristici produs configurare hardware teorie proiectare disponibil dezvoltare proprietati elemente componente faza intrare structura software adaptare productie evaluare a performantelor proiectare si productie faza iesire Fig.5. 1.

. dupa prelucrare. avand n cifre supraunitare (an-1. Astfel. + a-m⋅b-m 1 2 3 SSI . . va avea valoarea in baza 10 data de relatia (N)10 = an-1⋅bn-1 + an-2⋅bn-2 + . iar operatiile ce se desfasoara in ea se efectueaza deasemenea in sistemul binar de numarare. Sub o forma generala. ai anume elemente de aritmetica calculatoarelor.).1 ARITMETICA NUMERELOR INTREGI Un sistem de calcul cu microprocesor trebuie sa aiba anumite capacitati de calcul. an-2. console) si. Totodata.. scadere.porti. + a1⋅b1 + a0⋅b0 + a-1⋅b-1 + .).Programable Logic Device = circuit logic programabil . ca un punct de pornire. decodificatoare. functionalitate. un microprocesor este prin structura sa o masina binara.. putand sa implementeze cele patru operatii aritmetice fundamentale.Simple Scale Integrated = integrate pe scara simpla MSI .. sunt necesare uneori operatii in cod BCD in interiorul microprocesorului. reamintim ca un numar reprezentat in baza b de numarare. etc. etc. a-2. listinguri. ca un bagaj minim de cunostinte. si m cifre subunitare (a-1..registre. multiplexoare. sunt utilizate la listarea programelor. . a-m). circuite PLD3. bistabile. In acest sens. inmultire si impartire. Prezentul paragraf va face o trecere in revista a celor mai importante aspecte relativ la aceste elemente. NOTIUNI INTRODUCTIVE In prezentarea sistemelor cu microprocesoare. principii de proiectare si realizare). cat si circuite integrate MSI2 .. de adunare.. . Deasemenea. Daca fiinta omeneasca efectueaza aceste operatii in sistemul zecimal de numarare. prezentarea rezultatelor deasemenea zecimal (afisaje.2. .Medium Scale Integrated = integrate pe scara medie PLD . astfel incat inginerul ce doreste proiectarea si/sau utilizarea unei asemenea masini trebuie sa fie familiarizat cu o varietate de sisteme de numarare. doua categorii de notiuni de baza trebuiesc cunoscute.. (tastaturi. 2.. sistemele hexazecimal si (uneori) octal. a0). anumite elemente de baza sunt folosite cu precadere. si deci sunt necesare tehnici de conversie binar-BCD si reciproc. etc. si este necesara cunoasterea lor. pentru intelegerea aspectelor legate de aceste sisteme (structura. interfatarea cu utilizatorul uman presupune adeseori preluarea de date in format zecimal. corelate cu tipurile uzuale de circuite logice TTL (circuite integrate SSI1 . toate informatiile sunt memorate in cod binar. si elemente de logica.

1. de exemplu: Conversia binar → octal se efectueaza prin gruparea a ( 110  001  011  100 )2 cate trei cifre binare. Metodologia practica a conversiei numerelor dintr-o baza de numarare in alta este presupusa cunoscuta. sistemul binar de reprezentare a informatiei este unicul prezent in toate aceste sisteme de calcul).4 ÷ 5) V. Starea de saturare a tranzistorului (0 ÷ 0.binar Fig. de exemplu. Trebuie totusi mentionate ca fiind deosebit de importante cazurile.BAZELE MICROPROCESOARELOR Astfel.2. Aceste conversii sunt prezentate tabelat in figurile 2. este asociata valorii binare 1. Octal 0 1 2 3 4 5 6 7 Binar 000 001 010 011 100 101 110 111 Hexa Binar 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 Hexa Binar 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111 Fig. de conversie directa intre sistemele binar si octal.hexazecimal.5 + 0. 2.2. si nu se mai prezinta aici.7510 Deoarece toate masinile de calcul existente opereaza cu elemente de circuit cu doua stari (de tipul tranzistor in stare saturat sau blocat.tipic 0V. uzual utilizate in cadrul sistemelor numerice. Astfel. si ↓ ↓ ↓ ↓ inlocuire cu echivalentul octal corespunzator. Conversia hexazecimal . avand la iesire doua nivele de tensiune continua distincte .1. dupa cum s-a mentionat. incepand din dreapta numarului.25 = 11. respectiv binar . pentru conversia octal → binar. respectiv 5V). si respectiv 2.binar Conversia dintr-o baza intr-alta in acest mod se va face utilizand direct reprezentarile din cele doua tabele.2. ( 4 3 2 7 )8 ↓ ↓ ↓ ↓ ( 100 011 010 111 )2 La fel se procedeaza si pentru conversiile hexazecimal ↔ binar: ( 1011  1010  0011 0010 )2 ↓ ↓ ↓ ↓ respectiv ( B A 3 2 )16 2-2 ( 4 F C 2 )16 ↓ ↓ ↓ ↓ ( 0100 1111 1100 0010 )2 . iar starea de blocare (2. ( 6 1 3 4 )8 Reciproc. numarul binar (1011. este asociata valorii binare 0. Conversia octal . se procedeaza in mod similar: Se inlocuieste fiecare cifra octala cu cei trei biti din codul binar corespunzator.4) V.11)2 va avea in baza 10 valoarea (N)10 = 1⋅23 + 0⋅22 + 1⋅21 + 1⋅20 + 1⋅2-1 + 1⋅2-2 = 8 + 0 + 2 + 0.

altfel.NOTIUNI INTRODUCTIVE In interiorul masinilor numerice. 8. In cazul adunarii (sau scaderii. pozitive (fara semn). De exemplu. o masina numerica poate fi privita ca un sistem format din registre. trebuie remarcata problema aparitiei depasirilor (overflow). o asemenea situatie apare in cazul urmator: 27 26 25 24 23 22 21 20 1 1 0 1 1 0 1 1 + 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 ↑ Depasire O situatie similara poate aparea in cazul scaderii. pentru fiecare caz in parte. in terminologia tehnica consacrata. care adunate dau un rezultat peste 256. Din punct de vedere functional. numere in reprezentare BCD. alterandu-se rezultatele si obtinandu-se cu totul alte valori decat cele corecte. se pierde chiar bitul cel mai semnificativ. acestea se bazeaza pe regulile specifice. suma a doua numere reprezentate pe 8 biti. Se vor face doar unele consideratii si remarci. In general. un indiciu pretios in aprecierea capacitatii de calcul a sistemului. In ceea ce priveste inmultirea. Data fiind lungimea finita a cuvintelor de date in microprocesor. Regulile depind de tipul numerelor: intregi fara semn. aparitia acestui bit de depasire. intregi cu semn. daca suma sau diferenta nu este reprezentabila intr-un cuvant de date (de exemplu. caracteristice operatiilor respective. Cuvintele microprocesoarelor sunt memorate in registre. reprezentand. daca descazutul este mai mare decat scazatorul (apare un bit de imprumut). echivalenta in cazul reprezentarii numerelor in complement fata de 2).1. va necesita 9 biti pentru reprezentare corecta). 2. Un registru poate fi implementat cu un sir de circuite bistabile. byte. Sunt tipice cuvinte cu o lungime de 4. iar datele sunt transferate dintr-un registru in altul in cursul efectuarii operatiilor aritmetice si logice.1 Aritmetica numerelor intregi. fiecare dintre acestea putand fi considerat ca un bit de memorie. sau a imprumuturilor (borrow). Lungimea cuvintelor pe care le poate prelucra un microprocesor constituie o caracteristica importanta a acestuia. numerele sunt reprezentate prin grupe de cifre binare. dar poate da o imagine de baza asupra a ceea ce se intampla. dupa cum s-a mai precizat. legate de specificul implementarii acestor operatii in sistemele numerice. daca rezultatul este considerat pe 8 biti. trebuie remarcat ca rezultatul inmultirii a doua numere reprezentate pe cate un cuvant de date se va reprezenta pe doua cuvinte de date. operatia de adunare sau de scadere va trebui sa semnalizeze suplimentar efectuarii calculului. 16 sau 32 de biti. Aceste grupe de cifre binare sunt numite cuvinte. Nu este locul si nici cazul de a prezenta algoritmii specifici de implementare a acestor operatii. numere fractionare. In ceea ce priveste operatiile aritmetice de baza. 2-3 . Acesta este evident un mod simplificat de a prezenta lucrurile. Un cuvant de 8 biti se mai numeste si octet sau.

pentru codificarea semnului. de exemplu in aceasta reprezentare: . al carei rezultat nedeterminat poate conduce la efecte imprevizibile asupra comportarii sistemului. Prin conventie. Calculul complementului fata de doi.2 Aritmetica numerelor intregi. Astfel. plaja de valori numerice ce pot fi reprezentate difera de cazul numerelor intregi fara bit de semn. in aceste cazuri. Exista doua tipuri de reprezentare: (1) complement fata de 2 (2's complement). va fi: 2-4 .1). intr-un octet se vor putea reprezenta numere intregi intre -128 si +127. este cea care utilizeaza bitul de semn si modulul numarului. este asociat semnului numarului: daca acest bit este 0. reprezentat pe n biti. (2) complement fata de 1 (1's complement).1). Deoarece reprezentarea in complement fata de 1 ridica anumite probleme. numarul este negativ. pe baza operatiilor elementare de adunare si a celor logice. de impartire). Astfel. 00101112 iar + 2310 = 0 . O situatie aparte va aparea la impartirea a doua numere. numarul este considerat pozitiv. In cazul absentei acestora din setul de instructiuni al microprocesorului respectiv. deoarece ingreuneaza implementarea operatiilor de calcul aritmetice. implementarea lor se face prin program. Evident. cand trebuie sesizata si semnalizata incercarea de impartire la zero. cu semn O posibilitate de distingere a numerelor pozitive de cele negative intr-un calculator. bitul cel mai semnificativ (din stanga).2310 = 1 . care este insa practic nefolosita. Doar unele microprocesoare au in setul de instructiuni operatiile de inmultire (si eventual. este de a folosi un bit suplimentar. Cuvintele de date pe 16 biti vor putea contine valori intre 0 si 65535 (216 . fara bit de semn). Cea mai simpla posibilitate de reprezentare a numerelor cu semn. pentru un anumit numar X. daca este 1. Trebuie remarcat ca practic toate microprocesoarele au implementate in setul de instructiuni operatiile de adunare si de scadere. 2. 00101112 Practic in totalitatea cazurilor se utilizeaza reprezentarea numerelor cu semn in forma complementara. pentru cuvinte de date cu lungime data. ceea ce favorizeaza in mod decisiv implementarea hardware a operatiilor aritmetice cu aceste numere. conduce la obtinerea unui rezultat reprezentat pe (m+n) biti.BAZELE MICROPROCESOARELOR inmultirea unui numar reprezentat pe m biti cu un numar reprezentat pe n biti (intregi. Ca o remarca generala.1. procesarile cu numere cu semn se fac cu numere reprezentate in complement fata de 2. cuvintele de date de 8 biti vor putea contine valori numerice pozitive intre 0 si 255 (28 .

Astfel. 2.X Astfel.NOTIUNI INTRODUCTIVE [X]2 = 2n .0110 = 10000 . data de [X]2 = 24 . Calculand complementul fata de doi al acestui numar. inmultirea intre numerele pozitive. pentru obtinerea complementului fata de 2 al unui numar: (a) se inverseaza toti bitii numarului. un numar reprezentat pe un cuvant de lungime data in complement fata de 2. dedus separat din analiza semnelor celor doi termeni. + 19 = 0 . Adunarea si scaderea in aceasta reprezentare vor da intotdeauna rezultate corecte. se obtine reprezentarea pentru -X = 610. fie X=0110 ⇒ [X]2 = 1 0 1 0   ö õ se inverseaza  raman nemodificate In aceste conditii. si corectia finala in functie de semnul rezultatului. n=4. De exemplu. sau borrow = imprumut).X). fie: X = 0110 X inversat va fi 1001 se aduna 1 1 Rezultat: [X]2 = 1010 (b) se lasa neschimbate cifrele din numar pana la primul 1. 0010011 ö  bit de semn õ valoarea X > 0 ø ______ ÷ 2's complement al valorii X < 0 .3 Aritmetica numerelor zecimale codificate binar (BCD) 2-5 .0110 = 1010 Practic. inversandu-se celelalte cifre. cu conditia evidenta de a nu aparea depasiri ale limitelor de reprezentare (overflow = depasire superioara. De exemplu. De exemplu.bitul din stanga). prin reprezentarea complementului fata de doi al unui numar.19 = 1 . se utilizeaza urmatoarele metode. se prefera convertirea numerelor la valoarea pozitiva (modul). fie X = 610 = 01102. In ceea ce priveste inmultirea. se obtine reprezentarea binara a opusului acestui numar (deci [X]2 = .1. si se aduna 1 la cel mai putin semnificativ bit. va avea implicit 1 bit de semn (bitul cel mai semnificativ . inclusiv (de la dreapta la stanga). si reprezentarea propriu-zisa pe ceilalti biti. 1101101 De remarcat ca plaja valorilor astfel reprezentabile (pe un octet de la -128 la +127) este nesimetrica.

Daca numarul contine doar cifre de 0.11111111 = 255/256 = 0. In rest.0. operatiile aritmetice cu numere fractionare vor implica erori suplimentare. XOR.BAZELE MICROPROCESOARELOR Daca se utilizeaza frecvent numerele in reprezentare zecimala . de calcul. valoarea corespunzatoare este N = 0. x7 x6 . reprezentabile exact pe 8 biti). + x0 2-8. de exemplu pentru un cuvant de 8 biti.1.2 ELEMENTE DE LOGICA CIRCUITELOR NUMERICE In afara capacitatii de a efectua operatii aritmetice. OR. trebuie remarcat ca rezultatul va fi intotdeauna subunitar. Daca toti bitii x7 la x0 sunt 1.00000000 = 0/256 = 0. implementarea operatiilor aritmetice cu numere in reprezentare BCD nu este usor de realizat. NOT. In cazul inmultirilor. Complicatiile pe care le presupune implementarea acestor operatii conduc de obicei la preferarea urmatoarei scheme de lucru: reprezentare BCD → reprezentare binara propriu-zisa → calcule → conversie in reprezentarea BCD a rezultatului. reprezentarea valorilor fractionare se va face prin introducerea unei erori. doar 256 de valori numerice intre 0. sunt utilizate ca parti componente ale sistemului microcalculator. cat si comportarea celor mai utilizate elemente logice intalnite uzual intr-un sistem microcalculator. uzual nu se poate reprezenta o marime fractionara exact pe un numar dat de biti (exista. Totodata.si corespunzator BCD. in functie de valoarea partii eliminate. 2-6 . Aceasta este echivalent. Consideratii similare cazului numerelor pozitive se vor face pentru reprezentarea numerelor cu semn.. Cu exceptia cazurilor cand valoarea fractionara poate fi reprezentata exact pe cuvantul de date.4 Aritmetica numerelor fractionare O valoare fractionara subunitara poate fi reprezentata in cuvantul de calculator prin simpla mutare a virgulei la extremitatea din stanga a cuvantului de date. va fi X = 0 . reprezentarea rezultatului pe un cuvant de date va conduce insa intotdeauna la o eroare de trunchiere sau de rotunjire a rezultatului. valoarea corespunzatoare este N = 0. sau de rotunjire (se ajusteaza numarul. numarul continut de reprezentarea respectiva.. care poate fi de trunchiere (se neglijeaza bitii suplimentari din reprezentarea cu precizie peste lungimea cuvantului de date). x0.. 2.0 si 1. elemente logice (porti). prin 256. Evident. utilizand reprezentarea in cod complementar fata de doi. 2. O remarca speciala trebuie facuta in ceea ce priveste precizia reprezentarii numerelor fractionare.. la valoarea cea mai apropiata de reprezentarea exacta). la citirea/scrierea numerelor dinspre / spre exteriorul sistemului. Valoarea zecimala a numarului este [X]10 = x7 2-1 + x6 2-2 + .99609375. cu impartirea numarului intreg reprezentat pe cuvantul de 8 biti. etc. un microprocesor poate fi programat sa implementeze operatii logice ca AND. Vom prezenta in cele ce urmeaza o trecere in revista a principiilor logicii booleene ce sta la baza regulilor de functionare a acestor circuite. de exemplu. Astfel.

x2 . x ⋅ (x ⋅ y) = x (absorbtie) (x + y) ⋅ y = x ⋅ y .. f ( x1 ... 0 ⋅ 0 = 0 . x2 ..) = x ⋅ y ⋅ z ⋅ ...2.. x ⋅ 0 = 0 (element nul) x ⋅ 1 = x (identitate) x ⋅ x = x (idempotenta) x ⋅ x = 0 (complement) ⇒ x = x (c) Teoreme cu 2 sau 3 variabile ⇒ ⇒ ⇒ ⇒ (involutie) x + y = y + x .. xn ) = [ x1 ⋅ f (1. x2 .. x2 .. xn )] ⋅ [ x1+ f (1. ) (x ⋅ y ⋅ z ⋅ .1 Logica booleana Iata in primul rand rememorate relatiile de echivalenta ale algebrei booleene... (x ⋅ y) + y = x + y x + y + z = x + (y + z) = (x + y) + z . x = 1 daca x ≠ 0 1= 0 1 + 1 =1 0 + 0 = 0 0 + 1 = 1 + 0 = 1 (b) Teoreme cu o singura variabila ⇒ ⇒ ⇒ ⇒ x x x x + 1 = 1 . 1⋅1 = 1 .NOTIUNI INTRODUCTIVE 2.. (x ⋅ y) + (x ⋅ z) + (y ⋅ z) = (x ⋅ y) + (x ⋅ z) (consens) (d) Teoreme cu n variabile ⇒ (x + y + z+. + x = x . .... x2 .. x ⋅ y ⋅ z = (x ⋅ y) ⋅ z = x ⋅ (y ⋅ z) (asociativitate) ⇒ (x ⋅ y) + (x ⋅ z) = x ⋅ (y + z) ⇒ (x + y) ⋅ (x + z) ⋅ (y + z) = (x + y) ⋅ (x + z) . care stau la baza analizei / proiectarii functionarii acestor circuite si / sau operatii logice: (a) Postulate ⇒ ⇒ ⇒ ⇒ ⇒ x = 0 daca x ≠ 1 .. 0 = 1 . ) = x + y + z + . xn )] . + 0 = x . (x + y) ⋅ (x + z) = x + (y ⋅ z) (distributivitate) ⇒ (x + y) ⋅ (x + z) = (x ⋅ z) + (x ⋅ y) .. (Teoremele De Morgan ⇒ f ( x1 . 1 ⋅ 0 =0 ... xn ) = [ x1 + f (0.. x n )] (teoremele expansiunii) 2-7 _ _ . xn )] + [ x1⋅ f (0. + x = 1 .... x2 .... x ⋅ y = y ⋅ x (comutativitate) x + (x ⋅ y) = x .....

3 Inversoare 2-8 . si NOR exclusiv reprezinta negatii. +5V 160 logic 1: (2. ce apar la iesirea portilor NAND. Cele mai utilizate porti TTL sunt: AND.4) V 4.a). NOR. Structura si tabela logica a unei porti TTL de tip NAND cu doua intrari Tabela logica a portii TTL Similar se vor implementa si alte functii logice elementare.2.3. Cercurile mici. NAND. Figura 2.4 prezinta tabelele de adevar ale celor 6 tipuri de porti (se considera cazul a cate 2 intrari pe poarta) (fig. si Ex NOR. OR.4 ÷ 5) V logic 0: (0 ÷ 0. indicand de exemplu.4.7k Intrare A B 1k Intrare Iesire C Iesire C 0 1 1 1 470 A 1 1 0 0 B 1 0 1 0 Fig.BAZELE MICROPROCESOARELOR 2.2.4.2. si simbolurile asociate (fig.2.2 Porti logice Figura 2. Porti logice simple uzuale: (a) tabele de adevar (b) simboluri 2.2.b). a carei iesire este negata (inversata). A 0 0 1 1 B 0 1 0 1 A B AND A B NAND f=AB A B NOR AND 0 0 0 1 OR 0 1 1 1 f=AB A B OR f=A+B A B NAND 1 1 1 0 NOR 1 0 0 0 f=A+B A B XOR f=A .2. ca o poarta NAND poate fi considerata ca o poarta AND.3 prezinta structura unei porti TTL (Tranzistor Tranzistor Logic) ce implementeaza o functie NAND cu 2 intrari. B Ex-NOR XOR 0 1 1 0 ExNOR 1 0 0 1 f=A + B Fig. NOR.4. XOR.

NOTIUNI INTRODUCTIVE A "1" A A A f f=A 0 1 1 0 (a) f=A1=A Sunt circuite cu schema si diagrama de functionare prezentate in figura 2. Totusi.a). avand intrarile negate B (v. ceea ce conduce insa la cresterea (dublarea) incarcarii pe semnalul de intrare. daca oricare dintre intrari este la nivel logic 0.6. Trebuie remarcat ca legarea pinilor portii NAND la "1".6. Este posibila obtinerea unui inversor si prin utilizarea unor porti de tip NAND sau NOR.5. O alta posibila solutie este si aceea de a conecta semnalul de intrare la ambii pini de intrare ai uneia dintre cele doua porti (NAND sau NOR). pentru poarta NAND de exemplu (fig.6. in schema unui circuit. 2.fig.a). 2.b. f = A+0 = A (b) Fig.6. cand toate intrarile sunt la nivel logic 1. Relatii similare se pot obtine si pentru portile AND. Similar se vor interpreta si celelalte porti si reprezentarile lor echivalente. ca in figura 2. 2-9 . pentru o functie NOR se va scrie A f = A + B = A⋅B .2. Reprezentarea alternata va fi utilizata cand starea de activare a portii este 1 logic la iesire (active high). dar devine activa pe nivel logic 0. Astfel. ecuatia unui circuit f=A B B NAND va fi f = A⋅B = A + B .fig. cele doua reprezentari ale unei porti au interpretari diferite.b). OR. Similar. f=A B B deci ca o functie AND cu intrarile negate (v. respectiv pentru poarta NOR la "0".a.2. Prima reprezentare se va utiliza cand iesirea este uzual la nivel 1.5.5. Reprezentari logice logice Se pot obtine reprezentari alternative echivalente ale portilor logice. in prima reprezentare. prin aplicarea teoremelor De Morgan functiilor implementate de catre aceste A circuite. alternative pentru portile A B f=A+B Se poate utiliza oricare dintre reprezentarile uneia dintre porti. Se spune ca iesirea este activa pe nivel logic 0 (active low). Poarta inversoare 2.2. deci poarta NAND se poate echivala cu o A f=A + B poarta OR. etc.4 Reprezentari logice alternative A B A B A B A B f=AB (a) f=A+B (b) f=AB (c) f=A+B (d) Fig 2. fiind interzisa lasarea neconectata a acestor terminale (caz in care pot aparea fenomene de functionare aleatoare a portilor). se poate spune ca iesirea devine de nivel logic 0. este obligatorie. cea de-a doua reprezentare sugereaza ca iesirea devine 1. Astfel.

nivelul logic pe iesirea comuna 0 1 1 0 1 0 fiind dictat de circuitul activat (cu semnalul de selectie 1 1 0 1 1 1 E=1) la un moment-dat. deci pentru front crescator (se remarca din figura 2. __ 2-10 . din punctul de vedere al controlului transferului datei prin intermediul semnalului Clk.6 Bistabilul de tip D Bistabilul D este cel mai utilizat in sistemele cu microprocesoare ca element de memorie de 1 bit (mai rar se utilizeaza si bistabile de tip T. Figura 2.7.7. Q Un prim tip este bistabilul D activ pe front.7. valoarea semnalului de la intrarea D este transmisa la iesirea Q.8. cat si neinversoare. E E 2.2.9. Poarta tri-state neinversoare capitolul urmator. In acest caz. Exista atat tipuri de circuite tri-state inversoare.9 si simbolurile utilizate in aceste cazuri pentru circuitul respectiv). avand reprezentarea conventionala si tabela de adevar din figura 2. indicand faptul ca iesirea de la 1 0 1 momentul t+δt urmareste valoarea intrarii D la 1 1 1 momentul t. Exista doua categorii de bistabile D. Se remarca faptul ca Dt Qt Qt+δt δ D Q Q t +δ t = (D ⋅ Q + D ⋅ Q) t = D t . Bistabilul D semnalul Clk. 2. (a) si inversoare (b). 2. Aceasta permite decuplarea semnalului de iesire de intrarea circuitului.2. 0 0 0 ceea ce reprezinta ecuatia caracteristica a 0 1 0 Clk bistabilului D. sau la trecerea semnalului Clk din starea 0 in starea 1 (ca in figura 2. 2.9. la trecerea semnalului Clk din starea 1 in starea 0 (ca in figura 2. Detalii suplimentare referitor la (a) (b) functionarea circuitelor tri-state si utilizarea acestora in sistemele cu microprocesoare se vor prezenta in Fig. Transferul este controlat de catre Fig. Circuitul are doua stari stabile. deci pentru front descrescator. sau JK). inversor in fig. Utilizarea multor elemente de circuit cu iesiri tri-state este datorata posibilitatii de a avea starea de mare A Out A Out impedanta la iesirea circuitului.BAZELE MICROPROCESOARELOR 2.a).a.8. iesirile mai multor circuite tri-state pot fi x 0 High z conectate impreuna.7 prezinta tabela de adevar si reprezentarea simbolica a circuitului tri-state (neinversor in fig.b).2. A E Out A E Out x 0 High z Astfel.5 Poarta tri-state Poarta tri-state (cu trei stari) reprezinta o componenta importanta in sistemele microprocesor. SR.b).

uzual active pe nivel 0.inscriere) si R (reset .2.11. a celor doua semnale S (set . S D Clk R Q Q Clk * X X X S 1 0 1 0 R 1 1 0 0 Q * (operare normala) 1 0 .11 prezinta simbolul bistabilului si tabela de adevar in acest caz. asincrone. iesirea Q urmareste variatiile intrarii D. iesirea Q ramane in ultima stare in care a fost (vezi figura 2.(interzis) Fig. In acest caz. 2-11 .10). simultana.stergere) . Mai trebuie remarcata prezenta uzuala a inca 2 semnale de comanda ale bistabilului D. pe perioada nivelului activ al semnalului Clk (1 in cazul din figura 2.Utilizarea semnalelor asincrone de Set si Reset.10.2. 2. Bistabilul D cu inscriere pe front. Un alt tip este bistabilul D activ pe nivel. Sunt semnale asincrone. La dezactivarea semnalului Clk. servind la setarea sau resetarea circuitului. Figura 2. A se remarca din nou simbolurile utilizate pentru circuite in aceste cazuri.NOTIUNI INTRODUCTIVE D Clk 1 Clk 0 1 D 0 1 Q 0 (a) Q Q D Clk 1 Clk 0 1 D 0 1 Q 0 (b) Q Q Fig.b). De remarcat ca este interzisa valoarea 0.10.a. Bistabilul D cu inscriere pe nivel.10. D Clk 1 Clk0 1 D 0 1 Q 0 (a) Q Q D Clk 1 Clk0 1 D 0 1 Q 0 (b) Q Q Fig.9. respectiv 0 in cazul din figura 2.

pana la o modificare ulterioara (stergere. 2. Insusi microprocesorul contine un numar de registre.BAZELE MICROPROCESOARELOR D Clk J K Q Q D Clk S R Q Q Fig.13). Astfel. De remarcat ca continutul registrului A este neschimbat. si uzual are valori cuprinse intre 5 si 50 de nanosecunde. De asemenea.pulse width). De remarcat in figura 2. "La primirea semnalului de 2-12 .13. exista 1 intotdeauna o intarziere intre tranzitia tw Clk 0 semnalului de ceas. incarcare cu alte date).2. Deasemenea. Incarcate initial in registrul A. si modificarea nivelului iesirii. trebuiesc respectate anumite restrictii la evolutia in timp a semnalelor D si Clk.5 din amplitudinea semnalelor. Citirea datelor se va face oricand. Fig.fig. De multe ori. tsu se numeste timp de stabilire (setup time). O operatie frecventa intr-un microprocesor este transferul paralel al datelor intre doua registre. 2.13. a D th 0 t su bistabilului. respectiv RS.13.12 prezinta modul de conversie al bistabilelor de tip JK. Un registru consta dintr-un sir de bistabile si este utilizat pentru a memora informatie binara (temporar sau permanent). Datele pot fi inscrise in registru prin semnalul de control WRITE. Registrele reprezinta o componenta fundamentala in orice microcalculator. Caracteristici temporale ale semnalelor de intrare ale bistabilului la fel ca si cele referitoare la semnalele de setare si resetare. dupa tranzitia semnalului de ceas (uzual intre 0 si 10 ns). v. Figura 2. Figura 2.figura 2.12. se specifica in catalogul produsului. iar unele dintre porturile de I/E ca registre. Conversia bistabilelor JK sau RS in bistabile D Bistabilele de alte tipuri se pot converti usor la o comportare similara bistabilului D. ca intervalele de timp se masoara de la 0. si o frecventa maxima a ceasului. Bineinteles. respectiv de la 1 la 0). sunt date de catalog ale circuitului. fm. numita intarziere de 1 propagare (propagation delay). datele trebuie sa fie stabile cel putin o perioada th (timp de mentinere -hold time).14 prezinta o schema bloc a unui registru.2. prin activarea semnalului de citire (READ). inainte de tranzitia semnalului de ceas. In ceea ce priveste functionarea bistabilului. Simbolic. si raman inscrise pana la o inscriere ulterioara. circuitele de memorie pot fi privite ca niste matrici de registre. Figura 2. datele sunt transferate in registrul B la aparitia semnalului TRANSFER pe linia de ceas a registrului B. in bistabile de tip D. vom reprezenta transferul continutului registrului A in registrul B prin relatia: T:(B) ← (A).7 Registre.2. Intarzierile respective (la tranzitii ale Q de la 0 la 1. si latimea minima a semnalului de ceas (tw .15 prezinta schema de principiu a acestei operatii. datele trebuiesc sa fie stabile cu cel putin un interval de timp tsu (v.

Durata transferului va fi evident de 8 pulsuri de ceas. D P J7 J6 J0 1 1 SISO PIPO .16 contine un asemenea registru cu Clk transfer serial al datelor (realizat cu bistabile JK).2.Paralel Input Paralel Output = intrare paralela. figura K6 K7 K0 2. Schema unui registru serial. se transfera continutul registrului A in registrul B". De exemplu.17 prezinta schema de realizare a transferului serial intre doua registre de cate 8 biti fiecare.16. 2.Serial Input Serial Output = intrare seriala. Acest tip de registru este de tip PIPO1.15.14 . De remarcat ca registrul A isi pastreaza continutul. 2. Transferul de date intre 2 registre O alta operatie frecventa in sistemele microprocesor este transferul serial al Q datelor intre registre. date iesire A7 D 7A D 6A A6 D 0A Reg.A A0 READ Clk D 7B B7 D 6B B6 D 0B Reg. intrarea D pana la iesirea P a registrului va necesita in acest caz 8 semnale de ceas. iesire paralela . Schema bloc a unui registru Fig. Transferul unui bit de la Fig. iesire seriala 2-13 . Acest tip de registru se numeste SISO1. prin recilcularea informatiei intre iesire si intrare.B B0 WRITE Transfer date intrare Fig.NOTIUNI INTRODUCTIVE control T. Figura 2.

D2 si D3). si iesirea f (si negata sa). Semnalul asincron de stergere va trece la valoarea "0" toate iesirile registrului. prin semnalul de activare E. Datele de la intrare sunt transferate la iesirea registrului pe durata nivelului "1" al semnalului Clk. Fig.8 Multiplexoare Un multiplexor selecteaza o iesire din n intrari (n fiind uzual 4. Date intrare E Date intrare O E D Clk R Q R D7 Reg. ca in figura 2. 2.20 prezinta un asemenea multiplexor cu patru intrari (D0.BAZELE MICROPROCESOARELOR S Clk 1 0 S Clk Reg.19. 2. Figura 2. 2. sau 16). B 0 1 1 0 0 Fig. care utilizeaza bistabile D active pe front pozitiv. selectand una dintre ele la un moment dat (f. Selectia liniei de iesire se face cu semnale de control. D1.2. A 1 0 1 1 0 0 0 0 0 Reg. Inscrierea datelor se face normal. Registru de tip latch. in figura 1 latch = agata 2-14 . 8. dar iesirile O0÷O7 vor contine datele inscrise in registru doar la aplicarea semnalului de activare a ÷ circuitelor tri-state de la iesirea acestuia. multiplexorul poate fi privit ca un comutator cu mai multe pozitii. 2. B 0 0 0 0 0 inainte de transfer S Clk 1 0 1 S Clk Reg. Liniile de control A si B si semnalul de activare E complecteaza circuitul.Latch D0 Clk Q0 D Clk Q D7 R Q7 Date iesire Reg. ramanand la valorile avute in momentul frontului cazator al semnalului de ceas. Registru cu iesiri tri-state Figura 2.Tri-State D0 Clk Q7 Date iesire Q0 R Fig.19 prezinta un registru cu iesirile tri-state. simultan. A 0 1 1 0 0 dupa transfer Clk S S Clk 1 0 1 Reg.18.17 Transferul serial al datelor intre doua registre Un tip uzual de registru utilizat in microcalculatoare este registrul de 8 biti de tip latch1. Din punct de vedere functional.18.

c. Demultiplexor 1 la 4 Un decodificator este.21. in esenta. cand A=0. se inhiba operatia intregului circuit. 2. si se selecteza linia D0.b). circuitul va avea in acest caz patru linii de iesire.NOTIUNI INTRODUCTIVE 2.22 prezinta diagrama bloc si tabela de adevar a unui decodificator 3 la 8.9 Demultiplexoare si decodificatoare Un demultiplexor indeplineste functia opusa unui multiplexor. 2.20. si se selecteaza D1.2. B=0. Linia de intrare D poate fi conectata la oricare dintre cele patru linii de iesire. semnalul D este transferat la iesirea O0 (la activarea circuitului. un demultiplexor fara intrari de date. El poate fi utilizat la convertirea unui sir de semnale numerice transmise serial.20. prin semnalul E=0). etc. intr-o forma paralela.20. 2. El converteste un cod pe n biti in maxim 2n iesiri individuale. etc. B=1 ⇒ A ⋅ B = 1. Simbolul. pentru A=0. E D3 D3 D2 D1 D0 Mux 4 la 1 f f (a) A B D3 D2 D1 D0 D1 D2 f f f (b) D0 (c) E B A Fig. Fiind posibile 4 combinatii distincte ale celor doua semnale de control A si B. Diagrama bloc a acestui circuit este prezentata in figura 2. intr-o forma seriala. Un circuit multiplexor poate fi privit ca un circuit care converteste informatia paralela de la intrare. prin semnalele de control A si B. 2-15 . Figura 2. D E DeMux 1 la 4 O0 O1 O2 O3 A B Fig. B=0 ⇒ A ⋅ B = 1.21. Iesirile decodificatorului sunt active pe 0. Daca E=1. Exista si circuite cu doua sau mai multe multiplexoare. Implementarea schematica a circuitului este data in figura 2. Astfel. schema functionala si schema logica a unui multiplexor 4 la 1. obtinut prin sinteza functiei f conform expresiei f = E ⋅ (A ⋅ B ⋅ D 0 + A ⋅ B ⋅ D1 + A ⋅ B ⋅ D 2 + A ⋅ B ⋅ D 3 Cand A=0.

inversoare (NOT). decodificatorul din figura 2. dupa caz. aceste circuite contin combinatii de porti logice "SI" (AND) si "SAU" (OR). circuite aritmetice. exista mai nou si circuite PLD reprogramabile. De exemplu. din cadrul sistemelor digitale.. circuitele PLD sunt circuite cu o singura utilizare (se pot programa o singura data).. 1 X 0 1 0 .. decodificatoarele sunt dotate cu mai multe linii de activare.. Ele pot fi programate pentru a implementa functii logice specificate. comparatoare logice. . Decodificatorul are o linie de activare. In esenta. (unele active pe nivel logic "0".. 2. Nu vom mai intra in detalii. . care vor fi date. . etc. servind la selectia cipurilor de memorie. Schema si tabela de adevar a unui decodificator 3 la 8 Dintre circuitele MSI intalnite deasemenea in sistemele microprocesor mai mentionam encoderele (circuite complementare decodificatoarelor)...22. 0 X 0 0 0 . si bistabile.. De multe ori. uzual. altele pe nivel logic "1")..2. Probleme specifice sistemelor microprocesor sunt si cele legate de circuite de generare a semnalelor de paritate. Uzual. . in masura necesitatii. Gama de tipuri de asemenea circuite este destul de larga.22 poate fi utilizat la selectia unuia din 8 cipuri de memorie. la aparitia respectivelor circuite in sistemele ce vor fi prezentate.. in functie de codul de selectie al liniilor de intrare. utilizate tot mai mult la sinteza unor parti componente de logica combinationala si / sau secventiala.. .BAZELE MICROPROCESOARELOR Decodificatoarele sunt utilizate in sistemele microprocesor.. 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 A B C cod intrare 1 1 1 1 1 1 1 0 Fig.. a porturilor sistemului. 2-16 ..10 Circuite logice programabile (PLD) O categorie aparte de circuite logice. E Decod 3 la 8 O0 O1 O2 O3 O4 O5 O6 O7 intrari E A B C O O O 0 1 2 iesiri O O 3 4 O 5 O 6 O 7 1 0 0 0 . utile in fazele de proiectare si testare a schemelor implementate.programable logic devices)..2... ceea ce mareste flexibilitatea acestor circuite. furnizat de catre microprocesor.... . 1 X 0 0 1 . o reprezinta circuitele logice programabile (PLD ... . sunt fabricate in tehnologie CMOS bipolar. circuite tristate. ... etc.

b.24). 2-17 . poarta numele de "product-term". se determina de fapt distrugerea unora dintre fuzibile.10.23. conectate la o structura fixa cu porti OR (v. se implementeaza pe baza matricii de conexiuni.2. Initial. prin conexiunile care raman intacte.24). combinatiile necesare pentru a sintetiza functia logica dorita si a obtine semnalul de iesire (X in exemplul din figura 2.23. sau "P-term" (v. Dupa cum se remarca din figura 2. 2. In figura 2. Prin programarea circuitului. uzual sunt selectabile in matrice semnalele de intrare sau negatele lor. circuitele PLD implementeaza expresii booleene utilizand matrici (retele) de porti AND pe linii.NOTIUNI INTRODUCTIVE Observatie (a) (b) A A B B C C AB C In esenta. coloana conectand semnalele A.Programable Logic Array Sunt circuite care contin o matrice programabila de porti AND. Intre semnalele de intrare (A.23 Simboluri utilizate pentru B. Fig.24). care conecteaza semnalul de intrare la poarta logica AND (sau OR) de pe coloana respectiva.24. Din motive de simplitate a schemelor.1 Circuite PAL . un "P-term" poate fi tri-statat si se poate aplica sub forma de semnal de intrare in circuit. Fiecare combinatie a semnalelor de intrare care se aplica la intrarea unei porti AND (sau OR) a circuitului PLD. pentru a indica conectarea unor semnale la intrarile unei porti (AND sau OR). echivalenta cu schema din figura 2. 2. indica prezenta unui fuzibil intact.2. astfel incat in final. descrierea circuitelor PLD.24 functia booleana implementata are expresia (dedusa usor din analiza schemei de conexiuni a semnalelor circuitului): X = p + q + r + s = ABCD + ABCD + EF Circuitele PAL pot fi prevazute la iesire si cu registre. iesirile PLD-ului fiind iesirile portilor OR. toate semnalele de intrare sunt conectate la toate portile circuitului (matricea are toate fuzibilele intacte). C. sa se sintetizeze functia logica dorita intre semnalul de intrare si cel de iesire. D. E si F in exemplul din figura 2.fig.23. Semnele (x).fig. 2.a. se utilizeaza simbolic reprezentarea din figura 2. conectate la porti OR pe coloane. C la intrarea portii AND). B. utilizabile pentru a sintetiza circuite secventiale. de la intersectia unei linii cu o coloana. Vom prezenta in continuare principalele tipuri de circuite PLD si caracteristicile lor de baza. Deasemenea.

B.2. O/P1 si O/P2. etc. este posibila si uneori convenabila utilizarea lor si in proiectarea circuitelor logice. structura interna a unui circuit PROM este o retea fixa de porti AND si o retea programabila de porti OR.10. semnalele de iesire au expresiile: O / P0 = P0 + P2 = CBA + CBA O / P1 = P2 + P4 = CBA + CBA O / P2 = P3 + P4 + P5 = CBA + CBA + CBA 2-18 . seturi de tabele de date constante. (De remarcat ca fiecare semnal de iesire poate reprezenta o combinatie a mai multor P-term. Figura 2. ceea ce nu se intampla la circuitele PAL). se genereaza semnalele O/P0. se selecteaza in mod unic o combinatie a semnalelor P0 la P7 (reprezentand 8 P-term ficsi). Pentru fiecare combinatie a semnalelor de intrare (adresa).25 prezinta structura unui PROM cu trei semnale de intrare (adrese) . prin programarea retelei OR.A.24. si trei semnale de iesire (practic. este un circuit de memorie cu 8 celule de cate 3 biti fiecare). Corespunzator acestuia.2. stocand coduri de program. Structura de principiu a unui circuit PAL 2. Totusi.Programable Read Only Memory Uzual circuitele PROM sunt incadrate si utilizate functional ca memorii cu continut nealterabil (fix).2 Circuite PROM . Pentru exemplul din figura 2.BAZELE MICROPROCESOARELOR linii P-term A B C D E F Fuzibil intreg p q r s X X Fig. Astfel.25. C.

Contin retele programabile atat pentru portile AND cat si pentru cele OR.2.NOTIUNI INTRODUCTIVE A B C P0 P1 P2 P3 P4 P5 P6 P7 O/P0 O/P1 O/P2 linii P-term fixe Fig.26.3 Circuitele FPLA .2. ele nu sunt neaparat utilizate la capacitatea lor maxima. cat si registre pentru implementarea circuitelor secventiale. sintetizand semnalele: linii P-term A B C D P0 P1 P2 P3 O/P0 O/P1 O/P2 Fig.26 prezinta structura unui circuit FPLA. deoarece se prefera uzual proiectarea cu retele AND sau cu retele OR (deci utilizand doar unul dintre cele doua tipuri). Schema de principiu a unui circuit PROM utilizat pentru sinteza functiilor logice 2. Mai mult.10. Schema de principiu a unui circuit FPLA 2-19 . Circuitele FPLA sunt mai flexibile decat circuitele PAL sau PROM.25.Field Programable Logic Array.2. pot contine si circuite tristate pentru conectarea iesirilor la intrari. Circuitele FPLA reprezinta primele tipuri de circuite PLD. dar mai lente decat acestea. Figura 2. La fel ca si circuitele PAL.

27).fig. cu structuri flexibile.10. cu fuzibilele din reteaua programabila care odata distruse nu mai puteau fi refacute. si bistabile incorporate pentru memorarea variabilelor de stare. cand este uzuala modificarea. Au o structura de baza similara cu cea a circuitelor FPLA (deci retele programabile AND si OR). Acum. pentru stergerea informatiei. a structurii circuitului. prin radiatii ultraviolete). Acestea 2-20 . intrarile asincrone ale registrelor pot fi programate.2. nu de plastic.BAZELE MICROPROCESOARELOR P0 = A⋅ B. reinitializate (prin expunere la radiatii ultraviolete). Pentru sinteza functiilor logice si programarea circuitelor PLD.2.10. Circuitele PLD din prima generatie au utilizat tehnologia bipolara. Astfel.27. se utilizeaza diverse programe si limbaje specializate. pana la implementarea solutiei finale. exista circuite PLD realizate in tehnologia circuitelor EPROM.2.5 Circuite PLS . Evident. deci reprogramabile. si o retea OR programabila.2. sunt prevazute cu o fereastra de cuart. testate si. Mai trebuie specificat ca unele circuite PLD evoluate sunt prevazute la iesire cu structuri complexe. T sau JK).Erasable PLD. daca este necesar. Structura de principiu a unei "macrocelule" a unui circuit PLD evoluat 2. 48 Pterm. O/P0 = P2. si reprogramate. Astfel. se pot utiliza semnalele de iesire direct sau ca semnale de intrare. care inlocuiesc circuitele OR si bistabilele. ele pot fi programate. P2 = A ⋅ B ⋅ D . Ca un exemplu.Programable Logic Sequencer Acestea reprezinta circuite PLD optimizate pentru utilizarea in sinteza circuitelor secventiale complexe (masini de stare . circuitul PLS167 are 6 bistabile SR. O/P1 = P0+P1+P3. iesirile pot fi programate sa fie active high sau low. ce pot fi programate in diverse configuratii. pretul acestor circuite este sensibil mai ridicat decat la circuitele cu o singura utilizare (sunt realizate in capsula ceramica. numite "macrocelule" (v. I/O de la reteaua AND set Q D clk reset catre reteaua AND MUX control multiplexor reactie iesiri MUX control Q selectie iesiri multiplexor Fig.4 Circuitele EPLD . si chiar tipul registrului poate fi setat (D. iterativa. P3 = C⋅D O/P2 = P2+P3 2. SR. uzual specifice pentru anumite familii de circuite PLD. P1 = B⋅C⋅D. Aceste circuite sunt foarte utile in etapa de dezvoltare a unui produs nou.state machines).

se poate arata ca la ora actuala. In plus si din punct de vedere economic. circuitele PLD capata o tot mai mare raspandire in proiectarea si implementarea sistemelor digitale. la care este uneori dificila sinteza functiei logice aferente. Daca strategia abordata initial in proiectarea circuitelor logice era de a se minimiza la maximum schemele implementate. flexibilitatea (la circuitele reprogramabile). testare. aceste circuite se dovedesc de cele mai multe ori o alternativa viabila la structurile logice sintetizate cu componente logice discrete "clasice". Se poate ajunge ca. in scheme cu functionalitate similara. o solutie continand doar cateva circuite MSI complexe. de exemplu. sa fie mult mai ieftina decat o solutie optimizata la maximum. chiar daca in final foloseste un procent relativ scazut din capacitatea circuitelor respective. etc. compactitatea solutiei finale. sunt caracteristici deosebit de atractive pentru proiectantul acestor sisteme. programul genereaza comenzile de programare a circuitului PLD. reprezentand instrumente moderne de lucru. In concluzie. Pe baza descrierii facute de catre utilizator. implementate cu circuite PLD. bistabile. la preturile curente ale componentelor existente. transpunand proiectarea de la sinteza schemelor logice propriu-zise. Tehnici speciale si programele aferente sunt deasemenea disponibile pentru a se converti scheme existente. ce implementeaza structura descrisa functional de catre utilizator. posibilitatile de simulare. dar implementata cu circuite logice conventionale (porti.) 2-21 . este mai importanta minimizarea numarului global de circuite integrate folosite. la elaborarea functiilor (expresiilor) logice ce se vor implementa.NOTIUNI INTRODUCTIVE faciliteaza munca proiectantului de circuite. Proiectarea la nivel logic.

a fost implementata cu ajutorul sistemelor microprocesor. aceasta prezentare face o trecere in revista a notiunilor fundamentale legate de sistemele microprocesor. desi prezentarea este facuta in general distinct. o aplicatie data (prin realizarea unui program adecvat). a diverse sisteme automate complexe. Aceasta varietate de functii si posibilitati. Aria lor de utilizare este considerabil marita fata de cea a calculatoarelor electronice mari. de lumea inconjuratoare. prin interfete specifice.3. cel ce implementeaza structura unui astfel de sistem trebuie sa cunoasca disponibilitatile de programare (setul de instructiuni) ale microprocesorului utilizat. iar cel ce utilizeaza sistemul are nevoie de informatii constructive si functionale pentru a implementa in mod optim. analogice. in scadere exponentiala.). nu in ultimul rand. cu un numar redus si standardizat de circuite integrate. al acestor tipuri de echipamente. ceea ce limita foarte mult extinderea masiva a productiei acestora. poate implementa aplicatii limitate doar de marginile imaginatiei omenesti. semnalizari diverse. nu s-a realizat o separare neta la prezentarea structurii hardware sau software a microcontrolerelor. ca performante. analogice. Era necesar un nou concept in ceea ce priveste functionalitatea unui asemenea circuit. prin dimensiuni mult reduse. functionare nepretentioasa din punct de vedere al conditiilor de mediu ambiant. denumite microcalculatoare. ai acestor puternice instrumente. Aparitia sa este legata de necesitatea producerii unor circuite integrate pe scara larga (LSI) universale. necesare la intelegerea principiilor de functionare ale unui microprocesor. Utilizatorii actuali. . pretul. cat si a celei referitoare la programarea lor (software). Pe de o parte.CONCEPTE GENERALE Microprocesorul reprezinta probabil cea mai importanta realizare a industriei electronice a ultimelor doua decenii. circuitele LSI erau proiectate pentru o aplicatie anume. un astfel de sistem are posibilitatea culegerii de informatii din exterior (marimi numerice. etc. Pana la crearea microprocesorului. ale programarii acestuia. si a actionarii spre exterior (dand comenzi numerice. apte de a fi utilizate intr-o gama extinsa de aplicatii. si. trebuie sa stapaneasca intr-o oarecare masura notiunile fundamentale. aceasta gama deosebit de larga de sisteme. flexibilitatea utilizarii lui. Pentru punerea in acord a cunostintelor de baza. Din aceste motive. uneori chiar dezvoltand structura functionala de baza a oricarui calculator electronic "clasic". viteza de lucru comparabila (tot mai mare la tipurile noi de microprocesoare). fiabilitate ridicata. permitand realizarea. semnalizari). comunicand rezultatele operatiilor efectuate. Legat. cat si cei potentiali. a prelucrarii lor (diversi algoritmi de calcul si decizie). atat ale structurii constructive (hardware) a microcalculatoarelor. MICROPROCESOARE . Preluand.

il reprezinta flexibilitatea sa . el reprezinta un circuit logic de o extrema complexitate. Pe baza acestor instructiuni se elaboreaza programul (de catre programator) pe care il va executa microprocesorul. ca importanta si posibilitati. Proiectantul sistemului microprocesor trebuie sa stapaneasca atat proiectarea circuitelor logice. Memorat intr-o memorie. in esenta. practic intr-un numar nelimitat de aplicatii. si uneori modificarile nu sunt asa de simple pe cat par a fi. in vederea alegerii solutiei optime (combinatia hardware . trebuie evidentiat faptul ca dezvoltarea de noi programe consuma un timp ce poate fi apreciabil. la nivelul software al sistemului. Aceasta face ca. Deci. pentru o aplicatie data. deci prin software. Totusi. Intr-un mod oarecum figurat.software cea mai indicata) pentru o aplicatie data.1 MICROPROCESORUL --. Astfel. operatii binare etc. reprezentabil. un sistem microprocesor? Cunoasterea raspunsurilor la aceste intrebari ofera baza necesara pentru evaluarea justa a posibilitatilor si performantelor diverselor sisteme. Calitatile cerute unui bun programator sunt insa similare. ce este un microprocesor? In esenta. cat si tehnica programarii.PREZENTARE FUNCTIONALA Intrebarile la care vom incerca sa raspundem in urmatoarele paragrafe sunt: ce este un microprocesor? ce poate face el? cum functioneaza? cum interactioneaza cu lumea inconjuratoare? cum se implementeaza. la combinatia hardware-software optima oferind performante maxime pentru un cost al instalatiei dat. Ceea ce trebuie remarcat de la bun inceput este faptul ca microprocesorul are posibilitatea de a executa actiuni proprii unui anumit numar de instructiuni (uzual cateva zeci). din punct de vedere functional. in esenta.BAZELE MICROPROCESOARELOR Se considera ca cititorul poseda un bagaj minim de notiuni legate de structura si functionarea circuitelor logice (combinationale si secventiale). implementarea acelei structuri logice echivalente. hardware. celor cerute proiectantului de structuri logice. Proiectarea cu microprocesoare implica trecerea de la proiectarea cu circuite logice combinationale si secventiale. in efectuarea sau coordonarea tuturor operatiilor ce au loc in functionarea unui microcalculator. se implementeaza structuri logice prin program. cat si de aritmetica unui calculator (baze de numarare. reprezentand elementul central (CPU1 ). si care ii confera totodata exceptionala gama de posibilitati de utilizare. Elementul specific. care diferentiaza microprocesorul de o astfel de configuratie clasica. printr-o structura formata din elemente de logica combinationala si secventiala. un circuit integrat LSI. a sistemului microprocesor. care. determina actiunea 1 CPU: Central Processing Unit = unitate centrala de prelucrare 3-2 .). pe baza lui. odata decodificate. ci sa se obtina prin implementarea unui program specific. de fapt. care alcatuiesc setul sau de instructiuni (si care este specific fiecarui tip de procesor in parte). programul este "citit" (adus din memorie in microprocesor). 3. sa nu reprezinte o interventie la nivelul structurii constructive. Modificarea aplicatiei nu reprezinta altceva decat modificarea programului microprocesorului. instructiune cu instructiune.

). cat si una software. legat de actiunile specifice efectuate de catre microprocesor. elemente de executie. Nu este locul si nici nu este necesar. cat si interfete specifice de conectare la un proces fizic controlat (traductoare. a acestuia. exista disponibil un numar foarte mare de microprocesoare. legat de succesiunea si durata acestora. 3. sa se abordeze structura de detaliu. O modificare in comportarea sistemului se obtine asadar printr-o modificare (sau mai multe) in program. Legatura intre aceste doua abordari este extrem de importanta. etc. Dupa cum sa specificat.1 Functiile de baza ale microprocesorului La ora actuala. Evident.1.MICROPROCESOARE . (Aceasta va determina si particularitatea depanarii unui sistem microprocesor. constructiv interna. a programului).). a bunei functionari a circuitelor.1. cat si datele numerice (de intrare. aceste caracteristici functionale comune provin din filozofia crearii microprocesoarelor. Punctele de vedere din care se va face prezentarea sa vor fi cel functional. Memorie Memorare program Memorare date MICROPROCESOR (CPU) Interfete periferice externe Iesire Intrare control magistrala date/adrese De la / la periferice magistrala date 3-3 . etc. care pot fi atat echipamente standard (tastatura. puternice. Prin sectiuni specifice de intrare sau iesire. toate microprocesoarele sunt proiectate pentru a efectua un numar de operatii de baza. Orice eroare de program poate determina functionarea partial sau complet defectuoasa a sistemului. calculatorul comunica cu perifericele exterioare. si la un pret deosebit de avantajos.CONCEPTE GENERALE dorita. in vederea utilizarii adecvate a unui microprocesor. programul trebuie sa contina doar instructiuni al caror cod este "inteles" de catre microprocesor (apartin setului lui de instructiuni). si cel temporal-secvential. Desi exista multe deosebiri in structura si tehnologia lor de fabricatie. Se remarca faptul ca intr-o sectiune de memorie sunt memorate atat secventele de instructiuni ce alcatuiesc programul. sau rezultate intermediare sau finale). produse de catre diferite firme. afisaj. ca instrumente complexe utilizate la implementarea unor sisteme numerice flexibile. Structura de baza a unui sistem microcalculator este prezentata in figura 3. Este necesara o depanare hardware a schemei de conexiuni. de altfel.

(si acelea. corelat cu memoria si perifericele sistemului Figura 3. care permite legatura intre sistem si lumea exterioara. functia aritmetico-logica. Aceasta delimitare functionala nu este stricta. deasemenea. functia de CONTROL. si a operatiilor efectuate in diferitele sectiuni ale acestuia. In speta. Functional. si (uneori) a instructiunilor programului. Se disting pe grupe functionale: manipularea informatiilor (instructiuni pentru microprocesor. care permite pastrarea informatiilor (date. la diverse tipuri de microprocesoare. in general. partial) acopera ele insele necesitatile de memorie ale sistemului. doar unele microprocesoare.Arithmetic Logic Unit = unitate aritmetico . sectiunile de intrare si iesire ale microprocesorului apar in general in mica masura la nivelul microprocesorului ca legaturi directe spre exteriorul sistemului. a unora din cele 5 sectiuni. functia de memorare (MEMORY).3.2 prezinta structura functionala a unui microprocesor in contextul utilizarii memoriei si a perifericelor sistemului. cat si date transmise sau primite de la diferite componente ale sistemului). Reprezentarea functiilor unui microprocesor. functia de iesire (OUTPUT). Figura 3.3. sau periferice Efectueaza operatii Ia decizii Controleaza logice aritmetice (b) Registrele interne Memoria Componentele / sistemele externe Fig.3 prezinta fluxul de informatie intre cele cinci componente functionale in sistemul microprocesor. informatia este adusa. ori ca data in operatii aritmetice sau 1 ALU . sub coordonarea functiei de control. in memoria sistemului. un sistem microprocesor (ca de altfel orice calculator numeric). in sensul existentei intr-o proportie variabila. in memorie Receptioneaza Transmite Memoreaza Analizeaza Informatie Date de la memorie. Informatia poate fi utilizata ori pentru a "spune" microprocesorului ce are de facut (instructiuni). rezultate). care inglobeaza totalitatea actiunilor de secventializare si control ale activitatii sistemului. Uzual. (INPUT). prin functia de intrare. (implementata prin ALU1) care permite efectuarea operatiilor aritmetice si logice in sistem. prezinta cinci functii de baza: functia de intrare (INPUT). aceasta este exterioara unitatii centrale.2.BAZELE MICROPROCESOARELOR Fig. Uzual. care permite legatura intre lumea exterioara si sistem.1 Structura de baza a unui sistem microcalculator Programul.logica (UAL) 3-4 . executia diferitelor operatii de calcul. si controlul si supervizarea tuturor componentelor din sistem.

si a sincroniza transferul datelor in sistem. arhitectura von Neuman este relativ mai simplu de implementat. informatia este citita si decodificata de catre microprocesor. Dupa caz. (In caz general. cat si. in marea majoritate a structurilor utilizate. Datele si rezultatele sunt deasemenea vehiculate intre procesor si memorie.L. Doua dintre sectiunile sistemului sunt continute intotdeauna integral de catre microprocesor: Blocul ALU . functia de iesire (OUTPUT). capabile sa proceseze date numerice. si operatii logice.3. utilizata practic in exclusivitate la realizarea microprocesoarelor uzuale. alcatuind programul. Se remarca delimitarea. unitatea centrala de prelucrare (CPU). se activeaza. Ca o remarca speciala. o paralelizare complecta a 3-5 . intr-o secventa de program. programabile. in mod curent. pe baza unui set de instructiuni ale utilizatorului.3. in cazul procesoarelor DSP. care genereaza si coordoneaza toate semnalele de control necesare pentru a executa operatiile de calcul din ALU. uzual bazate pe trei operatii fundamentale: adunare. Arhitecturile recentelor tipuri de microprocesoare au insa elemente de prelucrare paralela. executandu-se in mod secvential instructiunile programului. modul de conectare si functionarea componentelor de baza ale unui sistem de calcul. Control Microprocesor control informatie Fig. va executa cate o singura instructiune la un moment dat. cu asa numita arhitectura Harvard. tot sub comanda functiei de CONTROL. conform programului. inglobate de catre microprocesor. care reprezinta o colectie de circuite logice complexe. O functie esentiala a sectiunii de CONTROL este aceea de a decodifica si executa instructiunile programului pe baza caruia functioneaza intregul sistem. scadere.CONCEPTE GENERALE logice. In aceasta arhitectura. Structura functionala si fluxul de informatii dintr-un sistem microprocesor Din memorie.3. sub forma de instructiuni. a functiilor sistemului. pe asa numita arhitectura de tip von Neuman. Sectiunea de CONTROL . coordonat de catre functia de CONTROL. s-au bazat si se bazeaza inca.MICROPROCESOARE .A. tot sub incidenta functiei de CONTROL. Intrare Memorie Iesire U. Desi mai lenta decat in sistemele in care se executa mai multe instructiuni deodata (procesare paralela). informatia poate fi rezidenta in mod permanent in memoria sistemului). in figura 3. pentru transfer de informatie spre iesirea sistemului.

informatia (instructiuni si date). prezentandu-se intr-un 3-6 . se preia de la intrare si se memoreaza (activandu-se. prelucrate in ALU. pe parcursul efectuarii tuturor operatiilor sistemului. activandu-se functia de OUTPUT. de catre sectiunea de control. evident.3 Reprezentarea informatiei Implementarea electrica / electronica a functiilor calculatorului este posibila. Aceasta conduce. In t2. cele doua sectiuni. pe durate de timp fixe.BAZELE MICROPROCESOARELOR lantului de citire / decodificare instructiuni. Aceasta sectiune selecteaza in mod corespunzator (activeaza).1.4. se dezactiveaza ALU.2 Aspectul temporal . Rezultatele sunt memorate in memorie.A. O diagrama de timp simplificata a activarii sectiunilor sistemului este prezentata in figura 3. si se transfera rezultatele spre exteriorul sistemului. determinate de specificul operatiei ce se executa. 3. instructiunile din memorie sunt preluate si executate (ele alcatuind programul microprocesorului). si impreuna cu datele. Un semnal de ceas de sistem (uzual controlat cu un cristal de cuart). rezultate) se memoreaza si se prelucreaza de catre microprocesor in forma binara. la cresteri sensibile ale performantelor respectivelor sisteme. fata de cele "clasice". ca durata si succesiune. si transfer al datelor in sistem. realizate in arhitectura von Neuman. prin utilizarea bazei 2 de numarare (numerele 0 si 1). Citire informatii activare Prelucrare Iesire rezultate Intrare Memorie activare U. Intr-o ultima etapa (t3). Ele trebuie sa fie interpretabile in mod unic de catre microprocesor. secvential functiunile microprocesorului.L. determina executia dorita de operatii ale sistemului.secvential Desfasurarea operatiilor efectuate de catre diversele componente functionale ale sistemului este controlata.3. si se realizeaza. Astfel. toate informatiile (instructiuni sau date. Inlantuirea temporala a operatiilor sistemului microprocesor Pe intervalul t1. este utilizat pentru sincronizarea si secventializarea diverselor operatii si semnale. de INPUT si MEMORY).4. 3. respectiv efectuare operatii de calcul. corespunzator. activare Iesire T1 T2 activare T3 Fig.1.

se executa aceasta operatie. adresa sa . obtinandu-se operanzii. A citi o anumita instructiune sau data din memorie va insemna. numere . Cuvantul de instructiune consta din doua parti: codul operatiei (care indica ce operatie se va executa).5). iar microprocesorul le citeste si executa secvential. prin intermediul functiilor de control. (Uzuale sunt microprocesoarele cu cuvinte de 8 biti=1 byte. si asupra carei (caror) valori (date). Va exista deci cate o combinatie unica a bitilor cuvantului de instructiune. in ultima vreme afirmandu-se si extinzandu-se cele de 16. Fiecare instructiune din programul microprocesorului va fi formata din unul sau mai multe cuvinte de instructiune. pentru un microprocesor cu formatul cuvintelor de 8 biti.4 Memorarea informatiei Plecand de la o reprezentare intuitiva.3. in mod practic. a carei 3-7 . un numar care simbolizeaza (si se numeste). Cod operatie Operand cuvint de instructiune cuvint de date (LSB) B0 0 0 1 0 cuvint de instructiune Date . LSB: bitul cel mai putin semnificativ (last significant bit).b). acea celula de memorie.1.CONCEPTE GENERALE format specific in acest scop. litere (MSB) B7 1 0 0 a 0 cod operatie indica operatia de adunare b operand indica codul unui registru continind data ce se aduna Fig. se citeste un cuvant de instructiune. Depinzand de conceptia proiectantilor microprocesorului. 3. in mod unic. Acestea "spun" procesorului ce are de facut. alcatuind asa-numitele cuvinte de instructiuni.b). si a operandului asupra caruia se va efectua operatia dorita (combinatia 010 in fig. respectiv cuvinte de date (fig. acest format este o combinatie de lungime fixa. 3. In esenta. pentru desemnarea codului operatiei (combinatia 10000 in fig. se decodifica. MSB: bitul cel mai semnificativ (most significant bit) Instructiunile sunt memorate in ordinea executarii (cu exceptiile ce se vor prezenta la analiza detaliata a tipurilor de instructiuni). Decodificarea cuvantului de instructiune va furniza astfel microprocesorului informatiile necesare pentru a sti ce operatie se executa. locatia lor si se executa operatia indicata. de simboluri binare.5 este un exemplu de reprezentare a cuvintelor de instructiune. 32 si chiar 64 de biti).5. Apoi se trece la o noua instructiune etc. a se activa. Reprezentarea informatiei (instructiuni sau date).5.5. Figura 3. de genul organizarii numerelor de telefon. si operanzii (care indica asupra cui se va efectua operatia indicata de codul operatiei). 3.MICROPROCESOARE . fiecare cuvant de instructiune sau date are asociat. 3.

pentru operatie de scriere. sau informatii alterabile in cursul desfasurarii programului. sau de la memorie la microprocesor. o adresa proprie.).6 prezinta modul de organizare a unei astfel de memorii. Transferul se va efectua pe toate cele n linii de date simultan (in paralel). informatia din ea este permanenta si nu dispare la incetarea alimentarii calculatorului. Bit n Adresa 1 Adresa 2 Adresa 3 Bit n-1 Bit 0 Adresa m citeste/ scrie (R/W) Intrare Intrare data Iesire data Iesire data data Intrare Iesire data data Fig.Read Only Memory = memorie "citeste numai" RAM . In mod corespunzator. pentru o operatie de citire). Dupa cum memoria contine informatii fixe (in speta programe). Organizarea interna a unui circuit de memorie de m cuvinte de cate n biti 1 2 ROM . fiecarei linii corespunzandui. exista memorii de tip ROM1.este raspunderea programatorului de a sti ce se va gasi acolo si de a se ingriji de corectitudinea amplasarii lor) este prelucrat in mod corespunzator de catre microprocesor. pe cuvinte de n biti (n = numarul de biti din cuvantul de date sau instructiune al microprocesorului --. Prin intermediul semnalului R/W (citeste/scrie). la / de la aceasta celula de memorie.8.BAZELE MICROPROCESOARELOR adresa este cea dorita.Random Access Memory = memorie cu acces aleator 3-8 .3. Figura 3. Memoria RAM permite scrierea si citirea informatiilor. Ea este o memorie volatila (se pierde informatia din ea. egal cu cel al cuvantului de instructiune sau de date. sensul transferului de informatie fiind indicat de sectiunea de CONTROL. 16 etc. Memoria sistemului este organizata sub forma unei matrice. cu liniile avand un numar de celule (biti). deci sensul fluxului de informatie (de la microprocesor la memorie. Continutul ei (instructiune sau data --. Selectarea unei astfel de celule permite accesul de la / la microprocesor. Aparitia unei operatii cu memoria de la o anumita adresa va determina activarea tuturor celulelor de memorie elementare de la adresa respectiva (de pe linia cu aceeasi adresa). sectiunea de CONTROL va indica operatia ce se executa. in mod unic. respectiv RAM2. informatia de la microprocesor va fi inscrisa in celulele adresate (la scriere).6. sau va fi preluata de la memorie de catre microprocesor (la citire). O memorie ROM poate fi doar citita. prin oprirea alimentarii circuitului).

3. Grupurile de interconexiuni cu functii similare. constituind calea de legatura dintre ele. reprezentare si memorare a informatiilor. Practic. mult mai lente decat magistralele paralele. celule cu destinatie speciala in memorarea. In figura 3. decodificarea si executarea instructiunilor. cat si memorie RAM (de uz general. ale unei sectiuni.).CONCEPTE GENERALE Trebuie mentionat ca microprocesorul poate contine pe cip atat memorie ROM (eventual programe). realizand functiile si operatiile dorite.5 Conceptul de program Se ajunge.7 se reprezinta o structura de principiu a modului de interconectare intre diferitele elemente componente ale sistemului microprocesor prin intermediul diferitelor magistrale ale acestuia. Deoarece unitatea centrala nu poate alimenta simultan un numar prea mare de circuite exterioare (exista valori limitate ale curentilor pe care acesta ii suporta sau genereaza). executarea unei secvente dorite de operatii. se numesc magistrale. si cu majoritatea interfetelor de intrare / iesire ale sistemului. pentru care datele sunt transmise multiplexat in timp (un cuvant este transmis bit cu bit. sau. legand diversele sectiuni ale unui sistem microprocesor. memorate in memoria sistemului. caz in care magistrala se numeste magistrala paralela. este necesara amplificarea semnalelor de pe magistralele sistemului. cu semnalele omologe ale celorlalte sectiuni. 3. de operare secventiala. este obtinuta prin implementarea unei succesiuni de instructiuni. de date. adrese. toate magistralele interne ale CPU. etc. dupa tipul informatiei transferate: magistrale de adrese. Ele conecteaza semnalele de date. Exista doua seturi de magistrale in orice sistem microprocesor: magistrale interne (reprezentand canalele de legatura intre diversele unitati functionale din unitatea centrala (CPU) a sistemului) si magistrale externe (reprezentand caile de comunicatie intre CPU si componentele externe acestuia). Odata implementat programul si pornita executia sa . alcatuind programul acestuia.). linii telefonice. in mod evident. control. O magistrala poate avea mai multe linii. Legaturi seriale se utilizeaza mai ales pentru transmiterea datelor la / de la echipamente aflate la distanta de CPU (terminale. Fiecare operatie dorita a sistemului va fi implementata printr-o secventa de una sau mai multe instructiuni. sunt organizate ca magistrale paralele. permitand transferul simultan al unui cuvant de informatie (adresa sau data). legaturi multiple si complexe intre diferitele parti functionale ale acestuia. a operatiilor aritmetice si logice etc. Fiecare grup de magistrale poate fi subdivizat in trei categorii. de catre microprocesor. sistemul va actiona conform instructiunilor din program. sub denumirea de registre.2 CONCEPTUL DE MAGISTRALA Sunt necesare. in functionarea unui sistem microprocesor. Astfel. care sunt.MICROPROCESOARE . prin imbinarea conceptelor prezentate. la conceptul final de program. si de control. Exista deasemenea magistrale seriale. pe aceeasi linie). Aceasta adaptare a 3-9 . cat si cele externe care conecteaza CPU cu memoria.1.

se utilizeaza circuite tampon unidirectionale pentru semnalele de pe magistralele de adrese si de control. urmatoare). pana la preluarea ei de catre respectivul circuit.reprezentand in esenta. de pe o magistrala a sistemului. circuite tampon bidirectionale (buffere bidirectionale). in care informatia prezenta pe pinii de intrare. In cazurile in care microprocesorul se interfateaza cu periferice mult mai lente decat unitatea centrala. este inscrisa la primirea unui semnal de control (de scriere). Semnalele obtinute la iesirea acestor circuite formeaza magistrale similare celor din care provin. Circuit tampon Magistrala de control (buffer) unidir. Structura unui sistem microprocesor. par.8.7.C. pe magistralele sistemului. Figura 3. Uzual. Memorie Intrare Iesire (unidirectionala) Magistrala de adrese (bidirectionala) Magistrala de date (bidirectionala) Magistrala de control Fig. distingandu-se in esenta urmatoarele tipuri: circuite tampon amplificatoare de magistrala (drivere).3. Memorie si Magistrala de adrese Circuit tampon Magistrala de adrese (buffer) unidir. Figura 3. pana la inscrierea altor date.9 prezinta structura unui asemenea montaj. si circuite tampon bidirectionale. Utilizarea circuitelor tampon (buffere) 3-10 .P. se pot utiliza circuite pentru retinerea datelor (latch . U. generat direct de catre microprocesor sau de catre un circuit decodificator. care mentine la iesirea catre un afisaj cu segmente informatia dorita.BAZELE MICROPROCESOARELOR semnalelor este efectuata cu diferite tipuri de circuite. pentru magistralele de date (v. circuite pentru retinerea datelor (latch). la un acces ulterior al circuitului latch din schema. registre paralele). Magistralele sistemului.8 prezinta utilizarea circuitelor tampon (uni si bidirectionale). este necesar ca informatia sa fie prezenta la intrarea acestor circuite. periferice Magistrala de control Unitate centrala de prelucrare (CPU) Circuit tampon Magistrala de date (buffer) bidirectional Magistrala de date Fig.3. In aceste cazuri.

unitatea centrala si / sau interfetele de intrari/iesiri (informatia parcurge magistrala in ambele sensuri.). catre microprocesor. prin generarea de 3-11 . Ea vehiculeaza codul binar reprezentand locatia (adresa) datei ce se va utiliza in cadrul operatiei ce se executa.2. atat cuvintele de program (coduri de instructiune).CONCEPTE GENERALE Magistrala de date a b c d e f g a b c d e f g a f e d afisaj cu 7 segmente g b c Unitate centrala de prelucrare (CPU) Circuit memorare (latch) Amplif. sau de la una dintre aceste unitati spre procesor). sau la care se memoreaza un rezultat. la executia instructiunilor. 16. etc. exista magistrale independente pentru transferul cuvintelor de instructiune. in structurile de tip Harvard (specifice procesoarelor DSP). la momente de timp diferite. ea poate selecta adresa celulei de memorie de la care se citeste o noua instructiune. de date intre memorie. intre memorie sau periferice si microprocesor. Astfel. exista o singura magistrala de date. este marita eficienta globala a sistemului.9. cat si celui bidirectional. 32. 3.2. selectat la o operatie de INPUT sau OUTPUT. citite din memoria program. Utilizarea circuitelor de tip latch 3. sau de la procesor la una dintre unitatile externe acestei unitati. pe care se vehiculeaza. respectiv a datelor propriu-zise ale programului. Este sarcina sectiunii de CONTROL de a delimita si indica.1 Magistrala de date Magistrala de date este destinata atat transferului unidirectional de instructiuni de la memorie (citire a programului). prin generarea de semnale specifice (citire sau scriere). in acest al doilea caz. Directia transferului de informatie este supervizata de catre sectiunea de CONTROL a microprocesorului. data.2 Magistrala de adrese Magistrala de adrese este o magistrala unidirectionala. Astfel. Lungimea cuvantului microprocesorului determina numarul de linii de conexiune din magistrala de date (8.adrese selectie Fig. Observatie Daca in structurile de tip von Neuman. activare Decodificator mag.3. cat si cuvintele de date. Multe microprocesoare utilizeaza magistrala de adrese si pentru configurarea adresei echipamentului de intrare-iesire.MICROPROCESOARE .

3 Magistrala de control Aceasta magistrala furnizeaza informatii suplimentare necesare pentru indicarea operatiei ce se efectueaza. si va fi selectat un singur element in care datele se vor inscrie la operatia respectiva. Raspunsul este dat de insasi functionarea secventiala. dupa cum s-a mentionat. semnalele de pe magistrala de control permit selectia unica a echipamentului sau a celulei de memorie careia/de la care. In general. Este asigurata activarea unica. se vor putea adresa 2N celule de memorie prin intermediul a N linii de adresa. pentru adresarea memoriei de program. daca este vorba de o operatie de citire sau scriere din memorie sau intrare-iesire. Tipice sunt semnalul de ceas al sistemului (care asigura functionarea secventiala cu o periodicitate fixa a intregului sistem microprocesor). Astfel. inscrierea informatiei intr-o anumita celula de memorie sau element de iesire se face prin activarea functiei de memorare doar pentru elementul respectiv. Un aspect important ce trebuie clarificat aici este cel ridicat de problema desfasurarii operatiilor in sistem. Corelate cu magistrala de adrese. respectiv a celei de date (ceea ce permite ca in paralel cu executia unei instructiuni sa se poate adresa si citi cuvantul de instructiune urmator). Acestea sunt dotate cu circuite tampon (buffere) proprii. Conectarea pe liniile magistralelor. 3-12 . respectiv adresa la / de la care se efectueaza transferul datelor. Un numar uzual de 65536 (64 ko) celule de memorie vor necesita 16 linii de adresa pe aceasta magistrala. Structurile cu arhitectura Harvard au doua magistrale separate de adrese. Numarul de semnale de pe aceasta magistrala depinde de numarul de semnale de control necesare pentru microprocesorul utilizat. vehiculand la momente de timp diferite. in sensul transferului de informatie pe magistrala. este efectuata prin circuitele tampon respective.2. prin intermediul magistralei de date. pe aceste magistrale.BAZELE MICROPROCESOARELOR semnale de control specifice. a intregului sistem. in mod corect. mentionam si aici ca structurile von Neuman au o singura magistrala de adrese. adresa de unde se citeste cuvantul de instructiune. fara probleme de interferenta a informatiilor. La fel. Observatie Similar remarcii de la paragraful anterior. se transmite/preia informatia. Adresabilitatea unui microprocesor este data de numarul de biti ai magistralei de adrese. Aceste selectii unice vor trebui asigurate prin proiectarea corespunzatoare a circuitelor de adresare si decodificare. care pe aceleasi cai sunt transferate in sensuri si spre/de la echipamente diferite. dupa cum se va prezenta detaliat in paragrafele urmatoare. semnalele de citire/scriere in memorie. sub supravegherea functiei de CONTROL. conform operatiei ce se executa. care sunt selectate (deschise) doar in cazul adresarii circuitului respectiv. va exista o singura sursa a semnalelor de pe fiecare magistrala. 3. a celulelor de memorie sau a elementelor de intrare/iesire cu care se opereaza la un moment dat. (216=65536). la efectuarea unei operatii de transfer de informatii in sistem. citire/scriere pentru intrare/iesire din sistem etc. la executia propriu-zisa a instructiunii.

10 prezinta diagrama functionala detaliata a microprocesorului. variabile in timp. conectate intr-o maniera conventionala. in vederea citirii. aceea a programarii microprocesorului.3. Figura 3. Se vor discuta pe rand: fiecare sectiune functionala a acestuia. Prin program se implementeaza astfel echivalentul unor structuri logice complexe. microprocesorul opereaza in mod secvential. decodificarea si activarea operatiilor acestuia. Se defineste ciclul de instructiune al microprocesorului. (De exemplu. Semnalul de temporizare minima. cat si prezenta in mai multe locatii a elementelor de INPUT---OUTPUT. Trebuie insa mentionata prezenta unor portiuni ale functiei MEMORY atasate celorlalte sectiuni.MICROPROCESOARE . format din instructiuni. sectiunea de CONTROL reprezinta "sistemul nervos" al microprocesorului. se numeste semnal de ceas (clock) al sistemului. Toate aceste cerinte sunt indeplinite de catre sectiunea de CONTROL. 3. activari si operatii specifice ale elementelor sistemului microprocesor apar ca urmare a executiei instructiunilor programului.1.3. operatiile sale si legatura cu celelalte sectiuni. la momente adecvate de timp.3 MICROPROCESORUL . 3. care dureaza un numar variabil de perioade de ceas. ALU. Aceasta conectare intre circuite este in primul rand o functie a programului (software-ului) microprocesorului. Fiecare dintre cele cinci sectiuni de baza sunt identificate in mod unic. in raport cu care se desfasoara toate celelalte temporizari sincronizate din functionarea acestuia. dupa cum se va vedea in continuare. Trebuie sa fie activate in mod corespunzator semnalele de control. decodificarii si executarii instructiunilor in ordinea dorita si evitandu-se interferenta operatiilor. asigurand secventializarea. Se evidentiaza deci necesitatea stapanirii unei noi tehnici de "realizare" a acestor conexiuni logice functionale.CONCEPTE GENERALE Ceea ce poate fi evidentiat acum este faptul ca microprocesorul nu trebuie sa fie privit ca o colectie de circuite digitale. determinat de catre un program memorat. in 3-13 . pentru sectiunile de MEMORY. Selectii. In esenta. 3. INPUT/OUTPUT. Acesta va fi prezentat in maniera de abordare a utilizatorului orientat spre hardware-ul sistemului.PREZENTARE HARDWARE Sa trecem acum la o examinare detaliata a structurii functionale a microprocesorului. Dar programul in sine nu este suficient pentru functionarea sistemului. calculatorul trebuie sa stie de unde sa inceapa citirea din memorie a primei instructiuni din program).1 Functia de control Dupa cum s-a aratat. Aceasta s-a facut pentru o mai buna intelegere a operarii detaliate a hardware-ului microprocesorului.1 Ciclul microprocesorului Realizarea operatiilor microprocesorului are loc in mod secvential-repetitiv.

a. 3. a o decodifica si executa. fiecare la randul lui durand mai multe perioade de ceas (vezi fig.10. Se utilizeaza in acest scop un registru special. Structura ciclului microprocesorului Deoarece microprocesorul executa cate o instructiune la un moment dat. control circuit tampon mag.a). date Fig. este necesar a se cunoaste in permanenta care instructiune se executa (sau va fi executata la pasul urmator). numit registru contor de program (PC = program counter).11. adrese circuit tampon PC RI Decodificare timing si control MAR registre de uz general UAL ROM Registrele UAL RAM circuit tampon mag.11. incepand cu prima instructiune din program. sau pentru fiecare operatie de baza ce trebuie executata.3. mag. Subciclu T1 T2 T3 T4 T5 Ciclul microprocesorului Subciclul 1 Subciclul n Fig. Deoarece programul este memorat la 3-14 . ca fiind secventa de operatii efectuate pentru a extrage o instructiune din memorie. Structura interna a unui microprocesor Ciclul microprocesorului este format din unul sau mai multe subcicluri. care contine adresa urmatoarei instructiuni de program care va fi citita din memorie.3.BAZELE MICROPROCESOARELOR functie de microprocesor si de instructiunea ce se executa. Cate un subciclu este utilizat pentru obtinerea fiecarui cuvant de instructiune sau date.

pana la trei --. in primul subciclu. (In functie de procesor si de instructiunea executata. b.) Fig.3. Subciclul 1 Subciclul 2 Urmatoarea instructiune Se configureaza adresa celulei de memorie la care se memoreaza data Se extrage primul cuvant de instructiune din memorie Se citeste al doilea cuvant al instructiunii (data) si se memoreaza temporar intr-un registru Continutul PC pe magistrala de date Continutul PC pe magistrala de date Operatii interne (decodificare. t5 (prezente sau nu. In perioadele t4. putem considera registrul PC ca un indicator (pointer) aratand unde s-a ajuns cu executia programului la un moment dat. In a doua perioada. in functie de operatia ce se executa). se transfera informatia intre registre sau se efectueaza operatii aritmetice simple. Ciclul microprocesorului. O instructiune poate fi formata din unul sau mai multe --.cuvinte.CONCEPTE GENERALE adrese succesive. In a treia perioada. pregatindu-l pentru urmatoarea extragere din memorie. procesorul citeste un cuvant considerat ca primul din instructiune. Trebuie accentuat ca intotdeauna. un subciclu poate dura si mai multe perioade de ceas). este adus pe magistrala de adrese. continutul PC este incrementat. selectand. celula de memorie dorita.MICROPROCESOARE . continutul numaratorului de adresa (PC). la fiecare transfer al unui cuvant de instructiune din memorie in registrul de instructiuni al microprocesorului (descris in sectiunea urmatoare). Primul subciclu al fiecarui ciclu al procesorului este utilizat pentru extragerea de informatie din memorie (fetch) si are de regula patru perioade de ceas. Odata decodificat. acest cuvant va indica ce instructiune se executa.de regula. contorul de program va fi actualizat uzual prin simpla incrementare cu 1. impreuna cu semnalele de control. Exemplu: memorarea unei constante (continuta in octetul al doilea al instructiunii) Se transfera data in memorie PC = PC + 1 3-15 . In prima perioada.11. etc. Astfel. reprezentand adresa de unde se va citi instructiunea curenta. continutul memoriei adresate este adus in microprocesor si memorat temporar. si daca este necesara citirea suplimentara de cuvinte de date din memorie (efectuata in subciclurile urmatoare).

de la 1 M cuvant de memorie. intr-o celula de memorie externa. Microprocesoarele de 16 si 32 de biti au adresabilitatea mult sporita. catre celula de memorie externa selectata. etc. Revenim cu observatia ca.3. incheindu-se astfel executia propriu-zisa a instructiunii. iar magistrala de date va contine data transferata. iar datele citite de la celula de memorie astfel selectata sunt preluate de catre microprocesor si interpretate ca reprezentand cuvinte de instructiune. se memoreaza temporar intr-unul din registrele interne ale microprocesorului. desi din punct de vedere fizic.b se prezinta structura unei instructiuni de transfer. la citirea cuvantului de instructiune. Aceste registre interne opereaza fara a fi vizibile (continutul lor nu poate fi examinat) sau controlabile (continutul lor nu poate fi modificat direct prin program).pentru detalii. pentru a obtine adresa fizica dorita (de exemplu microprocesorul 8086 . v.11. aceasta data prezenta pe magistrala de date. Trebuie remarcat ca registrul PC al unui microprocesor are o capacitate (numar de biti).BAZELE MICROPROCESOARELOR Astfel. 32M sau chiar mai mult.reactualizat dupa fiecare citire din memoria program). Astfel.cap. de catre utilizator. la inceputul subciclului al doilea al instructiunii (de la adresa de memorie indicata de catre continutul registrului PC . pe magistrala de adrese se va utiliza adresa la/ de la care se va face transferul.12. o noua instructiune poate fi citita. la 16. magistrala de adrese contine intotdeauna valoarea memorata de catre registrul contor de program.4). semnale de control). este coordonata de catre sectiunea de control. A se remarca faptul ca pe magistralele sistemului. Se trece apoi la executarea propriu-zisa a instructiunii. a unei valori specificate in codul instructiunii respective. este inscrisa in celula de memorie externa selectata. In continuare. PC. corelata cu adresabilitatea maxima a procesorului respectiv. iar pe magistrala de date se transmite data respectiva. din registrul temporar al microprocesorului. in cazul instructiunilor de transfer de date externe (la / de la memorie sau interfete de intrare/iesire). Astfel. se vehiculeaza informatii cu semnificatii diferite din punct de vedere functional. cu un registru de 16 biti. sectiunea de control "stie" (din tabela de coduri microprogramate ale microprocesorului) ca trebuie citit si un al doilea cuvant al instructiunii. decodificata si executata. Functionarea intregului sistem. in figura 3. registrele sectiunii de CONTROL apartin sectiunii de memorie a microprocesorului. microprocesoarele de 8 biti au o adresabilitate de 64 ko (kiloocteti) de memorie. in urma acestei decodificari. dupa cum se remarca odata in plus. la diferite momente de timp. spatiul de adresare total va fi de 216 = 65536 celule de memorie. se configureaza pe magistrala de adrese adresa celulei de memorie la care se va efectua transferul. In primul subciclu al instructiunii se citeste si decodifica codul instructiunii.2 Decodificare si control Diagrama functionala a unei sectiuni de CONTROL tipice este prezentata in fig. 3-16 . Mecanisme specifice de adresare apar la unele tipuri de microprocesoare. 3. 3. Prin secventializarea corecta a semnalelor de catre sectiunea de control (adrese. Astfel.1. date. Aceasta valoare odata citita din memoria program. La executia instructiunii. continand valoarea numerica ce se doreste a fi transferata in memoria externa. la care se utilizeaza combinatia mai multor registre. Uzual. functional ele fac parte din cea dintai.

exista un registru intermediar. 3. Continutul celulei de memorie adresata la operatia de fetch este transferat pe magistrala de date. iar o alta poate fi citita de catre microprocesor.12. Registrul MAR este deasemenea un registru intern. ceea ce mareste viteza globala de executie a microprocesorului (in timp ce o instructiune se executa.MICROPROCESOARE . care contine adresa locatiei de memorie curenta cu care se lucreaza (v. este transferat pe magistrala de adrese a sistemului. dimensiunea registrului de instructiune este egala cu dimensiunea cuvantului de date al microprocesorului respectiv (8. si de acolo este memorat in registrul de instructiune. Uzual. registrul de adresa a memoriei (MAR*). Dupa cum se va prezenta si pentru microprocesorul 8086.CONCEPTE GENERALE Magistrala de adrese MAR PC Magistrala Registrul de instructiuni de date Ceas Decodificatorul de instructiune Ceas sistem µP Generator temporizare Generatorul de control T1÷T5 Fig 3. inaccesibil utilizatorului in mod direct prin program]. o alta poate fi decodificata. continutul PC (reprezentand adresa celulei de memorie de unde se va citi acest cuvant de instructiune). daca instructiunea executata nu acceseaza magistralele externe ale microprocesorului. Diagrama functionala a sectiunii de control a microprocesorului La executia subciclurilor de fetch (extragere a cuvantului de instructiune din memorie).fig. fie dintr-unul dintre registrele generale ale microprocesorului . tinand cont ca aceste operatii se desfasoara in sectiuni distincte ale sistemului microprocesor si sunt practic independente una de cealalta). 3-17 . [Uzual. 16 sau 32 de biti). unele microprocesoare au implementata o structura numita "pipeline" (conducta). dupa cum s-a specificat.la operatiile de fetch. care permite citirea in avans a mai multor cuvinte din memoria program.6.o adresa utilizata de catre o instructiune pentru a efectua transferul de date de la / la memorie. Acesta memoreaza cuvantul de instructiune pana la decodificarea instructiunii. si 3.8). Aceasta adresa poate proveni fie din PC .

Implementarea fizica a decodificatorului de instructiune este realizata fie prin integrare echivalenta cu o retea de porti logice. pentru a-i supraveghea functionarea. Semnalul RESET determina si unele initializari interne ale microprocesorului. determina actiunea specifica de executat. contine adresa urmatoarei locatii de memorie ce se va utiliza pentru citirea programului. Prin testarea valorii semnalului de READY. la selectia unui element mai lent. este decodificat de catre decodificatorul de instructiune. Semnalele de control ale sistemului sunt obtinute in generatorul de control. Trebuie mentionat aici faptul ca toate tipurile de microprocesoare au un pin special. in esenta. Deasemenea. sunt mentinute nemodificate pe magistralele sistemului. Aceasta se face introducand un numar de perioade denumite de asteptare (WAIT) in subciclul curent. prin activare. In functionarea unitatii centrale. porturi). Prin decodificarea codului de operatie din primul cuvant al instructiunii.). Decodificatorul de instructiune converteste apoi codul operatiei in secventa corespunzatoare a semnalelor de control si temporizare si declanseaza executia propriu-zisa a instructiunii (transfer de date. Decodificatorul de instructiune este activat doar in subciclurile in care se stie ca informatia de pe magistrala de date contine un cod de instructiune. furnizeaza semnalele de control pentru intreg sistemul microprocesor. contorul de program PC primeste o valoare fixa. furnizat microprocesorului de catre o logica externa corespunzatoare. acestea se citesc succesiv. Aceasta posibilitate este introdusa pentru a permite utilizarea corecta a elementelor externe microprocesorului (memorii. este analizat semnalul de READY (gata). Pe perioada de asteptare. cu adresa primei instructiuni din program). modificat in functie de instructiunea ce se executa. pana ce semnalul de READY devine activ. la startul sistemului. microprocesorul poate prelungi o instructiune pe o durata nedefinita. dupa cum s-a mentionat. tot sub incidenta functiei de CONTROL. sectiunea de control "stie" daca instructiunea este formata dintr-unul sau mai multe cuvinte. la operatia de scriere). cu timpi de selectie si acces mai mari decat ai unitatii centrale. permitand lansarea in executie a primei instructiuni a programului (in speta. semnalele de adrese si control (eventual date. denumit RESET. se va activa semnalul de READY al microprocesorului. el supravegheaza si registrul numarator de program (PC) care. programatorul va amplasa la aceasta adresa inceputul programului). Acesta. in functie de codul citit (combinatia binara a acestuia). generatorul de control este cel mai indicat (cunoscand ce operatie se executa). Astfel. Astfel se desfasoara. cuvantul de instructiune memorat de catre registrul de instructiune. pana cand intreaga instructiune a fost transferata din memorie in microprocesor.BAZELE MICROPROCESOARELOR In continuare. operatii aritmetico-logice. care. fie cu o memorie de tip ROM. Este sarcina proiectantului sistemului de a cunoaste viteza de lucru a 3-18 . prin functia de CONTROL. incrementat sau decrementat. cunoscuta. etc. Deoarece PC va trebui incarcat cu o adresa data (de exemplu. Acesta. doar atunci cand informatia a fost preluata de catre acesta (la operatii de scriere) sau cand este disponibila la iesirile acestuia pe magistrala de date (la operatii de citire). tot sub incidenta sectiunii de CONTROL a acesteia. reprezentand adresa celulei de memorie de unde se va citi aceasta prima instructiune. contine semnalele de control necesare executarii respectivei instructiuni. Corespunzator. aduce sistemul intr-o stare initiala unica. ale carei adrese sunt selectate de catre registrul de instructiune si al carui continut. un ciclu complect al unei instructiuni. pe baza iesirilor decodificatorului de instructiuni si ale ceasului sistemului. la fiecare adresa.

fiecare fiind format.3.MICROPROCESOARE . 3. Desi tipul. un ciclu instructiune dureaza un numar dat de subcicluri. Daca memoriile si porturile sistemului au viteza de lucru suficient de rapida. Generatoarele de control si temporizare (v.3. din manualul de utilizare al unui microprocesor. Trebuie mentionat ca orice operatie externa cipului microprocesor (inclusiv citirea instructiunilor) trebuie sa asigure generarea semnalului de READY.1. Cunoscand. memorie. ALU. de catre generatorul de temporizare (vezi fig. evitand configurarea unei logici de generare a acestui semnal. 3. din memorie sau 3-19 . pentru o frecventa a semnalului de ceas data. dintr-un numar specificat de perioade de ceas elementare. pe baza semnalului de ceas (prezent ca un tren continuu de impulsuri de frecventa fixa). asigurarea unor succesiuni si durate corespunzatoare ale semnalelor vehiculate pe magistralele sistemului. si deci minimizarea si optimizarea cat mai riguroasa a programului). pentru sincronizarea componentelor exterioare microprocesorului. va fi posibila selectia corecta si la momentele de timp necesare a circuitelor exterioare unitatii centrale. microprocesorul sau un circuit aferent specializat sa sintetizeze semnalul de ceas al sistemului. Utilizand o serie de circuite de temporizare si secventializare. este necesara coordonarea functionarii lor. 3. necesitand performante ridicate in ceea ce priveste viteza de calcul a sistemului. (Aceste calcule pot fi necesare in cazul unor aplicatii de timp real.3 Generarea semnalelor de ceas. sa fie "gata" (READY) de a efectua corect operatiile dorite. Semnalul de ceas este utilizat atat intern. etc.fig. si daca programul este corect (pentru a nu se ajunge la selectii incorecte. Temporizarile pentru fiecare subciclu al ciclului microprocesorului sunt obtinute. prin utilizarea unui set de circuite de secventializare si temporizare.1 s-a prezentat o structura posibila a ciclului si a subciclurilor aferente ale unui microprocesor (v. permitand absenta perioadelor de asteptare. in sectiunea de CONTROL. se poate calcula. Deoarece viteza de lucru a diverselor circuite de intrare. cat si extern. acesta va coordona momentele de aparitie a diferitelor semnale de control. Acesta va determina viteza de baza de operare a sistemului. asiguranduse transferul corect al informatiilor in sistem. cu functionarea acestuia. iesire. la tipurile cele mai evoluate de microprocesoare).CONCEPTE GENERALE diverselor elemente ale sistemului microprocesor si de a implementa sintetizarea corecta a semnalului de READY. la randul lui. denumirea si succesiunea exacta a acestor semnale difera de la microprocesor la microprocesor. In par. 3.. durata instructiunii respective. pentru o functionare corecta a acestuia. cat si de vehiculare a adreselor si datelor pe magistralele sistemului. 3.fig. Dupa cum s-a precizat deja. este necesar ca aceste sectiuni. Frecventa normala de lucru a unui microprocesor este de ordinul megahertzilor (1--10--50) MHz (din ce in ce mai mare. numarul si structura subciclurilor fiecarei instructiuni a acestuia. la sincronizarea operatiilor sectiunii de control al microprocesorului.11). Dupa cum s-a precizat deja. de citire si de scriere. Astfel.12) implementeaza aceste functii. operatiile de baza. adrese inexistente in configuratia sistemului microprocesor). activate la un moment-dat. este diferita. se poate activa permanent semnalul de READY. Temporizarea operatiilor Toate operatiile dintr-un sistem numeric se desfasoara la intervale discrete de timp.1. pe baza unei frecvente fixe (impusa de un element exterior de tipul cristalului cu cuart). Aceasta impune ca. Toate acestea vor functiona avand la baza semnalul de ceas de sistem.12).

in figura 3. vor exista semnale de scriere distincte in memorie. In cazul unor memorii mai lente. semnalele de pe magistrala de date a sistemului sunt preluate de catre microprocesor si memorate intr-un registru intern al acestuia. Aceasta diferentiere se va face de catre sectiunea de control a microprocesorului. o relatie mai corecta ar fi: Nr⋅tp > tad + tacc + tds + tab + tdb. se prezinta structura si secventializarile operatiilor de citire. intern.fig. prin intermediul circuitelor tampon de iesire de pe aceasta magistrala. numarul de perioade de ceas (Nr) necesare pentru a implementa ciclul de citire va trebui sa satisfaca conditia (tp = perioada semnalului de ceas al sistemului): Nr⋅tp > tad + tacc +tds = 90 ns (tipic).2).BAZELE MICROPROCESOARELOR porturi. sau de citire de la o interfata de intrare. Se presupune ca circuitul de memorie selectat poate furniza datele la iesirea sa . in sensul ca exista semnale distincte de citire din memorie. sunt practic aceleasi. se vor insera perioade de WAIT (asteptare). (b) Ciclul de scriere in memorie Operatiile efectuate intr-un ciclu de scriere in memorie sunt descrise in mod similar ciclului de citire. la toate tipurile de microprocesoare. semnalele de control vor fi diferite. tab. Asadar. Pentru un microprocesor cu semnalul de ceas de 20MHz. 3. 50ns. pentru ca microprocesorul sa poata citi datele corecte de la memoria selectata.8 perioade de ceas. dupa acest timp tds. s-au notat cu: tas = timpul de stabilire al adreselor (adresele trebuie sa fie stabile inainte de inceperea transferului datelor). ceea ce implica uzual o durata a ciclului de citire de peste 2 perioade de ceas. Unitatea centrala plaseaza pe magistrala de adrese continutul registrului de adrese. Utilizarea semnalelor de citire/scriere si coordonarea temporala a lor cu celelalte semnale din sistem.13): 1. pentru tp= 50 ns. 2. absolut asemanatoare sunt operatiile de citire/scriere din/in interfetele de intrare/iesire ale sistemului. (v. 3. este prezentata in mod principial in continuare. Astfel. din/in memorie. se obtine o valoare a Nr de 1.14. intre semnalul de ceas al sistemului si aparitia semnalelor de adrese pe magistrala va aparea o intarziere (tad). se genereaza semnalul de citire a datelor. si de cea introdusa de catre circuitele tampon de pe magistrala de date. respectiv intr-o interfata de iesire.1. Uzual. 3-20 . tdb. si citirea datelor din memorie. 3. similar.3.par. Ca o remarca. tacc. tinand insa seama si de intarzierile introduse de catre circuitele tampon de pe magistrala de adrese. In aceasta figura. semnale de control). nu exista din punct de vedere al semnalelor externe (adrese. la executia unei instructiuni. (a) Ciclul de citire din memorie Operatiile dintr-un ciclu de citire sunt (v. si respectiv 20ns. In esenta. tacc si tds sunt de 20ns. respectiv de scriere. Dupa un timp de acces tds. valori tipice pentru tad. Mai mult. nici o distinctie intre operatiile de citire a codului de instructiune (fetch). Dupa o intarziere specificata.

(a) forme de unda cu considerarea intarzierilor semnalelor.3. (a) forme de unda cu considerarea intarzierilor semnalelor. (b) forme de unda idealizate 3-21 . Diagramele de timp asociate unei operatii de scriere in memorie.MICROPROCESOARE . Diagramele de timp asociate unei operatii de citire din memorie.13.14. (b) forme de unda idealizate tp semnalul de CEAS de SISTEM adresa pe MAGISTRALA de ADRESE datele pe MAGISTRALA de DATE semnalul de SCRIERE (WRITE) t ad t ds t as t w t dh (a) 1 ciclu masina semnalul de CEAS de SISTEM MAGISTRALA de ADRESE MAGISTRALA de DATE semnal SCRIERE(WRITE) adrese valide date valide timp acces date timp selectie adrese timp retinere date durata puls scriere (b) Fig.CONCEPTE GENERALE tp semnalul de CEAS de SISTEM adresa pe MAGISTRALA de ADRESE activare semnal CITIRE (READ) datele pe MAGISTRALA de DATE t ad t acc t 1 ciclu masina ds (a) semnalul de CEAS de SISTEM MAGISTRALA de ADRESE semnal CITIRE (READ) timp acces citire MAGISTRALA de DATE adrese valide activare citire date valide (b) Fig.3.

2 Functia de memorare Dupa cum s-a mentionat. Deoarece o instructiune poate fi reprezentata pe mai mult de un cuvant. ciclurile de citire sau scriere se efectueaza in 2 sau 3 perioade de ceas. datele memorate de catre registre pot fi manipulate. va reprezenta timpul total necesar pentru extragerea. operatia de scriere va necesita un numar minim de Nw de perioade de ceas. decodificarea si executia unei instructiuni. modificate.14. 3. Un ciclu instructiune. respectiv tdb. cu timpi de selectie si acces cat mai redusi). 3. Pentru majoritatea microprocesoarelor. Astfel. dupa cum s-a precizat deja. Totodata.fig. inainte de inceperea transferului (datele trebuie sa fie stabile deja. in cazul cel mai general. atat memorie ROM si RAM. tdh = durata de mentinere a datelor. cat si.b). Cu cat frecventa de lucru a microprocesorului creste. luand in considerare si intarzierile introduse de catre circuitele tampon de pe magistralele de adrese si de date. date. ca o categorie aparte (fizic tot memorie RAM). Astfel. dupa disparitia semnalului de scriere. aceste instructiuni sunt cele mai rapide. In cazul unui calcul mai riguros. O operatie 3-22 . registrele. inainte de inceperea transferului). din punctul de vedere al programarii microprocesorului. tw = durata pulsului de scriere (timpul necesar pentru a inscrie efectiv datele in memorie). dat de relatia Nw tp > tas + tw + tdh. de adrese.3. cunoscand valoarea diferitelor intarzieri aparute in sistem. deci a mai multor cicluri masina. tab. porturi. pentru compatibilitate cu microprocesorul respectiv.13. prin instructiuni specifice de operare cu registrele. este necesara uneori efectuarea de mai multe cicluri de acces la memorie. vor fi necesare si componente externe din ce in ce mai rapide (memorii. Numarul total de perioade de ceas necesare pentru efectuarea unei operatii complete de citire sau scriere din/in memorie (sau port de intrare-iesire). Nw tp > tas + tw + tdh + tab + tdb + tad. Acestea din urma alcatuiesc un element cu totul aparte fata de memorie. si numarul minim de perioade de ceas necesare. sau coordonat de catre sectiunea de CONTROL.b si 3. si scriere trebuie sa fie minimum tw. la executia unui ciclu instructiune.BAZELE MICROPROCESOARELOR tds = timpul de stabilire al datelor. microprocesorul poate contine. se poate calcula durata unui ciclu complet de scriere in memorie. operate in ALU. in vederea obtinerii unei performante maxime a sistemului (evitandu-se introducerea de timpi de asteptare. se obtine. la efectuarea acestor accese externe). este uneori denumit si ciclu masina (v. Deoarece perioada de suprapunere a semnalelor stabile. WAIT.+ tad.

fig. prin intermediul registrului de selectie (vezi fig. se folosesc anumiti biti ai instructiunii.MICROPROCESOARE . Prezentarea organizarii si a posibilitatilor specifice de utilizare a registrelor de uz general.numite si registre de lucru. pe larg. registrul adresei de program --. Deja mentionate in aceasta categorie sunt registrele contor de program (PC). registrul decodificator de instructiuni.operanzi. prin intermediul magistralelor interne si al circuitelor tampon (v.2. Aceste registre sunt conectate atat la alte registre interne ale microprocesorului. fiind posibile: incarcarea cu un cuvant dorit de date. Uzual. 3. aceste registre nu sunt accesibile prin program. cat si la magistralele externe.1 Registrele microprocesorului Se pot considera doua categorii de registre ale unui microprocesor: cele speciale si cele de uz general. in game foarte largi. Aceasta conduce la o sporire a vitezei de lucru globale a sistemului. Registrele de uz general sunt utilizate pentru manipularea si memorarea temporara a datelor. pentru selectarea registrului dorit. in celelalte sectiuni ale microprocesorului.3. deplasarea informatiei intre registre. si pot fi folosite pentru stocarea si manevrarea datelor programului . au functii predefinite specifice in functionarea acestuia. (De exemplu registrul de instructiuni. Cu exceptia registrului indicator de adresa a stivei programului (stack pointer). prin instructiuni specifice. Selectarea registrului de uz general desemnat de o instructiune este facuta tot prin sectiunea de CONTROL. in functie de microprocesor. adrese de memorie continand date utile programului. Numarul registrelor de uz general variaza. 3. fata de sute de nanosecunde necesare atunci cand se opereaza cu memoria externa. registrele speciale sunt utilizate functional. registrele sunt folosite la stocarea diferitelor informatii utilizate prin program. sau intre registre si memorie. etc.15).15). deoarece timpii de acces la registrele interne sunt sensibil mai redusi decat timpii de acces la memoria externa a sistemului. perechi de 16 biti) si posibilitatea operarii cu acestea. Registrele de uz general sunt adresabile de catre utilizator. la executia instructiunilor. In general. orice registru de acest tip este accesibil programatorului. dupa cum s-a mentionat. in urma decodificarii codului operatiei. Desi uneori pot fi setate la valori initiale specificate. aceste registre contin informatiile cele mai utilizate de catre program.CONCEPTE GENERALE tipica cu un registru dureaza cateva zeci de nanosecunde. de la 2 pana la 48. date. sau sub coordonarea functiei de control.PC etc. Daca. registrul de instructiuni. se indica o operatie cu registre.). Registrele speciale . sau registre interne ale microprocesorului. tratarea unei perechi de registre ca reprezentand date pe cuvinte cu lungime dubla (la registre de 8 biti. Avand uzual o lungime de unul sau doua cuvinte de date. 3-23 . etc. va fi facuta ulterior. rotirea continutului acestora. din punctul de vedere al software-ului. 3.

(din program. sau la aparitia unei intreruperi. se apeleaza o subrutina. care va efectua operatiile dorite. in esenta. Deoarece la randul ei. este necesara utilizarea unui mecanism specific pentru a se putea cunoaste adresa de revenire. in functionarea microprocesorului. Deasemenea. specifica intreruperii respective. iar microprocesorul trece la executarea unei secvente speciale din program. etc. Si la aparitia unei intreruperi. odata tratata. o subrutina poate apela o alta subrutina. necesitatea de a se citi valoarea unei marimi la intervale date de timp).. In astfel de cazuri. conforme evenimentului aparut. pot aparea evenimente exterioare care sa necesite o tratare imediata (de exemplu. operarea curenta este oprita. Se va face ulterior prezentarea detaliata a functionarii microprocesorului la apelarea unei subrutine. Ceea ce trebuie mentionat aici este faptul ca o subrutina odata apelata. Subrutinele sunt apelate din diferite locuri ale programului. sau ca urmare a unei intreruperi). Structura principiala a memoriei interne a unui microprocesor De multe ori se utilizeaza subrutine la scrierea programelor. pentru o structurare si mai buna organizare a acestora.BAZELE MICROPROCESOARELOR Magistrala de date Selectie registre Magistrala de adrese Magistrala de control R0 R1 Registre uz general Adresa 0 Adresa 1 ROM Adresa n Adresa n+1 RAM Adresa m Fig. la punctul din program de unde se facuse apelarea ei. evitandu-se astfel repetarea unei aceleasi secvente de instructiuni. trebuie 3-24 . Subrutinele reprezinta portiuni de program utilizate frecvent pentru a efectua anumite operatii specifice. relativ la desfasurarea curenta a programului microprocesorului. la terminarea executiei unei subrutine.3. poarta numele de lucru in intreruperi.15. Acest mod de a trata evenimentele asincrone.

Prin intermediul magistralei de adrese se poate selecta in mod unic o celula de memorie. Prezentarea modului de adresare si a organizarii memoriilor exterioare va fi facuta ulterior. ce efectueaza operatia propriu-zisa. se memoreaza informatia de pe magistrala de date in celula selectata. o instructiune specifica de revenire la programul initial va determina readucerea in PC. sectiunea de CONTROL determinand ce anume este de facut la aceasta locatie. Microprocesorul va executa urmatoarea instructiune incepand de la aceasta adresa. Si aici. dimensiunea acestor zone de memorie este dependenta de tipul microprocesorului. In acest scop exista o zona speciala a memoriei. este utilizata la efectuarea operatiilor aritmetice cu precizie extinsa. numit registrul indicator de adresa al stivei programului (SP . 3. 3. In acest scop. sau de intrerupere. In plus. Daca se doreste citirea (READ) informatiei. in care se stocheaza. care va contine adresa de inceput a acestei zone de program. Astfel. intrarea semnalului de transport (carry). sau tratarii unei intreruperi. si specifica operatia ce se va efectua.stack pointer). unele microprocesoare au incluse pe cip celule de memorie RAM si ROM. si registre speciale necesare la manipularea si memorarea temporara a operanzilor (vezi fig. microprocesorul este prevazut cu un registru special.3. in care este salvat. 3-25 .3 Functia aritmetico-logica Sectiunea care efectueaza operatiile aritmetice si logice este compusa dintr-o unitate aritmetico-logica (ALU). 3. din memorie. de la adresa specificata de registrul indicator al adresei stivei.3. programul va continua apoi din punctul de unde a fost efectuat apelul subrutinei. Trecerea la zona de program pentru executia subrutinei se face prin modificarea valorii PC. adresa la care se va reveni. El contine adresa ultimei celule de memorie RAM.16). continutul celulei de memorie apare pe magistrala de date. la terminarea acestei sectiuni speciale de program.17.CONCEPTE GENERALE sa permita revenirea in program. deci va incepe executia subrutinei (apelata prin program sau ca urmare a unei intreruperi). a valorii salvate a PC in momentul apelarii subrutinei. La sfarsitul acestei zone de program. Adresele acestor celule de memorie sunt unice. la cele cu cativa ko de memorie ROM si cateva sute de octeti de memorie RAM. Cele doua intrari de date vor furniza valorile celor doi (uzual) operanzi ai unei operatii aritmetice sau logice efectuate in ALU. permitand continuarea acestuia din punctul de apel al subrutinei.3.2. continutul actual al registrului contor de program (PC). pe perioada executiei unei subrutine.MICROPROCESOARE . Intrarea de selectie a functiei provine de la sectiunea de CONTROL. la apelarea subrutinei.2 Memoria RAM si ROM Dupa cum s-a mentionat.1 Unitatea aritmetico-logica (ALU) O structura comuna a ALU este prezentata in figura 3. La o scriere a informatiei (WRITE).3. numita stiva (stack). 3. de la procesoare care nu au memorie locala.

In plus.2 Registre pentru functia aritmetico-logica Una dintre cele doua intrari in ALU este intotdeauna conectata la un registru de uz general. pana la inmultiri si impartiri pe 16 biti etc. Ele pot varia de la simple operatii de adunare si scadere pe cuvinte de 8 biti si operatii logice elementare. Structura de baza a ALU Posibilitatile ALU depind de tipul si performantele microprocesorului. Evident.3. denumit acumulator (A).3. Exista o singura unitate aritmetico-logica intr-un microprocesor.16. in acumulator se va transfera rezultatul operatiei efectuate in ALU. practic toate microprocesoarele de 16 sau 32 biti.17. au implementate in setul de instructiuni si operatiile de inmultire si impartire (cu numere intregi pozitive sau in complement fata de doi). 3. Astfel. cu utilizare specifica. Microprocesoarele recent aparute. Alte operatii. dupa efectuarea operatiei.BAZELE MICROPROCESOARELOR ALU Registru de stare carry Acumulator Registru de date Magistrala de date Fig. ALU poate efectua adunari binare. Unele operatii specifice se pot efectua direct cu continutul acumulatorului. si cate unul sau doua acumulatoare si registre auxiliare. scaderi binare. mai complexe. pot fi implementate prin succesiuni de astfel de operatii simple. pretul acestor dispozitive va fi mai mare decat al procesoarelor standard. printr-un software adecvat. cum ar fi 3-26 .3. rotatii la dreapta sau la stanga ale continutului operanzilor. operatii logice booleene. operandul aflat initial in acumulator se va pierde. In general insa. Multe microprocesoare (mai ales de 8 biti) efectueaza operatiile de inmultire si de impartire utilizand o serie de operatii elementare de adunare sau scadere. Structura sectiunii aritmetico-logice a microprocesorului Rezultat Mag. date UNITATE ARITMETICOLOGICA (ALU) Mag.3. care deci va furniza unul dintre operanzii oricarei operatii aritmetice sau logice. date (operand 2) Stare ALU Selectie FUNCTIE (operatie) intrare CARRY (operand 1) Intrari de date Fig.

sau faptul ca s-a obtinut un rezultat nul etc.17). si fiind controlat de cate o structura logica specifica.MICROPROCESOARE . inaccesibil direct utilizatorului. in urma efectuarii unei operatii aritmetice (de exemplu. Rezultatul se va memora in aceste cazuri in acumulator.par. CF= 0. Continutul registrului de stare va furniza la orice moment de timp informatii importante despre starea procesorului si rezultatele ultimei operatii aritmetice sau logice efectuate in ALU. sau memorie. executia instructiunilor conditionate de salt sau apel de subrutina permite testarea indirecta a valorii bitilor indicatori de stare. Programatorii trebuie sa cunoasca aceste specificatii. de exemplu.). etc. Semnificatia principalilor biti indicatori de stare intalniti la majoritatea microprocesoarelor este prezentata in continuare. este prevazut un registru special. in functie de rezultatul operatiilor efectuate in ALU. 0=reset). Desi continutul acestui registru nu este direct accesibil prin program. Acest registru special. Acest bit poate fi astfel ulterior testat. semnul rezultatului. In functie de semnificatie. sau utilizat in operatii ulterioare ale ALU (v. daca rezultatul ultimei operatii in ALU nu a generat transport. se indica pentru fiecare instructiune daca si care anume dintre bitii de stare sunt modificati. Pentru a se cunoaste caracteristicile rezultatului unei operatii (depasirea rangului cuvantului de date. Uneori acest registru este denumit si registrul indicatorilor de conditie. are intre 8 si 16 biti. cu 1=set.CONCEPTE GENERALE incrementarea sau decrementarea continutului acestuia cu 1. de catre instructiunea respectiva. Datele in registrul de date si acumulator sunt vehiculate sub comanda sectiunii de CONTROL. 3. bitii de stare din registrul indicator de stare vor fi modificati prin program sau in urma efectuarii operatiilor in ALU. stergerea sa . Zero (ZF) Indicatorul de zero: este utilizat pentru a indica faptul ca rezultatul unei operatii 3-27 . fiecare bit avand o semnificatie aparte. memorat in indicatorul de transport (carry). Continutul bitilor individuali. din/in memoria sistemului. 3. cu exceptia bitului cel mai semnificativ. prin instructiuni specifice ale microprocesorului. In descrierea detaliata a setului de instructiuni al unui microprocesor. adunarea a doua numere a caror suma depaseste dimensiunea cuvantului de date al procesorului). Pentru memorarea temporara a celuilalt dintre operanzi (in cazul efectuarii operatiilor care necesita doi operanzi). este modificat (setat sau resetat). fara a necesita utilizarea ALU. Carry (CF) Indicatorul de transport: este utilizat pentru a indica depasirea preciziei de lucru a microprocesorului. utilizat astfel ca o extensie a acumulatorului. Valoarea sa se va modifica insa. si cum. se prevede un registru de date. daca rezultatul ultimei operatii in ALU a generat transport. respectiv externa.5). reprezinta baza mecanismului de luare a deciziilor de catre unitatea centrala. dinspre / catre registrele de uz general. in cursul efectuarii de operatii in ALU. Avem CF = 1. prin intermediul magistralelor de date interna. Fiind adresabil ca oricare alt registru general. Acesti indicatori (unii dintre ei putand fi initializati prin program. sau alte registre de uz general.fig. la elaborarea programelor implementate. continutul acumulatorului poate fi incarcat / transferat direct sau indirect (v. registrul de stare. la o adunare. denumiti indicatori de conditie (flag). Carry poate fi initializat uzual (0 sau 1).

3. numarul. Semnul rezultatului este decis in functie de valoarea celui mai semnificativ bit al sau. Ele permit transferul de informatie 3-28 . (Portul poate fi un periferic. daca s-a obtinut un rezultat negativ. Paritate (PF) Indicatorul de paritate: este utilizat pentru a indica tipul sumei modulo 2 a rezultatului ultimei operatii efectuate in ALU. daca s-a obtinut un rezultat pozitiv (sau zero). de aparitie a depasirilor de calcul (overflow . Uzual.OF). 3. etc. daca rezultatul are un numar par de biti cu valoarea 1.). sectiunea de intrare/iesire este prezenta in mica masura la nivelul cipului microprocesor. la o alta adresa . daca s-a obtinut rezultat nul la ultima operatie aritmetica sau logica. SF = 1. In esenta. In capitolul 4 se va prezenta descrierea indicatorilor de conditii ai microprocesorului INTEL 8086. efectuarea unui salt (ramificare) in program (trecerea. ca in figura 3. un convertor A/D sau D/A etc. operatiile de intrare/iesire se fac tot prin configurarea unei adrese pe magistrala de adrese. Exista si alti biti de stare specifici. numerele fiind tratate ca numere reprezentate in complement fata de doi. Semn (SF) Indicatorul de semn: este utilizat pentru a indica semnul rezultatului unei operatii efectuate in ALU. sau la transmisii de date.. considerat ca bit de semn. PF = 1. Astfel. Legarea mai multor semnale la acelasi bit al unei magistrale se va face. corelata cu generarea. a semnalelor adecvate de intrare sau iesire. din punctul in care era programul in acel moment. permitand selectarea unica a unuia dintre elementele de intrare/iesire (generic denumite porturi ale sistemului) si transferul in sensul dorit de la/la microprocesor la/de la port. ZF = 0. daca rezultatul are un numar impar de biti cu valoarea 1. tipul si semnificatia lor fiind diferite de la microprocesor la microprocesor. a datelor.prin modificarea explicita a continutului registrului de adresa al programului (PC).BAZELE MICROPROCESOARELOR aritmetice sau logice a fost 0 sau nu. daca nu s-a obtinut rezultat nul la ultima operatie aritmetica sau logica. la o zona unde se va trata adecvat situatia respectiva.nu cea urmatoare . indicatorii de stare vor permite luarea unei decizii in functie de valoarea lor. Acest bit nu poate fi initializat direct printr-o instructiune specifica. SF = 0.18. dupa cum s-a mai mentionat. cu exceptia hardware-ului necesar pentru izolarea cipului de exterior. se numeste salt in program).4 Functia de intrare/iesire. Avem ZF = 1. Astfel PF = 0. In general. cum ar fi indicatorul de activare a intreruperilor (IF). prin circuite tampon (buffere). de catre sectiunea de control. Acest bit este uzual testat in cadrul programelor de verificare a corectitudinii informatiilor codificate. permitand de exemplu. dupa cum s-a mentionat. pe magistrala de date.

Trebuie remarcat inca odata faptul ca sectiunea de CONTROL raspunde de activarea corespunzatoare a circuitelor tampon ale microprocesorului. Cand Fig.ale diferitelor elemente componente ale sistemului (blocuri ale microprocesorului . si executia instructiunii. Pentru fiecare dintre aceste etape. fara ajutorul microprocesorului (acesta fiind in asa-numita stare de HOLD).in functie de tipul magistralei . iesirile circuitelor tri-state sunt intr-o stare flotanta (mare impedanta). Aceste circuite cu 3 stari (tri-state). in timpul carora unitatea centrala va executa un set spcific de operatii interne. 3. microprocesorul executa un numar de operatii elementare. unica. Pe fiecare linie (bit) a magistralelor se gasesc iesirile circuitelor tampon uni sau bidirectionale . Aceasta permite legarea iesirilor mai multor astfel de circuite impreuna. daca li se activeaza o borna Bit al magistralei speciala. cand acestea sunt utilizate pentru transferul direct de date de la/la un periferic la/de la memoria sistemului. memorii. sau microprocesor. aceste operatii se clasifica intr-una din urmatoarele subgrupe: extragere a codului operatiei. Transferul de informatie pe magistrale are astfel loc utilizand asemenea circuite. a semnalelor de adrese si control. efectuate in decursul executiei unei instructiuni. de comanda (v. tot sectiunea de control asigura dezactivarea circuitelor tampon (aceasta reduce consumul de putere al cipului).3.pentru magistralele interne. Selectia circuitelor tampon externe cipului microprocesor trebuie asigurata prin decodificarea corespunzatoare. reproduc la iesire marimea binara de la intrare. extragere a operandului. In esenta. decodificarea acestuia. Memorate. pe magistrala la care este conectat. pe fiecare linie a unei magistrale. si bidirectional. De asemenea.2).3. Conectarea circuitelor tampon pe magistrala nu sunt activate. pe magistrala de date. dupa cum s-a precizat deja. in perioadele cand acesta nu face acces la memorie sau porturi exterioare cipului.cap. pentru fiecare dintre componentele din sistem. un ciclu instructiune dureaza un numar de cateva perioade de ceas. corespunzatoare instructiunii respective. Combinarea acestor operatii intr-o secventa coerenta determina executia instructiunii respective.5 Microprogramarea Dupa cum s-a precizat in sectiunile anterioare.18.MICROPROCESOARE .CONCEPTE GENERALE i en 1 1 en 2 i2 en n in din microprocesor in afara (pe magistrala de adrese si de control). in zona decodificatorului de instructiuni al microprocesorului. intr-o memorie 3-29 . poarta numele de microinstructiuni. Dezactivarea magistralelor externe ale microprocesorului are loc si in situatii speciale. interfete pentru magistralele externe). Selectarea unui singur buffer la un moment-dat va implica impunerea nivelului de zero sau unu logic de catre acest circuit (in speta de catre valoarea intrarii lui). Aceste operatii elementare.

BAZELE MICROPROCESOARELOR de tip ROM. Figura 3. aceste microinstructiuni nu sunt accesibile utilizatorului. pe baza unui set de microinstructiuni elementare acceptate de catre microprocesor. si de memorare a rezultatului intro alta celula de memorie. Exista insa si microprocesoare speciale.19 prezinta desfasurarea microoperatiilor intr-un microprocesor fictiv. 3. (de exemplu microprocesoarele bit-slice). Marea majoritate a microprocesoarelor uzuale au un set de instructiuni fix. Inlantuirea microinstructiunilor. ceea ce reduce in esenta viteza de lucru globala a sistemului. M1 A M2 B M3 X M1 A M2 B M3 X Magistrala date TR1 A TR2 X TR1 A Magistrala date TR2 B inactiv (a) M1 A M2 B ALU (b) M3 X M1 A inactiv ALU M2 B M3 A+B Magistrala date TR1 A activ ALU A+B (c) ALU (d) TR2 B TR1 A Magistrala date TR2 B Cod adunare A+B ALU Fig. adaptat unei aplicatii date). la care utilizatorul isi defineste singur setul de instructiuni.19. specifica executiei fiecarei instructiuni. Microinstructiunile executate la adunarea a doua numere din memorie: (a) citirea primului operand. fix. la executia propriuzisa a instructiunii (deci dupa citirea si decodificarea cuvantului de instructiune). la executia unei operatii de adunare a doua numere aflate in memorie. De fapt. microprocesorul va executa o inlantuire de asemenea microinstructiuni. pentru microprocesoarele uzuale. Oferind flexibilitate sporita (se poate configura un set de instructiuni specific. la executia fiecarei instructiuni. si este fixa. este o caracteristica a microprocesorului. Se evidentiaza operatiile necesar a fi efectuate. similar unei subrutine. impus de catre firma constructoare. (b) citirea celui de-al doilea operand. 3-30 . fiind implementata intern. in structura hardware a acestuia. aceasta solutie prezinta dezavantajul implementarii software a setului de instructiuni.

Timpul de acces1 al memoriei. (3) efectuarea operatiei de adunare in ALU. utilizate pentru stocarea operanzilor cititi din cele doua celule de memorie.MICROPROCESOARE . memoria principala a sistemului microcalculator.b). Dupa cum se remarca. din celula de memorie de la adresa M1 (fig. 3. se situeaza imediat dupa elementele de memorie interna a microprocesorului (registre. 16. Astfel aceasta memorie trebuie sa poata furniza/receptiona informatii la viteza cu care poate lucra microprocesorul (citire de instructiuni. Memoriile lente introduc perioade de asteptare (WAIT) care micsoreaza viteza globala a sistemului. capacitatea sa depinde de tipul microprocesorului utilizat. din celula de memorie de la adresa M2 (fig.a). 3-31 .19. 3. Trebuie reamintit ca unele tipuri de microprocesoare --. Rezultatul adunarii celor doua numere se memoreaza in celula de memorie de la adresa M3.poseda facilitatea citirii si memorarii interne a unui set de mai multe cuvinte de instructiune succesive.19. si microsecunde. externa cipului microprocesor. Ne vom referi in cele ce urmeaza la tipurile si caracteristicile acestor circuite de memorie. M1 si M2. date. (fig. pentru executia acestei instructiuni. respectiv momentul memorarii datei (la scriere).19. efectuarea operatiilor interne ale procesorului necesita timpi foarte scurti de acces la elementele de memorie locala (registre). Denumita memorie principala a sistemului. uzual sute de nanosecunde. PROM de pe cip). 3. Accesul la memoria principala (externa cipului microprocesor) necesita timpi de acces impusi de durata subciclurilor si a ciclurilor instructiune ai microprocesorului. utilizate pentru implementarea memoriei principale.3. RAM.3. situate in afara cipului microprocesor.c). Ea este utilizata pentru memorarea programelor executate de catre microprocesor.4 MEMORIA INTERNA A SISTEMULUI MICROCALCULATOR Memoria interna a sistemului microcalculator reprezinta o parte componenta esentiala a acestuia.de exemplu INTEL 8086 --. si pentru vehicularea datelor si rezultatelor diferitelor operatii efectuate. C = A+B.CONCEPTE GENERALE (c) adunarea celor doua numere. ar fi necesare 4 microinstructiuni: (1) citirea primului operand (A). fiind uzual de maxim 64 ko si ajungand pana la 1 Mo (sau mai mult. 64 M cuvinte de memorie). memorari rezultate). unde sunt utilizate capacitati maxime de 8. paralel cu desfasurarea unor operatii interne (pipeline). prelucrari. (4) memorarea rezultatului (C) in celula de memorie de la adresa M3 (fig.d). la noile tipuri de microprocesoare. (d) salvarea rezultatului in memorie S-au notat cu TR1 si TR2 doua registre temporare. de ordinul zecilor de ns. Dupa cum s-a precizat. deci ca viteza de lucru. Aceasta suprapunere a 1Timp de acces la o memorie: intervalul de timp intre momentul selectarii acesteia si momentul disponibilitatii la iesirea memoriei a datei cerute (la citire).19. (2) citirea celui de-al doilea operand (B). este dependent de tipul de memorie utilizat. variind intre cateva zeci.

de obicei. timpul de acces este variabil. nemodificabile. • Memorie ROM.4. Memoria RAM poate fi de doua feluri: statica sau dinamica. pentru orice celula adresata. Aceasta inaccesibilitate pe perioada de reimprospatare ocupa 1--5% din timpul total de lucru al memoriei dinamice. dar cu un pret per bit de informatie memorat substantial redus. dupa dorinta. Reimprospatarea are loc prin efectuarea unei operatii de citire. memoria RAM stocheaza informatii variabile. Structura unei celule de memorie RAM dinamice Selectie celula memorie 3-32 . Deoarece sarcina acumulata pe capacitate scade in timp. Din punct de vedere al modului de operare. Aceasta operatie de reimprospatare (refresh) a memoriei RAM dinamic. de tipul banda sau disc magnetic. prin descarcarea acesteia. memoriile se pot imparti in: • Memorie RAM. se poate defini: • Accesul aleator. continand informatii temporar memorate ce pot fi modificate oricand in cursul operarii. Din punct de vedere al accesului la memorie. este oprit accesul procesorului la circuitul de memorie respectiv. 3. • Accesul secvential. (Structura de principiu a unei celule Intrare data Iesire data Fig.1 Memorii RAM Dupa cum s-a precizat.20. Evident. care necesita o trecere ciclica prin toate locatiile anterioare celei dorite. Unitatea centrala. continand informatii fixe. ce pot fi furnizate doar catre microprocesor (pot fi citite de catre acesta). depinde de valoarea constantei RC a circuitului.3. poate citi sau modifica continutul unei celule de memorie RAM. Acele informatii care sunt necesare relativ rar si care ocupa un volum mare de memorie sunt. pe durata careia. in functie de locul unde se afla celula cautata in memorie (ca exemplu tipic de memorie cu acces secvential. sub controlul programului. memorate pe elemente de memorie externe. cu timpi de acces de ordinul milisecunde pana la secunde. (uzual de 1--2 milisecunde. putem mentiona banda. cu C de ordinul fractiunilor de picofarad) si depinde de tipul de memorie utilizat.BAZELE MICROPROCESOARELOR operatiilor mareste viteza globala a sistemului. caseta magnetica). care permite operarea directa cu elementul de memorie dorit. in mod uzual. Caracteristic accesului aleator este timpul de acces maxim identic. informatia se va pierde daca nu se reface periodic. Memoria RAM dinamic Retine informatia prin incarcarea cu sarcina electrica a capacitatii portii unui tranzistor MOS. necesitand totodata utilizarea unor memorii mai rapide).

Vcc Vdd +V Data Data Data Selectie celula memorie Selectie celula memorie Data a Memoria RAM static b c Fig. 2. In functie de tip. Pentru a selecta in mod unic un cuvant de memorie dintre cele 64. Furnizat de catre logica de control a microprocesorului. Nu necesita reimprospatare. consumul de putere al memoriei devine un element precumpanitor in alegerea solutiei. Memoria statica nu necesita circuite externe speciale si nu prezinta probleme de sincronizare a ciclurilor de reimprospatare cu operatiile normale de citire/scriere ale unitatii centrale. cipurile de memorie pot fi organizate pe cuvinte de 1. al caror continut se pierde odata cu pierderea tensiunii de alimentare. vor fi necesari (64 = 26) 6 biti de adresa.20). de la baterii. sau RAM static de tehnologie CMOS. 4 sau 8 biti. in acest exemplu de 64x81 cuvinte de memorie. b) tehnologie MOS.MICROPROCESOARE . Memoria dinamica prezinta doua mari avantaje fata de cea statica: (a) consumul de putere mult mai redus (cand nu este adresata. In aceste cazuri. c) tehnologie CMOS. Figura 3. similare ca schema de principiu cu bistabilele conventionale. acestia vor permite selectia unica a cuvantului de memorie dorit. 1 64x8 simbolizeaza 64 cuvinte de memorie de cate 8 biti fiecare 3-33 .21 prezinta implementarea unor celule de memorie RAM static.CONCEPTE GENERALE tipice de memorie dinamica este prezentata in figura 3. Prin intermediul decodificatorului intern de adresa.21. apare uneori necesitatea prevederii alimentarii auxiliare a acestora. deci se obtin densitati mult mai mari de celule de memorie pe cip. Deoarece memoriile RAM sunt memorii volatile. (b) numarul de tranzistori pe celula mai mic. in diverse tehnologii. celulele de memorie sunt bistabile.22 prezinta o structura tipica a unei memorii RAM statice. Figura 3.3. preferandu-se memorii RAM dinamic. consuma putere doar pe perioadele de reimprospatare). Structura unei celule de memorie RAM statice: a) tehnologie bipolara.

de tipul celui din figura (R/W ). operatiile de citire nu afecteaza valoarea inscrisa in celula de memorie. 0 = scriere. Magistrala Decodificator intern 6 de adrese de adrese Matrice R/W __ CS memorie Bloc de control Circuit tampon Magistrala 8 de date Fig. spre magistrala de date. determinand totodata actiunea de inscriere a datelor prezente de pe magistrala de date. la operatia de scriere.de exemplu. si nebarate. valoarea datei de intrare (DATA INPUT) este memorata de catre registru. continutul registrului este transmis la iesirea de date (DATA OUTPUT).BAZELE MICROPROCESOARELOR semnalul de R/W (citire/scriere)2.23. in celula selectata. citire/ scriere va insemna operatie de citire. pe pinii de date ai cipului. 2 se va conveni reprezentarea barata a semnalelor a caror semnificatie este indeplinita cand iau valoare logica "0" (active pe zero).22. cu actiuni complementare in functie de valoarea sa logica: 1 = citire. prin comanda circuitului tampon de iesire. respectiv transferarea continutului celulei selectate. 3. Daca se efectueaza o operatie de citire (READ).3. Totodata. pe pinii de date ai cipului. o celula elementara (bit) de memorie. va indica logicii interne a cipului de memorie sensul transferului de informatie. si operatie de scriere pentru valoare logica 0. Deoarece operatiile de citire sau scriere nu se efectueaza simultan. se utilizeaza uzual un singur semnal. de tip static (registru). Daca se efectueaza o operatie de scriere (WRITE). daca acest semnal are valoare logica 1. 3-34 . cand sunt active pe "1" --. este prezentata in fig. Structura unui circuit RAM static de 128 octeti In ceea ce priveste structura interna a unui asemenea circuit de memorie. la operatia de citire. Aceasta celula de memorie stocheaza doar un bit de informatie. permitand comanda adecvata a circuitelor tampon ale memoriei. deci retine doar data inscrisa la ultima operatie de scriere.

aplicat tuturor celulelor de memorie simultan.24.MICROPROCESOARE . bit7 Intrare bit1 bit0 bit7 bit1 bit0 Iesire ______ CITIRE / SCRIERE Fig. Aceasta permite accesul simultan la cele n celule de memorie.SCRIERE Fig. CITIRE 0 pt. datele fiind inscrise sau citite in paralel din toate celulele cuvantului de date astfel configurat. Se remarca faptul ca in acest caz va fi necesar doar un singur semnal R/W . se conecteaza n asemenea celule ca in figura 3. 3-35 .24. CITIRE ______ CITIRE / SCRIERE 1 pt. in care bitii de adresa se utilizeaza uzual divizat. pentru fiecare adresa. Structura unei celule de memorie cu capacitate de un bit Pentru a memora un cuvant de date de n biti. pe linii si coloane.CONCEPTE GENERALE DATA DE INTRARE DATA DE IESIRE "1" pt. 3. ce se decodifica astfel incat sa se asigure. Structura unui cuvant de memorie RAM. (de exemplu un octet). selectia unica a unei celule de memorie a cipului.23. 3. Pentru a putea configura cipuri cu capacitati de memorie sporite.SCRIERE "0"pt. celulele acestora se organizeaza de obicei intr-o matrice ca in figura 3.25.

Configuratia unui circuit de memorie cu o capacitate de 1024 celule (biti). 3-36 . Circuite scriere 4 3 2 1 Circuite citire WE CITIRE CS CS 0 0 1 1 WE 0 1 0 1 OPERATIA SCRIERE CITIRE SCRIERE SENS TRANSFER DATE INTRARE IESIRE INALTA } IMPEDANTA } INACTIV Fig. 3.26. Utilizarea tipica a semnalelor de control (citire/scriere. 3. selectie de cip).25.BAZELE MICROPROCESOARELOR selectie rind 995 Decodificator pentru adresa rind 31 3 2 1 0 992 993 994 96 64 32 0 97 65 33 1 98 66 34 2 99 67 35 3 127 95 63 31 selectie coloana celula memorie de un bit 2 0 1 Decodificator pentru 3 31 adresa coloana 9876543210 MAGISTRALA ADRESE MEMORIE Fig. la o memorie RAM.

In plus fata de memoriile RAM statice. LATCH ADRESA RIND LATCH ADRESA COLOANA Selectie Adresa Rind ( RAS ) Selectie Adresa Coloana ( CAS ) CONTROL RIND/COLOANA COLOANA RIND MAGISTRALA ADRESE MEMORIE Fig.fig. Astfel. sub controlul unui selector bidirectional. Dupa cum se poate remarca din schema circuitului. in ceea ce priveste modul de organizare si conectare a celulelor de memorie ale cipului. permitand selectia unei linii si apoi. Se mai remarca utilizarea unui pin special. nu se efectueaza nici o operatie cu nici o celula de memorie a cipului respectiv (atat operatia de citire (READ) cat si cea de scriere (WRITE) sunt inhibate. si la scheme interne speciale. cat si din tabela de functionare a circuitului. in vederea reducerii timpului necesar reimprospatarii continutului celulelor (refresh). ori de cate ori este selectata o linie a matricii de celule. Doar cand acest semnal este activ (0 logic in acest caz).MICROPROCESOARE . 3.CONCEPTE GENERALE Structura si utilizarea de principiu a liniilor de control ale unui circuit de memorie sunt prezentate in figura 3. semnalul R/W va selecta corespunzator valorii sale circuitele de citire (pentru 0 logic) sau scriere (pentru 1 logic). care vor asigura transferul corect al datelor din/in celula de memorie selectata conform adresei prezente pe bitii de adrese ai cipului. CS (Chip Select = selectie de cip). ceea ce conduce la structuri cu un numar redus de linii. continutul tuturor celulelor de pe acea linie este reimprospatat. prin modul de organizare al cipurilor de RAM dinamic.26). reimprospatarea se face linie cu o linie. In esenta.27. utilizand tehnici de multiplexare a schemei de adresare interne a cipului (v.26. din figura 3. Structura de principiu a memoriilor RAM dinamice este asemanatoare cu cea a memoriilor RAM static prezentate anterior. Multiplexarea liniilor si coloanelor unui circuit de memorie RAM dinamic. Bitii de adresa ai cipului se multiplexeaza. a tuturor coloanelor matricii de memorie. este validata operatia de citire sau scriere din/intr-o celula de memorie a cipului respectiv (dupa cum se poate remarca si din tabela de functionare a cipului. succesiv. celulele fiind plasate pe o retea de linii (row) si coloane (column). 3-37 .27). Daca semnalul de selectie de cip CS este inactiv (1 pentru exemplul abordat). structura cipului este tot de tip matricial.3.

ansamblul celor doua cipuri de memorie vor reprezenta un singur circuit. 16 11 Magistrala de adrese A0 ÷A10 ---CS 2k x 4 --R/W 8 4 D0÷D3 --CS 2k x 4 --R/W 4 D4÷D7 A0 ÷A10 A11÷A15 5 Decodificare adrese sup. se va proceda dupa cum urmeaza: Se vor grupa bitii de adresa in doua categorii: cei inferiori vor fi aplicati direct bitilor de adresa ai cipurilor de memorie (astfel.3. de la/catre cele doua circuite. din mai multe elemente (cipuri). adresarea trebuie facuta la doua nivele. Se observa conectarea acelorasi semnale de adrese si control la cele doua cipuri.28). se vor conecta in paralel numarul necesar de cipuri. fiecare avand o anumita capacitate. Plecand de la considerentul unicitatii unei celule de memorie in cadrul sistemului microprocesor. Conectarea distincta a acestora pe magistrala de date a sistemului va realiza operatiile pe un cuvant de date simultan (8 biti in cazul exemplului din fig. in cele doua cipuri. respectiv pentru urmatorii 4 biti la cel de-al doilea.28 prezinta in acest sens un exemplu de formare a unei memorii de 2k x 8 biti.BAZELE MICROPROCESOARELOR Trebuie remarcat ca. O operatie cu o celula de memorie de la o anumita adresa va determina selectia simultana. in procesul construirii memoriei RAM sau ROM a sistemului. din circuite de 2k x 4 biti. Trebuie astfel selectat intai cipul in care se va gasi cuvantul de memorie dorit. uzual mai mica decat capacitatea maxima de adresare a microprocesorului. 3. se selecteaza apoi celula dorita din cip. pentru a se obtine lungimea dorita a cuvantului de memorie. astfel. simultan. µP Magistrala de date Fig. Figura 3. Dupa cum se poate remarca si din figura 3. efectuand in paralel transferul de informatie in/din ambele celule. se obtine o operatie pe 8 biti. deoarece orice operatie de citire sau scriere efectuata la una dintre adresele celulelor continute de catre cele doua cipuri va determina efectuarea transferului in paralel. se vor utiliza 11 dintre 3-38 .28. Primul nivel de adresare se numeste adresarea de selectie a cipului ( CS . cu doua circuite de 2k x 4 biti Din punctul de vedere al microprocesorului.Chip Select). a celulelor cu aceeasi adresa. Prin configurarea a bitilor de adresa ai acestuia. in cazul memoriilor cu mai putini biti pe cuvant decat cei ai cuvantului microprocesorului. realizarea unei memorii 2k x 8 biti. pentru o memorie de 2k x 8. Semnalele de date vor fi insa cuplate pentru primii 4 biti la primul cip.28.

deoarece. Acest lucru este posibil.fiecare combinatie a bitilor superiori de adresa (A11÷A15) va determina generarea cate unuia dintre cele 32 de semnale de selectie de cip. in numar de (fie o magistrala de 16 biti de adresa) 2(16-11) = 25= 32. 2k=211). celula dorita.b este redata tabela de adrese ale cipurilor. implica selectia de cip pentru CS = 0 1000H = 4k de memorie. Aceasta ar determina la o citire din memorie.30. se obtine o selectie unica. Dupa cum se observa in tabelul de configurare a semnalelor de selectie de cip din figura. al cincelea. 3. de scriere-citire).MICROPROCESOARE .30.simbolizati din acest motiv cu x2 . 3. etc. logica de decodificare trebuie sa elimine in mod obligatoriu posibilitatea selectiei simultane multiple (deci a aparitiei la doua cipuri. A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Bitii superiori de adresa utilizati la obtinerea selectiei de chip (CS) Bitii inferiori de adresa.a). 3.30.3. Utilizarea tipica a bitilor de adresa pentru paginarea memoriei sistemului microprocesor Aceasta va permite obtinerea unor semnale logice de selectie de cip ( CS ). mai multi pini) de selectie de cip ( CS in fig. pe de o parte. In figura 3.29). primul cip va contine celulele de memorie cu adresele intre 0 si 2047 (sau. iesirea pe magistrala de date a informatiei din cele doua celule de memorie. de la 0 la 07FFH).22. a semnalului de cip select). Astfel. se va selecta.CONCEPTE GENERALE bitii de adresa. pentru o aceeasi adresa.28. vor fi utilizati intr-o logica de decodificare (vezi fig. conform informatiei de adresa si control de pe pinii cipului de memorie. Se spune ca memoria s-a paginat in 32 de pagini (blocuri) de cate 2k x 8 cuvinte. 3.29. indiferent de combinatia bitilor inferiori de adresa (A0÷A10) . 400H = 1k de memorie 2 x = indiferent (don't care) 1 3-39 . la un moment-dat. superiori.a prezinta structura de principiu a memoriei intr-un asemenea sistem.conectati direct la pinii memoriei Fig. Restul de biti de adresa. Evident. Doar daca pe acest pin se aplica un nivel logic dorit (in cazurile exemplificate. de exemplu. pe langa semnalele uzuale (biti de adresa. 0 logic1 ). adrese intre 2000H si 27FFH1. data de bitii superiori de adresa. direct pe cip. 1 semnalul fiind barat. cipurile de memorie poseda un pin special (unele tipuri de memorie. pe de alta parte. a unuia dintre cele 32 de cipuri. Figura 3. in reprezentare hexazecimala uzual intrebuintata. de date. deci alterand buna functionare a sistemului. expunand respectivele cipuri la riscul de a se distruge. si furnizand o informatie falsa microprocesorului. Corespunzator unei combinatii din cele 32 posibile.

combinata cu selectia celulei interne (data de bitii de adresa inferiori).BAZELE MICROPROCESOARELOR A11 ÷ A15 16 5 0 1 Decodificare 5 ÷ 32 31 11 Magistrala de adrese µP 11 CS1 CS0 A0 ÷ A10 CS A0÷ A10 CS 2k x 8 2k x 8 R/W R/W 11 CS31 A0÷ A10 CS 2k x 8 R/W (a) Configuratie adresa CS CS0 CS1 CS2 .. nu toata memoria sistemului trebuie sa fie organizata din cipuri de aceeasi capacitate. CS31 A15 A14 A13 A12 A11 A10 A9 . vor determina selectia unica a unei celule de memorie.4. ... 0 0 0 0 0 0 0 0 0 0 0 1 . si cu semnalul de control al directiei transferului R/ W ... (a) Organizarea unei memorii de 64k x 8. x 0 1 0 x x x x x x . selectia de cip (data de bitii de adresa superiori). 1 1 1 1 1 x x . pagini de cate 2k x 8 biti. Un exemplu de organizare cu memorii diferite va fi dat in paragraful urmator. . . . A0 x x x R/W Magistrala de date x-adresa variabila 0-0 logic 1-1 logic (b) Fig. Se remarca astfel din figura modul de grupare a adreselor microprocesorului: bitii superiori (A11÷A15) sunt decodificati pentru a furniza cele 32 de selectii de cip (doar unul dintre cele 32 de semnale de selectie de cip este activ la un moment dat). Bineinteles.2 Memorii ROM 3-40 . .. . si deci vor asigura functionarea corecta a schemei. bitii inferiori (A0÷A10) sunt utilizati pe pinii de adrese ai tuturor cipurilor de memorie. La efectuarea unei operatii de transfer de date de la/la o adresa de memorie..3.. (b) Configurarea adreselor.. 3.30..

a unor micro-fuzibile. Nici in cazul circuitelor PROM. Programarea acestora este realizata prin distrugerea selectiva. implementata in produse de cel putin cateva sute de bucati (pentru a fi economica). Informatia va avea valoare logica "0" pentru celulele cu fuzibilul distrus. valoarea "1" . O a doua clasa de memorii ROM este reprezentata de circuitele PROM1.ROM programabil EPROM: erasable PROM --.CONCEPTE GENERALE Desemnand initial memorii cu continut fix.MICROPROCESOARE .fuzibile intacte). de catre utilizator. dupa mecanisme similare de adresare si selectie a celulelor. prin aplicarea unor tensiuni mai mari. dupa cerintele utilizatorului. Posibilitatea reprogramarii memoriilor ROM este oferita de catre cea de-a treia grupa de astfel de circuite. circuitul contine in toate celulele. prin realizarea unor masti de programare specifice fiecarui set de circuite realizat. de programare. Dupa programare. de altfel). Dupa stergere. 3. cipul poate fi reprogramat.memorie PROM reprogramabila 3-41 . prin expunerea cipului (acesta este prevazut cu o "fereastra" de cuart. Ele reprezinta solutia finala. nealterabil. care sunt programate individual. respectiv "1" pentru celulele cu fuzibilul intact (in starea initiala. nici in cazul unor operatii de scriere accidentala in ele (operatie nepermisa. memoriile EPROM2. cu cele de la memoriile RAM. la o sursa de radiatii ultraviolete. conform informatiei ce se memoreaza. Acestea retin informatia ca o sarcina intr-o celula MOSFET. la citirea din memorie. Informatia prezenta in memoriile ROM nu se modifica. pe bitii doriti (vezi fig. informatia odata memorata nu mai poate fi modificata. Memoriile ROM se impart in trei grupe: prima cuprinde memoriile ROM programate de catre producator.31). termenul de memorie ROM si-a imbogatit semnificatia odata cu aparitia mai multor tipuri diferite de astfel de circuite. Orice modificare ulterioara dorita presupune comanda unui nou set de memorii. realizate adecvat. continutul celulei selectate va fi transmis pe magistrala de date a cipului. in zona celulelor de memorie). putand fi stearsa. nici la disparitia tensiunii de alimentare a acestora. 1 2 PROM: programmable ROM --.

se genereaza un fotocurent intre baza flotanta a celulelor de memorie si substratul de siliciu al cipului. Timpul de pastrare a informatiilor in memoriile EPROM este de ordinul anilor. ceea ce este echivalent cu comanda tranzistorului. Procesul de programare a memoriilor EPROM se face cu ajutorul unui montaj special. prin utilizarea unor semnale electrice.reprogramarea informatiei (in general selectiva). chiar sute de ori. montat in si coordonat de catre un microcalculator de uz general (sistem de dezvoltare. Aplicarea unor pulsuri de tensiuni mai mari (25÷50 V) pe pinii de date corespunzatori. chiar al zecilor de ani.BAZELE MICROPROCESOARELOR +V 1001 Bitii de adresa n D E C O D I F I C A T O R 1011 1001 1111 __ CS Circuit tampon Iesire de date Fig. 3. Schema de principiu a unui circuit de memorie PROM (nx4 biti). Acestea permit modificarea dorita . Operatia de stergere si reprogramare a acestor circuite poate fi repetata de zeci. denumit programator de EPROM-uri.3. in locul radiatiei ultraviolete.5). neprogramata ("1" in toate celulele). care astfel intra in starea de conductie. 1 EEPROM: electrically erasable PROM --. La aplicarea unor radiatii ultraviolete asupra cipului (prin fereastra de cuart a acestuia).31. care va coordona procesul de programare. transmitand datele ce se inscriu in memoria EPROM. lasand celula respectiva programata. v. Acest tip de memorii este utilizat cu precadere in etapa de dezvoltare si testare a sistemului sau a unei aplicatii. cap. determina injectia unor electroni de mare energie in baza flotanta a celulei selectate. Celulele memoriilor EPROM nu au conexiuni electrice (tranzistoare cu baza flotanta). concomitent cu selectia unei celule a cipului.PROM ce poate fi sters electric 3-42 . Aceasta readuce celulele in starea initiala. O versiune mai noua de circuite reprogramabile este oferita de catre memoriile EEPROM1 sau de catre memoriile flash. Electronii respectivi raman blocati la disparitia pulsului de programare.

informatia pe care microprocesorul ar incerca s-o inscrie intr-o celula de memorie nu s-ar inscrie niciunde (memoria PROM neputand fi modificata fara aplicarea tensiunilor speciale de programare). Figura 3. si in cazul unei operatii de scriere.3. avand valori curente de 2ko. Se remarca disparitia pinului de R/W (operatia de scriere neavand sens).32. poate creste pana la 32 ko. modificarile pot fi facute chiar in cursul executiei programului. va elimina asemenea situatii inacceptabile. sau parametrii de stare ai unui sistem. in acest caz. microprocesorul ar transmite deasemenea informatii (date) pe magistrala de date. atat din bitii superiori de adresa cat si din semnalul de citire din memorie. actualizate. pentru sinteza semnalului de selectie de cip (CS). utilizand ultimele valori. Daca s-ar folosi doar semnalele de adresa la obtinerea semnalului CS . si chiar mai mult. indiferent care ar fi aceasta operatie. ale acestor parametri). sau parametri de control ai unui proces. intr-o proiectare corecta. valorile salvate pot fi citite din aceste memorii si utilizate la reluarea programului. Capacitatea de memorare. memoriile ROM sunt organizate pe cuvinte de cate 8 biti. informatia din celula de memorie selectata ar fi transmisa la iesirea cipului. Magistrala de adrese Decodificator intern de adrese Matrice memorie Circuit tampon Magistrala de date 10 CS á Fig. intre semnalele provenind de la cele doua surse (memorie si microprocesor). S-ar ajunge astfel la un conflict pe magistrala de date. pot fi salvati in aceste memorii nevolatile. dupa oprirea alimentarii sistemului . sau avarii . alaturi de bitii superiori de adresa. determinati in urma unor teste.la realimentarea acestuia.deconectare. Structura unui circuit de memorare PROM/EPROM de 1kx8 biti. De aceea. Pe de o parte.CONCEPTE GENERALE Astfel. pe magistrala de date. Uzual..32 prezinta structura principiala a unei memorii PROM de 1kx8 biti. etc). printr-o operatie software (deci prin program). proiectantul sistemului microprocesor trebuie sa asigure formarea selectiei de cip (CS). a semnalului de control de citire (READ). iar pe de alta parte. 3-43 . ceea ce mareste sensibil utilitatea acestor circuite (valori ale unor parametri modificati de catre utilizatorul sistemului. sa existe posibilitatea ca. conflictul de date de pe magistrala poate duce la distrugerea unora dintre circuitele componente (memoria sau microprocesorul). sa poata aparea o situatie ce poate pune in pericol integritatea hardware a sistemului. Este absolut interzis.MICROPROCESOARE . Utilizarea.

B15.33). Zonele de adrese ocupate de memoria RAM si ROM depind de proiectantul sistemului. deci 9 biti de adresa direct pe cip (A8÷A0). etc. impreuna cu urmatorii 3 biti de adresa (A11÷A9). bitii inferiori de adresa A11÷A0 fiind aplicati direct pe pinii de adresa ai memoriilor PROM. memorare de tabele de constante. de CS ale celor 15 cipuri de memorie PROM).BAZELE MICROPROCESOARELOR Gama de aplicatii a acestor circuite. Ultimul semnal de selectie. Organizarea si dimensiunile acestora depind de aplicatia in care se utilizeaza sistemul. Memoria este astfel organizata in 15 pagini de cate 4 ko pentru PROM. la care microprocesorul face acces dupa primirea unui semnal de RESET.4.3 Organizarea tipica a memoriei sistemului microprocesor Structura uzuala a memoriei unui sistem microprocesor cuprinde atat memorii RAM cat si memorii ROM.. generare de coduri pentru caractere alfanumerice si simboluri grafice. imbogatind posibilitatile de utilizare ale circuitului. consideram o structura continand o memorie de 64 ko. Dupa cum s-a precizat in capitolul 1. Asadar. Pentru exemplificare. Se remarca deasemenea solutia unora dintre producatorii de circuite integrate VLSI. cuprinde memorare de programe ale sistemului microprocesor. trecerea dintr-un cod intr-altul. 3. de a implementa pe acelasi cip atat elemente de memorie.semnalele CSR0 la CSR7 . si 7 pentru obtinerea selectiei de cip (A15÷A9)] . practic nelimitata. cat si porturi de intrare/iesire programabile. valori tabelate ale unor functii necesare aplicatiei. iar memoria RAM. 3. si 8 3-44 . Se remarca utilizarea ultimilor 4 biti de adresa superiori (A15÷A12) pentru impartirea memoriei in blocuri de 4 ko. Primele 15 dintre cele 16 combinatii posibile ale acestor biti de adrese sunt utilizate pentru selectia memoriei PROM (generarea celor 15 semnale CSP0 la CSP14 . pentru memoria RAM. de regula memoria ROM continand adresa la care trebuie sa se gaseasca prima instructiune din program. permite selectia cipurilor de memorie RAM [care au cate 512 octeti. circuite de ceas programabile etc. Se remarca utilizarea decodificarii in doua etape a adreselor superioare. ultimii 4 ko. organizata in 60 ko memorie PROM si 4 ko memorie RAM (fig. utilizarea memoriilor PROM (cat si a circuitelor PLD --ce contin si elemente de memorie RAM si se programeaza pentru implementarea unor functii logice diverse) permite inlocuirea tot mai accentuata a functiilor implementate prin circuite logice traditionale. Se considera utilizarea unor cipuri de 4 ko memorie PROM si de 512 octeti memorie RAM. memoria PROM ocupa primii 60 ko ai memoriei sistemului.

CONCEPTE GENERALE pagini de cate 512 octeti... doar pentru operatii de citire (READ) din memorie... pentru memoria RAM. respectiv aplicarea acestui semnal direct pe cipurile de memorie RAM. in vederea selectiei corecte a sensului transferului datelor din/in aceste circuite.MICROPROCESOARE . Se remarca deasemenea utilizarea semnalului de R/W pentru validarea semnalelor de selectie a circuitelor PROM. < CSR7 . situate in pagina a 16-a de 4 ko. 4 R/W µP A15 A12 Decodificare 4:16 B15 16 Magistrala de adrese 12 8 8 4K x 8 CS PROM BO > CSP0 < 12 CSP1 8 4K x 8 CS < PROM 12 8 CSP14 < 4K x 8 CS PROM 12 3 Decodificare 3:8 9 8 512 x 8 CS RAM 9 8 512 x 8 CS RAM 9 Magistrala de date 3-45 < CSR0 .. a memoriei globale.

BAZELE MICROPROCESOARELOR Fig. 3-46 .33. Exemplu de organizare a unei zone de memorie de 64 kx8 a unui sistem microprocesor (60 ko PROM si 4 ko RAM).3.

cel al programarii sale. operandul (operanzii) instructiunii. Evident. atat in proiectarea sistemului. al posibilitatilor si al modului de organizare a setului de instructiuni. cele 256 de combinatii posibile oferite de un cuvant sunt suficiente pentru a se configura un set de instructiuni destul de bogat. instructiunile unui microprocesor vor avea o lungime de unul sau mai multe cuvinte de 8 (16. si eventual. al carei continut va fi adus in acumulator. in care octetii 2 si 3 contin o adresa din memorie.1 Consideratii de baza Pentru o gama foarte larga de microprocesoare.MICROPROCESOARE . primul cuvant contine codul operatiei. informatia este data sub forma cuvintelor de 8 biti. Dupa cum s-a precizat.5 SOFTWARE-UL SISTEMULUI MICROPROCESOR-ASPECTE GENERALE In acest paragraf se va aborda microprocesorul dintr-un alt punct de vedere. executa operatia corespunzatoare. sau a cuvintelor de 16 biti. microprocesorul il decodifica si.34 prezinta structura principiala a instructiunilor unui microprocesor pe 8 biti. continutul ei fiind transferat in acumulator. PC este incrementat). 3. 2 sau 3 octeti. de exemplu. intrepatrunderea celor doua aspecte. 32) biti.CONCEPTE GENERALE 3. figura 3. avand cuvinte de instructiune de 1. • conform codului. • se trece la citirea si executarea altei instructiuni.45 . Citind primul cuvant al instructiunii. • se configureaza pe magistrala de adrese adresa desemnata de catre cei doi octeti suplimentari cititi si se citeste aceasta celula de memorie. succesiunea de operatii ce au loc va fi dupa cum urmeaza: • se citeste primul octet al instructiunii. • se decodifica codul operatiei. hardware si software. de la adresele succesive primei citiri (instructiunea are cuvintele unul dupa altul in memoria program). Dupa cum s-a precizat deja. continand date necesare la executia instructiunii respective. Astfel. 3 . codul operatiei indica o instructiune cu trei octeti (fie un microprocesor de 8 biti). cu care opereaza instructiunea respectiva. in functie de instructiune). microprocesoarele de 16 biti au o paleta de posibilitati mult crescuta. cat si in realizarea programelor pentru o aplicatie data. Daca. cuvantul (cuvintele) suplimentare (daca exista. impune stapanirea notiunilor de baza corespunzatoare. Intotdeauna primul cuvant din instructiune va contine codul operatiei (eventual continuat si in al doilea cuvant). sub incidenta sectiunii de CONTROL. daca sunt necesare. urmatoarele cuvinte continand. In general. Deoarece o instructiune poate necesita un numar mai mare de biti pentru transmiterea informatiei necesare executarii unei anumite operatii. de exemplu. eventuale valori numerice semnificand constante sau adrese de celule de memorie sau porturi. pentru o organizare pe cuvinte de 8 biti. se mai citesc doi octeti suplimentari (la fiecare citire.5.

se implementeaza prin setul de instructiuni unele dintre aceste moduri de adresare. de experienta si capacitatea sa de a gasi solutia optima pentru implementarea unei aplicatii date. compacte. ca de altfel in general in procesul elaborarii programelor. a adresei cu care se va opera in instructiunea respectiva. Mecanismul obtinerii acestor operanzi va diferentia modurile de adresare posibile. legate de optiunile personale ale programatorului. Cu cat gradul de sofisticare oferit de modurile de adresare creste. ROM. prin diverse procedee. cresc si posibilitatile si flexibilitatea programatorului de a realiza programe mai eficiente. Vom prezenta in continuare cele mai intalnite moduri de adresare. In esenta. se va explica felul in care pentru fiecare mod de adresare in parte. Figura 3. O posibilitate de apreciere a performantelor unui microprocesor este data si de paleta de moduri de adresare ale acestuia. Structura principiala a instructiunilor unui microprocesor 3.3.2 Moduri de adresare O operatie frecventa in diversele etape de executie ale unui program este referirea la diversele celule de memorie RAM. Unele instructiuni contin si acest operand. sau la registrele microprocesorului.34. utilizate la diferite tipuri de microprocesoare. Aceste referiri la locatii de memorie implica operatia de adresare. si elemente subiective.46 .5. altele indica adresa sau modul de obtinere al adresei unde se va gasi operandul respectiv.35. fiind posibile multiple moduri de adresare. se obtine operandul unei instructiuni a microprocesorului. Pe de alta parte. reprezinta in mod sintetic cele mai des intalnite 3 . Indicat prin codul operatiei ce se executa. intervin deasemenea. Exista o gama relativ importanta de moduri de adresare. insotite de explicatii si exemplificarea utilizarii lor. modul de adresare implica obtinerea. performante.BAZELE MICROPROCESOARELOR MSB B7 B6 B5 B4 B3 B2 B1 LSB B0 cuvint de date instructiune pe 1 cuvint cod operatie B7 B6 B5 B4 B3 B2 B1 B0 cod operatie B7 B6 B5 B4 B3 B2 B1 B0 instructiune pe 2 cuvinte adresa sau data B7 B6 B5 B4 B3 B2 B1 B0 cod operatie B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0 instructiune pe 3 cuvinte data sau adresa B7 B6 B5 B4 B3 B2 B1 B0 Fig. In functie de tipul microprocesorului.

0 ÷ 65536 < > > > Data Valoare index > Data > Data > Data > > Directa Octet 1 Octet 2 Low Octet 3 High > > Indirecta Prima adresa Octet 1 Octet 2 Low Octet 3 High Adr. Detalii suplimentare se pot gasi la prezentarea microprocesorului 8086. efectiva > > Data Relativa Octet 1 Valoarea contorului de program. el fiind de altfel transparent pentru scrierea programului. efectiva Adr. Octet 1 Indexata Octet 2 Low Octet 3 High Adr. facuta in capitolul 4 al lucrarii. Desi figura exemplifica aceste moduri de adresare pentru un microprocesor de 8 biti. se prezinta in esenta modul de obtinere al deplasamentului in cazul adresarii memoriei sistemului microprocesor.MICROPROCESOARE . Mecanismul de operare al microprocesorului 8086 pentru obtinerea adreselor efective.CONCEPTE GENERALE moduri de adresare. index selectat in octetul de instr.47 . nu este necesar acces la mem Octet 2 Octet 3 Low High Adr. Pentru a nu intra in detalii care la acest stadiu al prezentarii pot fi incomode si pot complica inutil prezentarea. nu este evidentiat aici. si pentru microprocesoare cu capacitati sporite (16 sau 32 de biti). in combinatie cu deplasamentul. (reg. Registre Imediata Octet 1 Data . Registru Octet 1 Reg. prin utilizarea registrelor de segment. de baza > Adunare Adr. 0 ÷255 Adr. efectiva > Adunare Observatie : Octet 1 reprezinta octetul de instructiune in toate cazurile 3 .) inclusa in cadrul instr. la urmatoarea PC instructiune Octet 2 Low Octet 3 High > > Data â Adr. Exemplele prezentate utilizeaza instructiuni si notatii specifice microprocesorului INTEL 8086. atata timp cat se vor utiliza registrele segment implicit destinate fiecarei instructiuni in parte. prezentarea ce urmeaza este general valabila.

Astfel. deoarece imediat dupa citirea codului operatiei. in cadrul cuvantului de instructiune. instructiunea contine.3. reprezentand adresa efectiva la care se gaseste operandul necesar pentru implementarea instructiunii respective (v. 3. Principala limitare a acestui mod de adresare este data de faptul ca valoarea operandului. 3. se extrage (fetch) valoarea operandului. reprezentand deci in general valori constante. adresa uneia dintre 64 k cuvinte de memorie. fixe. fiind continuta in codul instructiunii. dupa primul cuvant. Aceasta valoare este deci definita inca din faza de scriere a programului. sau pentru adresarea in interiorul unei pagini de memorie de 64 k cuvinte (specifica unor microprocesoare de 16 biti. contine o valoare constanta. sau in pagina de memorie curenta). Figura 3. De exemplu. Executia unei instructiuni ce utilizeaza adresarea imediata. instructiunea contine in primul cuvant codul operatiei. se poate indica in instructiune. permite programatorului adresarea oricareia dintre celulele de memorie adresabile (global. in functie de tipul microprocesorului si de capacitatea sa de adresare).35). Acest mod de adresare este cel mai simplu mod de manipulare a unei valori constante de catre programator. reprezentand chiar operandul necesar pentru executia instructiunii respective (v. neputand fi modificata in cursul rularii acestuia. o instructiune de transfer a unei valori constante intr-un registru al microprocesorului 8086 va avea structura din figura 3. iar in urmatorul cuvant (urmatoarele cuvinte). ale programului. reprezentarea pe 16 biti a adresei. al codului operatiei. Moduri de adresare ale unui microprocesor Adresarea imediata In cazul adresarii imediate. prezinta un exemplu de 3 .35. Adresarea directa (absoluta) In cazul adresarii directe. fig. uzual). fiind data de programator in codul instructiunii. in vederea luarii unei decizii in program. daca se utilizeaza 2 octeti pentru reprezentarea unei adrese (reprezentate pe 2 cuvinte de instructiune pentru microprocesoarele de 8 biti. daca s-ar utiliza adrese reprezentate pe un octet.48 . Pentru un microprocesor cu capacitatea totala de adresare de 64 k cuvinte. Adresarea imediata este utila in compararea continutului unui registru cu o valoare constanta. fara a mai necesita utilizarea de memorie RAM suplimentara. un cuvant (sau 2. fig.37. utilizat de catre instructiune la executia sa. cu un cuvant se poate adresa oricare dintre 256 de celule (prea putin. Mnemonica MOV BX. necesitand un timp redus de executie.36. precum INTEL 8086). sau pe 1 cuvant de instructiune pentru microprocesoarele de 16 biti). in subciclul urmator al instructiunii. indicand incarcarea registrului BX cu valoarea constanta 3.36. este fixa pentru un program dat. direct.35). 3 Reprezentare in memorie memorie program registre Executie instructiune PC PC+1 PC+2 BB 03 00 cod operatie operand BX 0003 initial: BX = xxxx final: BX = 0003 Fig.BAZELE MICROPROCESOARELOR Fig. 3.

continutul registrului AX).MICROPROCESOARE . prima efectuand adunarea a doua numere constante. specificate in codul operatiilor (utilizand adresarea imediata). 3 .37.38 prezinta comparativ doua secvente de program. iar cea de-a doua efectuand adunarea a doua numere aflate in doua celule din memoria de date (utilizand adresarea directa). la adresarea imediata. din segmentul de date curent (celula contine initial o valoare in locul careia se va inscrie noul operand.49 . structura fixa a instructiunii implica utilizarea unei valori constante a operandului. intr-o celula de memorie de adresa specificata (ALFA = 07F8H). Mnemonica MOV ALFA. figura 3.CONCEPTE GENERALE instructiune ce utilizeaza adresarea directa. care poate diferi pe parcursul executiei programului.AX PC PC+1 PC+2 Reprezentare in memorie memorie program Executie instructiune registre A3 F8 07 cod operatie operand AX 0532 memorie de date 0532H ALFA=07F8 0532 initial: AX =0523H ALFA=XXXX final: AX = 0532H ALFA = 0532H Fig. 3. la adresarea absoluta. Ca un exemplu. Executia unei instructiuni ce utilizeaza adresarea directa Avantajul adresarii absolute fata de adresarea imediata rezulta din modul de obtinere a datei utilizate la executia instructiunii: dupa cum s-a specificat deja. pentru a transfera continutul unui registru (AX = 0523H). daca se modifica continutul celulei de memorie a carei adresa este continuta in instructiune. instructiunea va utiliza la executie data de la adresa respectiva.

care transfera continutul unuia dintre registrele microprocesorului (CS). se codifica adresa registrului (registrelor) pe cate un cimp de 3-4 biti (functie de numarul maxim al acestor registre). pentru diferitele valori ale celor doua numere din memoria de date. Figura 3.. continut in insasi cuvantul de instructiune. fiind o solutie mai rapida la executia programului. in loc de memorie (v. Adresarea registru Acest mod de adresare reprezinta o varianta a adresarii directe. Aceasta permite ca instructiunea sa aiba doar un singur cuvant.38.fig. programatorul va trebui sa modifice continutul celulelor de memorie din memoria de date. in care operandul (operanzii) sunt continuti in registrele de uz general ale microprocesorului. al adresarii absolute. Deoarece numarul de registre de uz general ale unui microprocesor este relativ redus. dupa cum s-a mai mentionat). Solutia adresarii imediate se va prefera in cazul operarii cu constante (ce nu se schimba in timpul programului). Compararea implementarii programelor utilizand adresarea imediata (a). sau directa (b) In esenta. care astfel contine operanzii instructiunii.BAZELE MICROPROCESOARELOR Instructiuni(mnemonici) 1 2 3 Instructiuni(mnemonici) 1 2 3 MOV AX. pe cand in cel de-al doilea caz..39 prezinta un exemplu de instructiune utilizand adresarea registru. programatorul va trebui sa modifice. 345H MOV REZ. OP2 MOV REZ. 3. la accesarea registrelor interne ale microprocesorului.. fiind deci scurta. AX Reprezentare in memorie memorie program registre Reprezentare in memorie memorie program PC PC+1 PC+2 . pentru a modifica datele ce se aduna.35). AX MOV AX.50 . in cazul adresarii imediate. in alt registru al microprocesorului (AX). programul ramane neschimbat in acest caz. codul instructiunilor (deci programul). 3.. in care se gasesc cele doua valori. 123H ADD AX. si sa se execute foarte rapid (datorita vitezei de executie sporite. B3 23 01 05 45 03 A3 00 1 123H 123H AX AX 468H 468H PC PC+1 PC+2 . 3 . 0468H memorie de date B3 80 00 05 90 00 A3 REZ:100H OP2:90H OP1:80H memorie de date 1 0123H 123H registre AX 0345H 345H 468H + 2 345H 3 REZ:100H 2 0468H + 468H 3 PC+8 01 (a) utilizind adresarea imediata PC+8 00 01 (b) utilizind adresarea directa Fig. OP1 ADD AX.

Aceasta permite ca. Executia unei instructiuni ce utilizeaza adresarea registru Adresarea indexata Unele microprocesoare sunt prevazute cu registre denumite registre index.39. specificat de catre instructiune. cu o valoare numerica continuta in codul instructiunii.CS PC PC+1 A3 F8 AX A3C2 A3C2 memorie program CS A3C2 initial: AX =XXXX CS = A3C2H final: AX = A3C2H CS = A3C2H Fig. sa se obtina adrese diferite ale datei utilizate de catre instructiune. a valorii continute in celula de memorie cu adresa data de suma dintre adresa de inceput a unui tabel (TAB) si un indice continut intr-un registru index (SI). Executia unei instructiuni ce utilizeaza adresarea indexata.MICROPROCESOARE .40. TAB[SI] PC PC+1 . care pot fi utilizate pentru implementarea acestui mod de adresare. Mnemonica ADD AX.40 prezinta o instructiune de adunare la continutul acumulatorului (AX).. adresa datei ce se va utiliza de catre instructiune se obtine prin adunarea continutului registrului index. 3.3.. Figura 3. In esenta.51 . Reprezentare in memorie memorie program Executie instructiune registre AX 03 04 00 01 100H 5H 100H 123H / 545H 545H 123H SI 0005 memorie de date TAB=100H inainte de executie: AX = 0123H SI = 0005H TAB[5]=0422H dupa executie: AX = 0545H SI = 5 TAB[5] = 0422H 422H 105H TAB+5 0422 Fig. prin modificarea continutului registrului index. 3 .CONCEPTE GENERALE Mnemonica Reprezentare in memorie Executie instructiune registre MOV AX.

in sensul ca apar "doua grade de libertate" in ceea ce priveste modul de localizare a datei ce se manipuleaza in instructiunea respectiva. ce utilizeaza adresarea indexata . Implementarea unei bucle de program. SI = 0 AX = 0 CX = 10 . in registrul index. incrementat sau decrementat. care contin adresa datei ce se va utiliza in instructiune. Figura 3. Figura 5. calcul suma elemente BUCLA CX = 0 .41 prezinta un asemenea exemplu.(a) Schema logica a secventei de program. in cadrul adresarii indirecte.. Adresa de inceput a tabelului (adresa de baza). initializari MOV AX.este incrementata.. La fiecare trecere a programului prin bucla respectiva. Ca o varianta. La iesirea din bucla. instructiunea contine in cuvantul de instructiune.35). pregatindu-l astfel pentru utilizari ulterioare. este continuta in codul instructiunii (ca operand al acesteia). ale aceleiasi instructiuni (de exemplu intr-o bucla de program). ale memoriei. 0 AX = AX + TAB[SI] CX = CX . 1 LOOP BUCLA Adresarea indirecta In esenta. (b) secventa de program ADD AX. instructiunea se refera la un registru al microprocesorului (sau la o pereche de registre). o adresa la care se va gasi. valoarea registrului index (SI) . determinand adunarea succesiva a tuturor numerelor din tabelul TAB (fie 10 numere). 3. Tipic. Acest tip de adresare ofera un grad suplimentar de flexibilitate fata de adresarea indexata. TAB[SI] ADD SI. fiind pregatit pentru a adresa urmatorul element al tabloului. (a) (b) Fig. iar deplasamentul fata de inceputul tabelului (deci indicele elementului de tabel ce se doreste a se adresa). Astfel.BAZELE MICROPROCESOARELOR Continutul registrului index poate fi modificat automat (prin indicarea in codul instructiunii a acestui lucru). acest mod de adresare este util la adresarea unor elemente ale unui tabel de valori.1 MOV SI. va contine suma continuturilor tuturor celulelor de memorie din tabelul TAB. in memorie. de exemplu).initial 0 .42 contine un exemplu 3 .fig.52 . AX MOV CX. pentru a se adresa locatii distincte (uzual consecutive). ca operand. se pot adresa in mod succesiv locatiile unei zone de memorie. 10 . adresa efectiva unde este localizata data cu care va opera instructiunea la executia sa (v. prin implementarea unei bucle de program. La fiecare pas. in care bucla de program prezentata se executa de un numar de ori egal cu valoarea initiala a registrului CX. registrul AX (setat initial cu 0). la adresarea indirecta prin registru.41. 3. continutul registrului index se reactualizeaza (prin incrementare.

Operandul va reprezenta in acest caz nu o adresa. si una inapoi (JMP TST)..43 prezinta modul de scriere. Executia unei instructiuni ce utilizeaza adresarea indirecta Adresarea relativa Acest mod de adresare utilizeaza operandul continut in codul de instructiune pentru a efectua o deplasare " sus" sau " jos" in program.42. reprezentand diferenta dintre adresa instructiunii destinatie si cea a instructiunii imediat urmatoare instructiunii curente. Aceasta valoare continuta in operandul unei instructiuni cu adresare relativa se numeste " offset" (deplasare).MICROPROCESOARE .un numar in complement fata de 2).in sensul cresterii adresei (pentru valori pozitive ale operandului). Figura 3.in sensul descresterii adresei (pentru valori negative ale operandului). din punctul curent (de la adresa curenta. in mod automat. deci cu un numar dat de cuvinte de memorie. cu valoarea acestui operand.53 . 3 .. BX 87 1C 100H 1234/6789 SI 0100H 5678 memorie de date 1234 100H 6789/1234 inainte de executie: BX = 1234 SI = 100H mem(100H) =6789 dupa executie: BX =6789 SI = 100H mem(100H) = 1234 Fig. si codul generat pentru o secventa de program ce utilizeaza o adresare relativa inainte (JLE ERR). reprezentand numarul de cuvinte de instructiune peste care trebuie sa sara programul "inainte" in memorie . Mnemonica Reprezentare in memorie Executie instructiune memorie program registre XCHG BX. reprezentat in cod complementar fata de 2.CONCEPTE GENERALE de acest tip. in care se schimba continutul registrului BX cu continutul celulei de memorie a carei adresa este continuta in registrul SI. acest tip de adresare se utilizeaza la implementarea instructiunilor de salt relativ in program (salturi scurte). ci o constanta (pozitiva sau negativa . Aceste valori de deplasare sunt uzual calculate de catre programul asamblor. sau "inapoi" in memorie . programatorul utilizand o scriere formala. Se poate remarca modul de obtinere al deplasamentului in cele doua cazuri. Uzual.3. convenabila. [SI] PC PC+1 . de la locatia curenta a programului. continuta in in in registrul contor de program).

O simpla modificare de program a uneia sau a mai multor instructiuni. sau BX=20H.BAZELE MICROPROCESOARELOR Coduri instructiuni MOV BX.5. setul de instructiuni al microprocesorului. incarcare BX cu continut AX 0 1 2 3 4 5 6 7 9 8B DB 83 20 00 7E 05 0F 10 00 EB F6 8B C3 . 20H Memorie program adresa cod Comentarii .43. Totalitatea operatiilor posibile: intre registre. memorare BX in AX Fig. BX = BX + 10H salt pozitiv cu +5 . comparare BX cu 20H JLE ERR ADD BX. dand flexibilitatea deosebita a acestuia. daca BX < 20H. BX 10 11 12 13 . Utilizarea adresarii relative la efectuarea salturilor scurte in program 3. Cele 256 de combinatii posibile din codul operatiei vor fi suficiente pentru a genera un set de instructiuni tipic. 10H . 3. reluare program de la adresa TST salt negativ cu -10=F6h 8 JMP TST ERR MOV AX. modul de organizare al setului de instructiuni al unui microprocesor. in mod principial. Clasificarea instructiunilor • Instructiuni de transfer si actualizare a informatiei 3 . Iata un nou mod de "construire" a unui sistem automat. in ansamblul lor. Pentru a prezenta. a celor cu memoria. salt la ERR . aritmetico-logice si alte operatii speciale.54 . si functionarea globala a sistemului este alta. prin care se activeaza diversele parti constitutive ale microprocesorului (prezentate la sectiunea de hardware) alcatuiesc. El permite "conectarea" intre ele a diverselor parti ale microprocesorului. se considera un procesor organizat pe cuvinte de 8 biti. AX TST CMP BX.3 Setul de instructiuni al microprocesorului Gradul de complexitate si varietate al operatiilor ce pot fi efectuate de catre microprocesor definesc puterea de calcul si performantele posibile ale acestuia.

CONCEPTE GENERALE 0 0 D D D N N N (a) cod Grupa 0 0 1 destinatie D D D S operatie S sursa S S sursa S (c) S (b) cod grupa 1 1 0 X destinatie X X Grupul 0 --. • Instructiuni de modificare a informatiei Grupul 2 --.no operation).operatii de control al procesorului.operatii de transfer al informatiei. Tipice sunt operatiile de stop al procesorului. sau fara revenire. Transferul se poate efectua neconditionat. care definesc grupa careia ii apartine o operatie data. Grupul 3b --. sau doar in cazul setarii unora dintre indicatorii registrului de stare. PROM. asupra unor celule de memorie. transferurile pot fi cu revenire in punctul de unde se genereaza transferul. celule de memorie RAM. destinatia. sau a unei celule de memorie). Astfel. de la locatia curenta. Sunt instructiunile care permit transferarea executiei programului. instructiunea inoperanta (NOP . asupra continutului unor registre ale microprocesorului. decrementarea (cresterea. porturi de iesire. sau (doar pentru unele microprocesoare). Structura codurilor operatiilor unui microprocesor alta). pentru cele patru grupe anterior definite. rotirea continutului acestora si alte operatii de acest gen. Sunt operatii ce actioneaza direct asupra microprocesorului. Destinatiile pot fi registre. intr-o alta zona a programului (modificarea PC). Contine instructiunile ce permit efectuarea de operatii aritmetice sau logice. caz in care nu se salveaza adresa curenta.3. porturi de intrare. Instructiunile acestui tip permit incrementarea. De facto. Grupul 1 --. incarcarea continutului registrelor. 3 . activare / dezactivare intreruperi. • Instructiuni de control Grupul 3a --. intr-o alta locatie. vor fi necesari 2 biti (fie cei mai semnificativi ai octetului). In plus. celule de memorie RAM. in care caz adresa curenta a programului este salvata inainte de a se efectua transferul. aceste operatii realizeaza legatura intre o locatie si alta (ca si cum ar f conectate fizic una cu i cod grupa 2 1 1 operatie C C C Y Y Y (d) cod grupa 3 conditie transfer de operatie transfer Fig.MICROPROCESOARE . Contine instructiunile ce permit transferarea informatiei dintr-o locatie denumita sursa.operatii generale. Se utilizeaza unii dintre bitii octetului de cod al instructiunii pentru a desemna grupa de operatii din care face parte instructiunea.operatii de control al programului.55 . Sursele pot fi registre.operatiile aritmetico-logice. fara a se modifica informatia.44. respectiv scaderea continutului registrelor.

codul binar al operatiei va fi (DDD=011. care permit programarea microprocesorului cu instructiuni puternice (limbaj FORTRAN. probleme ce nu fac obiectul acestui paragraf). (cod 011).BAZELE MICROPROCESOARELOR In figura 3. De aceea. NNN=100). fiecare instructiune in limbaj de u asamblare generand cod pentru o singura instructiune a microprocesorului. din texte sursa. ar fi nu numai greoaie. etc. Cunoscand. denumit text sursa. Totodata. Scrierea unor programe sub aceasta forma. Trebuie accentuat ca scrierea programelor cu aceste mnemonici. dar si expusa la foarte probabile erori. analizeaza aceste instructiuni. numite compilatoare (specifice pentru fiecare limbaj). considerand o operatie de incrementare (cod 100) a registrului 3. se utilizeaza asa-numitele mnemonici. Operatia de trecere de la limbajele de asamblare la programul executabil poate fi facuta sau prin elaborarea de catre programator a codurilor corespunzatoare instructiunilor si introducerea lor (de exemplu) de la niste comutatoare. microcalculatoare de putere sporita. 00011100 sau. uzual. in baza 8 de numarare. uzual asa numitele sisteme de dezvoltare. se poate genera codul unei anume instructiuni din aceasta grupa. suporturi de memorie externa de tip disc. continand programul scris in limbaj de asamblare (de exemplu prin citirea de la un periferic a unui fisier). trei biti (desemnati prin DDD). intr-o forma accesibila. cu facilitati specifice in ceea ce priveste resursele sistemului (memorie. 0348. la sistemele mai evoluate. adresata indexat de catre un registru index) si trei biti (NNN).56 . indicand operatia ce se efectueaza. coduri obiect pentru microprocesorul respectiv. (incrementeaza R3). C. a unui program special. PASCAL. (desemnata ca programare in cod masina). Dispunand de programele specifice. pentru un microprocesor de 8 biti (pentru simplitatea prezentarii). PL/M. 7 registre si o celula de memorie. De exemplu. El realizeaza o corespondenta " nu la unu". Aceste programe vor necesita pentru a fi executate. din manualul de programare al microprocesorului. se pot genera. instructiunile din grupa 0 sunt formate din cei doi biti de cod de grupa. codificand registrul asupra caruia se opereaza (se remarca deci limitarea la 8 registre --sau. care vor corespunde programului in limbaj de asamblare. procesorului i se va pregati in memorie succesiunea de coduri binare. in memoria sistemului (programarea fiind practic efectuata in cod masina). sisteme de calcul. codurile fiecarui registru al acestuia. C++. trebuie date indicatii suplimentare. sau prin executarea. cuvinte abreviate. Ca un exemplu. Acesta poate prelua textul. FORTH. etc. (Evident.). corespunzatoare acestor mnemonici. generand. in cazul corectitudinii lor. scrise in aceste limbaje. codul binar corespunzator operatiilor dorite.. numit asamblor. Astfel. sursa si destinatia ei (unde este cazul). 3 . permite elaborarea programelor "pe hartie". Fizic. Asamblorul reprezinta o prima etapa in gradul de " evolutie" a limbajelor in care poate fi programat un microprocesor. de provenienta engleza.). Exista limbaje de nivel inalt. limbajul de asamblare este propriu fiecarui tip de microprocesor. alcatuind ceea ce se numeste limbajul de asamblare al microprocesorului (si fiind specific fiecarui procesor in parte). instructiunea anterioara poate fi referita ca INC R3. referitoare la adresa de memorie unde se va genera codul programului etc. semnificand operatia ce se efectueaza. cat si ale operatiilor dorite a se efectua. ADA. BASIC. conform setului de instructiuni.44 sunt prezentate structurile codurilor operatiilor instructiunilor din cele patru grupe.

Instructiunile grupei a treia nu pot fi clasificate intr-o maniera la fel de clara ca pentru grupele anterioare. sau negativ (M --. codul operatiei este dat in figura 3. se continua executia programului. Acestea permit. Ramificarea conditionata se bazeaza pe examinarea registrului de stare.not carry). iar SSS. Astfel. Ceea ce deosebeste acest transfer de instructiunile de salt. nu a fost rezultat nul). {3} cod registru sursa).44c. in unele puncte din program.R3. Transferul executiei programului la adresa unde se gaseste subrutina poate fi deasemenea conditionat si se executa din acest punct de vedere ca si pentru instructiunile de salt. prin instructiuni de tipul CALL. sau nu (NC --. {6} cod registru destinatie. Pentru operatiile aritmetico-logice. care contine informatii referitoare la rezultatele ultimei operatii aritmetice sau logice efectuate in ALU. sau impar (PO -. devierea executiei programului de la secventa normala de instructiuni. care se vor executa de mai multe ori in decursul operarii sistemului. in aceasta grupa.57 . Totodata. registrul sursa. De exemplu. instructiunile de ramificare a programului. respectiv sursa. sau nenul (NZ --. in mod neconditionat.carry). Aceste subprograme pot fi " chemate" ("apelate") din programul "principal". Totusi.plus). etc. il reprezinta salvarea 3 . Acestea reprezinta zone de program (denumite si subprograme).CONCEPTE GENERALE Instructiunile grupei 1 au structura conform figurii 3.parity even). Mnemonica corespunzatoare poate fi scrisa ca MOV R6. Ca exemple tipice de instructiuni de ramificare conditionate.zero). continutul registrului R4. urmata de adresa dorita la care se comuta programul. simbolizat prin mnemonica JZ. • a aparut depasire (sau imprumut) (C --. DDD si SSS semnifica registrul destinatie. rezultatul este memorat tot in acumulator (alterand operandul continut de catre acesta). grupul XXX de trei biti indica operatia ce se efectueaza. Instructiunea CALL ("cheama") permite apelarea de subrutine. ({1} inseamna cod operatie de transfer. om CALL si RETURN (toate putand fi instructiuni conditionate sau nu). continand unul dintre operanzi. In mod implicit. dupa cum s-a mentionat. Aici. indicatorii de stare continuti in acest registru pot specifica: • rezultat nul (Z --. in cazul indeplinirii unei conditii in registrul de stare. va aduna la continutul acumulatorului. de exemplu.not zero). se va initia o anume actiune sau alta) sau. celalalt operand este considerat a fi continut de catre acumulator.parity odd). Instructiunea JUMP ("salt"). sau data de intrare.minus). permite saltul programului la o noua adresa. operatie necesara in anumite puncte de decizie (in functie de un anume rezultat. v mentiona instructiunile JUMP. o instructiune ADD R4. • rezultat pozitiv (P --. Dupa cum s -a mentionat.44b. Transferul informatiei din registrul R3 (cod 011) in R6 (cod 110) va avea deci codul 1638.MICROPROCESOARE . Daca indicatorul testat nu este setat. cu instructiunea urmand celei de salt conditionat (nu se efectueaza saltul). rezultatul fiind plasat in acumulator. Cele doua grupe de cate trei biti. • rezultatul are un numar par de biti 1 (PE -. saltul la aparitia unui rezultat nul. (de exemplu. pentru efectuarea transferului. o pondere speciala o au. sau din alte subrutine.

microprocesorul va depune in memoria sistemului. continand adresa varfului noii stive (permitand salvari succesive. unde se depune valoarea PC la apelare de subrutine si unde se mai poate depune si continutul registrelor microprocesorului (prin instructiuni specifice de salvare a acestora. se rezerva o anumita zona din memoria sistemului. micsorand stiva corespunzator. valoarea PC care fusese salvata la apelare si se reactualizeaza SP.58 . prin utilizarea registrului indicator de stiva. in cazul unor inlantuiri de apeluri (ordine LIFO --. mai exista operatii speciale. In afara instructiunilor de ramificare a programului. de la adresa indicata de SP. Aceasta permite executarea de apelari de subrutine. valoarea numaratorului de program.last in. Si instructiunea de RETURN poate fi conditionata.vezi modurile de adresare). O asemenea inlantuire a apelurilor de subrutine este prezentata in figura 3. (din varful stivei). La executarea instructiunilor de RETURN. 3 . la adresa indicata de SP. necesare la tratarea intreruperilor). prin executarea unei instructiuni de tip RETURN ("intoarcere"). aflat la dispozitia programatorului pentru a-l aloca stivei. este raspunderea programatorului de a respecta ordinea strict inversa celei de la apelare. inlantuit. operatii de intrare/iesire.ultimul intrat. daca s-au salvat registre in stiva. Nu exista uzual o marime standard a stivei. intr-un alt paragraf. operatii de control al microprocesorului etc. Detalii privind utilizarea stivei vor fi date ulterior. Pentru stiva. sa se refaca in PC valoarea salvata la apelare. La executarea unei instructiuni de salt la subrutina. nealterand vechile valori din stiva). Principala limitare a acestei modalitati de stocare a datelor este data de modul de acces la stiva. din alte subrutine. secvential. primul iesit). Organizarea acesteia in memoria externa microprocesorului permite realizarea de stive oricat de mari. se numeste stiva programului. Deasemenea. first out --. ele trebuiesc refacute etc.BAZELE MICROPROCESOARELOR continutului PC. Principalul avantaj al utilizarii stivei este ca permite memorarea temporara a datelor fara complicatia de a specifica in mod explicit adresa cu care se opereaza (necesara la adresarile tipice ale memoriei . la terminarea subrutinei apelate. Se determina astfel continuarea programului apelant. Salvarea (refacerea) continutului PC este facuta cu ajutorul registrului indicator de stiva (SP). Aceasta z ona de memorie RAM. limitarile fiind legate de disponibilul total de memorie. se aduce. Utilizatorul nu cunoaste si nici nu trebuie sa cunoasca adresa unde se memoreaza datele.. pentru fiecare tip de procesor in parte. de la instructiunea imediat urmatoare celei de apelare (CALL). Aceasta permite ca. cu registrul indicator de stiva.45. din punctul de unde se face aplelul. PC. operatiile desfasurandu-se indirect. Evident. SP se modifica. Dupa fiecare salvare in stiva.

011A CALL SUBB 011B RETURN 3 2 . RETURN ..salvare continut PC in stiva .59 . adresa de unde se face citirea .. Figura 3. de patru perioade de ceas.MICROPROCESOARE . de la adresa adr).47. se prezinta. 2 operanzii. pentru doua instructiuni ale unui microprocesor de 8 biti (ZILOG 80). 0A50 CALL SUBA 0A51 .47 prezinta desfasurarea acestei instructiuni. implica incarcarea continutului acumulatorului cu continutul celulei de memorie de la adresa adr.1 cod operatie.46.salvare continut PC in stiva -executie subrutina SUBA (100H) 0100 .. a continutului registrului R al microprocesorului....CONCEPTE GENERALE memorie program adresa instructiune . Astfel. Modul de utilizare a stivei la apelarea subrutinelor Pentru a sesiza mai bine corelarea ansamblului de operatii ce se efectueaza pentru executarea unei instructiuni a microprocesorului. Se remarca executia instructiunii intr-un singur subciclu. Instructiunea LDA adr (cel de-al doilea exemplu). in figura 3. instructiunea va dura deci 2 microsecunde).. 4 1 . . Se remarca aparitia a 4 subcicluri pentru executarea acestei instructiuni. respectiv 3.3.refacere continut PC din stiva -continuare executie subrutina SUBA inainte de 1 Stiva (memorie date) 1 SP SP 2 3 4 SP 0A51 011B 0A51 SP 0A51 SP Fig. pentru care se vor efectua 4 accese la memorie (3 pentru citirea codului instructiunii . Durata acestei instructiuni va fi deci de 4xTc.45. (Pentru un ceas de 2 MHz.salvare continut PC in stiva -continuare executie program principal 0200 . durand 13 perioade de ceas (deci 6.46 prezinta executia instructiunii ADD R de adunare la continutul acumulatorului.5 microsecunde).. si unul pentru citirea datei dorite. 3 . Primele trei perioade de ceas se folosesc pentru extragerea si decodificarea instructiunii..adresare directa. transferul de informatie si operatiile efectuate in fiecare perioada de ceas in parte. ... iar in al patrulea se executa operatia.executie subrutina SUBB (200H) .. figura 3. in mod schematic.

46. se incrementeaza PC 3 . (Subciclul 1.3. Executia instructiunii ADD R.b.60 . Registrul contor de program are valoarea 9F52H (a)(Subciclul 1.BAZELE MICROPROCESOARELOR 9 F 52 Memorie program ADD R : 1000 0010 Magistrala de adrese Magistrala de date Magistrala interna 9F 52 1 ceas > PC 9F 52 Acc UAL R Registrul R RT Registru temporar RI Registru de instructiuni unitate de comanda Registru de adrese Fig. T2) Codul instructiunii (din celula de memorie selectata) pe magistrala de date.3. T1) Se selecteaza celula de memorie program la adresa 9F52H (valoarea curenta a PC) Memorie program ADD R: 1000.46.0010 Magistrala de adrese 1000 Magistrala de Magistrala 0010 date interna 9 F 52 1 2 ceas > PC 9F 53 +1 R Registrul R Registru de adrese Acc UAL RT Registru temporar RI Registru de instructiuni unitate de comanda Fig.

T4) Se decodifica si executa instructiunea.46.3.MICROPROCESOARE .61 .CONCEPTE GENERALE Memorie program ADD R: 1000 0010 Magistrala de adrese Magistrala de Magistrala date interna 9 F 52 1 2 3 ceas > PC 9 F 53 Registru de adrese 1000 0010 Acc UAL RI Registru de instructiuni unitate de comanda R Registrul R RT Registru temporar Fig. in registrul de instructiuni Memorie program ADD.d.c. rezultatul in acumulator 3 . (Subciclul 1.3. (Subciclul 1. se aduna continutul registrului R la acumulator.46. T3) Codul instructiunii citit pe magistrala de date.R : 1000 0010 Magistrala de adrese Magistrala de date Magistrala interna Registru de adrese 9 F 52 1 2 3 4 > ceas R Registrul R RT PC 9 F 53 Acc 1000 0010 RI UAL Registru de instructiuni unitate de comanda Registru temporar cod operatie Fig.

Subciclul 1 -.47. PC are valoarea 10A0 H.3. Instructiunea de incarcare a acumulatorului de la adresa ADR = 8B2FH.62 . se incrementeaza PC 3 ..BAZELE MICROPROCESOARELOR 10A0 Memorie program Ad1 : 10001011 :8B Ad2: 00101111 :2F LDA : 00111010 : 3A Adrese 10A0 10A1 10A2 10A3 Memorie date Date : 1100 0010 :C2 Magistrala de date Magistrala interna 8B2F 10 A0 1 ceas > PC 10 A0 Registru de adrese Acc UAL RT RI Registru de instructiuni unitate de comanda Registru Registru temp. Codul instructiunii pe magistrala de date. temporar cod operatie de adrese Ad1 Ad2 Fig. continuta in instructiune. T2.b. de adrese Registru temporar RI Registru de instructiuni unitate de comanda Fig.47.se va citi si decodifica ciclul instructiunii: (a) T1.3. Se selecteaza celula de memorie program de la adresa 10A0 H Adrese 10A0 10A1 10A2 10A3 LDA : 00111010 : 3A Memorie program Ad1 : 10001011 :8B Ad2: 00101111 :2F Memorie date Date : 1100 0010 :C2 Magistrala de date 8B2F LDA : 00111010 : 3A Magistrala interna 10 1 2 > ceas A0 PC Registru de adrese 10 A1 +1 Acc UAL RT Ad1 Ad2 Registru temp.

d.63 . temporar de adrese Ad1 Ad2 Fig. T3.3.MICROPROCESOARE .47. Se decodifica codul instructiunii 3 . T4.3. temporar de adrese Ad1 Ad2 Fig.c. Codul instructiunii citit de pe magistrala de date in registrul de instructiuni Adrese 10A0 10A1 10A2 10A3 Memorie program LDA : 00111010 :3A Ad1 : 10001011 :8B Ad2: 00101111 :2F Memorie date Date : 1100 0010 :C2 Magistrala de date 00111010 Magistrala interna 8B2F 10 1 2 3 4 > ceas A0 PC Registru de adrese 10 A1 Acc UAL RT RI Registru de instructiuni unitate de comanda Registru Registru temp.47.CONCEPTE GENERALE LDA : 00111010 : 3A Memorie program Ad1 : 10001011 :8B Ad2: 00101111 :2F Adrese 10A0 10A1 10A2 10A3 Memorie date Date : 1100 0010 :C2 Magistrala de Magistrala date interna 00111010 8B2F 10 1 2 3 > ceas A0 Registru de adrese 00111010 RI UAL RT Registru de instructiuni unitate de comanda PC 10 A1 Acc Registru Registru temp.

47. Se selecteaza celula de memorie progarm de la adresa 10A1 H. T2.3.47. T1.BAZELE MICROPROCESOARELOR LDA : 00111010 :3A Ad1: 10001011 : 8B 10A1 Memorie program Memorie date Ad2: 00101111 :2F Adrese 10A0 10A1 10A2 10A3 Date : 1100 0010 :C2 Magistrala de date Magistrala interna 8B2F 10 A1 1 ceas > PC Registru de adrese 10 A1 Acc UAL RT RI Registru de instructiuni unitate de comanda Registru Registru temp.se va citi cel de-al doilea octet al instructiunii (data) Fig. se incrementeaza PC 3 .3. temporar cod operatie de adrese Ad1 Ad2 Subciclul 2 -. Valoarea octetului cel mai semnificativ al adresei ADR pe magistrala de date. temporar de adrese Ad1 Ad2 Fig.64 .e. celula contine cei 8 biti superiori ai adresei ADR LDA : 00111010 :3A Memorie program Ad1 : 10001011 : 8B Adrese 10A0 10A1 10A2 10A3 Ad2: 00101111 :2F Memorie date Date : 1100 0010 :C2 Magistrala de date Ad1 : 10001011 : 8B 8B2F Magistrala interna 10 1 2 > ceas A1 PC Registru de adrese 10 A2 +1 Acc UAL RT RI Registru de instructiuni unitate de comanda Registru Registru temp.f.

MICROPROCESOARE .CONCEPTE GENERALE Adrese 10A0 10A1 10A2 10A3 Memorie program LDA : 00111010 :3A Ad1 : 10001011 :8B Ad2: 00101111 :2F Memorie date Date : 1100 0010 :C2 Magistrala de date 10001011 8B 8B2F Registru de adrese 10 1 2 3 > A1 Magistrala interna PC 10 A2 Acc UAL 8B Ad1 Ad2 ceas RT Registru Registru temp.65 .47.3. temporar de adrese RI Registru de instructiuni unitate de comanda Fig. T1.47. T3.3.h.g. temporar cod operatie de adrese 8B Ad1 Ad2 RT RI Registru de instructiuni unitate de comanda Subciclul 3 -. Memorarea octetului cel mai semnificativ al adresei ADR in partea superioara a registrului de adrese 10A2 Memorie program LDA : 00111010 :3A Ad2 : 10001011 :8B Ad2 : 00101111 : 2F Adrese 10A0 10A1 10A2 10A3 Memorie date Date : 1100 0010 :C2 Magistrala de date Magistrala interna 8B2F 10 A2 1 ceas > PC Registru de adrese 10 A2 Acc UAL Registru Registru temp. Se selecteaza celula de memorie program de la adresa 10A2 H (PC) celula contine cei 8 biti inferiori ce compun adresa ADR 3 .se va citi al treilea octet al instructiunii (data) Fig.

66 . se incrementeaza PC Memorie program LDA : 00111010 :3A Ad1 : 10001011 :8B Ad2: 00101111 :2F Adrese 10A0 10A1 10A2 10A3 Memorie date Date : 1100 0010 :C2 Magistrala de date Ad2 : 00101111 : 2F 8B2F Registru de adrese 10 1 2 3 > A2 PC 10 A3 Acc Magistrala interna ceas UAL 8B 2F Ad1 Ad2 RT Registru Registru temp.BAZELE MICROPROCESOARELOR Adrese 10A0 10A1 10A2 10A3 Memorie program LDA : 00111010 :3A Ad1 : 10001011 :8B Ad2 : 00101111 : 2F Memorie date Date : 1100 0010 :C2 Magistrala de date Ad2 : 00101111 : 2F 8B2F Magistrala interna 10 1 2 > ceas A2 PC Registru de adrese 10 A3 +1 8B Ad1 Ad2 Acc UAL RT RI Registru de instructiuni unitate de comanda Registru Registru temp.3. Memorarea octetului cel mai putin semnificativ al adresei ADR in partea superioara a registrului de adrese 3 .j. T3.47. Valoarea octetului cel mai putin semnificativ al adresei ADR pe magistrala de date.47. T2.i. temporar de adrese Fig.3. temporar de adrese RI Registru de instructiuni unitate de comanda Fig.

3. T1.CONCEPTE GENERALE Memorie program Memorie date LDA : 00111010 :3A Ad1 : 10001011 :8B Ad2: 00101111 :2F Adrese 10A0 10A1 10A2 10A3 8B2F Date: 11000010 : C2 8B2F Magistrala de date Registru de adrese Magistrala interna 8B 2F 1 > ceas 8B 2F PC 10 A3 Acc UAL RT Registru temporar Ad1 Ad2 Registru temp.l.47. Se selecteaza celula de memorie de date de la adresa 8B2FH aflata in registrul tampon de adrese Adrese 10A0 10A1 10A2 10A3 Memorie program LDA : 00111010 :3A Ad1 : 10001011 :8B Ad2: 00101111 :2F Memorie date Date: 11000010 : C2 8B2F Magistrala de date Date: 11000010 : C2 Magistrala interna Registru de adrese 1 2 > ceas RT Registru Registru temp. T2.67 .3.47. Data din celula selectata pe magistrala de date 3 .k. temporar de adrese Ad1 Ad2 PC 10 A3 Acc UAL RI Registru de instructiuni unitate de comanda Fig.MICROPROCESOARE .se va executa efectiv instructiunea: se incarca acumulatorul cu valoarea de la adresa ADR Fig. de adrese RI Registru de instructiuni unitate de comanda Subciclul 4 -.

pentru a continua executia normala a acestuia. programatorul trebuie sa salveze adresa de revenire.5. data fiind importanta conceptului.m. introdus in paragrafele precedente. temporar de adrese Ad1 Ad2 Fig. unde este memorata alta parte a programului. Se utilizeaza doi termeni legat de operatiile cu 3 . Conceptul de stiva. nu exista aceasta posibilitate in programele scrise in limbajul de asamblare. si revenirea din subrutine (RETURN). se vor da in prezentul paragraf detalii suplimentare in acest sens. la apelarea unei subrutine. de a se "rememora" adresa unei anumite instructiuni.4 Utilizarea stivei programului Desi s-au facut si in paragrafele precedente referiri si s-au dat unele explicatii referitor la definirea si modul principial de utilizare a stivei.3. indicata la revenirea din subrutina). cu registrul indicator de stiva continand adresa urmatoarei locatii libere din stiva. in cursul executiei programului. programatorul trbuie sa indice la sfarsitul acesteia unde trebuie sa se "reintoarca" registrul indicator de program. nu se poate face acest lucru prin revenire intr-un punct fix al programului (a carui adresa ar putea fi. dupa executia acesteia. Data din celula adresata este memorata in acumulator 3. Dupa cum s-a mentionat. particularizat pentru apelarea subrutinelor (CALL). eventual. Din cauza structurii explicite a instructiunilor.BAZELE MICROPROCESOARELOR Adrese 10A0 10A1 10A2 10A3 Memorie date Memorie program LDA : 00111010 :3A Ad1 : 10001011 :8B Ad2: 00101111 :2F Date: 11000010 : C2 8B2F Magistrala de Registru de adrese Magistrala date interna Date : 11000010 : C2 1 2 ceas 3 > PC 10 A3 C2 UAL RT RI Registru de instructiuni unitate de comanda Registru Registru temp. T3. Astfel.68 . de aceea. nu exista posibilitatea.47. ori de cate ori executia programului se transfera dintr-un punct (unde este memorat secvential). va fi utilizat pentru a explica elementele esentiale legate de operarea cu stiva. in alta zona a memoriei. In mod implicit. Deoarece o subrutina poate fi apelata din puncte diferite ale programului. stiva este organizata pe sistemul FIFO.

3.. sau continutul unora dintre registrele microprocesorului) transmise prin stiva.CONCEPTE GENERALE stiva: salvarea in stiva (push). Figura 3. . 3 .. . instr. sau returnate programului apelant. Salvarea continutului registrelor si a adreselor de revenire in stiva Programatorul trebuie sa tina seama de urmatoarele elemente relativ la utilizarea stivei: . iar cel de-al doilea.. subrutinei. si refacerea din stiva (pop). . Primul implica transferarea unei date in varful stivei. PUSH AX PUSH BX PUSH CX CALL SUB1 PC1 urmat.stiva reprezinta o zona de memorie. .48..48 prezinta acest mecanism de utilizare a stivei in cele doua scopuri. va trebui extras de acolo la un moment dat in cursul executiei programului.69 . cat si argumente (valori.. operand in modul LIFO.MICROPROCESOARE . extragerea unei date din varful stivei. instr. Data respectiva poate reprezenta in sens general atat o adresa. CALL SUB2 PC2 urmat. . necesara la revenirea dintr-o subrutina. cresterea continutului stivei RETURN RETURN adresa adresa subrutina 1 SUB1 subrutina 2 SUB2 PC2 PC1 CX BX AX adresa de inceput a stivei Fig.. program principal adresa .orice cuvant de date salvat in stiva.o consecinta a modului LIFO de lucru cu stiva este ca informatia poate fi refacuta din stiva in ordine inversata fata de cea de la salvarea in stiva...

de revenire din subrutina (RETURN).salvarea registrului indicator de program (PC). se actualizeaza SP. ce vor fi descrise in continuare. si doar apoi se reface continutul PC. in esenta). Se pot evidentia trei metode de baza in transmiterea parametrilor intre subrutine. Aceste operatii se efectueaza utilizand cele doua operatii complementare.cresterea stivei este corelata cu scaderea continutului registrului indicator de stiva. Aceste locatii de memorie pot contine atat date cat si adrese ale unor date (variabile). Subrutinele si stiva Exista trei operatii esentiale. respectiv. .BAZELE MICROPROCESOARELOR . este posibila chiar apelarea unei subrutine de catre ea insasi (apel recursiv). inlantuit. si continuarea executiei din punctul respectiv. Stiva creste catre baza (valorile mici) ale memoriei sistemului. Trebuie remarcat ca la orice operatie de salvare in stiva. apelata de prima. Principala limitare a acestei metode (simpla. este blocarea unor locatii de memorie care vor fi utilizate doar pentru apelarea rutinei respective. continutul registrului indicator de stiva SP este actualizat automat (decrementat). astfel. de exemplu in cazul unui alt apel.executarea subrutinei apelate. SP are valoarea initiala (maxima). permitand o eventuala salvare ulterioara. este posibila in principiu fara alte restrictii decat memoria aflata la dispozitie. reprezentand adresa instructiunii imediat urmatoare celei de apelare a subrutinei (prima instructiune de dupa cea de CALL). Mai mult. inlantuit. dupa salvarea valorii respective (PC la apelarea unei subrutine). asociate executiei corecte a unei subrutine: . Transmiterea parametrilor La apelarea sau revenirea dintr-o subrutina. SP are o valoare minima. executia programului se reia de la aceasta instructiune. de apelare a subrutinei (CALL) si. . unde programatorul memoreaza date necesar a f prelucrate de o alta i subrutina. 3 . sau variabile). este necesara comunicarea de date intre subrutine. La orice operatie de revenire din subrutina.70 . Prima si cea mai simpla metoda de transmitere a parametrilor este de a asocia fiecarei subrutine un set de locatii de memorie. utilizata uzual corelat cu testarea unui indicator care asigura iesirea din bucla recursiva. cu valoarea care se citeste din stiva. reprezentand chiar valoarea salvata la apelarea subrutinei. Acest proces de comunicare intre subrutine este cunoscut sub numele de transmitere a parametrilor (argumente. (prin incrementare). in afara de salvarea adresei de revenire. Apelarea succesiva a unei subrutine din alta subrutina. cand stiva este plina. dupa executia subrutinei.revenirea la adresa memorata la aplelare. al unei alte subrutine. cand stiva este goala. alocata stivei.

pe parcursul executiei programului. programul este complet alterat. daca programul ajunge cu executia . respectiv POP.5 Limbajul de asamblare Limbajul de asamblare utilizeaza. dupa cum s-a mentionat. sunt: necesitatea de a salva continutul registrelor. o mare atentie din partea programatorului. stiva se modifica in mod dinamic. O masura necesara este de a implementa o stiva cat mai mare cu putinta.instructiunilor unui anumit tip de microprocesor. se fac refaceri din stiva. tot uzual. a registrelor procesorului.CONCEPTE GENERALE A doua metoda de transmitere a parametrilor se bazeaza pe utilizarea registrelor de uz general.daca exista codul respectiv in setul de instructiuni .in zona respectiva. complet imprevizibile (de exemplu. conducand la suprapunerea acesteia peste zona de date sau de cod de program. limitarea introdusa de numarul relativ redus al registrelor de uz general. ce pot astfel fi utilizate in cursul executiei subrutinei. Inainte de a apela o subrutina. Evident. la microprocesorul 8086). Programului si variabilelor programului li se aloca. locatiile inferioare ale memoriei de date. Faptul 3 . se poate manifesta similar si in cazul unor defecte ale hardware-ului . citindu-se aceste valori. mnemonici reprezentand prescurtari (abrevieri) ale denumirilor . ca simptome.MICROPROCESOARE . majoritatea microprocesoarelor au in setul de instructiuni operatii de transfer in/din stiva a continutului registrelor de uz general (PUSH. Problemele asociate cu aceasta metoda (deasemenea simpla). deci la start.71 . si examinarea continutului memoriei program. pentru a nu afecta procesul de revenire din subrutina (regasirea continutului PC salvat la apelarea rutinei. Uzual. (posibila in principiu. si se bazeaza pe utilizarea stivei pentru memorarea temporara a datelor ce trebuiesc transferate subrutinei. efectele pot fi catastrofale pentru executia programului. Argumentele ce trebuiesc transmise subrutinei pot fi astfel salvate in stiva. 3. dupa cum s-a mai mentionat. incarcarea stivei se face de la adrese mari spre cele mici. Registrul indicator de stiva trebuie initializat la lansarea programului. A treia metoda de comunicatie este o forma speciala a celei anterioare. dupa cum s-a mai precizat. care permit salvarea/refacerea explicita in/din stiva. acesta va fi alterat.semnificatiilor . Daca se ajunge la o asemenea situatie. se decodifica si. la executia instructiunilor respective. pentru reutilizarea continutului lor dupa revenirea din subrutina. la intrarea in subrutina. Se poate ajunge la executarea "pas cu pas" a programului. de exemplu). ca un cod de program. utilizate la apelarea rutinei.5. Principala problema in timpul utilizarii stivei este legata de cresterea acesteia la dimensiuni prea mari. Pe cand aceste locatii sunt atribuite si fixate pe tot parcursul rularii programului (deci ocupa permanent o zona din memorie). cu adresa de inceput a stivei. apoi se face apelul subrutinei. avand o rezerva cat mai mare de memorie. continutul registrului SP are o valoare uzual reprezentand limita superioara a memoriei de date. deoarece evolutia stivei poate scapa de sub estimarea programatorului). Operatii de acest gen necesita. se incarca aceste registre cu argumentele ce trebuiesc transferate subrutinei. deoarece este foarte greu de detectat cauza unui asemenea "defect" de program (care.contorul de program . in functie de "codul" pe care il reprezinta . prin inscrierea de date in stiva. in momentul revenirii la programul apelant).se " executa". daca stiva patrunde in zona de cod de program. In acest scop. Problema este dificil de depanat. se citeste data salvata in stiva.memorii defecte.

Cateva reguli de baza la scrierea programelor in limbaj de asamblare sunt urmatoarele: . mai ales din punctul de vedere al vitezei de executie. necesitand o maxima eficientizare. si corespunzator. cat si cele alocate pentru stiva. Uzual. .programatorul raspunde de completa gestionare a tuturor resurselor sistemului. programatorul care scrie programe in limbaj de asamblare trebuie sa stapaneasca foarte bine atat elementele legate de hardware-ul cat si de software-ul microprocesorului respectiv. depanarea si modificarea acestor programe este mult mai dificila. face dificila scrierea si testarea acestuia (prin defalcarea operatiilor sistemului in operatii elementare. Pe de alta parte insa. se scriu in limbaj de asamblare.72 .in program trebuiesc specificate adresele pentru fiecare variabila. la implementarea aplicatiilor industriale. eficiente. etc. trebuie definite explicit si respectate pe tot parcursul implementarii programului. o programare in limbaj de nivel scazut. adresarea interfetelor de intrare/iesire trebuie facuta corect. Principalul dezavantaj al utilizarii limbajului de asamblare este ca scrierea. care contine parti ce se pot executa cu prioritati mai scazute. Astfel. la ora actuala. deoarece doar prin utilizarea programarii in limbaj de asamblare se poate avea un control absolut al procesorului. dupa cum deasemenea s-a precizat. 3 . coreland pentru fiecare port in parte semnificatia cuvintelor de date. nu neaparat in timp real. utilizarea limbajului de asamblare se face concomitent cu utilizarea unui limbaj de nivel inalt. poate conduce la blocarea sau functionarea defectuoasa a sistemului. apare facilitatea de utilizare. locatie de memorie sau port accesate la un moment dat. modalitati de interfatare si moduri de adresare distincte).BAZELE MICROPROCESOARELOR ca se asociaza fiecarei instructiuni a microprocesorului cate o mnemonica. Aceasta se datoreaza faptului ca fiecare microprocesor are structura sa specifica (arhitectura. Astfel. ceea ce poate conduce la optimizarea la maxim a programului. Restul programului. Pentru programul (partea de program) scris in limbaj de asamblare. memorie.). si cere o foarte buna cunoastere a microprocesorului si intelegere a functionarii sale. O selectie gresita (adresare incorecta. Pe de alta parte. Se poate astfel optimiza la miximum ca raport performanta/cost de producere. O experienta bogata in acest sens este necesara pentru a implementa programe bune. procesul de implementare a aplicatiei respective. in momentul in care il stapaneste. seturile de instructiuni ale diferitelor tipuri de microprocesoare difera intre ele. partile critice ale programului (de obicei cele asociate operatiilor de timp real ale sistemului). sau a unei celule de memorie sau port inexistent). instructiune cu instructiune. zonele de memorie ocupate de catre program. sau utilizarea incorecta a semnificatiei datelor. poate fi implementat prin utilizarea unor limbaje de nivel inalt. Similar. cele alocate variabilelor. cu actiunile efectuate la adresarea acestora. faptul ca este necesara implementarea elementara a programului. programatorul ce utilizeaza limbajul de asamblare are la indemana un instrument de lucru foarte puternic. implementate cu cate o instructiune de program). face ca programarea in limbaj de asamblare sa reprezinte. gestionare a tuturor resurselor procesorului (registre.

hexazecimale. care poate proveni din defecte pe partea hardware. pentru obtinerea si implementarea formei finale a programului. etc. continand programul in limbaj de asamblare. care faciliteaza scrierea programelor. sau din combinatii ale celor doua componente. subrutinelor. programul asamblor verifica corectitudinea sintactica a programului scris in limbaj de asamblare. in cod obiect.trebuiesc anticipate si evitate (prin modul de realizare a programului. apoi se trece la implementarea unor programe complexe. etc. uzual. dupa cum s-a mentionat.). . si memorarea acestora. Totodata. ceea ce va implica necesitatea unor conversii de la/la nivelul utilizator (valori zecimale. si executia acestuia. utilizarea etichetelor formale (in locul utilizarii adreselor efective ale variabilelor.MICROPROCESOARE . care poate prelua programul sursa. trebuie asigurata salvarea datelor (continutul registrelor de uz general. asambloarele au o seama de facilitati suplimentare: comenzi. la nivelul masina (binar). hard-discului. a celulelor de memorie cu utilizare multipla). Programul asamblor poate fi rezident in memoria PROM a sistemului microprocesor. sau din partea software. verifica corectitudinea adresarilor variabilelor din memorie. Elaborarea unui program in limbaj de asamblare nu este suficienta. conversii automate din diverse baze de numarare in binar. Pentru scrierea programelor sursa. prin programe simple se testeaza integritatea si completa functionare a hardware-ului. sau prin implementarea de teste corespunzatoare) situatiile de aparitie a operatiilor cu rezultate imposibile (depasiri . ceea ce necesita tehnici speciale. in etapa finala a elaborarii unui program. si o experienta bogata in testarea sistemului. si examinarii registrelor. in diferitele parti ale programului care utilizeaza aceleasi resurse ale sistemului.manipularea datelor la nivel intern se va face in cod binar. . Astfel.programatorul trebuie sa asigure gestiunea valorilor (date).depanarea programelor se va face mai dificil. si mai ales in cazul necesitatii generarii programului executabil in forma sa finala.73 . in memoria sistemului.overflow sau underflow). posibilitatea definirii macroinstructiunilor ce permit simplificarea scrierii programului. Este necesar sa se dispuna de programul numit asamblor. numite editoare de text. este dificila localizarea defectului. uzual utilizand metode speciale (de genul executiei pas cu pas a programului. din mai multe parti de program. continutului memoriei. caractere). si poate genera codul obiect corespunzator fiecarei instructiuni. etc. (scrise eventual in 3 . Scrise intr-o forma simbolica. unicitatea lor. utilizarea de denumiri simbolice pentru variabilele programului.CONCEPTE GENERALE . intr-o zona a memoriei sistemului sau. In fine. necesare la executia programului. . . etc. directive.). pe un suport de memorie externa de tipul discului flexibil. scris in limbaj de asamblare (mnemonici). elaborate separat. sau poate fi incarcat in memorie si apoi executat. se utilizeaza deasemenea alte programe speciale. etc. care permit scrierea efectiva a acestor programe. la sistemele mai evoluate.in cazul unei functionari defectuoase a sistemului.

BAZELE MICROPROCESOARELOR limbaje diferite. Un program bine elaborat se va ghida dupa un algoritm. programele pot fi memorate definitiv in memorii de tip PROM. este deosebit de util un program de depanare (debug). care realizeaza legarea acestor componente ale programului. pentru a determina. si implementate pe sistemele ce se vor utiliza in aplicatia finala. algoritmul implica cel putin indicatii asupra actiunilor de urmat. implementa si testa o aplicatie pe un sistem microprocesor. se elaboreaza expresiile matematice ce se vor utiliza.3.5. care prevede si indica ce trebuie sa faca programul.6 Metodologia elaborarii programelor Pasul important ce poate fi facut odata cu stapanirea setului de instructiuni al microprocesorului este elaborarea de programe. (5) elaborarea documentatiei aferente programului. care eventual sunt dotate cu resurse mai reduse (mai putina memorie. modificate. in oricare dintre situatiile posibile ce apar in cursul rezolvarii problemei propuse. Deabia dupa testarea completa. desemnand diversele actiuni posibile --.vezi fig. reiese clar necesitatea utilizarii unei anumite strategii in elaborarea programelor pentru sistemele microprocesor. va trebui sa treaca prin urmatoarele faze: (1) analiza. implementarea aplicatiilor dorite pe sistemul microprocesor. Toate aceste programe necesare pentru a dezvolta. pentru o problema data. in general. etc. programele se incarca in memoria RAM a sistemului. De aceea. denumit sistem de dezvoltare. nici o eroare neputand fi acceptata. prin lansarea lor in executie. In etapa implementarii si testarii unui program. 3. etc. Linker-ul va face totodata alocarea efectiva a adreselor si resurselor sistemului. Din cele prezentate. Strans legata de faza de analiza este faza de organizare. periferice. Astfel.). Programatorul trebuie sa elaboreze un program corect din toate punctele de vedere. numit linker (link = legatura). Algoritmul generat anterior este organizat in operatiile necesare pentru rezolvarea problemei. Este etapa in care se elaboreaza asa numitele scheme logice (diagrame ale algoritmului. utilizand niste simboluri standard. strategia elaborarii unui program de la punerea problemei. intr-un numar finit de pasi. si compilate deasemenea individual. 3 . pana la utilizarea lui. (4) testare. (3) codificare. fiecare prin executia programului asamblor sau a compilatorului corespunzator). In faza de analiza se contureaza cu claritate cerintele programului. si pot fi cu usurinta testate.49). in etapa de creare a unei aplicatii. (Ca un exemplu clasic. utilizatorul sa aiba la dispozitie un microcalculator de putere relativ ridicata.74 . prezent deasemenea la unele sisteme microprocesor. etapele necesare pentru prepararea unei retete reprezinta un algoritm). (2) organizare. generand valorile corecte ale acestora in codul obiect final ce se va implementa si executa. Pe aceste sisteme. va fi executat un alt program specific. vor necesita ca.

MICROPROCESOARE - CONCEPTE GENERALE

De modul de elaborare optima a algoritmului si a schemei logice, ca organizare si eliminare a portiunilor redundante, depinde obtinerea unui program cat mai eficient (rapid si ocupand memorie cat mai mica). Nu este absolut necesara, pana in acest punct, cunoasterea setului de instructiuni. Totusi, pentru o utilizare cat mai eficace a posibilitatilor microprocesorului, cunoasterea elementelor de hardware si software specifice acestuia este de dorit. Faza de codificare, care urmeaza, reprezinta momentul trecerii la elaborarea codului programului. Aici se utilizeaza setul de instructiuni. Pe baza lui, se scriu instructiunile ce vor genera actiuni ale microprocesorului, corespunzatoare algoritmului si schemei logice elaborate.
Operatie intrare calcule operatii

conector

Operatie iesire

Decizie

Start sau Stop

Fig.3.49. Simboluri tipice utilizate la alcatuirea schemelor logice

Dupa codificare, programul este mai intai testat prin comparare cu schema logica, verificand corectitudinea fiecarei instructiuni. Apoi, programul este introdus in memoria microcalculatorului (in cod masina), trecandu-se la executia lui. Este etapa in care se localizeaza si lamuresc diversele erori ce au putut aparea la una dintre fazele trecute. Totodata trebuie remarcat faptul ca, adesea, aceste erori vor implica revenirea si modificarea unor parti din algoritm si/sau schema logica, si/sau codul elaborat. Programul va trebui executat de mai multe ori, pana la obtinerea variantei corecte si definitive. In acest ultim punct, un pas deosebit de important este reprezentat de faza de documentare. Toate informatiile referitoare la etapele anterioare, de la punerea problemei, elaborarea algoritmului si a schemei logice (eventual diversele versiuni succesive, indicand evolutia programului), codul programului (cu comentarii suficiente pentru a se corela cu schema logica), eventuale esantioane de date de intrare/iesire, daca este cazul, trebuie sistematizate si incluse in documentatia aferenta programului respectiv. Sensurile majore ale acestei faze sunt reprezentate atat de necesitatea de a putea rememora cu usurinta elaborarea programului (o succesiune de instructiuni necomentate devine, dupa cateva zile de la scriere, foarte greu de analizat, chiar de catre cel care a elaborat-o), cat si de posibilitatea utilizarii ulterioare a experientei castigate la scrierea programului respectiv, pentru eventuale modificari ale acestuia, sau la elaborarea unor programe noi.
3 - 75

BAZELE MICROPROCESOARELOR

Concluzionand , programarea microprocesoarelor reprezinta o problema serioasa, necesitand o buna pregatire si experienta, castigate prin scrierea de programe cu grad de dificultate crescut, corelata cu posibilitatea testarii acestora pe viu (pe un sistem microprocesor), ajutand la identificarea si eliminarea erorilor inerente ce apar. Ea se bazeaza pe cunoasterea, cel putin pana la un anumit nivel de profunzime, a arhitecturii de baza a sistemului, a setului de instructiuni al microprocesorului, a posibilitatilor si a metodelor de interfatare cu echipamente de intrare/iesire, cat si pe aplicarea unei anumite metodologii de programare. Aceste aspecte vor fi reluate in capitolele urmatoare, insotite de exemple corespunzatoare.

3.6 ELEMENTE DE INTRARE/IESIRE ALE SISTEMELOR MICROPROCESOR Sistemul microprocesor trebuie sa interactioneze cu lumea inconjuratoare. Este necesara atat primirea de informatii, din afara acestuia, cat si, pe baza calculelor efectuate, furnizarea de informatii, comenzi etc., spre exterior. Desi unitatea centrala (CPU) poate efectua multiple operatii interne, este necesara comunicatia acesteia cu exteriorul, fara de care functionalitatea sistemului ar fi practic inexistenta. Deoarece singura cale de comunicatie dintre procesor si exterior este reprezentata de magistrala de date a sistemului, (utilizand totodata magistralele de adrese si control), este necesar sa se utilizeze circuite speciale care sa converteasca informatiile diverse, de la o gama foarte larga de echipamente si componente de intrare si iesire, la semnale compatibile cu cele de pe magistralele sistemului microprocesor. Aceste circuite, care implementeaza o functie de compatibilizare, se numesc module de interfata (sau module de intrare-iesire). Astfel, comunicatia cu unitatea centrala reprezinta transferul datelor prin aceste interfete, realizata intr-un mod selectiv si controlat uzual (dar nu exclusiv - vezi tehnicile DMA), de catre microprocesor. Conventiile utilizate pentru a implementa aceasta comunicatie, incluzand temporizarile semnalelor, controlul procesului de transfer de date, modul de reprezentare (codificare) a datelor, alcatuiesc asa-numitul protocol al comunicatiei. Functia de baza a modulelor de interfata va fi aceea de a converti semnalele de pe magistralele CPU pentru seturile de porturi de intrare sau iesire. Un port reprezinta astfel o colectie de componente ale sistemului la care se pot conecta echipamente externe (periferice). Dupa cum s-a precizat si in paragrafele precedente, gama arhitecturilor si a implementarilor diverselor sisteme microprocesor este extrem de larga, fara o standardizare a functiilor si/sau semnalelor magistralelor acestora. Pe de alta parte, aceste sisteme diverse vor trebui sa interactioneze cu gama, deasemenea larga si nu neaparat unitara, a echipamentelor periferice, utilizand o paleta importanta de semnale, viteze de lucru si protocoale de comunicatie. Compatibilitatea intre operatiile interne ale procesorului si aceste semnale externe se va asigura de catre o mare varietate de tipuri de interfete. Uzual, firmele producatoare de microprocesoare vor asigura si circuitele specializate, compatibile cu tipurile de microprocesoare produse de catre acestia, pentru a se implementa diversele interfete specializate.

3 - 76

MICROPROCESOARE - CONCEPTE GENERALE

Astfel, comunicatia intre microprocesor si echipamentele externe are loc in doua etape succesive: prima, in care transferul are loc intre CPU si interfata, si a doua , in care comunicatia are loc intre interfata si periferic. Uzual, primul stadiu se denumeste operatie de intrare-iesire, iar al doilea, operatie de transmisie a informatiilor (v.fig.3.50). In consecinta, interfetele de intrare/iesire reprezinta calea de legatura ce asigura transferul de date intre microprocesor si exteriorul lui. Exista numeroase posibilitati pentru realizarea acestor legaturi. In functie de configuratia sistemului si de cerintele aplicatiei, se pot utiliza structuri mai simple sau deosebit de complexe.

Microprocesor Memorie a Microprocesor Memorie b

Interfata I/E

Periferic

Interfata DMA

Periferic

Fig.3.50. Moduri de interfatare: (a) sub controlul microprocesorului; (b) prin acces direct la memorie

Tinand seama ca elementele de intrare asigura preluarea informatiei dintr-o forma accesibila omului (reprezentari --- caractere, litere, cifre, pana la imagini tv.), sau de la elemente diverse ale instalatiilor industriale (semnalizari, traductoare etc.), respectiv cele de iesire furnizeaza informatii utilizabile de catre operatorul uman (mesaje tiparite, semnalizari audio-vizuale, sinteza de voce), cat si pentru comanda, actionarea elementelor echipamentelor industriale, se poate aprecia gama deosebit de larga de tipuri si configuratii in care se vor prezenta atat interfetele de intrare/iesire, cat si perifericele sistemelor microprocesor. Semnale exterioare de o mare varietate a formelor de prezentare (analogice, numerice, de alta natura decat electrice), trebuie convertite la formele de informatie, limitate, acceptate de catre microprocesor. Conversii similare trebuie efectuate la iesirea spre exteriorul sistemului microprocesor. Trebuie adaptate deasemenea vitezele de lucru diferite ale perifericelor, respectiv ale microprocesorului. Uzual, acesta lucreaza mult mai rapid, putand efectua numeroase operatii, in timp ce, de exemplu, se preia un caracter de la o consola (prin apasarea unei clape a acesteia) si se pregateste intr-o forma adecvata citirii de catre microprocesor. De asemenea, exista si echipamente foarte rapide (discuri magnetice, de exemplu), care pot furniza/prelua informatii catre/de la memoria
3 - 77

BAZELE MICROPROCESOARELOR

sistemului, cu viteze mai mari decat cele ce pot fi obtinute daca transferul se efectueaza de catre microprocesor (sub comanda acestuia). In aceste cazuri, se utilizeaza asa-numitele tehnici de transfer al informatiei prin acces direct la memorie (DMA 1 ), pentru care accesul intre interfata si memoria sistemului se face sub controlul unui circuit specializat, fara controlul programului microprocesorului. Se vor adopta solutii hardware-software care sa asigure o performanta optima a sistemului. In functie de cerintele acestuia, de numarul de elemente pe care le supervizeaza microprocesorul, se vor adopta diverse tehnici de lucru. Exista trei moduri principale de lucru cu elementele de intrare/iesire, permitand controlul si sincronizarea transferului de date: (a) Operatii de intrare/iesire efectuate sub controlul programului; (b) Operatii de intrare/iesire prin intreruperi; (c) Operatii de intrare/iesire prin acces direct la memorie. Tipul de operatie I/E utilizata intr-o aplicatie va depinde de rata de transmitere a datelor, de intarzierea maxima cu care microprocesorul poate prelua/transmite datele din momentul disponibilitatii echipamentului care le vehiculeaza, de posibilitatea executarii, intercalat cu operatiile I/E, a altor operatii ale unitatii centrale. Din punctul de vedere al programarii microprocesorului pentru operatii de I/E, acestea se pot efectua fie prin executarea de instructiuni specifice de I/E, fie prin instructiuni proprii operarii cu elemente de memorie (v.par.urmator). In orice caz, pentru diferentierea intre diversele echipamente ale sistemului, acestea sunt selectate in mod unic, conform informatiei de pe magistralele de adrese si de control, in mod asemanator selectiei celulelor de memorie. Porturile sistemului vor prelua sau transmite informatia sub forma de cuvinte de date, de lungime specifica procesorului (8, 16 biti). Accesul la magistrala de date va fi facut tot prin circuite tampon. Astfel, tehnicile generale de adresare si selectie de cip ale porturilor vor fi similare celor de la memorii, cu unele particularitati specifice, care vor fi mentionate in paragrafele urmatoare. Ca o mentiune speciala, trebuie remarcat ca, spre deosebire de memorii, unde la o adresa se va gasi o singura celula de memorie, aceeasi si pentru operatiile de scriere si pentru cele de citire, la operatiile cu porturi, este permis, si se si intalnesc situatii in care o aceeasi adresa este utilizata pentru doua interfete diferite, una de intrare, si alta de iesire. Aceasta deoarece pot exista porturi doar de intrare, si altele doar de iesire, deci cu flux unic al datelor, doar de la sau doar spre microprocesor. In continuare se vor analiza cele trei tipuri de baza de organizare a transferurilor de date in operatiile de I/E ale microprocesorului.

3.6.1 Operatii I/E efectuate sub controlul programului
1 DMA: Direct Memory Access --- acces direct la memorie.

3 - 78

MICROPROCESOARE - CONCEPTE GENERALE

Una dintre cele mai accesibile si utilizate metode de efectuare a operatiilor de I/E este sub controlul nemijlocit al programului microprocesor. Astfel, prin instructiuni specifice, care determina selectia porturilor de I/E ale sistemului, microprocesorul efectueaza operatii de transfer de date intre aceste interfete si CPU. Exista doua tipuri de baza (din punctul de vedere al semnificatiei), pentru informatia transmisa intre microprocesor si portul de intrare/iesire, si anume cuvintele de control si cuvintele de date (vezi fig. 3.51). cuvinte de date date de intrare Echipament < intrare / iesire < date de iesire cuvinte de control cuvinte de comanda cuvinte de stare > Microprocesor

>

Fig.3.51. Fluxul de informatie intre microprocesor si o interfata de I/E

Cuvintele de control sunt utilizate pentru sincronizarea operatiilor portului si ale microprocesorului, si setarea/testarea unor parametri, operatii necesare in vederea transmiterii cuvintelor de date. Folosite in operatii de scriere spre port, cuvintele de control sunt denumite cuvinte de comanda a portului si permit, prin afectarea pentru fiecare bit al cuvantului, a unei semnificatii unice, programarea portului (pentru porturile care pot fi programate). Astfel se pot initia unele operatii sau seta unii parametri (oprirea unui motor, modificarea ratei de transmisie a unor date, stergerea unui indicator de eroare etc.). Citirea cuvintelor de control, denumite in acest caz cuvinte de stare, permite, prin testarea prin program a bitilor cuvantului citit de la port, analizarea starii acestuia (daca are sau nu informatie disponibila, daca poate prelua alt cuvant de date, daca transferul s-a efectuat corect etc., in functie de posibilitatile si functiile portului) si luarea de decizii adecvate de catre microprocesor (in speta, se vor executa in mod corespunzator acele sectiuni din programul sistemului care trateaza situatia existenta). La efectuarea operatiilor de intrare/iesire sub controlul programului, se pot utiliza: (a) instructiuni specifice de I/E. In acest caz, microprocesorul este prevazut cu semnale pe magistrala de control, diferite pentru operatiile cu memoria, respectiv cu porturile. Se conecteaza atat memoria cat si porturile la magistralele de adrese si de date ale sistemului, dar se utilizeaza semnale de control distincte pentru cele doua categorii de componente ale sistemului. Figura 3.52 prezinta
3 - 79

Acest tip de operatie cu porturile ar necesita un numar de minimum 2 semnale de control. sensul si tipul instructiunii executate la un moment dat. Periferic Mag. distincte de cele cu memoria Exista doua moduri principiale de implementare a acestui tip de operatii I/E: (a1) cate o instructiune unica pentru fiecare operatie de I/E mentionata. se genereaza la executia acestor instructiuni semnalele de control asociate. utilizand minimum o singura adresa pentru un port. date operatie cu porturi operatie cu memoria Micro- selectie memorie Memorie Interfata I/E selectie port Fig. (4) citire stare (citire cuvant de stare).BAZELE MICROPROCESOARELOR modul de structurare a sistemului in acest caz. adrese Decodificare procesor Decodificare Mag.53 prezinta structura sistemului in acest caz. Figura 3. (2) scriere de date (scriere cuvant de date). 3 . Utilizand instructiunile specifice de I/E. selectand porturile de I/E si efectuand transferul dorit al informatiilor. Metoda nu este utilizata in mod tipic. pentru a diferentia. 3.52. prin program. (3) transmitere comanda (scriere cuvant de comanda).80 . Utilizarea operatiilor specifice de I/E. la o operatie cu acelasi port. in sistemele microprocesor uzuale. exista patru instructiuni tipice: (1) citire de date (citire cuvant de date). In acest caz. control Mag.

Se vor utiliza in acest caz minimum doua adrese pentru un port. date Fig.54. alta pentru iesire. Pentru acest tip de operatie de I/E. pentru a diferentia operatia ce se efectueaza. date citire date port scriere comanda port citire stare port Fig. una pentru intrare. Periferic Mag. Figura 3.54 prezinta structura de principiu a sistemului in acest caz. (2) scriere informatie (cuvant de data sau de comanda). Metoda este una dintre cele mai intalnite tehnici de utilizare a porturilor de I/E. Utilizarea a doua adrese I/E si a doua semnale de control 3 . vor fi: (1) citire informatie (cuvant de data sau de stare). ce se definesc in acest caz. si a patru semnale de control I/E (a2) doua instructiuni I/E. 3. control Microprocesor Mag. adrese Decodificare selectie port Mag. este necesar minimum un semnal de control care sa diferentieze sensul transferului datelor (citire sau scriere). atat pentru cuvintele de date.CONCEPTE GENERALE Periferic scriere date port Mag.53. sa poata defini in mod unic operatia ce se executa. referitor la date sau control. 3. adrese Decodificare selectie port control selectie port date citire port scriere port Mag. Cele doua instructiuni tipice.MICROPROCESOARE . Utilizarea unei singure adrese de port.81 . cat si pentru cele de control. care corelat cu adresa de la / la care se face transferul. control Microprocesor Mag.

metoda implica complicatii in ceea ce priveste schemele de adresare si selectie a memoriei si interfetelor sistemului. utilizarea instructiunilor si a semnalelor specifice de I/E. 1 Metoda este desemnata cu termenul de "memory-mapped I/O" --. Se va adresa portul ca o celula de memorie. cu avantajele aferente (mult mai multe instructiuni aferente. Utilizarea operatiilor de I/E. Pe de alta parte. adrese Decodificare selectie Memorie memorie selectie port Interfata I/E Mag. pe de alta parte insa. are avantajul unei mai bune organizari si clarificari a programului. microprocesorul va efectua operatii cu o celula de memorie. de tipul "memory mapped I/O" O comparatie succinta a celor doua metode prezentate anterior poate evidentia elementele esentiale ale acestora. Operatiile tipice pentru a efectua transferul datelor vor fi in acest caz: (1) incarcare data (citire cuvant de data sau stare). Periferic Mag. de vreme ce instructiunile utilizate la aceste operatii coincid (doar adresele diferentiind cele doua tipuri de componente). Desi memoria sistemului devine astfel mai mica.BAZELE MICROPROCESOARELOR (b) nu se folosesc instructiuni separate de I/E. Se configureaza memorie in sistem. Figura 3.).intrare/iesire mapata in memorie 3 . control citire/scriere Microprocesor Mag. La adresele ramase libere se va asigura selectia portului respectiv. Astfel. cat si a configurarii schemei de selectie a memoriei si porturilor sistemului. o problema suplimentara in acest caz o reprezinta modul si metodologia necesar a fi utilizata la depanarea programului. date Fig. moduri de adresare complexe. se va selecta de fapt si se va vehicula informatie cu portul dorit)1 .55 prezinta structura de principiu a sistemului in acest caz. fiind mai dificila diferentierea operatiilor cu memoria de cele cu porturi. In plus.82 .55. nu cu un port). etc. mai putina decat capacitatea maxima a acestuia. proprii lucrului cu celula de memorie respectiva. (2) memorare data (scriere cuvant de data sau comanda). metoda " memory mapped I/O" permite utilizarea instructiunilor uzuale de lucru cu memoria. 3. la aparitia semnalelor de adresa corespunzatoare si a celor de control. de care se tine seama la configurarea structurii sistemului microprocesor. (Din punctul lui de vedere. compensat in primul rand de faptul ca paleta de posibilitati oferita de instructiunile de tip lucru cu memoria este mult mai larga. acesta este un impediment minor. (Deci.

56. lansate de la periferice. apelata in cursul programului principal. Cu aceasta mentiune. variaza de la 256 de porturi I/O (uzual la microprocesoarele de 8 biti). pana la 64k porturi de I/O sau mai mult. Totodata. se implementeaza solutii de genul celor din figura 3. in figura 3.a prezinta implementarea secventei de executare a operatiilor de I/E in cadrul programului principal. (e) se citeste (scrie) cuvantul de date. Problema este si mai delicata in cazul mai multor porturi. pana ce portul este gata de transfer. in principal.83 .b se prezinta implementarea acestei secvente sub forma unei subrutine. O astfel de secventa poate aparea pe parcursul programului principal al microprocesorului. Uzual. evitand testarea separata a acestora.2 Operatii de intrare/iesire efectuate prin intreruperi Operarea prin intreruperi este bazata pe utilizarea unor semnale de control specifice. aceste subrutine. 3 . Utilizarea a cate unei astfel de subrutine pentru testarea starii nu este avantajoasa. pentru a cere transferul de cuvant de date. Microprocesorul poate testa rapid starea mai multor porturi. catre microprocesor. pentru tipurile uzuale de microprocesoare.56. (d) se reiau pasii b-c.56. este oferita de catre efectuarea operatiilor I/E prin intreruperi. in punctele in care se doreste transferul de informatie de la/la portul respectiv. (c) se verifica bitii de stare ce indica posibilitatea transferarii datelor. Modalitatile de utilizare in program a cuvantului de control sunt. care permite implementarea unor programe mai clar si corect elaborate. si deci doar cand este disponibil (neavand alte sarcini mai importante). 3. (b) se citeste cuvantul de stare de la port.).CONCEPTE GENERALE Capacitatea de adresare a porturilor. Totusi. de genul: (a) se scrie cuvantul de comanda la port. utila in realizarea programelor simple. Se evita astfel pierderea din timpul de lucru al procesorului. absolut necesar).MICROPROCESOARE . posibilitatea acceptarii de