Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
CONSIDERAII GENERALE Dezvoltarea tehnologiilor microelectronice i a sistemelor cu microprocesor, a fcut posibil realizarea de aparatele de msurare i control extrem de performante, ca urmare a perfecionrilor tehnologice, ct i datorit necesitii de a face fa cerinelor tot mai crescnde de msurare i conducere automat a diferitelor procese. Sistemele i aparatele de msurare numerice pot fi uor interconectate cu sistemele de calcul numeric, n special cu microprocesoare sau cu microcalculatoare, fapt care duce la obinerea unor viteze mari de achiziie a datelor de la mai multe puncte de msurare i la o prelucrare automat a unui volum considerabil de date. Actualmente sistemele automate de msurare (S.A.M.) sunt implementate cu microprocesoare sau cu microcontrolere, ale cror caracteristici i performane genereaz performanele respectivelor S.A.M. Folosirea microprocesoarelor i microcontrolerelor, care sunt sisteme microelectronice extrem de flexibile i a cror funcionare este guvernat prin programe specifice tehnicilor informatice (de tip software), a condus totodat i la informatizarea puternic a aparaturii numerice i a sistemelor de msurare, testare i control, adic la utilizarea pe scar tot mai larg a tehnicilor i limbajelor de programare specifice informaticii.
345
12.2. SISTEME CU MICROPROCESOARE 12.2.1. EVOLUIA SISTEMELOR CU MICROPROCESOARE Ca i calculatoarele electronice numerice, sistemele cu microprocesoare i microcontrolerele sunt construite cu circuite logice, care sunt realizate cu circuite integrate att sub form de circuite combinaionale, ct i sub form de circuite logice secveniale. Calculatorul electronic numeric reprezint un sistem logic secvenial care efectueaz prelucrri i transferuri de date i comenzi, n conformitate cu un algoritm memorat sub forma unui program. Dei comport o mare varietate, schema bloc a oricrui calculator numeric (sau sistem de calcul, n general) conine urmtoarele blocuri de baz, (Figura 12.1): unitatea central de procesare (C.P.U. -Central Processing Unit), memorie, M i porturile de intrare/ieire, (I/O), interconectate prin magistrale de vehiculare a datelor.
MEMORIE UNITATEA CENTRALA Magistrale UC (microprocesor)
Porturi I/O
Figura 12.1. Schema bloc a unui calculator numeric. Unitatea central de procesare, sau, pe scurt, unitatea central se compune din unitatea de prelucrare a datelor, denumit unitatea aritmetic i logic, (A.L.U.-Arithmetic Logic Unit), unitatea de
346
comand i control (U.C.C.), aria de registre i blocul de interfaare cu sistemul, (figura 12.2). Dup cum s-a menionat, ea se mai numete unitate de procesare sau procesor, iar dac este realizat sub forma unui singur circuit integrat pe scar mare de tip LSI (Large Scale Integration) se mai numete i microprocesor. Un circuit integrat la scar mare (LSI), capabil s realizeze operaii matematice i logice conform unui algoritm prestabilit (program) sub conducerea unui bloc de comand i control (UCC) este tocmai microprocesorul. Un sistem numeric realizat n jurul unui asemenea microprocesor, cu care conlucreaz n vederea realizrii sarcinilor nscrise n program, se numete sistem cu microprocesor sau microcalculator (microsistem numeric de calcul). Astfel microprocesorul (respectiv sistemele cu microprocesoare) constituie o apariie generat de nevoia de sistematizare a proiectrii i implementrii microcircuitelor digitale pentru a face fa diversificrii aplicaiilor, i a fost posibil datorit progresului tehnologiilor integrate, n special a memoriilor de capaciti ridicate
Arie de registre Unitate de comanda si control Bloc de interfata cu sistemul Unitate de prelucrare
347
Flexibilitatea caracteristic microprocesoarelor, n sensul c acestea pot fi adaptate s fac fa oricror cerine impuse de varietatea aplicaiilor care le solicit, poate fi realizat prin folosirea logicii programate n locul logicii cablate, apelnd la conceptul de microprogramare, concept deja folosit la acea dat (dup 1965) n calculatoarele mari - de tipul IBM-360. Dup elaborarea (n 1971) a microprocesorului INTEL 4004 n tehnologia PMOS, n scurt timp a fost fabricat microprocesorul de 8 bii I 8008, tot n tehnologia PMOS dup care s-a trecut la tehnologia NMOS mai rapid i mai compact, realizndu -se microprocesorul I808 0, precum i microprocesoare fabricate de alte firme M6800,(Motorola), Z-80, (firma ZILOG) etc. care au constituit generaiile a II-a i respectiv a III-a de microprocesoare. Generaia a IV-a i urmtoarele sunt caracterizate prin microprocesoare de nalt performan, n general, de 16, 32 sau 64 bii cum sunt I-8086, Z-8000, M68.000 etc., precum i microprocesoarele de vrf din seriile INTEL, cum sunt I8088, I80286, I80386, I80486, I860 (RISC), Pentium (80586), Pentium I-IV i altele. De altfel, chiar n construcia aparaturii numerice de msurare computerizate intr microprocesoare sau microcontrolere care au limea cuvntului de procesat de 8, 16 bii, sau 32 bii. 12.2.2.STRUCTURA I FUNCIONAREA UNUI SISTEM CU MICROPROCESOR Un sistem cu microprocesor, cunoscut i sub numele de microcalculator, este organizat -cu rare excepii - n jurul a trei magistrale aa cum se vede n figura 12.3. Pe lng microprocesor -care conine blocurile menionate n figura 12.2 i
348
magistralele, sistemul mai are n alctuirea sa blocuri de memorie de tip RAM, (Randon Acces Memory), memoria ROM, (Read Only Memory) i blocurile de interfaare cu exteriorul, care sunt porturile de intrare/ieire,(I/O). Legturile interne dintre registre i alte componente ale microprocesorului, cu diferite blocuri din sistem precum i cu echipamentele externe se fac cu ajutorul magistralelor care sunt de trei tipuri, i anume:
ADRESS BUS INT INTA HOLD HOLDA READY WAIT CLOCK
ROM
RAM
I/O
U.C. P .
DATA BUS
CONTROL BUS
Figura
1) Magistrala de date (MD) sau DATA BUS, este ntotdeauna bidirecional i servete drept cale de comunicaie pentru circulaia datelor ntre microprocesor,(P) i unitatea de memorie,(UM), respectiv ntre P i circuitele de interfa,(CI); capacitatea uzual a MD poate fi de 8, 16 sau 32 bii etc. 2) Magistrala de adrese (MA) sau ADRESS BUS este unidirecional i servete la transportul biilor, ce constituie o adres, de la P la memorie, (UM). O
349
magistral de adrese cu capacitatea de 16 bii permite alegerea (prin decodificare i multiplexare) oricruia dintre octeii unei memorii uzuale de pn la 64Koctet, (=216). 3) Magistrala de comand i control (MC) transport semnalele de sincronizare, comand i control ntre P i celelalte componente ale sistemului. La orice sistem de calcul, inclusiv la sistemele cu microprocesor, totalitatea componentelor electronice fizice (circuite logice, memorii, porturi, magistrale, interfee, blocuri de comand etc.) constituie aa numitul hard sau hardware i se refer la partea de echipament. Totalitatea sistemelor de operare matematic i logic prin intermediul programelor i instruciunilor constituie softul sau software. Instruciunile i programele, n general, sunt introduse i nmagazinate n memorii fixe de tip ROM (EPROM) sau RAM. Conceptul de microprogramare (sub forma includerii unui calculator n alt calculator, primul urmnd s nlocuiasc funciile logice cablate ale celui de-al doilea) a permis nlocuirea parial a hardului prin software cu ajutorul memoriilor de tip ROM sau PROM care - sub forma unor circuite integrate ce conin programe i microinstruciuni - sunt interschimbabile. In cazul microprocesoarelor se apeleaz mult la programe memorate n ROM-uri (i PROM-uri), fapt care atribuie sistemului o mare flexibilitate - pentru a fi adaptat la multe situaii. Prelucrarea informaiei prin metode electronice presupune existena unui sistem, conform modelului din figura 12.4. S considerm, de exemplu, un controlor de proces industrial care trebuie s menin parametrii tehnologici conform unor valori introduse de operator
350
i s semnalizeze, n diverse moduri, desfurarea procesului. Informaia de intrare este captat de diveri senzori (de temperatur, de presiune, de concentraii) i introdus n convertoare analognumerice, care furnizeaz date ctre sistemul numeric. De asemenea, exist un panou de comand de la care operatorul introduce printr-o tastatur (claviatur) valorile caracteristice impuse procesului i comenzi adecvate.
Intrari informatii (date, comenzi)
SISTEM NUMERIC
Figura 12.4.
Sistemul numeric trebuie s preia automat aceste informaii i s le memoreze att timp ct este necesar, pn la schimbarea acestora sau, n ultim instan, pn la terminarea procesului controlat. Trebuie s existe, deci, nite circuite de intrare (numite i porturi de intrare) pentru preluarea datelor i comenzilor din exterior precum i o memorie de tip scriere-citire (RAM), pentru stocarea acestora. n urma prelucrrii informaiilor conform unui algoritm specific, prestabilit, sistemul numeric furnizeaz date i comenzi ctre operator i, respectiv, proces, prin intermediul unor sisteme de afiare, electrovalve, motoare, elemente de nclzire sau rcire etc. Trebuie s existe, deci, i circuite (porturi) de ieire din sistemul numeric pentru meninerea semnalelor respective la ieiri
351
att timp ct este necesar. Rezult o structur, ca cea din figura 12.5, n care se observ existena unor linii de transferare paralel a datelor, formnd o magistral bidirecional (Data Bus - DB). Numrul de linii al acesteia - limea magistralei - se alege din considerente de simplificare a sistemului, economicitate etc. De exemplu, dac se folosesc convertoare analog-numerice, (CAN), de 8 bii capabile s asigure o precizie de citire de 1/28 <0,4% este comod s se utilizeze o magistral de opt linii pentru comunicaia de date ntre constituenii sistemului.
TRDUCTORI
CAN
CAN
CAN Tastatura
MAGISTRALA DATE
Port iesire
SISTEM DE AFISARE
SISTEM NUMERIC
Figura 12.5. Structura de principiu a unui controlor de proces. Putem considera c funcionarea sistemului ncepe cu citirea informaiei din porturile de intrare (date de la traductori, comenzi i date de la tastatur). Sistemul le va prelucra pe rnd, deci cele care nu se
352
ELEMENTE DE EXECUTIE
Port intrare
Port iesire
proceseaz imediat vor trebui nscrise n memorie. Pentru simplificare, vom presupune c fiecare unitate de informaie are numai 8 bii care formeaz un cuvnt (n cazul de fa un octet). Porturile de intrare pot fi, grupuri de 8 bistabili deci registre de 8 bii avnd ieiri cu trei stri, pentru a putea fi cuplate mpreun la magistrala de date. Memoria va consta, de asemenea, dintr-un ansamblu de registre (numite locaii) de cte 8 bii care au intrri i ieiri (de tip trei stri) comune, cuplate la magistrala de date. S presupunem c la momentul tk trebuie citit informaia din portul numrul Pn i ncrcat n RAM la locaia numrul Mk. Pentru aceasta, unitatea central de procesare a informaiei (UPI) trebuie mai nti s genereze semnalul de Citire port n" n timp ce toate celelalte semnale de citire de porturi sunt inactive; n acest fel porile cu trei stri de la ieirea portului n se deschid i coninutul acestuia apare pe magistrala de date. UPI ar trebui s genereze attea linii de comand a citirii porturilor de intrare cte porturi sunt, numrul respectiv putnd deveni destul de mare (10 100); nu este economic s se cableze attea legturi, mai ales c o situaie similar se creeaz i pentru selecia celulelor de memorie (n numr de (104 -107). Faptul c un port i numai unul este selectat la un moment dat (respectiv o locaie de memorie) sugereaz folosirea de decodificatoare pentru selecie, ca n figura 12.6. Prin acest procedeu porturile (respectiv locaiile de memorie) se numeroteaz iar UPI trimite la decodificatoarele de selecie numrul codificat binar al portului (locaiei) de selectat. Acest numr se numete simplu adres i are structura 00110 = 6 pentru portul 6 i respectiv 010001 = 17, pentru locaia 17 din RAM etc.
353
OE Port 0 OE Port 1
O0
DCD Decodificator Porturi
O1
Linie adr. n
OE Port n
On
OE W
DCD RAM
Figura 12.6. Schema circuitului de adresarea codificat. Deoarece exist relaia n = 2m, rezult o cablare mult mai economic dect cea fr codificare (adresare). De exemplu, pentru selecia dintr-o memorie de 212 = 4096 locaii sunt necesare numai 12 linii de adres n loc de 4096 linii de selecie, iar pentru 256 de porturi numai 8 linii. Mai mult, pentru situaia considerat nu este necesar s se foloseasc 20 de linii distincte, putndu-se folosi un grup de linii (magistral) de adrese unic i dou semnale care s indice dac se adreseaz porturile (Input/Output Request IOREQ) sau memoria (Memory Request - MREQ).
354
O
E1 OE IN 0 OE IN 1 OE IN n O0 E1 E2 O1 DCD IN On ADRESS BUS DATA BUS IOREQ RD MREQ WR E2 O0 O1 DCD OUT O n w OUT 1 w OUT 2 w OUT K
E OE
DI/DO
Ai W
RAM
Figura 12.7. Magistrala de date i de adrese n cadrul structurii cu microprocesor. Decodificatoarele devin demultiplexoare validate de aceste dou semnale. Se obine o structur cu o magistral de date i una de adrese ca n figura 12.7. Nu s-a mai figurat demultiplexorul pentru RAM deoarece el se gsete integrat n toate circuitele de memorie actuale. S-au notat cu AI, DI, DO intrrile de adres i date, respectiv ieirile de date i cu RD i WR, comenzile de citire i respectiv scriere de date furnizate de UPI ctre memorie i porturi. Liniile respective mpreun cu cele de tip IOREQ, MREQ i altele, a cror necesitate va apare ulterior, formeaz o nou magistral numit CONTROL BUS - CB - magistrala de comenzi (sau control). Reunind porturile de intrare i de ieire se ajunge la schema din figura 12.8 echivalent cu din figura 12.3 dar grupat mai clar.
355
Adress Bus
Ai E
OE W
OE W E
Ai
OUT
RAM
Porturi I/O
IN
U.P.I.
sau
P .
Data Bus
Control Bus
Figura 12.8. Schema bloc explicit a unui sistem cu microprocesor. Demultiplexoarele pent ru porturi mpreun cu porturile s-au inclus ntr -un bloc unic de intrareieire, proiectarea acestuia putnd fi fcut n conformitate cu tehnica circuitelor logice de tip SSI (Small Scale Integration) i MSI (Medium Scale Integration). Sistemul numeric cu P funcioneaz secvenial sub comanda unui generator de tact,(ceas, clock), de perioad T. Instruciunile de citire/scriere n porturi sau n memorii se execut secvenial n mai muli pai (perioade T), care alctuiesc aa numitele cicluri-main. O ilustrare a execuiei operaiilor de nscriere/citire a datelor din porturi i memorie este reprezentat n figura 12.9, n care sunt puse n eviden elementele unui ciclu-main. Mai nti UPI citete datele dintr-un port de intrare, de
356
exemplu P6. Pentru aceasta, ea transmite pe magistrala de adrese AB cuvntul 0000.0110 (s-a considerat o lime a acesteia de 8 bii) i pe magistrala de control semnalele IOREQ i RD, ca n figura 12.9. Dup un timp de ordinul zecilor de ns (dat de ntrzierea prin decodificator i circuitele cu trei stri de la ieirea portului) coninutul portului apare pe magistrala de date DB, aflat anterior n starea de nalt impedan (Hi-z). Informaia respectiv ar putea fi nscris acum n memoria RAM; pentru aceasta ar trebui emis pe magistrala de adrese, adresa locaiei dorite i semnalele MREQ i WR.
T1 O
T2
T3
AB
Stare oarecare
AB=0000.0110
IOREQ, RD
DB
Hi z
Hi z
Figura 12.9. Detaliu asupra unor semnale n cadrul unui ciclu-main. In mod uzual ns coninutul acestui port se prelucreaz nainte de a fi memorat i de aceea este
357
nscris chiar n UPI ntr-un registru intern, pe care l vom numi A (acumulator). Citirea portului se va executa, deci, n trei timpi pe care, pentru simplificare, i vom considera egali fiecare cu o perioad a generatorului extern CP, numii stri main (Figura 12.9). n timpul (starea) T1 se genereaz adresele, n starea T2 se dau comenzile de citire port, iar n starea T3 se nscriu datele citite din port n registrul A al UPI. Un astfel de ansamblu de stri formeaz un ciclu main (Figura 12.9), n cazul de fa un ciclu de execuie, iar aciunea executat constituie o instruciune. Putem nota simbolic aceast instruciune sub forma mnemonic IN A, (6), care nseamn: ncarc registrul A cu coninutul portului 6. Se mai poate folosi notaia echivalent A (6), unde parantezele semnific coninutul portului cu numrul respectiv, acest coninut putnd fi, de exemplu, 1001.1011 = 155 = 9BH (H nseamn notaie hexazecimal). Aciunile particulare executate n fiecare stare main de ctre UPI se numesc micro-instruciuni, sau microoperaii. Desfurarea ntr-o ordine specific a acestora conduce la realizarea unei instruciuni. S presupunem c, n continuare, datele preluate de UPI de la portul P6 trebuiesc comparate cu o valoare prestabilit. De exemplu, ele reprezint o temperatur, care trebuie s nu fie mai mic dect 98H= 1001.1000= 152 i nici mai mare dect 9FH=1001.1111=159. Aceste valori, desemnnd grade Celsius, au fost introduse aprioric n memoria RAM a sistemului, de la tastatur, de exemplu la locaiile 252=1111.1100=FCH i respectiv 253 = 1111.1101 =FDH. Pentru efectuarea comparrii ele trebuie, aduse,
358
de regul, n UPI unde exist circuite logice combinaionale capabile s efectueze comparaia (cel mai simplu prin scdere i reinerea semnului rezultatului). Prin urmare, UPI va lansa, ntr-un ciclu main ulterior, adresa FDH (253) i semnalele MREQ i RD. Coninutul locaiei 253 din RAM apare dup un timp, tacces, pe magistrala de date i este citit ntr-un registru intern al UPI, s spunem B. Sa executat, deci, o instruciune de citire din RAM, care poate fi notat mnemonic: LD B,(253), sau LD B, FDH), sau B (FDH). Mnemonicul LD vine de la cuvntul Load" ncarc i este ales arbitrar. De asemenea, ar fi util s se ncarce i coninutul celeilalte locaii, 252 (avnd nscris valoarea minim admis a temperaturii) n UPI, de exemplu n registrul intern C. Se va genera, deci, adresa 252 i semnalele MREQ i RD iar pe magistrala de date va apare octetul 98H=152(C) care se va ncrca n registrul C. Pn acum succesiunea de instruciuni, formnd un nceput de program, ar fi deci urmtoarea: IN A,(6), LD B,(FDH), LD C, (FCH). Multe calculatoare electronice au posibilitatea s efectueze ultimele dou instruciuni ca una singur. Pentru aceasta, se folosete conceptul de registru dublu sau registru pereche, n cazul de fa dac vom considera c registrele de 8 bii B i C formeaz un registru pereche (rp) de 16 bii, notat BC, acesta poate memora doi octei, sau un cuvnt de 16 bii. De regul, octetul de ordin superior (H High ) se memoreaz n primul registru, (B), iar cel de ordin inferior (L = Low) n al doilea ,(C). Putem scrie deci:
359
BCH = B i BCL = C. Deoarece datele necesare au fost nscrise n locaii succesive din memorie s-ar putea folosi o instruciune unic care s realizeze ambele citiri. De exemplu, o UPI cu un microprocesor de tip Z-80 poate efectua o astfel de instruciune notat mnemonic sub forma: LD BC, (252), sau LD BC, (FCH), al crei efect este: BCH (252 + 1) BCL (252). Aceasta nseamn: n registrul inferior al perechii BC, deci n C, se ncarc coninutul locaiei specificate:252; n registrul superior al perechii BC, deci n B, se ncarc coninutul locaiei urmtoare:253. nceputul de program arat deci astfel: IN A, (6), LD BC, (FCH). Urmeaz instruciuni de comparare, care se execut n interiorul UPI fr participarea magistralelor. Se poate folosi notaia (pentru compararea coninutului lui A cu B): CP A, B. De regul ns, compararea se poate face numai relativ la coninutul unui registru, s spunem A, deci acesta nu este necesar s apar n mnemonicul instruciunii, subnelegndu-se: CP B. Rezultatul acestei comparaii trebuie memorat n UPI pentru a fi folosit n continuare. Pentru aceasta, se folosesc o serie de bistabili interni, numii fanioane (Flags) cu destinaii specifice. Astfel, exist, de regul, bistabili notai cu S i Z, care pot fi afectai i de instruciunea de comparare. Bistabilul S-SIGN memoreaz semnul
360
rezultatului scderii efectuate n vederea comparrii. Dac semnul este negativ, S ia valoarea 1, iar dac este pozitiv, valoarea 0. Dac rezultatul este nul se poziioneaz n 1 bistabilul Z (zero), n caz contrar el lund valoarea 0. Investignd starea unor astfel de bistabili, UPI poate lua decizii pentru comanda corespunztoare a procesului, aa cum se va arta mai departe. Dup cum se observ din exemplul prezentat, funcionarea sistemului numeric presupune execuia, ntr-o anumit ordine, a unui numr de instruciuni, care formeaz programul micro-calculatorului pentru o aplicaie dat. Execuia acestor instruciuni se realizeaz n interiorul UPI, sau n exterior prin generarea de ctre UPI a unor semnale specifice pe magistrale (adrese i comenzi), care, dup cum s-a vzut, conduc la vehicularea i prelucrarea de date. 12.2.3. MEMORIA DE PROGRAM. MEMORIA STIV Fiecare tip de UPI poate s execute un numr de cteva zeci sau sute de tipuri de instruciuni din care se pot alctui programe pentru orice fel de aplicaie numeric. Proiectantul sistemului, cunoscnd acest set de instruciuni al UPI folosite, scrie programul corespunztor unei aplicaii date, sub forma unei succesiuni de instruciuni, n funcie de complexitatea problemei, programul cuprinde ntre cteva zeci i cteva sute de mii de instruciuni care trebuiesc executate automat, n ordinea prestabilit, de ctre UPI. Aceasta trebuie s fie, deci, informat, dup terminarea execuiei unei instruciuni, ce instruciune urmeaz s fie executat n continuare. Pentru ca acest proces s se desfoare automat, fr intervenia operatorului, se folosete tehnica de codare a instruciunilor, care const, n esen,
361
n numerotarea acestora ntr-un mod specific fiecrei UPI. n exemplul prezentat, consultnd setul de instruciuni furnizat de fabricant pentru circuitul Z-80 se constat c instruciunea IN A,(*) are codul DBH = 1101.1011, instruciunea LD BC,(*) are codul 01H= 0000.0001 .a.m.d. Folosind pentru codare numere binare cu 8 bii se pot codifica 28 = 256 de tipuri de instruciuni, numr suficient pentru majoritatea UPI uzuale. Execuia automat a programului stabilit presupune introducerea lui n sistemul numeric (microcalculator sau microcontroler) i meninerea lui att ct este necesar. Prin urmare, trebuie s existe n interiorul sistemului o memorie pentru program n care se nscriu codurile instruciunilor, n ordinea n care acestea apar n program, precum i informaii cu privire la parametrii instruciunilor (operanzi). Coninutul acestei memorii este deci format din octei binari, care constituie codul main al programului existnd o coresponden direct ntre acestea i forma literal (n mnemonice) scris iniial de proiectant. Codul main se nscrie n aceast memorie pornind de la o adres de origine (de start), de cele mai multe ori de la adresa zero (00) i fr discontinuiti. UPI extrage aceste coduri de instruciuni i operanzi din memoria de program, pe rnd, prin comunicarea succesiv a adreselor, n general, n ordine cresctoare. Pentru aceasta, n interiorul UPI trebuie s existe un numrtor de program - PC Program Counter", al crui coninut s fie incrementat (mrit cu cte o unitate) dup extragerea fiecrui octet. Dup execuia unei instruciuni, coninutul PC este debitat pe magistrala de adrese i prin activarea ulterioar a semnalelor MREQ i RD, coninutul urmtoarei locaii din memoria de program este debitat pe magistrala de date (Figura 12.10). De
362
aici, dup un timp necesar rspunsului memoriei, tacces, octetul respectiv poate fi preluat n UPI i memorat ntr-un registru special, numit registru de instruciuni (R.I.). Succesiunea acestor evenimente formeaz ciclul de extragere al codului instruciunii (Figura 12.11) urmat de ciclul de execuie al instruciunii discutat anterior. Funcionarea sistemului const n repetarea succesiv a acestor cicluri, ca n organigrama din figura 12.11.
T1 O
In acest moment datele sunt inscrise in registrul A al UPI Stare oarecare
T2
T3
AB
MREQ RD DB
Hi z
t acces
Hi z
Figura
Programele se stocheaz tot n RAM (devenind programe tranzitorii), ceea ce permite o mai mare flexibilitate, util n faza de dezvoltare. Pentru operator, in multe cazuri, n special la sisteme dedicate sau mici (microcontrolere etc.), programul de funcionare este parial (sau total) fix, n sensul c, la iniializare, sistemul execut
363
de fiecare dat de la sine" acest program sau pri ale lui. Rezult c n aceste cazuri programul trebuie stocat n memorii fixe, nevolatile (ROM, EPROM, EEROM), pstrndu-se astfel la ntreruperea alimentrii. Totodat, datele i rezultatele trebuie stocate n memorii cu scriere i citire (RAM) care mpart spaiul total de memorie al sistemului cu memoriile de tip ROM, (figura 12.3).
START PC =0 Extragere instructiune
NU
Instructiune de salt
DA
NU
Sfarsit de program
DA STOP
Figura 12.11. Algoritmul de extragere al codului instruciunii. n sisteme mai mari sau de uz general, de cele mai multe ori ROM-ul este redus la minimum iar programele se stocheaz tot n RAM, (devenind programe tranzitorii), ceea ce permite o mai mare flexibilitate, util n faza de dezvoltare a aplicaiilor. Pentru operatorul uman, programarea direct n limbaj cod-main este destul de dificil
364
(laborioas) i ca urmare, ineficient. Datorit acestui fapt, au fost elaborate limbaje la care, dup cum s-a vzut mai nainte, instruciunile sunt exprimate sub o form simbolic (cu mnemonice); asemenea limbaje se numesc limbaje de programare, care pot fi de mai multe niveluri. Un prim nivel al limbajelor de programare l constituie limbajele de asamblare, la care fiecare microinstruciune este reprezentat printr-o notaie mnemonic simpl, din 2 - 5 caractere, de tipul celor exemplificate anterior (LD, IN, ADRc etc.). Astfel, orice program iniial, numit i program-surs, poate fi scris - de ctre programator - ntr-un asemenea limbaj de asamblare (cu mnemonice). Pentru a fi executat de c alculator, acest program surs trebuie translatat (reconvertit) n limbaj cod-main care se face cu un program special de conversiune, denumit asamblor. Acest program (asamblor) este specific fiecrui tip de microprocesor sau microcontroler i este rezident n memoria ROM a sistemului numeric. Pentru aplicaii care necesit programe mari (cu sute sau mii de instruciuni), a fost dezvoltat i un al doilea nivel de limbaje de programare, mai evoluate, denumite limbaje de nivel superior, care permit n mai mare msur exprimarea algoritmic a sarcinilor prevzute pentru calculator. Translatarea programelor din limbaje de nivel superior n limbajul cod-main se face cu ajutorul unui program -de asemenea special - denumit compilator, n urma conversiei rezult, pentru fiecare instruciune din limbajul de nivel superior, mai multe instruciuni scurte proprii instruciunilor n cod-main. Dup cum s-a artat n .12.1, n structura UPI (microcalculator sau microcontroler) intr unitatea central de procesare sau microprocesorul, blocurile de memorie i blocurile I/O (vezi figura 12.1 i
365
12.3).
CLOCK
ADRESS BUS
Comunicatii prioritare cu exteriorul Bu ffer Adrese PC SP C B E L H Alte registre MUX/DMUX Buffer d ate R.T. D
RO M
RAM
I/O
DATA
BUS
CONTROL BUS
Acumulator
Flags S Z P C AC
U.A.L.
MICROPROCESOR
Figura 12.12. Arhitectura tipic a unei uniti cu microprocesor. Unitatea central, pe lng celelalte blocuri (U.A.L., registre etc.) conine Unitatea de comand i control (U.C.C.) care coordoneaz ntreaga activitate a microprocesorului i microsistemului prin setul de instruciuni proprii fiecrui sistem (Figura 12.12). n figur 12.12 pe lng registrele: Acumulator, R.I. i P.C., menionate deja, sunt prezente i alte registre cum sunt registrele duble (de tip B-C; D-E etc.), registrul tampon (R.T.), registrul cu fanioane (S, Z, P, C, AC), decodificatorul de instruciuni D.I. i altele. Aa cum deja s-a specificat, codul instruciunii
366
de executat este ncrcat n R.I. De aici el este introdus n D.I. (v. Figura 12.12) care va activa una din cele 2n ieiri ale sale corespunztoare codului respectiv. Aceste ieiri pornesc Unitatea de Comand i Control (U.P.C.) care genereaz semnale interne ctre componenii UPI i externe, prin magistrala de comenzi asigurnd execuia instruciunii conform cu organigrama din figura 12.11. La pornirea sistemului, un circuit special genereaz un semnal de RESET (tergere) ctre Numrtorul de Program (Program Counter -P.C.), care astfel va porni ntotdeauna de la o valoare fix, de regul 0. Dup cum am vzut, instruciunea de la aceast adres din memoria de program este trimis la UCC urmnd execuia acesteia i, n acelai timp, PC este incrementat (crescut cu o unitate) astfel nct, dup terminarea instruciunii curente, el va conine adresa instruciunii urmtoare. Urmeaz extragerea noii instruciuni apoi execuia ei .a.m.d. dup un ciclu ca cel din figura 12.13.
Extragere cod instructiune Incrementare PC Executie instructiune
Figura
programului nscris n PROM-uri, rspunznd totodat la diversele semnale externe sau interne. Nu ntotdeauna ns instruciunile sunt executate n ordinea n care sunt nscrise n memorie, majoritatea programelor necesitnd un salt la adresa unei alte instruciuni situat n alt regiune a memoriei, fiind necesar s se comunice microprocesorului adresa noii instruciuni (Figura 12.11). Aceasta se realizeaz prin inserarea unui tip special de instruciune care modific PC dndu-i valoarea adresei de salt. Saltul poate sa apar in program dac este ndeplinit o anumit condiie (salt condiionat) sau ntotdeauna dac s-a ajuns n punctul respectiv (salt necondiionat). Aceste operaii sunt impuse de logica de desfurare a activitii sistemului i de modul n care proiectantul sistemului concepe programul. n anumite cazuri vor fi necesare instruciuni de salt necondiionat ntre dou zone neadiacente din memoria de program, sau de salt condiionat la zone alternative ale acesteia, n acest ultim caz decizia de salt este luat de UCC n urma testrii unuia dintre indicatorii de condiii. De asemenea, anumite pri din program se pot repeta de mai multe ori n decursul executrii acestuia, ca de exemplu calculul logaritmului unui numr sau afiarea unei zone din memorie, cuprinznd rezultate, pe un terminal extern etc. n asemenea situaii este avantajos ca setul de instruciuni care execut operaia respectiv s fie considerat ca un ntreg, numit subrutin, n acest caz n programul principal se folosete instruciunea CALL - chemare a subrutinei n urma creia PC se ncarc cu adresa primei instruciuni a subrutinei apelate. Dup execuia acesteia, ultima sa instruciune, care este ntotdeauna, RET (RETURN) ntoarcere, determin revenirea n programul apelant, la punctul la care a avut loc saltul. Pentru aceasta,
368
dup ciclul de extragere a instruciunii de salt, PC este incrementat, iar coninutul su, avut n acel moment, este depus ntr-o zon special a memoriei RAM numit STIV (STACK).
STACK IN. RAM
SP SP SP SP
a) PUSH
b)
c) POP
d)
(intrare n stiv pe 201, 512, etc.) (revenire la programul principal apelant) Figura 12.14. Funcionarea memoriei stiv. Reiese din cele artate mai sus c saltul poate avea loc ctre o alt zon ulterioar a programului, fr ntoarcere la punctul de plecare (v. Figura 12.11), ctre o zon anterioar, cu reluarea unor instruciuni care au mai fost parcurse, sau ctre un bloc separat, specializat, de instruciuni denumit subrutin, cu ntoarcere n punctul de plecare, la adresa memorat n prealabil n memoria stiv, n acest din urm caz se poate ntmpla ca o anumit subrutin s apeleze la o alt subrutin .a.m.d. Prin urmare, n stiv vor fi depozitate, pe rnd, adresele de la care trebuie reluat programul astfel c prima adres de salt va fi ultima care se extrage din stiv. Pentru a se ti n care zon din RAM sunt
369
depozitate acestea, adic unde se afl adresa locaiei din stiv n care se gsete adresa de revenire n program, codul ultimei adrese (revenire) intrate n stiv se memoreaz ntr-un registru special numit INDICATOR DE STIV (STACK POINTER - SP). ntruct stiva se umple de obicei de sus n jos (figura 12.14), la fiecare salt n program SP i decrementeaz coninutul, iar la fiecare revenire i-l incrementeaz. 12.2.4.INTRERUPERI I PRIORITI. ACCESUL DIRECT LA MEMORIE (DMA). SINCRONIZAREA MEMORIEI n mod normal n comunicaiile cu echipamentele externe microprocesorul (P) asigur intrrile i ieirile cu date din sistem prin porturile I/O sau prin comunicaii directe cu exteriorul, de tipul INT, READY, WAIT etc. (Figura 12.3). Dup cum s-a artat n .12.2.2, datele de la porturile de intrare sunt transferate prin D.Bus mai nti n P i apoi n RAM. De asemenea, pentru a fi trimise n exterior datele din RAM sunt mai nti preluate de P prin D.Bus i apoi depuse de aceasta n portul de ieire. n raport cu echipamentele externe P poate avea o vitez mai mic, mai mare sau comparabil cu a acestora. Exist, de exemplu, cazuri n funcionarea unui sistem cu microprocesor n care acesta comunic cu un echipament (mult) mai rapid. Se tie c, n general, tehnologiile actuale impun un compromis ntre gradul de integrare i vitez. Majoritatea microprocesoarelor actuale, realizate n tehnologia MOS, cu un grad mare de integrare, au o vitez mai redus dect unele procesoare clasice realizate cu circuite bipolare (ECL, TTL-Schottky) care echipeaz anumite sisteme numerice de performan (CAN rapide, calculatoare mari sau superordinatoare etc.). n
370
aceste cazuri, pentru transferul bidirecional de date este avantajos ca echipamentele externe, mai rapide, s aib acces direct la memoria sistemului cu P (Direct Memory Access - DMA) pentru a efectua transferuri de date cu vitez ridicat, n aceste situaii P trebuie s cedeze controlul magistralelor, echipamentului extern respectiv pentru evitarea conflictelor de magistral (dou surse de date debitnd pe aceleai linii). Acest lucru se realizeaz prin transmiterea de ctre echipamentul extern a unui semnal BUS-REQUEST = BUSRQ direct ctre P. La recepionarea acestuia, n urma sincronizrii cu activitatea curent, P-ul i ridic liniile de ieire spre magistrale n starea de nalt impedan (Hi-Z), cednd controlul acestora echipamentului extern i semnalnd acest fapt prin generarea n exterior a semnalului BUSAK = BUS ACKNOWLEDGE (acceptarea cererii de DMA). n felul acesta el i suspend temporar activitatea, pn la dezactivarea liniei BUSAK, permind n intervalul respectiv citirea i scrierea de blocuri mari de date, cu vitez ridicat din i n memoria sistemului cu microprocesor. Pentru a se putea activa diverse semnale de cerere sau/i rspuns, microprocesorul are n construcia capsulei o serie de terminale destinate special unor asemenea comenzi sau rspunsuri. In figura 12.15, se arat structura pinilor pentru microprocesorul I80486. Exist i numeroase cazuri cnd, dimpotriv, P lucreaz mult mai rapid dect echipamentul extern cu care se afl n conversaie (cazul echipamentelor care cuprind pri electromecanice, convertoare analog-numerice, integratoare, terminale alfanumerice deservite de un operator uman etc.). n aceste situaii P ar trebui, ca dup fiecare cuvnt schimbat
371
cu perifericul s se nchid ntr-o bucl de ateptare permindu-i acestuia s ajung din nou n posibilitatea de a comunica.
CLK D0...D31 ADS# CONTROLUL MAGISTRALEI BER# BE2# BE1# BE0# M/IO# D/C# R/W# LOCK# PLOCK# VALIDAREA OCTETILOR A2...A31 Magistrala de adrese 32 biti
MAGISTRALA DE DATE
RDY# INTR
SEMNALE
INVALIDARE CACHE CONTROL CACHE PAGINA CONTROL CACHE RAPORT ERORI NUMERICE MASCA BITULUI 20 DE ADRESA
{ { { {
INTEL 486
HOLD HLDA BOFF# BREQ BRDY# BLAST# BS8# BS16# DP3 DP2 DP1 DP0 PCHK#
ARBITRARE MAGISTRALA
PARITATE
Figura 12.15 Structura de conexiuni a microprocesoarelor de tip INTEL 486. De exemplu, dup transmiterea unui caracter la o imprimant, urmeaz o ntrziere destul de mare pn cnd sistemul electromecanic al acestuia va poziiona corespunztor capul de imprimare i va tipri caracterul respectiv, n acest interval P ar putea efectua foarte multe operaii din programul curent. Pentru a fi posibil acest lucru se prevede o linie de
372
ntrerupere pe care echipamentul extern transmite semnalul INT ntrerupt, prin care acesta anun c se afl n situaia de a recepiona sau transmite un nou mesaj. La primirea acestui semnal, P i termin instruciunea care era n curs i apoi intr automat ntr-o subrutin care deservete cererea respectiv de ntrerupere. Aceast subrutin de tratare a ntreruperii este dedicat deci echipamentului periferic apelant i parcurgerea ei asigur schimbul unui nou mesaj ntre acesta i sistem. Dup execuia subrutinei (n care are loc dialogul propriu-zis ntre P i perifericul apelant), microprocesorul sare din nou n programul principal i l continu din punctul n care acesta fusese ntrerupt. Nu ntotdeauna ns P i poate suspenda activitatea, ca de exemplu atunci cnd se proceseaz unele date n timp real, sau cnd este n curs deservirea unei cereri de ntreruperi a altui periferic. Pentru luarea deciziei n privina fiecrei cereri de ntrerupere, P consult starea unui bistabil intern sau a unui indicator de condiie din registrul F - fanionul EI - ENABLE INTERRUPTS permiterea ntreruperilor. Acest fanion poate fi dezactivat prin program n care caz ntreruperea nu este acceptat (este mascat); de asemenea, se dezactiveaz automat la acceptarea unei cereri de ntrerupere i pn la satisfacerea complet a acesteia. Pe tot acest interval unele microprocesoare (v. I. 8080) semnalizeaz n exterior starea respectiv prin linia INTA interrupt acknowledge, avertiznd pe ceilali abonai c se afl n situaia de a nu le putea accepta eventualele lor cereri de ntrerupere. n cazurile n care dou sau mai multe echipamente externe ar putea lansa simultan cereri de ntrerupere, trebuie prevzut o logic special de
373
decizie pentru tranarea conflictului n favoarea echipamentului cruia i s-a atribuit de la nceput cea mai mare prioritate, n acest scop se pot folosi controlori de ntreruperi integrai (Programmable Interrupt Controllers" - PIC) care iau decizia respectiv n concordan cu operaiile descrise n foile lor de catalog. Din cele prezentate se vede c tratarea unei cereri de ntrerupere este similar cu tratarea unei subrutine, dar comanda respectiv nu se face prin program ci printr-un semnal extern. Evident c i n acest caz, dup parcurgerea subrutinei respective de ntrerupere sistemul trebuie s se rentoarc n punctul iniial din program. Pentru aceasta toate registrele interne ale P i cuvntul de stare (Processor Status Word" - PSW) trebuie salvate n stiv, fiind refcute ulterior la ntoarcerea n programul principal. n cadrul unui sistem numeric pot exista anumite blocuri cu vitez mai sczut (dar mai mare dect a sistemelor periferice menionate mai sus) cum sunt unele categorii de memorii cu timp de acces mai mare (memorii MOS, memorii pe suport magnetic etc.). Pentru a asigura comunicarea corect sincron, cu asemenea blocuri, microprocesorul trebuie s atepte un timp scurt necesar accesului la astfel de memorii; n urma unui semnal primit de la asemenea echipamente (care la unele microprocesoare este comunicat prin terminalul READY, din P), microprocesorul va intra n starea de ateptare lansnd n exterior (ctre memorie) semnalul WAIT prin care arat c este gata s primeasc date. Aceste semnale sunt sincronizate de ctre semnalul de tact (ceas) al microprocesorului care acioneaz i determin ciclurile de funcionare ale acestuia .
374
12.3. MICROCONTROLERE (C) 12.3.1. CONSIDERAII GENERALE nc din anii '80 ai secolului trecut s-au urmrit, i chiar au fost realizate, structuri de microcalculator ntr-un singur circuit integrat, adic un calculator pe un cip de semiconductor . Aceast tendin s-a dezvoltat, astfel nct tehnologiile microelectronice moderne permit, n mod curent, integrarea alturi de procesor i a unei anumite cantiti de memorie (ROM, RAM) i a unor porturi I/O generale i speciale, structura rezultat fiind denumit microcontroler (C). Dup cum s-a menionat, structura unui microcontroler cuprinde, n proporie mai mare sau mai mic, toate blocurile unui calculator numeric, ceea ce justific denumiri alternative de genul: microcalculator sau calculator monocip. Din punct de vedere funcional, microcontrolerul poate fi vzut n dou moduri: a. Sistem de automatizare, n aceast variant un microcontroler este un sistem deschis care primete, pe o serie de porturi, semnale din exterior i genereaz alte semnale n conformitate cu un algoritm de funcionare; b. Sistem de calcul dedicat. Deoarece structura intern a microcontrolerului este cea de calculator numeric universal, cu o gam larg de blocuri periferice i posibiliti de interfaare cu echipamente standard, el poate fi folosit i pentru prelucrri de date n timp real sau on-line. Exist, de altfel, o coresponden ntre cele dou aspecte avnd n vedere c cea mai flexibil variant de automatizare o constituie cea realizat pe o structur de calculator numeric cu interfee adecvate, iar calculatorul numeric este, - dup cum
375
am vzut - un automat cu stri finite care execut la rndul su - un numr de pai n mod secvenial, n conformitate cu un algoritm (program). Exist ns aplicaii care pun accent pe partea de comand i control n mod similar aplicaiilor de automatizare i altele care pun accent pe prelucrri de date n mod similar aplicaiilor tehnicii de calcul. In primul caz sunt utilizate mai mult posibilitile de dirijare i transfer de date, care pot fi fcute cu microcontrolere, iar n al doilea caz posibilitile de prelucrare aritmetic i logic a datelor care se efectueaz cu calculatoare electronice numerice. Primele aplicaii de electronic digital foloseau pentru ambele categorii de funciuni menionate chiar calculatoare numerice de uz general, ceea ce ridica foarte mult costurile i limita aplicaiile la o clas foarte restrns. Un prim pas spre proliferarea acestor tehnici a fost fcut odat cu dezvoltarea tehnologiilor microelectronice prin realizarea memoriilor semiconductoare i n special prin integrarea ntr-un singur cip a unei uniti centrale de calculator, devenit astfel microprocesor. Complexitatea de prag" de la care logica programat, n comparaie cu logica cablat (v. .12.1), devine rentabil a sczut continuu odat cu creterea gradului de integrare ajungnd la limita de un singur cip atunci cnd microprocesorul a ncorporat memorie i porturi de intrare-ieire, devenind microcontroler. 12.3.2. STRUCTURA GENERAL A MICROCONTROLERELOR Dup cum s-a menionat, microcontrolerul este un microprocesor avnd memorie i porturi de intrare/ieire integrate pe un singur cip. Prin urmare, urmtoarele blocuri sunt prezente obligatoriu la toate microcontrolerele, formnd nucleul standard:
376
aria de registre - se folosete pentru stocarea datelor i rezultatelor pariale frecvent utilizate de sistem; unitatea aritmetic i logic (U.A.L.) destinat prelucrrii datelor prin aplicarea unor operatori aritmetici sau logici n urma crora se obin rezultate intermediare sau finale; memorii de program i de date - stocheaz datele i codurile de instruciuni care alctuiesc programul de funcionare al sistemului; porturi de intrare/ieire - asigur comunicarea cu exteriorul, n vederea primirii i generrii de date i semnale; unitatea de comand i control (U.C.C.) genereaz semnale de comand pentru toate componentele sistemului i asigur desfurarea algoritmului n funcie de condiiile interne i externe de care acesta trebuie s in seama. Pe lng acestea, la majoritatea microcontrolerelor sunt integrate i blocuri suplimentare, specifice, cum ar fi: timere i numrtoare folosite pentru msurarea intervalelor de timp i contorizarea unor evenimente interne sau externe; circuite de autosupraveghere (Watch-dog) folosite pentru controlul permanent al funcionrii normale a sistemului i nlturarea automat a situaiilor de blocare prin reiniializarea acestuia; blocuri de comunicaie - porturi prin care se poate face comunicaie serial sau paralel cu alte microcontrolere, computere sau cu alte sisteme care sunt prevzute cu interfee de comunicaie standard;
377
blocuri parial analogice- porturi de intrare sau ieire care primesc sau genereaz semnale analogice, n general acestea includ convertoare analog-numerice,(CAN) i numeric-analogice, (CNA), comparatoare analogice etc. 12.3.2.1. Aria de registre (A.R.) n sistemele numerice informaia se retransmite ntre registre n mod repetat. Pentru a se putea utiliza registrele n scop general, este necesar posibilitatea de transfer ntre oricare dintre aceste registre, proprietate pe care o vom numi n continuare ortogonalitate. Aceast problem prezint dou aspecte: conectarea unui Registru Surs (RS) la mai multe Registre Destinaie (RD) i conectarea mai multor RS la un RD. n cazul sistemelor cu microprocesor s-a artat c aceste probleme se rezolv ntr-un mod destul de economic folosind conceptul de magistrale echipate, de regul, cu pori three state" pentru obinerea regimului de nalt impedan (Hi-z). Aceleai procedee se utilizeaz, cu unele mici particulariti, i n cazul microcontrolerelor sau calculatoarelor monocip. Trebuie remarcat c, n principal, la microcontrolere transferurile de date se fac ntre registrele interne ale sistemului, ceea ce nseamn c un registru care este destinaie la un moment dat poate deveni surs la un moment ulterior, informaia din el trebuind transferat ctre un alt registru. Prin urmare i ieirile registrelor, care sunt destinaie la un moment dat, vor fi conectate la magistrala sistemului. O situaie similar exist i pentru registrele care sunt surs la un moment dat i pot deveni destinaie la un moment ulterior, ceea ce necesit ca i intrrile lor s fie conectate la
378
magistral, astfel c registrele nu sunt n general specializate ca surs sau destinaie, ci sunt bidirecionale, ca n figura 12.16 cu variante, aa cum se vede din figura 12.16.a, (cu varianta sintetic din figura 12.16,b).
Ld OE
DI DO
Ld OE
Ld OE DI/O
a)
b)
Figura 12.16. Conectarea regitrilor la magistrale: ortogonalitatea conectrii. n ultima figur se evideniaz c, de fapt, n acest mod de conectare la magistral, intrrile i ieirile omoloage ale registrului sunt comune, fiind notate DI/O - intrri/ieiri de date. Se observ c sensul transferului cu magistrala este determinat de semnalele Ld (ncarc) i OE (Output Enable), care comand intrarea datelor de la magistral n registru, respectiv ieirea datelor din registru ctre magistral. Excepie fac numai registrele prin care informaia iese din sistem, numite porturi de ieire care au numai intrrile cuplate la magistral, i porturile de intrare, prin care informaiile ptrund n sistem i care au numai ieirile cuplate la magistral; n cazul microcontrolerelor, porturile de intrare cuprind i bistabili de tip D, deci au asociate i registre chiar dac obligatorie este de fapt numai partea de pori cu trei stri. Un sistem
379
ortogonal de registre de uz general este prezentat detaliat n figura 12.17. Acelai sistem asociat i cu porturi de intrare i ieire este prezentat detaliat n figura 12.18.
Ld1 OE 1
Ld OE DI/O
R1
Ld 2 OE 2
Ld OE DI/O
R2
Ld n OE n
Ld OE DI/O
Rn
Ld 1 OE 1
Ld OE DI/O
R1
Ld 2 OE 2
Ld OE DI/O
R2
Ld n OE n
Ld OE DI/O
Rn
i i
Ld OE
DI DO
PI i
OE PI
Ld
PO i
Ld OE
DI DO
PO i
OE PO i
Figura 12.18 Sistem ortogonal de registre de uz genera, asociat i cu porturi de intrare i ieire. Un astfel de ansamblu poate fi reprezentat chiar mai concis, ca n figu ra 12.19, unde registrele formeaz un bloc comun numit arie de registre (A.R.), acesta constituind un prim subansamblu obligatoriu al unui procesor dintr-un microcontroler. In aria de registre de uz general sunt meninute (memorate) diversele informaii de interes imediat pentru desfurarea programului. Totui, i n cazul microcontrolerului, aria de
380
registre este o resurs finit dimensional i nu poate reine toate informaiile care se utilizeaz n programe mai complexe, n acest scop fiind utilizat, n general, o extindere a ariei de registre numit memorie, care va fi prezentat n continuare.
OUT IN PIO m OUT IN PIO 2 OUT IN PIO 1
OE Ld OE Ld OE Ld
DIOm
DIO2 DIO1
OE Ld OE Ld OE Ld
Rn R2 R1 DB
R R R DB
La microprocesoarele clasice aria de registre este integrat n interior avnd pn la cteva zeci de registre de uz general, precum i unele speciale. La microcontrolere, n circuit sunt integrate i porturile de intrare-ieire, care pot fi reprezentate logic ntr-un bloc comun cu aria de registre ca n figura 12.20, transferurile de informaii fiind ortogonale n interiorul ntregului bloc. Totui, la unele microcontrolere RISC, (acestea sunt microcontrolerele care funcioneaz cu un set redus de instruciuni), moderne, registrele sunt cuplate ntr-un mod mai complex, ntr-o structur cu trei magistrale, care mrete viteza de procesare, n acest caz
381
ortogonalitatea va fi mai restrns, dar pentru programator ansamblul arie de registre - porturi, poate fi privit n continuare n mod unitar, cu respectarea unor constrngeri (excepii ale unora dintre acestea, la anumite instruciuni). 12.3.2.2. Memoria Pentru rularea algoritmilor simpli sunt suficiente, n general, cele cteva zeci de registre din aria de registre a nucleului procesor. Majoritatea microcontrolerelor sunt ns proiectate pentru a face fa i unor algoritmi compleci, cu un numr mare de date i coduri de instruciuni. Pentru memorarea acestora este necesar suplimentarea numrului de registre pn la cteva sute sau mii, care vor fi integrate n microcontroler, ntr-un bloc de memorie cu acces aleatoriu (RAM - Random Access Memory) pentru date i respectiv ROM pentru coduri de instruciuni. Dup cum s-a artat n .12.2 microprocesoarele clasice folosesc astfel de blocuri integrate n circuite separate care sunt accesate prin intermediul unei magistrale de adrese prin care se transmite numrul (adresa) registrului (locaiei) cu care urmeaz s se fac transferul. De altfel i multe microcontrolere au posibilitatea ca, pe lng memoria RAM i ROM intern, limitat, s lucreze i cu module RAM i ROM externe, dac algoritmul rulat este deosebit de complex. Pentru adresarea memoriilor RAM de mare capacitate de la microcontrolere se folosete, evident, tehnica decodificrii, exact ca n sistemele cu microprocesoare (v. .12.2) sau n alte sisteme numerice de calcul. Prin urmare, n microcontroler, alturi de registre, se afl integrat i un decodificator care va genera un singur semnal din
382
cele 2n pe care le poate genera cu n bii de intrare. n felul acesta, n loc de N linii de comand a registrelor (unde N este numrul de registre) se pot folosi numai log2N linii, numr absolut rezonabil. De exemplu, pentru o memorie uzual de 16 MB, n loc de aproximativ 16 milioane de linii individuale se folosesc numai log216M, adic 24 de linii care vor transmite un numr binar - adresa locaiei care va fi accesat pentru a face un transfer cu magistrala. Acest procedeu introduce ns n algoritm o etap suplimentar, de formare a adresei, care, n principiu, ncetinete transferul cu memoria fa de transferurile cu aria de registre din nucleu (de pe cip). In concluzie, A.R. are o capacitate mic i vitez mare, deci se recomand s fie folosit pentru datele de imediat folosin, iar RAM are capacitate mare i vitez mai mic, fiind folosit pentru informaiile care sunt accesate mai puin frecvent. La unele microcontrolere i registrele din AR sunt identificate numeric folosindu-se deci i intern procedee de adresare similare cu RAM. De exemplu, la microcontrolerele AVR de 8 bii, registrele din AR sunt r0 - r31 ceea ce sugereaz utilizarea intern a tehnicii de adresare. Viteza transferului cu acestea provine din faptul c numrul respectiv poate fi specificat direct n codul instruciunii, din care ocup 5 bii, (log232) i nu sunt necesare etape suplimentare de program pentru calcularea adresei. Din punct de vedere al programatorului diferena principal ntre registre i memorie o constituie posibilitatea de adresare indirect a unei locaii de memorie. Astfel, n timp ce numrul unui registru vizat pentru transfer este specificat chiar de instruciunea respectiv, n cazul memoriei exist i o posibilitate suplimentar. Numrul locaiei cu care se face transferul (adresa) poate fi, de asemenea,
383
specificat de instruciune, n care caz avem adresare direct, sau poate fi coninut ntr-un registru la care se refer instruciunea, n care caz avem adresare indirect. Prin urmare, adresele ctre memoria de date pot proveni att din zona de execuie a instruciunilor din care fac parte integrant, ct i din zona ariei de registre la adresarea indirect. Schema zonei de RAM (cu cele doua posibiliti de adresare), AR i ALU din nucleul de microcontroler este prezentat n figura 12.21.
Adresare directa Adresare indirecta Adrese RAM
AR
ALU
Figura 12.21. Schema zonei de RAM (cu cele doua posibiliti de adresare), AR i ALU din nucleul de microcontroler. La microprocesoare exist i o diferen de tehnologie. Registrele fiind realizate cu tehnologia performant a cipului microprocesor sunt mult mai rapide, avnd timpi de acces de 1-2 ns la nivelul anului 2000, n timp ce memoria RAM este realizat cu tehnologii mai ieftine dar care permit capaciti mari, avnd timpi de acces de 7-12ns. Viteza mult mai sczut a me moriei externe poate fi
384
ns compensat n mai mare msura prin tehnica memoriei cache, astfel nct nu este absolut necesar mrirea tehnologic a vitezei RAM. Memoriile RAM externe utilizate de microprocesoare n calculatoarele universale sunt de tip dinamic, necesitnd remprosptarea periodic a informaiei. Aceasta conduce la capaciti foarte mari dar necesit un bloc special de refresh, integrat, de cele mai multe ori, mpreun cu alte componente, care supervizeaz fluxul informaiei n sistem n aanumitul chip-set. Pe de alt parte, n cazul microcontrolerelor, ideea fiind de realizare a sistemului cu minim de componente, nu se utilizeaz, n general, circuite refresh, deci eventualele memorii externe folosite vor trebui s fie de tip static avnd capaciti mai mici, dar i viteze mai ridicate. 12.3.2.3. Porturi generale de intrare/ieire Dup cum s-a artat mai nainte, anumite registre, numite porturi de intrare, sunt folosite pentru intrarea informaiilor n sistem, avnd numai ieirile cuplate la magistral; alte registre numite porturi de ieire, sunt folosite pentru ieirea informaiilor din sistem, avnd numai intrrile cuplate la magistral. Deoarece microcontrolerele au integrate n interior aceste porturi, intrrile i respectiv ieirile porturilor sunt conectate la pinii capsulei. Numrul de pini ai circuitului integrat fiind o resurs limitat, n general, se folosete fiecare pin n mod bidirecional, el putnd funciona la un moment dat ca intrare, iar la alt moment ca ieire. Sensul de transfer poate fi programat cu un bistabil (de tip D), de selecie a direciei, asociat
385
D CLK
Comanda directie
PIN
Citire pin
D CLK
Comanda OUT
Figura
Bistabilii de ieire i de sens de la unele microcontrolere pot fi i citii astfel c porturile respective pot fi folosite ca i registrele de uz general. Pentru aceasta ieirile celor doi bistabili sunt cuplate prin pori three-state la magistral (v. de exemplu schemele porturilor la microcontrolerele AVR). Rezult c n spaiul de adrese, la fiecare port, pot fi asociate cte trei adrese: cea de port de ieire (latch cu posibiliti de scriere i citire), cea de registru de direcie (de asemenea latch cu posibiliti de intrare-ieire) i cea de intrare, care nu are reinere i poate fi doar citit. Trebuie remarcat c, n general, la microcontrolere nu exist spaii separate de adres pentru registre, memorii i porturi. Toate acestea sunt plasate ntr-un spaiu unic, rmnnd n sarcina programatorului sau compilatorului s in seama crei componente i aparine o anumit zon de adrese. Exist i excepii, cum ar fi, de exemplu, unele microcontrolere Motorola care au anumite
386
registre considerate ca aparinnd nucleului-procesor, deci n afara spaiului de memorie, ele nefiind referite prin numere ci prin nume. n afar de porturile generale, n spaiul de adresare mai exist i o serie de porturi speciale prin care nucleul-procesor comunic cu diversele blocuri integrate n microcontroler. Majoritatea acestor blocuri au asociate o serie de registre folosite pentru stabilirea modului de lucru i pentru transferurile curente cu restul sistemului. Chiar i unele blocuri de memorie, cum ar fi cele de tip EEPROM sau memorii externe ataate microcontrolerului comunic cu acesta prin intermediul unor astfel de registre-porturi. 12.3.2.4. Unitatea de comand i control (UCC) Microcontrolerele sunt n esen sisteme automate de calcul numeric a cror funcionare poate avea loc fr intervenii din exterior pe perioade destul de lungi, n acest timp diversele blocuri constituente, cum sunt cele descrise anterior, interacioneaz schimbnd informaii dup anumite reguli descrise de un algoritm. De asemenea, i interaciunea cu exteriorul presupune parcurgerea automat a unui numr de pai, astfel ca interveniile unui eventual operator uman s se reduc la strictul necesar. Acest mod de funcionare implic existena n interiorul microcontrolerului, ntocmai ca la microprocesor, a unui automat cu stri finite capabil s coordoneze ntreaga activitate a sistemului n conformitate cu algoritmul necesar aplicaiei. Ca la orice procesor (sau micro-procesor) respectivul bloc se numete Unitate de Comand i Control i constituie o caracteristic esenial a arhitecturii unui microcontroler, stabilind setul de instruciuni al acestuia.
387
De fapt, automatizarea execuiei instruciuni-lor are loc pe dou nivele pentru uurarea muncii programatorului. Detaliile de baz ale funcionrii, la nivel de semnale de comand a registrelor, numrtoarelor etc. sunt grupate n succesiuni de pai care alctuiesc aciuni standard (instruciuni), acest nivel constituind automatizarea execuiei instruciunilor. De asemenea, la rndul lor, instruciunile sunt grupate, n conformitate cu algoritmul, ntr-o succesiune numit program, execuia lor fiind, de asemenea, automatizat. Ca la orice sistem numeric, pentru microcontroler pot exista mai multe tipuri de instruciuni, cum ar fi: instruciuni de transfer, instruciuni aritmetice i logice, instruciuni de ramificaie i control al programului, instruciuni speciale. Proiectantul procesorului stabilete o list cu instruciunile pe care le consider necesare a fi implementate n funcie de destinaia procesorului respectiv i de costul impus acestuia. Aceast list formeaz setul de instruciuni al procesorului i cuprinde cteva zeci sau sute de instruciuni. Condiia principal este ca setul de instruciuni s fie complet, n sensul c trebuie s permit programarea oricrui algoritm numeric. n ceea ce privete numrul de instruciuni din set, exist dou tendine opuse. Varianta tradiional este de a prevedea ct mai multe instruciuni n set, pentru a-i oferi programatorului posibilitatea de a alege pe cele mai avantajoase pentru diverse aplicaii. Astfel de procesoare sunt denumite CISC (Complex Instruction Set Computer) i au seturi de pn la cteva sute de instruciuni; n principal microprocesoarele din calculatoarele universale, cum sunt cele din familia Intel x86 sau Motorola 68x sunt de tip CISC. n ultima perioad au nceput ns s se impun i procesoare care au,
388
dimpotriv, un set redus de instruciuni, numite procesoare RISC (Reduced Instruction Set Computer). Sa constatat c un set complet de instruciuni poate fi realizat i cu un numr de 20-30 de instruciuni puternice i aceast alegere simplific mult arhitectura procesorului i sistemului, aducnd, prin aceasta, o cretere semnificativ de vitez. Microcontrolerele moderne sunt realizate, din ce n ce mai des, sub forma RISC, dar i unele microprocesoare de mare performan pentru calculatoare complexe au o astfel de structur. De altfel, chiar i microprocesoare CISC tipice, cum ar fi cele Intel, au nceput s fie realizate intern ca un nucleu RISC emulndu-se ctre exterior setul extins, tradiional, de instruciuni. 12.3.3. MEMORIA STIV. NTRERUPERI Dup cum s-a precizat, n structura microcontrolerului se gsesc toate tipurile de registre generale din orice sistem numeric, cum sunt registrele simple i duble, registrul acumulator, R.I, PC, decodificatoare i demultiplexoare etc., precum i registre speciale sau alte blocuri specifice unui microcontroler (v. .12.3.4.). De asemenea, i n cazul acestor sisteme se lucreaz cu memoria stiv plasat n memoria RAM din nucleul procesor i sunt implementate toate procedeele de execuie automatizat a programelor, automatizarea subrutinelor, tratarea ntreruperilor i funcionarea n regim DMA etc. n majoritatea programelor se ntlnesc grupuri de instruciuni care sunt necesare n mai multe locuri n program. De exemplu, cele mai multe microcontrolere nu au instruciuni de nmulire sau mprire, astfel c dac e nevoie de astfel de operaii ele vor trebui realizate cu grupuri de
389
instruciuni de adunare, deplasare, scdere etc. Nu este avantajos s se scrie de fiecare dat cnd este nevoie codurile instruciunilor respective chiar dac unele asambloare pot face acest lucru prin aanumitele macroinstruciuni, deoarece se ocup loc n memoria de program iar aceasta este o resurs limitat la microcontrolere. Mult mai avantajos este ca grupurile respective s fie scrise o singur dat n memorie i s se fac un salt ctre ele atunci cnd este necesar. Saltul ctre grupurile respective de instruciuni, care sunt subrutine, se numete apelare sau chemare de subrutine, i va fi executat prin intermediul unei instruciuni specifice numit CALL. Apelarea unei subrutine se face simplu, prin ncrcarea paralel n PC a adresei instruciunii de nceput (adresa de start) a subrutinei respective. Dup cum s-a artat n .12.2.3, cnd a fost prezentat funcionarea subrutinelor, este necesar ca dup terminarea execuiei acesteia s se revin n programul principal, la instruciunea imediat urmtoare celei care a apelat subrutina. Adresa acesteia se afla n PC n momentul nceperii execuiei saltului i, naintea ncrcrii n PC a noii adrese, cea existent trebuie memorat undeva n sistem, operaiune denumit salvare. Dup terminarea subrutinei, revenirea n programul principal se face prin ncrcarea n PC a adresei salvate anterior, i acest lucru va fi fcut prin intermediul unei instruciuni finale a subrutinei, instruciune de RETURN, complementar celei de CALL. n legtur cu salvarea adreselor de revenire exist dou posibiliti. Astfel, o variant ar fi salvarea ntr-un registru specializat care s fie destinaie la instruciunea CALL i surs la instruciunea RETURN. De fapt, un singur registru nu este n general suficient, deoarece de multe ori
390
programul cere ca o subrutin s apeleze la rndul ei o alt subrutin, aceasta pe o a treia, .a.m.d. Astfel de subrutine le vom numi n continuare nestate (engl. nest = cuib). De exemplu, dac sunt necesari n program logaritmi, se va scrie o subrutin pentru logaritm, care apeleaz o subrutin de calcul a factorialilor, care apeleaz la rndul ei o subrutin de nmulire. Fiecare apel de subrutin va necesita memorarea PC din momentul respectiv, astfel c n exemplul de mai sus trebuiesc memorate trei adrese de revenire. Ele vor fi aezate ntr-o zon special de memorare, care, dup cum s-a menionat, poart numele de stiv (engl. Stack), n care aranjarea se face la locaii consecutive. Multe microcontrolere folosesc un numr de 3 -12 registre ca stiv n care caz sunt posibile subrutine-nestate pe tot attea niveluri. O alt variant este cea n care stiva este plasat n memoria de date, n care caz sunt posibile nivele mult mai mari de nestate. Microcontrolerele care au stiva n RAM permit implementarea unor algoritmi mult mai compleci, n care programatorul nu trebuie s mai aib grija nivelului de nestate, n schimb, trebuie reinut adresa de RAM la care se afl stiva, i n acest scop este folosit un registru specializat numit Indicator de Stiv sau Stack Pointer (SP). Acest registru trebuie ncrcat (iniializat) la nceputul programului cu valoarea primei locaii n care se va face salvarea n stiv i el este modificat automat de instruciunile CALL i RETURN. Avnd n vedere c stiva are o dimensiune variabil, n funcie de nivelul de nestate la un moment dat, ea ar putea interfera cu zonele de date din RAM i de aceea este preferat ca ea s se afle n captul superior al memoriei, la adresele cele mai mari, iar datele s fie plasate n captul inferior, pentru a le deprta ct mai mult. In acest caz, stiva avanseaz n jos la instruciunile CALL i revine n
391
sus la instruciunile RET. Deci la fiecare instruciune CALL adr trebuie s se petreac urmtoarele evenimente: PC este salvat n stiv la adresa indicat de SP; SP este decrementat, pregtindu-se o eventual salvare a PC ntr-o nou locaie, mai jos, dac subrutina curent va apela o alta; PC este ncrcat paralel cu adr - adresa de start a subrutinei apelate. De asemenea, la instruciunea RET, se petrec urmtoarele: SP este incrementat pentru a reveni la valoarea la care a fost salvat adresa de start a subrutinei din care se revine; PC este ncrcat din stiv de la adresa indicat acum de SP. De altfel, la microprocesoare i la unele microcontrolere, stiva este utilizat i pentru salvarea rapid a unor date existente n registre, fr a avea grija adresei unde se face acest lucru, mizndu-se pe lucrul automat cu SP. Instruciunile standard folosite n acest scop sunt PUSH (mpinge) i POP (readuce) care au aciuni complementare. Astfel, instruciunea PUSH r va avea ca efect salvarea n stiv, la adresa coninut n acel moment de SP, a registrului r, dar i decrementarea automat a lui SP n vederea pregtirii unei eventuale noi salvri n stiv. Invers, instruciunea POP r va incrementa mai nti SP, care fusese decrementat la salvarea precedent i va ncrca n registrul r coninutul locaiei de stiv indicat acum de SP. Se observ c lucrurile se petrec automat, programatorul nefiind interesat de SP, dar trebuind s aib grij ca la fiecare instruciune PUSH s existe o
392
instruciune POP complementar pentru revenirea SP la valoarea iniial. Dac nu se respect aceast regul, stiva va avansa treptat i va ptrunde n cele din urm peste zonele de date. Anumite programe asistente (asamblor sau compilator) semnaleaz posibilitatea depirii zonei sigure de stiv (Stack Overflow) nainte de rularea programului, dar nu toate pot prevedea depirea acesteia n cursul rulrii dac nu este fcut corect mperecherea instruciunilor care decrementeaz i incrementeaz SP. Tehnica ntreruperilor este folosit n mod normal pentru tratarea unor evenimente rare i necorelate cu programul principal. Cnd lucreaz n regim de ntreruperi, procesorul va executa, n majoritatea timpului, programul principal, la viteza maxim posibil. Numai cnd apare evenimentul care necesit o tratare special, rularea programului principal va fi ntrerupt i se va face salt ctre o subrutin ce conine instruciunile necesare tratrii acestui eveniment. Subrutina de tratare a ntreruperii va funciona dup regulile prezentate anterior: salvare PC, decrementare SP i ncrcare paralel a PC cu adresa de start, apoi operaiile inverse la terminare i revenire n programul principal. Ea nu va fi declanat ns de o instruciune CALL, ci de un semnal din interiorul sau exteriorul sistemului, care va trebui s fie furnizat de blocul care solicit ntreruperea. Astfel, n cazul cnd este vorba de un bloc de vitez redus, cum este, de exemplu, tastatura calculatorului prin care se introduc anumite comenzi, aceasta (tastatura) va trebui s fie prevzut cu un circuit (gen circuit SAU) care s genereze un semnal atunci cnd este apsat o tast. Suplimentul de hardware necesar pentru lucrul n ntreruperi este de cele mai multe ori compensat de sporul de performan. Totui, decizia de a echipa blocurile externe cu hardware adiional necesar
393
ntreruperilor trebuie luat de la caz la caz n urma analizei i evalurii condiiilor aplicaiei. Oricum, blocurile interne care lucreaz cu ntreruperi au prevzut electronica aferent, astfel c nu necesit investiii suplimentare. n sistemele n care sunt prezente mai multe blocuri care pot solicita ntreruperi, fiecare va avea o subrutin proprie de tratare a ntreruperii, fiecare cu o adres proprie de start. Va trebui deci s existe un mecanism de ncrcare n PC a adresei de start a subrutinei proprii blocului care a cerut ntreruperea la un moment dat. Cea mai rspndit metod se bazeaz pe utilizarea unui vector de ntrerupere asociat fiecrei surse de ntrerupere. In principiu, fiecare surs de ntrerupere este numerotat iar numrul respectiv este vectorul de ntrerupere, n momentul apariiei unei ntreruperi, acest numr va deveni pointer ntr-o zon de memorie n care se afl adresele rutinelor de tratare a ntreruperilor, zon numit tabela de ntreruperi. La locaia cu numrul dat de vectorul curent din tabel se afl o instruciune de salt la adresa de start a subrutinei respective, adres care a fost calculat i nscris automat de asamblor sau compilator la ncrcarea codurilor n memoria program. Trebuie remarcat c vectorii asociai ntreruperilor sunt fici pentru un microcontroler dat, dar rutinele respective se pot afla oriunde n memorie, n asamblor, aceste rutine se vor scrie la sfrit, dup ultima instruciune din programul principal a crui desfurare ar conduce altfel, n mod nedorit, la subrutine scrise ntre instruciunile sale. Dup cum s-a specificat, apariia unui semnal de ntrerupere declaneaz o instruciune de salt ctre subrutina de tratare a ntreruperii respective. Aceasta nseamn c saltul se va face doar dup
394
terminarea instruciunii curente astfel c n timpul execuiei instruciunii, este posibil s apar semnale de ntrerupere de la mai multe blocuri, n astfel de cazuri va fi deservit doar ntreruperea care are alocat o prioritate mai mare. Un criteriu uzual de alocare a prioritilor este numrul vectorului de ntrerupere asociat; de exemplu, prioritate mai mare o are ntreruperea cu vector (numr) mai mic. Dup deservirea ntreruperii cu prioritatea cea mai mare se va trece la ntreruperea cu prioritatea imediat urmtoare din cele rmase cu semnal activ .a.m.d. Este posibil ca n anumite momente s nu trebuiasc permise ntreruperi, de exemplu, n blocuri de instruciuni cu durata fix, cronometrat, care ar fi afectat de o eventual deservire de ntrerupere. De aceea este prevzut un bit ntr-un registru general de control sau registrul de flaguri care permite sau inhib (mascheaz) ntreruperile. Acest bit, notat n general I, este accesibil programatorului care l poate seta sau reseta dup necesitile algoritmului. De exemplu, la microcontrolerele AVR exist instruciunile SEI (Global Interrupt Enable - Activarea ntreruperilor Globale) i CLI (Global Interrupt Disable Dezactivarea ntreruperilor Globale). Bitul I este ns afectat i automat n anumite situaii sau comenzi prioritare. Astfel, la saltul ctre o rutin de tratare a unei ntreruperi, bitul I este ters automat astfel c n mod normal, pn la revenirea n programul principal, nu se mai accept o alt ntrerupere. Bitul I este reactivat, de asemenea, automat dac se termin rutina cu o instruciune de revenire din ntrerupere RETI, spre deosebire de cazul instruciunii de revenire dintr-o subrutin, RET, care nu afecteaz acest bit. Dac totui se dorete ca o ntrerupere s poat fi la rndul ei ntrerupt de o alta, programatorul va trebui s reactiveze prin
395
program bitul I la intrarea n subrutina de tratare a ntreruperii curente. Exist cazuri n care numai unele ntreruperi trebuie s fie mascate, iar altele s poat fi acceptate. De aceea, pe lng bitul general de control al ntreruperilor I, n registrele de comand i control asociate fiecrei surse de ntrerupere exist cte un bit de mascare a ntreruperii respective, bit care poate fi modificat de programator n funcie de necesitile algoritmului. Asociat acestui bit de mascare a ntreruperii respective exist i un flag care semnaleaz apariia efectiv a ntreruperii, bit care este ters automat la executarea subrutinei de ntrerupere sau poate fi ters prin scriere direct n registru. Tehnica ntreruperilor, dei necesit hardware i software suplimentare, este totui esenial pentru obinerea performanelor optime de la sistem i proiectantul trebuie s o foloseasc n toate situaiile posibile. 12.3.4. BLOCURI SPECIALE ALE MICROCONTROLERELOR Principalele componente ale nucleului procesorului unui microcontroler sunt similare cu cele ale microprocesoarelor de uz general: unitatea aritmetic i logic, aria de registre i unitatea de comand i control. In general, ele sunt totui mai simple fa de unitile omoloage ale microprocesoarelor CISC actuale, performana fiind asigurat n primul rnd prin gradul nalt de integrare i de cele mai multe ori printr-o arhitectur de tip RISC. Principalul avantaj al integrrii puternice (pe un singur chip) l constituie posibilitatea unor structuri interne de tip multimagistral, care permit un anumit grad de paralelism al microoperaiilor. De
396
exemplu, la microcontrolerele RISC AVR, Unitatea aritmetic i logic i Aria de registre sunt integrate ntr-un modul unitar care permite accesarea ambilor operanzi, efectuarea operaiei i depunerea rezultatului la destinaie ntr-un singur ciclu de tact. Aceasta se poate realiza printr-o arhitectur cu trei magistrale de comunicaie interne ntre aceste componente, structur posibil datorit faptului c magistrala de date nu trebuie s fie prelungit n exterior, memoriile i porturile de intrare/ieire fiind integrate n microcontroler. Arhitectura RISC, pe de alt parte, aduce mbuntiri de performan n conformitate cu filozofia general a acestui tip de procesoare. Setul de instruciuni fiind redus ca numr, codul lor are mai puini bii i deci lungimea total a instruciunilor este mai mic. Printr-o alegere adecvat a acestui set este posibil totodat uniformizarea lungimii lor i, datorit simplitii acestora, este posibil executarea fiecrei instruciuni ntr-un singur tact (coeficient de scalabilitate 1). Avnd n vedere eficiena i comoditatea lucrului cu blocuri integrate pe acelai cip, majoritatea microcontrolerelor nglobeaz i anumite blocuri specifice de larg utilitate care permit, de cele mai multe ori, realizarea de sisteme cu grad ridicat de complexitate fr utilizarea de componente externe. 12.3.4.1.Circuite de temporizare i contorizare (timer/counter) Posibilitatea msurrii intervalelor de timp i a evenimentelor externe reprezint o resurs foarte important a sistemelor numerice, avnd o gam larg de aplicaii, n multe familii de microcontrolere aceasta reprezint o dotare standard, fiind integrat pe cip, eventual n mai multe variante.
397
n esen, un timer/counter este un numrtor comandat de ceasul intern (funcia de timer) sau de impulsuri externe (funcia de counter). Acesta va putea fi citit n orice moment, iar valoarea rezultat va indica n primul caz intervalul scurs de la citirea precedent sau numrul de impulsuri aprute pe intrarea sa extern, n al doilea caz. Citirea se poate face n programul principal sau prin ntreruperi. Citirea n programul principal este mai puin recomandabil deoarece majoritatea algoritmilor presupun o bucl de verificare a valorii din timer, care datorit propriei durate conduce la erori n determinarea momentului ateptat (de exemplu ajungerea la o valoare prestabilit n sistemele de comparare). Totui aceasta este singura posibilitate pentru microcontrolerele care nu pot genera ntreruperi de la timer/counter, caz n care algoritmul va trebui s in seama de aceste erori i s permit tolerarea lor. Lucrul n ntreruperi cu circuitul timer/counter este mult mai eficient i precis, n acest caz, ajungerea la valoarea prestabilit va genera instantaneu o ntrerupere care va fi tratat de o rutin specific, furniznd algoritmului precizia maxim posibil. Unele implementri de timer/counter au posibilitatea de a genera chiar mai multe tipuri de ntreruperi cum ar fi: ntreruperea de depire (overflow interrupt) care apare atunci cnd numrtorul trece de capacitatea sa maxim i genereaz un transport de la rangul cel mai nalt. Pentru un numrtor cu n bistabili aceasta se ntmpl dup primirea a 2n impulsuri. ntreruperea de comparaie care apare atunci cnd numrtorul a ajuns la o valoare prestabilit n intervalul 0...2n, ncrcat n prealabil ntr-un
398
registru special de comparaie. Aceasta permite programarea intervalelor de timp la care s se genereze o ntrerupere, lucru foarte util pentru algoritmii care lucreaz cu evenimente discrete. ntreruperea de captur care nu este generat propriu-zis de timer/counter ci de un eveniment extern care furnizeaz un impuls pe o intrare specializat a microcontrolerului. Aceasta are ca efect copierea instantanee a coninutului numrtorului ntr-un registru separat, numit registru de captur, n paralel cu generarea unei ntreruperi specifice care s permit tratarea evenimentului respectiv. Unele microcontrolere au numrtorul reversibil, permind numrarea direct sau invers, i pot lucra ca generatoare de impulsuri cu frecven i factor de umplere programabile. Aceast facilitate permite realizarea conversiei numeric-analogice prin integrarea impulsurilor cu factor de umplere variabil, cu ajutorul unui filtru trece-jos, precum i aplicaii cu modulaie delta. Metoda este mult mai simpl dect cea cu circuit specializat de tip CAN, avnd o precizie mai bun dect acesta la frecvene mici. Acurateea scade pe msura creterii frecvenei, astfel c la aplicaii care necesit viteze ridicate este obligatorie utilizarea CAN. 12.3.4.2.Circuite de autosupraveghere (Watch-Dog) Pentru aplicaiile industriale sau n domeniul bunurilor de larg consum este, n general, necesar o funcionare automat, fr supraveghere direct din partea utilizatorului. Eventualele blocri sau ieiri din program ale aplicaiei trebuie rezolvate, n acest caz, chiar de ctre microcontroler, ntr-un timp ct mai scurt, pentru a preveni pierderi de date sau apariia de comenzi necorespunztoare, n acest scop,
399
cele mai multe dintre microcontrolere actuale dispun de un circuit special de autosupraveghere a programului, circuit numit Watch-Dog". Principiul de funcionare al acestuia const n generarea, la intervale prestabilite, a unui semnal de Reset, semnal care este ns inhibat continuu de o instruciune special plasat n bucla principal a programului, n mod normal, perioada ntre semnalele de Reset generate de microcontroler fiind adesea mai mare dect perioada buclei principale, Reset-ul nu va apare efectiv, el fiind de fiecare dat oprit de programul principal. Dac ns survine o ieire neautorizat (ntmpltoare) din acest program, nu va mai aprea instruciunea de oprire a Reset-ului i acesta va fi generat efectiv de ctre Watch-Dog. Dup Reset se va intra n programul principal i, n continuare, aplicaia va funciona normal. Circuitul Watch-Dog va fi format, n esen, dintr-un timer implementat ca numrtor programabil i care poate fi reiniializat software prin instruciunea sau secvena de instruciuni de inhibare a generrii Reset-ului. Perioada sa trebuie aleas pentru fiecare aplicaie n parte pentru a depi cea mai lung cale din programul principal incluznd i toate ntreruperile care pot surveni concurent. Nu se va depi ns cu mult aceast valoare dac aplicaia necesit o revenire foarte prompt n program n caz de ieire din acesta. De remarcat c multe microcontrolere folosesc un protocol destul de complicat de resetare a circuitului Watch-Dog pentru a micora probabilitatea ca aceasta s se ntmple n mod parazit i n afara buclei principale. Dac, de exemplu, microcontrolerul are un set de 120 de instruciuni i inhibarea WatchDog se face cu o singur instruciune, la ieirea din bucl ar exista o probabilitate de 1% ca urmtoarea instruciune s fie chiar aceasta. Dac ar fi necesar
400
ns o secven de 2 instruciuni, probabilitatea ar scdea la 0,01% ceea ce este n general absolut acceptabil. Pentru microcontrolere care au un protocol prea simplu de inhibare Watch-Dog, dar sunt folosite n aplicaii ce necesit un grad foarte mare de siguran, va trebui aleas o perioad de Reset de la Watch-Dog, ct mai apropiat de perioada maxim din programul principal, pentru a micora numrul de instruciuni care vor fi ntlnite la eventuala ieire din acesta. Oricum, probabilitatea de ieire din programul principal este foarte mic la microcontrolere deoarece nu exist trasee lungi pe care pot aprea perturbaii ntre componentele din nucleul Memorie de program - UCC, acestea fiind integrate n acelai circuit pe cip. 12.4.UTILIZAREA MICROCALCULATOARELOR N APARATELE NUMERICE DE MSURARE Introducerea unor sisteme de calcul coninnd i memorii programabile, cum au fost microprocesoarele i mai apoi microcontrolerele, au condus la o mare universalitate a aparaturii numerice computerizate. Astfel se lrgete foarte mult aria de aplicaie a aparaturii numerice de msurare i control folosind n locul logicii cablate (hard), logica microprogramat, adic tehnicile software care, datorit flexibilitii microprocesorului (sau microcontrolerului), nu necesit dezvoltarea excesiv a prii hard de natur fizic (piese electronice, cablaje etc.) a aparatelor. Prezena microcontrolerului (sau microprocesorului) asigur preluarea funciilor de comand ale aparatului (comanda CAN-urilor, regimurilor de lucru, autotestarea, afiarea etc.), prelucrarea numeric a rezultatelor i comunicarea
401
acestora la periferice specializate sau la magistralele unui sistem automat de msurare, precum i auto etalonarea aparatului i compensarea automat a influenei factorilor externi asupra rezultatelor msurrii etc. Din multitudinea de moduri de realizare i interconectare a aparatelor numerice computerizate (nzestrate cu calculator numeric) se desprind trei mari categorii, reprezentate n figurile 12.23 12.25.
Demultiplexor
Traductoare
Multiplexor analogic
Amplificator
digital
A/N
N/A
ROM
TASTATURA
DISPLAY
IMPRIMANTA
Figura 12.23. Microcalculator (microcontroler sau sistem cu microprocesor) care are att interfaa de intrare, ct i cea de ieire de natur analogic. Primul mod de organizare, reprezentat schematic n figura 12.23, conine un microcalculator (microcontroler sau sistem cu microprocesor) care are att interfaa de intrare, ct i cea de ieire de natur analogic. Pentru interconectare cu alte aparate numerice sau cu un alt sistem numeric de calcul, interfaa de ieire are i o ieire digital, care se ia direct de la multiplexorul digital (nainte
402
de conversia numeric-analogic) (figura 12.23). n multe situaii aparatul numeric de msurare face parte din sistemul de control i reglare automat a parametrilor unui sistem fizic sau proces industrial, sistem de msur automat (cu urmrire i echilibrare etc.). n aceste situaii, de la ieirea (numeric) a microcalculatorului sau, uneori, dup interfaa analogic de la ieire se ia o bucl de reacie prin care se transmit corecii la blocurile de comenzi de la intrarea de tip analogic (figura 12.25). Dup cum se vede i din figurile 12.23 12.24, folosind un multiplexor analogic, la aceste sisteme de msurare se pot conecta un numr mare de mrimi de intrare x1,x2,...,xn (n = 1 16 sau mai mult, n funcie de multiplexor) care pot proveni de la mai multe puncte de msurare a mrimilor electrice sau neelectrice (de la traductoarele respective).
PROCES C1 T1 C 2T2 T Cm n x1 x2 CAN xn
Calculator
CNA
Reactie
Figura 12.24. Sistem de msur automat (cu urmrire i echilibrare etc.) Un alt treilea mod de organizare a unui sistem mult mai performant const n interconectarea aparatelor de msurat n cadrul unui sistem de msurare automat cu ajutorul unor interfee i magistrale de legtur specializate de tipul CEI 625 sau IEEE-488 etc. (Figura 12.25). Acest ultim mod de
403
IEEE 488 Nr 2
Figura 12.25. Interconectarea aparatelor de msurat n cadrul unui sistem de msurare automat cu ajutorul unor interfee i magistrale de legtur specializate de tipul CEI 625, sau IEEE-488. n primele dou modaliti, cnd funcioneaz ca aparat numeric computerizat pentru msurarea mrimilor de tip analogic, sistemul are neaprat i o parte analogic, cel puin la intrare (figura 12.23 i 12.24) format din traductoare, magistralele analogice i partea analogic a circuitelor de intrare n convertoarele A/N. Magistralele analogice sunt unidirecionale i asigur comunicaia ntre blocurile analogice prin intermediul multiplexoarelor analogice realizate cu comutatoare cu tranzistori cu efect de cmp, ca n figura 12.26. Magistralele numerice de vehiculare a datelor ntre blocurile i ieirile (sau/i intrrile numerice) sunt bidirecionale (v. .12.2.2). Dup cum s-a artat mai nainte (v. .12.2.4 i .12.3.3)
404
exist mai multe modaliti de efectuare a transferului de date n cadrul unui sistem computerizat i anume: prin program, prin sistemul de ntreruperi sau prin accesul direct la memorie (tehnica DMA). n majoritatea cazurilor microcontrolerul sau sistemul cu microprocesor au viteze de execuie mai mari dect blocurile externe de msurare de la care primesc date. n aceste situaii controlul transferului de date de la respectivele blocuri se face fie prin program, utiliznd tehnica ateptrii n bucl, fie folosind tehnica ntreruperilor, care a fost descris pe larg n .12 i 12.3.3.
Multiplexor Multiplexor
Amplificator diferential
AD Magistrala analogica
Decodificator
Decodificator
MICROCONTROLLER
Figura 12.26. Magistralele analogice prin intermediul multiplexoarelor analogice realizate cu comutatoare cu tranzistori cu efect de cmp. Tehnica ateptrii n bucl necesit testarea periodic a unui bit de stare (fanion) activat de blocul numeric, de exemplu un convertor A/N, care solicit transferul; cnd convertorul A/N de exemplu i-a terminat ciclul de conversie, el semnalizeaz c este gata s transfere date, iar microcontrolerul -n
405
urma acestui semnal (poziionarea bitului de stare) preia cu vitez mare datele provenite de la blocul numeric. Acest lucru micoreaz deci viteza de lucru a microsistemului, el fiind obligat s atepte cu o ntrziere dat de bucla de ateptare, pn cnd echipamentul surs este pregtit s-i livreze datele. Uneori ntrzierea necesar comunicaiei se obine chiar prin program care fixeaz durata acestei ntrzieri. Este evident c un asemenea procedeu nu este recomandabil s fie folosit, dect n mic msur, mai ales la sistemele numerice de mare vitez i capacitate, deoarece reduce eficiena acestora, n cazul microsistemelor oarecum dedicate, utilizate n aparatura de msurare, acest procedeu poate fi folosit, dar mult mai indicat este tehnica ntreruperilor care se ntlnete la majoritatea microcontrolerelor actuale i a altor microsisteme cu care sunt echipate aparatele de msurare computerizate. Necesitatea memorrii sau livrrii de date de la blocurile numerice rapide (de exemplu CAN cu conversie direct etc.) deci care au o caden superioar celei permise de microprocesor, impune ocolirea acestuia i transmiterea datelor direct la memoria microsistemului prin tehnica DMA. Dup cum se va arta n paragraful urmtor datorit creterii versalitii i implicit a complexitii aparatelor numerice computerizate, n anumite cazuri, pe lng procesorul sau microcontrolerul principal, aceste aparate mai conin nc un microprocesor suplimentar (uneori chiar dou) subordonat celui principal pentru efectuarea unor funcii cum sunt cele de afiare, autoetalonare, alegerea gamei de msurare etc.
406
12.5. STRUCTURA APARATELOR DE MSURARE COMPUTERIZATE Pentru ilustrarea consideraiilor privind implementarea microcalculatoarelor (microcontrolerelor) in aparatele numerice de msurare, n acest paragraf vor fi prezentate - la nivel de schem-boc - cteva categorii de aparate de msurare nzestrate cu microprocesoare, care au o construcie mai simpl, i implicit mai comod de explicat. n figura 12.27 se prezint schema structural general a unui aparat de msurare coninnd o unitate de comand microprogramat (microcontroler sau sistem numeric cu microprocesor).
x1 x2 Traductoare xn
Circuit de conditionare
Convertor A/N
Afisaj
Interfata
Figura 12.27. Schema structural general a unui aparat de msurare coninnd o unitate de comand microprogramat. Aparatul cuprinde cel partea analogic care traductoarele), precum i a semnalului (amplificare puin dou pri i anume conine traductorul (sau circuitele de condiio-nare sau atenuare etc.), nainte
407
de a fi aplicate la convertoarele A/N, i partea numeric format din unitatea de comand microprogramat, i celelalte blocuri numerice ale sistemului (multiplexoare numerice, magistrale, afiare numeric, interfee numerice etc.). In multe situaii n care este necesar separaia galvanic ntre microsistem i blocurile de intrare sau de conversie se apeleaz la un modul izolator realizat cu cuploare optice (mai ales n cazul msurrii tensiunilor de valori mai ridicate dect tensiunile TTL folosite n microsisteme). 12.5.1.VOLTMETRE (MULTIMETRE) NUMERICE MICROPROGRAMATE Exist o varietate foarte mare de voltmetre (multimetre) numerice cu microcalculator n funcie de firma constructoare i de performanele care sunt cerute de utilizatori; n continuare vor fi descrise cte va scheme-bloc a unor asemenea aparate fabricate de cunoscutele firme Hewlett-Packard i Fluke. O schem general, de principiu, care ilustreaz funcionarea unui voltmetru (multimetru) numeric microprogramat este reprezentat n figura 12.28. Unitatea de microprogramare cuprinde i seciunea funcii de control n care se introduc comenzile funciunilor aparatului: selectarea mrimii de msurat, modul de schimbare a scalei (manual sau automat), modul de declanare a operaiei de msurare (intern sau semnal extern) etc. Un ciclu de msurare ncepe prin acionarea blocului START" sub comanda unui impuls extern (prin comutator de pe panoul frontal sau prin telecomand, de la distan). Microprocesorul (sau microcontrolerul) pornete convertorul A/N (de tip integrator cu dou rampe) i simultan deschide
408
numrtorul i porile logice spre acesta prin care se nsumeaz impulsurile de tact (furnizate de generatorul intern CLK - ceas). Cnd numrtorul se apropie de ncrcarea sa maxim el trimite dou impulsuri ctre microprocesor: primul impuls determin microprocesorul s execute testul de polaritate a tensiunii msurate, iar cel de-al doilea impuls (eliberat chiar n momentul autotergerii numrtorului) servete la comutarea intrrii integratorului de la CAN, la sursa de referin - Vr stabilindu-se totodat i testul de polaritate . Cnd etapa a II-a a integrrii ia sfrit, convertorul A/N trimite un impuls ctre microprocesor, care oprete numrtorul i declaneaz testul de autoscalare, prin care se compar rezultatul msurrii cu limita autoscalrii. Dac aceast limit este depit, se comand modificarea coeficientului de atenuare (din blocul circuitelor de intrare) i nceperea unui nou ciclu de msurare. Procesul continu pn ce rezultatul msurrii este sub limita autoscalrii (adic intr n scal). n acel moment, microprocesorul comand transferul datelor din numrtor n memorie (prin magistralele interne, de date) de unde vor fi preluate de circuitele de afiare sau de ieire numeric spre imprimant sau alte microsisteme externe . Se observ, c de fapt avem de-a face cu un voltmetru numeric cu integrare cu dubl ramp, la care ns toate comenzile i vehicularea fluxului de date, inclusiv afiarea (sau tiprirea rezultatelor) sunt complet automatizate cu ajutorul unitii de microprogramare (microcontrolerul). n figura 12.29 este reprezentat schema bloc a unui asemenea voltmetru cu un singur microprocesor (Fluke 8500 A). Aparatul este constituit din module care comunic ntre ele prin dou magistrale
409
analogice i dou magistrale numerice. Modulele se afl sub controlul sistemului cu microprocesor (microcontroler) prin intermediul unei magistrale MN 1 izolat de acesta prin fotocuploare ceea ce permite executarea unor msurtori ale unor mrimi care nu au punct de referin la mas. A doua magistral numeric MN2 servete la comunicaia cu panoul frontal i afiare, precum i cu o interfa pentru telecomand.
Comutatoare panou frontal Declansare externa -Vr Ux Control de la distanta
Atenuator
CAN
Microcontroller
Reset
Figura 12.28 Schem de principiu a unui voltmetru (multimetru) numeric microprogramat. Circuitele analogice, convertorul A/N i magistralele analogice sunt introduse ntr-o incint (cutie) ecranat, n scopul diminurii influenei perturbaiilor externe asupra msurrii. Pe lng funciile de comand i control, de transmitere a datelor, de corecii i comand a blocurilor, microcontrolerul ndeplinete i rolul de implementare a unor module virtuale" cum sunt detector de vrf, ohmetru cu patru borne i alte
410
funciuni care confer aparatului funciuni de multimetru . n figura 12.30 este dat schema bloc a unui voltmetru numeric cu dou microprocesoare (deci este un sistem multiprocesor) i anume a voltmetrului HP-3455A (fabricat de Helwett-Parkard).
MA1 Intrare
Convertor c.a.-c.c.
Conversie de rezistenta
Convertor I-U
Convertor A/N
MA2 MN1
Afisaj
Panou de comanda
Interfata
MN2
Semnal de telecomanda
Interfata de telecomanda
Memorie de calibrare
Microcontroler
Figura
12.29. Schema bloc a unui a voltmetru cu un singur microprocesor, Fluke8500 A. include procesorul fundamentale din
411
Aparatul operaiile
microprocesor secundar, plasat n interiorul incintei ecranate, pentru operaiile curente de msurare (conversie cu CAN, autoscalare etc.).
Intrare analogica
Convertor A/N
Comanda
Microprocesor secundar
Optocuplor
Afisaj
Tastatura
Figura 12.30 Schema bloc a unui voltmetru numeric cu dou microprocesoare (sistem multiprocesor) ,HP3455A , Helwett-Parkard. Microprocesorul principal poate fi controlat de pe panoul frontal sau de la distan prin intermediul interfeei de telecomand (HP-IB) ori prin magistrala CEI sau IEEE-488. Acest microprocesor stabilete - pe baza informaiei de la tastatur sau de la interfaa extern - sarcinile ce trebuie ndeplinite, dup care prin intermediul interfeei cu opto-cuplor, le transmite microprocesorului secundar care efectueaz
412
Comanda
Control
Start
msurrile (i calculele aferente) n vederea stabilirii rezultatului msurrii. Microprocesoarele implementate permit efectuarea operaiilor de auto etalonare sau de calibrare, la cererea operatorului sau naintea fiecrei msurri utile. Microprocesorul subordonat poate efectua calcule de corecie n raport cu o mrime precis ceea ce duce la creterea preciziei msurrii. Voltmetrul HP 3455A este un aparat de nalt rezoluie (0, 1V) i de mare precizie, cu posibilitatea de selectare automat a domeniului de msurare care cuprinde mai multe game: Vcc = (0,1 1200)V; Vc.a. = (1 - 1200)V; R=120-12M. 12.5.2. PUNTEA RLC 4262A (TIP HELWETT-PACKARD) Este realizat pe principiul impedanmetrului vectorial de msurare a impedanelor necunoscute Zx prin comparaie cu o impedan etalon Ze (Figura 12.31). Partea analogic a aparatului este prezentata n partea superioar a schemei-bloc din figura 12.31. n regiunea inferioar a figurii este reprezentat partea numeric a schemei, guvernat de sistemul cu microprocesor care - dup cum s-a artat n .12.3 - este echivalent cu un microcontroler, care gestioneaz ntreaga funcionare a aparatului primind comenzi de la tastatur sau prin interfee legate la panoul frontal sau la liniile de interconectare ale magistralelor specializate (de regul la CEI-625 sau IEEE 488). Puntea RLC 4262A permite realizarea mai multor funciuni, dintre care amintim: msurarea unei mrimi i ncadrarea sa ntr-un interval de msurare programat; msurarea unei mrimi prin abatere fa de o valoare fix, sau memorat de aparat (n RAM);
413
auto-test, pentru verificarea funcionrii corecte a tuturor funciunilor i afiarea codificat a rezultatului verificrii; conectarea ntr-un sistem automat de msurare, prin interfaa standardizat CEI 625 (sau IEEE488).
C A1 +
V1
2 1
V0
R0 H
Impedanta testata(Zx)
Re
Detector sincron
K
R A4 + Integrator
A2 +
2 1
V2
Generator
cu 4 faze
A3 + A5 +
Comanda faza
Comparator
Controlul
31kHz
Interfata (HP-IB)
Control
comparator
Interfata sistem
Tastatura
Afisare
Figura 12.31. Puntea RLC 4262A (tip HelwettPackard). Puntea RLC 4262-A, descris mai sus, posed urmtoarele caracteristici: sistem cu un singur procesor (sau microcontroler); msurri de rezistene ntre 1 m i 19,99 M; msurare de capaciti ntre 0,01 pF i 19,99 mF i factori de pierderi, D, cuprins ntre 0,05 i 1200; msurarea de
414
inductane ntre 0,01 H i 19,99 H i factor de calitate ,Q, cuprins ntre 0,05 i 1200; selectarea automat a gamei de msurare, selectarea adecvat a schemei echivalente (serie, paralel) pentru capaciti i afiarea rezultatelor n cca. 250 ms. Msurrile se fac la una din frecvenele de 120 Hz, 1 1 kHz sau 12 kHz; afiarea se face cu 3 digii (cifre), 2 iar precizia este de circa 0,2%. 12.5.3.OSCILOSCOPUL CU MEMORIE NUMERIC TIP 7854 (TEKTRONIX) Osciloscopul numeric mbin principiul osciloscopului cu eantionare, cu posibilitatea de prelucrare numeric a informaiei achiziionate, cu ajutorul unui microcalculator ncorporat i de transmitere a acesteia prin interfee specializate (CEI-625 sau IEEE-488). Osciloscopul Tektronix 7854 este echipat cu un microprocesor TMS 9000, lucrnd cu cuvinte de 16 bii. Osciloscopul are dou canale A i B, i poate funciona att ca osciloscop analogic, n timp real, ct i ca osciloscop cu eantionare i memorare numeric a semnalelor aplicate la intrare. Acestea sunt discretizate pe orizontal i pe vertical cu cte 12 bii dup care sunt prelucrate pe cale numeric. Schema bloc simplificat a osciloscopului 7854 Tektronix este reprezentat n figura 12.32. Se deosebesc trei pri principale: partea analogic, partea digital i partea de procesare (cu microcalculator i legtura la periferice i interfee). Partea analogic se aseamn cu schema clasic a unui osciloscop. Ea permite reprezentarea simultan a patru semnale distincte aplicate la
415
intrare folosind multiplexoare att pentru deflexia pe vertical, ct i pentru deflexia pe orizontal. Amplificatoarele de deflexie pe vertical i orizontal asigur att aplicarea direct a semnalelor de intrare pe plcile de deflexie ale tubului catodic, ct i aplicarea pe aceste plci a semnalelor memorate n etape anterioare. Partea digital a aparatului servete pentru conversia analog-numeric i numeric-analogic a semnalelor n vederea memorrii, prelucrrii (digitale) i reprezentrii (afirii etc.) acestora. Aceast conversie se efectueaz sub controlul microprocesorului i cu ajutorul unei memorii cu acces direct, unde se afl memorat modul de conversie a semnalelor, adic frecvena de eantionare, nivelele de eantionare etc. Pentru fenomenele repetitive se procedeaz la o eantionare aleatoare n raport cu semnalul; procesul de achiziie se consider ncheiat cnd 99% din adresele de memorie corespunztoare axei orizontale sunt ncrcate. n adresele de memorie corespunztoare codului de pe orizontal se memoreaz valoarea eantionului aferent din semnal. Durata impulsului de eantionare limiteaz banda osciloscopului la 400 MHz n regim de eantionare aleatoare a semnalelor respective. n cazul nregistrrii fenomenelor tranzitorii sau singulare, banda de frecven a semnalelor ce pot fi prelevate este mai redus: se preleveaz un eantion din semnal aproximativ la 3,5 s . Pentru conversia analog-numeric, semnalele multiplexate sunt aplicate unui bloc de prelucrare (filtrare, limitare, mediere etc.) a semnalelor, care mpreun cu convertorul A/N realizeaz digitizarea datelor. Pentru reprezentarea semnalelor memorate i/sau prelucrate se folosete un convertor N/A i un circuit de comand pentru deflexiile pe vertical i pe orizontal, dup care semnalele sunt aplicate
416
amplificatoarelor pe vertical i orizontal (figura 12.32). n partea de procesare numeric se gsesc urmtoarele blocuri: microprocesorul (de tip TMS 9900), generatorul de tact (Clock) pentru desfurarea secvenial (n cicluri ale microprocesorului) a diferitelor operaii de prelucrare, memorare sau transfer (v. .12.2.2) precum i blocurile de memorie ROM i RAM (Figura 12.32). n memoria permanent ROM de 32 koctei se afl memorate programe cu instruciunile ce trebuie s fie ndeplinite n acord cu sarcina primit de microprocesor, n memoria de tip RAM de 8 koctei sunt stocate temporar datele de procesare i rezultatele finale. Aceast memorie poate fi extins, n funcie de necesiti, cu nc 8 koctei sau cu mai mult. Memorarea semnalelor se face dup ce, n prealabil, s-a efectuat conversia analog-numeric. Dup cum s-a menionat mai nainte, se face att conversia nivelului semnalului, ct i a coordonatei orizontale. Coordonata orizontal este folosit ca adres, iar nivelul digitalizat al semnalului, ca informaie stocat la respectiva adres. Pentru vizualizarea semnalului sub form analogic se apeleaz memoria RAM n vederea recompunerii adresei i informaiei din adres (nivelul eantioanelor de la adresele respective), iar, dup conversia numeric-analogic, prin circuitele de comand a deflexiei, se reprezint semnalele pe ecran. Tot n partea numeric a aparatului se gsesc interfaa standardizat a magistralei ce ndeplinete cerinele CEI-625 (sau IEEE-488) care permite interconectarea i funcionarea aparatului n cadrul unui sistem automat de msurare, precum i dou tastaturi (una pe panoul frontal, i alta extern) avnd rolul alegerii diferitelor funciuni de
417
prelucrare sau memorare i afiare a semnalelor. Blocurile electronice care intr n alctuirea celor trei pri menionate au structuri destul de complexe, ele fiind descrise n crile tehnice ale aparatului alctuite de firma constructoare i livrate odat cu echipamentul vndut.
Partea analogica
Ampl. vert. 1,2. Ampl. vert. 3,4. Multiplexor Y
Ay
Multiplexor X
Ax
Comanda deflexie
Convertor A/N
Convertor N/A
Tastatura proprie
Interfata tastatura RAM 8k
Generator de tact
sau IEEE488
Tastatura externa
RAM 8k
Tektronix 7854
12.32 Osciloscopul cu memorie numeric tip 7854 (Tektronix). n figura 12.33 se arat, (numai cu scop informativ), schema bloc a unitii de eantionare
418
Figura
pentru un singur canal (canal A). Generatorul de impulsuri de eantionare furnizeaz impulsuri (foarte scurte) att circuitului de eantionare, ct i circuitului poart de memorizare.
Baza de timp Semnal A Poarta de esantionare Filtru programabil Canal A Atenuator programabil Atenuator programabil Sursa de tensiune Comanda programabila esantionarii Unitati/div. Program Decodor logic pentru program Circuit de esantionare Memorie Amplificator inversor Blocare TC Amplificator Canal A spre bloc numarare
Comanda portii
Comutator electronic
Amplificator de iesire
Tub catodic TC
Pozitia virgulei
Figura
12.33. Schema bloc a unitii de eantionare pentru un singur canal (canal A).
Eantionul cules este amplificat sau atenuat i apoi este nregistrat n memoria aferent canalului A. De aici, dup amplificare, eantioanele sunt aplicate plcilor de deflexie ale tubului catodic, ct i unitii numerice de msurare. Printr-un atenuator, pe cale invers, aceleai eantioane, nsumate cu o tensiune de decalaj, polarizeaz poarta de eantionare pentru prelevarea unui nou eantion. Aceleai comenzi au loc i pe canalul B. Pe ecranul tubului catodic se afieaz succesiv semnalele de pe cele dou canale, n funcie de comenzile comutatorului electronic ncorporat (Figura 12.33). Pe de alt parte, decodorul logic pentru programe
419
(Figura 12.33) transmite comenzile programului n unitatea de eantionare, iar circuitului de afiare i se transmit comenzile referitoare la unitatea numeric de msurare (conversie A/N, numrare etc.) i poziia virgulei (punctului zecimal). Principalele funcii care se pot executa cu osciloscopul Tektronix 7854 sunt: Msurri asupra semnalului: nivelele tensiunilor, frecvena, valoarea maxim, media aritmetic, media geometric, valoarea minim, valoarea vrf la vrf, perioada; msurri asupra impulsurilor i intervalelor de timp (timpul de cretere al unui impuls, durata fronturilor, limea impulsurilor etc.); Funcii asupra semnalelor: diferenierea, integrarea, interpolarea liniar, filtrare digital trece-jos; Memorarea de date privind caracteristicile semnalelor originale (iniiale) sau aflate n diferite etape de prelucrare etc.; Reprezentarea simultan a opt semnale memorate digital mpreun cu afiarea informaiei despre semnale. Prezentarea pe ecran a programului; funcionarea ca osciloscop analogic standard; reprezentarea simultan de semnale analogice i digitale etc. Dup cum rezult din cele prezentate n acest paragraf, spre deosebire de alte aparate numerice (Qhmetre, voltmetre, frecvenmetre etc.) osciloscopul numeric nu poate fi construit dect ca aparat computerizat, el necesitnd pentru memorare i analiza numeric a datelor un microcontroler specializat care s coordoneze toate operaiile care au loc n acest aparat.
420
12.6.INTERCONECTAREA APARATELOR NUMERICE PROGRAMABILE. MAGISTRALE DE INTERCONECTARE Pentru coordonarea sau controlul unor procese sau instalaii complexe, uneori este necesar folosirea mai multor aparate, cu funciuni diferite care s poat comunica ntre ele i cu un supervizor central care, de regul, este un calculator numeric. n acest scop au fost concepute diferite linii (magistrale) de legtur, care au fost apoi standardizate prin reglementri la nivel internaional. n domeniul fizicii nucleare a fost introdus interfaa standard denumit CAMAC (Computer Aided to Measurement and Control), iar n domeniul aparaturii de msurare, Comitetul Electrotehnic Internaional (CEI) a definit prin documentele CEI-625-1 i 625-2, condiiile constructive i funcionale impuse aparatelor de msurat, precum i codul standardizat i comenzile pentru magistrala de interconectare CEI625. Acest standard a fost preluat i mbuntit de ctre IEEE i publicat sub denumirea de standard IEEE-488, cele dou tipuri de sisteme de interconectare fiind practic echivalente. Magistralele de tip IEEE-488 (sau CEI-625) reprezint un sistem de interfaare standard pentru interconectarea a maxim 15 aparate programabile, (n configuraia cu extindere acest numr este mult mai mare, ajungnd, teoretic, la 961 aparate), fiecare fiind prevzute cu interfee (i conectori) pentru conectare la magistral care este coordonat de un calculator (mini sau microcalculator) central. Dup cum rezult i din figura 12.34, aparatele conectate la magistral pot fi de trei tipuri: receptor (sau asculttor"), surs (sau vorbitor") i controlorul care gestioneaz traficul de informaii pe liniile magistralei, determinnd
421
rolurile de surs, respectiv de receptor ale celorlalte aparate. Rolul de controlor este deinut, n general de un microcalculator (sau microcontroler) (v. i Figura 12.26). Un acelai aparat poate s ndeplineasc funcia de surs, sau de receptor; controlorul poate avea funciile de control, de surs i de receptor. La un moment dat un singur aparat poate fi surs, dar mai multe pot fi pe recepie, ntr-un sistem cu mai muli controlori, numai unul este activ la un moment dat. Transferul de date se face n modul paralelserie: biii n paralel, formeaz un byte (octet) iar octeii se nseriaz, formnd un mesaj complet care se transmite serial. Transmisia este bilateral i sincron. Viteza maxim de transport este de 1 Mbyte/s. Dup cum se vede i din figura 12.34, magistrala IEEE-488 este construit fizic din 16 conductoare la care se leag n paralel toate aparatele, inclusiv calculatorul coordonator (v. i Figura 12.25). Cele 16 linii ale magistralei sunt mprite n trei grupe funcionale care formeaz: magistrala de date, alctuit din opt linii: DIO1 -- DIO8; magistrala pentru controlul transportului de date, format din trei linii i anume: DAV - date valide pe DIO1 + DIO8; NRFD - neacceptare de date; NDOC - date necitite; magistrala de control a interfeei format din cinci linii prin care asigur semnale de comand n vederea realizrii unei anumite configuraii a participrii aparatelor la convorbire" i apoi o direcionalizare a transferului de mesaje n configuraia realizat.
422
Aparatul nr. 1 dotat cu functiile: -sursa -receptor -coordonator (microcalculator, minicalculator Magistrala de date ( 8 linii) Aparatul nr. 2 dotat cu functiile: -sursa -receptor - voltmetru digital Magistrala de control a transferului de protocol ( 3 linii)
DIO1 DIO8 date intrare/iesire DAV (date valide) NRFV (neacceptare date) NDAC (date necitite) IFC (stergere interfata) ATN (validare multipla) SRQ (cerere de intrerupere) REN (comanda din exterior) EOI ( sfarsit transfer mesaj)
Figura 12.34.
Magistrala IEEE-488.
ATN (ATTENTION) - este linia prin care coordonatorul (calculatorul central) indic dac magistrala de date este n modul de date" (ATN = 0) sau n modul de comand" (ATN = 1); IFC (INTERFACE CLEAR) semnal activat de aparatul (sau calculatorul) coordonator prin care readuce toate interfeele ntr-o stare iniial, desadresat(IFC=1);
423
REN (REMOTE ENABLE). Prin activarea acestei linii (REN=1) controlul unui aparat este transferat de pe plan local (pe panou) la distan, n acest scop, interfaa aparatului are implementat o funcie REMOTE/LOCAL (distan /local); SRQ (SERVICE REQUEST) - Aparatele care au aceast funcie pot solicita prin SRQ=1, atenia controlorului; acesta poate ntrerupe secvena de comenzi pentru a emite o secven de identificare a solicitantului i a -i acorda asistena; EOI (END OR IDENTIFY) Funcia EOI=l poate fi emis de o surs n modul de date" (ATN = 0), sau de un controlor n modul de comand" (ATN = 1). n primul caz, acesta indic sfritul unui transfer de cuvinte. n cel de al doilea caz, controlorul iniiaz o secven de identificare a solicitatorilor.
424