Sunteți pe pagina 1din 9

Arhitecturi cu microprocesor

Curs 2
2.1. Sisteme embedded si microcontrolere. Arhitecturi Neumann si Harvard. Microcontrolerele (cunoscute i ca MCU sau C) sunt practic mici calculatoare pe un singur circuit integrat, care conine un CPU relativ simplu, ceasuri (clock), temporizatoare (timers), porturi I/O, i memorie. Adiional pot conine i alte circuite specifice, cum ar fi interfa USB, interfa serial, convertoare A/D, convertoare D/A, etc. Memoria program este de obicei sub forma NOR flash sau OTP ROM i este de obicei o parte din RAM. Valorile acestor memorii flash pot fi foarte mici (8 k) sau pot ajunge i la 128 k). Unele controlere sunt pe 8 bii dar pot fi i pe 16 bii. Consumul n microcontrolere este foarte mic n comparaie cu microprocesoarele. Microcontrolerele sunt folosite de obicei pentru aplicaii mici, sau aplicaii dedicate (e.g. bioinginerie). Unele microcontrolere pot fi specializate pe o anumit clas de aplicaii, cum ar fi procesarea de semnale i se numesc DSP (digital signal processor) procesoare digitale de semnal. Mixarea procesare semnale i microcontrolere este comuna, integrarea acestora fiind absolut necesar n controlul sistemelor analogice cu microcontrolere. Un C poate fi considerat ca un SoC (System-on-a-chip) dei n sens larg al definiiei SoC este un grad mai ridicat de integrare ca un C. SoC poate conine i funcii de radio-frecven, module de prelucrare imagistic, etc. Majoritatea C sunt incorporate (embedded) n alte aplicaii, cum ar fi automobile, telefoane, periferice, etc., cunoscute ca sisteme incorporate (embedded systems). n timp ce anumite sisteme incorporate sunt foarte sofisticate, altele sunt minimale, fr sistem de operare i de o complexitate software sczut. Dispozitive tipice de intrare sunt comutatoare, relee, solenoide, LED, afiioare numerice sau grafice LCD, dispozitive de radio-frecven, senzori i traductori de temperatur, umiditate, presiune, nivel luminos, etc. Arhitecturile Neuman sunt un model in care unitatea centrala acceseaza o singura structura de memorie care contine atit datele cit si instructiunile de executat de catre un program proiectat de utilizator. In arhitectura Harvard, datele si instructiunile sunt stocate in zone de memorie fizic separate.
Memorie Adrese Date CPU PC Program counter (a) Date CPU Adrese Instructiuni PC Program counter (b) PROGRAM (instructiuni) Adrese Date Memorii DATE

Fig. 2.1. Arhitecturi de CPU (a) arhitectura von Neumann; (b) arhitectura Harvard

2.2. Microcontrolerele Microchip PIC16/18. Arhitecturi RISC. Microcontrolerul PIC16F887. Diagrama Bloc. PIC16F887 este una dintre cele mai noi produse de Microchip. Conine toate componentele care au mod normal, microcontrolerele. Datorit caracteristicilor de pret scazut, gama larga de aplicare, nalt calitate i uor de disponibilitate, PIC16F887 este soluie ideal n aplicaii. Principalele sale caracteristici sunt enumerate n cele ce urmeaz. Arhitectura RISC - Are doar 35 de instruciuni - Toate instruciunile ntr-un singur ciclu cu excepia ramificrilor Frecven de operare 0-20 MHz Oscilator intern de precizie - Multiplicare calibrat - Frecven selectabil software ntre 8 MHz i 31KHz Tensiune de alimentare 2.0-5.5V - Consum: 220A (2.0V, 4MHz), 11uA (2.0 V, 32 KHz) 50nA (mod stand-by) Mod de lucru Power-Saving Sleep 35 pini intrare/ieire 8K ROM memorie tehnologie FLASH - Poate fi reprogramt de 100.000 ori Opiune In-Circuit Serial Programming Option (circuitul poate fi programat n dispozitivul int) 256 octei memorie EEPROM - Datele pot fi scrie de peste 1.000.000 de ori 368 octei memorie RAM Convertoare A/D - 14 canale - Rezoluie pe 10 bii 3 numrtoare temporizatoare independente Temporizator Watch-dog Module comparatoare analogice - Dou comparatoare - Referin de tensiune fix (0.6V) - Referin de tensiune programabil ieire de comand PWM (Pulse-width modulation) modul USART mbuntit - suport RS-485, RS-232 i LIN2.0 - auto-detecie rat de transfer MSSP (Master Synchronous Serial Port) - Suport mod SPI i I2C

Dup cum se vede n imaginea de mai sus, unii pini sunt multi -funcionali. De exemplu, RA3/AN3/Vref+/C1IN+, al cincilea pin stnga specific urmtoarele funcii:

RA3 Port A a treia intrare/ieire digital; AN3 a treia intrare analogic; Vref+, referin pozitiv de tensiune; C1IN+, intrarea pozitiv a comparatorului C1.

Diagrama bloc simplificat pentru C PIC 16F887 este dat mai jos. Aceasat abordare este foarte comun la microcontrolere pentru ca le sporete gradul de compactizare la o funcionalitate ridicat.

n arhitecturi cu microprocesor, numrul de cicluri de ceas pe instruciune este o msur a perfomanei procesorului i specific numrul de cicluri de ceas care au sunt necesari pentru execuia complet a unei instruciuni. Timpul de execuie pentru toate intruciunile este acelai cu excepia ultimilor cicli 2 i 4. Instruciunile de salt i ramificare se execut n 2 cicli. De remarcat c viteza de operare a microcontrolerului este de 20MHz, timpul de execuie al unei instruciuni este n medie 200nS, ca urmare viteza de execuie este de aproximativ 5 milioane de instruciuni pe secunda. Schema completa a microprocesorului, din catalog este dat mai jos.

Microcontrolerul are trei tipuri de memorie: ROM, RAM i EEPROM. Memoria ROM este folosit pentru salvare permanent a programului ce trebuie executat, fiind numit n mod curent memoria program. PIC16F887 are 8Kb de memorie ROM (n total 8192 locaii). Deoarice ROM este fcut n tehnologia FLASH, coninutul su poate fi schimbat prin furnizarea unui nivel de tensiuni special, prin program (13V). Programatorul de memorie efectueaz aceast operaiune i este de obicei un dispozitiv special, exterior PCB-ului de aplicaie.

Memoria EEPROM este i ea salvat n permanen, chiar i atunci cnd tensiunea de alimentare este ntrerupt. Totui, spre deosebire de ROM, coninutul EEPROm poate fi modificat n timpul rulrii programului de pe microcontroler. Aceast memorie cu 256 locaii este potrivit pentru salvarea permanent a rezultatelor n urma operaiilor din programul ce ruleaz pe microcontroler. Memoria RAM este cea mai complex parte din memoria microcontrolerului. Ea este format din dou pri: regitri cu destinaie general (general-purpose registers) i regitri cu destinaie special (special-function registers - SFR).

Regitri cu destinaie general (general-purpose registers) sunt utilizai pentru memorarea temporar a datelor i rezultatelor din timpul operaiilor. Regitri cu destinaie special (special-function registers - SFR), sunt locaii de memorie, dar spre deosebire de regitri cudestinaie general, rolul lor este predeterminat din timpul procesului de fabricaie al procesorului i nu poate fi modificat. Deoarice biii acestor regitri sunt conectai fizic la circuite particulare pe cip (convertoare A/D, modul comunicaie serial, etc.), orice schimbare a coninutului lor afecteaz n mod direct operaiunile microcontrolerului i de asemeni ale circuitelor

sale. O alt trstur important a acestor regitri este ca se poate utilizata numele lor (regitri i bii) din lista predefinit, care asociaz adresa lor exact cu numele respectiv. Bancuri de memorie RAM. Memoria de date este partiionat n patru bancuri. nainte de a accesa un anumit registru pentru a-i modifica coninutul (a scrie n acel registru), este necesar sa se selecteze bancul care conine acel registru. n acest scop se utilizeaz 2 bii din registrul STATUS pentru selectarea bancului respectiv. Pentru a fi mai uor, cele mai utilizai SFR au aceiai adres n toate bancurile. Descrierea complet a fiecrui registru n fiecare banc este dat n Apendix A.

Stiva (STACK) O parte din memoria RAM utilizat pentru stiv consist n 8 regitri de 13 bii. nainte ca microcontrolerul s nceap s execute o subrutin (instruciunea CALL) sau are loc o ntrerupere, adresa primei instruciuni care trebuie executat dup instruciunea curent trebuie salvat n stiv (n unul din regitri). n acest mod, dupa executarea subrutinei sau a ntreruperii, microcontrolerul tie unde s revin n programul principal. Adresa este tears la revenirea n programul principal deaorice nu mai este nevoie de ea, iar locaia respectiv este estfel eliberat pentru o utilizare viitoare. Este important de notat ca datele sunt introduse n stiv n mod circular. Asta nseamn ca dac sunt opt salvri n stiv, a nou salvare supra-scrie peste prima locaie salvat, datele iniiale din prima locaie fiind astfel pierdute fara a putea fi recuperate. Ca atare, trebuie inut cont de acest lucru la

programare pentru a evita depirea stivei (stack overflow).Bitul de stare (din registrul STATUS) indica depasirea pe stiva sau conditiile pentru nedepasire. Exemplu in Mikro C, limbaj pentru microcontrolere PIC.
/* Cind se intra sau se iese din sectiuni de asamblare din program, sectiuni incluse in programulC, compilatorul nu salveaza datele curent active in bancul RAM.Asta inseamna ca in aceasta sectiune de program, scrisa in C, bitii de control RP0 si RP1 trebuie sa returneze starea pe care au avut-o inainte de lansarea sectiunii de program in limbaj de asamblare. Problema este rezolvata de exemplu prin utilizarea unei variabile auxiliare care salveaza starea acestor 2 biti.*/ saveBank = STATUS & 0b01100000; // // asm { // ... ... // ... } // STATUS &= 0b10011111; // STATUS |= saveBank; ... ... Salveaza stare biti RP0 si RP1 (bitii 5 si 6 din registrul STATUS) Start secventa in limbaj de asamblare Cod in Limbaj de Asamblare Sfarsit secventa in limbaj de asamblare Biti RP0 si RP1 revin la val. initiala

Sistemul de ntreruperi Primul lucru pe care l face microcontrolerul cnd primete un semnal de ntrerupere este s termine de executat instruciunea curent i sa opreasc programul n execuie. Apoi, adresa curent de memorie a programului este salvat automat n stiv i adresa implicit (predefinit de constructorul circuitului integrat) este scris n numartorul de program (PC- Program Counter). Locaia unde programul continu execuia se numete vector de ntrerupere. Pentru microcontrolerul PIC16F887, aceast adres este 0004h. Locaia care conine vectorul de ntrerupere este pasat la PC n timpul execuiei programului.

Partea de program care este activat cnd sosete o cerere de ntrerupere se numete rutin de ntrerupere. Prima sa instruciune este localizat n vectorul de ntrerupere. Lungimea subrutinei i timpul de execuie al acesteia depinde de subrutina nsi. Anumite microcontrolere au mai muli vectori de ntrerupere (fiecare ntrerupere are vectorul ei) dar n cazul PIC16F887 sete un singur vector de ntrerupere. n cazul cu mai muli vectori de ntrerupere, prima parte a rutinei de ntrerupere const n recunoaterea sursei care a produs ntreruperea. n final, cnd sursa ntreruperii este recunoscut i rutina de ntrerupere a fost executat, microcontrolerul ajunge la instruciunea RETFIE, restaurez adresa din stiv, i continu execuia programului de unde a fost interrupt. Compilatorul specializat MikroC utilizat pentru programarea microcontrolerului recunoaste rutinele de intrerupere care trebuie executate ca functii void interrupt(). Corpul functiei, adica rutina de intrerupere trebuie scrisa de utilizator.
void interrupt() { cnt++ ; } // Routina de intrerupere // Rutina de intrerupere executa incrementarea // variabilei cnt cu 1

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