c01-arhitectura generala

16
SISTEME CU MICROPROCESOARE – note de curs 1 1. ARHITECTURA GENERALĂ Cuprins Introducere Obiective 1.1 ARHITECTURA VON NEUMANN 1.1.1 Unitatea centrală de prelucrare 1.1.2 Magistralele 1.1.3 Memoria 1.1.4 Echipamentele de intrare-ieşire 1.2 ARHITECTURA HARVARD 1.3 MICROPROCESOR SAU MICROCONTROLER? 1.4 STRUCTURA INTERNĂ A MICROCONTROLERELOR DIN FAMILIA PIC18F 1.4.1 Execuţia instrucţiunilor 1.4.2 Unitatea de control 1.4.3 Unitatea aritmetică şi logică Concluzii Teste de autoevaluare Bibliografie Dicţionar Teste de evaluare

Transcript of c01-arhitectura generala

Page 1: c01-arhitectura generala

SISTEME CU MICROPROCESOARE – note de curs

1

1. ARHITECTURA GENERALĂ

Cuprins

Introducere

Obiective

1.1 ARHITECTURA VON NEUMANN

1.1.1 Unitatea centrală de prelucrare

1.1.2 Magistralele

1.1.3 Memoria

1.1.4 Echipamentele de intrare-ieşire

1.2 ARHITECTURA HARVARD

1.3 MICROPROCESOR SAU MICROCONTROLER?

1.4 STRUCTURA INTERNĂ A MICROCONTROLERELOR

DIN FAMILIA PIC18F

1.4.1 Execuţia instrucţiunilor

1.4.2 Unitatea de control

1.4.3 Unitatea aritmetică şi logică

Concluzii

Teste de autoevaluare

Bibliografie

Dicţionar

Teste de evaluare

Page 2: c01-arhitectura generala

ARHITECTURA GENERALĂ

2

Introducere

Microcontrolerele sunt în esenţă sisteme de calcul având arhitectura

modelată pe baza celei a calculatoarelor numerice. Pornind de la această

idee, capitolul curent urmăreşte câteva principii privind arhitectura şi

modul de funcţionare al acestor tipuri de sisteme.

Obiective

După parcurgerea acestui capitol cursantul va trebui:

- să înţeleagă deosebirile existente între arhitecturile sistemelor de

calcul de tip von Neumann şi Harvard;

- să înţeleagă relaţia dintre microcontrolere şi microprocesoare

- să cunoască rolul şi structura elementelor componente ale

sistemelor de calcul;

- să cunoască modul în care se execută instrucţiunile şi conceptul de

pipeline;

- să cunoască rolul registrului de lucru (WREG) şi al registrului

STATUS.

1.1 ARHITECTURA VON NEUMANN

Din punct de vedere istoric sistemele de calcul moderne îşi au originea în cele

dezvoltate în timpul celui de-al doilea război mondial. Aceste sisteme iniţiale îndeplineau o

funcţionalitate dedicată, fiind proiectate pentru a realiza un singur task pe baza unor seturi de

date, iar pentru a-şi schimba comportamentul era necesară refacerea conexiunilor fizice dintre

elementele componente. Evoluţia esenţială a acestor sisteme de calcul rudimentare s-a produs

în momentul în care s-a înţeles că programul putea fi stocat în memorie alături de date. Unul

dintre avantajele acestei arhitecturi, denumită von Neumann, după numele celui care a

coordonat proiectul, îl reprezintă flexibilitatea. Astfel, modificarea programului presupune

doar încărcarea secvenţei de biţi corespunzătoare în zona de memorie potrivită.

Simplitatea arhitecturii von Neumann a făcut ca majoritatea sistemelor de calcul

moderne să fie bazate pe această structură. Elementele caracteristice ale acestor sisteme de

calcul sunt: unitatea centrală de prelucrare (UCP), memoriile, echipamentele de intrare ieşire

şi magistralele. Unitatea centrală de prelucrare conţine o unitate de control, care realizează

interpretarea, secvenţierea instrucţiunilor şi comandă celelalte componente ale sistemului, şi o

unitate aritmetică şi logică (UAL), care execută instrucţiuni. Unitatea de memorie stochează

instrucţiuni şi date, iar echipamentele periferice asigură interacţiunea dintre sistemul de calcul

Page 3: c01-arhitectura generala

SISTEME CU MICROPROCESOARE – note de curs

3

şi mediul înconjurător prin introducerea instrucţiunilor şi a datelor, respectiv prin

reprezentarea rezultatelor. Magistralele furnizează căile de comunicaţie între componentele

sistemului de calcul.

În Fig. 1.1 se prezintă structura generală a sistemelor de calcul bazate pe arhitectura

von Neumann.

Fig. 1.1. Structura generală a sistemelor de calcul bazate pe arhitectura von Neumann

1.1.1 Unitatea centrală de prelucrare (UCP)

Funcţia principală a unităţii centrale de prelucrare (UCP) este de a executa o secvenţă

de instrucţiuni stocată în memorie. Acest lucru se va realiza în mod continuu şi repetat atâta

timp cât sitemul este activ. Un ciclu de instrucţiune presupune extragerea instrucţiunilor din

memorie într-un registru intern al UCP, decodificarea acestora şi apoi execuţia propriuzisă.

Extragerea succesivă a instrucţiunilor din memorie se realizează sub controlul unui circuit

denumit numărător de program (en. PC – Program Counter), care va conţine adresa

următoarei instrucţiuni din memorie care urmează a fi extrasă. Datele rezultate din execuţia

programului sau datele utilizate de program pot fi accesate din memorie. De asemenea,

unitatea centrală de prelucrare supervizează şi comandă celelalte componente ale sistemului

prin liniile de control.

Structura internă a unităţii centrale de prelucrare conţine în general următoarele

componente majore:

1. O unitate de control care realizează interpretarea şi secvenţierea

instrucţiunilor, precum şi comanda celorlalte componente ale sistemului.

2. O unitate aritmetică şi logică care execută instrucţiunile din memorie. Ea este

responsabilă de manipularea datelor şi executarea operaţiilor aritmetice şi logice.

3. Regiştri interni (memorii de mare viteză), cu rol în stocarea de informaţii

necesare execuţiei instrucţiunilor (ex. Registrul de instrucţiuni, acumulatorul etc.).

În general, aceşti regiştri interni stochează doar câţiva octeţi de date, care pot fi

operanzi, rezultate, adrese de memorie etc.

Page 4: c01-arhitectura generala

ARHITECTURA GENERALĂ

4

1.1.2 Magistralele

Magistralele caracterizează căile de comunicaţie ale sistemului de calcul. Informaţia

transferată între componentele sistemului este transmisă sub formă binară, paralel pe liniile

magistralelor. Se pot identifica trei tipuri de magistrale:

1. Magistrala de date este utilizată la transferul datelor necesare procesării efectuate de

UCP. De exemplu, un sistem de calcul de 8 biţi este un sistem de calcul care dispune

de o magistrală de date cu lăţimea de 8 biţi, fiind capabil să manipuleze date (numere)

reprezentate pe 8 biţi. Astfel, un asemenea sistem va putea efecuta operaţii între

numere de 8 biţi, furnizând ca rezultate tot numere de 8 biţi.

Existenţa unei magistrale de 8 biţi nu limitează procesorul doar la utilizarea datelor cu

dimensiunea de 8 biţi, ci indică faptul că procesorul poate accesa un singur octet de

date per ciclu de memorie. De aceea, în raport cu o magistrală cu laţimea de 16 biţi, o

magistrală de 8 biţi poate transmite doar jumătate din informaţie în unitatea de timp.

Astfel, procesoarele de 16 biţi sunt mai rapide decât cele de 8 biţi ş.a.m.d. Chiar dacă

procesoarele de 16, 32 sau 64 de biţi pot accesa date cu dimensiunea maximă egală cu

laţimea magistralelor lor, ele pot accesa la fel de bine şi locaţii de memorie cu

dimensiunea mai mică (ex. câte un octet)

2. Magistrala de adrese este utilizată pentru specificarea adreselor locaţiilor de

memorie accesate. De exemplu, în cazul unei magistrale de adrese de 8 biţi, sistemul

poate accesa 28=256 locaţii de memorie distincte. Cu 16 linii de adresă se pot adresa

65536 locaţii de memorie.

3. Magistrala de control are rolul de a conduce semnalele de control ale UCP care

comandă componentele sistemului. De exemplu, semnale transmise prin intermediul

magistralei de control pot specifica modul de acces la memorie în vederea realizării

unor operaţii de scriere sau de citire. Practic liniile de scriere şi citire ale magistralei

controlează direcţia datelor de pe magistrala de date. Alte semnale ale magistralei de

control pot include: tactul sistem, liniile de întrerupere, linii de stare etc.

Page 5: c01-arhitectura generala

SISTEME CU MICROPROCESOARE – note de curs

5

1.1.3 Memoria

Memoriile sunt caracterizate de conţinutul pe care acestea îl stochează într-un set de

regiştri şi locaţia sau adresa individuală a fiecărui registru. În cazul arhitecturii von Neumann,

atât instrucţiunile cât şi datele se găsesc în acelaşi spaţiu de memorie. Indiferent că este

internă sau externă, memoria reprezintă un spaţiu de stocare şi poate fi accesată cu ajutorul

magistralelor dacă se specifică adresa locaţiei dorite şi tipul operaţiei (scriere sau citire).

1.1.4 Echipamentele de intrare-ieşire

Pentru a putea fi util un sistem de calcul trebuie să fie capabil să interacţioneze cu

mediul înconjurător. Acest lucru se realizează prin intermediul echipmantelor de intrare ieşire.

Comunicarea dintre UCP şi echipamentele periferice se va efectua tot prin intermediul

magistralelor printr-un set de regiştri cu adrese proprii denumite porturi. Porturile pot fi

accesate în mod similar cu memoria, în multe situaţii chiar sunt mapate în spaţiul de adrese al

memoriei. Prin intermediul porturilor pot fi configurate perifericele, pot fi trimise date direct

spre exterior sau pot fi citite date binare din exterior.

1.2 ARHITECTURA HARVARD

Principalul avantaj al arhitecturii von Neumann îl reprezintă simplitatea, totuşi,

existenţa unor magistrale comune pentru toate cele trei componente ale arhitecturii determină

faptul că sistemul de calcul în cauză nu poate realiza la un anumit moment decât un singur

lucru. Astfel, de exemplu, accesul la datele din memorie nu se poate produce în acelaşi timp

cu extragerea unei instrucţiuni din memorie.

În aceste condiţii, în prima decadă după cel de-al doilea război mondial s-a dezvoltat

la universitatea Harvard o nouă arhitectură pentru sistemele de calcul. Această arhitectură,

denumită arhitectura Harvard reprezenta o variaţie a arhitecturii von Neumann fiind

caracterizată de faptul că datele şi instrucţiunile sunt stocate separat în spaţii de memorie

distincte şi sunt accesate prin magistrale diferite. Avantajul acestei arhitecturi este dat de

posibilitatea de a accesa datele şi instrucţiunile în acelaşi timp, având drept consecinţă

creşterea complexităţii arhitecturii interne. Acesta este şi motivul pentru care arhitectura

Harvard a început să fie prezentă mai mult abia odată cu evoluţia circuitelor integrate.

Page 6: c01-arhitectura generala

ARHITECTURA GENERALĂ

6

În Fig. 1.2 sunt alăturate, cu scop comparativ, cele două tipuri de arhitecturi de sisteme

de calcul: von Neumann (Fig. 1.2-a) şi Harvard (Fig. 1.2-b). În cea din urmă se evidenţiază

cele două spaţii de memorie distincte împreună cu magistralele asociate. Fiecare memorie

dispune de propria sa magistrală de adrese, respectiv de date, astfel încât nu există nici o

legătură între adresele sau datele celor două spaţii de memorie.

Fig. 1.2. Comparaţie între arhitecturile von Neumann şi Harvard

1.3 MICROPROCESOR SAU MICROCONTROLER?

Până acum, în paragrafele anterioare s-a făcut referire doar la nişte sisteme de calcul

care ne trimit cu gândul mai mult spre calculatoarele numerice.

Dar, ce sunt de fapt microprocesoarele, respectiv microcontrolerele?

Pe scurt, microprocesorul implementează funcţiile unităţii centrale de prelucrare.

Pentru a putea fi folosit într-un sistem de calcul, unui microprocesor trebuie să i se adauge

alte componente, cum ar fi memorie, sau componente pentru primirea şi trimiterea datelor.

Pe de altă parte microcontrolerul a fost proiectat să conţină toate cele trei

componente principale (UCP, memorie, echipamente de intrare-ieşire) într-un singur circuit

integrat. Astfel, nu mai sunt necesare alte componente externe deoarece toate perifericele

sunt deja incluse în el. Funcţiile principale ale componentelor însă rămân neschimbate fiind

aceleaşi indiferent de aplicaţia dezvoltată, dar din motive de preţ şi dimensiune

microcontrolerele dispun de un set redus de instrucţiuni şi o capacitate de adresare mai mică.

Astfel, făcând trimitere la cele două tipuri de arhitecturi prezentate anterior în Fig. 1.1

şi Fig. 1.2, microprocesorul reprezintă unitatea centrală de prelucrare, pe când

microcontrolerul reprezintă întreg sistemul de calcul.

Page 7: c01-arhitectura generala

SISTEME CU MICROPROCESOARE – note de curs

7

Pentru a pune în evidenţă structura internă a microcontrolerelor se consideră următorul

exemplu.

Exemplu

Se analizează cazul unui sistem de control al unei sere. Acesta

monitorizează umiditatea din sol cu ajutorul unui traductor care furnizează

un semnal analogic. Dacă acest semnal este sub o anumită valoare se

comandă pornirea sistemului de irigaţie care presupune deschiderea unei

valve pentru apă timp de 5 secunde apoi închiderea acesteia timp de 5

secunde şi repetarea acestui ciclu până la refacerea umidităţii dorite a

solului. Apa pentru irigat provine dintr-un rezervor, iar nivelul acesteia

este sesizat cu ajutorul unui flotor. Când nivelul apei scade sub un anumit

prag se va închide un comutator care va activa o alarmă sonoră. Se cere

structura unui sistem bazat pe microcontroler care implementează

funcţionalitatea amintită.

Soluţia pentru această problemă se prezintă în Fig. 1.3 şi pune în evidenţă

perifericele necesare. Pentru interfaţarea semnalului care provine de la

traductorul de umiditate va fi necesar un port de intrare analogic, respectiv

un convertor analog-digital. Având în vedere că rezistenţa electrică a

solului dintre cei doi electrozi ai traductorului se modifică odată cu

umiditatea, prin intermediul unui divizor rezistiv se va putea culege

semnalul analogic necesar. Convertorul analog-digital al

microcontrolerului va discretiza acest semnal furnizând o valoare digitală

internă echivalentă care va putea fi comparată cu valoarea de referinţă.

Resursele necesare pentru implementarea proiectului pot fi

rezumate după cum urmează:

- o intrare pentru un oscilator extern conectat la un counter/timer

care să furnizeze baza de timp pentru obţinerea celor 5 secunde

cerute. În general, tactul sistem este de cele mai multe ori folosit

de către un timer intern pentru obţinerea temporizărilor

- o intrare analogică pentru măsurarea semnalului analogic care

provine de la traductorul de umiditate

- o intrare digitală pentru detectarea nivelului apei din rezervor

- o ieşire digitală pentru comanda valvei sistemului de irigat

- o ieşire digitală pentru activarea alarmei

- UCP pentru realizarea calculelor şi pentru efectuarea operaţiilor de

Page 8: c01-arhitectura generala

ARHITECTURA GENERALĂ

8

intrare-ieşire

- Memorie program (de obicei memorie de tip ROM)

- Memorie de date pentru stocarea variabilelor temporare (de obicei

memorie de tip RAM)

Fig. 1.3. Controlul umidităţii într-o seră

Presupunând că programul de control nu ocupă complet toate resursele

microcontrolerului, sistemul ar mai putea interfaţa şi alte semnale precum

temperatura sau iluminarea, pe care le-ar putea în plus transmite la

distanţă prin intermediul unui sistem de comunicaţie, în vederea obţinerii

unui sistem complet de monitorizare şi control a parametrilor de mediu ai

unei sere.

În concluzie, pornind de la exemplul anterior se pot identifica o parte din

componentele unui microcontroler. Astfel, structura generală a microcontrolerelor include

unitatea centrală de prelucrare, memorii de date şi program, ceas intern, timere, interfeţe de

comunicaţie, convertoare analog-digitale, circuite de veghe.

Fig. 1.4. Structura generală a microcontrolerelor

Page 9: c01-arhitectura generala

SISTEME CU MICROPROCESOARE – note de curs

9

1.4 STRUCTURA INTERNĂ A MICROCONTROLERELOR DIN FAMILIA PIC18F

PIC este o familie de microcontrolere produse de compania Microchip Technology.

Denumirea PIC este o prescurtare de la “Programmable Intelligent Computer” (Calculator

Inteligent Programabil). Succesul de care se bucură aceste microcontrolere se datorează în

mare măsură suportului oferit de producător şi al mediului de dezvoltare MPLAB IDE

disponibil gratuit pe site-ul producătorului1. Numărul mare de aplicaţii, posibilitatea de a

dezvolta aplicaţiile în limbaj de asamblare sau în C, dar şi o mulţime de biblioteci bine

documentate permit dezvoltarea rapidă a aplicaţiilor şi fac din aceste microcontrolere un bun

candidat pentru studiul din acest curs.

PIC 18 reprezintă o familie de microcontrolere cu instrucţiuni pe 16 biţi, şi magistrală

internă de date de 8 biţi, memorie program de tip flash, spaţiu de memorie date adresabil

liniar. Familia a fost extinsă cu un număr mare de protocoale de comunicaţii, CAN, Ethernet,

USB, SPI, I2C, Irda, existând în prezent peste 100 de membri ai familiei fiecare cu alte

combinaţii de facilităţi. În continuare se prezintă câteva caracteristici ale acestor

microcontrolere.

Microcontrolerele PIC analizate în acest curs sunt bazate pe arhitectura Harvard.

Pentru a reduce din complexitatea circuitului de control, aceste microcontrolere

implementează un set redus de instrucţiuni (en. RISC = Reduced Instruction Set Computer).

Spre deosebire de procesoarele RISC, procesoarele cu set complex de instrucţiuni (en. CISC =

Complex Instruction Set Computer) au fost proiectate să implementeze un set de instrucţiuni

cât mai apropiat de cel al limbajelor de nivel înalt, motiv pentru care şi numărul de

instrucţiuni este mai mare. În schimb, procesoarele RISC dispun de un set compact de

instrucţiuni şi moduri mai puţine de adresare, obţinându-se în felul acesta timpi de execuţie ai

instucţiunilor mai mici la aceeaşi frecvenţă de tact.

Unul dintre avantajele importante ale arhitecturii Harvard este dat de faptul că

magistralele celor două tipuri de memorii pot avea dimensiuni diferite. Astfel, magistrala de

date (instrucţiuni) a memoriei program împreună cu memoria program pot fi organizate pe

cuvinte (în cazul analizat este vorba de cuvinte de 16 biţi), iar magistrala şi memoria de date

sunt organizate pe octet. Acest lucru, combinat cu setul redus de instrucţiuni permit

implementarea unor instrucţiuni cu lungime fixă ce pot fi extrase într-un singur pas.

1 http://www.microchip.com

Page 10: c01-arhitectura generala

ARHITECTURA GENERALĂ

10

1.4.1 Execuţia instrucţiunilor

Înţelegerea ciclului instrucţiune este esenţială pentru înţelegerea modului de

funcţionare al microcontrolerelor. Un ciclu instrucţiune presupune două faze principale:

- Faza de extragere a instrucţiunilor din memoria program într-un registru intern al

UCP

- Faza de execuţie care include decodificarea instrucţiunii, extragerea operanzilor,

efectuarea operaţiei specificate în codul instrucţiunii şi depunerea rezultatului în

memorie

Durata unui ciclu instrucţiune depinde de frecvenţa de lucru a sistemului, fiind egală

cu 2x4 tacţi sistem. Astfel, tactul sistem este divizat intern la patru fiind generate patru

semnale de tact în cuadratură (Q1, Q2, Q3 şi Q4). Numărătorul program este incrementat în

Q1, iar instrucţiunea este extrasă din memorie în registrul de instrucţiuni în Q4. În

următoarele Q1 până la Q4 instrucţiunea este decodificată (Q1), se citesc datele/operanzii din

memorie (Q2), se procesează datele în funcţie tipul instrucţiunii decodificate (Q3), se scriu

datele/rezultatele în memorie (Q4). Dacă oricare din aceşti paşi lipseşte, datorită tipului de

instrucţiune care se execută, se va insera un pas fără operaţie în locul lui, astfel încât timpul de

execuţie nu se reduce.

Analizând cele două faze ale ciclului instrucţiune se constată că în faza de extragere

UCP accesează memoria program, iar în faza de execuţie UCP accesează memoria de date.

Ţinând cont de faptul că microcontrolerul implementează o arhitectura Harvard, iar cele două

memorii pot fi accesate prin magistrale independente, pentru a creşte performanţa sistemului

s-a implementat un pipeline pe două nivele pentru instrucţiuni. Acesta permite suprapunerea

celor două faze ale instrucţiunii. Astfel, în timp ce instucţiunea curentă este extrasă cea

precedentă se execută. În acest fel se reduce la jumătate timpul de execuţie al unei

instrucţiuni, datorită faptului că la fiecare 4 tacţi sistem se terimină de executat o instrucţiune.

Excepţie prezintă instrucţiunile care modifică valoarea numărătorului de program.

Fig. 1.5. Fazele de execuţie ale instrucţiunilor

Page 11: c01-arhitectura generala

SISTEME CU MICROPROCESOARE – note de curs

11

Fig. 1.6. Exemplu de execuţie al unui set de instrucţiuni

Pornind de la modul în care se execută instrucţiunile, UCP poate fi împărţită în două

componente: Unitatea de control şi regiştrii asociaţi, respectiv Unitatea Aritmetică şi Logică.

1.4.2 Unitatea de control

În Fig. 1.7 se prezintă structura simplificată a unităţii de control împreună cu circuitele

componente.

Fig. 1.7. Unitatea de control

Instrucţiunile care constituie programul microcontrolerului sunt stocate în memoria

program sub forma unor cuvinte binare la adrese succesive. Un numărător binar, denumit

numărător de program (en. PC = Program Counter) este utilizat pentru a adresa pe rând

fiecare instrucţiune. Sub controlul acestui numărător, instrucţiunile vor fi extrase pe rând din

memoria program, iar apoi vor fi executate.

Doi regiştri de instrucţiuni, care împreună formează Pipeline-ul, vor stoca codul

instrucţiunilor extrase din memoria program. Cel de sus, Registrul de Instrucţiuni 1 (RI1) va

stoca instrucţiunea n şi o va păstra pe durata următorului ciclu instrucţiune. Această structură

permite ca instrucţiunea n-1, aflată în registrul de la baza pipeline-ului (Registrul de

Instrucţiuni 2 - RI2) să fie executată în timp ce instrucţiunea n este extrasă din memorie şi

stocată în Registrul de instrucţiuni 1 al pipeline-ului. După execuţia instrucţiunii n-1 se

Page 12: c01-arhitectura generala

ARHITECTURA GENERALĂ

12

transferă conţinutul din registrul de instrucţiuni 1 al pipeline-ului în registrul de instrucţiuni 2,

urmând ca în timp ce instrucţiunea n+1 este extrasă din memorie şi stocată în vârful pipeline-

ului, instrucţiunea de la bază (instrucţiunea n) să fie executată.

Una din componentele de bază ale UCP, decodificatorul, are rolul de a descifra codul

instrucţiunii stocate în registrul de la baza pipeline-ului şi contribuie la generarea semnalelor

de control interne necesare pentru execuţia instrucţiunii.

1.4.3 Unitatea aritmetică şi logică

Microcontrolerul conţine o unitate aritmetică si logică (Fig. 1.8) pe 8 biţi şi un registru

de lucru de 8 biţi (en. WREG = Work Register) denumit şi acumulator. Unitatea aritmetică este

capabilă să efectueze operaţii precum: adunare, scădere, operaţii logice (ŞI, SAU, XOR etc),

deplasări şi rotiri, înmulţire. În cazul instrucţiunilor cu doi operanzi (ex. adunare) unul din

operanzi se va găsi întotdeauna în registrul de lucru. Celălalt operand poate fi o constantă sau

un registru din memorie. În funcţie de starea unui bit din codul instrucţiunii, denumit bit de

destinaţie d, rezultatul operaţiilor poate fi stocat fie în registrul de lucru (d=0) fie în registrul

din memoria de date din care provenea operandul (d=1). Rezultatul operaţiei de înmulţiere se

va stoca întotdeauna într-o pereche de regiştri speciali PRODH:PRODL.

Introducerea registrului de lucru (WREG) în structura microcontrolerului contribuie la

simplificarea substanţială a modului de reprezentare al instrucţiunilor, lucru care conduce la

creşterea vitezei de execuţie a instrucţiunilor, precum şi la reducerea cantităţii de memorie

necesară pentru stocarea instrucţiunilor. Pentru a exemplifica această idee se poate considera

cazul unei operaţii de adunare în care intervin trei termeni: doi operanzi, respectiv un rezultat.

În lipsa registrului de lucru şi a bitului de destinaţie al rezultatului, codul instrucţiunii de

adunare ar fi trebuit să cuprindă specificarea tuturor celor trei termeni, în loc de unul singur,

lucru care ar fi condus la creşterea numărului de biţi necesari pentru reprezentarea

instrucţiunii.

Page 13: c01-arhitectura generala

SISTEME CU MICROPROCESOARE – note de curs

13

Fig. 1.8. Structura unităţii aritmetice şi logice

Operaţiile aritmetice şi logice pot genera o serie de indicatori ce vor fi stocaţi în

registrul de stare STATUS. Aceşti indicatori sunt: bitul de transport (C - Carry), bitul de

depăşire (OV - Overflow), bitul de semn (N - Negative), rezultat zero (Z - Zero), bitul de

transport auxiliar (DC – Digit Carry). Registrul de stare poate fi şi registru de destinaţie, dar

dacă operaţia executată va conduce la setarea acestor indicatori, se va suprascrie rezultatul. De

exemplu instrucţiunea CLRF STATUS, va şterge toţi biţii registrului STATUS, dar bitul Z va

fi setat la sfârsitul instrucţiunii. În concluzie, registrul de stare va conţine întotdeauna valorile

corecte ale indicatorilor.

Structura registrului de stare STATUS este prezentată mai jos:

bit 7 bit 0- - - N OV Z DC C

Fig. 1.9. Registrul STATUS

Concluzii

Pornind de la ideea introductivă conform căreia microcontrolerele

reprezintă încapsularea unor sisteme de calcul, în acest curs s-au prezentat

principalele tipuri de arhitecturi existente, s-a evidenţiat structura

acestora, rolul elementelor componente, dar şi principalele avantaje şi

dezavantaje care le caracterizează. Studiul unei aplicaţii practice a condus

la identificarea necesarului de elemente componente în structua generală a

microcontrolerelor, iar familia de microcontrolere PIC18F a furnizat

suportul pentru aprofundarea conceptelor referitoare la modul de execuţie

al instrucţiunilor, respectiv la structura internă a UCP.

Page 14: c01-arhitectura generala

ARHITECTURA GENERALĂ

14

1. Arhitectura microcontrolerului permite extragerea unei instrucţiuni

din memorie simultan cu execuţia altei instrucţiuni. Discutaţi

elementele care permit realizarea acestor lucruri în paralel.

2. Care este diferenţa între arhitectura von Neumann şi arhitectura

Harvard a sistemelor de calcul?

3. Care este diferenţa între un microcontroler şi un microcprocesor?

4. Explicaţi rolul registrului de lucru (WREG) în arhitectura

microcontrolerului.

5. Explicaţi rolul registrului status (STATUS) în arhitectura

microcontrolerului.

6. Prezentaţi un avantaj şi un dezavantaj pentru fiecare din cele două

tipuri de arhitecturi prezentate.

7. Care sunt elementele componente ale unui sistem de calcul?

8. Care sunt fazele unei instrucţiuni?

9. Care este rolul numărătorului de program?

Teste de autoevaluare

10. Cum este implementat pipeline-ul la nivelul unităţii de control?

[1] Sid Katzen – The Essential PIC18 Microcontroller, Springer Verlag

London, 2010

[2] Genge Bela, Haller Piroska – Proiectarea sistemelor dedicate şi

încorporate cu microcontrolerul PIC, Editura universităţii „Petru

Maior” din Tg. Mureş, 2008

[3] Microchip – PIC18F2455/2550/4455/4550 Data Sheet, Microchip

Technology Inc. 2006

Bibliografie

[4] www.microchip.com

Page 15: c01-arhitectura generala

SISTEME CU MICROPROCESOARE – note de curs

15

Dicţionar

Adresă

Colecţie de biţi utilizaţi pentru a identifica locaţiile de memorie

Ciclu instrucţiune

Procesul prin care se extrage o instrucţiune din memoria program şi se

execută

CISC

Complex Instruction Set Computer

Dată

Conţinutul unei locaţii de memorie

Instrucţiuni

Comenzi pe care le execută UCP

Magistrală

Colecţie de fire prin care informaţia se transmite paralel între

componentele unui sistem de calcul

Memorie

Spaţiu de stocare

Memorie de date

Spaţiu de stocare temporar (RAM) pentru datele cu care lucrează

programul

Memorie program

Spaţiu de stocare pentru program

Microcontroler

Sistem de calcul încapsulat într-un singur circuit integrat

Microprocesor

Parte componentă a unui sistem de calcul, UCP

Numărător de program

Numărător binar utilizat pentru adresarea instrucţiunilor. Conţine adresa

instrucţiunii care urmează a fi executată

PIC

Programmable Intelligent Computer

Pipeline

Tehnică utilizată pentru a creşte numărul de instrucţiuni care pot fi

executate în unitatea de timp. Pipeline-ul nu reduce timpul necesar

execuţiei unei instrucţiuni, ci creşte numărul de instrucţiuni care pot fi

procesate simultan

Page 16: c01-arhitectura generala

ARHITECTURA GENERALĂ

16

Port

Calea de legătură a sistemului de calcul cu lumea exterioară prin care

acesta poate să trimită şi să primească date

Registru

Spaţiu de stocare

Registru de instrucţiuni

Spaţiu de stocare temporar pentru o instrucţiune extrasă din memorie

RISC

Reduced Instruction Set Computer

STATUS

Registru care indică starea operaţiilor aritmetice executate de unitatea

aritmetică şi logică

UAL

Unitate aritmetică şi logică

UCP

Unitate centrală de prelucrare

WREG

Registru de lucru / acumulator. În general conţine unul din operanzii

instrucţiunilor