Sunteți pe pagina 1din 17

SISTEME CU MICROPROCESOARE

1 . Introducere
Aparatele i sistemele controlate cu microprocesor au aprut i s-au perfecionat odat cu apariia pe pia a miroproesoarelor (1970 -1980) dup care (n special dup 1985) s-au rspndit foarte rapid, nlocuind aproape complet aparatele i sistemele de msur i control numerice clasice (cu logic cablat), att n tehnica de laborator ct i n instrumentaia industrial, mai ales n controlul automat.

Clasificarea sistemelor cu microprocessor


n funcie de complexitatea sistemului din care face parte vom avea: - aparate de msur cu microprocesor utilizate ca instrumente de laborator sau de teren; - sisteme de msur cu microprocesor folosite n complexe de msur i control n industrie.

1.1 Avantajele folosirii microprocesoarelor n sistemele de msur i control


Includerea unui microprocesor ntr-un sistem de msur i control d posibilitatea ca manevrele de operator s fie preluate (parial sau total) de ctre microprocesor i n plus s se obin cteva avantaje importante: 1. Preluarea comenzilor de operator cum ar fi reglaje de zero i de cap de scar, selectarea gamelor asigurnd un plus de precizie i siguran n exploatare. 2. Autocalibrarea i compensarea automat a influenei factorilor de clim. De asemenea se calculeaz abaterile i se corecteaz rezultatul final al msurrii. 3. mbuntirea preciziei prin eliminarea erorilor sistematice (prin autocalibrare, autocorecie). 4. Micorarea numrului de componente ale sistemului prin eliminarea componentelor destinate implementrii logicii cablate. 5. Creterea versatilitii aparatului prin obinerea unor posibiliti suplimentare de msur pe baza programelor interne. 6. Creterea vitezei de lucru prin automatizarea operaiilor de msurare. 7. Posibilitatea determinrii prin calcul a altor parametrii de semnal (valoare de vrf, valoare medie, valoare efectiv, calculul distorsiunilor, a spectrului de amplitudini, determinarea fazei, defazajului). 8. Posibilitatea autotestrii prin programe speciale executate de microprocesorul ncorporat, la comanda operatorului sau n cazul apariiei unei anomalii in funcionare. n acest caz se poate declana o procedur de testare i semnalizare a eventualelor defecte. Toate aceste avantaje arat clar c sistemele de msur i control moderne nu pot exista fr a fi controlate de ctre microprocesoare.

1.2 Microprocesoare : o privire general


n cele ce urmeaz ne vom referi la un microprocesor generic (presupus de 8 bii) i vom ncepe cu precizarea unor termeni i notaii utilizate n lucrrile din domeniul microprocesoarelor.

Definiii i terminologie
Sistemul de calcul este un echipament care transform datele de intare n rezultate de ieire pe baza unui algoritm materializat ntr-un program. Aceast definiie reprezint sensul clasic al noiunii de calculator . Sistemele inteligente sunt acele sisteme care pot prelucra informaii incomplete definite sau aproape complet definite. Astfel de sisteme sunt sistemele fuzzy sau reelele neuronale. 1

n cazul n care informaiile de prelucrat sunt complet definite atunci avem de-a face cu algoritmi secveniali. Acest tip de algoritmi a stat la baza construciei mainilor secveniale (Von Newman). Dac operaiile elementare independente se pot executa paralel (pe mai multe uniti de calcul), avem de-a face cu algoritmi paraleli. ncepnd cu anii 1970 au aprut tendine de automatizare a proceselor de producie bazate iniial pe automate numerice cablate (logic cablat) i apoi pe sisteme cu microprocesoare (logic programat). De dat recent sunt sistemele bazate pe arhitecturi paralele (sisteme multiprocesor , sisteme distribuite). Arhitectura mainii secveniale standard (Von Newman) este urmtoarea:

Unitate Central

Memorie

Subsistem de intrare/ieire

Om/proces Unitatea central (CPU-Central Processing Unit), transform datele n rezultate pe baza execuiei instruciunilor programului memorat. Memoria este mediul principal de stocare/regsire a datelor, rezultatelor i programelor. Subsistemul de intrare-ieire este destinat realizrii interfeei om-main sau proces-main. Partea fizic a unui sistem de calcul (componentele electronice) este relative simpl, poate fi produs n serie i este relativ ieftin. Termenul hardware se refer tocmai la aceast parte Ceea ce transform acest echipament ieftin ntr-o diversitate de instrumente, controlere industriale, calculatoare speciale sau de uz general, sunt programele (utilitare sau de aplicaii) i sistemele de programe (operare, exploatare), adic software care vor determina hardware-ul de uz general s execute ceea ce dorim. Un alt termen frecvent utilizat este firmware, care desemneaz programe speciale stocate n memorii nevolatile, al cror rol este de a asigura faciliti de configurare i testare a echipamentului, precum i minima sa funcionare. Exemplu biosul de la calculatoarele personale. Microprocesoarele actuale se produc ntr-o gam larg de variante, de la cele de uz general sau cele destinate aplicaiilor industriale, pn la procesoarele de semnal sau coprocesoarele cu funcii bine precizate. De asemenea, microprocesoarele pot fi: - microprocesoare monocip (unitatea central i circuitele de suport sunt dispuse n interiorul aceleiai capsule de circuit integrat). - microprocesoare multicip la care unitatea central i circuitele de suport, sunt realizate sub form de circuite integrate distincte. Microprocesoarele pentru aplicaii dedicate mai ales cele destinate mediului industrial sunt realizate monocip, oferind un plus de comoditate n proiectare i o fiabilitate sporit. De exemplu, 2

microprocesorul 80186, al firmei Intel, include aproximativ toate componentele sistemelor cu 8086, adic unitatea central, generatorul de tact, controlerul de magistral i cel de ntreruperi, controlerul DMA, contor/timer-ul, logica de decodificare, etc. Deseori microprocesoarele monocip includ att memorie de lucru, ct i interfee de intrare/ieire, adic structura minimal a unui microcalculator, motiv pentru care ele se mai numesc i microcalculatoare ntr-un singur cip (Single Component Microcomputer). Deoarece aceast categorie de microprocesoare sunt destinate mai ales aplicaiilor de control n mediul industrial, ele se ntlnesc i sub denumirea de microcontrolere. Microprocesoarele de uz general multicip au fost realizate i n variante monocip, purtnd numele de microprocesoare nglobate. De exemplu, familiile 80186 sau 80386EX sunt produse de Intel i n varianta monocip avnd avantajul utilizrii suportului de programe i exploatare dezvoltat pentru sistemele de calcul existente curent pe pia (de exemplu calculatoarele personale).

Elemente tehnologice
Microprocesoarele i circuitele de suport se pot produce n urmtoarele tehnologii: 1 . Tehnologia bipolar permite obinerea unor viteze de lucru mari, dar cu un consum ridicat i cu probleme de climatizare deosebite. 2 . Tehnologia MOS a evoluat mult, oferind condiii de obinere a unor performane de vitez deosebit, n condiiile unui consum redus i al unui grad de integrare foarte ridicat. Exist 3 familii MOS mai importante: PMOS se bazeaz pe realizarea tranzistoarelor MOS cu canal p, prin difuzia impuritilor de tip p (bor), ntr-un substrat de siliciu de tip n , pentru a forma drena i sursa. Se remarc prin densitate mare de integrare, ns microprocesorul este relativ lent. NMOS se bazeaz pe relizarea tranzistoarelor MOS cu canal n prin difuzia impuritilor de tip n (fosfor sau arseniu) ntr-un substrat de siliciu de tip p, pentru a forma drena i sursa. Se obine o densitate de componente similar cu cea specific PMOS, dar asigur o vitez mai mare pentru circuitele realizate, ns este mult mai scump dect tehnologia PMOS. CMOS combin ambele tipuri de tranzistoare ntr-o structur complementar, rezultatul fiind o vitez de lucru medie, imunitate mare la zgomote i un consum extreme de redus. HMOS este o tehnologie mai recent i a fost utilizat cu succes de firma INTEL la realizarea noilor sale generaii de microprocesoare i microcontrolere. Aceast tehnologie folosete tranzistoare cu canal n, proiectate special pentru a lucra la tensiuni joase i la viteze mari. CHMOS este rodul mbinrii performanelor de vitez deosebit ale tehnologiei HMOS, cu consumul sczut al celei CMOS. Rezultatul a fost remarcabil, astfel nct majoritatea productorilor de microprocesoare i microcontrolere au trecut la aceast tehnologie.

Bii , octei , cuvinte


Marea majoritate a echipamentelor numerice folosesc pentru reprezentarea intern a numerelor sistemul binar, caracterizat de utilizarea a numai 2 cifre: 0 i 1. Bitul reprezint cea mai mic unitate de informaie, echivalent cu o afirmaie (DA , 1) sau o infirmaie (NU, 0). Pentru uniti mai mari, cea mai important este octetul, obinut din gruparea a 2 8 bii. Octetul reprezint unitatea cea mai folosit pentru caracterizarea dimensiunii blocurilor de memorie. Dac aceast dimensiune este mare, se pot folosi multiplii acestuia: Kilooctet 210 bii Megaoctet 220 bii 210 KB Gigaoctet 230 bii 210 MB 220 KB

Un cuvnt este un grup de bii ce desemneaz cantitatea maxim de informaie ce poate fi transferat la un moment dat de un dispozitiv numeric. Cuvntul este materializat prin ci paralele de comunicaie a informaiei numite magistrale. Numrul de bii al unui cuvnt constituie lungimea sa. Lungimea unui cuvnt este una dintre caracteristicile cele mai importante ale unui microprocesor, deoarece hotrte precizia datelor i viteza de prelucrare a acestora.

Algoritmi , programe i limbaj main


Fiind dat o problem pentru rezolvarea acesteia trebuie gsit o metod adecvat algoritmul. Un algritm este o secven de operaii, grupate ntr-o succesiune de etape (pai) ce permit rezolvarea problemelor specificate. Pentru a fi neles de microprocesor, algoritmul trebuie prezentat ntr-un limbaj adecvat, limbaj care const ntr-un set de simboluri i reguli de sintax foarte bine precizate. Materializarea algoritmului cu ajutorul unui limbaj se face ntr-un program ce const ntr-o succesiune de operaii elementare instruciuni. La nivelul cel mai de jos, instruciunile programului se prezint ca iruri de bii ce pot fi transformate cu uurin n impulsuri electrice, dar care sunt foarte greu de manevrat de ctre programator. Acest limbaj, singurul neles de procesor este numit limbaj main. Din acest motiv, au fost create programe speciale, care permit utilizarea unor limbaje mai apropiate de cel uman (limbaj de asamblare). Ulterior au fost create o multitudine de limbaje (BASIC, FORTRAN, C etc) , numite de nivel ridicat, a cror scop a fost gsirea unei modaliti ct mai accesibile de a programa un microprocesor.

Logic cablat i logic programat


Logica cablat presupune un automat de control n care secvena de semnale de sincronizare/coordonare sunt elaborate pe baza unei scheme fixe (de obicei cu pori i bistabile interconectate convenabil), imposibil de modificat. Logica programat se bazeaz pe un automat de control flexibil, capabil s genereze semnale de sincronizare/coordonare, pe baza unui program executat de microprocesor. Majoritatea aparaturii moderne utilizeaz logic programat. Prin simpla modificare a programului, ntreaga funcionare a aparatului se poate schimba.

Puterea de calcul i viteza de lucru a microprocesorului


Prin putere de calcul se nelege mai ales capabilitatea de prelucrare numeric a acestuia i este determinat de lungimea cuvntului, de arhitectura intern i viteza de execuie a instruciunilor.Viteza microprocesorului este condiionat de 2 factori: -Frecvena ceasului un tact mai rapid determin un procesor s execute un program mult mai rapid; -Arhitectura intern permite creterea vitezei de lucru (meninnd frecvena ceasului neschimbat) pe baza trecerii de la execuia strict secvenial a operaiilor, la execuia lor paralel, ntr-un mod transparent pentru utilizator, folosind tehnici ca: utilizarea memoriilor CACHE, creterea numrului de magistrale interne ale unitilor de prelucrare, succesiune pipeline (suprapunerea parial a operaiilor). -Viteza de execuie a instruciunilor este dificil de msurat direct. Se definete de obicei ca durata de execuie a unor instruciuni foarte des folosite sau ca numr mediu de instruciuni executate ntr-o secund. -Setul de instruciuni - condiioneaz indirect viteza de calcul. Cu ct modul de codificare a instruciunilor este mai simplu i secvena microoperaiilor este mai rapid, cu att microprocesorul va avea o vitez de lucru mai mare. Microprocesoarele cu set complet de instruciuni (CISC) consum un timp relative ridicat pe instruciune, dar compenseaz acest lucru printr-o gam divers de instruciuni. 4

Spre deosebire de ele, microprocesoarele cu set redus de instruciuni (RISC) sunt optimizate astfel nct instruciunile s fie executate foarte rapid, chiar mai multe ntr-un singur tact main .

Arhitectura intern a unui microprocessor


Ca orice unitate central a unui sistem de calcul, microprocesorul conine urmtoarele componente principale: - unitatea de control CPU ; - unitatea logico-aritmetic ALU; - registre interne; Acestea comunic ntre ele prin ci de transfer informaiei numite magistrale, ce leag ntre ele mai multe dispozitive, dar la un moment dat doar dou dispozitive pot schimba informaie: sursa i destinaia. Coordonarea transferurilor pe magistral se face de ctre un dispozitiv master, cele subordonate fiind slave. Microprocesorul posed i o magistral intern, legat printr-o interfa la magistrala extern. Structura intern a unui microprocesor generic este urmtoatea:

ACC ALU TMP PS

REG DCD X B R3 R1 R4 R2 BI

ADD BUS

DATA BUS IR CLK Gen


Cuartz

PC SP CPU CMD BUS INT

Inst DCD

Reset

Unitatea de control
Asigur sincronizarea i coordonarea operaiilor din interiorul i exteriorul microprocesorului. Ca orice automat secvenial sincron, unitatea central este guvernat de un semnal de tact (CLK), produs de un circuit de ceas intern sau extern microprocesorului. n majoritatea cazurilor, oscilatorul, care asigur tactul, este pilotat cu cuar i asigur frecvene ntre 1 i 40 MHz (microprocesoarele ce echipeaz calculatoarele moderne ajung pn la frecvene de ordinal GHz). n principal, unitatea de control solicit instruciunile stocate n memoria de program, le decodific i pe baza acestora comand funcionarea celorlalte blocuri (ALU, registre etc ) interne microprocesorului, n vederea executrii corecte a acestora. 5

Unitatea logico aritmetic


ALU execut operaiile aritmetice i logice impuse de instruciunile programului, sub coordonarea direct a unitii de control. Operaiile aritmetice pot fi: adunare i scdere (de baz - obligatorii), respectiv nmulire, mprire, ridicare la putere (suplimentare). Operaiile logice pot fi: NU, I, SAU (de baz - obligatorii), respectiv SAU EXCLUSIV, deplasri, rotiri (suplimentare). Participanii la o operaie aritmetic sau logic se numesc operanzi, iar semnul grafic asociat acesteia se numete operator. Dac operaia necesit un singur operand (schimbarea semnului sau negarea), ea se numete operaie unar. Dac operaia necesit 2 operanzi (adunare, I logic), ea se numete binar.

Registrele interne
Au rolul de a stoca temporar operanzii i rezultatele vehiculate prin ALU, pe parcursul uneia sau mai multor instruciuni. Registrele folosite n mod uzual la calcule se numesc registre generale, iar cele folosite la operaii speciale (adresarea, manevrarea stivelor) se numesc registre funcionale. Registrele generale pot ndeplini mai multe roluri: - manevr pentru stocarearea temporar a unui operand sau a unui rezultat; - acumulator (ACC) registru folosit n operaiile de adunare pentru cumularea unui ir de valori (unul din operanzi se gsete ntr-un registru de lucru, iar cellalt l constituie chiar coninutul acumularorului), iar la sfrit rezultatul se depune tot n acumulator; - contor cu autoincrementare sau cu autodecrementare, ce permite realizarea simpl a buclelor de program i parcurgerea irurilor de date; -baz (B) i index (X) ce permite adresarea irurilor de valori (vectori), plasate n locaii succesive de memorie; -indicator de stiv (SP) - permite adresarea unei zone de memorie (stiv), special creat pentru a facilita manevrarea datelor, pe principiul ultimul sositprimul servit (LIFO), prin operaii de tipul PUSH, POP, precum i execuia subrutinelor sau a tratrii ntreruperilor. Un microprocesor posed cel puin 2 registre generale (acumulator i manevr). Majoritatea microprocesoarelor folosesc seturi de 4 16 registre, ce pot prelua unul din rolurile prezentate mai sus. Registrele funcionale ndeplinesc sarcini dedicate pentru controlul derulrii instruciunilor n microprocesor. -Registrul de stare program (PS) conine o serie de informaii ce descriu starea execuiei progarmului (indicatorii de condiie, care reprezint modul de terminare a unei operaii logicoaritmetice, utilizat la realizarea salturilor condiionate, precum i a indicatorilor de semnalare a evenimentelor speciale i a modurilor de lucru); -Registrul de instruciuni (IR) destinat stocrii instruciunii pe parcursul execuiei sale; -Contorul de program (PC) indic n permanen instruciunea curent (de executat);

Execuia instruciunilor i indicatorii de condiie


Vom considera citirea i execuia unei instruciuni tipice de un cuvnt. Pentru aceasta: -de la adresa coninut n contorul de program (PC) interfaa de magistral citete un cuvnt, printrun ciclu de citire al instruciunii -coninutul locaiei citite este transferat prin magistrala intern n registrul de instruciuni (IR); -contorul de program este incrementat pentru a indica instruciunea imediat urmtoare;

-imediat ce codul instruciunii este disponibil, n registrul de instruciuni (IR), el este decodificat i transformat n semnale de activare a diverselor microoperaii din care este compus execuia propriuzis a instruciunii; -nc din faza final a execuiei instruciunii, se poate declana citirea instruciunii urmtoare; n cazul instruciunilor de mai multe cuvinte, se fac referiri succesive la memorie. Multe microoperaii presupun folosirea ALU pentru calcule ascunse (calcule de adres). Operaiile de calcul produc rezultate ce trebuie testate pentru a lua o decizie. ALU dispune de un set de bistabili care fac parte integrant din registrul de stare program (PS) i care memoreaz modul de finalizare al operaiei executate. Aceti bistabili se numesc indicatori de condiie i ei pot fi testai n instruciuni de salt condiionat. Indicatorii cei mai utilizai sunt prezentai n continuare: -Z (ZERO) se seteaz dac rezultatul este nul; -S (SIGN) se seteaz dac rezultatul este negativ; -C (CARRY) se seteaz dac apare un transport; -V (OVERFLOW) se seteaz dac rezultatul unei operaii ntre numere cu semn are un semn incorect (datorit transporturilor nedorite spre poziia semnului).

Seturi de instruciuni
Instruciunea este o operaie elementar ce se execut de microprocesor n cadrul unui program. Orice instruciune este identificat pe baza unui cod de operaie ce face parte integrant din corpul acesteia. Codul de operaie este completat de informaii suplimentare, numite uzual argumente. Codul operaiei este singura poriune a instruciunii care se decodific intern i declaneaz secvena de microoperaii din unitatea de comand (exist instruciuni formate numai din cod). Lista complet de instruciuni pe care o poate interpreta i executa un microprocesor se numete set de instruciuni. Instruciunile sunt stocate n memorie sub form de cuvinte consecutive, care materializeaz programul existnd dou categorii de instruciuni mprite pe baza formatului: - instruciuni cu format fix la care lungimea acestora i structura diverselor cmpuri componente este fix, indiferent de codul instruciunii; - instruciuni cu format variabil la care lungimea i structura cmpurilor componente este dependent de codul instruciunii. Formate uzuale de instruciuni a) b) c) d) CO Cod operaie CO Cod operaie CO Cod operaie CO Cod operaie AO Adres operand AO Adres operand AO Adres operand AO Adres operand AO Adres operand AR Adres rezultant AI Adres instruciune

AR sau AI Adres rezultant sau Adres instruciune

AO sau AI Adres operand sau Adres instruciune AO sau AI Adres operand sau Adres instruciune

a) - instruciune cu patru adrese: dou adrese de operanzi, o adres pentru rezultat i o adres pentru urmtoarea instruciune. Formatul este incomod, datorit numrului mare de argumente, care nu sunt folosite ntotdeauna. b) - instruciune cu trei adrese: dou adrese de operanzi i o adres pentru rezultat sau pentru urmtoarea instruciune. n acest caz se presupune c instruciunile sunt plasate n locaii succesive, astfel c adresa instruciunii urmtoare este subneleas. Instruciunile care nu respect aceast secven (salturi, apeluri de subrutine), de regul nu sunt instruciuni de calcul i ca urmare ultimul cmp poate fi folosit pentru adresa urmtoarei instruciuni de executat. c) - instruciuni cu dou adrese: dou adrese de operand, din care ultima poate fi pentru urmtoarea instruciune. Rezultatul unei operaii este depus ntr-un loc implicit cunoscut (de obicei, n acumulator). d) - instruciuni cu o singur adres: o adres de operand sau pentru urmtoarea instruciune. n aceast situaie att unul din operanzi, ct i rezultatul operaiei au un loc prestabilit. Acest format este cel mai economic. Microprocesoarele actuale folosesc , de obicei , instruciuni cu format variabil cu una sau cu dou adrese , deoarece permit o utilizare optim a memoriei de program i o scurtare semnificativ a timpului de extragere decodificare .

Instruciuni de transfer de date


Transfer informaia dintr-un registru (sau locaie de memorie) n alt registru. Operaiile curente sunt de transfer (ncrcare, memorare) i interschimbare. Instruciuni aritmetice i logice n aceast categorie intr: adunare (ADD), scdere (SUB), nmulire (MUL), mprire (DIV), complementare (CPL), test i comparare, I logic (AND), SAU logic (OR), SAU exclusiv (XOR), negare (NEG), incrementare (INC), decrementare (DEC), deplasri stnga sau dreapta, rotiri stnga (RL) sau dreapta (RR), tergerea (CLR) unui registru sau nscrierea unui bit cu o valoare dorit (SETB/RESB). Instruciuni de control al programului Instruciunile din acest categorie au drept caracteristic faptul c oricare din ele modific derularea secvenial a programului, provocnd ncrcarea contorului de program cu o valoare dintr-un cmp de adres al instruciunii curente, sau cu o adres calculat ntr-un pas precedent al programului. O instruciune de ramificare, numit i salt, determin prsirea secvenei normale a programului, fr un mecanism de reinere a locului unde s-a ntmplat acest lucru. O posibil revenire este lsat complet n seama programatorului. Exist dou tipuri de salt: -salt necondiionat (JMP); -salt condiionat (JZ, JC), ce are loc doar dac este ndeplinit o condiie specificat prin starea indicatorilor de condiie poziionai anterior. Unele microprocesoare au o instruciune, considerat tot de salt, care determin CPU s ignore una sau mai multe instruciuni dintr-o secven (SKIP). Instruciunile de apel (CALL) i revenire (RET) din subroutine, realizeaz i salvarea adresei de ntoarcere (a locului de unde trebuie reluat programul dup execuia subrutinei). Instruciuni de control al microprocesorului n acest grup pot fi nscrise unele instruciuni speciale de control: -oprire (HALT) ce suspend execuia programului curent pn la apariia unei cereri de ntrerupere extern ; 8

-nici o operaie (NOP); -activarea (EI) sau dezactivarea (DI) sistemului de ntreruperi. Instruciuni de intrare / ieire Acest grup include dou instruciuni de transfer, cu porturi de intrare/ieire, adic citire port (IN) sau scriere port (OUT).

Tehnici de adresare a memoriei


Din analiza formatelor de instruciuni, am observat c pentru a defini complet operaia de executat este nevoie s cunoatem locul unde sunt amplasai operanzii, adic adresele lor. n general, un operand se poate afla n registre sau n memoria de lucru. Adresa unui registru se poate codifica pe un numr redus de bii (uzual 3 sau 4 bii), ce poate face parte chiar din cmpul destinat codului operaie. n al doilea caz, adresa locaiei de memorie unde se afl operandul este precizat ntr-un cmp separat, ce face parte din corpul instruciunii. Regsirea unei informaii presupune determinarea adresei utiliznd un set de convenii i metode de calcul, cunoscute sub numele de tehnici de adresare. Principalele tehnici de adresare ntlnite la majoritatea microprocesoarelor sunt: Adresarea implicit Pleac de la ideea c adresa (locul) unui operand este implicit cunoscut i definit chiar de operaia executat, n timp ce al doilea operand se afl ntr-un registru de lucru. Multe instruciuni cu adresare implicit sunt reprezentate pe un singur cuvnt, necesitnd pentru extragere o singur referire la memorie. Ex: ADD r ACC ACC + r , unde r este un registru de lucru; Adresarea direct Este legat de prezena unui operand n memorie, n care adresa lui nu mai poate fi implicit cunoscut. Corpul instruciunii are un cmp explicit pentru adres. n timpul execuiei instruciunii se mai face o referire suplimentar la memorie, pentru extragerea operandului. Ex : ADD r , adr r r + ( adr ) , unde (adr) este coninutul locaiei de memorie cu adresa adr. n cazul instruciunii de forma: ADD adr ACC ACC + ( adr ) , avem un caz tipic de combinaie a adresrii implicite i a celei directe. Adresare imediat Presupune aducerea operandului chiar n corpul instruciunii (nlocuind corpul de adres cu operandul). Avantajul const n economia unor referiri suplimentare la memorie n timpul execuiei unei instruciuni, util mai ales la operaii cu constante. ADD r ,4 rr+4 , unde 4 este o constant plasat n corpul instruciunii. Adresarea indexat Este principalul mijloc de adresare a irurilor de date dispuse la adrese consecutive, pornind de la o adres de baz. Adresarea indexat utilizeaz un registru special, numit registru de index, n care se 9

plaseaz numrul de ordine al elementului din ir, care trebuie prelucrat. n corpul instruciunii sunt specificate adresa de baz i adresa registrului de index. Ex : ADD r , adr [ x ] Adresarea bazat Este folosit ca mijloc alternativ (la adresarea indexat) de acces la irurile de date. Adresa irului este plasat n registru special numit registru de baz, iar indexul face parte din corpul instruciunii. Adresarea bazat combinat cu adresarea indexat dau un mijloc foarte eficient de acces la blocurile mari de date. Ex : ADD r , B[10] r r + (B+10) , unde r este registrul de lucru, B este registrul de baz, iar prin (B+10) se nelege coninutul locaiei de memorie cu adresa dat de registrul de baz la care s-a adugat 10. nlocuind constanta 10 cu x, adic B[x] se obine o adresare bazat i indexat. Adresarea indirect Este o modalitate de regsire a informaiei pe baza interpretrii operandului, nu ca o valoare de calcul ci ca o nou adres de unde se poate extrage valoarea sa adevrat. Adresarea indirect permite partajarea unei date ntre mai multe uniti de program, dar i accesul la irurile de date. EX : ADD r , (adr) r r+(adr) Prin (adr) se nelege coninutul locaiei de memorie cu adresa adr, la care se afl o nou adres. Alte tipuri de adresri: -adresare relativ la care calculul adresei se face n raport cu coninutul contorului de program; -adresare cu autoincrementare i autodecrementare (punere i extragere din stiv); -adresare paginat; De obicei microprocesoarele nu admit combinarea oricrei insruciuni cu orice mod de adresare. Instruciunile de transfer implementeaz cele mai multe moduri de adresare. r r + ( adr +x )

Microprocesorul i circuitele externe


Un sistem cu microprocesor, n afar de unitatea central, cuprinde memoria i subsistemul de intrare/ieire ce sunt conectate printro magistral extern. Magistral extern a unui microprocesor Realizarea unui sistem cu microprocesor se face n jurul unei magistrale ce servete drept cale de transfer a informaiei. i n interiorul microprocesorului principalele sale componente sunt dispuse tot n jurul unei magistrale, numit magistral intern. n afara microprocesorului, aceasta are drept corespondent magistrala extern. Legtura ntre cele dou magistrale se face printr-o interfa special, al crui rol este de a asigura att o separare electric, un numr relativ redus de terminale externe, dar i adaptarea la acelai protocol de comunicaie ntre dispozitive. Liniile unei magistrale se grupeaz n date (DATA BUS), adrese (AD BUS), comenzi/control (CMD BUS) i alimentri. Magistrala de date (DATA BUS), permite transferal informaiei bidirecional, fiind compus dintr-un numr de linii egal cu lungimea cuvntului microprocesorului. Disciplina de magistral impune ca la un moment dat ntr-un sistem s se afle n dialog doar dou dispozitive, unul surs i unul destinaie, sensul de transfer fiind unic i dictat de cele dou tipuri de operaii de baz admise: citire i scriere. Rezult c dispozitivele ce se conecteaz mpreun pe aceeai magistral de date trebuie s

10

dispun de buffere cu trei stri (3-State) astfel nct s nu apar conflicte electrice n timpul transferurilor. Magistrala de adrese (AD BUS) este unidirecional (de la microprocesor spre exterior) i servete la vehicularea adreselor ce permit localizarea n memorie sau ntr-un registru de interfa a informaiei utile. Magistrala de comenzi (CMD BUS) conine semnale unidirecionale, menite s asigure coordonarea i sincronizarea transferurilor cu dispozitivele externe precum memorie i interfee I/O. Aceste semnale permit identificarea tipului de operaie de transfer ( RD -citire, WR -scriere), natura dispozitivului ( MRQ -memorie, IORQ -interfee I/O), precum i natura informaiei vehiculate (date,

MI -instruciuni). Microprocesorul dispune i de linii speciale pentru generatorul de tact (X1 i X2, pentru conectarea cuarului sau CLK pentru semnalul de tact extern),precum i pentru sincronizarea cu dispozitivele externe (RDY), iniializarea (RESET), cereri de ntrerupere (INT) i de magistral (BRQ i BACK). Unele microprocesoare folosesc aceleai linii pentru adrese i date, acestea fiind multiplexate. La nceputul fiecrui transfer, procesorul depune nti adresele (ce pot fi ngheate ntrun registru LATCH) i apoi folosete aceleai linii pentru citirea sau scrierea datelor.
Memoria Sistemele cu microprocesoare utilizeaz dou tipuri de memorii pentru stocarea datelor si programelor. -Memorie numai cu posibilitate de citire care este nevolatil i care este scris de utilizator (EPROM i EEPROM), aceasta fiind memoria de program. -Memorie cu posibiliti de citire/scriere (RAM), care este volatil i servete la stocarea temporar a informaiilor (date rezultate i chiar programe), aceasta fiind memoria de lucru. Microprocesoarele de uz general, de regul multicip, nu dispun de resurse proprii de memorie (cu excepia registrelor de lucru ce pot fi considerate memorii RAM foarte rapide dar de capacitate mic). Multe microprocesoare actuale sunt dotate cu memorie RAM proprie foarte rapid, de capacitate relativ modest (4 16 KB), al crui rol este de a funciona ca tampon ntre CPU i memoria extern, mai lent, dar de mare capacitate. Aceast memorie, numit memorie CACHE, realizeaz funcia de accelerator, mpreun cu un dispozitiv intern de gestionare, funcie ce este complet transparent pentru utilizator. Subsistemul de intrare/ieire Face legtura ntre microprocesor i periferice prin interfee specializate, numite generic porturi. n principiu, transferal datelor de la sau ctre porturi se face cu instruciuni speciale, numite instruciuni de intrare/ieire. Citirea unui port se face cu o instruciune de intrare (IN), iar scrierea ctre un port se face cu o instruciune de ieire (OUT). Utilizatorul are acces la funciile interfeei prin intermediul registrelor acesteia. Registrele de interfa se grupeaz n trei categorii: -registre de control, destinate manevrrii interfeei i perifericului asociat; -registre de stare, cu ajutorul crora se verific condiiile i modul de execuie al operaiilor, precum i erorile aprute; -registre de date, prin care se face transferul propriu zis.

11

Structura simplificat a unei interfee este prezentat n figura urmtoare:


CMD BUS

AD BUS

Decodor i control interfa

Registru de control

Registru de stare DISPOZITIV PERIFERIC Registru de date

DATA BUS

Tampon

Registru de date

Tipuri de Interfee
-interfaa paralel permite interconectarea perifericelor cu vitez de lucru ridicat; -interfaa serial permite interconectarea perifericelor cu vitez redus, dar folosind un numr mic de linii (de regul dou sau trei), conform unui standard (RS 232, RS 422, RS 485 etc); -contor/temporizator: este o interfa special folosit ca i contor sau generator de impulsuri programabil; -interfaa video: permite obinerea imaginilor grafice ale caracterelor sau curbelor pe un ecran monitor TV sau cu cristale lichide.

Transferuri , cicluri , stri


Principala utilitate a unei magistrale este transferul informaiei. Pentru aceasta, un microprocesor trebuie s precizeze: -natura operaiei dorite: poate fi citire sau scriere i este identificat cu ajutorul unor semnale speciale de pe magistrala de comenzi ( RD sau WR ); -natura dispozitivului implicat n transfer ce poate fi memorie au interfa de intrare/ieire ( MRQ - memorie, IORQ - interfaa I/O); -adresa locaiei sau registrului dorit (AD BUS); Transferul are loc pe durata unui ciclu de magistral. Cum microprocesorul este guvernat de un semnal de tact precis, rezult c i ciclul de magistral este corelat cu acest tact. Perioada tactului se numete stare, iar fiecare ciclu are un numr determinat de stri. Ciclurile de citire/scriere ale microprocesorului sunt date n diagramele urmtoare:

12

Ciclu de citire T1 CLK AD BUS MRQ , IRQ RD DATA BUS Dat stabil Adres stabil T2 T3

Ciclu de scriere T1 CLK AD BUS MRQ , IRQ WR DATA BUS Dat stabil Adres stabil T2 T3

nti microprocesorul pune o adres valid pe liniile AD BUS (locaie de memories sau registru I/O), apoi activeaz pe rnd semnalele care specific natura dispozitivului ( MRQ sau IORQ ) i apoi operaia dorit ( RD sau WR ). n timpul ciclului de citire, microprocesorul ateapt dispozitivul adresat s pun pe magistrala de date un cuvnt valid, pe care-l preia spre sfritul ciclului.Dac dispozitivul nu poate rspunde n timp util, el poate folosi dezactivarea liniei READY, fornd microprocesorul s atepte. Folosirea liniei READY pentru sincronizarea cu dispozitive lente determin microprocesorul s insereze automat o succesiune de stri de ateptare, acestea sunt introduse n interiorul ciclului, lungindu-i convenabil durata. Dac dispozitivul adresat nu activeaz linia READY, sistemul se poate bloca.

13

ntreruperi i accesul direct la memorie


O problem important n orice sistem de calcul este sincronizarea activitii microprocesorului cu evenimentele externe. Toate aceste evenimente au un punct comun: sunt asincrone n raport cu execuia programului de ctre procesor. Programul trebuie informat printr-un mijloc oarecare c un astfel de eveniment s-a produs i c trebuie tratat corespunztor (printr-o secven specific numit rutin de tratare). Exist trei tipuri de mecanisme utilizate pentru tratarea evenimentelor externe: - ateptarea (bucla) programat; - ntreruperi; - accesul direct la memorie. Ateptarea programat n forma sa cea mai simpl, const ntr-o secven de program care citete n permanen o informaie de stare i testeaz un indicator, pentru a afla dac evenimentele au avut loc. Procesorul nu execut nici o alt activitate pn ce evenimentul nu s-a produs rezultnd timpi inutilizabili pentru sistem. ntreruperi Sunt faciliti hardware oferite de microprocesoare, prin care un dispozitiv periferic atrage atenia asupra producerii unor evenimente externe ce reclam o intervenie prompt. nainte ca o ntrerupere s poat avea loc, este necesar s se ndeplineasc condiiile: -perifericul n cauz trebuie s fie capabil s genereze o ntrerupere; -sistemul trebuie s posede toate mecanismele hardware de transmitere a semnalului de ntrerupere de la periferic la CPU; -programul ce se execut de microprocesor trebuie s conin secvene de cod special destinate lucrului cu ntreruperi (rutine de tratare a ntreruperilor); -perifericul trebuie s genereze semnalul de ntrerupere. Apariia unei ntreruperi n activitatea curent a microproesorului determin urmtoarea secven de evenimente: -instruciunea n curs de execuie se ncheie normal; -starea intern a procesorului (registrul de stare i contorul de program) este salvat pentru a permite mai trziu reluarea activitii din locul unde a fost ntrerupt; -microprocesorul ncarc noi informaii de stare i execut un salt de la o rutin de tratare specific, ce realizeaz toate aciunile urgente implicate de apariia evenimentului; -la sfritul rutinei de tratare (marcat cu o instruciune de revenire din ntrerupere IRET) se restaureaz starea procesorului salvat anterior; -restaurarea este ncheiat cu rencrcarea contorului de program cu valoarea salvat i prin aceasta, reluarea programului ntrerupt. Observaii -tratarea ntreruperii trebuie s nlture cauza apariiei acesteia, astfel secvena de mai sus se poate repeta; -dac sosesc noi ntreruperi de aceeai natur, n timpul execuiei rutinei de tratare, se poate ajunge la situaia ca aceasta s fie restartat recursive, pn la apariia unor erori sau pierderea controlului asupra programului; -procesoarele actuale suport instruciuni ce permit activarea, respectiv dezactivarea tratrii ntreruperilor. Pe baza acestora se pot elimina ntreruperile neprevzute. 14

Microprocesoarele mai simple sunt dotate cu o singur intare pentru semnale de ntrerupere (INT), dar cele mai multe posed o intrare suplimentar (NMI), care permite tratarea unor evenimente imperative, motiv pentru care nu exist nici un mecanism intern de inhibare a acestora (ntreruperi nemascabile). O problem important apare la conectarea ntreruperilor de la mai multe periferice. Cum pot fi luate acestea n considerare dac microprocesorul dispune doar de o singur intrare INT. Rspunsul este dat de introducerea unui mecanism de multiplexare/arbitrare a cererilor de ntrerupere, bazat pe o logic cu prioriti. O soluie este folosirea unui controler de ntreruperi. Acesta dispune de un codor de prioriti care determin solicitantul cu cel mai mare nivel de prioritate i genereaz semnalul de ntrerupere ctre procesor. n momentul acceptrii ntreruperii, controlerul pune pe magistral un cuvnt de identificare al perifericului solicitant, astfel nct microprocesorul s fie capabil s activeze rutina de tratare specificat. O alt soluie este cea n care logica de arbitrare i multiplexare a fost distribuit chiar n circuitele de interfa. Fiecare circuit are o intrare de autorizare a ntreruperilor (IEI) i o ieire de semnalizare a activitii ctre perifericul urmtor (IEO). Dac IEI1, atunci perifericul n cauz poate genera o ntrerupere. Dac acelai periferic se afl n curs de tratare, el va pune IEO0. Un dispozitiv cu IEI0 este obligat s transmit IEO0. Prioritatea este stabilit pe baza poziiei fizice a perifericului ntr-un lan de prioriti. Odat generat ntreruperea i acceptat de procesor, perifericul i va pune cuvntul de identificare pe magistral, pentru a permite activarea rutinei de tratare corect.

Periferic 1

0 Controler de 1 ntreruperi INT MICROPROCESOR

Periferic 2

Periferic n

NMI

ntrerupere nemascabil

15

1 IEI Periferic 1 IEO IEI Periferic 2 IEO NMI IEI Periferic n IEO ntrerupere nemascabil INT MICROPROCESOR

Accesul direct la memorie


Permite ca dou procesoare s partajeze aceeai magistral n scopul realizrii accesului la aceleai resurse. Unul dintre ele este chiar unitatea central a sistemului, iar cellalt este dedicat numai interceptrii i arbitrrii cererilor provenite de la periferice, precum i coordonrii transferurilor solicitate, fr a mai apela la unitatea central. Acest procesor dedicat controler pentru acces direct la memorie (DMA) funcioneaz n dou moduri: -modul slave, funionnd ca un circuit de interfa obinuit, ce poate fi programat prin instruciuni I/O, programarea are ca scop precizarea locaiei de memorie de unde ncepe transferul i sensul transferului; -modul master controlerul preia controlul magistralei (dup ce a primit acceptul CPU) i dirijeaz traficul de informaie, genernd toate semnalele de control necesare. Ciclurile DMA se pot ntreptrunde cu cele CPU, mai ales dac rata de transfer a perifericului nu este prea mare, caz n care execuia programului principal este ncetinit foarte puin. Multe controlere DMA sunt capabile s gestioneze mai multe periferice. Astfel, cererile DMA, notate DRQ, emise de periferice, ajung la controler, care le arbitreaz i care solicit apoi eliberarea temporar a magistralei de ctre procesor prin activarea semnalului BREQ. Procesorul termin ciclul de memorie sau I/O n curs, dup care se deconecteaz de la magistral i semnalizeaz acest lucru activnd linia BACK. Controlerul DMA preia acum controlul magistralei i semnalizeaz acest lucru perifericului, prin smnal de acceptare DACK. La terminarea unui transfer DMA, perifericul dezactiveaz linia DRQ, controlerul eliberez magistrala, semnaliznd acest lucru i procesorului prin linia BRQ, acesta preia din nou controlul magistralei i totul reintr n normal. 16

DRQ DACK

DRQ0 DACK0 BREQ BACK

BREQ BACK

DRQ DACK Periferice

DRQ1 DACK1

Microprocesor

Controler DMA Avantajul imediat al tehnicii de transfer prin acces direct la memorie este c acesta permite eliberarea procesorului de sarcina gestionrii directe a intrrilor i ieirilor de date din sistem: este suficient s programm controlerul DMA pentru citirea unui bloc de date de la un periferic (de exemplu. CAN), dup care procesorul este liber s realizeze o alt activitate ce nu are nevoie de datele solicitate. Unitatea de transfer a datelor prin DMA este blocul, de aceea la sfritul transferului este considerat a fi epuizarea blocului de date.

17