Sunteți pe pagina 1din 53

Sisteme cu microprocesoare Un sistem este un ansamblu format dintr-o intrare, o ieire i un proces.

Adesea, pot exista mai multe intrri i ieiri. Intrare Ieire

Proces

Un microprocesor, ca i un sistem, are intrri, ieiri i un proces. Intrrile i ieirile microprocesorului sunt tensiuni ce pot fi utilizate pentru controlul dispozitivelor externe. Procesul implic analiza tensiunilor de intrare i, folosirea acestora pentru generarea tensiunilor de ieire dorite. Aceasta generare este bazat pe instruciunile introduse anterior. Tensiune de ieire pentru controlul dispozitivelor externe

Tensiune de intrare

Microprocesor

Fizic, un microprocesor este un circuit electronic foarte mic (aproximativ 12 mm), sensibil la umezeal sau frecare i ncapsulat (pentru protecie) n plastic sau material ceramic. Dimensiunea, forma i numrul pinilor depind de cantitatea de date pe care microprocesorul este proiectat s le prelucreze.

Pini de conectare Carcas din plastic sau material ceramic

Microprocesorul conine funcii echivalente cu o unitate central de procesare (CPU) mic a unui calculator. Este capabil s realizeze funciile de baz ale calculatorului, putnd fi astfel ncorporat ntr-o proiectare de sistem, unde astfel de funcii sunt cerute. Un microprocesor, prin definiie nseamn doar unitatea central de procesare, mpreun cu un decodificator de instruciuni, registre i unitatea de procesare logic i aritmetic (ALU).

Un sistem bazat pe microprocesor este un sistem ce conine un microprocesor, i nu are neaprat de a face cu operaiile de calcul. De exemplu, sistemul de deschidere a uii unui garaj este un sistem bazat pe microprocesor sau un sistem controlat de un microprocesor. Microcalculatoarele sunt sisteme particulare bazate pe microprocesoare, ce conin cel puin trei componente: microprocesorul (CPU), memoria i componentele periferice de intrare-ieire. Un microcalculator poate fi un calculator utilizat n scop general (de exemplu un PC) sau un sistem proiectat s ndeplineasc o sarcin particular (de exemplu un sistem de reglare ntr-un circuit, microcontroller-ul).

Un microcontroller este un microcalculator ntr-un singur cip. Deci, un microcontroller include pe acelai cip un microprocesor (CPU) mpreun cu cele mai des utilizate periferice. Un controller (regulator) este utilizat pentru controlul anumitor procese. O aplicaie tipic pentru un microcontroller este de exemplu, monitorizarea i reglarea temperaturii dintr-o cldire. Pe msur ce procesul de miniaturizare s-a dezvoltat, toate componentele necesare pentru controller (regulator) au fost construite direct pe un singur cip. Microcontroller-ul include n mod uzual: CPU EPROM / PROM / ROM (memorie de tipul read only pentru codul programului) RAM (memorie de tipul random access pentru date) dispozitive de intrare / ieire seriale sau porturi seriale (UARTuri)

alte interfee de comunicaie seriale (I2C magistrala serial multi-master, SPI - interfa serial periferic, CAN controller de reea CAN, CNA (convertoare analog-digital i digital-analogic ) Numrtoare Controller al ntreruperilor Prin includerea doar a caracteristicilor specifice unui anumit task, costul microcontrollere-lor este relativ sczut. Un microcontroller tipic are instruciuni de manipulare la nivel de bit, acces uor i direct la intrri/ieiri i o procesare eficient i rapid a ntreruperilor. n funcie de puterea i caracteristicile de care avem nevoie, se pot selecta microcontrolere pe 4, 8, 16 sau 32 de bii. Diagrama bloc a unui microcontroler tip este prezentat n figura de mai jos:

Controlul ntreruperii

RAM

ROM

Timere/ Numrtoare

CPU

Porturi

OSC

CAN/CNA

I/O

Port serial

Un sistem integrat (embedded) este un sistem bazat pe microprocesor ce este integrat ca un subsistem ntr-un sistem mai mare. Principalele componente ale unui astfel de sistem sunt: Microprocesor Senzori Convertoare (CAN sau CAN) Elemente de execuie Memorie (pe cip sau n exteriorul cipului) Ci de comunicaie Senzor CAN Procesor CNA Element de execuie

Memorie n general sisteme integrate au constrngeri legate de realizarea operaiilor n timp real (RTC real-time computing).

Arhitectura microprocesoarelor Una dintre cele mai mari limitri n creterea vitezei de execuie a algoritmilor o reprezint transferarea informaiilor spre i dinspre memorie. Aceste informaii includ date i instruciuni ale programului. Exist urmtoarele tipuri de arhitecturi: 1. Arhitectura Von Neumann Arhitectura Von Neumann conine o singur memorie i o singur magistral pentru transferul datelor spre i dinspre unitatea central de procesare (CPU).

Dispozitive de intrare

Adrese Date Adrese

CPU
Date Memorie (Programe i date)

Adrese Dispozitive de ieire Date

Aceast arhitectur este satisfctoare cnd acceptm execuia tuturor sarcinilor necesare serial. Ea asigur flexibilitate maxim n alocarea memoriei. 2. Arhitectura Harvard Conine memorii separate pentru date i instruciuni ale programului, cu magistrale separate pentru fiecare.

Dispozitive de intrare

Adrese Date Adrese Memorie pentru programe

CPU
Date Adrese Date

Adrese Dispozitive de ieire Date

Memorie pentru date

ntruct magistralele opereaz independent, datele i instruciunile programului pot fi extrase simultan, mbuntind viteza fa de cazul unei singure magistrale. Aceast arhitectur este utilizat de majoritatea microcontrolerelor i DSP-urilor actuale (procesoare de semnal).

3. Arhitectura Harvard modificat Arhitectura Harvard modificat este un caz particular al arhitecturii Harvard, ce permite o legtur ntre procesor si memoria pentru instruciuni. Arhitectura permite cuvintelor din memoria pentru instruciuni s fie tratate ca i date de tipul read-only, prin urmare datele de tipul const (caractere text) pot fi citite n interiorul memoriei pentru instruciuni. Aceast metod conserv mai mult memorie de date pentru variabilele de citire/scriere. Arhitectura Harvard modificat permite coninutului memoriei de instruciuni s fie tratat ca i cum ar lucra cu date.

Dispozitive de intrare

Adrese Date Adrese Memorie pentru programe

CPU
Date Adrese Date

Adrese Dispozitive de ieire Date

Memorie pentru date

Seciunea codului

Date de tipul const

Seciunea datelor

Principalul avantaj al arhitecturii (accesul simultan la mai mult de o memorie) a fost anulat de sistemul modern al memoriei cache, care permite mainilor cu arhitectur Von Neumann ce sunt mai flexibile s aib, n majoritatea cazurilor, acceai performan. n consecin, arhitectura Harvard modificat este folosit pentru aplicaii de ni unde performana/complexitatea/uurina n programare o recomand. Viteza procesorului este mai mare dect viteza de accesare a memoriei. Prin urmare, calculatoarele moderne cu memorie cache, au ncorporate aspecte ce aparin ambelor arhitecturi. La arhitectura Von Neumann, cache-ul de pe procesor este divizat n cache pentru instruciuni i cache pentru date, fr a fi nevoie s se mai separe memoria principal. Arhitectura Harvard este folosit pentru accesarea cache-ului de pe procesor, n timp ce arhitectura Von Neumann este utilizat pentru accesarea cipului de memorie extern. Limbaje de programare 1. Limbaje de nivel sczut Fiecare microprocesor are o list de instruciuni specific. Lista poart numele de mulime a instruciunilor i const din sute de instruciuni ce pot fi grupate astfel nct s se realizeze funcia dorit. Decodificatorul de instruciuni recunoate instruciunile i permite microprocesorului s execute aceste instruciuni.

Codul binar ce este neles de ctre microprocesor este numit cod main i const din iruri de bii. irurile de bii sunt grupate n blocuri de 8, 16, 32 sau 64 pe cipurile de memorie (ROM sau RAM) n funcie de tipul microprocesorului. Exemplu: 1100011000010101 semnific adunarea lui 15h la 25h (h hexazecimal). Exist cteva probleme legate de utilizarea codului main, i anume: reprezentarea sub form binar (iruri de 1 i 0) poate conduce ctre greeli (programatorul trebuie s introduc milioane de bii) programatorul trebuie s aib grij la structura intern a microprocesorului (registre, instruciuni, cerine pentru codificare, etc.) Limbajul de asamblare a fost proiectat cu scopul de a face aceeai munc ca i codul main, dar ntr-un mod mult mai rapid i mai uor. Locul irurilor de 1 i 0 a fost luat de litere. Exemplu: ADD 15h,25h Codul de mai sus se numete mnemonic. Mnemonicele reprezint un ajutor pentru memorie, fiind folosite pentru codurile de asamblare. Transformarea codului scris n asamblare n codul main se face prin intermediul unui program numit asamblor. Codul n asamblare (codul surs) Codul main (codul obiect)

Asamblor (program)

Codul obiect este ncrcat n memoria RAM (adresa de nceput a memoriei RAM utilizate este prima definit n codul scris n asamblare). Asamblorul poate lucra doar cu setul de instruciuni oferit de productorul microprocesorului. Limbajul de asamblare, ca i codul main sunt proiectate pentru a fi utilizate pe un anumit microprocesor, i n general nu sunt compatibile pentru alte tipuri. Un program scris n asamblare este mai rapid i necesit mai puin spaiu de memorie dect programele scrise n alte limbaje de programare. Codul main i limbajul de asamblare se numesc limbaje procedurale (microprocesorul execut instruciune cu instruciune). 2. Limbaje de nivel nalt n cazul limbajelor de nivel nalt se folosete un compilator pentru producerea codului main. Compilatorul, fa de asamblor poate trata i erorile de sintax existente n program. Pentru compilator, programatorul trebuie s scrie toate comenzile disponibile ale limbajului de nivel nalt n program de asamblare. Acest lucru face ca n general compilatoarele s depind de iscusina programatorului. Programatorul poate stoca pri de cod scrise pentru diverse funii n librrii. Legarea acestor secvene de cod din librrii n programul principal se realizeaz prin intermediul unui linker. Ultima operaie realizat este ncrcarea programului pe RAM prin intermediul unui loader. Acesta determin ce adrese din memoria microprocesorului sunt disponibile, de asemenea convertete etichetele la adresele lor finale. Adesea limbajul de nivel nalt este independent de calculatorul pe care se ruleaz, adic programul scris n acest limbaj poate fi transportabil pe un alt tip de calculator o trstur foarte util.

Limbajele de nivel nalt pot fi procedurale sau ne-procedurale. Limbajele ce conin algoritmi de tipul pas cu pas, utilizai pentru rezolvarea unei probleme se numesc limbaje procedurale. Limbajele ce exprim specificaii ale unui program care trebuiesc rezolvate sunt cunoscute ca ne-procedurale. Limbajele procedurale au urmtoarele avantaje: pot specifica date reale, ntregi, booleene, caractere sau structuri de date, cum ar fi: vectori, matrice, stive, nregistrri, mulimi, iruri de caractere, liste, arbori, etc. structuri de control ale secvenei de operaii ce urmeaz s fie realizate. Limbajele procedurale sunt proiectate folosind o mulime de reguli de sintax ce specific cuvintele limbajului i modul n care acestea sunt combinate. Pe lng regulile de sintax, fiecare limbaj are reguli semantice. Fiecare structur corect din punct de vedere sintactic trebuie s aib cel puin o interpretare semantic.
Codul surs de intrare (nivel nalt) Compilator (Convertete sursa n cod obiect) Codul obiect Linker (Combin dou coduri obiect)
Codul obiect

Codul surs

Codul obiect

Librrie

Loader (Adaug adresele sistemului RAM)

Limbajele de tipul Fortran 95, CCOBOL i C sunt limbaje algoritmice, adic ofer o metodologie de a mpri o problem mare ntr-un numr de task-uri, precum i programarea acestor task-uri n mod independent ca i funcii sau subrutine. Aceste funcii sau subrutine sunt combinate pentru a forma un program. Pe msur ce costul programrii a devenit tot mai mare dar i pentru c funciile sau subrutinele sunt destul de rigide, a fost nevoie de construirea programelor prin utilizarea unei librrii de componente refolosibile. Acest lucru a condus la apariia limbajelor orientate pe obiect, unde conceptul de subrutin/funcie a fost extins la acela a unui obiect. ntr-un program orientat pe obiecte, un obiect este modelat printr-o colecie a structurilor de date i printr-o mulime de proceduri ce pot fi realizate pe aceast structur de date. O clasificare a limbajelor de programare este prezentat n figura de mai jos: n limbajele procedurale fiecare declaraie determin modificarea valorilor din una sau mai multe locaii de memorie. Proiectarea programului const din scrierea unei secvene de declaraii ce transform starea memoriei de la valoarea iniial la valoarea final, aceast fiind i soluia problemei.

Limbajele funcionale ne-procedurale rezolv o problem prin aplicarea unui set de funcii variabilelor iniiale ntr-un mod specific pentru determinarea rspunsului cutat. Sintaxa unor astfel de limbaje poate fi definit prin:
f n f n 1 f n 2 f 1 data

Unde f sunt aplicri succesive de funcii ce transform argumentele lor. Din clasa de limbajele ne-procedurale mai fac parte limbajele bazate pe reguli sau limbajele bazate pe logic. Un program logic este exprimat ca o mulime de propoziii atomice (cunoscute ca fapte) i clauze de legtur (reguli de tipul if then).

Arhitectura intern a microprocesorului Structura intern a microprocesorului poate fi mprit n 3 seciuni: seciunea registrelor, unitatea de control i unitatea aritmetic i logic. Seciunea registrelor Numrul, mrimea i tipul registrelor poate varia de la un microprocesor la altul. Totui, diversele registre ale microprocesoarelor efectueaz operaii similare. Structura registrelor microprocesorului joac un rol important n proiectarea arhitecturii microprocesorului. Registre de baz ale microprocesorului Registrele de baz ale microprocesorului sunt: registrul instruciunii, numrtorul program, registrul de adrese ale memoriei i acumulatorul. Registrul instruciunii (IR) registrul are rol de stocare a instruciunilor. Coninutul acestuia este decodat de microprocesor ca o instruciune. Mrimea cuvntului microprocesorului determin mrimea registrului. De exemplu, un microprocesor pe 32 de bii are un registru al instruciunii de 32 de bii. Numrtorul program (PC) conine adresele instruciunii sau codul operaiei (op-code). n mod normal numrtorul program conine adresa urmtoarei instruciuni ce va fi executat. Dimensiunea numrtorului program este determinat de dimensiunea magistralei de adrese. Registrul de adrese ale memoriei (MAR) conine adresele datelor. Microprocesorul folosete adresele, ce sunt stocate n registrul adreselor de memorie, ca un pointer direct la memorie. Acumulatorul (A) este utilizat pentru a stoca rezultatul majoritii operaiilor efectuate de ALU. n general, se introduce un octet n acumulator de la un dispozitiv extern sau se extrage un octet din acumulator i a-l trimite ctre dispozitivele externe. Unele microprocesoare au mai multe acumulatoare. n aceste microprocesoare, acumulatorul ce urmeaz a fi utilizat de instruciune este specificat n op-code. n funcie de seciunea registrelor, microprocesoarele pot fi clasificate fie ca fiind bazate pe acumulator, fie ca fiind bazate pe registre cu scop general. ntr-un microprocesor bazat pe acumulator (Intel 8085, Motorola 6809), se presupune c datele sunt pstrate ntr-un registru numit acumulator. Toate operaiile logice i aritmetice sunt realizate folosind acest registru. Astfel de registre sunt n general registrele pe 8 bii. Microprocesoarele bazate pe registre cu scop general sunt de obicei microprocesoarele pe 16, 32 i 64 de bii (Intel 8086/80386/80486/Pentium i Motorola 68000/68020/68030/68040/PowerPC). La acest tip de microprocesoare, registrele pot pstra date, adresele memoriei, precum i rezultatul operaiilor aritmetice i logice. Numrul, dimensiunea i tipul registrelor variaz de la un microprocesor la altul. Dintre registrele cu scop general amintim: registrul index este folosit ca un numrtor n modificrile de adrese, pentru o instruciune, sau funcii generale de stocare. Registrul index este folosit mpreun cu instruciunile pentru accesarea vectorilor sau a datelor. Aceste tipuri de registre au o lungime de 16 sau 32 de bii. registru de stare conine bii individuali, fiecare bit avnd semnificaie specific. Biii din registrul de stare sunt denumii flag-uri. Starea unei operaii specifice a microprocesorului este indicat prin fiecare flag, ce este setat sau resetat de logica intern a microprocesorului. Dintre flag-uri amintim:

flag-ul de transport (carry flag) folosit pentru a indica dac rezultatul generat de o operaie aritmetic depete dimensiunea cuvntului microprocesorului. flag-ul zero (zero flag) este utilizat ori de cte ori rezultatul unei operaii este zero. flag-ul de paritate (parity flag) - este setat la valoarea 1 dac rezultatul ultimei operaii conine fie un numr par de 1 (paritate par) sau un numr impar de 1 (paritate impar), n funcie de microprocesor. flag-ul de semn (sign flag) este utilizat pentru a indica ori de cte ori rezultatul ultimei operaii este pozitiv sau negativ. Dac cel mai semnificativ bit al ultimei operaii este 1, atunci flag-ul este setat la valoarea 1, indicnd c rezultatul este negativ. Flagul este resetat la valoarea 0 dac cel mai semnificativ bit al rezultatului este 0, dac rezultatul este poziziv. flag-ul de depire (overflow flag) este setat 1 dac rezultatul unei operaii aritmetice este prea mare pentru dimensiunea maxim a cuvntului microprocesorului, altfel este resetat la 0. registrul pointer la stiv Stiva const dintr-un numr de locaii RAM n care se pot scrie date, sau din care se pot citi date. Aceste locaii sunt n general accesate prin subrutine. Adresa stivei este coninut ntr-un registru numit pointer-ul stivei. n general pentru accesul la stiv sunt utilizate dou instruciuni: PUSH i POP. Instruciunea PUSH este definit prin scrierea la vrful sau n partea de jos a stivei, n timp ce instruciunea POP este utilizat pentru citirea din stiv (de la vrf ctre partea de jos). Unele microprocesoare acceseaz stiva de la vrf (pointer-ul la stiv este decrementat dup o instruciune PUSH i incrementat dup o instruciune POP), altele din partea de jos a stivei. Microprocesoarele utilizeaz n mod uzual registre de 16 sau 32 de bii pentru operaii de tipul PUSH sau POP. Unitatea de control Principalul scop al unitii de control este acela de a citi i decoda instruciunile din memoria program. Pentru executarea unei instruciuni, unitatea de control acceseaz blocurile unitii logice i aritmetice, pe baza op-codurilor coninute n registrul instruciunii. Op-codurile definesc operaiile ce sunt realizate prin intermediul unitii de control cu scopul execuiei unei instruciuni. Unitatea de control interpreteaz coninutul registrului instruciunii i apoi rspunde la instruciune prin generarea unei secvene de semnale de activare. Aceste semnale activeaz blocurile logice ale ALU pentru realizarea operaiei dorite. Unitatea de control genereaz semnalele de control, care constituie ieiri ctre alte elemente ale microcalculatorului prin intermediul magistralei de control. De asemenea, unitatea de control ia msurile necesare ca rspuns la semnalele de control de pe magistrala de control ce provin de la alte elemente ale microcalculatorului. n funcie de tipul microprocesorului, semnalele de control pot varia. Totui, exist o serie de semnale specifice majoritii microprocesoarelor: RESET atunci cnd pinul de intrare este n starea HIGH sau LOW (n funcie de microprocesor), numrtorul program este ncrcat cu o adres predefinit specificat de productor. De exemplu, la P 80486, dup o reiniializare (reset) hardware,

numrtorul program este ncrcat cu FFFFFFF016. Aceasta nseamn c instruciunea stocat n memorie la adresa FFFFFFF016 este executat prima. READ / WRITE ( R / W ) starea acestei linii transmite elementelor microcalculatorului ori de cte ori microprocesorul realizeaz o operaie de tipul READ sau WRITE. Un semnal HIGH pe linie indic o operaie de tipul READ, iar un semnal de tipul LOW indic o operaie de tipul WRITE. Unele microprocesoare au pini separai READ i WRITE. READY - este un semnal de intrare pentru microprocesor i este folosit de dispozitivele lente (memorie i porturi de I/O) pentru a ctiga un timp suplimentar la transferul sau recepia datelor de la microprocesor. Semnalul este un semnal activ pe LOW. Atunci cnd microprocesorul selecteaz un echipament lent, echipamentul trece pinul READY n starea LOW. Microprocesorul rspunde prin suspendarea tuturor operaiilor interne i intr n starea WAIT. Atunci cnd dispozitivul este gata de a transmite sau recepiona date, nltur semnalul READY. Cerere de ntrerupere ( INT sau IRQ ) Dispozitivele externe de I/O pot ntrerupe microprocesorul prin intermediul acestui pin. Cnd semnalul este activat prin dispozitivele externe, microprocesorul sare la un program special numit: rutin de deservire a ntreruperii. Programul este n general scris de ctre utilizator pentru a realiza sarcini pe care dispozitivul ce solicit ntreruperea vrea s le realizeze microprocesorul. Dup executarea acestei rutine, microprocesorul se ntoarce la programul principal ce era executat nainte de apariia ntreruperii. Unitatea logic i aritmetic Unitatea realizeaz toate manipulrile de date, cum ar fi operaiile aritmetice i logice din interiorul microprocesorului. Dimensiunea unitii este n conformitate cu lungimea cuvntului microcalculatorului (un microprocesor pe 32 de bii va avea o unitate de 32 de bii). n mod uzual, ALU realizeaz urmtoarele funcii: Adunare binar i operaii logice Gsirea complementului fa de 1 a datelor Deplasare sau rotaie spre dreapta sau spre stnga cu transport a coninutului unui registru cu scop general. Pentru exemplificare se prezint n figura de mai jos structura intern a microprocesorului Intel 8086:

AX Regitrii generali BX CX DX

AH BH CH DH Ali regitrii generali

AL BL CL DL

20 ALU pentru calculul adreselor

Registre segment pe 16 bii Pointerul de instruciuni

Controlul logic al magistralei

Pointer la stiva

Magistrala de date Registrul de instruciuni Unitatea de control ase instruciuni sunt puse n coada de ateptare n memoria FIFO

Regitrii temporari

ALU pentru operaii aritmetice i logice Registru de stare

Microprocesorul I8086 are o structur intern divizat n dou uniti funcionale: Unitatea de interfa a magistralei (BIU) Unitatea de execuie (EU) Unitatea de interfa realizeaz conectarea microprocesorului la memoria extern i cipurile de I/O. Cele dou uniti (BIU i EU) funcioneaz independent. Unitatea de interfa citete (preia) instruciuni i scrie sau citete date la sau de la memorie i porturile de I/O. EU execut instruciuni ce au fost deja preluate de BIU. BIU conine registre segment, pointer al instruciunii (IP), registre de ateptare ale instruciunii i un circuit de control al magistralei/ de generare a adreselor.

Procesorul I8086 folosete memoria segmentat. Memoria principal de 1MB este mprit n 16 segmente de cte 64 KB fiecare. Adresele pe 20 de bii sunt generate n unitatea de interfa a magistralei prin intermediul unitii logice i aritmetice, prin utilizarea unui pointer al instruciunii pe 16 bii i un registru segment de 16 bii. Segmentarea memoriei este util n sistemele cu timp-partajat, atunci cnd civa utilizatori partajeaz un microprocesor. Segmentarea permite comutarea, cu uurin, de la un utilizator la altul prin schimbarea coninutului registrului segment. Logica magistralei de control a BIU genereaz toate semnalele magistralei de control, cum ar fi, semnale de citire sau scriere pentru memorie i porturile de I/O. Registrul de instruciuni al BIU const dintr-o memorie de tipul FIFO (primul intrat - primul ieit), n care pn la ase octei ai instruciunii sunt citii nainte de la memoria extern, astfel nct timpul de execuie al instruciunii s creasc. Unitatea de control din EU traduce instruciunile pe baza coninutului registrelor instruciunii din BIU. Unitatea de execuie conine registre generale pe 16 bii (AX, BX, CX, DX). Fiecare dintre acestea sunt mprite n registre de 8 bii (AH, AL,.). Registrul BX poate fi utilizat i pentru a pstra adresa ntr-un segment. Unitatea de execuie conine de asemenea un registru al strii. Unitatea logic i aritmetic din EU realizeaz operaiile aritmetice i logice. Structura intern a microprocesoarelor pe 32 i 64 de bii Odat cu apariia microprocesoarelor pe 32 de bii s-a implementat conceptul de pipelining n care aducerea instruciunilor i execuia ciclurilor se suprapun. Metoda permite pregtirea simultan pentru execuie a uneia sau mai multor instruciuni, n timp ce o alt instruciune este executat. De asemenea, s-a trecut la operarea simultan pe cuvinte de 32 de bii, reprezentnd instruciuni diferite sau pri ale unei singure instruciuni, precum i introducerea unor concepte dintre care amintim: managementul memoriei, tehnicile memoriei virtuale, etc. Acestea permit programatorilor s scrie programe ce sunt mult mai mari dect acelea care ar putea s ncap n memoria principal (programele sunt stocate pe un dispozitiv secundar, cum ar fi o unitate de disc, iar poriuni din acel program sunt schimbate n memoria principal, dac acest lucru este necesar). Cipurile microprocesoarelor pe 32 de bii conin i un circuit de segmentare. Cu ajutorul acestora, blocuri de cod numite segmente, ce corespund modulelor unui program i care au diferite dimensiuni stabilite de programator sau compilator, sunt schimbate. Exist i o metod alternativ la segmentare, i anume paginarea. Diferena dintre cele dou este aceea c n cazul paginrii modulele au aceeai dimensiune. Aritmetica n virgul mobil este implementat n cazul acestor microprocesoare prin intermediul unui procesor n virgul mobil. La microprocesoarele precedente aritmetica n virgul mobil era implementat soft prin intermediul unei subrutine. Schemele de management a memoriei (sau caching) sunt utilizate cu scopul de a minimiza timpul de acces pentru majoritatea instruciunilor. Memoria cache este inclus pe cipul microprocesorului. De obicei, microprocesoarele pe 32 de bii sunt procesoare superscalare. Acest lucru nseamn c ele pot executa mai mult de o instruciune ntr-un ciclu de ceas, putnd fi astfel folosite n sisteme de operare multitasking. Unele microprocesoare pe 32 de bii implementeaz o caracteristic de predicie a sectoarelor multiple. Acest lucru permite microprocesorului s anticipeze

salturile din fluxul instruciunii. De asemenea, microprocesoarele pot determina secvena optimal a execuiei instruciunii, prin urmrirea instruciunilor de decodare i determinarea momentului n care instruciunile sunt pstrate sau sunt executate. Microprocesoarele pe 64 de bii includ toate caracteristicile microprocesoarelor pe 32 de bii, iar, n plus, au uniti de virgul mobil i magistrale de adrese i date mai mari. n mod uzual microprocesoarele pe 64 de bii pot executa 4 instruciuni la un ciclu de ceas. Microprocesorul Intel 80386 Microprocesorul Intel 80386 este primul microprocesor pe 32 de bii al firmei Intel, fiind bazat pe 8086. Microprocesorul 80386 conine magistrale separate interne i externe de 32 de bii, precum i 8 registre generale pe 32 de bii. Procesorul poate mnui date pe 8, 16 i 32 de bii. Are pini separai de adrese i date i poate genera o adres fizic de 32 de bii. Poate adresa pn la 4GB de memorie fizic i 64TB de memorie virtual. Cipul microprocesorului are 132 de pini i este proiectat folosind tehnologia HCMOS III. Datorit caracteristicii de pipeling , microprocesorul poate realiza n paralel funciile de aducere, decodare, execuie i management a memoriei. Managementul memoriei i protecia hard traduce adresele logice n adrese fizice i ofer reguli de protecie necesar mediului multitasking. Principalele diferene dintre 8086 i 80386 sunt adresele i datele de 32 de bii, paginarea i managementul memoriei. Arhitectura intern a lui 80386 include cteva uniti funcionale ce opereaz n paralel. Operaia este cunoscut sub numele de procesare ramificat (pipelined processing). Aducerea, decodarea, execuia, managementul memoriei i accesul la magistral sunt realizate simultan. Unitile funcionale ale microprocesorului 80386 sunt: Unitatea de interfa a magistralei (BIU) Unitatea de execuie (EU) Unitatea de segmentare Unitatea de paginare Unitatea de interfa a magistralei realizeaz funcii similare cu cea a microprocesorului 8086. Unitatea de execuie proceseaz instruciunile din coada instruciunilor. Conine o unitate de control i o unitate a datelor. Unitatea de control conine microcod i hard paralel pentru nmuliri, mpriri i calculul adresei efective ct mai rapid posibil. Unitatea de date include o unitate logic i aritmetic, 8 registre generale, i un deplasator pe 64 de bii pentru a realiza deplasri multiple ale biilor ntr-un singur ciclu de ceas. Unitatea de date efectueaz operaiile solicitate de unitatea de control. Unitatea de segmentare translateaz adresele logice n adrese liniare la solicitarea unitii de execuie. Adresele liniare sunt trimise la unitatea de paginare. Prin intermediul mecanismului de paginare, microprocesorul traduce adresele liniare n adrese fizice. Dac paginarea nu este activat, adresa fizic este identic cu adresa liniar. 80386 nu conine pe cip memorie cache. Se poate ns realiza o interfaare ntre microprocesor i o memorie cache extern prin intermediul unui cip controller al memoriei cache.

Pinii externi ai microprocesorului Pinii externi ai microprocesorului pot fi grupai n urmtoarele categorii: 1. Pini pentru semnalele de adres 2. Pini pentru semnale de date 3. Pini pentru semnale de comand 4. Pini pentru semnale de ntrerupere 5. Pini pentru semnale de arbitrare a magistralei 6. Pini pentru alimentare i ceas 7. Pini pentru semnale de stare 8. Pini pentru alte tipuri de semnale Pinii externi ai microprocesorului I8086 Microprocesorul I8086 are 40 de pini, muli dintre acetia avnd funcii multiple. Microprocesorul poate fi configurat s lucreze n dou moduri: modul minim, atunci cnd pinul MN / MX este n starea HIGH (acest mod este utilizat pentru sistemele cu un singur procesor) modul maxim, atunci cnd pinul MN / MX este n starea LOW (se folosete pentru sistemele cu mai multe procesoare).

Semnificaia pinilor este urmtoarea: AD 0 AD15 - 16 linii de adres i date multiplexate n timp. n timpul primei perioade de ceas (microprocesorul are 4 perioade de ceas: T1 pn la T4) a unui ciclu de acces la magistral, aceste linii conin cei mai puin semnificativi 16 bii de

adres. n timpul celorlalte perioade de ceas, aceste linii sunt utilizate ca linii de date. A16 / S 3 A19 / S 6 - 4 linii de adres i stare multiplexate n timp. n timpul primei perioade de ceas, aceste linii conin cei mai semnificativi 4 bii de adres (A16 A19). Ele formeaz mpreun cu liniile A0 A15 o adres pe 20 de bii. n celelalte perioade de ceas, aceste 4 linii conin informaie de stare (S3 S6). S 3, S 4 - specific tipul registrului segment utilizat pentru adresare (furnizeaz biii de adres pentru determinarea segmentului de memorie utilizat).

S4 0 0 1 1

S3 0 1 0 1

Segment utilizat Extra Segment Stack Segment Code Segment Data Segment

S 5 - reflect starea fanionului de ntreruperi al microprocesorului (S5 =IF). S 6 - indic ocuparea magistralelor de ctre U.C. (unitatea central). Aceast linie este n starea LOW (0) dac microprocesorul controleaz magistrala sistem i va comuta n timpul unui ciclu HOLD, cnd microprocesorul cedeaz controlul magistralelor unui alt circuit. BHE / S 7 - n timpul primei perioade de ceas a execuiei unei instruciuni aceast linie este utilizat ca BHE (Bus High Enable). BHE 0 n timpul secvenei de citire, scriere sau acceptare a ntreruperii, n care datele trebuie transferate pe cei 8 bii mai semnificativi ai magistralei de date D15 D8 - Acest semnal este utilizat mpreun cu linia de adrese A0 pentru a selecta blocurile de memorie (determin tipul transferului).

BHE
0 0 1 1

A0

0 1 0 1

Se transfer un cuvnt pe 16 bii Se transfer un octet pe D15-D8 Se transfer un octet pe D7-D0 Nu are loc transfer

RD - semnal de ieire, activ n starea LOW - utilizat pentru citirea datelor dintr-o locaie de memorie sau de la un dispozitiv de tip I/O. READY - semnal de intrare, care indic faptul c memoria sau dispozitivul I/O selectat este gata (pregtit) s realizeze operaia de transfer a datelor. Acest semnal este furnizat de generatorul de ceas I 8284, pe baza semnalelor asincrone RDY1 sau RDY2 . Dac linia READY este n starea LOW, 8086 va intra n starea de ateptare (WAIT) pn cnd semnalul READY trece n starea HIGH. TEST - este un semnal de intrare, testat n timpul execuiei instruciunii WAIT. La execuia unei instruciuni WAIT, microprocesorul 8086 citete starea liniei TEST : dac aceasta este 0, execuia continu; dac nu, microprocesorul intr ntr-o stare de repaus ("Idle") pn la trecerea n 0 a liniei TEST . INTR - linie de intrare pentru cererile de ntrerupere, testat de microprocesor n ultima perioad de ceas a fiecrei instruciuni. Dac bitul de activare a ntreruperilor este n 1 i INTR este n starea HIGH, atunci microprocesorul 8086 va executa o secven de acceptare a ntreruperii i transfer controlul rutinei corespunztoare de

tratare a ntreruperii. n caz contrar, microprocesorul trece la execuia urmtoarei instruciuni. NMI - cerere de ntrerupere nemascabil (linie de intrare). Este activ pe tranziia pozitiv a semnalului (de la LOW la HIGH ), iniiind ntreruperea la sfritul instruciunii curente. RESET - semnal de iniializare, generat de circuitul de ceas 8284. Trebuie s fie activ (n 1) cel puin 4 perioade de ceas. ntrerupe orice activitate a microprocesorului, acesta relundu-i activitatea cnd RESET trece n zero. HOLD - semnal de intrare, activ pe 1, produs de logica extern, prin care se solicit microprocesorului trecerea n starea HOLD, stare n care microprocesorul cedeaz controlul magistralelor controllerului DMA (Direct Memory Access). Microprocesorul trece n starea HOLD dup terminarea ciclului main curent, confirmnd aceasta prin semnalul HLDA. HLDA - acceptarea cererii de HOLD - este un semnal de ieire, generat de microprocesor, prin care se confirm acceptarea transferului DMA. WR - semnal de ieire, utilizat n operaiile de scriere n memorie sau ntr-un port I/O. M / IO - semnal de ieire, utilizat pentru discriminare ntre operaiile de acces (citire sau scriere) la memorie ( M / IO 1 ) sau la porturi I/O ( M / IO 0 ). DT / R - semnal de ieire utilizat pentru comanda sensului transferului datelor prin circuitele 8286/8287. Dac DT / R 1 , datele sunt plasate de microprocesor pe magistrala sistem. Daca DT / R 0 , datele de pe magistrala sistem sunt preluate (recepionate) de microprocesor. DEN - este utilizat pentru activarea transferului prin circuitele 8286/8287, sensul transferului fiind dat de semnalul DT / R . ALE - este activ n starea T1 a fiecrui ciclu de acces la magistrale (n timp ce o adres valid de memorie este prezent pe magistrala de adrese). Este utilizat pentru memorarea adresei de pe liniile AD0 AD15, A16/S3 A19/S6 i a semnalului BHE/S7 pentru demultiplexarea magistralelor de adrese/date i adrese/stare. INTA - semnal de ieire, activ pe 0, prin care microprocesorul confirm acceptarea unei cereri de ntrerupere. RQ / GT i (i = 0, 1) - linii de tip cerere/rspuns, utilizate pentru preluarea accesului la magistrala local de ctre alte dispozitive master, la sfritul ciclului curent al procesorului. LOCK - semnal de ieire - indic faptul c ali masteri de magistral nu vor obine controlul asupra magistralelor atta timp ct LOCK = 0. Semnalul LOCK este activat de instruciunea cu prefixul "LOCK" i rmne activ pn cnd urmtoarea instruciune este extras din irul de ateptare. S 2, S 1, S 0 - semnale de stare, utilizate pentru identificarea ciclului pe magistral. QS i (i = 0, 1) - indic starea cozii (irului) de instruciuni a microprocesorului 8086.

Pinii externi ai microprocesorului I80386


Microprocesorul I80386 are 132 de pini dispui ntr-un format de tipul PGA (Pin Grid Array). I80386 are 20 de pini de alimentare i 21 de pini de mas. Prezena acestor pini multipli are ca efect reducerea zgomotului. CLK 2 furnizeaz semnalul de ceas pentru microprocesor. Ceasul este divizat cu 2 pentru asigurarea i a ceasului utilizat

Memoria sistemelor cu microprocesoare ntr-un sistem cu microprocesor, memoria este utilizat pentru stocarea informaiilor. Abilitatea de a pstra datele i dup ce alimentarea a fost oprit, mparte memoria n dou categorii: RAM (Random Access Memory) memorie volatil i ROM (Read Only Memory) memorie nevolatil. Memoriile sunt proiectate sub forma unor cipuri. n interiorul fiecrui cip, exist un numr mare de celule (n funcie de capacitatea memoriei, acest numr ajunge la ordinul milioanelor), ce au rolul de a stoca bii (4, 8, 16, 32 sau 64 de bii). Celulele sunt formate din bistabile, cu dou ieiri: 0 sau 1. Accesarea oricrei locaii de memorie, n acelai moment de timp, oriunde sar gsi aceasta n memorie, poart numele de accesare aleatoare a memoriei sau RAM. Indiferent dac este volatil sau nu, toat memoria, este astzi proiectat s suporte acest tip de accesare. Pentru o mai bun delimitare, memoriile pot fi mprite n memorii de tipul citire/scriere i memorii doar pentru citire. Accesarea memoriei Fiecare locaie din memorie este specificat printr-un numr, ce formeaz o adres.

Pentru accesarea celulei, este necesar aplicarea adresei binare la decodificatoarele de linie i coloan. n momentul n care adresa 0110 este aplicat, prima parte a adresei 01 este aplicat decodificatorului de linie, iar cea de-a doua parte este aplicat decodificatorului de coloan. Decodificatoarele sunt circuite logice, care pe baza adresei unei locaii sunt capabile s comute ctre linia i coloana indicat prin adres. Aa cum s-a precizat n cursurile anterioare, numrul de locaii ce pot fi adresate depinde de numrul de bii ce formeaz o adres (2n = numrul de locaii). Organizarea memoriei este determinat de: numrul de locaii x numrul de bii stocai n fiecare locaie. Prin urmare, se vor ntlni notaii de tipul: 16 x 1, 16 x 8, 1M x 1, etc. Memoria RAM Cipurile RAM pot fi proiectate n dou forme diferite: SRAM (RAM static) i DRAM (RAM dinamic). Principalele semnale folosite de ctre cipurile de memorie pot fi grupate n urmtoarele categorii:

magistral de adrese utilizat pentru selectarea unei locaii de pe cipul de memorie. Semnalele pot fi multiplexate (la DRAM) sau nemultiplexate (la SRAM). magistral de date utilizat pentru transferul datelor de la i spre cipul de memorie. n unele situaii, cipul de memorie folosete pini separai pentru datele de intrare i datele de ieire, n alte situaii se folosete un singur set de pini, iar controlul direciei datelor este realizat prin intermediul semnalului de selectare a cipului ( CS ), a pinului de citire/scriere ( W / R ) i a pinului de activare a ieirii ( OE ). Selectarea cipului poate fi considerat ca un pin de adres suplimentar ce este utilizat pentru selectarea unui anumit cip dintr-o mulime de dispozitive de memorie. Semnalele de adres ce sunt utilizate pentru selectarea cipului sunt, n mod normal pinii de rang nalt.

Semnale de control i semnale de tipul citire/scriere memoriile de tipul RAM au aceste semnale pentru a indica tipul ciclului. Semnalele de control sunt utilizate n cazul memoriilor cu magistrale de adrese multiplexate. DRAM-urile se gsesc cu precdere la PC-uri i sistemele integrate (embedded), datorit necesarului mare de memorie la preuri sczute. La majoritatea tehnologiilor de fabricaie a memoriei, costul per bit este dependent de doi factori: numrul de tranzistori utilizai pentru stocarea fiecrui bit de date i tipul asamblrii. DRAM asigur un cost sczut, deoarece utilizeaz o singur celul tranzistoare pentru a stoca fiecare bit de date (elementul de stocare a datelor este un condensator, a crui tensiune reprezint un 0 sau 1 binar ce este buferat de un tranzistor). Termenul dinamic din definiia DRAM-ului se refer la necesitatea constant de mprosptare a datelor stocate (operaie realizat de un circuit de control la intervale de aproximativ 2 ms). Circuitul logic al unei memorii DRAM de dimensiune 16K x 8 prezint o configuraie RAM sub forma unei matrici cu 128 de linii i 128 de coloane (poate stoca 16384 octei de informaie (16 x 1024)). Pentru aceast configuraie sunt necesare 14 linii de adres sau se pot multiplexa linii de adres, desigur n acest caz fiind nevoie de un circuit de gestionare a liniilor partajate. Liniile de adres A0 A6 sunt utilizate pentru identificarea liniei, prin intermediul semnalului RAS (activ la trecerea din HIGH n LOW), iar liniile A7 A13 pentru identificarea coloanei prin intermediul semnalului CAS (activ la trecerea din HIGH n LOW). Dup aceste operaii, celula de memorie este blocat i

pregtit pentru operaii de citire/scriere. Dac semnalul WE 1 , datele pot fi citite de la liniile de ieire D0 D7 , iar dac WE 0 datele pot scrise la liniile de intrare

D0 D7 .

Operaiile de scriere i citire pentru o memorie DRAM pot fi sintetizate conform urmtoarei diagrame:

SRAM-urile nu necesit operaie de mprosptare a datelor, acestea rmn pe cipul de memorie atta timp ct acesta este alimentat. n plus pot fi proiectate s suporte operaii la putere mic, fiind din acest motiv preferate DRAM-urilor. Totui, celulele SRAM conin mai muli tranzistori i fiecare celul folosete alimentare doar atunci cne este comutat. Interfaa memoriei SRAM este mai simpl dect cea a memoriei DRAM i const din magistral nemultiplexat de adrese i magistrala de date. SRAM-urilor se folosesc frecvent pentru memoriile cache ale procesoarelor rapide, ca memorie principal n echipamentele portabile, unde consumul mic este esenial, precum i pentru microcontrollere. Schema logic a unui circuit SRAM de 4K x 8 conine o matrice ce poate stoca 4096 de octei de informaii. Pentru adresarea sunt necesare 12 linii de adres ( A0 A11 ). Se remarc, de asemenea prezena a 8 linii de intrare i ieire ( D0 D7 ), a unui semnal de selecie a circuitului ( CS ) i a unui semnal de activare a scrierii ( WE ). SRAM-ul este format sub forma unei matrici de 64 de linii i 64 de coloane, cu adresele A0 A5 pentru identificarea liniei i cu A6 A11 pentru identificarea coloanei. Dac CS 1 , memoria este n repaus, dac CS 0 i WE 0 , un octet de date este scris prin intermediul liniilor de intrare ( D7 D0 ) la adresa indicat prin liniile de adres ( A0 A7 ). Dac CS 0 i WE 1 , un octet de date este citit de la liniile de ieire ( D7 D0 ) la adresa indicat de liniile de adres ( A0 A7 ).

Operaiile de scriere i citire pentru o memorie SRAM pot fi sintetizate conform urmtoarei diagrame:

Memoria ROM Memoria ROM este o memorie nevolatil, utilizat pentru stocarea permanent a datelor, n mod uzual prin intermediul unei surse de tensiune (baterie) ce este separat de alimentarea principal a plcii. Tipul de date stocat pe un ROM este, n general, softul corespunztor dispozitivului. Coninutul ROM-ului poate fi, n general, doar citit de ctre procesorul master, totui, n funcie de tipul ROM-ului, procesorul master poate fi capabil s tearg sau s modifice datele de pe ROM. Un circuit ROM primete la intrare adrese linie i coloan. Fiecare adres linie i coloan, reprezint o celul n care se poate stoca un bit (0 sau 1), n funcie de tensiunea aplicat celulei. Pentru determinarea celulei selectate se folosete un decodificator de adrese. Notaia utilizat pentru a desemna o memoria ROM folosete o combinaie de tipul: numr de adrese x numr de bii stocai la fiecare adres. Ex.: 16K x 8 ROM desemneaz o memorie ROM ce are 16 x 210 adrese, la fiecare adres fiind stocat un octet de date. Citirea unei memorii ROM se face pe frontul negativ al semnalului CE (trecerea din HIGH n LOW), atunci cnd se permite datelor stocate la liniile de ieire ( D0 D7 ) s fie citite. Citirea datelor se face dup ce biii adresei corespunztoare unei locaii de memorie au fost recepionai. Cele mai ntlnite tipuri de memorii ROM sunt: MROM (ROM mascabil) - biii de date sunt programai permanent ntr-un microcircuit de ctre productor. Procesul de fabricaie folosete tranzistori MOS (NMOS, CMOS). OTP sau OTPRom (ROM programabil o singur dat) acest tip de ROM poate fi programat (permanent) doar o singur dat de ctre programator prin intermediul unui ROM burner. EPROM (ROM programabil prin tergere) acest tip de ROM permite tergerea sa de mai multe ori, prin utilizarea unui dispozitiv ce emite ultraviolete de intensitate mare i perioad mic, asupra unei ferestre transparente de pe cipul de memorie. EEPROM (ROM programabil prin tergere electric) ca i EPROM, acest tip de memorii pot fi terse de mai multe ori. Numrul de tergeri i refolosiri depinde de tipul EEPROM-ului. Spre deosebire de EPROM, EEPROM poate fi scris i ters, la nivel de octet, fr utilizarea unui dispozitiv special. Programatorul poate accesa i modifica memoria.

Flash este o versiune mai ieftin i mai rapid a memoriei de tipul EEPROM. Memoria Flash poate fi scris i tears n blocuri sau sectoare (blocuri de octei). Ca i EEPROM, Flash-ul poate fi ters electric. Utilizarea diverselor tipuri de ROM se poate face, de exemplu, de-a lungul unui proces de dezvoltare. Pentru nceput, se pot utiliza memorii EPROM pentru testarea soft-ului i hard-ului. Memoriile OTP pot fi folosite la finalul procesului de dezvoltare pentru diferite versiuni ale codului. n general, pentru dezvoltarea de sisteme complexe i scumpe se folosesc memorii Flash, posibil n combinaie cu alte tipuri de memorii ROM cum ar fi MROM bootabil. Pinii externi ai modulelor de memorie 1. Pinii externi ai memoriei RAM n figura urmtoare se prezint pinii externi ai unei memorii de tipul RAM (SRAM i DRAM).

Semnificaia pinilor este urmtoarea: 1. Pentru cipul SRAM - I / O0 I / O8 - pini pentru scrierea i citirea datelor - A0 A16 - linii de adres
- WE - activarea scrierii, semnal utilizat pentru controlul fluxului de date (scriere WE 0 sau citire date WE 1 ) - CS 1 , CS 2 - pini pentru selecia circuitului ( CS 1 - activ pe LOW i CS 2 activ pe HIGH). 2. Pentru cipul DRAM - RAS i CAS - semnale de strobare pentru liniile i coloanele adreselor. n acest caz, pentru a adresa un 1Mega este nevoie de multiplexare. Dac RAS 0 , atunci jumtatea inferioar a adreselor este ncrcat n linii, dup care RAS 1 . Dac CAS 0 , atunci restul adreselor este ncrcat n coloane. - Write - determin un ciclul de citire sau de scriere. - Din , Dout - pini pentru intrarea i ieirea datelor (n acest caz se transfer un bit).

Determinarea numrului de Koctei de memorie din fiecare seciune se face conform relaiei:
1024

Adresa de inceput a blocului de memorie urmatorh Adresa de inceput a blocului de memorie curenth

Exemplu de conectare: Interfaa microprocesorului 8086 cu memoria Conectarea microprocesorului I8086 ce lucreaz n modul minim, la memorie se face conform reprezentrii:

Spaiul de memorie al microprocesorului 8086 poate fi privit ca 1 M octet (dou celule consecutive coninnd date pe 16 bii) sau ca dou blocuri de 512 K octei fiecare, respectiv blocul adreselor pare i blocul adreselor impare. Blocul adreselor pare este selectat folosind linia de adrese A0, iar blocul adreselor impare folosind linia BHE. Adresa unei locaii din cadrul unui bloc de date se formeaz utiliznd liniile de adrese A1 A19. Blocul de adrese pare este conectat la magistrala de date D7 D0, iar blocul de adrese impare la magistrala D15 D8.

Cuvintele constnd din octei consecutivi pot fi aliniate fie la adrese pare, fie la adrese impare. Microprocesorul furnizeaz dou semnale, BHE i A0, pentru a selecta o locaie par, o locaie impar, sau ambele. Pentru operanzi de tip adrese sau date, octetul mai puin semnificativ al cuvntului va fi stocat n locaia de adres mai mic, iar octetul mai semnificativ n urmtoarea locaie de memorie.

Pentru performane maxime, datele de 16 bii trebuie plasate cu octetul mai puin semnificativ ntr-o adres par (aliniate la adrese pare). De exemplu, un cuvnt de 16 bii amplasat la adresele (2k, 2k + 1) este accesat ntr-un singur ciclu de magistral. n caz contrar (pentru aliniere la adrese impare) sunt necesare dou cicluri de magistral. Spre exemplu, pentru un cuvnt amplasat la adresele (2k + 1, 2k + 2) se execut urmtoarele dou cicluri de magistral: - se acceseaz octetul de la adresa impar (2k + 1) - cel mai puin semnificativ utiliznd A0 = 1 i BHE = 0; - se acceseaz octetul de la adresa par (2k + 2) - cel mai semnificativ - prin incrementarea adresei cu o unitate (A0 = 0, BHE =1). Observaie: Cu excepia micorrii performanelor (reducerii vitezei de lucru), acest dublu acces este transparent pentru programator.

Sistemul intrrilor i ieirilor Componentele intrare/ieire (I/O) de pe o plac sunt responsabile pentru transferul informaiilor de la i spre placa la care dispozitivele I/O sunt conectate. Placa I/O poate conine: componente de intrare ce aduc informaia de la un dispozitiv de intrare ctre procesor, componente de ieire ce preiau informaia de la procesor i o transmit ctre un dispozitiv de ieire, sau componente ce realizeaz ambele operaii.

Dispozitivele de intrare/ieire pot fi grupate n urmtoarele categorii: Dispozitive de reea i comunicaii Dispozitive de intrare (tastatur, mouse, telecomand) Dispozitive de ieire i grafice (ecranele tactile, monitoare, imprimante, LED-uri) Dispozitive de stocare (controllere optice de disc, controllere magnetice de disc) Dispozitive de depanare (BDM mod de depanare n background, JTAG metod de accesare a memoriei i a resurselor procesorului fr ca vreo aplicaie s ruleze pe acestea, port serial, port paralel) Dispozitive variate i de timp real (timere/numrtoare, CAN-uri, CNAuri, comutatoare). Organizarea hard a dispozitivelor de I/O poate include cteva uniti, cum ar fi: Mediul de transmisie un mediu wireless sau cablat, conectnd dispozitivul de I/O la plac, pentru comunicaiile de date. Portul de comunicare modul n care se conecteaz la plac mediul de transmisie (n cazul semnalului wireless, acesta recepioneaz un semnal wireless). Interfa de comunicare realizeaz administrarea comunicaiilor de date dintre procesor i dispozitivele de I/O (controller-ul I/O), fiind responsabil pentru codificarea i decodificarea datelor. Aceast unitate poate fi integrat la nivelul procesorului sau poate fi o unitate separat. Un controller de I/O - practic un procesor slave ce conduce dispozitivele de I/O. Magistrale de I/O conecteaz procesorul de placa I/O. Procesor integrat joac rol de procesor master pentru ntreaga arhitectur.

Arhitectura actual a sistemului intrrilor i ieirilor ce presupune implementarea pe o plac integrat, fr utilizarea conectrilor i a porturilor, sau utilizarea unui controller al dispozitivelor de I/O, este dependent de tipul dispozitivului la care acesta este conectat sau localizat pe placa integrat. Desigur, factori cum ar fi flexibilitatea i fiabilitatea, joac un rol important n proiectarea sistemului intrrilor/ieirilor.

Plcile de I/O pot fi grupate i n funcie de modul n care transmit/recepioneaz datele, astfel: seriale, paralele sau combinate. Dispozitive de I/O seriale Plcile de I/O ce transmit i recepioneaz date n mod serial sunt construite din componente la care datele sunt stocate, transmise i recepionate bit cu bit (un bit la un moment de timp). Comunicaiile seriale includ n cadrul sistemului de I/O un port serial sau o interfa serial. Interfaa serial administreaz transmisia i recepia serial a datelor ntre procesorul master i dispozitivul de I/O sau controller-ul acestuia. Interfaa include buffere de recepie i transmisie pentru stocarea, codificarea sau decodificarea datelor. Structurile de transmisie i recepie serial a datelor difer prin direcia datelor, precum i prin procesul de recepie/transmisie. Datele pot fi transmise ntre dou dispozitive n unul din urmtoarele moduri: ntr-o singur direcie, n ambele direcii, dar la momente diferite, deoarece mpart aceeai linie de transmisie, i simultan n ambele direcii. Comunicaia serial a datelor utilizeaz o structur simplex (fluxurile de date pot fi doar transmise, i deci recepionate ntr-o singur direcie). O structur half duplex este aceea n care fluxurile de date pot fi transmise i recepionate n orice direcie, dar numai ntr-o singur direcia la un anumit

moment de timp. O structur full duplex este aceea ce permite transmisia i recepia datelor simultan n orice direcie.

Transferul datelor poate fi fcut n mod sincron (datele se transmit ntr-un flux continuu la intervale regulate date de ceasul procesorului) sau n mod asincron (transferul datelor se face intermitent la intervale aleatoare). n transferul asincron, datele sunt transmise, sunt stocate i modificate n interiorul buffer-ului interfeei seriale de transmisie. Interfaa serial a transmitorului mparte fluxul de date n pachete (de regul 4 sau 8 bii per pachet). Pachetele sunt ncapsulate n frame-uri, pentru a fi transmise separat. Frame-urile sunt pachete modificate de interfaa serial pentru a include un bit de START i un bit de STOP. n unele cazuri, poate fi adugat i un bit de paritate. Un exemplu de interfa serial asincron este UART (receptor-transmitor asincron universal).

n modul sincron de transmisie, nu exist bii de START sau STOP, adugai la fluxul de date i nici perioad de repaus (Idle). n schimb, vitezele de transmisie i recepie a datelor trebuie s fie sincronizate. n modul sincron exist un singur ceas comun pentru recepie i transmisie. Un exemplu de interfa serial sincron este SPI (interfa periferic serial).

Porturile seriale sunt interfee de comunicaie seriale (COM-uri) utilizate n general pentru a conecta dispozitivele de I/O de pe plac cu cele externe. Interfaa serial realizeaz, de asemenea conversia datelor, ce vin la/de la portul serial, n date pe care circuitul logic al procesorului le poate prelucra. Dispozitive de I/O paralele Componentele ce transmit date n paralel sunt dispozitive ce pot transfera mai muli bii simultan. Interfaa paralel administreaz transmisia i recepia paralel a datelor ntre procesor i alte dispozitive de I/O. Aceasta este responsabil i pentru decodificarea biilor de date recepionai la pinii portului paralel, precum i pentru codificarea datelorsau transmise de procesor ctre pinii portului paralel. Interfaa include buffere de recepie i transmisie pentru stocarea i manipularea datelor ce sunt transferate. Din punctul de vedere al direciei de transmitere a datelor, dispozitivele de I/O paralele utilizeaz cele trei moduri: simplex, half-duplex i full-duplex. De asemenea, porturile paralele pot transmite datele sincron sau asincron. Capacitatea de transmitere a datelor n acest caz este mai mare dect n cazul dispozitivelor de I/O seriale, datorit transmiterii sau recepiei simultane a mai multor bii. Exemple de plci I/O ce transmit sau recepioneaz date paralel sunt: controllere IEEE 1284 pentru dispozitive de tipul imprimant/display-uri, porturi CRT sau SCSI (dispozitive de stocare). Transferul datelor ntre microcomputer i dispozitivele de I/O se poate realiza prin: 1. Utilizarea dispozitivelor de I/O programabile 2. Utilizarea dispozitivelor de I/O ntreruptibile 3. Utilizarea unui DMA (direct memory acces) Dispozitive de I/O programabile n acest caz microcomputerul comunic cu dispozitivul extern prin intermediul a unu sau mai porturi de I/O. Pentru anumite tipuri de dispozitive, fiecare bit al portului poate fi configurat individual fie ca intrare, fie ca ieire. Pentru alte tipuri de dispozitive, toi biii portului sunt setai ca bii de ieire paralel sau intrare paralel. Fiecare port poate fi configurat ca port de intrare sau ieire prin intermediul unor registre numite

comand sau registru de direcie a datelor. Registrul direciei datelor este un registru de ieire la care fiecare bit din port poate fi configurat ca intrare sau ieire. Un registru al direciei datelor pe 8 bii ce conine 34H, poate fi definit astfel:

Valoarea 34H (0011 0100) este trimis la ieire, prin urmare biii 0, 1, 3, 6 i 7 sunt setai ca intrri, iar biii 2, 4 i 5 ca ieiri. Microcomputerul poate trimite data ctre un dispozitiv extern, de exemplu un LED conectat la pinii 2, 4 i 5 printr-o interfa corespunztoare. Prin intermediul intrrilor definite anterior, microcomputerul poate citi starea dispozitivelor externe, cum ar fi comutatoarele. Pentru dispozitivele de I/O paralele, exist doar un singur registru al direciei datelor, cunoscut sub numele de registru comand. Un bit special din acest registru este utilizat pentru configurare tuturor biilor portului ca intrri sau ieiri.

Porturile de I/O sunt adresate folosind tehnicile standard I/O sau memorymappped I/O . Tehnica standard I/O folosete un pin de ieire (de ex. pinul M / IO ) pentru a realiza discriminarea ntre memorie i porturile de I/O. pentru lucrul cu porturile exist dou instruciuni: IN i OUT. n cazul memory-mapped, microprocesorul nu realizeaz discriminarea ntre memorie i porturi. n schimb, procesorul folosete o poriune a adreselor memoriei pentru a reprezenta porturile de I/O. Porturile de I/O sunt reprezentate ca i pri ale adreselor memoriei principale a procesorului, fiind accesate prin instruciuni de tipul MOVE caracteristice lucrului cu memoria. Dispozitive de I/O ntreruptibile Un dispozitiv de I/O ntreruptibil este un dispozitiv ce iniiaz un transfer intrare-ieire. Dispozitivul extern este conectat la un pin numit pin de ntrerupere (INT) de pe cipul procesorului. Dac dispozitivul iniiaz un transfer, atunci va activa acest pin. La activarea pinului, microcomputerul termin instruciunea curent i salveaz coninutul numrtorului program i a registrului de stare n stiv. Dup

aceste operaii, microcomputerul, ncarc o adres n numrtorul program, ctre o subrutin de deservire a ntreruperii. Acest program este scris de ctre programator. Ultima instruciune a acestui program este RETURN. Aceasta are ca efect ncrcarea numrtorului program i a registrului de stare cu valorile salvate n stiv. Exist trei tipuri de ntreruperi: ntreruperi externe, ntreruperi interne i ntreruperi soft. ntreruperile externe sunt iniiate prin intermediul pinilor de ntrerupere ai microprocesorului. ntreruperile externe pot fi la rndul lor mprite n ntreruperi mascabile i ntreruperi nemascabile. ntreruperile nemascabile nu pot fi activate sau dezactivate prin instruciuni, n timp ce pentru ntreruperile mascabile exist instruciuni pentru activarea i dezactivarea acestora. De exemplu, microprocesorul 8086 poate activa i dezactiva ntreruperile mascabile prin execuia unor instruciuni de tipul CLI (clear interrupt flag) sau STI (set interrupt flag). ntreruperile nemascabile au prioritate mai mare dect ntreruperile mascabile. ntreruperile nemascabile sunt utilizate de obicei la o ntrerupere generat de cderea tensiunii. Subrutina de deservire a ntreruperii poate fi stocat ntr-o memorie nevolatil cum ar fi o baterie de recuperare CMOS RAM. Procesorul 8086 furnizeaz o ntrerupere mascabil cu confirmare. ntreruperea este implementat prin utilizarea a doi pini: INTR i INTA . Atunci cnd pinul INTR este activat de ctre un dispozitiv extern, procesorul termin instruciunea curent, salveaz n stiv numrtorul program n stiv i genereaz un semnal de acceptare a ntreruperii ( INTA ). Ca rspuns la semnalul INTA , dispozitivul extern genereaz un numr pe 8 bii, citit de procesor i utilizat pentru a identifica subrutina de deservire a ntreruperii. ntreruperile interne sunt ntreruperi activate intern de ctre condiii excepionale cum ar fi: depiri, mpriri prin zero, sau execuia unui op-cod ilegal. Utilizatorul poate scrie o rutin de deservire pentru a indica situaia aprut, i de asemenea de a deservi ntreruperea. Majoritatea procesoarelor includ ntreruperi soft sau apelri de sistem. Instruciunile ntreruperilor soft sunt de obicei utilizate pentru apelarea sistemului de operare. DMA Accesul direct la memorie (DMA) este o tehnic ce transfer date ntre memoria microcomputerului i dispozitivele de I/O fr implicarea microprocesorului. DMA este utilizat n transferul blocurilor mari de date ntre dispozitivele periferice (de ex. hard disk) i memorie. Tehnica DMA folosete un controller DMA pentru operaiunile de transfer ale datelor. Principalele funcii ale controllerului DMA sunt: Dispozitivele de I/O solicit operaie de tipul DMA prin intermediul liniei de cerere DMA a controllerului Controllerul activeaz pinul HOLD al microprocesorului, solicitnd acestuia s elibereze magistrala Microprocesorul rspunde cu semnalul HLDA , indicnd c magistrala este dezactivat. Controllerul DMA plaseaz valoarea curent a registrelor sale interne, cum ar fi registrul adreselor i numrtorul, pe magistral, trimind n acelai timp o confirmare ctre dispozitivul periferic. Controllerul DMA termin transferul DMA. n mod uzual, un transfer de tipul DMA ncepe printr-o cerere pe linia DMA conectat la circuitul controllerului DMA. Dup secvena de semnale HOLD / HLDA / DMA ACK dintre microprocesor i controller, acesta preia controlul magistralei, controlnd datele transferate ntre RAM i dispozitivele de I/O. La terminarea transferului, controllerul ntrerupere microprocesorul prin linia INT i

- spaiu de adresare pentru memoria program de 64 Koctei; - spaiu de adresare pentru memoria de date de 64 Koctei. Observaie: Versiunea cu EPROM a lui 8051 este 8751H, iar cea fr ROM este 8031. Microcontrolerul 8052AH este o variant mbuntit a lui 8051, caracterizat prin: - 256 octei de memorie RAM intern; - 3 timere/numrtoare; - 4 surse de ntreruperi interne; - 8 Koctei de memorie ROM intern. Observaii: 1) Versiunea cu EPROM a lui 8052 este 8752BH, iar cea fr ROM este 8032AH. 2) Microcontrolerul 8052AH-BASIC este o variant a lui 8052AH cu interpretor complet BASIC n ROM-ul intern. 3) 83C51FA i, n special, 83C152 sunt variante mult mbuntite, avnd caracteristici funcionale noi ! Organizarea memoriei n dispozitivele din familia 8051 Toate dispozitivele din familia 8051 au spaii de adresare distincte pentru memoria de date i memoria program, reprezentate n fig.2.
Memorie program FFFF
H

Memorie de date FFFF


H

Externa

(2000H )
1000
H

1FFF

la 8052
H

FF 7F 00

Interna

Externa

0FFF EA=0 Externa 0000 PSEN

H H H

EA=1 Interna

0000

RD

WR

Fig. 2

PSEN - "Program Store Enable" - strob pentru validarea accesului la memoria program extern (pentru citirea acesteia). EA - "External acces" - (semnal de intrare). Dac semnalul aplicat pe pinul EA este "high", CPU execut programul din memoria ROM intern (atunci cnd adresa de memorie din numrtorul program - PC - nu depete capacitatea memoriei ROM interne - 0FFFH sau 1FFFH n cazul circuitului 8052). Dac semnalul aplicat pe pinul EA este n starea "low" se acceseaz memoria ROM extern indiferent de valoarea numrtorului program (PC). Separarea logic a memoriei de date i program permite ca memoria intern de date s fie accesat prin adrese de 8 bii care sunt mai rapid manipulate i pstrate de o unitate de prelucrare (CPU) de 8 bii. Totui sunt generate i adrese de 16 bii pentru memoria de date. Pot fi adresai pn la 64 Koctei de memorie RAM extern, utiliznd semnalele de citire/scriere, RD (Read) i WR (Write). De asemenea, pot fi utilizai pn la 64 Koctei de memorie program, primii 4K (sau 8K la 8052) fiind interni. Observaie: Memoria program extern i memoria de date extern pot fi combinate utiliznd o poart logic I pentru RD i PSEN , ieirea acestei pori fiind folosit ca strob de citire pentru memoria ROM/RAM. 2

Memoria pentru programe Dup iniializare (resetare) CPU va ncepe execuia de la locaia 0000H . O hart a prii inferioare a memoriei pentru programe, poriune rezervat tratrii cererilor de ntrerupere, este reprezentat n fig.3.
Mem. program (0033 ) H 002B H 0023 H 001BH 8 octeti 0013 H 000BH 0003 H 0000
H

Locatii
pentru intreruperi

T1 E1 T0 E0

RESET

Fig. 3

Apariia ntreruperilor determin CPU s execute un salt din programul curent la locaia de memorie unde ncepe execuia subrutinei de deservire. Sunt rezervate cte 8 locaii pentru fiecare ntrerupere: - ntreruperea extern 0, la adresa 0003H ; - ntreruperea de la Timer 0, la adresa 000BH ; - ntreruperea extern 1, la adresa 0013H ; - ntreruperea de la Timer 1, la adresa 001BH , etc. Subrutinele mai lungi pot utiliza o instruciune de salt la o adres unde se continu tratarea subrutinei respective. Primii 4 (8) Koctei de memorie program pot fi interni sau externi. Selecia se face prin conectarea pinului EA fie la VCC (+5V) fie la VSS (GND). Strobul de citire al memoriei ROM externe , PSEN , este utilizat pentru toate citirile din memoria program extern, dar nu este activat pentru citirile din memoria intern. Conectarea hardware a memoriei program externe la dispozitivele din familia 8051 se face astfel (fig.4):

8051
P1 P3

P0 EA P2 LATCH

Date

EPROM
Adrese OE

ALE PSEN

Fig. 4

ALE - "Address Latch Enable" - strob utilizat pentru memorarea informaiei de adres emise prin portul P0 ntr-un latch extern. OE - "Output Enable" - semnal utilizat pentru activarea ieirilor circuitelor de memorie EPROM. Se observ c 16 linii I/O (porturile P0 i P2) sunt dedicate funciilor de magistral n timpul ciclurilor de extragere a codurilor instruciunilor din memoria extern. Portul P0 servete ca o magistral de adrese i date multiplexat n timp. Acesta emite baitul inferior al numrtorului de program (PCL) ca adres, i apoi trece n starea de intrare, ateptnd baitul de cod din memoria program. In timp ce baitul inferior al lui PC (PCL) este valid la ieirea lui P0, semnalul ALE 3

nscrie acest bait ntr-un latch de adres extern. Portul 2 emite octetul superior al adresei (PCH), apoi PSEN activeaz ieirea EPROM-ului i octetul de cod este citit n microcontroler. Observaie: Adresele memoriei program au ntotdeauna 16 bii, chiar dac memoria program utilizat este mai mic de 64 Koctei. Memoria de date Adresele memoriei de date externe pot fi de 1 octet sau de 2 octei. Adresele de 1 bait sunt adesea utilizate n conjuncie cu una sau mai multe linii I/O suplimentare pentru a pagina memoria RAM. Un exemplu de conectare a unei memorii externe de date de 2K octei utiliznd paginarea este prezentat n fig.5.

8051 P0 cu ROM P1 intern ALE


P2 P3 RD
WR

Date LATCH

RAM
Adrese

I/O
5

biti de
pagina

WE

OE

Fig. 5

WE - "Write Enable" - semnal utilizat pentru validarea nscrierii informaiilor prezente la intrrile de date n memoria RAM. In acest caz CPU utilizeaz ROM-ul intern. Portul P0 servete ca magistral de adrese/date multiplexat n timp pentru memoria RAM, iar 3 linii ale portului P2 sunt utilizate pentru a pagina RAM-ul. CPU genereaz semnalele RD i WR necesare la accesarea memoriei RAM externe, utiliznd dou linii ale lui P3. Dac memoria program este intern, ceilali bii ai portului P2 sunt disponibili ca linii I/O. Se pot utiliza adrese pe 2 octei, caz n care octetul de adres nalt este emis la portul P2. Spaiul de memorie RAM intern este divizat n 3 blocuri: blocul inferior de 128 octei, blocul superior de 128 octei i blocul registrelor de funcii speciale (SFR - "Special Function Registers"), reprezentate n fig.6
Bloc superior (128) Bloc inferior (128)

RAM -intern FF H Accesibil prin Accesibil prin adresare adresare directa 80H indirecta 80 H 7F H Accesibil prin adresare directa SFR(128 si indirecta 00 FFH
H

Fig. 6
Blocul registrelor de funcii speciale (SFR) conine: starea porturilor, bii de control, timere/numrtoare, registre, indicatorul stivei, acumulatorul, etc. Adresele memoriei RAM interne sunt ntotdeauna pe 1 bait, ceea ce implic un spaiu de adrese de numai 256 octei. Totui, modurile de adresare pentru RAM-ul intern pot accesa 384 baii astfel: adresarea direct peste 7FH acceseaz un anumit spaiu de memorie iar adresarea indirect peste 7FH accesez un spaiu de memorie diferit. Astfel spaiul superior (128) i SFR ocup acelai bloc de adrese, dei ele sunt entiti fizice separate. Cei 128 baii din spaiul inferior al RAM-ului sunt prezeni n toate dispozitivele din familia 8051 fiind configurai ca n fig.7

7F Biti din PSW pentru selectia blocurilor de registre 11 10 01 00 30 20 18 10 08 00


H H H

2F 1F 17

H H

Spatiu adresabil la nivel de bit (adresele bitilor 0--7F )


H

H H H

H H H

4 blocuri * 8 registre (R0-R7) Valoarea de initializare (Reset) a indicatorului stivei (SP)

0F

07

Fig. 7 Primii 32 octei sunt grupai n 4 blocuri de 8 registre fiecare. Instruciunile programului apeleaz aceste registre ca R0 - R7. Doi bii din cuvntul de stare al programului ( PSW - "Program Status Word") selecteaz blocul de registre ce se utilizeaz. Aceasta permite utilizarea mai eficient a spaiului de coduri (program), ntruct instruciunile cu registre sunt mai scurte dect instruciunile care utilizeaz adresarea direct. Urmtorii 16 baii n continuarea blocurilor de registre formeaz un spaiu de memorie adresabil la nivel de bit. Setul de instruciuni al familiei 8051 include un numr mare de instruciuni la nivel de bit, i cei 128 bii din acest spaiu pot fi adresai direct prin aceste instruciuni. Adresele biilor din acest spaiu sunt 00 - 7FH . Toi baiii din spaiul inferior (128) pot fi accesai fie prin adresare direct, fie prin adresare indirect. Blocul superior (128) poate fi accesat doar prin adresare indirect. Acest bloc de RAM nu este implementat n 8051 ci n 8052AH, 83C51FA, 83C152, etc, unde este disponibil ca spaiu stiv. In acest bloc nu exist nici un spaiu adresabil la nivel de bit. Spaiul SFR include latch-urile porturilor, timere, comenzi pentru periferice, etc. Aceste registre pot fi accesate numai prin adresare direct. In general, toate microcontrolerele din familia 8051 au aceleai registre i la aceleai adrese din spaiul SFR. Totui, variantele mbuntite ale lui 8051 au registre de funcii speciale suplimentare care nu sunt prezente n 8051. 16 adrese din spaiul SFR sunt adresabile att la nivel de bait ct i la nivel de bit. Registrele de funcii speciale adresabile pe bit sunt acelea ale cror adrese se termin n 0H sau 8H . Adresele biilor din acest spaiu sunt 80-FFH (fig.8).
FFH E0H B0H A0H 90 H 80 H Acumulator
* * *
* * *

Port3
* * *

Port2
* * *

Sunt adresabile la nivel de bit: -pinii porturilor -acumulatorul -PSW,etc

Port1
* * *

Port0

Fig. 8

Conexiunile externe ale microcontrolerelor 8051 (40 de pini) Port 0: Portul 0 est un port I/O bidirecional de 8 bii, putnd suporta 8 sarcini LS TTL. Pinii portului 0 care au valoarea "1" nscris n ei, funcioneaz ca intrri de nalt impedan. Portul 0 reprezint, de asemenea, magistrala de date i adrese inferioare multiplexat, n timpul accesului la memoria extern. Port 1: Este un port I/O bidirecional de 8 bii. Bufferele de ieire ale portului 1 pot suporta 4 sarcini LS TTL. In 8052, pinii P1.0 i P1.1 servesc, de asemenea, funciunile suplimentare ale lui T2 i T2EX. T2 reprezint intrarea extern a timerului 2, iar T2EX este intrarea prin care modul "capture" al timerului 2 este iniializat. Port 2: Este un port I/O bidirecional de 8 bii. Bufferele de ieire ale portului 2 pot suporta 4 sarcini LS TTL. Portul 2 emite baitul de adres superior n timpul accesului la memoria extern care utilizeaz adrese pe 16 bii. Port 3: Este un port I/O bidirecional, pinii acestuia fiind multifuncionali, servind pentru funcii specifice familiei 8051: P3.0 - RxD - port de intrare serial; P3.1 - TxD - port de ieire serial; P3.2 - INT0 - ntrerupere extern 0; P3.3 - INT1 - ntrerupere extern 1; P3.4 - T0 - intrarea extern a timerului 0; P3.5 - T1 - intrarea extern a timerului 1; P3.6 - WR - strob de scriere n memoria extern de date; P3.7 - RD - strob de citire din memoria extern de date. Bufferele de ieire ale portului 3 pot suporta 4 sarcini LS TTL. RST - Reset - Aplicarea unui semnal de nivel nalt ("1") pe acest pin pentru dou cicluri main, n timp ce oscilatorul iniializeaz circuitul. ALE/PROG: - Address Latch Enable- semnal de ieire pentru memorarea baitului inferior de adres n timpul accesului la memoria extern. Acest pin reprezint, de asemenea, intrarea de puls a programului (PROG) n timpul programrii memoriei EPROM . PSEN - Program Store Enable - este strobul de citire al memoriei program externe. PSEN nu este activat cnd dispozitivul execut instruciuni din memoria program intern. EA /VPP: Cnd EA este n starea "high" CPU execut instruciuni din memoria program intern (cu excepia cazului n care numrtorul de program depete 0FFFh (n 805l) sau 1FFFh (n 8052). Pstrnd EA n starea "low" se foreaz CPU s execute instruciunile din memoria extern, indiferent de valoarea numrtorului program. In dispozitivele cu EPROM, acest pin este utilizat pentru alimentarea cu tensiunea de programare (VPP) n timpul programrii EPROM-ului. XTAL1, XTAL2 - pentru conectarea cristalului de cuar, sau a semnalului extern de ceas. Vcc - surs de alimentare. Vss - pinul de mas. Structura i funcionarea porturilor Fiecare din cele 4 porturi din 8051 const dintr-un latch (registrele de funcii speciale P0 P3), un driver de ieire i un buffer de intrare. Driverele de ieire ale porturilor 0 i 2, i bufferele de intrare ale portului 0, sunt utilizate n accesul la memoria extern. In acest caz, portul 0 emite baitul inferior al adresei memoriei

Cnd sunt configurate ca intrri ele sunt forate n "1", i vor genera curent cnd sunt forate n 0 din exterior. Portul 0, pe de alt parte, este considerat cu adevrat bidirecional, deoarece cnd este configurat ca intrare, acesta este flotant. Toate latch-urile porturilor din 8051 sunt nscrise cu "1" dup RESET. Dac un 0 este nscris ulterior ntr-un latch de port, acesta poate fi reconfigurat ca intrare nscriind "1" n el. Cicluri main Generatorul intern de ceas definete secvena de stri ce realizeaz ciclul main. Un ciclu main const dintr-o secven de 6 stri, notate S1 - S6. Fiecare stare este divizat n dou faze: P1 i P2; durata unei faze este egal cu o perioad a semnalului de ceas extern. Astfel, un ciclu main const din 12 perioade de ceas, deci dureaz 1s dac frecvena oscilatorului este 12 MHz. In mod normal dou extrageri de cod sunt generate n timpul fiecrui ciclu main, chiar dac instruciunea executat nu necesit acest lucru. Dac instruciunea executat (n curs de execuie) nu necesit baii suplimentari de cod, CPU ignor ciclul suplimentar de extracie i numrtorul program (PC) nu este incrementat.

Semnalul ALE este activat, n general, de dou ori n timpul fiecrui ciclu main: n S1P2 - S2P1 i apoi n S4P2 - S5P1. Execuia unei instruciuni de un ciclu ncepe n S1P2, cnd codul operaie este memorat n registrul de instruciuni. Dac aceasta este o instruciune de un bait, exist nc o extragere n S4, dar citirea baitului (care ar trebui s fie urmtorul cod de operaie) este ignorat i contorul program (PC) nu este incrementat. Majoritatea instruciunilor se execut ntr-un singur ciclu. Operaiile de nmulire (MUL) i mprire (DIV) sunt singurele instruciuni care necesit mai mult de dou cicluri pentru execuie (i anume, 4 cicluri). Secvenele de extragere/execuie a instruciunilor sunt aceleai, iar timpii de execuie nu depind de modul de implementare a memoriei program (n interiorul circuitului sau n exterior). nscrierea unui port In execuia unei instruciuni care schimb valoarea dintr-un latch de port, noua valoare ajunge n latch n S6P2 al ciclului final al instruciunii. Totui, latch-urile porturilor sunt de fapt eantionate de bufferele lor de ieire n timpul lui P1 al

oricrei perioade de ceas. (In timpul lui P2 bufferul de ieire genereaz valoarea gsit n P1 precedent). In consecin, noua valoare din latch-ul portului nu va aprea n realitate la pinul de ieire pn la viitoarea faz P1, care va fi S1P1 din ciclul urmtor main. Dac schimbarea necesit o tranziie 0 1 n portul 1, 2 sau 3 o forare suplimentar n 1 este activat n S1P1 i S1P2 al ciclului n care apare tranziia. Aceasta se realizeaz pentru a crete viteza de tranziie. Calea suplimentar poate genera de aproximativ 100 ori curentul generat n mod normal. Observaie: Anumite instruciuni care citesc un port, citesc latch-ul, iar altele citesc pinul. Instruciunile care citesc mai degrab latch-ul dect pinul sunt acelea care citesc o valoare, o modific eventual, i apoi o renscriu n latch. Acestea sunt numite instruciuni "citete-modific-nscrie". Cnd operandul destinaie este un port, sau un bit de port, aceste instruciuni citesc latch-ul i nu pinul. Exemple: ANL (SI logic, de ex., ANL P1, A) ORL (SAU logic, de ex., ORL P2, A) XRL (XOR logic, de ex., XRL P3, A) JBC (salt dac bitul = 1 i terge bit, de ex., JBC P1.1, LABEL) CPL (complementare bit, de ex., CPL P3.0) INC (incrementare, de ex., INC P2) DEC (decrementare, de ex., DEC P2) DJNZ (decrementare i salt dac nu este 0, de ex., DJNZ P3, LABEL) MOV PX.Y, C (transfer bitul carry n bitul Y al portului X) CLR PX.Y (terge bitul Y din portul X) SETB PX.Y (seteaz bitul Y din portul X) Dei nu este evident c ultimele 3 instruciuni prezentate anterior sunt instruciuni "citete - modific - nscrie", totui ele sunt. Ele citesc baitul port (toi cei 8 bii), modific bitul adresat, apon nscriu noul bait napoi n latch. Raiunea pentru care instruciunile "citete-modific-nscrie" sunt direcionate spre latch mai degrab dect spre pin este de a evita o posibil interpretare greit a nivelului tensiunii pe pin. De exemplu, un bit de port poate fi utilizat s comande baza unui tranzistor. Cnd un 1 este nscris n bit, tranzistorul intr n conducie. Dac CPU citete apoi acelai bit al portului la pin i nu din latch, acesta va citi tensiunea bazei tranzistorului i o interpreteaz ca un 0. Citirea latch-ului n locul pinului va returna valoarea corect l. Timere/Numrtoare 8051 are dou registre Timer/Numrtor: Timer 0 i Timer1. 8052 are un Timer n plus: Timer2. Toate cele trei pot configurate s opereze fie ca timere, fie ca numrtoare de evenimente. n funcia "Timer", registrul este incrementat n fiecare ciclu main. Astfel, acesta poate fi privit ca un numrtor de cicluri main. ntruct un ciclu main const din 12 perioade de ceas, viteza de numrare este 1/12 din frecvena oscilatorului. n funcia de "Numrtor", registrul este incrementat ca rspuns la o tranziie din 1 n 0 la pinul de intrare T0, T1 sau (n 8052) T2. n aceast funcie intrarea extern este eantionat n perioada S5P2 a fiecrui ciclu main. Cnd eantioanele sunt "high" ntr-un ciclu i "low" n ciclul urmtor, numrtorul este incrementat. Noua valoare a numrtorului apare n registru n perioada S3P1 a ciclului urmtor aceluia n care tranziia a fost detectat. ntruct sunt necesare 2 cicluri main (24 perioade de ceas) pentru a recunoate o tranziie din 1 n 0, viteza

Interfaa serial Portul serial este complet duplex, n sensul c acesta poate transmite i recepiona simultan. Acesta are, de asemenea, un buffer de recepie, n sensul c se poate ncepe recepia unui al doilea bait nainte ca baitul recepionat anterior s fi fost citit din registrul de recepie. (Totui, dac primul bait nu a fost nc citit n timpul recepiei complete a celui de-al doilea bait, unul din baii va fi pierdut). Registrele de transmisie i recepie ale portului serial sunt ambele accesate ca registrul de funcii speciale SBUF. Scrierea lui SBUF ncarc registrul de transmisie, iar citirea SBUF acceseaz un registru de recepie, distinct din punct de vedere fizic. Portul serial poate funciona n 4 moduri: Modul 0: Datele seriale intr i ies prin RxD. TxD furnizeaz frecvena de transmisie/recepie. Se transmit/recepioneaz 8 bii (8 bii de date), primul fiind LSB. Frecventa biilor este fixat la 1/12 din frecvena oscilatorului. Modul 1: 10 bii sunt transmii (prin TxD) sau recepionai (prin RxD): un bit de start (0), 8 bii de date (LSB - primul) i un bit de stop (1). La recepie, bitul de stop se introduce n RB8 din registrul de funcii speciale SCON. Frecvena biilor este variabil. Modul 2: 11 bii sunt transmii (prin TxD) sau recepionai (prin RxD): un bit de start (0), 8 bii de date (LSB - primul), un al 9-lea bit de date programabil i un bit de stop (1). La transmisie, cel de-al 9-lea bit de date (TB8 din SCON) poate fi asignat la valoarea 0 sau 1. Sau, de exemplu, bitul de paritate (P, din PSW) poate fi mutat n TB8. La recepie cel de-al 9-lea bit de date se introduce n RB8 din registrul SCON (din SFR), pe cnd bitul de stop este ignorat. Frecvena biilor este programabil fie la 1/32 fie la 1/64 din frecvena oscilatorului. Modul 3: 11 bii sunt transmii (prin TxD) sau recepionai (prin RxD): un bit de start (0), 8 bii de date (LSB - primul), un al 9-lea bit de date programabil, i un bit de stop (1). In fapt, Modul 3 este acelai cu Modul 2 sub toate aspectele cu excepia frecvenei biilor. Frecvena biilor n Modul 3 este variabil. In toate cele patru moduri, transmisia este iniiat prin orice instruciune care utilizeaz SBUF ca un registru destinaie. Recepia este iniiat n Modul 0 prin condiia RI = 0 i REN = 1. Recepia este iniiat n celelalte moduri prin sosirea bitului de start dac REN = 1. Registrul de control al portului serial SCON Registrul de stare i control al portului serial, SCON, se afl n SFR. Acest registru conine nu numai biii de selecie ai modului de operare, ci, de asemenea, cel de-al 9-lea bit de date pentru transmisie i recepie (TB8 i RB8) i biii de ntrerupere ai portului serial (TI i RI).

unde: SM0, SM1 - specific modul de operare al portului serial: 0 0 - modul 0, registru de deplasare, frecvena = fosc./12; 0 1 - modul 1, UART - 8 bii, frecven variabil; 1 0 - modul 2, UART - 9 bii, frecvena = fosc./64 sau fosc./32; 1 1 - modul 3, UART - 9 bii, frecven variabil. SM2 - valideaz caracteristica de comunicaii multiprocesor n modurile 2 i 3. In modul 2 sau 3, dac SM2 este stabilit la valoarea 1 atunci RI nu va fi activat dac cel

de-al 9-lea bit de date recepionat (RB8) este 0. In modul 1, dac SM2 = 1 atunci RI nu va fi activat dac un bit valid de stop nu a fost recepionat. In modul 0, SM2 va fi 0. REN - valideaz recepia serial. Se seteaz prin software pentru a activa recepia. Se terge prin software penru a dezactiva recepia. TB8 - este cel de-al 9-lea bit care va fi transmis n modurile 2 i 3. Se seteaz sau terge prin software, dup dorin. RB8 - In modurile 2 i 3, este cel de-al 9-lea bit de date care a fost recepionat. In modul 1, dac SM2 = 0, RB8 este bitul de stop care a fost recepionat. In modul 0, RB8 nu este utilizat. TI - este fanionul de ntreruperi pentru transmisie. Se seteaz prin hardware la sfritul celui de-al 8-lea bit n modul 0, sau la nceputul bitului de stop n celelalte moduri, n orice transmisie serial. Trebuie ters prin software. RI - este fanionul de ntreruperi pentru recepie. Se seteaz prin hardware la sfritul celui de-al 8-lea bit n modul 0, sau la jumtatea bitului de stop n celelalte moduri, n orice recepie serial (excepie, vezi SM2). Trebuie ters prin software. Comunicaii multiprocesor Modurile 2 i 3 au o facilitate special pentru comunicatiile multiprocesor. In aceste moduri, sunt recepionai 9 bii de date. Cel de-al 9-lea este trecut n RB8. Apoi sosete un bit de stop. Portul poate fi programat astfel nct atunci cnd bitul de stop este recepionat, ntreruperea portului serial va fi activat numai dac RB8 = 1. Aceast caracteristic este validat prin setarea bitului SM2 din SCON. O cale de utilizare a acestei trsturi n sistemele multiprocesor este urmtoarea: Cnd procesorul master dorete s transmit un bloc de date unuia din mai multe slave-uri, acesta transmite iniial un bait de adres care identific slave-ul destinaie. Un bait de adres difer de un bait de date prin aceea c cel de-al 9-lea bit este 1 ntr-un bait de adres i 0 ntr-un bait de date. Cu SM2 =1 nici un slave nu va fi ntrerupt printr-un bait de date. Un bait de adres, totui, va ntrerupe toate slaveurile, astfel nct fiecare slave poate examina baitul recepionat i poate vedea dac acesta i-a fost adresat. Slave-ul adresat va terge bitul su SM2 i se pregtete s recepioneze baiii de date care vor sosi. Slave-urile care nu au fost adresate pstreaz setarea biilor SM2 proprii i i vd de sarcinile lor, ignornd baiii de date care vin. SM2 nu are nici un efect n Modul 0, iar n Modul 1 poate fi utilizat pentru a verifica valabilitatea (corectitudinea) bitului de stop. Intr-o recepie n Modul 1, dac SM2 = 1, ntreruperea de recepie nu va fi activat dect dac un bit corect de stop a fost recepionat. ntreruperi 8051 furnizeaz 5 surse de ntreruperi: 2 ntreruperi externe, 2 ntreruperi pentru timere i ntreruperea portului serial. 8052 furnizeaz i o a 6-a surs de ntreruperi care este asociat cu cel de-al treilea Timer/numrtor existent n acest dispozitiv. ntreruperile externe INT0 i INT1 pot fi fiecare activate fie pe nivel fie pe o tranziie 10, n funcie de biii IT0 i IT1 din registrul TCON. Fanioanele care genereaz n realitate aceste ntreruperi sunt biii IE0 i IE1 din registrul TCON.

Registrul TCON

TF1, TF0, TR1, TR0 fanioane de depire i bii de control. IE1, IE0 - fanioane de ntreruperi externe. Se seteaz prin hardware la detectarea unor ntreruperi externe. Se terg cnd ntreruperile sunt tratate. IT0, IT1 - bii pentru controlul tipului ntreruperii. Sunt setai/teri prin soft pentru a specifica triggerarea ntreruperilor externe pe frontul descresctor/nivel sczut. Cnd o ntrerupere extern este generat, fanionul care a generat-o este ters prin hardware cnd rutina de deservire este apelat numai dac ntreruperea a fost activat pe tranziie. Dac ntreruperea a fost activat pe nivel, atunci sursa solicitatoare extern este cea care controleaz fanionul, mai degrab dect hardwareul intern (din chip). ntreruperile Timer 0 i Timer 1 sunt generate prin TF0 i TF1 care sunt setai de o depire (umplere) n registrele corespunztoare Timer/Numrtor (excepie, Timer 0 n modul 3). Cnd o ntrerupere de la timer este generat, fanionul care a generat-o este ters de hardware-ul intern cnd rutina de deservire este apelat. ntreruperea portului serial este generat printr-o poart SAU logic de RI i TI. Nici unul din aceste fanioane nu este ters prin hardware cnd rutina de deservire este apelat. De fapt, rutina de deservire va determina, n mod normal, dac ntreruperea a fost generat de RI sau TI i bitul va trebui ters prin software. La 8052, ntreruperea Timer 2 este generat printr-o funcie SAU logic ntre TF2 i EXF2. Nici unul din aceste fanioane nu este ters prin hardware cnd rutina de deservire este apelat. De fapt, rutina de deservire poate s determine dac TF2 sau EXF2 a generat ntreruperea iar bitul corespunztor trebuie ters prin software.

Toi biii care genereaz ntreruperi pot fi setai sau teri prin soft, cu acelai efect ca i atunci cnd sunt setai sau teri prin hardware. Adic, ntreruperile pot fi generate sau ntreruperile netratate pot fi eliminate (dezactivate) prin soft. Fiecare din aceste surse de ntreruperi pot fi activate sau dezactivate individual prin setarea sau tergerea unui bit din registrul de funcii speciale IE. Registrul IE conine, de asemenea, un bit de dezactivare global, EA, care dezactiveaz toate ntreruperile deodat. Structura nivelelor de prioritate Fiecare surs de ntreruperi poate fi programat individual pe unul din cele dou nivele de prioritate prin setarea sau tergerea unui bit din registrul de funcii speciale IP (Interrupt Priority). Structura registrului IP pentru 8052 este:

IP7, IP6 - rezervai PT2, PT1, PT0 - definesc nivelul de prioritate pentru timerele 2, 1 i respectiv 0. Dac PTi=1 (i = 0, 1, 2), timerul "i" se programeaz pe nivelul superior de prioritate. PS - definete nivelul de prioritate pentru ntreruperea de la portul serial. PS = 1, programeaz aceast ntrerupere pe nivelul superior de prioritate. PX1, PX0 - definesc nivelul de prioritate pentru ntreruperile externe 1 i respectiv 0. PXi=1, programeaz ntreruperea extern i (i = 0, 1) pe nivelul superior de prioritate. O ntrerupere de pe nivelul inferior poate fi ntrerupt de o ntrerupere de pe nivelul superior, dar nu i de o alt ntrerupere de pe nivelul inferior. O ntrerupere de nivel superior nu poate fi ntrerupt de nici o alt surs de ntreruperi . Dac dou cereri de prioriti diferite sunt recepionate simultan, cererea de prioritate superioar este deservit. Dac cereri de aceeai prioritate sunt recepionate simultan, o secven intern de interogare determin care dintre cereri va fi deservit. Astfel, n cadrul fiecrui nivel de prioritate exist o a doua structur de prioritate determinat prin urmtoarea secven de interogare:

Observaie: "Prioritatea n cadrul nivelului" este utilizat numai pentru a rezolva cererile simultane de pe acelai nivel de prioritate! In 8051, pe lng IP.7, IP.6, nu este implementat nici IP.5. Sistemul de control al ntreruperilor bazat pe cele dou registre IE i IP i pe secvena de interogare, n cazul microcontrolerului 8052, este reprezentat in figura de mai jos:

Execuia se realizeaz de la acea locaie pn la ntlnirea instruciunii RETI. Instruciunea RETI informeaz procesorul c aceast rutin de ntreruperi s-a terminat, apoi extrage primii doi octei din vrful stivei i rencarc PC. Execuia programului ntrerupt continu din punctul n care a fost ntrerupt. Observaie: O instruciune RET simpl ar returna, de asemenea, execuia programului ntrerupt, dar aceasta ar lsa sistemul de control al ntreruperii s cread c o ntrerupere este nc n curs de execuie! ntreruperi externe Sursele externe pot fi programate s fie activate pe nivel sau pe tranziie prin setarea sau tergerea biilor IT1 sau IT0 din registrul TCON. Dac ITi = 0, ntreruperea extern i este triggerat prin detectarea nivelului "low" la pinul INTi (i = 0, 1). Dac ITi = 1, ntreruperea extern i este triggerat pe front. n acest mod, dac eantioane succesive ale pinului INTi arat "high" ntr-un ciclu i "low" n ciclul urmtor, fanionul cererii de ntrerupere IEi din TCON este setat. Fanionul IEi solicit apoi ntreruperea. ntruct pinii ntreruperilor externe sunt eantionai odat n fiecare ciclu main, o intrare "high" sau "low" trebuie pstrat pentru cel puin 12 perioade de ceas pentru a asigura entionarea. Dac ntreruperea extern este activat pe tranziie, sursa extern trebuie s pstreze pinul de ntrerupere "high" pentru cel puin un ciclu i apoi s-l pstreze "low" pentru cel puin un ciclu pentru ca tranziia s fie detectat i fanionul IEi s fie setat. IEi va fi ters automat de CPU cnd rutina de deservire este apelat (i = 0, 1). Dac ntreruperea extern este activat pe nivel, sursa extern trebuie s pstreze cererea activ pn ce ntreruperea solicitat este efectiv generat. Apoi aceasta trebuie dezactivat nainte ca subrutina de deservire s se termine, altfel o alt ntrerupere va fi generat. Simularea unui al treilea nivel de prioritate prin software Anumite aplicaii necesit mai mult de dou nivele de prioritate, ct sunt oferite de hardware-ul dispozitivelor 8051. In aceste cazuri, printr-un soft relativ simplu, se poate produce acelai efect cu un al treilea nivel de prioritate. Iniial, ntreruperile crora li se va asocia un nivel de prioritate mai mare de 1 (nivelele hardware fiind 0 -inferior i 1 -superior ) se asigneaz cu nivelul 1 n registrul IP. Subrutinele de deservire a ntreruperilor cu nivelul 1 care se presupun a fi interuptibile de "nivelul 2" (software) sunt scrise incluznd urmtorul segment de cod: PUSH IE MOV IE, #MASK CALL LABEL ............................... (se execut rutina de deservire) ............................. POP IE RET LABEL: RETI Ori de cte ori o ntrerupere de prioritate 1 este acceptat, registrul IE este redefinit astfel nct s dezactiveze toate ntreruperile cu excepia celor cu nivelul "2". Apoi, instruciunea CALL LABEL, execut instruciunea RETI care terge bistabilul nivelului de prioritate 1 n curs de deservire. Din acest moment, orice ntrerupere de

prioritate 1 care este activat poate fi servit, dar doar ntreruperile de nivel "2" sunt activate. POP IE - restabilete baitul IE iniial. Apoi se utilizeaz o instruciune normal RET (mai curnd dect RETI) pentru a termina subrutina de deservire. Softul suplimentar adaug 10s (la 12 MHz) ntreruperilor de nivel "1". Funcionarea instruciune cu instruciune - Se programeaz o ntrerupere extern (spre exemplu INT0 ) activ pe nivel. - Subrutina de tratare a ntreruperii se va termina cu: JNB P3.2, $ ; ateapt aici pn cnd INT0 devine 1. JB P3.2, $ ; ateapt aici pn cnd INT0 devine 0. RETI ; revenire din subrutin i execut o instruciune . Observaie : O dat ce o subrutin de ntrerupere a fost executat (apelat), aceasta nu poate fi reapelat pn cnd cel puin o instruciune a programului ntrerupt nu este executat. Deci, dac pinul INT0 (care este, de asemenea, pinul P3.2) este pstrat la nivel "low", CPU va trece n subrutina de tratare a ntreruperilor externe 0 i va rmne acolo pn cnd INT0 are dou tranziii succesive. Atunci, se execut RETI, se revine n programul ntrerupt, se execut o instruciune i se reintr imediat n subrutina de deservire a ntreruperii externe 0, pentru a atepta un nou impuls la P3.2.

Sisteme de control digitale Majoritatea aplicaiilor de control actuale sunt bazate pe calculator. n acest caz, un calculator sau un microcontroller este folosit pentru funcia de control (de reglare). Un sistem de control bazat pe calculator este prezentat n figura de mai jos:

n acest caz s-a presupus c semnalul de eroare este analog, iar pentru transformarea n format digital se folosete un convertor analog-numeric (CAN). Convertorul eantioneaz periodic semnalul, convertind apoi eantioanele n cuvinte numerice ce sunt procesate de calculator. Calculatorul ruleaz un algoritm de control (o bucat de soft) pentru implementarea aciunilor cerute, astfel nct ieirea instalaiei rspunde conform cerinelor. Ieirea calculatorului este un semnal digital, convertit ntr-un semnal analogic prin utilizarea unui convertor numeric-analogic (n mod obinuit operaia convertizorului este aproximat printr-o funcie de transfer de tipul ZOH extrapolator de ordinul zero). Majoritatea microcontrollerelor actule includ convertoare A/D i D/A pe acelai cip. Astfel, microcontrollerele sunt conectate direct la semnalele analogice ale instalaiei.

Exist i alte variante ale sistemului de control digital. n figura de mai jos, referina este citit de la tastatur sau este inclus n algoritmul de control. Ieirea senzorului este convertit n format numeric folosind un convertor analog-numeric, iar semnalul numeric rezultant este trimis ctre calculator pentru determinarea erorii i implementarea algoritmului de control.

Convertoare analog-numerice Sunt utilizate pentru transformarea semnalelor analogice, n semnale numerice ce pot fi citite de microprocesor sau microcontroller. Un convertor ce realizeaz citirea unui semnal de intrare msurat i transmite la ieire un cuvnt pe 8 bii este prezentat n figura urmtoare:

Tensiunea de referin este valoarea maxim pe care CAN-ul o poate converti. CAN-ul de mai sus poate converti valori cuprinse ntre 0V i tensiunea de referin. Tensiunea de referin este divizat n 256 de valori sau pai. Dimensiunea pasului este dat prin: (Tensiune de referin)/256 =
5V 0.0195V 19.5mV 256

Dimensiunea pasului definete, de asemenea, rezoluia CAN-ului. Ieirea convertorului este un cuvnt pe 8 bii, iar cel mai semnificativ bit indic ori de cte ori tensiunea de intrare este mai mare dect jumtate din tensiunea de referin. Fiecare din biii urmtori reprezint jumtate din bitul anterior, astfel: Bit: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Voli: 2.5 1.25 0.625 0.3125 0.156 0.078 0.039 0.0195 De exemplu, cuvntul 0100 0110 este reprezentat prin: Bit: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Voli: 2.5 1.25 0.625 0.3125 0.156 0.078 0.039 0.0195 Valoare de ieire: 0 1 0 0 0 1 1 0 Tensiunea de intrare se obine prin relaia:
1.25 0.078 0.039 1.367 V

Rezoluia CAN-ului este determinat de intrarea de referin i de limea cuvntului. Rezoluia definete cea mai mic modificare de tensiune ce poate fi msurat de CAN. Pentru CAN-ul definit anterior aplicarea oricrei tensiuni mai mici de 19.5 mV, va avea ca efect transmiterea unui 0 la ieire. Orice tensiune ntre 19.5 mV i 39 mV va transmite la ieire pe 1, dac tensiunea este ntre 39 mV i 58.6 mV se va transmite la ieire 2, s.a.m.d. Singura posibilitate de a crete rezoluia fr schimbarea referinei este utilizarea unui CAN cu mai muli bii. De exemplu, un CAN pe 10 bii, ce folosete un semnal de referin de 5 V, va avea o rezoluie de 4.88 mV (5 V/1024). Tipuri de CAN-uri 1. CAN de urmrire CAN-ul de urmrire conine un comparator, un numrtor i un CNA. Comparatorul realizeaz comparaia dintre tensiunea de intrare i tensiunea de ieire a CNA-ului. Dac intrarea este mai mare dect tensiunea CNA-ului, atunci numrtorul se incrementeaz, dac intrarea este mai mic dect tensiunea CNAului, atunci numrtorul se decrementeaz. Numrtorul va ncepe s numere de la zero i se va incrementa la fiecare puls al ceasului pn cnd va transmite valoarea binar ce reprezint tensiunea de intrare. Dup aceast faz, ieirea comparatorului va comuta, iar numrtorul se va

decrementa. Eventual, numrtorul va oscila n jurul valorii ce reprezint tensiunea de intrare.

Conversia unei tensiuni de intrare de 0.37V pentru CAN-ul studiat este reprezentat n figura urmtoare:

Viteza maxim a unui CAN de urmrire depinde de ntrzierea de propagare a comparatorului i a CNA-ului. n general, astfel de CAN-uri sunt utilizate atunci cnd semnalul de intrare se modific lent relativ la perioada de eantionare. 2. CAN flash CAN-ul flash este cel mai rapid CAN existent. Un astfel de dispozitiv are un comparator la fiecare pas de tensiune. Astfel, un CAN pe 4 bii va avea 16 comparatoare, unul pe 8 bii va avea 256 de comparatoare, s.a.m.d. O intrare a tuturor comparatoarelor este conectat la intrarea ce trebuie msurat. Celelalte intrri ale comparatoarelor sunt conectate la un lan de rezistene. Toate ieirile comparatoarelor sunt conectate la un circuit logic ce determin ieirea pe baza strii comparatoarelor (high sau low). Viteza de conversie a unui CAN flash este dat de suma ntrzierilor comparatoarelor. CAN-urile flash sunt foarte rapide, dar necesit un consum mare de putere.

3. CAN cu aproximare succesiv Acest tip de CAN este similar cu cel de urmrire. Diferena dintre cele dou este c registrul aproximrilor succesive realizeaz o cutare binar n locul numrrii.

Conversia unei tensiuni de 3 V este prezentat n figura urmtoare:

Iniial registrul aproximrilor succesive seteaz bitul 7. Tensiunea CAN-ului este 2.5V. Deoarece, ieirea comparatorului este high, bitul 7 rmne setat, deci ieirea CAN-ului este: 1000 0000. Urmtorul pas este setarea bitului 6. n acest caz tensiunea CAN-ului devine 2.5V+1.25V=3.75V. Deoarece ieirea comparatorului este low, bitul 6 se va reseta. Ieirea CAN-ului este identic cu ieirea de la pasul precedent. Procesul continu pn la bitul 0, iar ieirea CAN-ului depinde de starea comparatorului (high sau low). n acest caz la ieirea CAN-ului se va obine secvena de bii: 1001 1001, ce corespunde unei tensiuni de 2.988V. Un astfel de CAN pe 8 bii realizeaz o conversie n 8 pai a tensiunii de intrare. Viteza de conversie este mai mare dect n cazul CAN-ului de urmrire, dar n acest caz este necesar utilizarea unei logici extinse. 4. CAN integrator Acest tip de CAN folosete un integrator n serie cu un comparator i un circuit logic. Intrarea integratorului este comutat prima la semnalul de intrare, iar ieirea integratorului se ncarc prin intermediul tensiunii de intrare. Dup un anumit numr de pai, intrarea integratorului este comutat la un semnal de referin (Ref. 1), iar integratorul se descarc prin intermediul acestei valori. La apariia unei comutri a tensiunii de referin (Ref. 1), este pornit numrtorul, care va numra folosind acelai ceas ce determin timpul de integrare. Atunci cnd ieirea integratorului scade sub un al doilea semnal de tensiune (Ref. 2), ieirea comparatorului va fi high, numrtorul se oprete, iar numrul reprezint tensiunea analogic de intrare. Tensiunile de intrare mari vor permite integratorului s se ncarce la o tensiune mai mare, avnd ca efect direct o numrare mai mare la ieire. Acest tip de convertor are nevoie de un timp relativ mare pentru realizarea conversiei, dar aciunea de filtrare introdus de integrator elimin zgomotul.

Circuitul de eantionare i memorare (reinere) Circuitele realizeaz eantionarea i reinerea pe nivel a semnalelor de intrare n CAN, fiind utilizate pentru cazurile n care apar modificri ale tensiunilor de intrare. Circuitul are un comutator analogic cu o intrare de control. Atunci cnd comutatorul este nchis, semnalul de intrare este conectat la condensatorul de meninere, iar ieirea buffer-ului urmrete intrarea. Atunci cnd comutatorul este deschis, intrarea este deconectat de la condensator. Funcionarea unui astfel de circuit poate fi descris astfel: Atunci cnd semnalul de control este low (eantionare), ieirea urmrete intrarea. Atunci cnd semnalul de control devine high (reinere), deconectnd condensatorul de la intrare, ieirea rmne la valoarea pe care intrarea a avut-o nainte de comutarea la modul de memorare(reinere). Atunci cnd comutatorul se nchide din nou, condensatorul se ncarc rapid, iar ieirea urmrete din nou intrarea. n mod uzual, circuitul va comuta la modul de memorare nainte de nceputul conversiei CAN-ului, i va comuta napoi la modul de eantionare dup ce conversia este terminat. Capacitatea unui astfel de circuit de a ine ieirea n modul de memorare este dependent de calitatea condensatorului, de caracteristicile amplificatorului utilizat pentru buffer (impedana intrrii), precum i de calitatea comutatorului. Un circuit de eantionare i memorare real are o impedan de intrare finit, prin urmare n modul de eantionare, condensatorul de reinere este ncrcat prin intermediul unor rezistene. Timpul n care circuitul rmne n modul de eantionare, pentru achiziia unei intrri complet scalate este numit timp de achiziie, fiind specificat n nanosecunde sau microsecunde. Deoarece n momentul eantionrii circuitul conine anumite impedane conectate n serie cu condensatorul de reinere se produce un efect de filtru RC trece jos. Acest lucru limiteaz frecvena maxim la care eantioanele pot fi achiziionate. Frecvena este cunoscut sub denumirea de band de putere fiind specificat n kHz sau MHz. Diferena de tensiune dintre intrare i ieire este cunoscut ca offset-ul ieirii, fiind exprimat n milivoli.

Valoarea de deviaie a ieirii n modul de reinere este numit rat de scdere, fiind specificat n milivoli /secunde, sau microvoli /microsecunde.

Multe CAN-uri includ un circuit S/H intern. Un astfel de CAN trebuie s aib un pin separat ce controleaz tranziia dintre cele dou moduri, sau s comute la modul de meninere, automat la nceputul unei conversii. Convertoare numeric-analogice (CNA) n multe situaii nu este de ajuns ca un microcontroller s msoare semnale analogice, dar s i genereze astfel de semnale. n cazul echipamentelor industriale controlate prin semnale analogice, sistemul microcontroller trebuie s fie capabil s genereze semnale analogice cu amplitudine controlat pentru a comunica cu aceste echipamente. O modalitate de a realiza aceast sarcin este utilizarea unui timer PWM. Prin aplicarea unui semnal PWM la un filtru trece-jos, va rezulta un semnal de ieire ce are amplitudinea Vout K VM , unde VM este amplitudinea semnalului VPWM , iar K este factor de umplere (duty cycle).

Dac nu este disponibil un timer PWM, sau numrul canalelor PWM este mai mic dect numrul necesar de ieiri analogice, soluia este utilizarea unui CNA. Exist o mare varietate de CNA-uri, de rezoluii diferite, timpi de conversie diferii, sau modaliti diferite de transmitere a rezultatului (serial sau paralel). Majoritatea CNA-urilor funcioneaz dup acelai principiu: divizarea curentului cu o reea de rezistene. n figura urmtoare se prezint un CNA pe 4 bii:

Amplificatorul operaional lucreaz astfel nct potenialul celor dou intrri este identic. Prin urmare, reeaua lucreaz ca i cnd toate rezistenele 2R, au un capt conectat la mas. Rezistena echivalent a sarcinii Vref este constant i egal cu R. Curenii totali absorbii de cele 4 comutatoare (S3, S2, S1, S0) sunt I 3 I ref / 2 , I 2 I ref / 4 , I1 I ref / 8 , I 0 I ref / 16 . Tensiunea de ieire este:
Vout I F RF . Curentul I F poate fi definit astfel:

I F I ref b0 / 2 b1 / 4 b 2 / 8 b3 / 16

unde b3 b0 sunt biii cuvntului ce trebuie convertit ntr-o valoare analogic. Prin urmare, tensiunea de ieire Vout este proporional cu valoarea binar ce trebuie convertit. Interfaarea CAN-ului cu microprocesorul 1. Interfee paralele CAN-urile vin ntr-o mare varietate de interfee, fiind capabile s lucreze cu procesoare multiple. Maxim MAX151 este un convertor tipic de 10 bii cu o interfa paralel universal pe 8 bii. Interfaa cu microprocesorul a acestui tip de CAN cuprinde o magistral de date pe 8 bii, un semnal de selecie a circuitului (CS), un semnal de citire (RD) i o ieire BUSY. Circuitul include, de asemenea un S/H intern. Pe frontul descresctor al semnalelor RD i CS, S/H este trecut n modul reinere, fiind pornit conversia. Dac, CS i RD nu trec n starea low n acelai timp, ultimul front descresctor pornete conversia. Odat cu pornirea conversiei, semnalul BUSY devine activ (egal cu 0). Semnalul rmne n starea low pn cnd conversia este terminat. Exist dou moduri de operare: modul memoriei lente i modul ROM. n primul mod de operare, procesorul ateapt, fornd CS i RD s rmn n starea low pn cnd conversia este terminat. ntr-un astfel de sistem, de obicei semnalul BUSY este conectat la semnalele RDY i WAIT ale procesorului. Acestea in procesorul ntr-o stare de ateptare pn cnd conversia este terminat. Timpul maxim de conversie n acest caz este de 2.5s . n modul ROM de operare, procesorul realizeaz un ciclu de citire, plasnd S/H n modul reinere i iniiind o conversie. n timpul citirii curente, procesorul citete rezultatele conversiei anterioare. Semnalul BUSY nu este utilizat pentru a extinde ciclul de citire. n schimb, BUSY este conectat la o ntrerupere sau este verificat de ctre procesor pentru a indica cnd conversia este terminat. Atunci cnd BUSY

Sisteme multiprocesor Majoritatea sistemelor integrate din mediul industrial i comercial folosesc procesoare multiple. Proiectarea sistemelor multiprocesor permite distribuirea puterii de calcul ntre diferitele procesoare. Utilizarea mai multor procesoare ntr-un proiect se datoreaz unui numr de motive, cum ar fi modularitatea de exemplu un anumit subsistem trebuie s fie instalat numai dac o anumit opiune este instalat. Procesoarele distribuite pot simplifica programarea. Practic, soft-ul este mprit n funcii ce pot fi administrate independent pe diferite procesoare. De asemenea, procesoarele distribuite pot reduce costul. Puterea de procesare a dou task-uri independente pe procesoare separate poate fi mult mai mic dect dac un procesor trebuie s realizeze ambele task-uri. n figura urmtoare este prezentat un sistem multiprocesor simplu pentru aplicaii de control.

Procesorul CPU1 este utilizat pentru a interfaa operaiile cu tastatura i display-ul. Procesorul comunic cu CPU2, utilizat pentru comunicaiile cu sistemul gazd de la nivelul superior. CPU2 comunic la rndul su cu CPU3, ce controleaz n timp real motoarele i monitorizeaz senzorii de eveniment. Toate procesoarele au propria memorie programabil de tipul ROM, memorie de tipul RAM i dispozitive de I/O. Tipul legturii dintre procesoare depinde de aplicaie. Comunicaia dintre CPU1 i CPU2 poate fi o comunicaie bazat pe standardul RS232. Comunicaia dintre CPU2 i gazd poate fi o comunicaie ce folosete orice tip de mediu, de la RS232 pn la conexiune de tipul SCSI, ethernet sau infrarou, n funcie de cantitatea de date i viteza de transmisie a datelor. Comunicaia dintre CPU2 i CPU3 poate fi o comunicaie direct dac ambele sunt pe aceeai plac. Numrul de procesoare utilizate ntr-un astfel de sistem, precum i modul de distribuire a acestora depinde, n general, de trei factori: interdependena sau modularitatea soft-ului Frecvena procesorului (numrul de instruciuni/sec.) Locaia fizic Pentru exemplu considerat, este normal ca acelai procesor (CPU3) s mpart funcii interdependente, cum ar fi citirea poziiei motorului (pe reacie negativ) de la senzori i controlul poziiei motorului. Codul poate deveni complex i dificil dac din schem se elimin CPU3. Procesorul CPU2 trebuie s mnuiasc att mesajele spre i dinspre gazd, ct i ntreruperile provenite de la senzori i motoare.

Comunicaia ntre procesoare aflate pe plci diferite Pentru sistemele, unde dou sau mai multe procesoare aflate pe plci diferite trebuie s comunice, exist mai multe metode. Dintre acestea amintim: comunicaie serial utiliznd o legtur de tipul RS-232 comunicaie serial asincron interfa diferenial utiliznd o legtur de tipul RS-485 interfa paralel Magistrale CAN Controllerul de reea (CAN) este o magistral serial dezvoltat iniial pentru industria auto. Este o magistral multimaster ce suport noduri multiple, egale. Nodurile nu au o adres specific. Informaia de adres este specificat n mesajele transmise. Nodurile pot fi introduse sau eliminate n timp ce sistemul funcioneaz. Magistrala CAN este o magistral serial diferenial. Liniile CAN au dou stri: n una ambele linii sunt conduse de 2.5V, iar n cealalt stare o linie este condus de 1.2V, n timp ce cealalt este condus de 3.5V. Un mesaj CAN const dintr-un bit de start, urmat de un cmp de 12 bii de arbitraj. Dintre acetia 11 bii sunt biii de identificare ce reflect coninutul i prioritatea mesajului, iar 1 bit este bitul de cerere a transmisiei controlate. Cmpul de arbitraj este utilizat pentru arbitrarea transmisiilor. Dac mai multe transmisii ncearc s preia controlul magistralei la acelai moment de timp, nodurile cu mesaje de prioritate sczut se vor dezactiva pe parcursul cmpului de arbitraj, lsnd nodurile cu mesaje de prioritate ridicat s preia controlul asupra magistralei. Urmeaz un cmp de control format din 6 bii: primul bit este numit IDE (extensia identificatorului), iar urmtorul bit este rezervat; biii rmai (4 bii) specific numrul de octei de date coninui n mesaj (0-8 octei). Dup acest cmp de control, urmeaz datele i un cmp de 15 bii pentru verificarea erorilor (CRC). Dup CRC, urmeaz un cmp de confirmare, n care nodurile receptoare introduc un bit de confirmare pentru a notifica transmitorul c mesajul a fost corect recepionat. Ultimii bii sunt 7 bii neocupai.

S-ar putea să vă placă și