Sunteți pe pagina 1din 72

1

ARHITECTURA
O structur electronic destinat controlului unui proces sau, mai general, unei
interaciuni caracteristice cu mediul exterior, fr s fie necesar intervenia
operatorului uman o numim controler.Ce este un microprocesor?.O structura
electronica complexa care de cele mai multe ori ne testeaza inteligenta capacitatea
de a intelege ,si care ne aduce necazuri la examene.
Resursele integrate la nivelul microcircuitului ar trebui s includ, cel puin,
urmtoarele componente:
1. o unitate central (CPU), cu un oscilator intern pentru ceasul de sistem
2. o memorie local tip ROM/PROM/EPROM/FLASH i eventual una de tip RAM
3. un sistem de ntreruperi
4. I/O - intrri/ieiri numerice
5. un port serial de tip asincron i/sau sincron, programabil
6. un sistem de timere-temporizatoare/numrtoare programabile
Structura comuna pentru ambele circuite cu o observatie memoria program
este externa pentru microprocesoare.Cursul prezinta structuri cu microcontrolere.
Este posibil ca la acestea s fie adugate, la un pre de cost avantajos,
caracteristici specifice sarcinii de control care trebuie ndeplinite:
7. un sistem de conversie analog numeric(una sau mai multe intrari analogice)
8. un sistem de conversie numeric analogic i/sau ieiri PWM (cu modulare n
durat)
9. un comparator analogic
10. o memorie de date nevolatil de tip EEPROM
11. faciliti suplimentare pentru sistemul de temporizare/numrare (captare i
comparare)
12. un ceas de gard (timer de tip watchdog)
13. un RTC(Real Time Clock ceas,data,calendar)
14. alte protocoale de transmisie seriala sau paralela (I2C , SPI , 1WIRE , CAN...)
15. faciliti pentru optimizarea consumului propriu
Un microcontroler tipic mai are, la nivelul unitii centrale, faciliti de
prelucrare a informaiei la nivel de bit, de acces direct i uor la intrri/ieiri i un
mecanism de prelucrare a intreruperilor rapid si eficient.

Utilizarea unui microcontroler constituie o soluie prin care se poate


reduce

dramatic

numrul

componentelor

electronice

precum

costul

proiectrii i al dezvoltrii unui produs.


OBSERVAIE Utilizarea unui microcontroler, orict de evoluat, nu elimin
unele componente ale interfeei cu mediul exterior (atunci cnd ele sunt chiar
necesare): subsisteme de prelucrare analogic (amplificare, redresare, filtrare,
protecie-limitare), elemente pentru realizarea izolrii galvanice (optocuploare,
transformatoare), elemente de comutaie de putere (tranzistoare de putere, relee
electromecanice sau statice).
Exist la ora actual un numr extrem de mare de tipuri constructive de
microcontrolere. Un criteriu de clasificare care se poate aplica ntotdeauna este
lungimea (dimensiunea) cuvntului de date. Funcie de puterea de calcul dorit i de
alte caracteristici se pot alege variante avnd dimensiunea cuvntului de date de 4,
8,16 sau 32 de bii (exist chiar i variante de 64 de bii!). Nu este obligatoriu ca
dimensiunea cuvntului de date s fie egal cu dimensiunea unui cuvnt main
(cuvnt program). Exist i multe variante zise dedicate, neprogramabile de
utilizator la nivel de cod main, strict specializate pe o anumit aplicaie, prin
intermediul codului preprogramat i al resurselor hardware, utilizate pentru
comunicaii, controlul tastaturilor, controlul aparaturii audio/video, prelucrarea
numeric a semnalului, etc.
Practic, toate microcontrolerele se realizeaz la ora actual n tehnologie
CMOS. Se pot realiza astfel structuri cu o mare densitate de integrare, cu un consum
redus (care va depinde de frecvena de lucru).Logica intern este static (total sau n
cea mai mare parte) permind astfel, n anumite condiii, micorarea frecvenei de
ceas sau chiar oprirea ceasului n ideea optimizrii consumului. Tehnologia este
caracterizat i de o imunitate mai mare la perturbaii, esenial ntr-un mare numr
de aplicaii specifice. Se realizeaz variante pentru domeniu extins al temperaturii
de funcionare (de ex.- 40 la +135 C).
Exist foarte multe variante de ncapsulare (capsule de plastic i mai rar de
ceramic),multe din ele destinate montrii pe suprafa (SMD): SOIC, PLCC, PQFP,
TQFP (x100pini), etc., dar i variante clasice cu pini tip DIP/DIL (tipic de la 8 la 68
pini).
Arhitecturi de tip " von Neumann "
Cele mai multe microcontrolere sunt realizate pe baza acestei arhitecturi de
sistem.Microcontrolerele bazate pe aceast arhitectur au o unitate central (CPU)
3

caracterizat de existena unui singur spaiu de memorie utilizat pentru memorarea


att a codului instruciunilor ct i a datelor ce fac obiectul prelucrrii. Exist deci o
singur magistral intern (bus) care este folosit pentru preluarea a instruciunilor
(fetch opcod) i a datelor;efectuarea celor dou operaii separate, n mod secvenial,
are ca efect, cel puin principial,ncetinirea operaiilor. Este arhitectura standard
(cea mai des ntlnit) i pentru microprocesoarele de uz general.

Fig.1 Arhitectura von Neumann

Arhitecturi de tip " Harvard "


La aceast arhitectur exist spaii de memorie separate pentru program i
date. n
consecin ar trebui s existe i magistrale separate (de adrese i date) pentru codul
instruciunilor i respectiv pentru date. Principial exist astfel posibilitatea execuiei
cvasiparalele (suprapunerii) a celor dou operaii menionate anterior. Codul unei
instruciuni poate fi preluat din memorie n timp ce se execut operaiile cu datele
aferente instruciunii anterioare. Este posibil (cel puin teoretic) o execuie mai
rapid, pe seama unei complexiti sporite a microcircuitului, mai ales atunci cnd
exist i un pipeline. Este arhitectura standard pentru procesoarele numerice de
semnal (DSP). Datorit costului mare al implementrii unei astfel de arhitecturi, n
cazul microcontrolerelor se ntlnete mai ales o arhitectur Harvard modificat, cu
spaii de memorie separate pentru program i date, dar cu magistrale comune pentru
adrese i date.
4

CISC
Aproape toate microcontrolerele au la baza realizrii CPU conceptul
CISC (ComplexInstruction Set Computer). Aceasta nseamn un set uzual
de peste 80 instruciuni, multe din ele foarte puternice i specializate. De
obicei multe din aceste instruciuni sunt foarte diferite ntre ele: unele
opereaz numai cu anumite spaii de adrese sau registre, altele permit
numai anumite moduri de adresare, etc. Pentru programatorul n limbaj de
asamblare exist unele avantaje prin utilizarea unei singure instruciuni
complexe

locul

mai

multor

instruciuni

simple

(analog

macroinstruciunilor clasice dintr-un limbaj de asamblare) .


RISC
RISC (Reduced Instruction Set Computer) este un concept de
realizare a CPU care a
nceput

fie

utilizat

cu

succes

de

ceva

timp

la

realizarea

microcontrolerelor. Prin implementarea unui set redus de instruciuni care


se pot executa foarte rapid i eficient, se
obine

reducere

complexitii

microcircuitului,

suprafaa

disponibilizat putnd fi utilizat n alte scopuri. Printre caracteristicile


asociate de obicei unui CPU RISC se pot meniona:
- arhitectur Harvard modificat sau von Neumann
- vitez sporit de execuie prin implementarea unui pipeline pentru
instruciuni

- set de instruciuni ortogonal (simetric): orice instruciune opereaz cu


orice spaiu de adrese (de memorie) sau orice registru, instruciunile nu
prezint combinaii speciale, excepii, restricii sau efecte colaterale.
ASPECTE LEGATE DE MEMORIA MICROCONTROLERELOR
n afar de memoria local de tip RAM, de dimensiuni relativ reduse
(de la x10 octei la x1k), implementat ca atare sau existent sub forma
unui set de registre i destinat memorrii datelor (variabilelor), mai
exist o serie de aspecte specifice, marea majoritate a acestora fiind
legat de implementarea fizic a memoriei de program (i eventual a unei pri a
memoriei de date) cu ajutorul unor memorii nevolatile. Clasic, memoria
de program era implementat ntr-o variant de tip ROM : EPROM pentru
dezvoltare

producie

pe

scar

mic/medie

sau

mask-ROM pentru

producia de mas.
Principalele concepte noi aprute de a lungul timpului n legtur
cu implementarea memoriei de program sau date sunt enumerate n
continuare.
a. OTP - majoritatea productorilor ofer variante de microcontrolere la
care

memoria

local

de

program

este

de

tip

OTP

(One

Time

Programmable), practic o memorie PROM identic intern cu varianta


EPROM, dar fr fereastra de cuar pentru tergere (deci i mai ieftine);
aceste variante pot fi utilizate ca o alternativ pentru o producie limitat,
pn n momentul testrii i validrii finale a codului, moment n care pot
fi comandate variantele (mask) ROM propriu-zise, cele mai economice
pentru o producie de mas
b. FLASH EPROM - este o soluie mai bun dect EPROM-ul propriu-zis
atunci

cnd

este

necesar

un

volum

mare

de

memorie

program

(nevolatil); mai rapid i cu un numr garantat suficient de mare


(x10000)

de

cicluri

de

programare

(de

tergere/scriere),

este

caracterizat i prin modaliti mai flexibile de programare; este utilizat


numai ca memorie de program.
c. EEPROM - multe microcontrolere au i o memorie de acest tip, de dimensiune limitat
(de la x10 octei la x K octei), destinat memorrii unui numr limitat de parametrii
(memorie de date) care eventual trebuie modificai din timp n timp; este o memorie
relativ lent (la scriere), dar cu un numr de cicluri de tergere/scriere mai mare ca
FLASH-ul
d. NOVRAM (RAM nevolatil) - realizat prin alimentarea local (baterie, acumulator) a
unui masiv RAM CMOS atunci cnd este necesar un volum mare de memorie de program i
date nevolatil; mult mai rapid dect toate celelalte tipuri i fr limitri ca numr de
cicluri.

e. Memoria extern de program sau date.Marea majoritate a familiilor de


microcontrolere permit si utilizarea de memorie extern de program (tipic ROM) sau date
(tipic RAM). Aceasta presupune existenta si utilizarea unor magistrale externe
de adrese si date. Conexiunile externe necesare pentru acestea sunt disponibile ca
funcii alternative ale pinilor. Din pcate, in aceast situaie numrul de conexiuni
exterioare disponibile pentru interfaa cu exteriorul se reduce dramatic, reducnd mult din
versatilitatea microcontrolerului. Mai mult la variantele constructive cu un numr mic de
pini (conexiuni externe) nu este posibil utilizarea de memorie extern, dect, eventual,
intr-o variant cu interfa serial (memorie RAM, FLASH sau EEPROM cu interfa I2C,
SPI, etc.) si numai ca memorie de date.

LIMBAJE DE PROGRAMARE
Limbajul main i de cel de asamblare
Limbajul main (instruciunile main) este singura form de
reprezentare a informaiei pe care un microcontroler o "nelege".Din
pcate aceast form de reprezentare a informaiei este total nepractic
pentru un programator, care va utiliza cel puin un limbaj de asamblare,
n care o instruciune are drept corespondent o instruciune n limbaj
main.
Un program n limbaj de asamblare este rapid i compact. Aceasta
nu nseamn c un
astfel de program, prost scris, nu poate fi lent i de mari dimensiuni,
programatorul avnd
ontrolul total pentru execuia programului i gestiunea resurselor. Utilizarea
numai a limbajului de asamblare pentru dezvoltarea unei aplicaii complexe este
neproductiv de multe ori, deoarece exist i familii de microcontrolere cu
CPU de tip CISC care au un numr foarte mare de instruciuni (x100)
combinate cu moduri de adresare numeroase i complicate.
Totui, nu trebuie uitat c la ora actual muli din productorii mari
de microcontrolere ofer medii de dezvoltare software gratuite care includ
programe asambloare gratuite. De asemenea, comunitatea utilizatorilor
diverselor familii de microcontrolere a dezvoltat i ea, n timp, multe
astfel de asambloare, care sunt disponibile ca freeware.
Un compilator este o implementare a unui limbaj de nivel nalt, mai
apropiat de limbajul natural. Caracteristic pentru execuia unui program

interpretat, este citirea i executarea secvenial a instruciunilor (instruciune cu


instruciune). De fapt fiecare instruciune de nivel nalt este interpretat
ntr-o secven de instruciuni main care se execut imediat.
Cele mai rspndite compilatoare sunt cele pentru limbajele C+
+,BASIC i JAVA .
Marele avantaj al utilizrii unui interpreter este dezvoltarea interactiv i
incremental a aplicaiei: se scrie o poriune de cod care poate fi testat imediat,
instruciune cu instruciune; dac rezultatele sunt satisfctoare se poate continua cu
adugarea de astfel de poriuni pn la finalizarea aplicaiei.
Un compilator

combin uurina n programare

oferit de

un

interpreter (de fapt de


limbajul de nivel nalt) cu o vitez mai mare de execuie a codului. Pentru aceasta
programul, n limbaj de nivel nalt, este translatat (tradus) direct n limbaj main sau n
limbaj de asamblare . Codul main rezultat are dimensiuni relativ mari (dar mai mici dect
cel interpretat) i este executat direct, ca un tot, de microcontroler. De regul codul generat
poate fi optimizat fie ca dimensiune, fie ca timp de execuie.

Cele mai populare i utilizate sunt cele pentru limbajul C.


Deci codul este obinut cu ajutorul unui mediu integrat de dezvoltare a
programelor (IDE-Integrated Development Environment) care conine
n mod tipic urmtoarele componente software:
-

un editor specializat (orientat pe codul surs),

un asamblor/compilator ,

un editor de legturi/locator ("link-editor/locator"),

programe de gestiune a unor biblioteci de cod ("librarians"),

programe de conversie a formatelor de reprezentare a codului (de exemplu din


binar n format Intel HEX )

un simulator i/sau depanator ("debugger")

posibilitatea de atasare a unui programator ICSP

DEZVOLTAREA I TESTAREA APLICAIILOR


Cele

mai

rspndite

mijloace

hardware/software

utilizate

dezvoltarea i testarea
aplicaiilor sunt enumerate n continuare.
a. Simulatoarele .
Un

simulator

este

un

program

care

ruleaz

programul

microcontrolerului implementeaz un microcontroler virtual - folosind un sistem de calcul


gazd un PC. Programul se poate executa pas cu pas, coninutul
variabilelor i registrelor poate fi vizualizat i modificat. Reprezint un
punct de plecare atunci cnd se abordeaz un microcontroler, pentru
familiarizarea cu resursele lui i cu limbajul de asamblare. Nu permite
simularea n timp real a ntreruperilor i, de regul, programul ruleaz mai
ncet dect pe maina real. De regul exist mijloace pentru evaluarea
vitezei de execuie a codului simulat (ca numr de cicluri main sau de
stri). Ideal, un simulator ar trebui s permit i simularea complet a
interaciunii, cel putin din punct de vedere logic, cu toate perifericele
disponibile.
b. Programele de depanare ("debbugers").

Sunt programe "monitor" care pe maina int (microcontrolerul)


oferind

faciliti

de

depanare

similare

simulatorului.

Interfaa

cu

utilizatorul este realizat prin intermediul unui sistem gazd (PC) i/sau a
unui terminal alfanumeric, conectate prin intermediul unui port serial.
Utilizeaz o parte din resursele microcontrolerului : memorie de program
pentru el nsui (de tip ROM) i memorie de date (RAM) pentru variabile
proprii, memorie pentru programul ce se depaneaz, un port serial pentru
comunicaia cu sistemul gazd, eventual ntreruperi, etc. Se utilizeaz de
regul mpreun cu un sistem de dezvoltare (sau evaluare), care este un sistem
minimal realizat n jurul microcontrolerului pe care ruleaz depanatorul, dar
avnd

resurse

suficiente

pentru

permite

testarea

depanarea

aplicaiilor uzuale.
b. Emulatoarele In Circuit (ICE-In Circuit Emulators).
Sunt cele mai eficiente mijloace de testare i dezvoltare i au fost
mult timp cele mai complexe i mai costisitoare. Presupun existena unui
hardware dedicat care nlocuiete practic microcontrolerul (se conecteaz
n locul acestuia n sistemul pentru care se dezvolt aplicaia), n acelai
timp

fiind

disponibile

toate

facilitile

descrise

anterior

altele

suplimentare. Permit un control total al mainii int (n timp real), fr a


folosi nimic din resursele. Ele sunt realizate de cele mai multe ori ca un
mijloc de testare i depanare de sine stttor, conectat la un PC prin
intermediul unui port paralel, serial sau USB. Nu este necesar nlocuirea
microcontrolerului de pe sistemul int, conectarea cu acesta fcndu-se
printr-un numr minim de interconexiuni. Exemple de astfel de interfee
ar fi: JTAG/ICE In Circuit Emulation - la multe familii de microcontrolere,
BDM (Background Debug Monitor) pentru Freescale/Motorola. Existena
acestui tip de interfee face posibil realizarea de emulatoare cu un pre
de cost mult mai mic dect cele clasice.
d. Simulatoarele de sistem
Reprezint o categorie aparte de simulatoare destinate simulrii cat
mai complete a
sistemului i a aplicaiei n ansamblu, cu alte cuvinte a microcontrolerului
mpreuna cu o dispozitivele hardware externe. Ele integreaz de regula i
un simulator SPICE. Cele mai cunoscute sunt Proteus VSM (Virtual System
Modelling) al firmei Labcenter Electronics . Un astfel de simulator permite
rularea aplicaiei (codului), n mod continuu sau pas cu pas i evaluarea n
detaliu a modului cum aceasta (si microcontrolerul) interacioneaz cu
hardware-ul extern. El permite ceea ce se numete co-simularea (Co-

10

simulation):

interaciunea

dintre

software-ul

microcontrolerului

dispozitivele electronice analogice sau


numerice conectate cu acesta. Sunt bazate pe utilizarea unor modele
avansate ale unor familii de microcontrolere precum i pe modelele SPICE
ale dispozitivelor electronice. Pentru fiecare model de microcontroler
exist un asamblor i un editor de legturi integrat astfel c se poate
face, n anumite limite, i dezvoltarea codului n asamblare. Pe lng
aceasta ele au asigurate i interfee corespunztoare pentru a se putea
dezvolta

codul

cu

medii

de

programare

consacrate

pentru

familia

respectiv de microcontrolere, folosind de exemplu un compilator C.


Facilitile

de

simulatoarele

simulare
deja

codului

menionate.

Pe

sunt

similare

lng

celor

numeroasele

ntlnite

la

dispozitive

electronice discrete, circuite integrate analogice sau numerice, circuite de


memorie sau periferice,n categoria dispozitivelor externe se mai pot
meniona i

sisteme

de

afiare

(LED,

LCD),tastaturi

matriciale

sau

butoane, relee, etc.


e. Nucleele (sistemele de operare) de timp real (Real Time kernel, Real Time
Operating System-RTOS)
Pe piaa de software pentru microcontrolere exista i componente
numite nuclee de
timp real sau sisteme de operare n timp real (RTOS). Un astfel program
de sistem de nivel
profesional este o componenta software scump sau foarte scump,
funcie de complexitatea
lui, de accesibilitatea surselor programului, de familia de microprocesoare
creia ii este adresat, de modul in care va fi distribuit mpreuna cu
aplicaia. Exist ins i variante de RTOS, de mai mic complexitate, din
categoria freeware sau shareware, care pot fi utilizate cu performante
mulumitoare.
Un sistem de operare n timp real faciliteaz crearea aplicaiilor aa
zise de timp real,dar nu garanteaz i faptul ca ele chiar se vor executa n
timp real, aceasta depinznd de modul n care este utilizat acest software
la nivel de sistem.
Spre deosebire de un calculator cum este PC-ul, un sistem integrat
(embedded system) este proiectat ntotdeauna ntr-un anumit scop i are
un cod care se execut aproape ntotdeauna dintr-o memorie ROM, fiind
de presupus c nu se modific pe parcursul execuiei aplicaiei. Astfel
lucrurile sunt uurate deoarece comportarea sistemului poate specificat
complet nc din faza de proiectare. Din aceasta cauza, n cazul multora

11

din aplicaii, multe probleme se pot rezolva n timp real i fr s se


utilizeze un RTOS. Esenial este pan la urm calitatea i competena
celui care programeaz aplicaia !
CRITERII DE ALEGERE A UNUI MICROCONTROLER
n momentul n care se dorete alegerea unui microcontroler (sau
mai bine zis a unei familii de microcontrolere) pentru dezvoltarea unei
aplicaii de tip embedded system exist mai multe criterii care trebuie
luate n considerare, innd cont de implicaiile multiple ale acestei
alegeri. Vom ncerca s grupm aceste criterii dup cerinele impuse
aplicaiei i s prezentm cteva din ntrebrile rezultate, la care trebuie
dat un rspuns.

a. Costurile aplicaiei
Care va fi scara de producie: prototip, producie mic/medie sau de
mas?
Care sunt costurile permise pentru microcontroler?
Care sunt costurile permise pentru mediul de programare i dezvoltare?
b. Timpul de dezvoltare al aplicaiei
Ce limbaj de programare s aleg?
Ce limbaje de programare cunosc bine i ce medii de dezvoltare am
utilizat?
Ce modalitate de testare i depanare folosesc: simulator, sistem de
dezvoltare, emulator?
c. Caracteristicile fizice
Care este viteza de prelucrare (de calcul) necesar?
De ct memorie am nevoie pentru program i respectiv date?
Va fi necesar si o memorie extern?
Ce fel de alimentare este disponibil i care sunt limitrile acesteia?
De cte intrri i/sau ieiri am nevoie?
Ce fel de intrri i/sau ieiri sunt necesare: intrri/ieiri analogice, ieiri
numerice de curent mai mare?
Care sunt resursele necesare n materie de temporizare/numrare si care
ar fi caracteristicile lor cele mai importante (rezoluie, frecventa maxima
de numrare) ?
Ce tip de capsul, ce dimensiuni fizice i numr de pini ar trebui s aib?
Care este gama temperaturilor de lucru necesare?

12

Aplicaia va funciona ntr-un mediu cu caracteristici speciale, de exemplu


n care exist
perturbaii electromagnetice puternice?
d. Conectivitatea
Care

sunt

resursele

de

comunicaie

necesare:

cte

porturi

seriale

asincrone i cu ce
caracteristici, ce tipuri de magistrale seriale sincrone sunt disponibile?
Este necesar o conectivitate Ethernet (o stiv TCP/IP), USB sau wireless
(stive Bluetooth,
Zigbee, etc.)?
e. Compatibilitate, scalabilitate i dezvoltarea ulterioar
Cu ce tipuri de circuite se poate interfaa ct mai simplu: sisteme de
afiare, senzori, elemente de comand i execuie (relee, motoare de cc,
motoare pas cu pas, etc.)?
Cum se poate realiza extinderea ulterioar, atunci cnd este necesar?
Exist mai multe variante n familia respectiv de microcontrolere, care s
acopere eventualele cerine suplimentare n materie de vitez de lucru,
resurse periferice sau de memorie?

f. Alte aspecte
Ce distribuitori exist i ct sunt de accesibili pentru mine?
Care este suportul oferit de fabricant sau distribuitor icare este baza
de cunostine existent:site-uri web, documentaie on-line sau pe CDuri, note de aplicaii, exemple de proiectare (reference designs),
software din categoria freeware/shareware si, nu n ultimul rnd,
forumuri de discuii pentru utilizatori?

Din pcate rspunsurile la multe din aceste ntrebri sunt


corelate ntre ele. Un
exemplu este legtura care exist ntre criteriile de cost i cele de timp
de dezvoltare.
Principial, utilizarea unui limbaj de nivel nalt mpreun cu un emulator
pentru testare i depanare poate duce la scurtarea consistent a
timpului de dezvoltare. Dar preul unui compilator este ntotdeauna
mai mare dect cel al unui asamblor, iar preul unui emulator este i el
mai mare dect cel al unor mijloace mai simple de testare i depanare.

13

practic,

de

cele

mai

multe

ori,

alegerea

unui

microcontroler pentru a anumit aplicaie este i trebuie s fie


rezultatul unui compromis.
CU CE SI CUM SE POATE PROGRAMA UN MICROCONTROLER?
a.Programator

specializat

extern.(ex.STK200) -

este

un

circuit

electronic care conecteaza un port al PC-ul ( serial,paralel sau USB ) cu


pinii de programare ai microcontrolerului. Programatoarele acestea au de
obicei

un

soclu

ZIP

in

care

se

pot

conecta

mai

multe

tipuri

de

microcontrolere in diferite pozitii,pentru ca pinii de programare difera ca


pozitie de la familie la familie . Unele programatoare pot programa chiar
si diferite familii de microcontrolere.
b. Programarea "In System" (ISP-In System Programming) - folosirea
unor memorii nevolatile de tip FLASH face posibil i "programarea" unui astfel de
microcontroler fr a-l scoate din sistemul n care este ncorporat (programare on-line, In
System Programming) ; programarea se face de regul prin intermediul unei interfee
seriale dedicate de tip ISP (poate avea nume diferite) sau a unei interfee standard JTAG.
c. Bootloader multe din microcontrolerele recente la care memoria de program este
de tip FLASH au i facilitatea (au de fapt instruciuni dedicate acestui scop) de a putea i
scrie n aceast memorie de program fr a utiliza un circuit de programare extern. Astfel
n microcontroler poate exista permanent (rezident) un cod de mici dimensiuni (denumit i
bootloader) care pur i simplu va ncrca prin intermediul portului serial (este doar un
exemplu) codul utilizator sau constantele pe care acesta vrea eventual s le actualizeze.
Bootloader-ul este i cel care lanseaz n execuie programul utilizator dup ncrcarea
acestuia.
ATENTIE !!! Protejarea codului - protejarea codului program dintr-o memorie
local nevolatil mpotriva accesului neautorizat (la citire deoarece pirateria soft exist i
aici) este oferit ca o opiune (ea mai trebuie i folosit!) la variantele FLASH, EPROM
sau OTP. Codul poate protejat att la citire cat i la scriere (practic circuitul trebuie ters,
nainte de a se mai putea scrie ceva n el). Este eliminat astfel posibilitatea de a se realiza,
n acest caz, de patch-uri (alterri cu un anumit scop) ale codului original. La variantele
mask-ROM propriu-zis protecia este de cele mai multe ori implicit.

14

Fig.2 Progamator universal

Reprezentari numerice

15

16

17

Rezumat notiuni elementare

18

19

20

21

22

Multiplexorul

23

PLA

24

PROM

FPLA

25

FPGA

Proces industrial controlat de microcalculator

26

Structuri microprocesoare

27

28

29

30

31

32

33

34

35

36

37

38

39

40

Organizarea memoriei
Spaii de adres separate pentru memoria de program i date. Memoria de program este o
memorie nevolatil avnd o lungime de pn la 64K*8. Dac pinul EA\ este inut din
exterior n starea logic 1, primele 4K locaii de memorie sunt accesate din memoria
intern a microcontrollerului restul fiind accesate din memoria extern. Dac pinul
EA\ este inut din exterior n starea logic 0, toate cele 64K locaii de memorie sunt
accesate din memoria extern.

Acceseaza att de memorie de date intern ct i extern. Memoria de date intern este de
128*8 RAM plus un numr de Regitri cu Funciuni Speciale (Special Function
Registers SFRs). Cele mai mici 128*8 adrese RAM pot fi accesate prin adresare
direct sau indirect. Regitrii cu funciuni speciale pot fi accesai doar prin adresare
direct. Memoria de date extern poate avea o lungime de pn la 64K*8, fiind o
memorie de tip RAM.

41

Cele mai mici 128*8 adrese pot fi imprite n 3 segmente:


Register Banks 0-3: adresele de la 00H pn la 1FH (32 octei). Microcontrollerul dup
reset pointeaz la register bank 0. Selecia bancului de regitri se face prin software.
Fiecare register bank conine 8 regitri de un octet, 0 pn la 7.
Bit Addressable Area: adresele de la 20H pn la 2FH (16 octei). Fiecare dintre cei 128
bii pot fi adresai direct (00H pn la 7FH). Fiecare dintre cei 16 octei pot fi adresai
ca i octet.
Scratch Pad Area: adresele de la 30H pn la 7FH (80 octei). Folosii

pentru RAM de date.

42

43

44

Structura de principiu a unei memorii cu acces aleator (RAM)


O prima varianta pentru un circuit de memorie cu acces aleator (random acces
memory - RAM) este data in figura 3, unde la structura de latch adresabil a fost adaugat un
MUX ce permite selectarea oricarui bit memorat folosind aceeasi adresa ca cea care este
utilizata pentru scriere. Memoria are 2n+ locatii (latch-uri).
(Termenul de memorie cu acces aleator s-a impus din considerente ce tin de istoria
sistemelor de memorie. Primele structuri fizice folosite la stocarea unui numar mare de biti
s-au bazat pe procese magnetice si ofereau posibilitatea stocarii, pe banda, tambur sau disc,
intr-o maniera seriala, in sensul ca pentru a se accesa bitul al n-lea trebuia parcursa
inregistrarea bit cu bit pina in dreptul acestuia. Bitul n nu putea fi accesat decit dupa ce a
fost accesat bitul n-1. In momentul in care s-au putut concepe memorii la care ordinea de
accesare a bitilor sa fie oarecare s-a realizat un pas foarte mare inainte. Accesul intr-o
ordine aleatoare ofera facilitati de utilizare deosebite. Acest fapt a consacrat denumirea de
memorie cu acces aleator, RAM.)
DMUX-ul estc folosit numai la scriere iar MUX-ul numai la citirea din memoria RAM
structurata rudimentar in aceasta prima varianta. Corelatiilc esentialc intre semnalele de la
bornele acestei memorii sint prezentate in diagramele din figura 4. In momentul tj incepe un
ciclu de citire prin setarea adresei la valoarca dorita (unii biti se stabilizeaza pe zero iar altii
pe unu). Semnalul OS' (output select) se poate activa inainte sau dupa momentul t1,
determinand activarea iesirii dc tip tristatc ce trece in unu sau zero, in functie de continutul
locatiei selectate. Prin deselectie (OS' = 1) iesirea D out trece iarasi in starea de mare
impedanta (Hi-Z). Adresa se schimba in momentul t2, cind incepe un ciclu de scriere. Dupa
un interval de timp, tAW, minim, poale fi activata si comanda de scriere WE (write enable)
care are o durata, tw, minima, impusa prin datele de catalog, conditionata de structura interna
a memoriei. Intrarea de date,Din trebuie sa fie stabila un interval de timp, t Su, inainte de
tranzitia pozitiva a semnalului WE'; de asemenea trebuie mentinuta un timp, t H, dupa
45

disparitia acestui semnal, pentru ca scrierea sa fie sigura. Cind un circuit de memorie este
folosit in proiectarea unui sistem trebuic consultata cu atentie foaia de catalog ce-i descrie
functionarea si-i da "timing'-ul critic. Fiecare tip de memorie si fiecare firma poseda
caracteristici ce trebuiesc luate in considerare in definirea unei structuri concrete.
Complexitatea RAM-ului realizat ca o structura liniara de celule este data, in principal,
dc circuitele de acces, DMUX-ul si MUX-ul.daca numarul de locatii depaseste o anumita
dimensiune.
Demonstratia este imediata daca se calculeaza complexitatea RAM-ului

OS'

Fig.3

fig.4

46

Ar fi utila gasirea unei structuri la care efortul structural major sa fie realizat pentru
implementarea latch-urilor, ele fund cele ce dau efectiv functia circuitului. Vom cauta o
solutie de acelasi tip ca in cazul ROM- urilor . Problema suplimentara ce se cere rezolvata
este cea a accesului bidirectional la celula de memorie, in care trebuie sa scriem si pe care
trebuie sa o citim.
MUX-ul bidirectional este structura ce va permite realizarea RAM-ului ca o matrice
bidimensionala la care circuitele de acces vor fi nesemnificative in determinarea
complexitatii.
Pentru inceput vom restructura un MUX sub forma circuitului din figura 5. Un DMUX, cu
iesirile active in unu, asigura deschiderea cite unui NAND cu fan-in = 2. Cele 2" AND-mi vor
fi sumate intr-un OR a carui iesire va fi W. AND-urile vor putea fi tehnologic realizate sub
forma unor porti de transmisie cu ajutorul unui tranzistor MOS. Se obtine astfel, circuitul in
care, daca O, este activata tranzistorul corespunzator va fi deschis si intre Ii si W va fi realizata
o cale bidiretionala in sensul ca va putea circula curentul in ambele sensuri pentru ca
tranzistorul se comporta ca o rezistenta ohmica de mica valoare. Acest circuit se va putea
comporta ca un MUX cu intrarile Ii- si iesirea W, sau ca un DMUX cu intrarea W si iesirile
li. Vom denumi acest circuit multiplexor -demultiplexer, MDX.
Celula elementara a unei memorii RAM porneste de la latch-ul elementar la care se
adauga circuitele ce permit comutarea starii. In figura 6 este prezentata o celula realizata
cu 6 tranzistoare MOS. Tranzistoarele Qi, Q3 i Q2, Q4 formeaza cite un circuit
inversor. lesirea Qjj a inversorului format din Qi i Q3 este conectata la intrarea celuilalt, a
carui iesire, Qif, este legata la intrarea primului. Este format astfel cel mai simplu latch
imaginabil. Q5 i Qt formeaza cite o poarta bidirectionala de acces la Qt] i, respectiv, la Qij'.
Portile de acces sint deschise de semnalul selectie de linie i, LSi (line select). Liniile verticale
permit accesul la celula pentru citire sau scriere. CSjl (selectia coloanei; pentru i) permite
accesul la sau de la Qtj iar CSjO (selectia coloanei j pentru 0) permite accesul la sau de la
Qij'.

fig .5

47

Fig.6

Pentru a inscrie 1 in celula ij se activeaza linia LSi iar pee coloana CSjO se formeaza
semnalul 0 care comuta latch-ul astfel incit Qij = 1. Inscrierea lui 0 in aceeasi celula se face
formand 0 pe coloana CSjl.

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72