Professional Documents
Culture Documents
SMP Curs
SMP Curs
Sisteme cu microprocesoare
Intrare Ieşire
Proces
Pini de conectare
Controlul Timere/
întreruperii RAM ROM Numărătoare
CPU
Porturi
OSC CAN/CNA I/O Port serial
Senzor CAN Procesor CNA Element de execuţie
Memorie
Microprocesorul
Evoluţia microprocesorului
Un procesor este un circuit logic care are drept rol procesarea
instrucţiunilor de bază ce conduc un calculator.
Primele procesoare create aveau multe componente separate, dar pe
măsură ce tehnologia a avansat, s-a realizat integrarea tuturor componentelor
procesorului într-o singur circuit de silicon (cip). Aceste circuite integrate sunt
denumite microprocesoare.
Microprocesoarele se găsesc pretutindeni. Supercalculatoarele sunt
proiectate să realizeze calcule folosind sute sau chiar mii de microprocesoare.
Chiar şi calculatoarele personale ce au un singur procesor central, folosesc alte
procesoare pentru controlul ecranului, al comunicaţiei prin reţea, precum şi al
altor funcţii.
Microprocesoarele sunt proiectate cu scopul rulării programelor.
Procesoarele pot fi programate să realizeze orice funcţie este nevoie la un
anumit moment. Posibilităţile de utilizare ale procesorului sunt limitate doar de
imaginaţia programatorului.
În ultimii 35 de ani, pe măsură ce tehnologiile de fabricaţie s-au
îmbunătăţit, performanţa microprocesoarelor s-a dublat cam odată la 2 ani
(legea lui Moore).
Fiind proiectate să ruleze programe, microprocesoarele realizează multe
funcţii diferite, iar creşterea rapidă a performanţei permite dezvoltarea de noi
aplicaţii. Cererea continuă de noi aplicaţii este datorată dezvoltării proceselor
de fabricaţie.
Fizic, microprocesorul este o colecţie de tranzistori şi fire. Pe măsură ce
numărul tranzistorilor a crescut de la câteva sute la milioane modalitatea de
conectare a tranzistorilor, astfel încât aceştia să execute rapid comenzile ce
rulează programe, a devenit o sarcină mai complicată.
O clasificare a tehnologiei utilizate în funcție de numărul tranzistorilor,
poate fi realizată astfel:
- Integrat pe scară redusă (SSI): 2 – 64 tranzistori
- Integrat pe scară medie (MSI): 64 – 2.000 tranzistori
- Integrat pe scară largă (LSI): 2.000 – 64.000 tranzistori
- Integrat pe scară foarte largă (VLSI): 64.000 – 2 milione de tranzistori
- Integrat pe scară ultra largă (ULSI): 2 milioane – Fără limită.
Toate microprocesoarele actuale folosesc tranzistori de tipul MOSFET
(tranzistor cu efect de câmp tip metal-oxid semiconductor). Desigur, pentru
realizarea circuitului logic, tranzistoarele formează porți logice sau elemente
secvențiale, conectate împreună.
Tranzistoarele MOSFET au trei terminale: poartă (G), sursă (D) și drenă
(D). Ele prezintă și un terminal conectat la substratul pe care a fost realizat
tranzistorul. Funcționarea tranzistorului se bazează pe controlul conductanței
electrice a canalului între drenă și sursă, control realizat prin tensiunea dintre
poartă și sursă.
În funcție de polaritate există două tipuri de tranzistoare MOS: cu canal n
(NMOS) și canal p (PMOS). După principiul de funcționare, tranzistoarele pot
fi clasificate astfel: cu canal indus și canal inițial.
2.000.000.000
1.000.000.000
100.000.000
10.000.000
Numărul de tranzistori
1.000.000
100.000
10.000
2.300
1971 1980 1990 2000 2008
Anul apariţiei
Arhitectura microprocesoarelor
Adrese Date
Memorie (Programe şi
date)
2. Arhitectura Harvard
Conţine memorii separate pentru date şi instrucţiuni ale programului, cu
magistrale separate pentru fiecare.
Memorie Memorie
pentru pentru date
programe
Memorie Memorie
pentru pentru date
programe
Octet 7 6 5 4 3 2 1 0
1 Op-codul (instrucțiunea) D W
2 MOD REG R/M
3 Deplasament, adresare, date
4 Deplasament, adresare, date
5 Date
6 Date
Codul
obiect
Loader
(Adaugă adresele
sistemului RAM)
Procedural Orientat pe
Ne-procedural problemă
Cod maşină
Matlab Mathematica
Limbaj de
asamblare Orientat pe Orientat pe
Algoritmic obiect scriere
Funcţional Logic
LISP ML PROLOG
Visual
Smalltalk C++ JAVA Basic Pearl
Registru de Registrul
complementare instrucțiunii
Logica booleană
și adunare
Unitatea de control
(UC)
Registru tampon
AX AH AL 20
ALU
Regiştrii BX BH BL pentru
generali calculul
CX adreselor
CH CL
DX DH DL
Registre
segment pe Controlul
Alţi regiştrii
16 biţi logic al
generali
magistralei
Pointerul de
Pointer la stiva instrucţiuni
Magistrala de date
Registrul de instrucţiuni
Regiştrii temporari
Şase instrucţiuni
Unitatea sunt puse în coada
ALU de control de aşteptare în
pentru memoria FIFO
operaţii aritmetice
şi logice
Registru de stare
Înmulțire/
Împărțire Translatorul de Translator de
segment pagină
ALU
Unitatea magistralelor
Interfața
magistrale
lor
Decodificator Coadă de
așteptare a
unității de pre-
Coadă de aducere
așteptare pentru Pre-aducere
instrucțiuni
2. Magistrale externe
Un număr prestabilit de fire numite magistrale, sunt utilizate
pentru interfațarea procesorului cu lumea exterioară sau pentru
transferul informațiilor în interiorul unității centrale de procesare.
Magistralele externe sunt grupate în următoarele categorii: magistrala de
date, magistrala de adrese și magistrala de control.
3. Întreruperi
Procesul în urma căruia microprocesorul își suspendă operațiile
curente și execută anumite operații de urgență, poartă numele de
întrerupere. Prin intermediul întreruperilor, dispozitivele externe
realizează comunicația cu procesorul.
O întrerupere mai poate fi definită prin apelul unei subrutine
inițiate de un dispozitiv extern prin hardware (întrerupere hardware) sau
chiar de microprocesor (întrerupere software).
În urma cererilor de întrerupere, microprocesorul execută
instrucțiunea curentă, acceptă întreruperea, salvează conținutul
numărătorului program în vîrful stivei și transferă controlul rutinei ce
deservește întreruperea respectivă. Microprocesorul execută rutina de
deservire (ISR), și după execuția întreruperii transferă din nou controlul
programului principal.
Sistemele de întreruperi pot fi clasificate astfel:
- sistem de întrerupere pe o singură linie sau pe un singur
nivel
- sistem de întrerupere cu mai multe lini sau mai multe
niveluri
- linii de întrerupere vectoriale
3.1. Sistem de întrerupere cu o singură linie
Într-o configurație de acest tip microprocesorul are o singură linie
dedicată cererilor de întrerupere.
Dispozitivele de I/O sunt conectate la linia cererilor de
întrerupere. Cererile de întrerupere sunt trecute printr-o poartă logică
exclusivă (OR), după care sunt aplicate microprocesorului. Ca răspuns
la o cerere de întrerupere, microprocesorul execută următorii pași:
- transferă controlul rutinei de procesare a întreruperii sau
subrutina de nivel a întreruperii (ILS)
- determină adresele dispozitivului ce a transmis cererea
de întrerupere
- transferă controlul către programul de tratare a
întreruperii
- se întoarce la programul principal, activează
întreruperile mascabile și termină execuția.
Magistrala de date
Microprocesor
INTA
INTR
Magistrala de date
Logica de control a
Microprocesor
întreruperilor
…
Întrerupere de tipul 5
Întreruperi rezervate
(rezervată)
Întrerupere de tipul 6
(27)
(rezervată)
…
Întrerupere de tipul 13
(rezervată)
Întreruperi disponibile (224)
Întrerupere de tipul 32
(rezervată)
Întrerupere de tipul 33
(disponibilă)
…
adresă).
Exemplu: Procesorul Intel 8086 are 20 de linii de adresă, prin urmare
numărul de locații adresate este egal cu 220 (1M).
Organizarea memoriei este determinată de: numărul de locații x numărul
de biți stocați în fiecare locație. Prin urmare, se pot întâlni notații de forma: 16
x 1, 16K x 8, 1M x 1, etc.
Memoria RAM
În general memoriile RAM sunt utilizate pentru stocarea datelor.
Memoria RAM poate fi de două tipuri: RAM static (SRAM) și RAM dinamic
(DRAM).
Memoriile DRAM se găsesc cu precădere la calculatoare personale și
sisteme înglobate (embedded), datorită necesarului mare de memorie la prețuri
scăzute.
Memoriile DRAM sunt realizate în tehnologie unipolară NMOS sau
CMOS.
Celula de memorare DRAM conține un singur tranzistor MOS,
funcționând în regim de impulsuri. Memorarea se realizează prin încărcarea
sau descărcarea unui condensator de valoare foarte mică.
Ceas
C Ieșire
Ceas
- D0 – D7 – pini de date
- A0 – A16 – linii de adresă
____
- CE – activare circuitului
____
- OE – activare ieșirii (ieșirea circuitului este deconectată de la pinii
de date)
_______
- PGM – activează modul de programare
Organizarea memoriei
Structura uzuală a memoriei unui sistem cu microprocesor cuprinde atât
memorii RAM cât și memorii ROM. Organizarea și dimensiunile acestora
depind de aplicația în care se utilizează sistemul.
Zonele de adrese ocupate de memoria RAM și ROM depind de
proiectantul sistemului. Pentru un microprocesor pe 8 biți organizarea fizică a
memoriei poate arăta astfel:
N M
1024
unde:
N - adresa de început a blocului de memorie următor
M - adresa de început a blocului de memorie curent
Exemple de conectare:
1. Interfațarea microprocesorului 8086 cu memoria principală
Conectarea microprocesorului Intel 8086, ce lucrează în modul minim,
cu memoria principală se face conform reprezentării:
S4 S3 Segment utilizat
0 0 Extra Segment
0 1 Stack Segment
1 0 Code Segment
1 1 Data Segment
BHE A0
0 0 Se transferă un cuvânt pe 16 biţi
0 1 Se transferă un octet pe D15-D8
1 0 Se transferă un octet pe D7-D0
1 1 Nu are loc transfer
BE 0 BE 1 BE 2 BE 3
0 - - - Se transferă un octet pe D7-D0
- 0 - - Se transferă un octet pe D15-D8
- - 0 - Se transferă un octet pe D23-D16
- - - 0 Se transferă un octet pe D31-D24
Pentru transferul a 1 până la 4 octeţi de date se pot activa unu sau mai
mulţi pini.
A2 A31 - pini de adrese. Împreună cu semnalele de activare BE 0 BE 3
sunt folosiţi pentru generarea adreselor memoriei fizice sau porturilor de
I/O. Prin intermediul acestor pini, 80386 poate adresa direct până la
4GB de memorie fizică (de la adresa 00000000h până la FFFFFFFFh).
W / R, D / C, M / IO, LOCK - pini de ieşire ce specifică tipul ciclului de
magistrală executat de 80386.
W / R - când este în starea HIGH, specifică ciclu de scriere, iar când
este în starea LOW specifică ciclu de citire.
D / C - când este în starea HIGH identifică un ciclu de date, iar când
este în starea LOW identifică un ciclu de control.
M / IO - face distincţia între ciclurile de memorie şi cele ale porturilor
de I/O.
Pinii W / R, D / C şi M / IO definesc un ciclu de magistrală primar.
Aceste semnale sunt valide când ADS (address status output) este activ.
Valoarea 34H (0011 0100) este trimisă la ieşire, prin urmare biţii
0, 1, 3, 6 şi 7 sunt setaţi ca intrări, iar biţii 2, 4 şi 5 ca ieşiri.
Microcomputerul poate trimite data către un dispozitiv extern, de
exemplu un LED conectat la pinii 2, 4 şi 5 printr-o interfaţă
corespunzătoare.
Prin intermediul intrărilor definite anterior, microcomputerul
poate citi starea dispozitivelor externe, cum ar fi comutatoarele.
Pentru dispozitivele de I/O paralele, există doar un singur registru
al direcţiei datelor, cunoscut sub numele de “registru comandă”. Un bit
special din acest registru este utilizat pentru configurare tuturor biţilor
portului ca intrări sau ieşiri.
DMA
Accesul direct la memorie (DMA) este o tehnică ce transferă date
între memoria microcomputerului şi dispozitivele de I/O fără implicarea
microprocesorului. DMA este utilizată în transferul blocurilor mari de
date între dispozitivele periferice (de ex. hard disk) şi memorie. Tehnica
DMA foloseşte un controller DMA pentru operaţiunile de transfer ale
datelor. Principalele funcţii ale controllerului DMA sunt:
Dispozitivele de I/O solicită operaţie de tipul DMA prin
intermediul liniei de cerere DMA a controllerului
Controllerul activează pinul HOLD al microprocesorului,
solicitând acestuia să elibereze magistrala
Microprocesorul răspunde cu semnalul HLDA , indicând că
magistrala este dezactivată. Controllerul DMA plasează
valoarea curentă a registrelor sale interne, cum ar fi registrul
adreselor şi numărătorul, pe magistrală, trimiţând în acelaşi timp
o confirmare către dispozitivul periferic. Controllerul DMA
termină transferul DMA.
În mod uzual, un transfer de tipul DMA începe printr-o cerere pe
linia DMA conectată la circuitul controllerului DMA. După secvenţa de
semnale HOLD / HLDA / DMA ACK dintre microprocesor şi controller,
acesta preia controlul magistralei, controlând datele transferate între
RAM şi dispozitivele de I/O. La terminarea transferului, controllerul
întrerupere microprocesorul prin linia INT şi returnează magistrala
microprocesorului prin dezactivarea semnalelor HOLD şi DMA ACK .
Controllerul DMA are, în mod obişnuit cel puţin trei registre ce
sunt selectate de linia registrului de selecţie (RS): un registru al
adreselor, un registru al numărătorului şi un registru de stare. Atât
registru adreselor cât şi registru numărător sunt iniţializate de
microprocesor. Registrul adreselor conţine adresa de început a datelor ce
vor fi transferate, iar registrul numărător conţine blocul dorit a fi
transferat. Registrul de stare conţine informaţii cum ar fi terminarea
transferului DMA.
Performanţele dispozitivelor de I/O
Performanţa unui dispozitiv de I/O este cel mai important aspect
pe care proiectantul unui sistem integrat trebuie să-l aibă în vedere. Cele
mai importante aspecte ce pot influenţa performanţa unui astfel de
sistem pot fi grupate astfel:
1. Vitezele de transmisie a dispozitivelor de I/O – dispozitivele pot
avea viteze diferite de transmitere a datelor. De exemplu, tastatura
sau mouse-ul transmit datele sub forma caracterelor/sec., în timp
ce alte dispozitive cum sunt unităţile de disc, reţelele transmit
datele în Mbytes/sec.
2. Viteza procesorului – viteza procesorului trebuie sincronizată cu
viteza de transmitere a dispozitivului de I/O. Dacă, dispozitivul de
I/O procesează datele mult mai încet decât viteza de transmisie a
procesorului, atunci datele se vor fi pierdute de către dispozitivul
de I/O.
3. Comunicaţia între procesor şi dispozitivul de I/O – în general
există controllere dedicate între procesor şi dispozitivele de I/O ce
administrează dispozitivele. În acest mod procesorul poate
prelucra datele într-un mod mai eficient şi mai rapid. Controller-
ul dispozitivelor poate decide, de exemplu asupra modalităţii de
întrerupere necesară sincronizării mai multor dispozitive de I/O.
Pentru sincronizarea dispozitivelor lente şi a procesorului, este
necesară prezenţa fanioanelor de stare şi întrerupere. În cazul unor
dispozitive mai rapide decât viteza procesorului, există anumite tipuri de
interfeţe (de ex. DMA) ce permite acestor dispozitive să realizeze o
operaţie de bypass asupra procesorului.
Unităţile de măsură ce definesc performanţa dispozitivelor de I/O
sunt:
Capacitatea dispozitivelor – cantitatea maximă de date /
timp ce poate fi procesată.
Timpul de execuţie – timpul necesar pentru procesarea
tuturor datelor.
Timpul de răspuns sau timpul de întârziere – timpul scurs
între o cerere de procesare a datelor şi momentul în care
componenta respectivă este procesată.
Moduri de adresare a memoriei
Alegerea modurilor de adresare este o caracteristică vitală în proiectarea unui
sistem cu microprocesor, deoarece afectează în mod direct viteza de execuție, cerințele de
memorie și ușurința în programare.
Instrucțiunile cele mai comune de referire la memorie sunt similare celor ce se
adresează lucrului cu regiștrii, de exemplu: transferă, adună, scade, șterge,
complementează, etc, dar cu unul dintre operanzi și/sau rezultatul în memoria
calculatorului, de exemplu: încarcă acumulatorul cu conținutul din locația de memorie,
sau memorează conținutul registrului în locația de memorie.
1. Adresarea imediată – Instrucțiunile de adresare imediată nu sunt propriu-zis
instrucțiuni de referire la memorie. Instrucțiunile de adresare imediată de
tipul: încarcă acumulatorul cu o valoare imediată, sau adună în acumulator o
valoare imediată, sunt instrucțiuni de un cuvânt (adresă până la 13 biți) sau
intrucțiuni de două cuvinte. În fiecare mod, biții de adresă sunt interpretați ca
un operand întreg, cu sau fără semn. Instrucțiunile de adresare imediată sunt
utile pentru stabilirea adreselor de indicatori de adresă, registrelor index,
contoarelor și pentru operații cu parametrii fixați.
2. Adresarea directă – Adresarea directă chiar a unui singur operand sau a
rezultatului în memorie este neproductivă. Chiar o instrucțiune de referire la
memorie pe un cuvânt necesită două referiri la memorie, deci de regulă două
cicluri de memorie pentru citirea și execuția instrucțiunii. Din această cauză
pentru fiecare cuvânt suplimentar al unei instrucțiuni este nevoie de un acces
la memorie suplimentar, precum și de un timp suplimentar.
Adresarea directă poate irosi spații de memorie, deoarece puține instrucțiuni
de referire a memoriei adresează locații aleatoare în memorie. Locațiile tind să
se “grupeze” în programe și în structuri locale de date. În particular, multe
instrucțiuni referă cuvinte din matrici sau tabele mai mici de 256 de cuvinte..
3. Adresare paginată – Octetul sau cuvântul de adresă de instrucțiune este
interpretat ca o “deplasare” (pozitivă) față de o origine de pagină. Memoria
este împărțită în pagini succesive, spre exemplu, de 256 cuvinte sau octeți,
pentru 8 biți de adresă de instrucțiune. Locațiile 0-255 reprezintă pagina 0,
256-511 pagina 1, etc. Numărul de pagină este fie pagina curentă (acceași
pagină cu instrucțiunea curentă) sau numărul de pagină este stabilit într-un
registru de pagină, printr-o instrucțiune anterioară.
4. Adresare relativă – Octetul sau cuvîntul de adresă a instrucțiunii este
interpretat ca o deplasare pozitivă sau negativă față de locația instrucțiunii
curente. Adresarea relativă cu un octet de adresă de 8 biți este utilă în
instrucțiunile de ramificare. Adresarea relativă cu o adresă întreagă de 16 biți
este uneori utilizată pentru a înlocui adresarea directă, pentru că programele ce
conțin numai informații cu adrese relative sunt ușor de relocat în memorie.
5. Adresarea indirectă și indirectă prin registru – În cazul adresării prin
registru, instrucțiunea necesită doar 3-5 biți pentru a specifica unul din cele 8-
32 registre de indicatori de adresă care au fost anterior încărcați cu adresa
efectivă a operandului.
Registre
indicatoare
de adresă de
16 biți
Instrucțiune pe 8 biți
Registrul 1 Memoria
7 4 3 0
Registrul 2 000534
Cod de 00 10 Operand
operație Registrul 3
------
Adresa efectivă
Selectează unul a operandului
dintre cele 16
registre
indicatoare de
adresă
15 9 9 0
Memoria
000534 Operand
Cod de 000000111
operație
Adresa efectivă
Adresă indirectă a operandului
pe 9 biți
0 7 8 11 12 15 0 15
Format registru-memorie indexat și
format registru imediat Cod de Registru Registru Cuvînt de adresă
operație index
Indicator
stivă de adresă B
stivă 216
de adresă B B
stivă 216 216
A
218
A A
218 218
220
220 220
Pune în stivă Scoate din stivă
Calculator
Linii (nivele) de selectare a echipamentului
Comandate prin
registrul de 1,2 sau 3
impulsuri
instrucțiuni temporizate
Impulsuri de transfer
Selector de Selector de
de I/E sincronizate
echipament echipament
de selectoarele de
Selectare externă
Selectare externă
echipament
Linii de date
Date de la sau
spre acumulator
sau memorie
Date transferate spre sau de la Date transferate spre sau de la
registrul echipamentului 1 registrul echipamentului 2
+ 5V
Magistrală
125 Închis
16 Ω Deschis
100 pF
În cazul unei magistrale sincrone datele de I/O se vor transfera spre sau dintr-un
registru al procesorului ca răspuns la o instrucțiune programată de I/O, ce conține codul
de 6 biți al adresei dispozitivului selectat ca parte componentă a celor 16 biți ai
cuvântului-instrucțiune. Biții individuali ai cuvântului-instrucțiune determină selectarea
dispozitivului și semnalele pe liniile de comandă ale unei magistrale de I/O cu linii
specializate:
a. Biții 0 – 4 indică procesorului care instrucțiune de I/O este dorită. Unul dintre
acești biți poate să selecteze o operație de citire (READ) sau scriere (WRITE),
sau se lasă această decizie în seama unei intrări logice de la echipamentul
periferic.
b. Biții 5 – 10 sunt biții de adresă ai dispozitivului, utilizați pentru selectarea
acestuia. Când aceste linii transferă codul de selecție al dispozitivului asociat
unui anume echipament, selectorul de dispozitiv (porți decodificatoare ȘI),
acceptă și transmite un set de impulsuri succesive de comandă, utilizate pentru
efectuarea transferului de date și a altor operații în dispozitivul selectat,
operații determinate de biții 13 și 15 ai instrucțiunii.
c. Biții 11 și 12 sunt biți de comandă, biți de selecție sau biți de subselecție
pentru echipamente multidispozitiv. Nivelurile corespunzătoare celor două
linii pot fi utilizate pentru selectarea unui dispozitiv suplimentar sau pentru
selectarea diverselor funcții ce urmează a fi efectuate de un anumit
echipament.
d. Biții 13, 14 și 15 produc impulsuri de comandă succesive pe trei linii de
comandă. Un impuls apare dacă bitul corespunzător este 1.
O instrucțiune de I/O de 16 biți poate selecta unul din 211 2048 dispozitive
și/sau funcțiuni posibile ale dispozitivului prin diferite combinații ale biților de adresă,
biților de control și impulsurilor de comandă.
Acest sistem necesită 4 cicluri complete de memorie pentru fiecare operație de
I/O, unul pentru extragerea instrucțiunii din memorie și câte unul pentru fiecare impuls
I/O. Cea mai frecventă utilizare a impulsurilor de comandă trecute prin porți de selecție a
dispozitivului periferic este transferul de date spre și dinspre procesor. În acest caz,
impulsurile I/O sunt sincronizate cu ciclul de operare al procesorului, respectiv cu
disponibilitatea calculatorului de a accepta sau transmite date.
Codul Biții
operației Selectare
spre procesor 0-4 Logica de selectare externă
echipament
1 dacă este
Biții selectat
5-10 Amplificatoare
Impulsuri de
emițătoare de comandă
Biții magistrală pentru
temporizare,
11,12 transfer, etc.
1
Biții Generatoare 2
13-15 de impulsuri
3
Cuvântul instrucțiune de 16 biți așa
cum apare în instrucțiunile Cablu de I/O
Ceasul
procesorului și în registrele pentru procesorului
memoria de date
_______
Activare semnal SSYN
Q D Nivel 1
Logica de Q
codificare
C
1 din 2n
R
Q D Nivel 2
Q
C
R
Q D Nivel 3
Q
C
Codificator prioritate R
Bistabili pentru aplicare
de mască
Recunoaștere
Cerere de întrerupere
Dezactivare a întreruperilor
Cerere de întrerupere
spre procesor dacă I K
Magistrală
Memorie Dispozitive
de I/O
Rețea
Sistem de operare
Procesor
Nucleu 1 Nucleu 2
Magistrale CAN
Controllerul de reţea (CAN) este o magistrală serială
dezvoltată iniţial pentru industria auto. Este o magistrală
multimaster ce suportă noduri multiple, egale. Nodurile nu au o
adresă specifică. Informaţia de adresă este specificată în
mesajele transmise. Nodurile pot fi introduse sau eliminate în
timp ce sistemul funcţionează.
Magistrala CAN este o magistrală serială diferenţială.
Liniile CAN au două stări: în una ambele linii sunt conduse de
2.5V, iar în cealaltă stare o linie este condusă de 1.2V, în timp
ce cealaltă este condusă de 3.5V.
Un mesaj CAN constă dintr-un bit de start, urmat de un
câmp de 12 biţi de arbitraj. Dintre aceştia 11 biţi sunt biţii de
identificare ce reflectă conţinutul şi prioritatea mesajului, iar 1
bit este bitul de cerere a transmisiei controlate. Câmpul de
arbitraj este utilizat pentru arbitrarea transmisiilor. Dacă mai
multe transmisii încearcă să preia controlul magistralei la
acelaşi moment de timp, nodurile cu mesaje de prioritate
scăzută se vor dezactiva pe parcursul câmpului de arbitraj,
lăsând nodurile cu mesaje de prioritate ridicată să preia
controlul asupra magistralei.
Urmează un câmp de control format din 6 biţi: primul bit
este numit IDE (extensia identificatorului), iar următorul bit
este rezervat; biţii rămaşi (4 biţi) specifică numărul de octeţi de
date conţinuţi în mesaj (0-8 octeţi).
După acest câmp de control, urmează datele şi un câmp
de 15 biţi pentru verificarea erorilor (CRC). Dup CRC,
urmează un câmp de confirmare, în care nodurile receptoare
introduc un bit de confirmare pentru a notifica transmiţătorul
că mesajul a fost corect recepţionat. Ultimii biţi sunt 7 biţi
neocupaţi.
Magistrală de adrese
Magistrală de date
Logică de
întreruperi
Magistrală de adrese
Magistrală de date
Magistrală de adrese
Cicluri mașină
Memoria program
Memoria program este primul spațiu de emmorie adresabilă.
După inițializarea circuitului (semnalul RST ), unitatea centrală de
procesare va începe execuția de la locația 0000h. O reprezentare a
părții inferioare a memoriei, rezervată tratării cererilor de
întrerupere de la diverse surse, poate fi reprezentată astfel:
Apariția întreruperilor determină CPU să execute un salt din
programul curent la locația de memorie unde începe execuției
subrutinei de deservire. Sunt rezervate câte 8 locații pentru fiecare
întrerupere.
Subrutinele mai lungi pot utiliza o instrucțiune de salt la o
adresă unde se continuă tratarea întreruperii respective.
Conectarea hardware a memoriei program externe la
dispozitivele din familia 8051 se face conform următoarei
scheme:
Memoria de date
Adresele memoriei de date externe pot fi de 1 sau 2 octeți.
Adresele de 1 octet sunt utilizate în conjucție cu una sau mai
multe linii I/O suplimentare pentru a pagina memoria RAM. Un
exemplu e conectare a unei memorii externe de date de 2KB
utilizând paginarea este prezentat în figura următoare:
Timere/Numărătoare
unde:
GATE - este utilizat pentru controlul validării pentru
Timer/Numărător x (x = 0, 1).
Dacă GATE = 1, Timer/Numărătorul x este validat numai atunci
când pinul INTx (x = 0,1) este "high" iar pinul de control TRx este
setat. (TRx, x = 0,1, sunt biţi de control din registrul TCON).
Dacă GATE = 0, Timer x este validat ori de câte ori bitul de
control TRx este setat.
C / T - selectează funcţionarea ca Numărător (C/T = 1, intrarea
provine de la pinul de intrare Tx) sau Timer (C/T = 0, intrarea
provine de la ceasul intern)
M 1, M 0 - selectează modurile de operare 0 - 3.
unde:
TF1,TF 0 - fanioane de depăşire ale timerelor 1 şi, respectiv 0.
Sunt setate prin hardware la apariţia unei depăşiri (a unui
transport) la Timerul 1 sau 0. Sunt şterse prin hardware când
procesorul apelează rutina corespunzătoare de întreruperi.
TR1,TR0 - biţi de control ai funcţionării timerelor 1 şi 0. Sunt
setaţi/şterşi prin software pentru a activa/dezactiva timerele.
IE1, IE 0, IT 1, IT 0 - biţi care se referă la întreruperi externe și cele
corespunzătoare celor 2 timere.
Interfaţa serială
Portul serial este complet duplex, în sensul că acesta poate
transmite şi recepţiona simultan. Acesta are, de asemenea, un
buffer de recepţie, în sensul că se poate începe recepţia unui al
doilea octet înainte ca octetul recepţionat anterior să fi fost citit
din registrul de recepţie.
Totuşi, dacă primul octet nu a fost încă citit în timpul
recepţiei complete a celui de-al doilea octet, unul dintre octeți va
fi pierdut. Registrele de transmisie şi recepţie ale portului serial
sunt ambele accesate ca registrul de funcţii speciale SBUF.
Scrierea lui SBUF încarcă registrul de transmisie, iar citirea
SBUF accesează un registru de recepţie, distinct din punct de
vedere fizic.
Portul serial poate funcţiona în 4 moduri:
Modul 0: Datele seriale intră şi ies prin RxD. TxD furnizează
frecvenţa de transmisie/recepţie. Se transmit/recepţionează 8 biţi
(8 biţi de date), primul fiind LSB. Frecventa biţilor este fixată la
1/12 din frecvenţa oscilatorului.
Transmisia datelor este initiată prin orice instrucțiune ce scrie
date în registrul SBUF. Datele sunt deplasate către linia RxD, cu
o frecvență transmisă prin linia TxD.
Recepția este inițiată cînd bitul de activare REN din registrul
de control SCON este 1 și bitul de întrerupere RI este 0. În
general, bitul REN se va seta la începutul programului pentru
inițializarea transmisiei seriale, după care bitul RI este resetat
pentru a realiza operația de citire a datelor.
Structura registrului de stare și control SCON este
următoarea:
unde:
SM0, SM1 - specifică modul de operare al portului serial:
0 0 - modul 0
0 1 - modul 1
1 0 - modul 2
1 1 - modul 3
SM2 - validează caracteristica de comunicaţii multiprocesor în
modurile 2 şi 3.
REN - validează recepţia serială. Se setează/resetează prin
software pentru a activa/dezactiva recepţia.
TB8 - este cel de-al 9-lea bit care va fi transmis în modurile 2 şi 3.
Se setează sau şterge prin software, după dorinţă.
RB8 - In modurile 2 şi 3, este cel de-al 9-lea bit de date care a fost
recepţionat.
TI - este fanionul de întreruperi pentru transmisie.
RI - este fanionul de întreruperi pentru recepţie.
Modul 1:
În acest mod, portul serial operează ca un UART pe 8 biți cu
o rată de transmisie variabilă. În acest mod cei 8 biți de date sunt
precedați de un bit de start (este tot timpul zero) și urmați de un
bit de stop (este tot timpul 1). Uneori între ultimul bit de date și
bitul de stop este introdus un bit de paritate. Prin urmare, în acest
mod 10 biţi sunt transmişi (prin TxD) sau recepţionaţi (prin RxD).
La recepţie, bitul de stop se introduce în RB8 din registrul de
funcţii speciale SCON. Frecvenţa de transmisie a biţilor (baud
rate) este variabilă, fiind dată de frecvența de umplere a bufferului
de depășire corespunzător timerului 1.
Modul 2:
În acest mod, portul serial funcționează ca un UART pe 9 biți.
Sunt transmiși 11 biţi (prin TxD) sau recepţionaţi (prin RxD): un
bit de start (0), 8 biţi de date (LSB - primul), un al 9-lea bit de
date programabil şi un bit de stop (1). La transmisie, cel de-al 9-
lea bit de date (TB8 din SCON) poate fi asignat la valoarea 0 sau
1. Sau, de exemplu, bitul de paritate (P, din PSW) poate fi mutat
în TB8. La recepţie cel de-al 9-lea bit de date se introduce în RB8
din registrul SCON (din SFR), pe când bitul de stop este ignorat.
Frecvenţa biţilor este programabilă fie la 1/32 fie la 1/64 din
frecvenţa oscilatorului.
Modul 3:
11 biţi sunt transmişi (prin TxD) sau recepţionaţi (prin RxD): un
bit de start (0), 8 biţi de date (LSB - primul), un al 9-lea bit de
date programabil, şi un bit de stop (1). In fapt, Modul 3 este
acelaşi cu Modul 2 sub toate aspectele cu excepţia frecvenţei
biţilor. Frecvenţa biţilor în Modul 3 este variabilă (poate fi
programată la o anumită valoare, fiind furnizată de timer).
Comunicaţii multiprocesor
Modurile 2 şi 3 au o facilitate specială pentru comunicatiile
multiprocesor. In aceste moduri, sunt recepţionaţi 9 biţi de date.
Cel de-al 9-lea este trecut în RB8. Apoi soseşte un bit de stop.
Portul poate fi programat astfel încât atunci când bitul de stop este
recepţionat, întreruperea portului serial va fi activată numai dacă
RB8 = 1.
Această caracteristică este validată prin setarea bitului SM2
din SCON. O cale de utilizare a acestei trăsături în sistemele
multiprocesor este următoarea:
Când procesorul master doreşte să transmită un bloc de date
unuia din mai multe slave-uri, acesta transmite iniţial un octet de
adresă care identifică slave-ul destinaţie. Un octet de adresă diferă
de un octet de date prin aceea că cel de-al 9-lea bit este 1 într-un
octet de adresă şi 0 într-un octet de date. Cu SM2 =1 nici un slave
nu va fi întrerupt printr-un octet de date. Un octet de adresă,
totuşi, va întrerupe toate slave-urile, astfel încât fiecare slave
poate examina octetul recepţionat şi poate vedea dacă acesta i-a
fost adresat. Slave-ul adresat va şterge bitul său SM2 şi se
pregăteşte să recepţioneze baiţii de date care vor sosi.
Întreruperi
8051 furnizează 5 surse de întreruperi: 2 întreruperi externe, 2
întreruperi pentru timere şi întreruperea portului serial.
Întreruperile externe INT0 şi INT1 pot fi fiecare activate fie pe
nivel fie pe o tranziţie 1→0, în funcţie de biţii IT0 şi IT1 din
registrul TCON. Fanioanele care generează în realitate aceste
întreruperi sunt biţii IE0 şi IE1 din registrul TCON.
Registrul TCON
Întreruperi externe
Sursele externe pot fi programate să fie activate pe nivel sau
pe tranziţie prin setarea sau ştergerea biţilor IT1 sau IT0 din
registrul TCON. Dacă ITi = 0, întreruperea externă i este
triggerată prin detectarea nivelului "low" la pinul INTi (i = 0, 1).
Dacă ITi = 1, întreruperea externă i este triggerată pe front. În
acest mod, dacă eşantioane succesive ale pinului INTi arată "high"
într-un ciclu şi "low" în ciclul următor, fanionul cererii de
întrerupere IEi din TCON este setat. Fanionul IEi solicită apoi
întreruperea.
Întrucât pinii întreruperilor externe sunt eşantionaţi odată în
fiecare ciclu maşină, o intrare "high" sau "low" trebuie păstrată
pentru cel puţin 12 perioade de ceas pentru a asigura eşntionarea.
Dacă întreruperea externă este activată pe tranziţie, sursa
externă trebuie să păstreze pinul de întrerupere "high" pentru cel
puţin un ciclu şi apoi să-l păstreze "low" pentru cel puţin un ciclu
pentru ca tranziţia să fie detectată şi fanionul IEi să fie setat. IEi
va fi şters automat de CPU când rutina de deservire este apelată (i
= 0, 1).
Dacă întreruperea externă este activată pe nivel, sursa externă
trebuie să păstreze cererea activă până ce întreruperea solicitată
este efectiv generată. Apoi aceasta trebuie dezactivată înainte ca
subrutina de deservire să se termine, altfel o altă întrerupere va fi
generată.
Sisteme de control digitale
Majoritatea aplicaţiilor de control actuale sunt bazate pe calculator. În acest
caz, un calculator sau un microcontroller este folosit pentru funcţia de control (de
reglare). Un sistem de control bazat pe calculator este prezentat în figura de mai jos:
În acest caz s-a presupus că semnalul de eroare este analog, iar pentru
transformarea în format digital se foloseşte un convertor analog-numeric (CAN).
Convertorul eşantionează periodic semnalul, convertind apoi eşantioanele în cuvinte
numerice ce sunt procesate de calculator. Calculatorul rulează un algoritm de control
(o bucată de soft) pentru implementarea acţiunilor cerute, astfel încât ieşirea
instalaţiei răspunde conform cerinţelor. Ieşirea calculatorului este un semnal digital,
convertit într-un semnal analogic prin utilizarea unui convertor numeric-analogic (în
mod obişnuit operaţia convertizorului este aproximată printr-o funcţie de transfer de
tipul ZOH – extrapolator de ordinul zero).
Majoritatea microcontrollerelor actule includ convertoare A/D şi D/A pe
acelaşi cip. Astfel, microcontrollerele sunt conectate direct la semnalele analogice
ale instalaţiei.
Există şi alte variante ale sistemului de control digital. În figura de mai jos,
referinţa este citită de la tastatură sau este inclusă în algoritmul de control. Ieşirea
senzorului este convertită în format numeric folosind un convertor analog-numeric,
iar semnalul numeric rezultant este trimis către calculator pentru determinarea erorii
şi implementarea algoritmului de control.
Convertoare analog-numerice
Sunt utilizate pentru transformarea semnalelor analogice, în semnale numerice
ce pot fi citite de microprocesor sau microcontroller. Un convertor ce realizează
citirea unui semnal de intrare măsurat şi transmite la ieşire un cuvânt pe 8 biţi este
prezentat în figura următoare:
Tipuri de CAN-uri
1. CAN de urmărire
CAN-ul de urmărire conţine un comparator, un numărător şi un CNA.
Comparatorul realizează comparaţia dintre tensiunea de intrare şi tensiunea de ieşire
a CNA-ului. Dacă intrarea este mai mare decât tensiunea CNA-ului, atunci
numărătorul se incrementează, dacă intrarea este mai mică decât tensiunea CNA-
ului, atunci numărătorul se decrementează.
Numărătorul va începe să numere de la zero şi se va incrementa la fiecare puls
al ceasului până când va transmite valoarea binară ce reprezintă tensiunea de intrare.
După această fază, ieşirea comparatorului va comuta, iar numărătorul se va
decrementa. Eventual, numărătorul va oscila în jurul valorii ce reprezintă tensiunea
de intrare.
2. CAN flash
CAN-ul flash este cel mai rapid CAN existent. Un astfel de dispozitiv are un
comparator la fiecare pas de tensiune. Astfel, un CAN pe 4 biţi va avea 16
comparatoare, unul pe 8 biţi va avea 256 de comparatoare, s.a.m.d. O intrare a
tuturor comparatoarelor este conectată la intrarea ce trebuie măsurată. Celelalte
intrări ale comparatoarelor sunt conectate la un lanţ de rezistenţe. Toate ieşirile
comparatoarelor sunt conectate la un circuit logic ce determină ieşirea pe baza stării
comparatoarelor (high sau low). Viteza de conversie a unui CAN flash este dată de
suma întârzierilor comparatoarelor. CAN-urile flash sunt foarte rapide, dar necesită
un consum mare de putere.
3. CAN cu aproximare succesivă
Acest tip de CAN este similar cu cel de urmărire. Diferenţa dintre cele două
este că registrul aproximărilor succesive realizează o căutare binară în locul
numărării.
4. CAN integrator
Acest tip de CAN foloseşte un integrator în serie cu un comparator şi un circuit
logic. Intrarea integratorului este comutată prima la semnalul de intrare, iar ieşirea
integratorului se încarcă prin intermediul tensiunii de intrare. După un anumit număr
de paşi, intrarea integratorului este comutată la un semnal de referinţă (Ref. 1), iar
integratorul se descarcă prin intermediul acestei valori. La apariţia unei comutări a
tensiunii de referinţă (Ref. 1), este pornit numărătorul, care va număra folosind
acelaşi ceas ce determină timpul de integrare. Atunci când ieşirea integratorului
scade sub un al doilea semnal de tensiune (Ref. 2), ieşirea comparatorului va fi high,
numărătorul se opreşte, iar numărul reprezintă tensiunea analogică de intrare.
Tensiunile de intrare mari vor permite integratorului să se încarce la o tensiune
mai mare, având ca efect direct o numărare mai mare la ieşire.
Acest tip de convertor are nevoie de un timp relativ mare pentru realizarea
conversiei, dar acţiunea de filtrare introdusă de integrator elimină zgomotul.
Circuitul de eşantionare şi memorare (reţinere)
Circuitele realizează eşantionarea şi reţinerea pe nivel a semnalelor de intrare
în CAN, fiind utilizate pentru cazurile în care apar modificări ale tensiunilor de
intrare. Circuitul are un comutator analogic cu o intrare de control. Atunci când
comutatorul este închis, semnalul de intrare este conectat la condensatorul de
menţinere, iar ieşirea buffer-ului urmăreşte intrarea. Atunci când comutatorul este
deschis, intrarea este deconectată de la condensator.
Funcţionarea unui astfel de circuit poate fi descrisă astfel:
- Atunci când semnalul de control este low (eşantionare), ieşirea urmăreşte
intrarea.
- Atunci când semnalul de control devine high (reţinere), deconectând
condensatorul de la intrare, ieşirea rămâne la valoarea pe care intrarea a avut-o
înainte de comutarea la modul de memorare(reţinere).
- Atunci când comutatorul se închide din nou, condensatorul se încarcă rapid, iar
ieşirea urmăreşte din nou intrarea.
În mod uzual, circuitul va comuta la modul de memorare înainte de începutul
conversiei CAN-ului, şi va comuta înapoi la modul de eşantionare după ce conversia
este terminată.
Capacitatea unui astfel de circuit de a ţine ieşirea în modul de memorare este
dependentă de calitatea condensatorului, de caracteristicile amplificatorului utilizat
pentru buffer (impedanţa intrării), precum şi de calitatea comutatorului.
Un circuit de eşantionare şi memorare real are o impedanţă de intrare finită,
prin urmare în modul de eşantionare, condensatorul de reţinere este încărcat prin
intermediul unor rezistenţe. Timpul în care circuitul rămâne în modul de eşantionare,
pentru achiziţia unei intrări complet scalate este numit timp de achiziţie, fiind
specificat în nanosecunde sau microsecunde.
Deoarece în momentul eşantionării circuitul conţine anumite impedanţe
conectate în serie cu condensatorul de reţinere se produce un efect de filtru RC trece
jos. Acest lucru limitează frecvenţa maximă la care eşantioanele pot fi achiziţionate.
Frecvenţa este cunoscută sub denumirea de bandă de putere fiind specificată în kHz
sau MHz.
Diferenţa de tensiune dintre intrare şi ieşire este cunoscută ca offset-ul ieşirii,
fiind exprimată în milivolţi.
Valoarea de deviaţie a ieşirii în modul de reţinere este numită rată de scădere,
fiind specificată în milivolţi /secunde, sau microvolţi /microsecunde.
Multe CAN-uri includ un circuit S/H intern. Un astfel de CAN trebuie să aibă
un pin separat ce controlează tranziţia dintre cele două moduri, sau să comute la
modul de menţinere, automat la începutul unei conversii.
Dacă nu este disponibil un timer PWM, sau numărul canalelor PWM este mai
mic decât numărul necesar de ieşiri analogice, soluţia este utilizarea unui CNA.
Există o mare varietate de CNA-uri, de rezoluţii diferite, timpi de conversie
diferiţi, sau modalităţi diferite de transmitere a rezultatului (serial sau paralel).
Majoritatea CNA-urilor funcţionează după acelaşi principiu: divizarea curentului cu
o reţea de rezistenţe. În figura următoare se prezintă un CNA pe 4 biţi:
Amplificatorul operaţional lucrează astfel încât potenţialul celor două intrări
este identic. Prin urmare, reţeaua lucrează ca şi când toate rezistenţele 2R, au un
capăt conectat la masă. Rezistenţa echivalentă a sarcinii Vref este constantă şi egală
cu R. Curenţii totali absorbiţi de cele 4 comutatoare (S3, S2, S1, S0) sunt
I 3 I ref / 2 , I 2 I ref / 4 , I1 I ref / 8 , I 0 I ref / 16 . Tensiunea de ieşire este:
Vout I F RF .
Curentul I F poate fi definit astfel:
I F I ref b0 / 2 b1 / 4 b 2 / 8 b3 / 16
unde b3 b0 sunt biţii cuvântului ce trebuie convertit într-o valoare analogică.
Prin urmare, tensiunea de ieşire Vout este proporţională cu valoarea binară ce
trebuie convertită.
1. Interfeţe paralele
CAN-urile vin într-o mare varietate de interfeţe, fiind capabile să lucreze cu
procesoare multiple. Maxim MAX151 este un convertor tipic de 10 biţi cu o
interfaţă paralelă „universală„ pe 8 biţi. Interfaţa cu microprocesorul a acestui tip de
CAN cuprinde o magistrală de date pe 8 biţi, un semnal de selecţie a circuitului
(CS), un semnal de citire (RD) şi o ieşire BUSY. Circuitul include, de asemenea un
S/H intern. Pe frontul descrescător al semnalelor RD şi CS, S/H este trecut în modul
reţinere, fiind pornită conversia. Dacă, CS şi RD nu trec în starea low în acelaşi
timp, ultimul front descrescător porneşte conversia. Odată cu pornirea conversiei,
semnalul BUSY devine activ (egal cu 0). Semnalul rămâne în starea low până când
conversia este terminată.
Există două moduri de operare: modul memoriei lente şi modul ROM. În
primul mod de operare, procesorul aşteaptă, forţând CS şi RD să rămână în starea
low până când conversia este terminată. Într-un astfel de sistem, de obicei semnalul
BUSY este conectat la semnalele RDY şi WAIT ale procesorului. Acestea ţin
procesorul într-o stare de aşteptare până când conversia este terminată. Timpul
maxim de conversie în acest caz este de 2.5s .
În modul ROM de operare, procesorul realizează un ciclu de citire, plasând S/H
în modul reţinere şi iniţiind o conversie. În timpul citirii curente, procesorul citeşte
rezultatele conversiei anterioare. Semnalul BUSY nu este utilizat pentru a extinde
ciclul de citire. În schimb, BUSY este conectat la o întrerupere sau este verificat de
către procesor pentru a indica când conversia este terminată. Atunci când BUSY
trece din 0 în 1, procesorul realizează o nouă citire, pentru a extrage rezultatul şi
astfel, o nouă conversie să înceapă.
2. Interfeţe seriale
Avantajul acestora este acela de a oferi o interfaţă independentă de procesor, ce
nu afectează stările de aşteptare ale procesorului, timpii de reţinere sau frecvenţele
ceasului. Dezavantajul este legat de viteză, deoarece datele trebuie transferate bit cu
bit.
SPI este o interfaţă serială, ce foloseşte un ceas, un semnal de selecţie a
circuitului, precum şi biţi de intrare şi de ieşire.
Maxim MAX1242 este un CAN SPI tipic pe 10 biţi ce foloseşte o aproximare
succesivă, având şi un S/H intern.
Conversia începe pe frontul descrescător a lui CS şi durează aproximativ
7.5s . Atunci când CS este în starea low, circuitul MAX1242 trece pinul de ieşire a
datelor în starea low. După terminarea conversiei, pinul de ieşire a datelor este trecut
în starea high. Procesorul poate citi datele (câte un bit) prin comutarea ceasului şi
prin monitorizarea pinului de ieşire a datelor. După ce cei 10 biţi sunt citiţi,
MAX1242 trimite 2 sub-biţi, S1 şi S0. Pentru alte tranziţii ale ceasului, ce apar după
cele 13 perioade, ieşirea circuitului va fi zero.
În timpul conversiei, magistrala SPI nu este disponibilă pentru comunicaţia cu
alte periferice. Acest lucru este posibil abia după ce conversia este completă, iar
rezultatul a fost citit. Dacă există o subrutină de tratare a întreruperii ce comunică cu
dispozitivele SPI, atunci acestea trebuie să fie dezactivate în timpul conversiei.
Pentru evitarea acestei probleme, MAX1242 poate comunica cu microcontroller-ul
peste o magistrală dedicată SPI.
La terminarea conversiei se va genera un semnal de întrerupere către
microcontroller prin intermediul semnalului DOUT (DOUT=1).
CAN-uri interne
Multe microcontrollere conţin CAN-uri pe acelaşi cip. Exemple de astfel de
microcontrollere sunt Atmel AT90S4434 şi PIC167C7xx. CAN-urile lucrează prin
aproximări succesive.
Microcontrollere din familia PIC16C7xx conţin un CAN pe 8 biţi cu
aproximări succesive şi multiplexoare analogice pe intrare. Microcontrollerele au de
la 4 până la 8 canale. Registrele interne dictează ce canal va fi selectat, precum şi
începerea conversiei. Odată ce o intrare este selectată, există un timp de stabilizare
ce trebuie să treacă pentru a permite condensatorului S/H să se încarce, înainte ca
operaţia de conversie să înceapă.
Dispozitivele permit utilizarea unui pin de intrare pentru tensiunea de referinţă.
Valoarea citită de la CAN după terminarea conversiei este:
Digital word Vin / Vref 256
Circuitele permit setarea internă a tensiunii de alimentare, astfel pinul de
intrare pentru referinţă este o altă intrare analogică.
Măsurarea unui semnal de 3.2V într-un sistem cu o referinţă de 5V, va conduce
către următorul rezultat:
Vin 256 3.2V 256
16310 A316
Vref 5V
Rezultatul este dependent de tensiunea de alimentare (5V). Dacă tensiunea de
alimentare este crescută cu 1% (5.05V), valoarea conversiei va fi:
Vin 256 3.2V 256
16210 A216
Vref 5.05V
Prin urmare o creştere cu 1% a tensiunii de alimentare produce o modificare a
rezultatului prin o numărare. În mod uzual, sursele de tensiune pot varia cu 2% sau
3%. Deci, variaţiile de tensiune pot avea un efect semnificativ asupra ieşiri. Ieşirea
sursei de tensiune poate varia datorită sarcinii, a temperaturii, a variaţilor de curent
alternativ sau de la o sursă la alta.
Convertoare analog-numerice
Sunt utilizate pentru transformarea semnalelor analogice, în semnale numerice
ce pot fi citite de microprocesor sau microcontroller. Un convertor ce realizează
citirea unui semnal de intrare măsurat şi transmite la ieşire un cuvânt pe 8 biţi este
prezentat în figura următoare:
Tipuri de CAN-uri
1. CAN de urmărire
CAN-ul de urmărire conţine un comparator, un numărător şi un CNA.
Comparatorul realizează comparaţia dintre tensiunea de intrare şi tensiunea de ieşire
a CNA-ului. Dacă intrarea este mai mare decât tensiunea CNA-ului, atunci
numărătorul se incrementează, dacă intrarea este mai mică decât tensiunea CNA-
ului, atunci numărătorul se decrementează.
Numărătorul va începe să numere de la zero şi se va incrementa la fiecare puls
al ceasului până când va transmite valoarea binară ce reprezintă tensiunea de intrare.
După această fază, ieşirea comparatorului va comuta, iar numărătorul se va
decrementa. Eventual, numărătorul va oscila în jurul valorii ce reprezintă tensiunea
de intrare.
2. CAN flash
CAN-ul flash este cel mai rapid CAN existent. Un astfel de dispozitiv are un
comparator la fiecare pas de tensiune. Astfel, un CAN pe 4 biţi va avea 16
comparatoare, unul pe 8 biţi va avea 256 de comparatoare, s.a.m.d. O intrare a
tuturor comparatoarelor este conectată la intrarea ce trebuie măsurată. Celelalte
intrări ale comparatoarelor sunt conectate la un lanţ de rezistenţe. Toate ieşirile
comparatoarelor sunt conectate la un circuit logic ce determină ieşirea pe baza stării
comparatoarelor (high sau low). Viteza de conversie a unui CAN flash este dată de
suma întârzierilor comparatoarelor. CAN-urile flash sunt foarte rapide, dar necesită
un consum mare de putere.
3. CAN cu aproximare succesivă
Acest tip de CAN este similar cu cel de urmărire. Diferenţa dintre cele două
este că registrul aproximărilor succesive realizează o căutare binară în locul
numărării.
4. CAN integrator
Acest tip de CAN foloseşte un integrator în serie cu un comparator şi un circuit
logic. Intrarea integratorului este comutată prima la semnalul de intrare, iar ieşirea
integratorului se încarcă prin intermediul tensiunii de intrare. După un anumit număr
de paşi, intrarea integratorului este comutată la un semnal de referinţă (Ref. 1), iar
integratorul se descarcă prin intermediul acestei valori. La apariţia unei comutări a
tensiunii de referinţă (Ref. 1), este pornit numărătorul, care va număra folosind
acelaşi ceas ce determină timpul de integrare. Atunci când ieşirea integratorului
scade sub un al doilea semnal de tensiune (Ref. 2), ieşirea comparatorului va fi high,
numărătorul se opreşte, iar numărul reprezintă tensiunea analogică de intrare.
Tensiunile de intrare mari vor permite integratorului să se încarce la o tensiune
mai mare, având ca efect direct o numărare mai mare la ieşire.
Acest tip de convertor are nevoie de un timp relativ mare pentru realizarea
conversiei, dar acţiunea de filtrare introdusă de integrator elimină zgomotul.
Circuitul de eşantionare şi memorare (reţinere)
Circuitele realizează eşantionarea şi reţinerea pe nivel a semnalelor de intrare
în CAN, fiind utilizate pentru cazurile în care apar modificări ale tensiunilor de
intrare. Circuitul are un comutator analogic cu o intrare de control. Atunci când
comutatorul este închis, semnalul de intrare este conectat la condensatorul de
menţinere, iar ieşirea buffer-ului urmăreşte intrarea. Atunci când comutatorul este
deschis, intrarea este deconectată de la condensator.
Funcţionarea unui astfel de circuit poate fi descrisă astfel:
- Atunci când semnalul de control este low (eşantionare), ieşirea urmăreşte
intrarea.
- Atunci când semnalul de control devine high (reţinere), deconectând
condensatorul de la intrare, ieşirea rămâne la valoarea pe care intrarea a avut-o
înainte de comutarea la modul de memorare(reţinere).
- Atunci când comutatorul se închide din nou, condensatorul se încarcă rapid, iar
ieşirea urmăreşte din nou intrarea.
În mod uzual, circuitul va comuta la modul de memorare înainte de începutul
conversiei CAN-ului, şi va comuta înapoi la modul de eşantionare după ce conversia
este terminată.
Capacitatea unui astfel de circuit de a ţine ieşirea în modul de memorare este
dependentă de calitatea condensatorului, de caracteristicile amplificatorului utilizat
pentru buffer (impedanţa intrării), precum şi de calitatea comutatorului.
Un circuit de eşantionare şi memorare real are o impedanţă de intrare finită,
prin urmare în modul de eşantionare, condensatorul de reţinere este încărcat prin
intermediul unor rezistenţe. Timpul în care circuitul rămâne în modul de eşantionare,
pentru achiziţia unei intrări complet scalate este numit timp de achiziţie, fiind
specificat în nanosecunde sau microsecunde.
Deoarece în momentul eşantionării circuitul conţine anumite impedanţe
conectate în serie cu condensatorul de reţinere se produce un efect de filtru RC trece
jos. Acest lucru limitează frecvenţa maximă la care eşantioanele pot fi achiziţionate.
Frecvenţa este cunoscută sub denumirea de bandă de putere fiind specificată în kHz
sau MHz.
Diferenţa de tensiune dintre intrare şi ieşire este cunoscută ca offset-ul ieşirii,
fiind exprimată în milivolţi.
Valoarea de deviaţie a ieşirii în modul de reţinere este numită rată de scădere,
fiind specificată în milivolţi /secunde, sau microvolţi /microsecunde.
Multe CAN-uri includ un circuit S/H intern. Un astfel de CAN trebuie să aibă
un pin separat ce controlează tranziţia dintre cele două moduri, sau să comute la
modul de menţinere, automat la începutul unei conversii.
Dacă nu este disponibil un timer PWM, sau numărul canalelor PWM este mai
mic decât numărul necesar de ieşiri analogice, soluţia este utilizarea unui CNA.
Există o mare varietate de CNA-uri, de rezoluţii diferite, timpi de conversie
diferiţi, sau modalităţi diferite de transmitere a rezultatului (serial sau paralel).
Majoritatea CNA-urilor funcţionează după acelaşi principiu: divizarea curentului cu
o reţea de rezistenţe. În figura următoare se prezintă un CNA pe 4 biţi:
Amplificatorul operaţional lucrează astfel încât potenţialul celor două intrări
este identic. Prin urmare, reţeaua lucrează ca şi când toate rezistenţele 2R, au un
capăt conectat la masă. Rezistenţa echivalentă a sarcinii Vref este constantă şi egală
cu R. Curenţii totali absorbiţi de cele 4 comutatoare (S3, S2, S1, S0) sunt
I 3 I ref / 2 , I 2 I ref / 4 , I1 I ref / 8 , I 0 I ref / 16 . Tensiunea de ieşire este:
Vout I F RF .
Curentul I F poate fi definit astfel:
I F I ref b0 / 2 b1 / 4 b 2 / 8 b3 / 16
unde b3 b0 sunt biţii cuvântului ce trebuie convertit într-o valoare analogică.
Prin urmare, tensiunea de ieşire Vout este proporţională cu valoarea binară ce
trebuie convertită.
1. Interfeţe paralele
CAN-urile vin într-o mare varietate de interfeţe, fiind capabile să lucreze cu
procesoare multiple. Maxim MAX151 este un convertor tipic de 10 biţi cu o
interfaţă paralelă „universală„ pe 8 biţi. Interfaţa cu microprocesorul a acestui tip de
CAN cuprinde o magistrală de date pe 8 biţi, un semnal de selecţie a circuitului
(CS), un semnal de citire (RD) şi o ieşire BUSY. Circuitul include, de asemenea un
S/H intern. Pe frontul descrescător al semnalelor RD şi CS, S/H este trecut în modul
reţinere, fiind pornită conversia. Dacă, CS şi RD nu trec în starea low în acelaşi
timp, ultimul front descrescător porneşte conversia. Odată cu pornirea conversiei,
semnalul BUSY devine activ (egal cu 0). Semnalul rămâne în starea low până când
conversia este terminată.
Există două moduri de operare: modul memoriei lente şi modul ROM. În
primul mod de operare, procesorul aşteaptă, forţând CS şi RD să rămână în starea
low până când conversia este terminată. Într-un astfel de sistem, de obicei semnalul
BUSY este conectat la semnalele RDY şi WAIT ale procesorului. Acestea ţin
procesorul într-o stare de aşteptare până când conversia este terminată. Timpul
maxim de conversie în acest caz este de 2.5s .
În modul ROM de operare, procesorul realizează un ciclu de citire, plasând S/H
în modul reţinere şi iniţiind o conversie. În timpul citirii curente, procesorul citeşte
rezultatele conversiei anterioare. Semnalul BUSY nu este utilizat pentru a extinde
ciclul de citire. În schimb, BUSY este conectat la o întrerupere sau este verificat de
către procesor pentru a indica când conversia este terminată. Atunci când BUSY
trece din 0 în 1, procesorul realizează o nouă citire, pentru a extrage rezultatul şi
astfel, o nouă conversie să înceapă.
2. Interfeţe seriale
Avantajul acestora este acela de a oferi o interfaţă independentă de procesor, ce
nu afectează stările de aşteptare ale procesorului, timpii de reţinere sau frecvenţele
ceasului. Dezavantajul este legat de viteză, deoarece datele trebuie transferate bit cu
bit.
SPI este o interfaţă serială, ce foloseşte un ceas, un semnal de selecţie a
circuitului, precum şi biţi de intrare şi de ieşire.
Maxim MAX1242 este un CAN SPI tipic pe 10 biţi ce foloseşte o aproximare
succesivă, având şi un S/H intern.
Conversia începe pe frontul descrescător a lui CS şi durează aproximativ
7.5s . Atunci când CS este în starea low, circuitul MAX1242 trece pinul de ieşire a
datelor în starea low. După terminarea conversiei, pinul de ieşire a datelor este trecut
în starea high. Procesorul poate citi datele (câte un bit) prin comutarea ceasului şi
prin monitorizarea pinului de ieşire a datelor. După ce cei 10 biţi sunt citiţi,
MAX1242 trimite 2 sub-biţi, S1 şi S0. Pentru alte tranziţii ale ceasului, ce apar după
cele 13 perioade, ieşirea circuitului va fi zero.
În timpul conversiei, magistrala SPI nu este disponibilă pentru comunicaţia cu
alte periferice. Acest lucru este posibil abia după ce conversia este completă, iar
rezultatul a fost citit. Dacă există o subrutină de tratare a întreruperii ce comunică cu
dispozitivele SPI, atunci acestea trebuie să fie dezactivate în timpul conversiei.
Pentru evitarea acestei probleme, MAX1242 poate comunica cu microcontroller-ul
peste o magistrală dedicată SPI.
La terminarea conversiei se va genera un semnal de întrerupere către
microcontroller prin intermediul semnalului DOUT (DOUT=1).
CAN-uri interne
Multe microcontrollere conţin CAN-uri pe acelaşi cip. Exemple de astfel de
microcontrollere sunt Atmel AT90S4434 şi PIC167C7xx. CAN-urile lucrează prin
aproximări succesive.
Microcontrollere din familia PIC16C7xx conţin un CAN pe 8 biţi cu
aproximări succesive şi multiplexoare analogice pe intrare. Microcontrollerele au de
la 4 până la 8 canale. Registrele interne dictează ce canal va fi selectat, precum şi
începerea conversiei. Odată ce o intrare este selectată, există un timp de stabilizare
ce trebuie să treacă pentru a permite condensatorului S/H să se încarce, înainte ca
operaţia de conversie să înceapă.
Dispozitivele permit utilizarea unui pin de intrare pentru tensiunea de referinţă.
Valoarea citită de la CAN după terminarea conversiei este:
Digital word Vin / Vref 256
Circuitele permit setarea internă a tensiunii de alimentare, astfel pinul de
intrare pentru referinţă este o altă intrare analogică.
Măsurarea unui semnal de 3.2V într-un sistem cu o referinţă de 5V, va conduce
către următorul rezultat:
Vin 256 3.2V 256
16310 A316
Vref 5V
Rezultatul este dependent de tensiunea de alimentare (5V). Dacă tensiunea de
alimentare este crescută cu 1% (5.05V), valoarea conversiei va fi:
Vin 256 3.2V 256
16210 A216
Vref 5.05V
Prin urmare o creştere cu 1% a tensiunii de alimentare produce o modificare a
rezultatului prin o numărare. În mod uzual, sursele de tensiune pot varia cu 2% sau
3%. Deci, variaţiile de tensiune pot avea un efect semnificativ asupra ieşiri. Ieşirea
sursei de tensiune poate varia datorită sarcinii, a temperaturii, a variaţilor de curent
alternativ sau de la o sursă la alta.
Compresia datelor
Conversia analog-numerică realizează conversia semnalelor provenite de la
echipamentele analogice în semnale numerice sau discrete.
Compresia datelor poate fi privită ca un caz particular al conversiei A/N, pentru
care putem evidenţia două mari ramuri:
1. Cuantizarea – proces prin care semnalul analogic este cuantizat într-un secvenţă
finită de numere. În acest caz, datorită apariţiei anumitor distorsiuni o parte a
informaţiei se pierde, iar informaţia pierdută nu mai poate fi recuperată. În cadrul
acestei clase de conversie se pot încadra diversele tipuri de modulaţie (modulaţia
impulsurilor în cod, modulaţia impulsurilor în cod diferenţială, modulaţia delta),
precum şi cuantizarea uniformă, neuniformă sau vectorială.
2. Codificarea fără zgomot – în care datele numerice (de obicei cele rezultate ca
urmare a unui proces de cuantizare) sunt comprimate, în vederea reprezentării lor,
prin utilizarea unui număr cât mai mic de biţi, astfel încât secvenţa iniţială poate fi
recuperată în totalitate. Din această categorie fac parte tehnicile de codificare a
sursei, cum ar fi: codificarea Huffman, codificarea Lempel-Ziv, codificarea
aritmetică, etc. În acest caz, nu apar pierderi de informaţie.
Cel mai simplu tip de sursă discretă este cel ce emite o secvenţă de litere dintr-un
alfabet finit. Spre exemplu, o sursă binară emite o secvenţă binară de forma 1011011…,
în timp ce alfabetul este format din simbolurile {0, 1}.
În general, o sursă discretă de informaţie cu un alfabet de L simboluri posibile, de
exemplu x1 , x2 , , xL , emite o secvenţă de simboluri selectată din alfabet.
Ieşirea unei surse de informaţie (data, audio, video, etc) poate fi modelată ca un
proces aleatoriu. Pentru un proces aleatoriu staţionar, fără memorie, cantitatea medie de
informaţie emisă de sursă sau entropia este definită prin:
H X p x log p x log L (47)
xX
unde X este alfabetul sursei, iar p x este probabilitatea simbolului x .
Dacă baza logaritmului este 2, atunci unitatea de măsură pentru entropie este bitul.
Pentru alfabetul binar, cu probabilităţile p şi, respectiv 1 p , entropia este definită prin:
Relaţia (48) determină numărul de biţi necesar pentru reprezentarea unei surse, astfel
încât aceasta să fie recuperată în totalitate.
Eficienţa codificării, în acest caz este definită prin raportul H X / R şi este de 100%.
a2 1/4 00 10 01
în timp ce următorii 4 biţi sunt neclari (nu pot fi în mod unic decodaţi). Decodarea se
poate face fie prin perechea a4a3 , fie prin perechea a1a2 a1 . Codurile ar trebui să fie
decodate în mod unic şi instantaneu.
Pe de altă parte, codul 2 este decodat în mod unic. Cuvintele de cod pot fi
reprezentate printr-un structură arborescentă.
a1 a2 a3
0 0 0
a4
Figura 32 1 1 1
Se observă că primele 3 cuvinte de cod au ultimul bit 0, şi nici un cuvânt nu este
mai mare de 3 biţi. Aceste caracteristici fac ca acest cod să fie decodat în mod
instantaneu.
Codul 3 are o structură arborescentă, prezentată în figura 33. Codul este în mod
unic decodat, dar nu este decodat în mod instantaneu.
a2 a3
a1 1 1
0
a4
1 1 1
Figura 33
Algoritmul de codificare Huffman
Algoritmul Hufmann este o codificare de lungime variabilă ce se bazează pe
probabilităţile simbolurilor sursei P xi , i 1, , L . Algoritmul este unul optimal,
astfel încât numărul mediu necesar pentru a reprezenta simbolurile sursei, este minim,
desigur cu îndeplinirea condiţiei privind decodificarea unică şi instantanee a secvenţei
recepţionate.
Se consideră o secvenţă de şapte posibile simboluri x1 , x2 , , x7 cu următoarele
probabilităţi: p 0.35,0.30,0.20,0.10,0.04,0.005,0.004 .
iar, numărul mediu de numere binare (digiţi) per simbol sursă este:
7
R i p i 2.21 numere binare/simbol.
i 1
0
0.30
0.649
0
0.20 1
0.349
0
0.10 1
0.149
0
0.04 1
0.049
0
0.005 0.009 1
1
0.004
1
x2 10
x3 110
x4 1110
x5 11110
x6 111110
x7 111111
Sisteme de microcalculatoare și decizii de proiectare
CPU Memorie
Unitatea de control
Mag. de date
+5V
VSS
AVSS (26) OSC1(RA6) OSC2(RA7) (9,25,41,56)
XTAL
C1 C2
Prima etapă presupune ridicarea unor caracteristici intrare – ieșire, pe baza cărora
instalația este descrisă printr-un model adecvat în domeniul timp continuu.
Spre exemplu, dacă se consideră o aplicație de control a unui motor de curent
continuu, prin intermediul unui μC (PIC18F8722), atunci în această etapă se poate aplica
la intrarea motorului prin intermediul modului ECCP1 o treaptă de tensiune constantă de
5V. Ieșirea motorului poate fi citită prin intermediul unui traductor (encoder) și transmisă
μC prin intermediul convertorului A/D . Pentru ridicarea caracteristicilor dorite, mărimea
de ieșire poate fi transmisă către un PC prin intermediul modulului EUSART1 și a
protocolului RS232.
Etapa următoare presupune validarea modelului obținut prin identificare cu
modelul matematic al instalației studiate.
Pe baza modelului obținut se va realiza proiectarea legii de reglare în domeniul
timp continuu ce asigură urmărirea unei referințe prestabilite. Spre exemplu, în cazul unui
motor de c.c. referința poate fi o amplitudine dorită pentru viteza de rotație asociată
axului motorului.
Pentru a putea fi implementată la nivelul μC legea de reglare trebuie discretizată.
În acest sens, există o serie de metode de discretizare, printre cele mai cunoscute fiind:
substituția Tustin, metoda Euler, etc.
Spre exemplu, o lege de reglare PID discretă poate fi implementată la nivelul μC,
prin următoarea relație cu diferențe:
u k u k 1 a e k b e k 1 c e k 2
T k
a k p ki d
2 T
T 2k
b k p ki d
2 T
k
c d
T
unde: u k este mărimea de control la pasul curent k aplicată instalației, e k este
t de t
continuu de forma: u t k p e t ki e t dt kd , fiind obținuți pe baza modelului
0 dt
instalației, T este perioada de eșantionare.
În plus e k r k y k , unde r k este referința la momentul curent k , iar
Din punct de vedere matematic, ultima etapă în proiectarea unui astfel de sistem
de control (validarea legii de reglare propus) trebuie să asigure îndeplinirea următoarei
cerințe: lim e k 0 .
k
Pe lângă elementele componente ale sistemului de control, deja enunțate, în
funcție de aplicație pot să apară și alte componente. Spre exemplu, în cazul discutat al
unui motor de c.c., între microcontroller și instalație trebuie intercalată o punte H utilizată
pentru aplicarea unei tensiuni pe o sarcină în orice sens. Acest lucru permite acționarea în
sensul acelor de ceasornic sau invers a motorului de c.c.