Sunteți pe pagina 1din 228

UNIVERSITATEA DIN BACU FACULTATEA DE INGINERIE

DAN ROTAR

MARIUS ANGHELU

ARHITECTURA SISTEMELOR DE CALCUL


Note de curs Indrumar de laborator

EDITURA ALMA MATER BACU 2007

Cuprins

1.1. 1.2. 1.3. 1.3.1. 1.3.2. 1.4. 1.5.

CAPITOLUL 1 BAZE DE NUMERAIE Introducere Baza de numeraie zece Baza de numeraie doi Conversia binar-zecimal Conversia zecimal-binar Baza de numeraie opt (sistemul octal) Baza de numeraie aisprezece (sistemul hexazecimal) CAPITOLUL 2 OPERAII ARITMETICE Introducere Operaii aritmetice cu numere binare Adunarea Scderea nmulirea mprirea ntreag Operaii aritmetice cu numere reprezentate n octal i hexazecimal Adunarea i scderea n octal Adunarea i scderea n hexazecimal

pag. 6 6 6 7 7 8 10 12 13 14 14 14 14 15 16 17 18 19 20 21 21 25 26 29 29 32

2.1. 2.2. 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.3. 2.3.1. 2.3.2.

CAPITOLUL 3 ARHITECTURA SISTEMELOR DE CALCUL 3.1. Introducere 3.2. Arhitectura von Neumann 3.3. Arhitectura Harvard CAPITOLUL 4 UNITATEA CENTRAL Introducere 4.2. Microprocesorul universal (structura general a unui microprocesor) 3

4.3. 4.3.1. 4.3.2. 4.3.2.1. 4.4. 4.4.1. 4.5. 4.5.1. 4.5.2. 4.5.3.

Caracteristicile principalelor tipuri de microprocesoare Microprocesorul ZILOG Z80 Microprocesoarele INTEL 80x86 Microprocesorul INTEL 8086/8088 Procesoare de semnal digitale Procesorul de semnal digital, TMS320F240 Microcalculatoare integrate, microcontrolere Prezentare general Microcontrolerul AT90S2313 Microcontrolerul PIC 16F877 CAPITOLUL 5 MEMORIA Prezentare general Aplicarea principiului "cache n sistemele de calcul Memoria Cache Cache-ul de disc Cache-ul microprocesorului Cache-ul cu adresare direct (direct mapped) Cache-ul cu adresare asociativ (fully associative) Cache-ul parial asociativ (set-associative) Gruparea memoriilor Creterea capacitii memoriei prin creterea numrului de linii de date Gruparea memoriilor pentru creterea numrului de linii de adres Gruparea mixt Adresarea memoriilor Adresarea absolut Adresarea relativ (redundant) CAPITOLUL 6 PORTURI (INTERFEE) Prezentare general Interfaa serial programabil 8251 Interfaa logic programabil 8255 Interfaa USB (Universal Serial Bus) Introducere Prezentarea Universal Serial Bus Vitezele USB Conectorii Caracteristici electrice Identificarea vitezei Alimentarea VBUS Protocolul Interfeele microcontrolerelor Modulul convertor analog-digital (A/D) 4

33 33 34 37 51 54 58 58 59 62 76 76 82 82 85 86 87 87 88 89 91 92 94 94 94 95

5.1. 5.2. 5.2.1. 5.2.2. 5.2.3. 5.2.4. 5.2.5. 5.2.6. 5.3. 5.3.1. 5.3.2. 5.3.3. 5.4. 5.4.1. 5.4.2.

6.1. 6.2. 6.3. 6.4. 6.4.1. 6.4.2. 6.4.2.1. 6.4.2.2. 6.4.2.3. 6.4.2.4. 6.4.2.5. 6.4.2.6. 6.5. 6.5.1.

96 99 107 115 115 118 118 120 121 121 123 123 125 126

6.5.1.1. Cerinele achiziiei analog-digitale 6.5.1.2. Selecia ceasului conversiei analog-digitale 6.5.1.3. Conversia A/D CAPITOLUL 7 CIRCUITE SPECIALE Introducere Controlerul de ntreruperi programabil 8259 ntreruperile microcontrolerului TMS320F240 ntreruperile managerului de evenimente (EV) Accesul direct la memorie (DMA) Circuitul 8257 pentru acces direct la memorie DMA Conexiunile externe Registrele interne ale 8257 Registrele de canal Registrul de mod Registrul de stare Efectuarea transferurilor cu DMA 8257 Circuitul contor/periodizator programabil 8253 Circuitele timer ale microcontrolerelor Timerele de uz general GPTimer LABORATOR Laborator 1. Utilizarea interfeei seriale Laborator 2. Comunicaia ntre sistemele de calcul Laborator 3. Utilizarea interfeei paralele Laborator 4. Comanda unui motor pas cu pas prin interfaa paralel Laborator 5. Studiul convertorului analog numeric Laborator 6. Programe pentru determinarea structurii i a performanelor sistemului de calcul Laborator 7. Metode de testare a memoriei Bibliografie

130 131 132

7.1. 7.2. 7.3. 7.3.1. 7.4. 7.4.1. 7.4.1.1. 7.4.1.2. 7.4.1.3. 7.4.1.4. 7.4.1.5. 7.4.1.6. 7.5. 7.6. 7.6.1.

133 133 139 140 149 151 151 153 154 155 156 157 159 165 165

186 190 197 203 211 218 222 226

CAPITOLUL 1 BAZE DE NUMERAIE


1.1. Introducere

Valorile numerelor pot fi exprimate n diferite baze de numeraie. Astfel, n activitile umane obinuite baza de numeraie folosit este baza zece. Nu acelai lucru se ntmpl n sistemele numerice. Din considerente tehnologice, n sistemele numerice nu putem reprezenta dect dou numere: zero i unu. De regul valoarea zero este asociat cu un nivel sczut de tensiune iar valoarea unu este asociat cu un nivel ridicat de tensiune, diferena dintre tensiunea asociat valorii zero i cea asociat valorii unu asigurnd securitatea la perturbaii a sistemului numeric (n sensul c dac diferena ntre cele dou tensiuni crete, crete i imunitatea la perturbaii a sistemului numeric). O baz de numeraie presupune existena unui numr de simboluri (numite adesea cifre) cu ajutorul crora vor fi reprezentate numerele, un mod de scriere a numerelor i o relaie de calcul a valorii numrului. Numrul simbolurilor utilizate ntro baz de numeraie definete numele bazei de numeraie. Reprezentarea numerelor se face n prezent n exclusivitate prin scrierea poziional adic poziia numrului exprim i rangul acestuia (exponentul bazei de numeraie). Simbolul (cifra) cel mai din dreapta reprezentrii numrului are rangul minim (zero) iar simbolul (cifra) cel mai din stnga din reprezentarea numrului are rangul cel mai mare. Calculul valorii numrului se face prin nmulirea valorii simbolului cu baza la puterea rangului. Atunci cnd se lucreaz cu mai multe baze de numeraie simultan este obligatorie indicarea bazei de numeraie la fiecare numr scris. Acest lucru se face prin scrierea valorii bazei de numeraie ca indice. De exemplu: 1210 sau 1001101012 sau 1B2C16. Pentru indicarea bazei de numeraie pot fi utilizate i litere astfel: z (zecimal) pentru baza 10 b (binar) pentru baza 2 o (octal) pentru baza 8 h (hexazecimal) pentru baza 16. Exemplul de mai sus poate fi scris i: : 12z sau 100110101b sau 1B2Ch. n continuare vor fi prezentate principalele baze de numeraie utilizate n sistemele numerice.

1.2.

Baza de numeraie zece

Aa cum s-a artat, baza de numeraie zece, cea utilizat n activitile umane, presupune existena a zece simboluri distincte pentru reprezentarea numerelor. Aceste simboluri sunt: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Reprezentarea numerelor este poziional deci atunci cnd scriem un numr, poziia acestuia va reprezenta rangul su: rang: simbol: 43210 75213

Valoarea numrului reprezentat mai sus este: apte zeci i cinci de mii dou sute treisprezece. Aceasta valoare a rezultat din regula prezentat mai sus adic: valoare numr = 7 x 104 + 5 x 103 + 2 x 102 + 1 x 101 + 3 x 100

1.3.

Baza de numeraie doi

Numerele reprezentate n baza doi sunt numite n mod obinuit numere binare. n baza doi sunt necesare numai dou simboluri pentru reprezentarea numerelor i acestea sunt: 0 (zero) i 1 (unu). Datorit faptului c TABELUL 1.1. sistemele numerice lucreaz, aa cum s-a artat mai sus, n Numr Numr sistem binar, studiul reprezentrii numerelor n baza doi binar zecimal este important atunci cnd vorbim de tehnologia DSP. De 0000 0 asemenea prin asocierea unor valori de adevr celor dou 0001 1 simboluri: 0 fals (false) i 1 adevrat (true) sistemele 0010 2 numerice vor putea lucra n logic binar sau Boolean. Abordarea logicii binare va fi fcut mai trziu n 0011 3 cuprinsul acestui manual. 0100 4 Revenind la scrierea numerelor n baza doi trebuie 0101 5 spus faptul c toate regulile stabilite la baza zece se aplic 0110 6 i aici. De exemplu, dac vom scrie numrul binar: 0111 7 1000 8 rang 6543210 1001 9 numr: 1011001 1010 10 1011 11 atunci valoarea acestuia va fi: 1100 12 1101 13 valoare = 1 x 26 + 0 x 25 + 1 x 24 + 1 x 23 + 0 x 22 + 1110 14 + 0 x 21 + 1 x 20 = 64z + 16z + 8z + 1z = 89z 1111 15 n tabelul 2.1 este prezentat echivalena primelor 7

16 numere binare cu cele zecimale. Pentru acest tabel putem face urmtoarele observaii: o dac citim numerele binare din acest tabel pe coloan observm faptul c succesiunea cifrelor zero i unu depinde de rangul cifrei. Astfel la rangul zero ntlnim succesiunea 0,1,0,1,0,1, ... , la rangul unu succesiunea 0,0,1,1,0,0,1,1, ... , i aa mai departe; o un numr zecimal putere a lui doi va determina o cifr binar cu un singur simbol unu pe poziia exponentului puterii lui doi. Este evident faptul c atunci cnd se dorete conversia numerelor dintr-o baz n alta este dificil de utilizat tabele, n special atunci cnd se lucreaz cu numere mari. Din acest motiv se stabilesc anumii algoritmi de conversie pentru simplificarea translatrii numerelor dintr-o baz n alta. 1.3.1. Conversia binar-zecimal Conversia unui numr binar ntreg n echivalentul su zecimal, cunoscnd c operaiile se efectueaz n sistemul zecimal, se face cu ajutorul metodei nmulirii repetate cu 2. Pentru a justifica, se consider numrul binar P exprimat prin: P = bn-1 2n-1 + bn-2 2n-2 + .... + b1 21 + b0 20 sau: P1 P = ({[ (bn-1 2 + bn-2) 2 + bn-3] 2 + bn-4} 2 + .... + b1) 2 + b0 P2 relaie din care rezult algoritmul conversiei numerelor ntregi binare n numere zecimale: o pentru a forma mrimea intermediar P1 se nmulete cu 2 cifra cea mai semnificativ (cifra de rang maxim) a numrului binar, adugnd urmtoarea cifr semnificativ; o pentru a obine mrimea intermediar P2, se nmulete P1 cu 2 adugnd cea de-a treia cifr semnificativ; o se continu acest algoritm pn la adugarea cifrei cel mai puin semnificative a numrului binar (cea de rang minim); o numrul zecimal obinut este echivalentul zecimal al numrului binar dat. EXEMPLU S se transforme numrul binar 10110110111 n echivalentul su zecimal: 8

1x2+0=2 2x2+1=5 5 x 2 + 1 = 11 11 x 2 + 0 = 22 22 x 2 + 1 = 45 45 x 2 + 1 = 91 91 x 2 + 0 = 182 182 x 2 + 1 = 365 365 x 2 + 1 = 731 731 x 2 + 1 = 1463 deci: 10110110111B = 1463Z

P1 = 2 P2 = 5 P3 = 11 P4 = 22 P5 = 45 P6 = 91 P7 = 182 P8 = 365 P9 = 731 P8 = 1463

Pentru conversia binar-zecimal a unui numr binar fracionar se folosete metoda mpririi repetate cu 2. Pentru a justifica, se consider numrul binar fracionar Q dat de: Q = b-1 2-1 + b-2 2-2 + .... + b-m 2-m care poate fi pus i sub forma: Q1

Q = 2-1 (b-1 + 2-1 { b-2 + 2-1 [b-3 + .... + 2-1 (b-m+1 + 2-1b-m)]}) de unde rezult algoritmul conversiei numerelor binare fracionare n numere zecimale: o pentru a obine mrimea intermediar Q1 se mparte cifra cea mai puin semnificativ (de rang minim) cu 2, adugnd urmtoarea cifr semnificativ; o pentru a obine mrimea intermediar Q2 se mparte Q1 cu 2 adugnd a treia a treia cifr de la dreapta spre stnga cifr semnificativ; o se continu acest algoritm pn cnd mprirea care corespunde cifrei 0 de la stnga virgulei a fost efectuat; o numrul obinut este echivalentul zecimal al numrului binar dat. EXEMPLU S se transforme numrul binar fracionar 0,001101111 n echivalentul su zecimal: 1 1,5 1,75 1,875 0,9375 1,46875 1,734375 : 2 + 1 = 1,5 : 2 + 1 = 1,75 : 2 + 1 = 1,875 : 2 + 0 = 0,9375 : 2 + 1 = 1,46875 : 2 + 1 = 1,734375 : 2 + 0 = 0,8671875 9 Q1 = 1,5 Q2 = 1,75 Q3 = 1,875 Q4 = 0,9375 Q5 = 1,46875 Q6 = 1,734375 Q7 = 0,8671875

0,8671875 0,4335937

: 2 + 0 = 0.4335937 : 2 + 0 = 0,2167968

Q8 = 0,4335937 Q9 = 0,2167968

deci: 0,001101111B = 0,2167968Z Dac se cere conversia unui numr binar care are att parte ntreag ct i parte fracionar n echivalentul su zecimal, se aplic prii ntregi algoritmul corespunztor conversiei numerelor ntregi, iar prii fracionare algoritmul corespunztor prii fracionare. 1.3.2. Conversia zecimal-binar Conversia zecimal-binar a numerelor ntregi se face dup metoda mpririi repetate prin 2. Pentru a justifica aceasta, se consider numrul ntreg N n baza 10, care poate fi exprimat n funcie de puterile lui 2 sub urmtoarea form : N = an-1 2n-1 + an-2 2n-2 + .... + a1 21 + a0 20 sau: N = (an-1 2n-2 + an-2 2n-3 + .... + a1) 2 + a0 = N1 2 + a0 Din ultima egalitate rezult c cifra cea mai semnificativ a0 din reprezentarea binar a numrului N constituie restul mpririi lui N cu 2. n mod analog, numrul N1 se poate exprima prin : N = (an-1 2n-3 + an-2 2n-4 + .... + a2) 2 + a1 = N2 2 + a1 Adic a1, care reprezint cifra semnificativ de rang imediat urmtor n reprezentare binar, constituie restul mpririi lui N1 cu 2. De aici rezult algoritmul conversiei numerelor ntregi zecimale n numere binare: o se mparte numrul ntreg n baza zece N prin 2; se obine ctul N1 i restul a0; o se mparte ctul N1 prin 2; se obine ctul N2 i restul a1; o se continu aceast operaie pn se ajunge la un ct Nn egal cu zero; o resturile obinute sunt cifrele numrului binar (biii), a0 fiind cifra cea mai puin semnificativ, a1 cifra urmtoare . a. m. d. EXEMPLU S se transforme numrul zecimal 53 n echivalentul su binar. 53 : 2 = 26 + 1 26 : 2 = 13 + 0 10 a0 = 1 a1 = 0

13 : 2 = 6:2= 3:2= 1:2= Deci 5310 = 1101012

6+1 3+0 1+1 0+1

a2 = 1 a3 = 0 a4 = 1 a5 = 1

Folosind acelai algoritm se prezint un alt mod de aranjare a calculelor, n aa fel, ca la sfritul operaiei s se obin direct numrul binar fr a fi necesar rescrierea sa. n acest sens, se aeaz succesiunea calculelor dup schema prezentat mai jos, unde al n-lea ct este ultimul ct, egal cu zero : Ct n Ct (n 1) Ct (n 2) .... Ct 2 Ct 1 Numr Rest n Rest (n-1) .... Rest 3 Rest 2 Rest 1 Considernd acelai exemplu se obine : 0 1 3 6 13 26 53 1 1 0 1 0 1 Conversia zecimal-binar a numerelor fracionare se face dup metoda nmulirii repetate cu 2. Pentru a justifica, se consider numrul fracionar zecimal M, care poate fi exprimat n funcie de puterile numrului 2 prin : M = a-1 2-1 + a-2 2-2 + .... + a-m 2-m Prin nmulirea ambelor pri ale ecuaiei de mai sus cu 2, se obine : 2 M = a-1 + (an-2 2-1 + .... + a-m 2-m+1) = a-1 + M1 partea dreapt a egalitii fiind format din numrul ntreg a-1, care reprezint cifra cea mai semnificativ a numrului binar subunitar i fracia M1. Aplicnd acelai procedeu lui M1, rezult: 2 M1 = a-2 + (an-3 2-1 + .... + a-m 2-m+2) = a-2 + M2 adic se obine urmtoarea cifr semnificativ a-2 a numrului fracionar binar i fracia M2 . Cu aceasta, algoritmul conversiei numerelor fracionare zecimale n numere fracionare binare este urmtorul: o se nmulete numrul zecimal fracionar M cu 2; rezult bitul a-1 i partea fracionar M1; o se nmulete partea fracionar M1 cu 2; rezult bitul a-2 i partea fracionar M2; 11

o se continu aceast operaie pn cnd Mm devine egal cu zero sau ne limitm la un numr de cifre binare n funcie de precizia impus. EXEMPLU 1. S se transforme numrul 0,40625 n echivalentul su binar. 0,40625 x 2 = 0,81250 0,8125 x 2 = 1,6250 0,625 x 2 = 1,250 0,25 x 2 = 0,5 0,5 x 2 = 1,0 deci 0,40625z = 0,01101b 2. S se transforme numrul zecimal 0,7 n echivalentul su binar. 0,7 x 2 = 1,4 a-1 = 1 0,4 x 2 = 0,8 a-2 = 0 0,8 x 2 = 1,6 a-3 = 1 0,6 x 2 = 1,2 a-4 = 1 0,2 x 2 = 0,4 a-5 = 0 0,4 x 2 = 0,8 a-6 = 0 ........................................................... deci 0,710 = 0,101100....2 a-1 = 0 a-2 = 1 a-3 = 1 a-4 = 0 a-5 = 1

1.4.

Baza de numeraie opt (sistemul octal)

Utilizatorii primei generaii de calculatoare au ntmpinat dificulti n manevrarea cifrelor binare, ntruct un numr exprimat n sistemul binar are o lungime de circa trei ori mai mare dect n exprimarea zecimal. Din acest motiv, s-a cutat un sistem de numeraie mai apropiat de baza zece, cu o contingen direct cu sistemul binar. Cunoscnd c 8 este o putere ntreag a lui 2 (23 = 8), aceste caliti sunt ntrunite de sistemul de numeraie octal, care are opt cifre pentru exprimare, de la 0 la 7 inclusiv. Ca urmare, conversia binar octal i octal binar se poate face direct, n primul caz nlocuind un grup de trei cifre binare socotite de la dreapta i de la stnga virgulei prin echivalentul lor octal, iar n al doilea caz nlocuind fiecare cifr octal printr-un grup de trei cifre binare. EXEMPLU 1. S se transforme numrul binar 10111,00 11 n echivalentul su octal. 010 111, 001 1002 = 27,148 2 7, 1 12 4

2. S se transforme numrul octal 26,341 n echivalentul su binar. 26,3418 = 010 110, 011 100 0012 2 6, 3 4 1

Prin folosirea sistemului octal, calculele binare sau structura informaiei din interiorul calculatorului nu se schimb, structur care poate fi verificat cu uurin din exterior. Din acest motiv, calculatoarele din prima i a doua generaie aveau o lungime a cuvntului egal cu un multiplu a lui 3, obinuit 24, 36 sau 42 de bii, pentru a facilita trecerea din sistemul octal n binar sau invers. Se menioneaz c pentru transformarea numerelor din baza de numeraie 10 n baza de numeraie 8 sau invers, cu calculele fcute n baza 10, toi algoritmii dedui anterior rmn valabili, cu observaia c nmulirile, respectiv mpririle prin 2 se nlocuiesc cu nmuliri, respectiv mpriri, cu 8.

1.5.

Baza de numeraie aisprezece (sistemul hexazecimal)

Pentru a reprezenta n calculator alte caractere dect numere, adic litere, semne de punctuaie etc. (caractere alfanumerice), au fost utilizate iniial 6 cifre binare. n cursul operaiilor de citire sau imprimare, dispozitivul respectiv fcea automat transformarea fiecrui caracter n cele 6 cifre binare sau invers. Folosind 6 cifre binare, adic dou cifre octale, nu puteau fi reprezentate dect 64 de caractere distincte. Acest numr de caractere s-a dovedit a fi n scurt timp insuficient pentru aplicaiile practice i din acest motiv s-a trecut, la majoritatea calculatoarelor generaiei a treia, la alocarea a 8 cifre binare, adic dou hexazecimale, fiecrui caracter. Un grup de 8 cifre binare este cunoscut i sub denumirea de octet sau byte i reprezint cea mai mic diviziune a informaiei care poate fi prelucrat n aceste calculatoare. ntruct baza de numeraie 16 este mai mare ca baza de numeraie 10, cifrele mai mari de 9 sunt notate n ordine cu literele alfabetului latin, adic : A zece B unsprezece C doisprezece D treisprezece E paisprezece F cincisprezece. Pentru conversia din baza 10 n 16 sau invers, sunt utilizate aceleai metode, fcndu-se calculele n baza 10. Conversia binar-hexazecimal i hexazecimal-binar se face n mod similar celei binar-octale, respectiv octal-binare, cu observaia c se vor lua grupe de cte 4 cifre binare n loc de 3.

13

CAPITOLUL 2 OPERAII ARITMETICE


2.1. Introducere

n acest capitol se vor prezenta operaiile aritmetice simple realizate cu numere binare (numere reprezentate n baza doi), numere octale (numere reprezentate n baza opt) sau hexazecimale (numere reprezentate n baza aisprezece). Pentru exemplificarea operaiilor efectuate se vor folosi numai numere ntregi pozitive (numere naturale) deoarece acesta este modul de baz al reprezentrii informaiei ntr-un sistem de calcul numeric.

2.2.

Operaii aritmetice cu numere binare

2.2.1. Adunarea Operaia de adunare poate fi descris cu ajutorul celor patru combinaii posibile ntre dou numere binare: 0 + 0 = 0; 0 + 1 = 1; 1 + 0 = 1; 1 + 1 = 0; transport la rangul superior: 0 transport la rangul superior: 0 transport la rangul superior: 0 transport la rangul superior: 1

n mod obinuit se scrie: 1b + 1b = 10b deoarece n aceast situaie avem un transport la rangul superior. Este evident faptul c: 10b = 2z. EXEMPLE 1) S se adune numrul binar 110111 cu numrul binar 101. 111 110111 + 101 111100 putem efectua verificarea in zecimal: 110111b = 55z, 101b = 5z, 111100b = 60z. Verificarea este imediat. Se observ c dac trebuie s adunm un ir de n cifre unu n binar, rezultatul pe rangul respectiv va fi zero dac numrul de cifre unu adunate este par sau unu dac numrul de cifre adunate este impar iar transportul se face peste 14 transport

n:2 (mprire ntreag) ranguri pornind de la rangul respectiv (cel la care se efectueaz adunarea). 2) S se adune numrul binar 11111 cu numrul binar 1. transport 1111 11111 + 1 100000

De fapt rezultatul poate fi vzut imediat dac ne uitm la tabelul 1.1. Dup un numr cu o succesiune de cifre unu urmeaz un numr binar care are o cifr unu urmat de o succesiune de cifre zero. Numrul cifrelor zero este egal cu numrul cifrelor unu al numrului care se adun. De exemplu 1111b + 1b = 10000b. 2.2.2. Scderea Operaia de scdere poate fi descris cu ajutorul celor patru combinaii posibile ntre dou numere binare: 0 0 = 0; 0 1 = 1; 1 0 = 1; 1 1 = 0; mprumut de la rangul superior: 0 mprumut de la rangul superior: 1 mprumut de la rangul superior: 0 mprumut de la rangul superior: 0

n mod obinuit se scrie: 10b 1b = 1b deoarece n aceast situaie avem un mprumut de la rangul superior. Este evident faptul c: 10b = 2z. EXEMPLE 1) S se efectueze scderea numerelor binare: 11001 i 11. mprumut 11 11001 11 10110

Verificarea n zecimal: 11001b = 25z, 11b = 3z, 10110b = 22z. 25z 3z = 22z. 2) S se efectueze scderea 11001 1011. 111 11001 1011 01110 Verificarea n zecimal: 11001b = 25z, 1011b = 11z, 1110b = 14z. 25z 11z = 14z. 15 mprumut

Se pot face observaii similare cu cele de la adunare. 3) S se scad din 1000b valoarea 1. Rspunsul este imediat: 111b. 2.2.3. nmulirea Operaia de nmulire poate fi descris cu ajutorul celor patru combinaii posibile ntre dou numere binare: 0 x 0 = 0; 0 x 1 = 0; 1 x 0 = 0; 1 x 1 = 1. Operaia de nmulire se efectueaz identic cu cea din baza zece. Vom analiza n continuare cteva exemple. EXEMPLE 1) S se efectueze nmulirea n binar: 110101 x 1101. 110101 x 1101 110101 000000 110101 110101 1010110001 Verificarea n zecimal: 110101b = 53z, 1101b = 13z, 1010110001b = 689z. Rezult 53z x 13z = 689z. Din acest exemplu se observ c operaia de nmulire poate fi nlocuit cu operaii de deplasare a denmulitului spre stnga i adunarea rezultatelor obinute. Pentru aceasta se parcurge nmulitorul de la dreapta la stnga cifr cu cifr. Pentru fiecare cifr unu a nmulitorului se scrie denmulitul deplasat spre stnga cu un numr de cifre egal cu rangul cifrei unu a nmulitorului. La final se sumeaz rezultatele obinute. 2) S se efectueze nmulirea numrului 101101 cu numrul 1101. Vom aplica metoda deplasrii spre stnga a denmulitului i adunarea irurilor obinute. denmulitul deplasat la stnga cu 0 pai denmulitul deplasat la stnga cu 2 pai denmulitul deplasat la stnga cu 3 pai rezultatul (suma) 101101 101101 101101 1001001001

Verificarea n zecimal: 101101b = 45z, 1101b = 13z, 1001001001b = 585z. Rezult: 45z x 13z = 585z. 16

2.2.4. mprirea ntreag Operaia de mprire poate fi descris cu ajutorul celor patru combinaii posibile ntre dou numere binare: 0 : 0 = 0; 0 : 1 = 0; 1 : 0 = imposibil; 1 : 1 = 1. Operaia de mprire se efectueaz identic cu cea din baza zece. Vom analiza n continuare cteva exemple. EXEMPLE 1) S se efectueze mprirea numrului 11010110101 cu 1011. 11010110101 1011 1011 10011100 0010011 1011 10000 1011 001011 1011 000001 Rezultatul este: 10011100 rest 1. Verificarea n zecimal: 11010110101b = 1717z, 1011b = 11z, 10011100b = 156z. 1717z : 11z = 156z rest 1. Din acest exemplu se observ faptul c operaia de mprire ntreag se reduce la operaii succesive de deplasare la dreapta a mpritorului i scderi din demprit, ncepnd de la cifrele de rang maxim ale dempritului. Se continu cu dempritul nemodificat dac rezultatul scderii este negativ sau cu rezultatul scderii dintre demprit i mpritor dac rezultatul scderii este zero sau pozitiv. La fiecare scdere se noteaz cifra ctului care este unu dac rezultatul scderii este zero sau pozitiv (scderea se poate efectua) sau zero dac rezultatul scderii este negativ (scderea nu se poate efectua). Operaia de scdere se oprete cnd se efectueaz o scdere din bitul de rang zero al dempritului. Valoarea dempritului rmas constituie restul mpririi. 2) S se efectueze mprirea dintre numerele 111101101 si 101. Vom apela la procedeul deplasrii la dreapta a mpritorului i scderea din demprit. 111101101 101 010

- rezultatul scderii este pozitiv deci se continu cu valoarea rmas n urma scderii i se face o deplasare la dreapta; ct = 1

17

010101101 101 0000 000001101 101 000001101 101 000001101 101 000001101 101 001 000000011 101

- rezultatul scderii este zero deci se continu cu valoarea rmas n urma scderii i se face o deplasare la dreapta; ct = 11 - rezultatul scderii este negativ deci nu se efectueaz scderea i se face deplasarea dreapta a mpritorului; ct = 110 - rezultatul scderii este negativ deci nu se efectueaz scderea i se face deplasarea dreapta a mpritorului; ct = 1100 - rezultatul scderii este negativ deci nu se efectueaz scderea i se face deplasarea dreapta a mpritorului; ct = 11000 - rezultatul scderii este pozitiv deci se continu cu valoarea rmas n urma scderii i se face o deplasare la dreapta; ct = 110001

- rezultatul scderii este negativ deci nu se efectueaz scderea; ct = 1100010 iar restul este 11 deoarece s-a ncercat scderea din cifra de rang zero a dempritului. Verificarea n zecimal: 111101101b = 493z, 101b = 5z, 1100010b = 98z, 11b = 3z. 493z : 5z = 98z rest 3z.

2.3.

Operaii aritmetice cu numere reprezentate n octal i hexazecimal

Reprezentarea numerelor n octal sau hexazecimal se face, aa cum s-a artat, n scopul creterii claritii reprezentrii valorilor numerice. Trebuie subliniat aici, nc o dat, c n sistemele numerice de calcul, singurul mod de reprezentare a informaiei este cel binar. Utilizarea altor baze de numeraie cum sunt cel octal sau cel hexazecimal se face doar n scopul creterii claritii documentaiei nsoitoare. Baza de numeraie opt i baza de numeraie aisprezece au avantajul c au baze puteri a lui doi i din acest motiv permit scrierea condensat i comod a numerelor binare. Toate operaiile efectuate n alt baz de numeraie dect baza zece se bazeaz pe principii similare, aa cum s-a vzut i la descrierea operaiilor aritmetice n baza doi. Este important de reinut faptul c atunci cnd rezultatul adunrii depete ca valoare valoarea bazei se produce un transport n rangurile superioare iar cnd se efectueaz scderea unui numr mai mare dintr-un numr mai mic se produce un mprumut de la rangurile superioare (identic cu ceea ce deja tim de la operaiile n baza zece). Cele mai importante operaii efectuate n octal sau n hexazecimal sunt cele de adunare i de scdere. Din acest motiv vom exemplifica pe scurt, n continuare modul n care se efectueaz aceste operaii n cele dou baze de numeraie. 18

2.3.1. Adunarea i scderea n octal Adunarea, exemple 1) S se adune numerele reprezentate n baza opt 723o cu 523o. transport 1 723o + 523o 1446o n rangul doi, la adunarea cifrelor 7o cu 5o se produce un transport deoarece 7z + 5z = 12z este o valoare mai mare dect valoarea bazei care este 8. n acest caz se procedeaz astfel: se scade din valoarea obinut valoarea bazei 12z 8z = 4z, valoarea respectiv se scrie pe rangul doi i avem un transport la rangul 3. Trebuie inut cont de faptul c n octal: 7o + 1o = 10o. 2) S se efectueze adunarea n octal 375o + 276o. transport 11 375o + 276o 673o

Scderea, exemple 1) S se efectueze scderea n octal: 532o 251o. 1 532o 251o 261o La scderea de pe rangul unu: 3o 5o, trebuie s se efectueze un mprumut din rangul superior. O cifr mprumutat din rangul superior nseamn opt uniti n rangul inferior. Deci, n urma mprumutului, avem: 8z + 3z 5z = 6z. 2) S se scad n octal din 453o 264o. mprumut 11 453o 264o 167o mprumut

Verificarea n zecimal este imediat dac se face conversia din baza opt n baza zece utiliznd relaia: valoare zecimal = on-1 8n-1 + on-2 8n-2 + .... + o1 81 + o0 80 19

unde: o0, o1, o2, , on sunt cifrele numrului n baza opt. 2.3.2. Adunarea i scderea n hexazecimal Avnd n vedere faptul c operaiile sunt similare cu cele din octal, cu excepia faptului c baza are valoarea aisprezece, vom prezenta numai cte un exemplu pentru adunare i unul pentru scdere. Adunare, exemplu S se adune numerele n hexazecimal: 2A57h + 57B9h transport 111 2A57h + 57B9h 8210h

n acest caz depirea se produce cnd suma este mai mare dect aisprezece. De exemplu, 7z + 9z = 16z = 10h Scdere, exemplu S se efectueze scderea: 5C2Bh 3ACFh. mprumut 11 5C2Bh 3ACFh 215Ch

n cazul mprumutului, de pe rangul superior se mprumuta aisprezece uniti. De exemplu, n cazul Bh Fh, avem un mprumut i se obine: 16z + 11z (Bh) 15z (Fh) = 12z (Ch).

20

CAPITOLUL 3 ARHITECTURA SISTEMELOR DE CALCUL


3.1. Introducere

Un sistem de calcul reprezint o main automat destinat prelucrrii informaiilor. O astfel de main va interaciona cu mediul extern pentru preluarea informaiilor de intrare i furnizarea informaiilor rezultate n urma prelucrrii informaiei de intrare. Prelucrarea informaiei se face ntr-un anumit scop ceea ce determin o anumit activitate intern a sistemului de calcul. n acest moment putem distinge mai multe faze ale prelucrrii informaiei de ctre un sistem de calcul. n primul rnd informaia prezentat la intrarea sistemului de calcul reprezint n accepia general un semnal. Acest semnal are un suport fizic i este reprezentat de o mrime electric, mecanic, optic etc. O astfel de mrime este descris de anumii parametri msurabili i are un suport energetic care permite interaciunea cu aceast mrime. O astfel de mrime trebuie s fie transformat (adaptat) n aa fel nct aceasta s fie compatibil cu formatul de intrare acceptat de sistemul de calcul. n al doilea rnd informaia o data prelucrat de sistemul de calcul trebuie furnizat mediului extern ntr-un anumit format impus de aplicaia pentru care se efectueaz prelucrarea informaiei. Este limpede c va fi necesar o nou transformare a informaiei din formatul furnizat la ieire de ctre sistemul de calcul n formatul impus de aplicaie. n sfrit, n afar de cele dou faze ce implic transformri ale suportului informaiei, putem distinge i a treia faz, cea a prelucrrii interne, n sistemul de calcul a informaiei. Pentru a asigura o flexibilitate ct mai mare a unui astfel de sistem, cele trei faze ale prelucrrii informaiei vor fi asigurate de ctre elemente diferite. Astfel, o anumit modificare ce s-ar impune pe parcurs nu va afecta dect un anumit element din structura sistemului. n prezent, cele trei faze ale prelucrrii informaiei, sunt realizate astfel: transformarea semnalelor ntr-un format compatibil cu cel acceptat de intrarea sistemului de calcul i transformarea informaiei furnizate de sistemul de calcul n semnale necesare aplicaiei, este realizat de ctre dispozitivele periferice. Acestea, dei sunt strns legate de funcionarea sistemului de calcul sunt considerate elemente externe sistemului de calcul; prelucrarea intern n sistemul de calcul a informaiei va fi faza de prelucrare a informaiei care determin o anumit structur a sistemului de calcul. Aceast structur va fi completat cu elemente de legtur cu dispozitivele periferice, elemente ce poart denumirea generic de interfee. 21

Pentru nceput ne vom ocupa de structura intern a sistemului de calcul ce constituie arhitectura intern a acestuia dup care se vor discuta cteva aspecte legate de periferice ntregul reprezentnd arhitectura unui sistem de calcul. Din punct de vedere al tipului informaiei prelucrate n sistemul de calcul, aceste pot fi de dou tipuri: calculatoarele analogice care prelucreaz semnale continue n timp, adic semnale ce sunt descrise de o funcie continu de timp; calculatoare numerice ce prelucreaz numere, adic informaia prezentat n format numeric.

ntre aceste dou tipuri de calculatoare exist deosebiri eseniale dei amndou sunt destinate prelucrrii informaiei. Primul aspect se refer la tipul informaiei prelucrate. Dac la calculatoarele analogice informaia trebuie s aib un anumit nivel al suportului energetic pentru ca aceasta s poat fi prelucrat, la calculatoarele numerice informaia este lipsit de suportul energetic fiind reprezentat de elemente abstracte cum sunt numerele. Acest lucru aduce o serie de avantaje importante n favoarea calculatoarelor numerice ceea ce face ca utilizarea acestora s fie din ce n ce mai rspndit. Pentru a lmuri lucrurile vom considera un exemplu simplu. Un instrument de msur a tensiunii (voltmetru) poate fi considerat ca un sistem de calcul foarte simplu. Un astfel de instrument preia o informaie din mediul extern (tensiunea electric), o adapteaz la formatul acceptat la intrare (de regul printr-un divizor de tensiune), prelucreaz informaia (prin comparare cu un element etalon) i furnizeaz la ieire o informaie compatibil cu aplicaia (n cazul cel mai simplu afind rezultatul msurtorii ntr-un anumit fel). n cazul unui voltmetru analogic (cu instrument de msur) informaia de intrare trebuie s furnizeze o anumit energie pentru ca msurtoarea s poat fi efectuat (aceast energie preluat de la semnalul msurat va determina o deplasare a acului indicator proporional cu mrimea msurat). n cazul unui voltmetru numeric prelucrarea informaiei se face n principal prin transformarea acesteia ntr-o valoare numeric. Din acest motiv energia preluat de la semnalul de intrare va fi cu mult mai mic (aceast energie nemaijucnd nici un rol n prelucrarea semnalelor). Vom aminti numai dou din concluziile ce pot fi desprinse din acest exemplu: msurtoarea efectuat cu un instrument numeric este mai precis prin scderea cantitii de energie preluate de la semnalul de intrare (cunoscndu-se faptul c preluarea unei anumite cantiti de energie din semnalul de msurat duce la alterarea acestuia) i mrimile reprezentate prin numere cum sunt cele de la voltmetrul numeric nu pot fi influenate de condiiile de mediu (temperatur, presiune, umiditate etc) cum sunt cele analogice prezente n cazul voltmetrului analogic. Aa cum s-a afirmat, n interiorul sistemului de calcul se realizeaz o anumit prelucrare a informaiei. Este important de vzut n ce fel anume se realizeaz aceast prelucrare. Dac ne gndim la exemplul de mai sus este limpede c voltmetrul analogic ndeplinete o anumit funcie prin modul n care este construit adic prin conexiunile electrice existente ntre elementele componente. Un astfel de sistem se numete cu logic cablat adic modul de prelucrare a informaiei este determinat de modul 22

particular de conectare a elementelor componente. Acelai lucru se poate realiza i n cazul unui sistem numeric i deci i astfel de sisteme pot fi n logic cablat. Un sistem realizat n logic cablat nu va putea ndeplini dect o anumit funcie (n exemplul nostru, nu ne vom putea gndi s folosim voltmetrul la altceva dect la msurarea tensiunii) cea pentru care s-a realizat un anumit mod de conectare ntre elementele componente. Rezult c un sistem n logic cablat este lipsit de flexibilitate, modificarea funciei ndeplinite presupunnd (cel puin) modificarea conexiunilor existente i (eventual) necesitatea adugrii unor componente noi. Un astfel de sistem are totui avantajul simplitii n sensul c el nu va conine dect elementele componente strict necesare aplicaiei particulare pentru care este destinat. Sistemele numerice prin faptul c prelucreaz informaia sub form numeric permit realizarea unor structuri generale, independente de aplicaia pentru care vor fi folosite. n aceast situaie prelucrarea intern a informaiei nu mai este legat de conexiunile existente ntre elementele structurii fizice. Pe aceast structur fizic generic (independent de aplicaie) prelucrarea informaiei se va face pe baza unui program (list de comenzi) ce se va afla n memoria sistemului de calcul. Astfel de sisteme se numesc cu logic programat. Ele sunt flexibile (schimbarea programului nseamn schimbarea sau modificarea aplicaiei pentru care sunt destinate) dar i redundante n sensul c structura fizic general poate avea mai multe elemente dect sunt necesare pentru o anumit aplicaie. Calculatoarele analogice nu pot fi construite dect n logic cablat pe cnd cele numerice pot fi construite att n logic cablat ct i n logic programat. Trebuie precizat aici faptul c, dei n cazul calculatoarelor numerice n logic programat se vorbete de o structur fizic general, aceasta nu poate fi total independent de aplicaia (sau familia de aplicaii) pentru care este folosit calculatorul respectiv. Dei varianta de sistem de calcul n logic programat prezint o serie de avantaje ce au dus la dezvoltarea rapid i extinderea aplicrii acesteia n cele mai variate domenii, calculatoarele analogice rmn importante i cu aplicaii extinse. Revenind la structura unui sistem de calcul n logic programat, existena programului indic faptul c trebuie s existe un element care s poat nelege i executa comenzile existente n acest program. Acest element se numete unitate central i pe lng funciile amintite va mai avea i alte sarcini n sistemul de calcul. Din cele prezentate s-a conturat o structur general a unui sistem de calcul numeric n logic programat i care trebuie s conin: unitatea central, memoria i interfeele. Intern, un calculator prelucreaz mai multe fluxuri de informaie dintre care principalele fluxuri sunt reprezentate de datele numerice i de instruciunile programului. Dup modul de prelucrare al acestor fluxuri informaionale calculatoarele se pot clasifica n: maini de tip SISD (Single Instruction Single Data) care prelucreaz la un moment dat o singur instruciune program i o singur valoare numeric; maini de tip SIMD (Single Instruction Multiple Data) care prelucreaz la un moment dat o singur instruciune program dar mai multe fluxuri de date numerice; 23

maini de tip MIMD (Multiple Instruction Multiple Data) care prelucreaz la un moment dat mai multe instruciuni program i mai multe date numerice.

Mainile de tip SIMD sau MIMD fac parte din categoria calculatoarelor paralele care pot prelucra n paralel mai multe fluxuri de informaie. Din punct de vedere al puterii de calcul, n prezent calculatoarele se clasific astfel: microsisteme, sisteme simple bazate pe un microcontroler (calculator integrat), un procesor de semnal DSP (microcontroler destinat prelucrrii digitale a semnalelor) sau un microprocesor (unitate central integrat pe un singur chip) destinate automatizrilor, dispozitivelor periferice, bunurilor de lar consum, comunicaiilor etc; calculatoare personale (PC Personal Computer), pentru un singur utilizator, construite pe baza unui microprocesor. Aceste maini sunt de cele mai multe ori de tipul SISD sau SIMD i sunt prevzute cu dispozitive de intrare (de exemplu: tastatur, mouse, joystick, scanner, etc.) pentru introducerea datelor de intrare, dispozitive de ieire (de exemplu: display, imprimant, plotter, etc.) pentru prezentarea datelor de ieire i dispozitive de stocare a datelor de intrare i de ieire (discuri, band magnetic, disc optic, etc.); staii de lucru (WS - WorkStation), pentru un singur utilizator, similare calculatoarelor personale dar dotate cu microprocesoare mai puternice i cu monitoare de calitate fiind destinate prelucrrilor complexe; minicalculatoarele, destinate mai multor utilizatori suportnd de la 10 la cteva sute de utilizatori simultan. Sunt maini de tip MIMD; calculatoare de tip mainframe, calculatoare mai puternice dect minicalculatoarele, destinate utilizrii simultane de ctre mai muli utilizatori (multi user) putnd suporta de la cteva sute la cteva mii de utilizatori; supercalculatoarele, calculatoare extrem de rapide care pot executa sute de milioane de instruciuni pe secund.

Avnd n vedere importana unei astfel de sistem de calcul ct i perspectivele de dezvoltare i aplicare, n continuare vom discuta principalele probleme legate de arhitectura acestora. Sistemele de calcul n logic programat, larg rspndite n prezent, folosesc dou tipuri de arhitecturi: arhitectura von Neumann i arhitectura Harvard. Aceste arhitecturi se numesc arhitecturi secveniale, care au o singur unitate central i care execut n mod secvenial programul aflat n memorie spre deosebire de arhitecturile paralele care sunt structuri realizate cu dou sau mai multe uniti centrale.

24

3.2. Arhitectura von Neumann


Cea mai simpl structur (structura minimal) a unui sistem de calcul este prezentat n figura 3.1.
n m p Magistrala de adrese Magistrala de date Magistrala de comenzi

UNITATE CENTRAL

MEMORIE

PORTURI (INTERFEE)
q

Sistem de calcul Mediul extern

PERIFERICE

Fig. 3.1. Structura general a unui sistem de calcul Structura prezentat este structura minimal a unui sistem de calcul numeric numit i arhitectur von Neumann. Evident, structura unui sistem de calcul poate conine i alte elemente care vor duce la ridicarea performanelor sistemului de calcul dar elementele prezentate n structura de mai sus sunt indispensabile funcionrii unui sistem numeric n logic programat. Trebuie observat faptul c aceast structur nu este legat de o anume aplicaie ci ea este determinat doar de modul de funcionare al unui sistem numeric n logic programat (main von Neumann n acest caz) si va acoperi o arie larg de aplicaii. Elementele componente ale acestei structuri vor fi prezentate n continuare. Unitatea central care are rolul de comand i control a sistemului de calcul i de execuie a programelor ce se gsesc n memorie. Un calculator poate avea o singur unitate central (in cele mai multe din cazuri) sau mai multe uniti centrale ce lucreaz n paralel. Sistemele de calcul cu o singur unitate central se numesc monoprocesor iar activitatea de prelucrare se numete monoprocesare iar cele care au mai multe uniti de calcul ce lucreaz n paralel se numesc multiprocesor iar activitatea de prelucrare a informaiei se numete multiprocesare. Din cauz c n continuare ne vom referi numai la calculatoarele monoprocesor nu se va mai specifica acest lucru explicit. Memoria care are rolul de a stoca (pstra) programe i date. Porturile sau interfeele care au rolul de a realiza schimbul de informaie dintre sistemul de calcul i mediul extern prin trensformarea i adaptarea semnalelor conform cerinelor. Toate aceste elemente, care sunt realizate cu ajurorul unor circuite integrate pe scar larg i foarte larg, sunt legate ntre ele prin intermediul unor conexiuni electrice. Prin aceste conexiuni circul semnale electrice care au o anumit semnificaie din punct de vedere al informaiei codificate (binar). Din acest motiv, conexiunile electrice sunt grupate dup semnificaia informaiei vehiculate i un astfel de grup poart numele de 25

magistral (bus). Avem trei tipuri principale de magistrale: magistrala de adrese, magistrala de date i magistrala de comenzi. Fiecare din aceste magistrale este alctuit, aa cum s-a artat, din mai multe conexiuni electrice. n figura noastr, magistrala de adrese are n linii, magistrala de date are m linii iar magistrala de comenzi are p linii. Perifericele nu aparin structurii sistemului de calcul dar sunt menionate aici deoarece sunt indispensabile funcionrii unui calculator. Vorbind la modul general, un periferic realizeaz conversia unei anumite forme de energie n energie electric. Spre exemplu, tastatura, care este un periferic transform energia mecanic cu care apsm tastele ntr-un semnal electric care este preluat de ctre interfa i adaptat formatului intern propriu sistemului de calcul, iar monitorul (display-ul) transform energia electric n energie luminoas. Se observ c interfeele sunt legate la rndul lor la periferice prin intermediul unor magistrale (de dimensiune q n figura noastr). Aceste magistrale sunt de diferite tipuri, au diferite dimensiuni i poart diferite denumiri legate de tipul interfeei la care sunt legate. Elementele care alctuiesc structura sistemului de calcul se mpart n dou categorii: elemente de comand (master) i elemente comandate (slave). ntr-o structur de calcul vom recunoate uor elementele de comand prin faptul c acestea pot genera adrese (sensul sgeii magistralei de adrese este dinspre modulele de comand spre cele comandate).

3.3.

Arhitectura Harvard
Structura simplificat a arhitecturii Harvard este prezentat n figura 3.2.
magistral de adrese de date m p magistral de date 2 magistral de comenzi

magistral de adrese de program magistral de date 1 magistral de comenzi t

r s

UNITATE CENTRAL

MEMORIE DE PROGRAM

MEMORIE DE DATE

PORTURI q PERIFERICE

Microcontroler

Figura 3.2. Arhitectura Harvard.

Principala caracteristic a acestui tip de arhitectur este reprezentat de utilizarea n structura sistemului de calcul a dou memorii cu destinaii diferite: o memorie de program i o memorie de date. Acest lucru permite suprapunerea ciclului de extragere a codului operaie din memorie cu ciclul de citire/scriere n memorie ceea ce duce la 26

creterea corespunztoare a vitezei de lucru. De asemenea astfel de sisteme folosesc cuvinte de lungimi diferite pentru codul instruciunii i pentru date (de exemplu, coduri de instruciuni pe 14 bii i date pe 8 bii) ceea ce permite utilizarea unui set complex de instruciuni. Utilizarea memoriilor cu destinaii diferite presupune existena unei magistrale de adrese de program i a unei magistrale de adrese de date i, de asemenea, existena unei magistrale de date pentru program pe care sunt aduse codurile de instruciune i a unei magistrale de date pentru datele programului (fiecare dintre aceste magistrale putnd avea dimensiune diferit). O astfel de arhitectur este utilizat cu precdere n structura procesoarelor de semnal (DSP Digital Signal Processor) sau a microcontrolerelor de tip Microchip PIC, Atmel AVR etc. n astfel de sisteme, programul i datele acestuia sunt stocate n memorii diferite. De regul memoria program este o memorie de tip FLASH n aa fel nct programul s nu se tearg la ntreruperea tensiunii de alimentare iar datele sunt stocate n memorii de tip RAM static i memorii de tip EEPROM. Asfel de sisteme reprezint microcalculatoare integrate care au unitatea central, memoria i porturile realizate pe un singur circuit integrat. Un calculator poate avea mai multe magistrale de acelai tip care se deosebesc prin viteza de variaie (frecvena) a semnalelor care parcurg aceste magistrale, dimensiunea i destinaia acestora. Din cauz c diferitele elemente conectate la magistral au viteze de lucru diferite, elementele mai lente (cu vitez de lucru mai sczut), vor impune frecvena maxim pe magistrale. Pentru creterea performanelor unui calculator, magistralele se realizeaz pe mai multe nivele cu frecvene de lucru diferite. Astfel, pe magistrala cu viteza cea mai mare se conecteaz de obicei unitatea central i memoriile rapide iar pe magistralele cu vitez mai sczut se conecteaz memoriile lente i porturile. Comunicaia ntre magistralele ce lucreaz la frecvene diferite se realizeaz cu ajutorul unor circuite integrate specializate numite controlere de magistral. Rezult c un criteriu de performan a unui calculator este reprezentat de frecvena maxim a magistralelor interne. Diferitele structuri particulare de calculatoare pot conine i alte elemente n afar de cele prezentate n figura 3.1, n scopul creterii performanelor calculatorului sau datorit destinaiei acestuia. Dintre aceste elemente suplimentare cele mai uzuale sunt: circuitul de acces direct la memorie (DMA), controlerul de ntreruperi, controlerul video i controlerul de comunicaie. Este de remarcat aici faptul c n cazul calculatoarelor de proces apar n plus ceasul de timp real i ceasul de gard (watchdog timer) necesare rulrii n timp real a aplicaiilor. n figura 3.3 este prezentat schema bloc a unui calculator de proces. n aceast figur se vede c sistemul este organizat n jurul a mai multor magistrale. Pe magistrala A se afl sistemul de calcul propriu-zis iar pe magistrala B se afl circuitele de interfa cu procesul. Fiecare dintre magistrale sunt alctuite, la rndul lor, din mai multe magistrale care nu sunt artate n figur. Pentru a evita confuziile, trebuie menionat faptul c n figura 3.3, printr-un abuz de limbaj, unitate central este denumit placa electronic, notat cu 880-P, ce conine att unitatea central propriu-zis ct i porturi de intrare/ieire. Tot aa, prin extinderea acestei expresii, unitate central este denumit cutia sau dulapul n care se afl aceast component din structura sistemului de calcul. 27

Fig. 3.3. Structura unui calculator de proces

28

CAPITOLUL 4 UNITATEA CENTRAL


4.1. Introducere

Unitatea central reprezint componenta principal a sistemului care coordoneaz toate activitile acestuia. De performanele unitii centrale depind n mod esenial performanele calculatorului. La calculatoarele personale unitatea central este reprezentat de un singur circuit integrat numit microprocesor. Staiile de lucru conin unul, dou sau mai multe microprocesoare, conectate ntr-o arhitectur scalar, care lucreaz n paralel. n cazul minicalculatoarelor, a calculatoarelor mainframe sau a supercalculatoarelor, unitatea central este realizat cu ajutorul mai multor componente. De obicei sunt utilizate integrate de Fig. 4.1. Circuit integrat tip bit-slice care reprezint o parte (felie) dintr-o unitate central. Prin conectarea n paralel a mai multor astfel de circuite se obin uniti centrale cu diferite performane. Aceste uniti sunt microprogramabile de ctre utilizator ceea ce le confer flexibilitate n exploatare dar complic procesul de proiectare. Microprogramarea este o metod de realizare a automatelor de comand prin nscrierea programelor acestora ntr-o memorie. Prin microprogramare se obin microprograme, constituite din microinstruciuni. Microprogramarea presupune o cunoatere de detaliu a echipamentului cruia i sunt destinate microprogramele. Spre deosebire de marea majoritate a altor metode de programare instruciunile utilizate n microprogramare conin att codul operaiei ct i eventualii operatori, ct i adresa instruciunii urmtoare. n figura 4.1 este prezentat modul de realizare a unui circuit integrat. Principalele mrimi caracteristice ale unei Fig. 4.2. Microprocesorul uniti centrale sunt reprezentate de: setul de INTEL 486 instruciuni, numrul de bii prelucrai simultan (lrgimea magistralei de date) i frecvena de ceas (viteza la care funcioneaz unitatea central). Din punct de vedere al setului de instruciuni, unitile centrale sunt de dou categorii: uniti centrale de tip RISC (Reduced Instruction Set Comuter) cu un numr 29

relativ redus de instruciuni i uniti centrale de tip CISC (Complex Instruction Set Computer) cu un numr mare de tipuri de instruciuni. Unitile de tip RISC sunt ieftine i foarte rapide din cauz c setul simplu de instruciuni le permite execuia cu vitez mare a programului. Unitile centrale de tip CISC au avantajul posibilitilor extinse de lucru datorit setului complex de instruciuni iar n ultimul timp, ele sunt un concurent serios, la vitez, al unitilor centrale de tip RISC. Cunoscutul microprocesor al firmei INTEL, Pentium, este considerat ca fiind o unitate central de tip CISC dei conine n arhitectura sa multe elemente ale unei maini RISC. n figura 2.4 este prezentat microprocesorul INTEL 486. Numrul de bii prelucrai simultan de unitatea central reprezint de fapt limea magistralei de date din cauz c pe aceast magistral sunt vehiculate date i instruciuni. Limea magistralei de date este de regul un multiplu de opt, n prezent fiind ntlnite n mod uzual uniti centrale ce lucreaz pe 8, 16, 34, 64, 128 sau 256 de bii. Frecvena semnalului de tact (semnalul de ceas) aplicat unitii centrale reprezint de asemenea un criteriu de performan a acesteia. Avnd n vedere faptul c o instruciune este executat de unitatea central n una sau mai multe perioade de ceas, rezult c viteza de calcul crete odat cu creterea frecvenei de ceas. n prezent calculatoarele personale performante utilizeaz frecvene de tact de pn la 600MHz cu perspective de a ajunge la 1GHz. Aceste criterii de performan nu sunt absolute din cauz c ele depind n mare msur de arhitectura unitii centrale. Astfel, spre exemplu, dou uniti centrale cu aceeai frecven de ceas, pot merge cu viteze diferite, datorit structurii interne, cu pn la de 20 de ori. Un alt criteriu de performan l reprezint dimensiunea memoriei interne, memoria cache, a unitii centrale. Memoria cache este o memorie foarte rapid care este folosit ca intermediar ntre unitatea central i memoria principal a sistemului. Aceast memorie poate fi att intern (n structura unitii centrale) ct i extern. Din acest motiv se spune c memoria cache este organizat pe nivele. Cu ct dimensiunea memoriei cache interne este mai mare, cu att performanele unitii centrale vor fi mai bune. Alte criterii de performan ce pot fi luate n considerare n cazul unitilor centrale sunt: numrul maxim adresabil de porturi de intrare/ieire, numrul i dimensiunea registrelor interne, i modalitile de adresare. O unitate central execut o instruciune n unul sau mai muli cicli main. Un ciclu main reprezint o activitate elementar a unitii centrale (extragerea din memorie a codului operaiei, citire/scriere din/n memorie, citire/scriere din/n port, achitare cerere ntrerupere etc. Un ciclu main poate dura una sau mai multe perioade a ceasului de comand al unitii centrale. Pentru determinarea performanelor unitilor centrale se folosete o metod bazat pe determinarea numrului de operaii n virgul mobil (floating-point operations) executate de aceasta ntr-o secund. Unitatea de msur este FLOPS (FLoating-point Operations per Second), n mod obinuit performanele unitilor centrale fiind msurate n megaFLOPS sau gigaFLOPS. 30

La punerea sub tensiune unitatea central pornete dintr-o stare iniial cunoscut ncepnd s execute programul aflat n memorie de la o adres bine precizat. Pe timpul execuiei unui program unitatea central poate ajunge dintr-un motiv sau altul ntr-o stare nedorit care s afecteze modul corect de funcionare al calculatorului. n aceste situaii unitatea central trebuie readus n starea iniial. Acest lucru se face fie n mod automat de ctre circuitele specializate ale calculatorului fie de ctre utilizator prin apsarea unui buton (RESET). Este evident faptul c iniializarea unitii centrale poate fi fcut i prin ntreruperea tensiunii de alimentare dar acest lucru este nerecomandabil de cele mai multe ori pentru c se pot pierde informaii n curs de prelucrare de ctre periferice i/sau informaii legate de prelucrrile curente. De asemenea ocurile termice i de tensiune ce apar la pornirea calculatorului nu recomand folosirea acestui procedeu pentru reiniializarea unitii centrale. Butonul de iniializare a unitii centrale (RESET) este marcat uneori i cu simbolul: . Datorit dezvoltrii spectaculoase a microsistemelor i datorit faptului c unitile centrale a acestora, microprocesoarele, beneficiaz de o ntreag gam de inovaii tehnologice, ne vom concentra atenia asupra unitilor centrale de tip microprocesor. Principalele avantaje oferite de microsisteme fa de sistemele convenionale sunt: costul sczut al hardware-ului; sigurana n funcionare mbuntit; interferene electromagnetice sczute - nivelul larg de integrare evit influenele electromagnetice chiar i la nivele mari de variaie ale tensiunii i curentului prin circuitele electronice de putere. n general pentru protecie este suficient ecranul cu care prevzut componenta. Zgomotul de cuplare cu sursele de alimentare i semnalele de intrare poate fi minimizat printr-o bun filtrare analog-digital; absena mprtierii sau a variaiei parametrilor; compatibilitate cu controlul digital ierarhic; hardware i software universal; posibilitatea de diagnostic i autodiagnostic.

Principalele dezavantaje prezentate de ctre microsisteme sunt: viteza de rspuns (calcul) este n unele cazuri insuficient pentru elaborarea unui rspuns n timpul ateptat; eroarea de cuantizare - eroarea de cuantizare poate fi micorat prin creterea numrului de bii ai cuvintelor microsistemului i ai convertorului A/D; lipsa de acces la semnale software - nu se pot efectua msurtori cu osciloscopul asupra semnalelor software i deci trebuie concepute msuri adecvate de depanare. dezvoltarea software-ului poate fi uneori scump.

n cazul microsistemului cu microprocesor unitatea central i celelalte elemente ale microsistemului sunt componente distincte fapt ce particip la flexibilitatea soluiei. n 31

cazul microcontrolerelor ntr-o singur component sunt integrate pe lng unitatea central i o parte din elementele microsistemului. Dei microcontrolerele prezint o flexibilitate mai redus ele prezint avantajul miniaturizrii i a preului de cost sczut.

4.2.

Microprocesorul microprocesor)

universal

(structura

general

unui

Structura unui microprocesor cuprinde: o unitate aritmetic i logic, avnd drept scop efectuarea de operaii aritmetice i logice elementare; un set de registre pentru memorarea temporar i manipularea cu vitez ridicat a unui numr relativ mic de rezultate intermediare; un bloc de comand i secveniere care asigur desfurarea ordonat a tuturor operaiilor n interiorul microprocesorului, precum i comunicaia acestuia cu lumea exterioar; un bloc de decodificare a instruciunii curente, care interpreteaz instruciunea n curs i determin aciunile ce se impun; un bloc de tratare a cererilor de ntrerupere utilizat pentru luarea n considerare a evenimentelor asincrone fa de desfurarea programului; tampoane ntre microprocesor i magistralele sistemului. Microprocesoarele din ultimele generaii au inclus i un coprocesor matematic ce le permite realizarea unor calcule matematice complexe cu vitez ridicat i memoria cache. Structura de principiu a microprocesorului universal este prezentat n figura 4.3.

Fig.4.3. Schema bloc a microprocesorului universal

Aceast structur este format din urmtoarele elemente componente: RALU - unitatea logic i aritmetic i registrele de uz general i special; AC - automatul de control; RI - registrul de instruciune; RS - registrul de stare; MUX - un grup de multiplexoare ce asigur o parte din comenzile la bornele RALU de la AC sau RI, sub controlul (selecia) semnalelor din AC. Semnalele interne care asigur funcionarea sistemului sunt urmtoarele: 32

comenzi, generate de AC ctre subansambluri sau ctre exterior; instruciuni, generate din RI ctre AC i prin intermediul MUX, ctre RALU; indicatori, generai de ALU din RALU ctre RS; date - reprezint un bus intern bidirecional pe care sunt cuplate RALU, RS i RI (unidirecional); adrese - cale de adrese ce se emite n exterior din RALU pentru controlul dispozitivelor de memorare exterioare microprocesorului. Semnalele la bornele microprocesorului sunt urmtoarele: adrese - cale unidirecional; date - cale bidirecional; semnale de sincronizare: - READ - semnal ce comand citirea de la adres configuraiei binare de pe calea date; - WRITE - semnal ce comand la adres a configuraiei binare de pe calea date; - WAIT - semnal recepionat ce impune trecerea microprocesorului ntr-o stare de ateptare drept urmare a unei comenzi READ sau WRITE ce nu a fost nc executat; - INT - semnal de ntrerupere a crui recepionare stopeaz procesul curent de calcul pentru a da curs unui eveniment exterior sistemului; - INTA - semnal ce indic luarea n consideraie a semnalului de ntrerupere INT; ca urmare a acestui semnal, dispozitivul ce a activat INT va genera pe date o configuraie binar specific; - RESET - semnal de iniializare a funcionrii microprocesorului. Microprocesoarele sunt procesoare la care funcia de control intern este minimizat, n sensul c automatul de control AC este gndit foarte simplu. Procesoarele microprogramate se situeaz la extrema n care funcia de control intern are o pondere foarte important. Dac un microprocesor folosete ct mai direct codul instruciunii (biii din RI comand direct funcionarea RALU), n cazul imensei majoriti a instruciunilor, la o structur microprogramat, codul instruciunii acioneaz cu preponderen asupra automatului de control, declannd secvene complexe de comand.

4.3.

Caracteristicile principalelor tipuri de microprocesoare

n continuare sunt prezentate pe scurt principalele caracteristici ale unor tipuri reprezentative de microprocesoare. 4.3.1. Microprocesorul ZILOG Z80 Dei este un microprocesor care a aprut de o perioad de timp destul de lung el este unul dintre microprocesoarele pe 8 bii dintre cele mai populare. Pentru acest tip de microprocesor au fost dezvoltate o serie foarte mare de aplicaii ncepnd de la bunuri de larg consum pn la aplicaii industriale. 33

Microprocesorul Z80 mpreun cu componentele sale auxiliare formeaz o familie tipic pentru generaia de microprocesoare de 8 bii. Componentele din familie asigur posibilitatea realizrii tuturor funciilor clasice ale unui sistem cu microprocesor. Principalele caracteristici ale acestui microprocesor sunt: magistrala de date pe 8 bii; magistrala de adrese pe 16 bii; 12 registre de uz general pe 8 bii cu utilizare pe 16 bii, registre cu selectare alternant cte ase; 2 registre acumulator i 2 registre indicatori de condiii cu selectare alternant; 2 registre speciali, unul pentru determinarea vectorului de ntrerupere i unul pentru remprosptarea transparent a memoriei dinamice; 2 registre index pe 16 bii; o ntrerupere nemascabil i una mascabil cu un mecanism foarte flexibil de rspuns la cererea de ntrerupere; este capabil s execute operaii aritmetice (mai puin nmulirea i mprirea) i logice; frecven de tact maxim 6MHz.

4.3.2. Microprocesoarele INTEL 80x86 Familia microprocesoarelor INTEL s-a mbogit continuu cu noi membrii care au dus la creterea performanelor hardware i software a acestor componente. Principalul avantaj al acestei familii de microprocesoare este pstrarea compatibilitii software ntre diferitele generaii ncepnd cu microprocesorul 8086 ceea ce a permis dezvoltarea continu a aplicaiilor pentru aceste microprocesoare. ncepnd cu microprocesorul 80286 s-au introdus dou moduri de funcionare diferite: modul real (Real Address Mode) n care microprocesorul poate adresa ca i 80806 un spaiu de memorie de 1Mo i modul protejat (Protected Virtual Address Mode) n care spaiul adreselor fizice a crescut la 16Mo iar cel al adreselor virtuale la 1Go. Microprocesorul 80286 a fost proiectat pentru a permite (n mod protejat) sisteme multitasking, oferind cte un segment de stare ataat fiecrui task, care sunt structuri manevrate hardware i conin strile curente (incluznd toate registrele) ale taskurilor. Selectoarele acestor segmente de stare identific unic taskul ataat. De asemenea, este facilitat i comutarea taskurilor, care poate fi invocat printr-o singur instruciune. Fiecare task din sistem poate avea propriul lui spaiu de adrese logice. Microprocesorul 80286 ofer i un mecanism evoluat pentru comunicarea ntre taskuri, sincronizarea lor i partajarea memoriei. Istoria microprocesoarelor din familia 80x86 este strns legat de cea a coprocesoarelor matematice. Fiecrui element de baz din familie i-a fost asociat un coprocesor pentru a mbunti performanele sistemului de calcul. Pentru microprocesoarele 8086, 80286 i 80386 sunt folosite coprocesoarele 8087, 80287 i respectiv 80387. 34

Microprocesorul 80386 pe 32 de bii a fost proiectat pentru utilizarea n aplicaii intensive complexe. Datorit celor 32 de bii de adrese, spaiul adreselor fizice este de 4Go iar spaiul adreselor logice de 64To. Este prevzut cu microcod care suport direct aplicaii care utilizeaz ntregi mari, structuri complexe de date i un numr mare de programe. Microprocesorul are patru moduri distincte de funcionare: real, virtual 8086, protejat 286 i nativ 386. n figura 4.4 este prezentat schema bloc a microprocesorului 80386.

Fig. 4.4. Schema bloc a microprocesorului 80386

Microprocesorul 80486 ofer multe faciliti noi: o memorie cache de 8ko, o unitate de gestiune a memoriei compatibil 80386, un procesor 80386 i un subset 80387 pe un singur chip, ceea ce permite ca softul existent (fiind vorba de nalta compatibilitate) s ruleze mai repede pe 80486 dect pe perechea 80386-80387. Microprocesoarele de tip INTEL, ncepnd cu microprocesorul de tip 80386 au patru moduri de funcionare de baz: modul real, modul virtual i modul protejat. Avnd n vedere faptul c sistemul de operare DOS este destinat n exclusivitate microprocesoarelor de tip INTEL i datorit faptului c aceste mecanisme se ntlnesc i la alte tipuri de microprocesoare, ele vor fi descrise pe scurt n continuare. MODUL REAL. Acest mod este cel n care se intr dup iniializarea microprocesorului. De regul, sub sistemul de operare DOS microprocesorul se afl n modul real. Specific acestui mod de funcionare este faptul c microprocesorul nu poate rula dect un singur program odat. Exist posibilitatea rulrii programelor sub sistemul de operare DOS i n alte moduri ale microprocesorului, dar acest lucru necesit extensii ale sistemului de operare (existnd n acest sens programe specifice). MODUL VIRTUAL. Acest mod permite execuia programelor n contextul mecanismelor de protecie, gestiune a taskurilor i management al memoriei. Un program poate rula n mod virtual n paralel cu alte programe care ruleaz n mod protejat. De asemenea, pot fi executate deodat mai multe programe n mod virtual. Sistemul de operare Windows 9x se bazeaz pe acest mod performant de funcionare al 35

microprocesorului, permind execuia n paralel a mai multor programe (sesiuni DOS) ct i a mai multor programe Windows. MODUL PROTEJAT. n acest mod, microprocesorul emuleaz funcionarea unui microprocesor de tip 80286 n mod protejat. Modul protejat prezint un mecanism sofisticat pentru protejarea datelor, integritatea sistemului, concurena taskurilor i gestiunea memoriei incluznd i cea a memoriei virtuale. n modul protejat, n cazul microprocesorului 80286, spaiul adreselor fizice este mrit de la 1 Moctet la 16 Moctei, n timp ce spaiul adreselor virtuale a fost mrit la 1 Goctet. n acest mod, programele folosesc adrese virtuale, translatarea lor n adrese fizice fcndu-se automat pe baza unor tabele cu descriptori de segmente. Acest mecanism permite implementarea eficient a sistemelor cu memorie virtual n care utilizatorul vede memoria intern i cea extern ca o singur memorie. Modul protejat permite implementarea sistemelor multitasking, oferind cte un segment de stare ataat fiecrui task, care sunt structuri manevrate hardware i conin strile curente (incluznd toate registrele) ale taskurilor. Selectoarele acestor segmente de stare identific unic taskul ataat. De asemenea, este facilitat i comutarea taskurilor, care poate fi invocat printr-o singur instruciune. Fiecare task din sistem poate avea propriul lui spaiu de adrese logice, existnd de asemenea un mecanism evoluat pentru comunicarea ntre taskuri, sincronizarea lor, partajarea memoriei etc. MODUL NATIV. Acest mod folosete ntreaga putere a microprocesorului. Memoria virtual permite ca dimensiunea unui program s fie limitat de spaiul pe disc i nu de dimensiunea memoriei interne. Mecanismele de protecie sunt destul de puternice pentru a evita accidentele ntre taskuri sau ntre utilizatori. Spaiul de adrese al taskurilor este complet separat, segmentele sunt tipizate i au diferite drepturi de acces. De asemenea, se verific i depirea limitelor segmentelor. Exist trei nivele de prioritate, sistemul de operare avnd nivelul zero (cel mai prioritar), iar aplicaiile programatorilor avnd nivelul trei (cel mai puin prioritar). Microprocesorul INTEL Pentium Microprocesorul Pentium este integral compatibil cu procesoarele INTEL anterioare, dar se deosebete de acestea n multe privine. Cel puin una din aceste deosebiri este major: microprocesorul Pentium are dou canale identice de procesare a datelor, ceea ce i permite s execute dou instruciuni n acelai timp. Aceast capacitate de a executa simultan dou instruciuni este numit tehnologie superscalar (procesare paralel). Aceast tehnologie asigur performane suplimentare fa de cea a procesorului 486. Prin modul numit BTB (Branch Target Buffer) care utilizeaz o tehnic numit branch prediction (predicia salturilor) n scopul reducerii timpului de ateptare n canalele de procesare, cauzat de aducerea instruciunilor unei ramuri aflate la o alt locaie de memorie, se realizeaz la microprocesorul Pentium o utilizare mai eficient a memoriei cache interne. Modul BTB ncearc s prevad cnd va apare o instruciune de salt i s aduc n memorie instruciunile 36

corespunztoare ramurii la care se va face saltul. Utilizarea tehnicii de prevedere a ramificrii unui program permite microprocesorului s menin n funcionare la vitez maxim, cele dou canale pentru execuia instruciunilor. Principalele caracteristici ale microprocesorului Pentium sunt: gama frecvenelor maxime: 450MHz; dimensiunea registrelor: 32 bii; magistrala de date extern: 64 bii; magistrala memoriei 32 bii; memoria maxim: 4Gb; memorie cache ncorporat: 8kb pentru instruciuni i 8kb pentru date la primele tipuri ajungnd la 2Mb n prezent; tipul memoriei cache ncorporate: cu dou blocuri asociate, Write-Back Data; coprocesor matematic cu unitate de calcul n virgul mobil (FPU) inclus; gestionarea memoriei: SMM (System Management Mode), extins la a doua generaie.

Dezvoltarea microprocesoarelor a depit de mult acest prag. n prezent exist microprocesoare cu mai multe uniti centrale integrate care au mecanisme sofisticate. Datorit faptului c nelegerea funcionrii unui microprocesor este pe deplin posibil prin analiza funcionrii microprocesorului INTEL 8086, datorit structurii simple dar revoluionare a acestuia, compatibilitatea cu generaiile INTEL dezvoltate ulterior i datorit existenei unei consistente documentaii n legtur cu acest domeniu, vom prezenta n continuare structura n detaliu a acestui microprocesor. 4.3.2.1. Microprocesorul INTEL 8086/8088

Microprocesoarele 8086 i 8088 de generaia a III-a sunt microprocesoare cu o structur pe 16 bii, 8088 este proiectat cu o magistral de date extern de 8 bii n timp ce 8086 poate transfera 16 bii deodat. Datorit faptului c n afar de aceast deosebire funcionarea celor dou tipuri de microprocesoare este identic, n continuare ne vom referi numai la microprocesorul 8086. Performanele acestor microprocesoare sunt datorate structurii interne de 16 bii i arhitecturii pipeline care permite instruciunilor s fie prencrcate n timpul ciclurilor disponibile ale magistralei. Principalele caracteristici ale acestor microprocesoare sunt: magistrala de date de 16 bii; magistrala de adrese de 20 bii; adresare segmentat a memoriei; 4 registre de uz general pe 16 bii adresabile direct sau pe octei; 4 registre de segment pe 16 bii; 2 registre index pe 16 bii; un sistem foarte flexibil de adresare a memoriei (7 moduri); 37

Microprocesorul 8086 este un microprocesor pe 16 bii i memorie adresabil direct de 1Mo. Structura unitii centrale, cu elementele accesibile programatorului, este prezentat n figura 4.5.
20

sistem de ntreruperi hardware i software; posibilitatea funcionrii n sisteme multiprocesor; posibilitatea efecturii operaiilor aritmetice (inclusiv nmulire i mprire) i operaii logice; frecven de tact 6MHz.

AH BH CH DH

SP BP DI SI

AL BL CL DL

16

Registre de uz general

EU

CODE SEGMENT DATA SEGMENT STACK SEGMENT EXTRA SEGMENT IP REGISTRE INTERNE
20 16

Bus
BIU
REGISTRE TEMPORARE

LOGICA DE COMANDA DE BUS

16

BUS AD 0 AD 15 MULTIPLEXAT

ALU

COMANDA EU

1 2 3 4 5 6
COADA DE INSTRUCTIUNI

REG. FLAG- uri Figura 4.5. Structura unitii centrale 8086.

Aa cum se arat n figura 4.5, structura microprocesorului I 8086 se compune din dou uniti : EU = unitate de execuie i BIU = unitate de interfa cu magistrala (bus). BIU execut toate ciclurile de bus (READ, WRITE, INTA) fie la cererea EU sau pentru umplerea cu coduri a unei cozi Q de instruciuni. Coada de instruciuni este o memorie de tip FIFO cu 6 cuvinte. BIU execut noi cicluri FETCH n intervalele ct EU nu solicit bus-ul. EU obine coduri de la BIU (ateapt dac Q este vid), execut instruciunile, lucrnd cu adrese i date cu 8/16 bii, actualizeaz flag-urile i furnizeaz adrese i date ctre BIU. 38

EU calculeaz adresele efective ale operanzilor, conform modului de scheme utilizat. Adresa efectiv pe 16 bii, BIU genereaz adresa fizic cu 20 de bii, selectarea adresei efective, generate de EU. Dac Q este plin i EU nu solicit transferuri pe bus apar cicluri n rotire (ateptare). Exemplu: T1 T2 T3 T4 TI TI ... TI TI T1 T2 T3 T4 ... TI = Idle State. Modurile de lucru posibile pentru unitatea cuntral I8086 sunt :
Modul minim MN / MX = 1 Semnale de comand: ALE, DT/K, DEN, M/IO, WR, INTA, HOLD, HOLDA. Folosit n sisteme mici, de regul monoprocesor. n figura alturat circuitele bufferde tip 8286 pot lipsi dac ncrcarea electric a bus-ului este redus. Modul maxim MN / MX =0 UCP genereaz ctre controlerul de sistem I 8288 semnale de stare identificare ale ciclului de bus, n rest genereaz semnale corespunztoare pe bus-ul de comand.

Conectarea UCP I 8086 n modul maxim. n modul maxim liniile RQ/GT0, RQ/GT1, LOCK, QS0, QS1 se pot utiliza pentru conexiuni de tip multiprocesor. Se pot, de exemplu, conecta alte procesoare pe bus-ul local al UCP, utiliznd pentru arbitrajul de bus liniile RQ/GT (care nlocuiesc pe HOLD/HOLDA din modul minim). Registrele unitii centrale Registrele unitii centrale aflate n seciunea EU (Execution Unit) sunt: AX, BX, CX, DX SP, BP, SI, DI F

16
AX BX CX DX 15 AH BH CH DH 8 7 AL BL CL DL 0

8 Registre cu 16 bii de uz general, adresabile direct sau pe octet: AX = (AH, AL) BX = (BH, BL) CX = (CH, CL) DX = (DH, DL) fiecare din ele poate servi ca destinaie a datelor (accumulator)

39

Utilizrile implicite ale registrelor sunt: utilizat pentru operaii aritmetice (*), (/) pe 16 bii i pentru operaii de I/E pe 16 bii; n mod analog AL este utilizat pe 8 bii i n plus pentru aritmetic zecimal i conversii de cod; AH este utilizat la (*) i (/) pe 8 bii; BX: utilizat n conversii de cod i ca registru de baz de adrese; CX: utilizat n operaii cu iruri, cu rol de contor de cicluri; CL: utilizat n deplasri (stnga, dreapta cu un numr de pai dai ca parametru de valoare lui CL); DX: utilizat la (*), (/) pe 16 bii i ca registru de adresare indirect la porile de intrare ieire (I/E); SP: utilizat implicit n toate operaiile cu stiva; SI, DI: utilizate n operaiile asupra irurilor de date; F = registrul de flag-uri i control al procesorului (se afl n EU). Semnificaia fanioanelor din registrul F este: CF = C, PF = P, AF = H, ZF = Z, SF = S semnificaii obinuite : CF = "carry flag": depire aritmetic; PF = parity flag: paritate; AF = auxiliary flag: transport ntre bitul 3 i 4; ZF = "zero flag: valoare zero; SF = sign flag: semnul. TF = trip flag; TF = 1 determin UCP s lucreze n mod pas cu pas(single step), n care CA genereaz o ntrerupere intern dup fiecare execuie a unei instruciuni; IF = masca pentru ntreruperi externe (IF =1 => validarea ntreruperilor; IF =0 => invalidarea ntreruperilor); DF = direction flag- indic direcia deplasrii adresei la operaiile cu iruri de date (DF =1 => autodecrementare, DF =0 => autoincrementare, dup o operaie elementar); OF = V (depire). Registrele SP, BP sunt registre cu 16 bii utilizate n operaiile cu stiva. Registrele SI, DI sunt registre cu 16 bii utilizate n operaiile cu iruri; SI conine adresa sursei iar DI adresa destinaiei. Registrele aflate n seciunea BIU (Bus Interface Unit) a unitii centrale 8086 sunt: CS, DS, SS, ES = sunt registre segment care conin adresele de baz ale segmentelor logice de cod, date, stiv i extrasegment; IP = Instruction Printer = contor de program, cu 16 bii. Valoare ce reprezint adresa relativ (offset-ul) a instruciunii curente n segmentul de cod (relativ la CS). n cazul unei instruciuni de salt, IP este salvat n vrful 40 AX:

stivei (mpreun cu CS, deci saltul este inter-segment) i apoi ncrcat cu adresa relativ n segmentul de cod a instruciunii int ; Posibilitile de lucru n sisteme multiprocesor Arhitectura familiei I8086 conlucrarea ntre dou tipuri de procesoare: independente (execut propriile secvene de instruciuni) ; coprocesoare care obin instruciuni din memoria unui procesor gazd (host), urmrind ciclurile FETCHale gazdei, le recunosc pe cele destinate lor i le execut. Efectul obinut este extinderea setului de instruciuni al gazdei. Organizarea ierarhic a bus-urilor Familia admite dou tipuri de bus-uri: locale i de sistem. Ambele pot fi multimaster (mai multe UCP conectate la bus). ntre bus-ul local i cel de sistem se conecteaz interfee. Conexiunile externe ale I8086 n modul "maxim" UCP livreaz controlerului de sistem I 8288, n fiecare ciclu de bus, un cuvnt de comand (S0, S1, S2), pe care acesta l decodific i genereaz semnale de comand pe magistral (bus). n acest mod se pot conecta mai multe UCP la bus. Semnalele externe ale microprocesorului I8086 sunt prezentate n figura 4.6.
Semnificaie n modul maxim ( MX = 0 )

A16 / S3 A17 / S4 A18 / S5 A19 / S6 AD 15 AD 0 Vcc CLK GHD RESET TEST


16

MN/ MX BHE / S7 M / IO DT / R DEN READY RD (S2) (S1) (S0)

8086

WR HOLD HOLDA ALE INTA INTR NMI

( LOCK ) ( RQ / GT0 ) ( RQ / GT1 )

( QS0 ) ( QS1 )

Figura 4.6. Semnalele externe ale microprocesorului I8086.

n tabelul 4.1 sunt date semnificaiile semnalelor externe ale microprocesorului I8086 att n modul "minim" ct i cel "maxim". Microprocesorul I8086 este realizat n capsule de 40 de pini. Din acest motiv semnalele acestuia sunt multiplexate, n aa fel 41

nct s poat fi generate toate semnalele pe aceti pini (adrese 20 de semnale, date 16 semnale, comenzi i alimentare), cele 16 linii de adres A15 A0 fiind multiplexate cu cele 16 linii de date D15 D0. TABELUL 4.1.
Simbol Nr. pin Semnificaie

Tip I/O, Z

SEMNIFICAII

AD15 AD0 A19 / S6 A18 / S5 A17 / S4 A16 / S3 MN / MX BHE / S7 RD READY RESET TEST INTR NMI CLK VCC GHN

216, 39 35 38 33 34 32 22 21 23 18 17 19 40 1, 20 28 290

Adresa n T1/D este n T2, T3, Tw, T4 Adresa n T1 / semnele de stare n T2, T3, Tw, T4 Comanda modului: 1 minim; 0 maxim Validare bus (HIGH) n T1 / stare n T2 T4 Comand de citire pe bus-ul local Memorie / (I/E) gotopentru transfer Comanda de resetare Testat de instruciuni WAIT (Ateapt pn ce TEST = 0 ntreruperi mascabile externe; activ pe nivel ntreruperi nemascabile externe; activ pe front (+) Semnal de test generat de 8284 Alimentare +5V Mas

FIXE

I
O, Z

O, Z I I I I I I I O, Z O, Z O, Z O, Z
O

N MOD

M / IO WR
MINIM

Ieire de stare. Selecie memorie (I / E) Comand de scriere Comand semnul transferului; 1=> DT / R 27 transmisiune; 0 => recepie DEN 26 Validare date. Activ n cicluri M, I/E, INTA ALE 25 Indic prezena adresei pe AD0 ... AD15 READpentru cele dou cicluri INTA ale lui INTA 24 8086 HOLD 31 Cerere de bus de la alt master HLDA 30 Confirmare de cedare a bus-ului S2, S1, S0 26 28 Semnale de stare pentru ciclu de bus RQ / GT1 30 Comenzi cerere/cedare pentru arbitraj de bus RQ / GT0 31 Indicator c 8086 nu va ceda bus-ul altui LOCK 29 master QS1 Starea cozii de instruciuni din interfaa cu bus24, 25 QS0 ul a UCP unde: I = intrri; O = ieiri; Z = impedan mare; 42

SEMNIFICAII

O I O O I/O O O

SEMNIFICAII N MOD MAXIM

Observaii: cu Tn se noteaz ciclurile unitii centrale (T1 ciclul de extragere cod operaie etc.) AD15 AD0 : genereaz adrese n intervalul T1, devin intrri / ieiri de date n T2 T4 i trec n impedan mare n timpul ciclurilor INTA, sau dac UCP a cedat bus-ul (HDLA = 1); A19 / S6 A16 / S3: genereaz adrese n intervalul T1 (cu valoare 0dac ciclul de transfer este I/E) i semnale de stare n T2 T4. o S6 = 0 indic ocuparea bus-ului de ctre UCP; o S5 = IF copiaz starea flag-ului de ntrerupere. Astfel, starea de validare / invalidare se poate citi hardware din exteriorul UCP. S4 0 0 1 1

S3 0 1 0 1

Alternate data Stack Code or home Data

Indic registrul segment curent utilizat pentru adresare.

Aceti pini trec n starea Z n timpul ct HDLA = 1 BHE i A0 determin tipul transferului pe 8 sau 16 bii, astfel: BHE 0 0 1 1 A0 0 1 0 1 tipul transferului 16 bii MSB (adres impar) LSB (adres par) -

BHE = 0 atunci cnd un octet trebuie transferat pe cei 8 bii mai semnificativi (MSB) ai bus-ului cu 16 bii. El este activ n timpul ciclurilor RD, WR, INTA (este 0 n timpul primului ciclu INTA). BHE trebuie demultiplexat odat cu A0 A15 (prin memorare pe frontul negativ al semnalului I/E deoarece n T2 T4 el indic bitul de stare S7. n modul maxim, o parte din semnificaiile pinilor se modific. S2, S1, S0 identific tipul de ciclu main n intervalele T4, T1, T2, informnd controlerul de sistem I 8086 asupra tipului de transfer care urmeaz (ele sunt inactive n T3 i Tw). S2, S1, S0 0 confirmarea acceptrii ntreruperii, 1 citire I/E, 3 HALT (oprire), 4 Citirea codului instruciunii, 5 Citire din memorie a unui operand, 6 Scriere n memorie a unui operand, 43

7 Ciclu inactiv. Pinii S2, S1, S0 trec n starea Z n intervalele n care UCP cedeaz bus-ul. Liniile bidirecionale RQ / GT, (RQ/GT0 au prioritate fa de RQ/GT1) i sunt utilizate de alte module masterde pe bus-ul local pentru pentru a cere bus-ul de la UCP. Cererea se face prin RQ = 0 (intrare); la sfritul ciclului main curent UCP cedeaz bus-ul i genereaz GT = 0 (GranT). Semnalul LOCK = 0 indic faptul c UCP nu va ceda bus-ul deoarece execut o seciune de transfer nentreruptibil ce trebuie terminat. Semnalele QS0 i QS1 indic starea cozii de instruciuni existente n unitatea de interfa de bus a UCP.

Firma Intel a creat o serie de circuite integrate necesare realizrii microsistemelor cu microprocesor I8086. O parte din aceste circuite au devenit modele pentru dezvoltrile ulterioare, foarte multe din circuitele moderne fiind compatibile cu aceste circuite. Principalele circuite dezvoltate de firma Intel sunt :

8086 (IAPX 86/10), IAPX 186, IAPX 286 UCP cu 16 bii; 8087 (IAPX 86/20) procesor aritmetic n virgul mobil; 8088 (IAPX 88/10) UCP cu 16 bii n interior i 8 bii n exterior; 8089 UCP specializat n operaii I/E; IAPX 86/30, IAPX 88/30 procesor specializat coninnd un sistem de operare n timp real ncorporat n HW; 8284 generator de tact; 8288 controler de sistem (genereaz semnalele de comand pe busuri); 8289 arbitru de bus (coordoneaz funcionarea mai multor UCP-uri pe acelai bus) pentru sisteme multiprocesor; 8259A controler de ntreruperi; 8237A controler DMA; 8282, 8283 circuite latch (8bii); 8286, 8287 circuite buffer (8bii).

n figura 4.7 este prezentat un microsistem realizat cu microprocesorul I8086 conectat n modul "minim". Din aceast figur se observ existena celor trei magistrale : magistrala de comenzi, magistrala de adrese i magistrala de date. Magistrala de adrese i cea de date, datorit faptului c sunt multiplexate, necesit circuite suplimentare pentru generare : circuitul I8282 latch i circuitul I8286 buffer. n figura 4.8. este prezentat modul n care microprocesorul I8086 poate fi conectat n modul "maxim". Aa cum s-a artat, n acest mod sunt generate n mod suplimentar semnale de comand a magistralelor cu ajutorul circuitului controler de sistem I8288.

44

Figura 4.7. Microsistem cu microprocesor I8086 conectat n modul "minim.

Figura 4.8. Conectarea microprocesorului I8086 n modul "maxim

45

Organizarea memoriei principale Microprocesorul poate adresa direct 1Mo de memorie la adresele 0 0FFFFFH. Tipuri de date memorate:

8 bii (octei) 16 bii (cuvinte) 32 bii (cuvinte duble sau pointer-i)

Nu exist restricii privind plasarea acestor date n memorie (ele pot ncepela orice adres). n funie de plasarea datelor la scheme pare sau impare UCP va executa automat numrul de cicluri necesare pentru citirea lor. Convenia de reprezentare a datelor multi-cuvnt n memorie este cea standard la microprocesoarele INTEL: octeii mai puin semnificativi sunt plasai la adrese mai mici (n grupul de octei alocat cuvntului). Memoria lui I 8086 este segmentat. Pentru generarea adresei fizice AF, BIU execut operaia dat de relaia: AF = S x 24 + O (4.1)

S = coninutul registrului segment O = adresa efectiv (offset) Se impune deci restricia ca un segment s nceap la o adres absolut multiplu de 16. Registrele segment pot fi implicite sau explicite (la dorina programatorului): Tipul de referire la memorie FETCH * Operaii cu stiva * Date variabile (cu excepiile de mai jos) * Sursa la operaiile cu iruri * Destinaia la operaiile cu iruri * BP folosit ca registru de baz Registrul segment utilizat implicit CS SS DS DS ES SS _ _ CS, SS, ES CS, SS, ES _ CS, DS, ES Alte registre utilizate OFFSET (adresa relativ n cadrul segmentului) IP SP Adresa efectiv SI DI Adresa efectiv

Utilizarea altor registre segment fa de cele utilizate implicit trebuie indicat de programator n instruciunea respectiv cu ajutorul unor prefixe speciale (1 octet).

46

Memoria stiv Stiva sistemului se organizeaz n memoria principal. ntr-o aplicaie pot exista mai multe stive (fiecare cu dimensiunea maxim de 64Ko). Adresa de baz a stivei (valoarea iniial a registrului SP ntr-un program) este diferit de adresa de baz a segmentului de memorie alocat stivei. Modul de organizare al stivei microprocesorului I8086 este artat n figura 4.9.
8 bii
: Stiv de dimensiune 64 Ko SS Adresa de baz a segmentului de memorie alocat stivei

: :

locaii ocupate n stiv la un moment dat


+ FFFF

Adresa de baz a stivei (stiva vid) Figura 4.9. Organizarea stivei microprocesorului 8086.

Anumite zone din memoria principal a sistemului sunt rezervate pentru diferite utilizri de ctre unitatea central. Adrese rezervate:

0 13H = dedicate pentru ntreruperi interne; 14H 7FH = rezervate pentru dezvoltri ale familiei de componente (rezervate de firma INTEL); 0FFFF0H 0FFFFBH = dedicate pentru instruciunile executate resetarea procesului; 0FFFFC 0FFFFFH = rezervate de firm

Porturile de intrare / ieire (I / E) Spaiul de adrese de intrare / ieire este separat de spaiul adreselor memoriei. Spaiul este nesegmentat i cu dimensiunea de 64 Ko ceea ce asigur posibilitatea de adresare direct a unui mare numr de porturi I/E cu 8 sau 16 bii. ntr-un transfer I/E, UCP citete/scrie 16 bii/ciclu de bus dac portul I/E este localizat la adresa par i 8 bii/ciclu dac portul I/E este localizat la adres impar. Faciliti pentru lucru n sisteme multi-master Facilitile pentru lucrul multi-master sunt prezentate n continuare.

Interzicerea accesului la bus a altor module master cu ajutorul semnalului LOCK. Bus-ul se utilizeaz prin diviziune n timp, 47

ntreeserea ciclurilor de acces la bus a diverselor module master se face la nivel de ciclu de bus (i nu la nivel de ciclu de instruciune). LOCK = 0 indic faptul c 8086 execut o instruciune ce nu poate fi ntrerupt (instruciunea e prefixat LOCK ex. actualizarea unui pointer de 4 octei). Utilizarea liniilor RQ/GT0 i RQ/GT1 Liniile RQ/GT0 i RQ/GT1 bidirecionale permit controlul accesului la un bus local comun mai multor procesoare. Protocolul de cerere/cedare a bus-ului decurge astfel: o procesorul solicitator cere acces prin generarea unui impuls (RQ=0) ctre UCP; o UCP (la sfritul ciclului main curent) cedeaz bus-ul i rspunde prin impulsul (GT=0); o dup terminarea accesului, cellalt procesor elibereaz bus-ul informnd asupra acestui fapt printr-un nou impuls (GT=0).

Sistemul de ntreruperi Clasificarea ntreruperilor ntreruperile interne (software)


o o

o o

INT n, unde tipul este TIP=n, n {0, ..., 255} INTO (INTerrupt ou Overflow), provoac o ntrerupere TIP=4 dac flag-ul overflow a fost setat n urma apariiei unor depiri la efectuarea operaiilor aritmetice; IDIV, cu TIP=0, generat automat dac apare o eroare de depire la operaia de mprirre; SINGLE STEP, cu TIP=1, se genereaz automat dup execuia fiecrei instruciuni, dac flag-ul TF (test flag) a fost setat n 1. Acest tip de ntrerupere practic UCP n modul de lucru pas cu pas, util pentru depanarea programelor.

ntreruperile externe (hardware) se genereaz prin aplicarea unor semnale pe intrrile de ntrerupere.
o o

NMI pentru ntreruperile nemascabile, cu TIP=2; semnalul este activ pe frontul pozitiv. INTR pentru ntreruperi mascabile (prin flag-ul IF din registrul de flag-uri). Semnal activ prin nivel logic 1; acesta trebuie meninut activ pn la recunoaterea ntreruperii de ctre UCP. Tipul ntreruperii externe mascabile se genereaz de ctre dispozitivul ntreruptor (de exemplu controlerul de ntreruperi I8259A).

Servirea ntreruperilor Tipul unei ntreruperi este utilizat de ctre UCP ca adres relativ ntr-un tablou de pointer-i, amplasat n memoria principal ntre adresele 03FFH (256x4 octei).

48

Un pointer conine adresa logic pentru servirea ntreruperii. Pentru a efectua saltul la aceast adres se efectueaz urmtoarele operaii: IP TP(T+1,T); CSTP(T+3, T+2) T=4xTIP TP(+1, ) reprezint cuvntul cu 16 bii format din octeii de adres -1 i din tabloul de pointer-i. Efectul este asemntor cu cel al instruciunii CALL intersegment Prioritile de servire pentru diversele tipuri de ntreruperi (care pot apare eventual simultan) rezult din organigrama alturat. Ciclurile INTA pentru ntreruperile externe mascabile (INTR) pe durata celor dou cicluri INTA, semnalul LOCK este activ. Vectorul de ntrerupere este n acest caz numrul indicator al tipului i este citit de ctre UCP n al doilea ciclu INTA. n figura 4.10 se prezint modul de alocare n memorie a vectorilor de ntrerupere.
16 bii
IP CS TIPO (DIV) TIP I
(SINGLE STEP)

TIP 2 (NMI) TIP 3


(INSTR DE INTR CU 1 OCTET)

TIP 4 (INTO) Zon rezervat pentru compatibiliti cu alte produse INTEL . . .

0 2 4 6 8 A C E 10H 12H

ntreruperea break point destinat depanrii programelor

7EH 8OH

3FEH

Figura 4.10. Tabel de pointer-i pentru ntreruperi

n figura 4.11 se prezint organigrama corespunztoare servirii unei ntreruperi de ctre unitatea central I8086.

49

Completeaz instruciunea curent intreruperi interne


NU Da

NMI ?
NU

Da

INTR ?
NU NU

Da

IF=1 ?

Da

TF=1 ?

Execut instruciunea urmtoare

Confirm receptarea ntreruperii (primul ciclu INTA)

Citete tipul ntreruperii (al doile ciclu INTA)


Salveaz n stiv flag-urile

Restabilete IP, CS Restabilete flag-urile Reia programul ntrerupt

TEMP TF IF, IF 0
Salveaz n stiv CS, IP CS, IP Adresa de sevire NMI ?
Da

* TEMP = variabil intern pentru memorarea valorii lui TF (TEST FLAG) (definit de programator)

NU

TEMP=1
NU

Da

Procedeu de servire a ntreruperii

Figura 4.11. Organigrama servirii unei ntreruperi.

Iniializarea unitii centrale. Starea HALT. Utilizarea intrrii TEST 1 pe RESET determin: CS FFFFH, IP 0 ; ceea ce determin generarea adresei fizice 0FFFF0H cu adres absolut a primei instruciuni executat de I8086. Intreruperile mascabile se invalideaz IF 0.

50

HALT (la apariia instruciunii) stopeaz toate activitile UCP pn ce apare o ntrerupere sau semnal RESET. n aceast sare o cerere de bus este (HOLD=1) este recunoscut i i acceptat de ctre UCP. Intrarea TEST este testat de instruciunea WAIT i dac TEST 0, atunci procesorul ateapt (ntr-o stare inactiv) pn ce TEST 0. n acest timp, se pot servi ntreruperile aprute la intrri, dup care se reia ateptarea. Intrarea TEST poate servi pentru sincronizarea UCP cu evenimente externe.

4.4.

Procesoare de semnal digitale

O dat cu dezvoltarea tehnicii digitale i n special cu creterea performanelor microprocesoarelor s-a dezvoltat un segment aparte de componente numerice specializate n prelucrarea numeric a semnalelor. Astfel de componente au cptat numele de procesoare de semnal digitale, prescurtat DSP (Digital Signal Processor). Astfel prescurtarea DSP capt dubl semnificaie; una din semnificaii se refer la tehnica prelucrrii semnalelor n format numeric iar cea de-a doua semnificaie se refer la dispozitivele (procesoarele) specializate, destinate implementrii tehnicilor de prelucrare a semnalelor n format numeric. Un procesor destinat prelucrrii numerice a semnalelor reprezint o unitate central specializat care este capabil s execute cu vitez ridicat secvene de instruciuni cum sunt cele de deplasare a coninutului unui registru i adunarea coninutului acestuia sau cele de nmulire i adunare care sunt operaii uzuale n algoritmii de prelucrare a semnalelor. Spre deosebire de un microprocesor care este o unitate central de uz general, un dispozitiv DSP este destinat anumitor domenii de utilizare definite de tehnica de prelucrare numeric a semnalelor avnd instruciuni speciale, adaptate scopului propus iar aplicaiile sunt executate n timp real ceea ce presupune un timp scurt de execuie a instruciunilor i o structur special a sistemului de ntreruperi. Pe de alt parte, un dispozitiv DSP lucreaz de obicei ntr-o structur ierarhizat de calcul n care dispozitivul DSP asist un microprocesor de uz general. Dei exist o mare varietate de dispozitive DSP acestea sunt proiectate cel mai adesea s ndeplineasc aceleai funcii de baz. Rezult c exist un set de caracteristici de baz pentru toate procesoarele DSP, caracteristici de baz care pot fi mprite n trei categorii:

dispozitivele sunt specializate n efectuarea cu vitez ridicat a operaiilor aritmetice; sunt prevzute cu mecanisme diversificate de transfer a datelor din i ctre lumea real; sunt utilizate arhitecturi cu acces multiplu la memorie.

Activitile unui dispozitiv DSP impun efectuarea unor operaii specifice cum sunt: (figura 4.12):

adunri i nmuliri; 51

ntrzieri; manipulri de matrice.


c[0]

adunri

Z-1 ntrzieri Z-1


c[2] c[1]

nmuliri lucru cu matrice

Fig. 4.12. Operaii specifice prelucrrii digitale a semnalelor

Operaiile de adunare i de nmulire sunt folosite pentru:


extragerea simultan a doi operanzi; realizarea adunrii i nmulirii (de obicei simultan); stocarea rezultatului sau reinerea acestuia n vederea repetrii operaiei.

ntrzierile sunt folosite pentru reinerea unei valori pentru utilizare ulterioar. Manipularea matricelor este necesar pentru:

extragerea operanzilor aflai n locaii succesive de memorie; copierea datelor de la memorie la memorie.

Aceast suit de operaii sunt de obicei executate de dispozitivul DSP astfel:


executarea n paralel a operaiilor de nmulire i adunare; acces multiplu la memorie n scopul extragerii simultane a doi operanzi i memorarea rezultatului; folosirea mai multor registre pentru reinerea temporar a datelor; generarea eficient a adreselor pentru utilizarea matricelor; faciliti speciale cum sunt ntrzierile sau adresarea circular.

Pentru realizarea operaiilor aritmetice dispozitivele DSP au o structur special, de mare vitez, a unitii logice i aritmetice deoarece ele trebuie s execute simultan adunri i nmuliri. Din acest motiv dispozitivele DSP au de regul o structur special a circuitelor de adunare i nmulire ce permite acestor operaii n paralel, de ctre o singur instruciune, aa cum este artat n figura 4.13. ntrzierea permite ca valoarea intermediar rezultat n urma calculelor s fie memorat pentru o utilizare ulterioar. Acest lucru poate fi necesar, de exemplu, cnd trebuie calculat un total; totalul poate fi pstrat n procesor pentru a evita scrierile i citirile repetate la memorie. Din acest motiv procesoarele DSP au un numr relativ mare de registre, n virgul fix sau virgul mobil, care pot fi folosii pentru stocarea valorilor intermediare. 52

Utilizarea matricelor permite ca datele s poat fi manevrate eficient n locaii succesive de memorie. Acest lucru necesit generarea adresei de memorie unde se gsete valoarea urmtoare i pentru aceasta dispozitivele DSP au registre de adrese ce sunt folosii pentru pstrarea adresei i care permit generarea adresei urmtoare n mod eficient.
magistral unic

conversie de tip P S

s0 nmulirea i adunarea lucreaz n paralel s1 s2 s3

Fig. 4.13. Fluxul de date la realizarea nmulirii i adunrii

TABELUL 4.2. Simbol Adresare Observaii *rP adresare indirect este citit data din memorie indicat de adresa coninut prin registru n registrul rP *rP++ postincrementare dup citirea datei din memorie, adresa din registrul rP este incrementat, n aa fel nct s indice adresa urmtoarei date din matrice *rP-postdecrementare dup citirea datei din memorie, adresa din registrul rP este decrementat, n aa fel nct s indice adresa urmtoarei date din matrice *rP++r postincrementare dup citirea datei din memorie, adresa coninut n I n funcie de registrul rP este incrementat cu valoarea coninut de registru registrul rl, adresa obinut indicnd noua valoare ce urmeaz a fi citit din memorie further down the array *rP++r cu bii inversai dup citirea datei din memorie, valoarea ce indic adresa Ir este incrementat pentru a indica valoarea urmtoare din matrice, biii adresei fiind aezai n ordine invers Posibilitatea generrii eficiente a unei adrese noi este o facilitate caracteristic a procesoarelor DSP. n mod obinuit adresa urmtoare poate fi generat pe durata 53

extragerii sau stocrii datelor. Procesoarele DSP au un set bogat de instruciuni pentru generarea adreselor. Un exemplu de astfel de instruciuni este dat n tabelul 4.2. Sintaxa n limbaj de asamblare pentru instruciunile prezentate n tabelul 4.2 este foarte asemntoare cu limbajul C. De cte ori un operand este extras din memorie prin utilizarea modului de adresare indirect prin registre, registrul de adres poate fi incrementat pentru a indica urmtoarea valoare necesar din matrice. Incrementarea adresei este liber nu sunt implicate resurse pentru calculul adresei i mai multe astfel de adrese pot fi generate ntr-o singur instruciune. Generarea adreselor este un factor important n creterea vitezei procesoarelor DSP i a operaiilor specializate ale acestora. Ultimul mod de adresare cu bii inversai arat ct de specializate pot fi procesoarele DSP. Adresarea cu inversare de bii este necesar atunci cnd un tabel de valori este reordonat prin inversarea ordinii biilor de adres astfel:

inversarea ordinii biilor n fiecare adres; amestecarea datelor prin inversarea biilor, adresarea fcndu-se n ordine cresctoare.

O astfel de operaie este utilizat exclusiv la calcului transformatei Fourier rapide. Se poate spune deci, c dispozitivele DSP sunt proiectate special pentru a calcula n mod eficient transformata Fourier rapid. Din punct de vedere al legturii unitii centrale cu mediul extern, un dispozitiv DSP este prevzut cu mai multe interfee interne (on chip) care lucreaz ntr-un sistem specializat de ntreruperi. Cele mai frecvente interfee ale unui dispozitiv DSP sunt:

intrri/ieiri numerice; convertoare analog-numerice (CAN); convertoare numeric-analogice (CNA); comparatoare; numrtoare programabile; interfee seriale sincrone de mare vitez pentru conectarea perifericelor externe sau a dispozitivelor DSP; interfee seriale standard de tip RS-232 pentru lucrul pe port serial asincron.

4.4.1. Procesorul de semnal digital, TMS320F240 Circuitul DSP de tip TMS320F240 este un circuit integrat pe scar foarte larg n tehnologie CMOS i se compune din trei uniti funcionale: unitatea central de tip C2xx DSP, memoria intern i unitatea circuitelor periferice. De asemenea, n afar de aceste uniti funcionale sunt prevzute o serie de faciliti sistem care se refer la gestionarea memoriei, iniializarea blocurilor, ntreruperi, controlul intrrilor/ieirilor, generarea ceasului intern i comutarea n regim de consum redus. Circuitul TMS320F240 utilizeaz o arhitectur Harvard avansat pe folosirea a dou magistrale separate: de date i de program. 54

n continuare sunt prezentate foarte sumar principalele faciliti oferite de circuitul DSP n scopul formrii unei imagini asupra structurii complexe a acestuia:

unitate central de tip C2xx cu arhitectur paralel ce ofer posibilitatea execuiei n paralel a instruciunilor, posibilitatea de prelucrare a mai multor fluxuri de informaii simultan, execuia instruciunilor ntr-un singur ciclu main (inclusiv a nmulirii); memorie de program inclus n circuitul integrat de 16KB (cuvinte de 16 bii) de tip flash EEPROM i memorie RAM cu acces dublu pentru program/date de 544 cuvinte de 16 bii; oscilator extern de 10MHz, bucla PLL intern a DSP lucrnd la 20MHz; 28 de intrri/ieiri numerice; dou convertoare analog-numerice pe 10 bii ce pot lucra simultan, numrul intrrilor analogice fiind extins prin multiplexare la 16; trei numrtoare programabile independente pe 16 bii; interfa serial sincron de mare vitez pentru conectarea perifericelor externe; interfa serial standard de tip RS-232 pentru lucrul pe port serial asincron;
Magistrala de date
Interfaa cu memoria extern Numrtoare programabile de uz general Uniti de comparare Intrri/Ieiri numerice

Memorie Flash EEPROM

Memorie RAM cu acces dublu

Magistrala de program

Unitate central de tip C2xx

Modul interfa de sistem

Magistrala perifericelor
CAN dublu pe 10 bii Interfa serial sincron Interfa serial asincron Watchdog Timer

Fig. 4.14. TMS320F240 schema bloc

55

Schema bloc simplificat a circuitului DSP de tip TMS320F240 este prezentat n figura 4.14. Prezena celor dou magistrale, magistrala de date i magistrala de program permite prelucrarea simultan a instruciunilor de program i a datelor. Organizarea memoriei procesorului este prezentat n tabelele 4.3, 4.4 i 4.5. TABEL 4.3. Memorie Program Hex 0000 Intreruperi 003F (Memorie extern) 0040 Memorie extern FDFF FE00 On-Chip DARAM B0 (CNF=1) sau
Memorie extern

FEFF FF00 FFFF

(CNF=0)

TABEL 4.4. Memorie Program Hex Intreruperi 0000 On-Chip Flash 003F 0040 3FFF Memorie Flash OnChip 4000 Memorie extern FDFF FE00 On-ChipDARAM B0 (CNF=1) sau
Memorie extern

Rezervat MP/ MC =1 Mod microprocesor

FEFF FF00 FFFF

(CNF=0) Rezervat

MP/ MC =0 Mod Microcomputer

Dispozitivul DSP este prevzut cu un pin MP/ MC (microprocessor mode / microcomputer mode) cu ajutorul cruia se pot obine dou configuraii ale memoriei de program:

MP/ MC = 1 (microprocessor mode) modul n care memoria on chip flash i ROM sunt dezactivate (Tabelul 4.3); MP/ MC = 0 (microcomputer mode) modul n care memoria on chip flash i ROM sunt activate (Tabelul 4.4).

Bitul CNF care se gsete n registrul de stare ST1 permite activarea memoriei RAM cu acces dublu on chip, blocul 0 (CNF = 1) sau a memoriei externe (CNF = 0). Organizarea memoriei de date este artat n tabelul 4.5. Se observ c n memoria de date vom gsi corespondentul registrelor unitii centrale i a perifericelor ceea ce permite lucrul cu acetia identic cu lucrul cu orice alt locaie de memorie. Acest fapt duce la creterea vitezei de execuie i simplitatea programrii. mprirea memoriei n dou tipuri: memorie de program i memorie de date impune ca orice program s fie alctuit din dou segmente corespunztoare acestor tipuri, amestecarea instruciunilor cu datele nefiind permis. 56

TABEL 4.5. Memorie Date Hex 0000 Regitrii i zon rezervat 005F 0060 007F Memorie On-Chip DARAM B2 0080 Rezervat 01FF 0200 Memorie On-Chip DARAM B0 (CNF=0) sau zon rezervat (CNF=1) 02FF
0300 03FF 0400 07FF 0800 6FFF 7000 73FF 7400 Memorie On-Chip DARAM B1 Rezervat Ilegal Regitrii perifericelor (System, WD, ADC, SPI, SCI, Intreruperi, I/O) Regitrii perifericelor (Manager-ul de evenimente)

Organizarea ntreruperilor unitii centrale Sistemul de ntreruperi externe ale unitii centrale (miezul procesorului C2xx - CPU) este format din ase ntreruperi mascabile (INT1-INT6) i una nemascabil (NMI). Prioritatea maxim o are ntreruperea NMI iar prioritile ntreruperilor mascabile scad de la INT6 la INT1, INT1 avnd prioritatea minim. Fiecrei ntreruperi i corespunde un bit n registrul fanioanelor de ntrerupere a unitii centrale (IFR) i fiecrei ntreruperi mascabile i corespunde un bit n registrul mtilor unitii centrale (IMR). O ntrerupere mascabil este mascat (nu va genera o ntrerupere ctre miez) cnd bitul corespunztor n IMR este 0. De asemenea miezul procesorului mai are un bit pentru mascarea general a ntreruperilor (INTM) n registrul de stare ST0. Cnd INTM este setat la 1 toate ntreruperile mascabile sunt dezactivate.

Rspunsurl la ntrerupere a miezului C2xx 743F Cnd apare o tranziie de la unu la 7440 zero pe o intrare de ntrerupere a miezului, Rezervat 77FF bitul corespunztor al fanionului din IFR 7800 este setat n 1. O ntrerupere este generat Ilegal 7FFF ctre miez dac aceasta nu este mascat 8000 ntreruperile globale sunt permise Memorie extern FFFF (INTM=0) - i nu exist o alt ntrerupere nemascat de prioritate mai mare n ateptare (acest lucru nsemnnd c nu exist nici un fanion setat al unei ntreruperi nemascate de prioritate mai mare). Fanionul este ters de ctre hardware o dat ce cererea de ntrerupere este trimis ctre miez. Un fanion de ntrerupere poate fi de asemenea ters de ctre programul utilizator scriind un 1 n bitul corespunztor.

57

4.5.

Microcalculatoare integrate, microcontrolere

4.5.1. Prezentare general Electronica digital se bazeaz astzi n bun msur pe utilizarea circuitelor integrate VLSI (Very Large Scale Integration circuite integrate pe scar foarte larg) de tipul microprocesor, microcalculator sau microcontroler. Dintre acestea se detaeaz net microcalculatoarele integrate i microcontrolerele care nglobeaz n structura hard pe lng o unitate central puternic cu faciliti speciale pentru lucrul n timp real i periferice de tipul convertoarelor A/D, interfee paralele, interfee seriale, sisteme de generare a impulsurilor modulate, timere, circuite de supraveghere a duratei de execuie a programelor, executiv de timp real integrat etc. ceea ce uureaz mult munca proiectantului i duce la creterea substanial a performanelor sistemului. Nu exist o diferen net ntre microcalculatoare integrate i microcontrolere. Microcontrolerele prin setul de instruciuni mai redus, sunt mai intim legate de aplicaiile de control, urmrire i automatizare industrial. ntre microcalculatoarele integrate mai cunoscute se pot enumera: INTEL 8048/8035, MOTOROLA 6801 i 6805 i familia ZILOG Z8. INTEL 8048 a fost primul microcalculator integrat; acest dispozitiv conine ntro capsul de 40 de pini urmatoarele:

o unitate central de 8 bii; o memorie RAM de 64 octei; o memorie ROM de 1 koctet; un numr de 27 de linii de I/E (Intrare/iEire); un oscilator pilot; un circuit de ceas de 8 bii.

Setul de instruciuni este tributar ntr-o oarecare masur primului microprocesor de uz general I8080, cum de altfel este i concepia hardware-ului, cuprinde: operaii cu acumulatorul, transferuri de date, salturi, chemri i reveniri din subrutine, operaii de intrare/ieire i operaii de control cu registre i indicatori. MC 6801 este un microcalculator integrat de 8 bii care s-a dezvoltat din familia microprocesorului de uz general MC6800 (MOTOROLA). Instruciunile microcalculatorului integrat MC6801 sunt compatibile cu instruciunile microprocesorului mam. Timpul de execuie a fost redus i cteva noi instruciuni au fost adugate; ntre acestea i instruciunea de nmulire fr semn. MC6801 poate funciona fie ca microcalculator de sine stttor fie ca microcalculator de uz general ce poate utiliza o memorie extern de cel mult 64ko. MC6841 include pe lng microprocesorul propriu-zis:

o memorie fix (ROM) de 2 ko; o memorie citete/scrie (RAM) de 128 de octei; un numr de 29 linii de I/E; 58

trei circuite de ceas programabile, de 16 bii fiecare; un oscilator pilot.

Familia ZILOG Z8 cuprinde o variant standard Z8611 i mai multe versiuni de dezvoltare. Principalele caracteristici ale acestei versiuni sunt:
43 de tipuri de instruciuni; 124 de registre de uz general, 4 registre de I/E, 16 registre de control i configurare; 32 de linii de intrare/ieire; un circuit de intrare/ieire serie; 2 circuite de ceas (fiecare ceas avnd un divizor programabil de 8 bii i un predivizor de 6 bii); 6 ntreruperi vectorizate, mascabile i aranjabile n ir de prioriti; timp de execuie mediu a instruciunilor de 2,2 s.

Dintre microcontrolerele reprezentative se pot aminti:


microcontrolerul AVR AT90S2313 al firmei ATMEL microcontrolerul PIC 16F87X al firmei MICROCHIP TECHNOLOGY ;

4.5.2. Microcontrolerul AT90S2313 Microcontrolerul AT90S2313 are o memorie FLASH programabila n sistem de 2K octei. Caracteristici principale:

Bazat pe arhitectura AVR @ RISC cu performane ridicate i consum redus: o 118 instruciuni puternice - majoritatea se execut ntr-un ciclu main; o 32 x 8 registre generale de lucru; o viteza pan la 10 MIPS @ 10 MHz. Memorie nevolatil de date: o Mrimea memoriei Flash: 2K octei programabil In sistem; suport 1 000 cicli de tergere/nscriere; o 128 octei de Memorie SRAM. o 128 octei de memorie EEPROM programabil In sistem; suport 1 000 000 cicli de tergere/nscriere;. o Protecie programabil pe 8 bii a memoriei de date Flash si EEPROM. Periferice: o un temporizator/numrtor cu prescaler separat pe 8 bii; o un temporizator/numrtor cu prescaler separat pe 16 bii; o comparator, moduri de captur i PWM pe 8, 9 i 10 bii; o comparator analogic on-chip; 59

o temporizator Watchdog programabil cu oscilator ncorporat in chip; o interfa serial SPI pentru programarea In-system; o port serial UART full duplex. Funcii speciale ale microcontrolerului: o consum redus n caz de inactivitate precum i power-down de economisire a energiei; o surse de ntrerupere extern i intern. Specificaii: o tehnologie CMOS - consum redus, vitez mare; o mod de operare complet static. Consum de energie la 4 MHz, 3V, 25C: o activ: 2.8 mA; o inactiv: 0.8 mA; o power-down: <1 A. Intrri/Ieiri i Capsula: o 15 linii de intrare/ieire programabile; o capsula PDIP si SOIC de 20 pini. Tensiuni de operare: o 2.7 - 6.0V (AT90S2313-4); o 4.0 - 6.0V (AT90S2313-10). Viteza de operare: o 0 - 4 MHz (AT90S2313-4); o 0 - 10 MHz (AT90S2313-10).

Configuraia pinilor:

Descrierea pinilor microcontrolerului:


VCC Pin de alimentare (tensiune pozitiva). GND Pin de mas. Portul B (PB7..PB0). Portul B este un port I/O bidirecional pe 8 bii. La ieirile terminalelor se pot configura rezistoare pull-up (legare software la plusul sursei de alimentare a rezistoarelor interne selectabil pentru fiecare pin in parte). PB0 i PB1 de asemenea 60

servesc ca intrare pozitiv (AIN0) i intrare negativ (AIN1), pentru comparatorul analogic in chip. Portul B furnizeaz la ieire un curent de 20 mA astfel nct poate fi legat direct la un afior LED. Atunci cnd pinii PB0 la PB7 sunt utilizai ca intrri i din exterior sunt comandai cu semnal digital LOW, ei vor consuma energie daca rezistenele interne de pull-up sunt activate. Dup un Reset pinii Portului B vor fi n starea de nalt impedan chiar dac semnalul de ceas nu este activ. Portul D (PD6..PD0). Portul D posed apte pini bidirecionali de I/O (curent debitat de 20 mA) cu rezistene pull-up. Pinii portulul D intr n starea de nalt impedan n cazul acionrii Resetului.

Figura 4.15. Schema bloc a microcontrolerului AT90S2313

61

RESET. Pin de intrare. Un semnal LOW pe acest pin pe o durat de 50 ns va genera un Reset, chiar daca semnalul de clock nu este activ. Un semnal mai scurt nu garanteaza conditia de Reset. XTAL1. Intrare inversat pe un oscilator amplificat i intrare n circuitul de semnal de ceas. XTAL2. Ieire inversat de la un amplificator oscilator.

AT90S2313 este un microcontroler CMOS pe 8 bii, cu consum redus bazat pe arhitectura AVR RISC. Executnd instruciuni puternice ntr-un ciclu main, AT90S2313 execut aproape 1 milion de instruciuni pe secund. Miezul AVR combin setul bogat de instruciuni cu 32 de registre de lucru generale. Toate cele 32 de registre sunt conectate direct la Unitatea Aritmetic i Logic (ALU), astfel este permis accesarea a dou registre independente ntr-un singur ciclu main. Arhitectura rezultat este mult mai eficient din punct de vedere al codului astfel nct se obine o putere de calcul pn la zece ori mai mare dect cel al arhitecturii microcontrolerelor CISC. n modul "inactiv procesorul se oprete n timp ce memoria SRAM, temporizatorii/numrtorii, portul SPI i ntreruperile de sistem continu s funcioneze. n modul "power-down microcontrolerul salveaz coninutul registrelor i oprete oscilatorul, se opresc toate funciile din chip pn la urmtoarea ntrerupere extern sau un Reset hardware. Microcontrolerul este fabricat n tehnologia memorie nevolatil de densitate nalta. Memoria Flash intern, programabil In sistem permite reprogramarea In sistem utiliznd interfaa serial SPI sau un programator de memorii nevolatile convenional. 4.5.3. Microcontrolerul PIC 16F877 Microcontrolere de 28/40-Pini cu 8-Bit CMOS FLASH. Specificaiile unitii centrale:

unitate centrala (CPU) de tip RISC; 35 de instruciuni; toate instruciunile se execut ntr-un ciclu al unitii centrale, cu excepia instruciunilor de ramificare a programului care se execut n dou cicluri CPU; frecvena de ceas: 20 MHz (durata ciclului instruciunii de 200 ns); memoria: o maximum 8k cuvinte de 14 bii de memorie FLASH; o maximum 368 octei de memorie de date - Data Memory (RAM); o maximum 256 octei de memorie de date EEPROM; microcontrolerul este compatibil pin la pin cu PIC16C73B/74B/76/77 posibilitatea tratrii ntreruperilor de la 14 surse de ntrerupere; stiv hardware cu opt nivele; 62

moduri de adresare direct, indirect i relativ; Power-on Reset (POR) reset la aplicarea tensiunii de alimentare; Power-up Timer (PWRT) temporizare la aplicarea tensiunii de alimentare, i Oscillator Start-up Timer (OST) stabilizarea oscilatorului la pornire; Watchdog Timer (WDT) cu propriul oscilator RC on-chip pentru funcionare sigur; mecanism de protecie a codului programabil; mod SLEEP pentru economisirea energiei; opiuni selectabile pentru oscilator; tehnologie CMOS FLASH/EEPROM de consum redus i de vitez ridicat; circuitul este n ntregime de tip static; In-Circuit Serial Programming (ICSP) - programarea serial direct a circuitului prin intermediul a doi pini; posibilitate de programare serial cu o singur tensiune de 5V; In-Circuit Debugging depanare direct la circuit prin intermediul a doi pini; acces scriere/citire a procesorului la memoria de program; domeniul tensiunilor de alimentare: 2,0V la 5,5V; curent maxim absorbit: 25mA;

Conexiunile externe

63

Microcontrolerele PIC16F876/873 au 28 de pini iar microcontrolerele PIC16F877/874 au 40 de pini. Portul paralel slave nu este implementat la dispozitivele cu 28 de pini. Descrierea pinilor pentru PIC16F874 i PIC16F877
Numele pinului OSC1/CLKIN OSC2/CLKOUT DIP Nr. pin 13 14 PLCC Nr. pin 14 15 tip I/O/P I O Tip buffer ST/CMOS(4) Descriere Intrarea oscilatorului cu cristal/surs extern de ceas Ieirea oscilatorului cu cristal. Conectarea la cristal sau la rezonator n modul oscilator cu cristal. n modul RC, pinul OSC2 furnizeaz CLKOUT care are 1/4 din frecvena la OSC1 i indic durata unui ciclu de instruciune. Intrarea resetului principal Master Clear (Reset) sau intrarea tensiunii de programare. Acest pin este activ n zero atunci cnd se aplic RESET. PORTA este un port I/O bidirecional RA0 sau intrarea pentru semnal analogic 0. RA1 sau intrarea pentru semnal analogic 1. RA2 sau intrarea pentru semnal analogic 2 sau referina negativ a semnalului analogic. RA3 sau intrarea pentru semnal analogic 3 sau referina pozitiv a semnalului analogic. RA4 sau intrarea de ceas a Timer0. Ieirea este de tip open drain. RA5 sau intrarea pentru semnal analogic 4 sau selecia slave pentru portul serial sincron. PORTB este un port I/O bidirecional. La PORTB poate fi conectate prin program rezistene interne la toate intrrile. RB0 sau pin pentru ntreruperea extern RB1 RB2 RB3 sau intrare de programare de tensiune sczut Pin cu generarea unei ntreruperi la schimbare Pin cu generarea unei ntreruperi

MCLR/VPP

I/P

ST

RA0/AN0 RA1/AN1 RA2/AN2/VREF-

2 3 4

3 4 5

I/O I/O I/O

TTL TTL TTL

RA3/AN3/VREF+

I/O

TTL

RA4/T0CKI RA5/SS/AN4

6 7

7 8

I/O I/O

ST TTL

RB0/INT RB1 RB2 RB3/PGM RB4

33 34 35 36 37

36 37 38 39 41

I/O I/O I/O I/O I/O

TTL/ST(1) TTL TTL TTL TTL

64

RB5 RB6/PGC

38 39

42 43

I/O I/O

TTL TTL/ST(2)

RB7/PGD

40

44

I/O

TTL/ST(2)

la schimbare Pin cu generarea unei ntreruperi la schimbare sau pin In-Circuit Debugger. Ceasul programrii seriale. Pin cu generarea unei ntreruperi la schimbare sau pin In-Circuit Debugger. Datele programrii seriale. PORTC este un port I/O bidirecional RC0 sau ieirea oscilatorului Timer 1 sau intrarea de ceas Timer 1 RC1 sau intrarea oscilatorului Timer 1 sau intrarea Capture2/Ieirea Comare2/ieirea PWM2 RC2 sau intrarea Capture1/Ieirea Comare1/ieirea PWM1 RC3 sau intrarea/ieirea ceasului serial sincron pentru modurile SPI i I2C RC4 sau intrare de date SPI (n modul SPI) sau data I/O (n modul I2C) RC5 sau ieire de date SPI (n modul SPI) RC6 sau ieirea de date a transmitorului USART sau ceasul sincron RC7 sau intrarea de date a transmitorului USART sau datele sincrone PORTD este un port bidirecional I/O sau un port paralel slave atunci cnd se interfaeaz cu bus-ul unui microprocesor

RC0/T1OSO/T1C KI RC1/T1OSI/CCP2

15 16

16 18

I/O I/O

ST ST

17 RC2/CCP1 18 RC3/SCK/SCL 23 RC4/SDI/SDA 24 RC5/SDO 25 RC6/TX/CK 26 RC7/RX/DT

19 20

I/O I/O

ST ST

25 26 27 29

I/O I/O I/O I/O

ST ST ST ST

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 RE0/RD/AN5

19 20 21 22 27 28 29 30 8

21 22 23 24 30 31 32 33 9

I/O I/O I/O I/O I/O I/O I/O I/O I/O

ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) PORTE este un port bidirecional I/O RE0 sau comanda de citire pentru portul paralel slave sau intrarea

65

RE1/WR/AN6

10

I/O

ST/TTL(3)

RE2/CS/AN7 VSS VDD NC

10 12,31 11,32 -

11 13,34 12,35 1,17, 28,40

I/O P P

ST/TTL(3) -

analogic 5 RE1 sau comanda de scriere pentru portul paralel slave sau intrarea analogic 6 RE2 sau comanda de selecie pentru portul paralel slave sau intrarea analogic 7 Masa (referina de tensiune) pentru pinii digitali I/O Tensiunea de alimentare pozitiv pentru pinii digitali I/O Aceti pini nu sunt conectai intern. Aceti pini trebuie s rmn neconectai

Legend:

I = intrare O = ieire I/O = intrare/ieire P = alimentare - = nefolosit TTL = intrare TTL ST = intrare trigger Schmitt SEMNAL = semnalul SEMNAL negat

Not: 1: acest buffer este o intrare trigger Schmitt cnd este configurat ca ntrerupere extern; 2: acest buffer este o intrare trigger Schmitt cnd este folosit n modul de programare serial; 3: acest buffer este o intrare trigger Schmitt cnd este configurat I/O de uz general i ca intrare TTL cnd este folosit n modul port paralel slave (pentru interfaarea cu magistrala unui microprocesor); 4: acest buffer este o intrare trigger Schmitt cnd este configurat n modul oscilator RC i intrare CMOS n celelalte cazuri. Caracteristici principale Frecvena de lucru RESET (ntrzieri) Memoria de program FLASH (cuvinte de 14 bii) Memoria de date (octei) Memoria de date EEPROM (octei) ntreruperi Porturi I/O Timer-e Module Captur/Comparare/PWM PIC16F873 DC-20 MHz POR, BOR (PWRT, OST) 4k 192 128 13 Porturile A,B,C 3 2 66 PIC16F874 DC-20 MHz POR, BOR (PWRT, OST) 4k 192 128 14 Porturile A,B,C,D,E 3 2 PIC16F876 DC-20 MHz POR, BOR (PWRT, OST) 8k 368 256 13 Porturile A,B,C 3 2 PIC16F877 DC-20 MHz POR, BOR (PWRT, OST) 8k 368 256 14 Porturile A,B,C,D,E 3 2

Comunicaie serial Comunicaie paralel Modul de conversie analog-digital pe 10 bii Set de instruciuni

MSSP, USART 5 canale 35 instruciuni

MSSP, USART PSP 8 canale 35 instruciuni

MSSP, USART 5 canale 35 instruciuni

MSSP, USART PSP 8 canale 35 instruciuni

Organizarea memoriei Microcontrolerul are 3 blocuri de memorie. Memoria de program i memoria de date au magistrale separate i deci se poate realiza accesul simultan la date i la program. Contorul de program are 13 bii ce poate adresa un spaiu de memorie program de 8K x 14 bii. Accesarea locaiilor n afara spaiului fizic al memoriei implementate va produce o adresare wraparound. Vectorul RESET este 0000h iar vectorul de ntrerupere este 0004h. Memoria este paginat iar paginile sunt:

pagina 0 la adresele 0005h la 07FFh inclusiv; pagina 1 la adresele 0800h la 0FFFh inclusiv; pagina 2 la adresele 1000h la 17FFh inclusiv; pagina 3 la adresele 1800h la 1FFFh inclusiv.

Organizarea memoriei de date Memoria de date este mprit n 4 bank-uri ce conin registrele de uz general (General Purpose Registers) i registrele funciilor speciale (Special Function Registers). Selecia bank-urilor se face cu ajutorul biilor RP1 (STATUS<6>) i RP0 (STATUS<5>). RP1:RP0 00 01 10 11 Bank 0 1 2 3

Fiecare bank din memoria static are 128 de octei (7Fh). Locaiile la adresele mici sunt rezervate registrelor funciilor speciale (SFR) iar sub acestea se gsesc registre de uz general (GPR). Fiecare bank are propriile registre SFR dar anumite registre SFR dintr-un bank se pot gsi i ntr-un alt bank pentru reducerea dimensiunii codului i pentru acces mai rapid la aceti registre. Registrele de uz general pot fi accesai att n mod direct ct i indirect prin intermediul registrelor de selecie: File Select Register (FSR).

67

Harta registrelor microcontrolerelor PIC16F877/876


Bank 0 Adresa Registrul de din mem. memorie adresare 00h indirect(*) 01h TMR0 02h PCL 03h STATUS 04h FSR 05h PORTA 06h PORTB 07h PORTC 08h PORTD(1) 09h PORTE(1) 0Ah PCLATH 0Bh INTCON 0Ch PIR1 0Dh PIR2 0Eh TMR1L 0Fh TMR1H 10h T1CON 11h TMR2 12h T2CON 13h SSPBUF 14h SSPCON 15h CCPR1L 16h CCPR1H 17h CCP1CON 18h RCSTA 19h TXREG 1Ah RCREG 1Bh CCPR2L 1Ch CCPR2H 1Dh CCP2CON 1Eh ADRESH 1Fh ADCON0 20h 7Fh Registre de uz general 96 octei Bank 1 Adresa de mem. 80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8Ah 8Bh 8Ch 8Dh 8Eh 8Fh 90h 91h 92h 93h 94h 95h 96h 97h 98h 99h 9Ah 9Bh 9Ch 9Dh 9Eh 9Fh A0h EFh F0h FFh Registrul din memorie adresare indirect(*) OPTION_REG PCL STATUS FSR TRISA TRISB TRISC TRISD(1) TRISE(1) PCLATH INTCON PIE1 PIE2 PCON SSPCON2 PR2 SSPADD SSPSTAT Bank 2 Registrul Adresa din de mem. memorie adresare 100h indirect(*) 101h TMR0 102h PCL 103h STATUS 104h FSR 105h 106h PORTB 107h 108h 109h 10Ah PCLATH 10Bh INTCON 10Ch EEDATA 10Dh EEADR 10Eh EEDATH 10Fh EEADRH 110h 111h 112h 113h 114h 115h 116h 117h Registre de 118h uz general 119h 16 octei 11Ah 11Bh 11Ch 11Dh 11Eh 11Fh 120h Registre de uz general 80 octei 16Fh 170h acces 70h-7Fh 17Fh Bank 3 Adresa de mem. 180h 181h 182h 183h 184h 185h 186h 187h 188h 189h 18Ah 18Bh 18Ch 18Dh 18Eh 18Fh 190h 191h 192h 193h 194h 195h 196h 197h 198h 199h 19Ah 19Bh 19Ch 19Dh 19Eh 19Fh 1A0h 1EFh 1F0h 1FFh Registrul din memorie adresare indirect(*) OPTION_REG PCL STATUS FSR TRISB

PCLATH INTCON EECON1 EECON2 rezervat(2) rezervat(2)

TXSTA SPBRG

Registre de uz general 16 octei

ADRESL ADCON1 Registre de uz general 80 octei acces 70h-7Fh

Registre de uz general 80 octei acces 70h-7Fh

Locaie de memorie neimplementat, la citire se citete zero. Nu este un registru fizic. Not: 1: aceste registre nu sunt implementate la PIC16F876. 68
*

2: aceste registre sunt rezervate, ele nu trebuie scrise. Biii de configurare (directiva __CONFIG)

;============================================================== ; ; Configuration Bits ; ;============================================================== _CP_ALL _CP_OFF _DEBUG_OFF _DEBUG_ON _WRT_OFF EQU EQU EQU EQU EQU H'1FFF' H'3FFF' H'3FFF' H'37FF' H'3FFF' 69

; No prog memory write protection

_WRT_256 protected _WRT_1FOURTH protected _WRT_HALF _CPD_OFF _CPD_ON _LVP_ON _LVP_OFF _BODEN_ON _BODEN_OFF _PWRTE_OFF _PWRTE_ON _WDT_ON _WDT_OFF _RC_OSC _HS_OSC _XT_OSC _LP_OSC

EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU

H'3DFF' H'3BFF' H'39FF' H'3FFF' H'3EFF' H'3FFF' H'3F7F' H'3FFF' H'3FBF' H'3FFF' H'3FF7' H'3FFF' H'3FFB' H'3FFF' H'3FFE' H'3FFD' H'3FFC'

; First 256 prog memory write ; First quarter prog memory write ; First half memory write protected

Cuvntul de configurare (adresa 2007h) Valoarea citit pentru biii de configurare neprogramai (teri) este 3FFFh. Un bit programat este citit ca zero iar cel neprogramat este citit ca unu. Aceti bii se gsesc n spaiul de program i locaia de memorie de la adresa 2007h poate fi modificat numai pe timpul programrii.
R/P-1 CP Bit 13 U-0 R/P-1 R/P-1 DEBUG WRT1 Bit 12 Bit 11 Bit 10 R/P-1 WRT0 Bit 9 R/P-1 CPD Bit 8 R/P-1 R/P-1 R/P-1 U-0 U-0 R/P-1 R/P-1 LVP BORDEN - PWRTEN WDTEN F0SC1 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/P-1 F0SC0 Bit 0

bit 13

CP: bit de protecie a codului din memoria FLASH 1 = protecia codului off 0 = codul din memoria de program este protejat odat protejat, memoria FLASH nu mai poate fi scris.

bit 12 bit 11

Neimplementat. Citit ca unu. DEBUG: bit pentru depanare In-Circuit 1 = depanator In Circuit dezactivat. RB6 i RB7 sunt pini de uz general I/O 0 = depanator In Circuit activat. RB6 i RB7 sunt atribuii depanatorului

bit 10-9

WRT1:WRT0 bii de validare a scrierii memoriei de program FLASH 70

11 = nu este activat protecia la scriere; toat memoria de program poate fi scris sub controlul EECON 10 = 0000h la 00FFh este protejat la scriere; 0100h la 1FFFh poate fi scris sub controlul EECON 01 = 0000h la 07FFh este protejat la scriere; 0800h la 1FFFh poate fi scris sub controlul EECON 00 = 0000h la 0FFFh este protejat la scriere; 1000h la 1FFFh poate fi scris sub controlul EECON bit 8 CPD: bit de protecie a memoriei de date EEPROM 1 = memoria EEPROM nu este protejat 0 = memoria EEPROM este protejat bit 7 LVP: bit de validare a tensiunii sczute la programarea serial incircuit 1 = pinii RB3/PGM au funcia PGM; programarea cu tensiune sczut este validat; 0 = RB3 este I/O digital, trebuie utilizat HV la MCLR pentru programare bit 6 BORDEN: bit de validare a Brown-out Reset 1 = BOR activat 0 = BOR dezactivat Neimplementat. Citit ca unu. PWRTEN bit de validare a Power-up Timer 1 = PWRT dezactivat 0 = PWRT activat bit 2 WDTEN: bit de validare a Watchdog Timer 1 = WDT activat 0 = WDT dezactivat bit 1-0 FOSC1:FOSC0: biii de selecie a oscilatorului 11 = oscilator RC 10 = oscilator HS 01 = oscilator XT 00 = oscilator LP 71

bit 5-4 bit 3

Registre cu funcii speciale


Adr. Nume Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valoarea n: POR, BOR 0000 0000 xxxx xxxx 0000 0000 0001 1xxx xxxx xxxx --0x 0000 xxxx xxxx xxxx xxxx xxxx xxxx ---- -xxx ---0 0000 0000 000x 0000 0000 -0-0 00 xxxx xxxx xxxx xxxx

0h

(3)

INDF

01h TMR0 02h(3) PCL 03h(3) STATUS 04h(3) FSR 05h PORTA 06h PORTB 07h PORTC 08h(4) PORTD 09h(4) PORTE 0Ah(1,3) PCLATH 0Bh(3) INTCON 0Ch PIR1 0Dh PIR2 0Eh 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh TMR1L TMR1H T1CON TMR2 T2CON

Bank 0 Adresnd aceast locaie de memorie se folosete coninutul FSR pentru a adresa memoria de date (nu este un registru fizic) Registrul Timer0 Contorul de program (PC) cel mai puin semnificativ octet IRP RP1 RP0 TO PD Z DC C Pointer pentru adresarea indirect a memoriei de date Memorare date PORTA la scriere, pini PORTA la citire Memorare date PORTB la scriere, pini PORTB la citire Memorare date PORTC la scriere, pini PORTC la citire Memorare date PORTD la scriere, pini PORTD la citire RE2 RE1 RE0 Buffer de scriere a celor mai semnificativi 5 bii ai contorului de program (PC) TMR0IE GIE PEIE INTE RBIE TMR0IF INTF RBIF PSPIF(3) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF CMIF EEIF BCLIF CCP2IE Registrul de stocare al celui mai puin semnificativ octet al registrului de 16 bii al TMR1 Registrul de stocare al celui mai semnificativ octet al registrului de 16 bii al TMR1 TOUTPS3
T1CKPS1

T1CKPS0 TOUTPS1

T1OSC T1SYNC TMR1CS TMR1ON --00 0000 EN

Registrul Timer2
TOUTPS2 TOUTP TMR2ON T2CKPS1 T2CKPS0 S1

1111 1111 -000 0000 xxxx xxxx 0000 0000 0000 0000 --00 0000 0000 000x 0000 0000 0000 0000 xxxx xxxx xxxx xxxx --00 0000 xxxx xxxx 0000 00-0

SSPBUF Registrul de transmisie/buffer de recepie a portului serial sincron SSPM3 SSPM2 SSPM1 SSPM0 SSPCON WCOL SSPOV SSPEN CKP CCPR1L Registrul 1 (LSB) Captur/Comparare/PWM CCPR1H Registrul 1 (MSB) Captur/Comparare/PWM CCP1 CCP1CON CCP1M2 CCP1M2 CCP1M0 CCP1X CCP1Y M3 RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D TXREG Registrul datelor de transmis al USART RCREG Registrul datelor recepionate al USART CCPR2L Registrul 2 (LSB) Captur/Comparare/PWM CCPR2H Registrul 2 (MSB) Captur/Comparare/PWM CCP2 CCP2CON CCP2M2 CCP2M1 CCP2M0 CCP2X CCP2Y M3 ADRESH Registrul rezultat al octetului cel mai semnificativ al conversiei A/D
ADCON0 ADCS1

ADCS0

CHS2

CHS1

GO/ CHS0 DONE

ADON

Legend: Not:

x = necunoscut, u = neschimbat, q = valoarea depinde de situaie, - = neimplementat se citete zero, r = rezervat 1. Cel mai semnificativ octet al contorului de program nu este accesibil direct. Registrul PCLATH conine biii PC<12:8> care vor fi transferai n octetul cel mai semnificativ al contorului de program. 72

2. Biii PSPIE i PSPIF sunt rezervai la PIC16F873A/876A i trebuie meninui teri. 3. Aceste registre pot fi adresate din orice bank. 4. PORTD, PORTE, TRISD i TRISE nu sunt implementai la PIC16F873A/876A i la citire sunt zero. 5. Bitul 4 al EEADRH este implementat numai la PIC16F876A/877A.
Adr. Nume Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valoarea n: POR, BOR 0000 0000 1111 1111 0000 0000 0001 1xxx xxxx xxxx --11 1111 1111 1111 1111 1111 1111 1111 0000 -111 ---0 0000 0000 000x 0000 0000 -0-0 00 ---- --qq 0000 0000 1111 1111 0000 0000 0000 0000 0000 -010 0000 0000 0000 0111 000- 0000 xxxx xxxx 0--- 0000

80h(3) 81h

INDF

Bank 1 Adresnd aceast locaie de memorie se folosete coninutul FSR pentru a adresa memoria de date (nu este un registru fizic)

OPTION_ RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 REG (3) 82h PCL Contorul de program (PC) cel mai puin semnificativ octet 83h(3) STATUS IRP RP1 RP0 TO PD Z DC C 84h(3) FSR Pointer pentru adresarea indirect a memoriei de date 85h TRISA Registru direcie PORTA 86h TRISB Registru direcie PORTB 87h TRISC Registru direcie PORTC 88h(4) TRISD Registru direcie PORTD 89h(4) TRISE IBF OBF IBOV PSPMODE Bii direcie PORTE Buffer de scriere a celor mai semnificativi 5 bii (1,3) 8Ah PCLATH ai contorului de program (PC) TMR0I (3) 8Bh INTCON GIE PEIE INTE RBIE TMR0IF INTF RBIF E 8Ch PIE1 PSPIE(2) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 8Dh PIE2 CMIE EEIE BCLIE CCP2IE 8Eh PCON POR BOR 8Fh Neimplementat 90h Neimplementat 91h SSPCON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 92h PR2 Registru de perioada al Timer2 93h SSPADD Registrul de adres al portului serial sincron (mod I2C) 94h SSPSTAT SMP CKE D/A P S R/W UA BF 95h Neimplementat 96h Neimplementat 97h Neimplementat 98h TXSTA CSRC TX9 TXEN SZNC BRGH TRMT TX9D 99h SPBRG Registrul generator Baud Rate 9Ah Neimplementat 9Bh Neimplementat 9Ch CMCON C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 9Dh CVRCON CVREN CVROE CVRR CVR3 CVR2 CVR1 CVR0 9Eh ADRESL Registrul octetului cel mai puin semnificativ al conversiei A/D PCFG3 PCFG2 PCFG1 PCHG1 9Fh ADCON1 ADFM ADCS2 -

Legend:

x = necunoscut, u = neschimbat, q = valoarea depinde de situaie, - = neimplementat se citete zero, r = rezervat 73

Not:

1. Cel mai semnificativ octet al contorului de program nu este accesibil direct. Registrul PCLATH conine biii PC<12:8> care vor fi transferai n octetul cel mai semnificativ al contorului de program. 2. Biii PSPIE i PSPIF sunt rezervai la PIC16F873A/876A i trebuie meninui teri. 3. Aceste registre pot fi adresate din orice bank. 4. PORTD, PORTE, TRISD i TRISE nu sunt implementai la PIC16F873A/876A i la citire sunt zero. 5. Bitul 4 al EEADRH este implementat numai la PIC16F876A/877A.
Nume Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valoarea n: POR, BOR 0000 0000 xxxx xxxx 0000 0000 0001 1xxx xxxx xxxx xxxx xxxx ---0 0000 0000 000x xxxx xxxx xxxx xxxx --xx xxxx ---- xxxx

Adr.

Bank 2 Adresnd aceast locaie de memorie se folosete coninutul FSR pentru a 100h INDF adresa memoria de date (nu este un registru fizic) 101h TMR0 Registrul Timer0 102h(3) PCL Contorul de program (PC) cel mai puin semnificativ octet 103h(3) STATUS IRP RP1 RP0 TO PD Z DC C 104h(3) FSR Pointer pentru adresarea indirect a memoriei de date 105h Neimplementat 106h PORTB Memorare date PORTB la scriere, pini PORTB la citire 107h Neimplementat 108h Neimplementat 109h Neimplementat Buffer de scriere a celor mai semnificativi 5 bii 10Ah(1,3) PCLATH ai contorului de program (PC) (3) TMR0IE 10Bh INTCON GIE PEIE INTE RBIE TMR0IF INTF RBIF 10Ch EEDATA Octetul cel mai puin semnificativ (L) al registrului de date al EEPROM 10Dh EEADR Octetul cel mai puin semnificativ (L) al registrului de adres al EEPROM Octetul cel mai semnificativ (H) al registrului de date al 10Eh EEDATH EEPROM Octetul cel mai semnificativ (H) al (5) 10Fh EEADRH registrului de adres al EEPROM Bank 3 Adresnd aceast locaie de memorie se folosete coninutul FSR pentru a 180h(3) INDF adresa memoria de date (nu este un registru fizic) OPTION 181h RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 _REG (3) 182h PCL Contorul de program (PC) cel mai puin semnificativ octet 183h(3) STATUS IRP RP1 RP0 TO PD Z DC C 184h(3) FSR Pointer pentru adresarea indirect a memoriei de date 185h Neimplementat 186h TRISB Registru de direcie a datelor PORTB 187h Neimplementat 188h Neimplementat 189h Neimplementat Buffer de scriere a celor mai semnificativi 5 bii 18Ah(1,3) PCLATH ai contorului de program (PC) (3) TMR0IE 18Bh INTCON GIE PEIE INTE RBIE TMR0IF INTF RBIF WRERR WREN 18Ch EECON1 EEPGD WR RD 18Dh EECON2 Registrul de control 2 (nu este un registru fizic) EEPROM
(3)

0000 0000 1111 1111 0000 0000 0001 1xxx xxxx xxxx xxxx xxxx ---0 0000 0000 000x x--- x000 ---- ----

74

18Eh 18Fh

Rezervat, trebuie meninut ters Rezervat, trebuie meninut ters

0000 0000 0000 0000

Legend: Not:

x = necunoscut, u = neschimbat, q = valoarea depinde de situaie, - = neimplementat se citete zero, r = rezervat 1. Cel mai semnificativ octet al contorului de program nu este accesibil direct. Registrul PCLATH conine biii PC<12:8> care vor fi transferai n octetul cel mai semnificativ al contorului de program. 2. Biii PSPIE i PSPIF sunt rezervai la PIC16F873A/876A i trebuie meninui teri. 3. Aceste registre pot fi adresate din orice bank. 4. PORTD, PORTE, TRISD i TRISE nu sunt implementai la PIC16F873A/876A i la citire sunt zero. 5. Bitul 4 al EEADRH este implementat numai la PIC16F876A/877A.

Figura 4.16. Schema bloc a microcontrolerului PIC16F877.

75

CAPITOLUL 5 MEMORIA
5.1. Prezentare general

Memoria unui calculator are rolul de a stoca temporar sau permanent date sau programe. Durata de stocare a datelor se refer la timpul ct memoria este alimentat la tensiunea electric. O memorie poate stoca permanent date dac informaia memorat nu se pierde la ntreruperea tensiunii de alimentare a memoriei. n caz contrar, atunci cnd memoria stocheaz informaia numai pe durata de timp ct este alimentat cu energie electric, se spune c informaia este memorat temporar. Este momentul s precizm faptul c un calculator numeric nu prelucreaz dect numere. Din acest motiv mprirea informaiei n date i instruciuni are caracter pur convenional. Astfel, ntr-o locaie de memorie se poate afla numrul (10110110B = 182Z) care pentru unitatea central poate nsemna fie o valoare numeric egal cu 128 fie codul unei instruciuni de tipul: aduna numarul a cu numarul b. Unitatea central decide dac numrul citit din memorie reprezint o valoare numeric (dat) sau o comand (instruciune program). Prin convenie, la pornire sau dup iniializare (RESET) unitatea central consider c valoarea citit din memorie reprezint o comand. S presupunem ca acesta comanda este: aduna numarul a cu numarul b. Asta nseamn c urmatoarele dou valori citite din memorie se vor considera ca reprezentnd valorile numerelor a i b. Dup executarea adunrii unitatea central va citi o nou valoare din memorie pe care o va considera n mod automat ca reprezentnd codul numeric al unei instruciuni de program. Rmne deci responsabilitatea programatorului ca n memorie s fie nscris o succesiune corect de date care reprezint numere sau coduri de instruciuni. Dup modul n care sunt stocate datele n memorie se poate face o prim clasificare a acestora: memorii de tip ROM (Read Only Memory) care sunt memorii ce pot stoca permanent datele. Aa cum le arat i numele ele nu pot fi dect citite de ctre unitatea central, nscrierea lor fiind fcut prin procedee speciale, fie pe calculator, fie separat, pe un dispozitiv special numit inscriptor de memorii ROM; memorii de tip RAM (Random Access Memory) care sunt memorii ce pot stoca temporar datele. Caracteristic acestor memorii este faptul c ele pot fi scrise i citite n mod curent de unitatea central.

Cele dou tipuri de memorie sunt amndou folosite n calculator n scopuri diferite. Memoria de tip ROM stocheaz de obicei programul executat de unitatea 76

central imediat dup pornire sau la iniializare. Acest program se numete program monitor sau program de boot. Dac n calculator s-ar folosi numai memorie de tip RAM problema pornirii calculatorului nu ar putea fi rezolvat. La punerea sub tensiune o memorie RAM are un coninut aleator care nu poate ajuta la pornirea calculatorului; cum unitatea central, dup iniializare ateapt o comand valid, rezult c trebuie folosit o memorie care s nu-i piard coninutul atunci cnd tensiunea de alimentare este ntrerupt. Structura unei memorii este similar cu cea a unei matrici. Vom considera un exemplu n care n fiecare element al matricei se afl Memorie A0 un modul elementar de memorie care nu poate C0 memora dect un bit adic o valoare numeric egal C1 D cu zero sau cu unu. Cea mai simpl structur de A1 memorie este prezentat n figura 5.1. Localizarea C3 C2 celulei elementare de memorie care va fi citit sau scris la un moment dat se face cu ajutorul A2 A3 semnalelor de adres iar valoarea citit sau valoarea de nscris n memorie este disponibil pe respectiv Fig. 5.1. Structura unei memorii este depus pe magistrala de date. n acest fel se spune c selecia unei celule de memorie se face cu ajutorul semnalelor de pe magistrala de adrese iar valoarea citit din memorie sau nscris n memorie se face cu ajutorul semnalelor de pe magistrala de date. n figura 5.1, C0, C1, C2 i C3 reprezint celulele elementare de memorie, D magistrala de date (o singur linie) iar A0, A1, A2 i A3 magistrala de adrese (patru linii). Traseul datelor a fost TABELUL 5.1. reprezentat cu linie punctat iar A3 A2 A1 A0 D cel al adreselor cu linie continu. 0 1 0 1 Coninutul celulei C0 Din cauz c la un moment dat 1 0 0 1 Coninutul celulei C1 numai una din celulele elementare 0 1 1 0 Coninutul celulei C2 de memorie este activat, pentru 1 0 1 0 Coninutul celulei C3 date este suficient o singur linie. Considerm c o celul elementar de memorie este activat pentru citire sau scriere dac ea se afl la intersecia liniilor de adres pe care se afl simultan cifra unu. Funcionarea memoriei, n acest caz este dat n tabelul 5.1. Dac pe magistrala de adrese se aplic, de exemplu, numrul 0101 (n succesiunea A3,A2,A1,A0) atunci pe magistrala de date se gsete coninutul celulei C0 la citire sau poate fi nscris celula C0 cu valoarea plasat pe magistrala de date, la scriere. Din cauz c folosirea a patru linii de adres este neeconomic n acest caz, n realitate la o astfel de memorie nu se afl dect dou linii de adres din cauz c se pot obine patru combinaii distincte numai cu dou numere binare (00, 01, 10, 11). Translatarea de la cele patru combinaii binare la cele patru adrese de selecie a celulelor de memorie se face n interiorul memoriei cu ajutorul unui circuit de decodificare. Pentru a obine mai multe date simultan la ieire memoriile se conecteaz n paralel aa cum este reprezentat schematic n figura 5.2. n structura din figura 5.2 dac se aplic la intrare (pe liniile de adres) combinaia 0101 (n succesiunea A3,A2,A1,A0), atunci vor fi selectate simultan celulele 77

de memorie C00 i C01, C00 fiind conectat la linia de date D0 iar C01 la D1. Toate celulele elementare de memorie selectate simultan, formeaz o celul de memorie care permite manipularea simultan a mai multor bii. Din cele prezentate pn acum rezult c att magistrala de adrese ct i cea de date furnizeaz informaii legate de dimensiunea (capacitatea memoriei). Pentru a msura capacitatea A0 (dimensiunea) C01 C11 D1 memoriei se folosete A1 ca unitate de baz bitul C21 C31 (b) care reprezint cantitatea elementar de informaie. Spre exemplu, vom C00 C10 D0 considera experimentul aruncrii unei monezi. C20 C30 n urma acestui experiment nlturm o incertitudine de 50% A2 A3 pentru c nainte de aruncarea monezii Fig.5.2. Structura unei memorii cu dou planuri existau numai dou posibiliti ale rezultatului (una din feele monezii). Astfel, probabilitatea de obinere a unui rezultat este de 1/2 din cauz c din cele dou rezultate posibile s-a obinut unul. Cantitatea de informaie pe care o primim dup efectuarea acestui experiment se exprim cu relaia: I = - log2 P = - log2 =1 bit Dac asociem celor dou fee ale monedei valorile binare 0 i 1, cantitatea de informaie stocat ntr-o celul elementar de memorie (care poate memora una din valorile 1 sau 0) este de un bit. Bitul are ca multiplii kilobitul (kb), megabitul (Mb), gigabitul (Gb) i terabitul (Tb) cu urmtoarele relaii ntre ele: 1kb = 1024 bii; 1Mb = 1024kb = 1 048 576 bii; 1Gb = 1024Mb = 1 048 576 kb = 1 073 741 824 bii; 1Tb = 1024Gb = 1 048 576 Mb = 1 073 741 824 kb = 1 099 511 627 776 bii.

Pentru a ne forma o imagine asupra cantitii de informaie care poate fi stocat, putem spune c dac un bit stocheaz informaia corespunztoare unui eveniment echiprobabil cu dou posibiliti de realizare aa cum este experimentul aruncrii unei monezi, ntr-un gigabit se poate stoca informaia dintr-o enciclopedie iar ntr-un terabit informaia dintr-o bibliotec de 500 de cri. ntorcndu-ne la figura 5.2 putem spune c aceast memorie are o capacitate de 4x1bit din cauz c sunt patru celule elementare de memorie care pot stoca informaie, 78

la un moment dat avnd acces la o singur celul. Similar, memoria din figura 5.2 are o capacitate de 4x2 bii din cauz c, la un moment dat, avem acces la dou celule elementare de memorie simultan. Aa cum s-a artat n capitolul 4, unitile centrale pot lucra cu 8, 16, 32, 64, ... bii de date simultan. Din acest motiv un grup de opt bii se numete octet (byte, 1 byte=8 bits). Daca se utilizeaz 16 bii simultan adic doi octei, acetia formeaz un cuvnt (word) iar dou cuvinte formeaz un pointer. n tabelul 5.2 sunt sintetizate modurile de notare a grupurilor de bii. TABELUL 5.2. 1 octet (byte) = 8 bii (bites) 1 cuvnt (word) = 2 octei (bytes) = 16 bii (bites) 1 pointer (pointer) = 2 cuvinte (words) = 4 octei (bytes) = 32 bii (bits) Memoriile calculatoarelor se construiesc n general cu celule de opt bii de date iar capacitile acestora sunt exprimate n kilooctei (kilobytes), notat cu ko sau kb, un ko fiind egal cu 1024 octei. Capacitile uzuale folosite pentru memoriile calculatoarelor numerice variaz de la 1ko i pot ajunge pn la zeci sau sute de Mo (megaoctei). Calculul capacitii unei memorii poate fi fcut n felul urmtor: s presupunem c avem o memorie de 5Mo; rezult c aceast memorie va avea: 5 x 1 048 576 x 8 bii = 41 943 040 bii ceea ce nseamn c o astfel de memorie va conine 41 943 040 celule elementare de memorie. n figura 5.3 se prezint o memorie de 4 Mo i modul de montare a acesteia. n afar de capacitatea memoriei, o alt caracteristic important a acesteia este timpul de acces. Timpul de acces reprezint timpul necesar memoriei de a rspunde unei comenzi. Cu alte cuvinte, la o comand de citire, memoria nu depune instantaneu coninutul celulei de memorie (o celul de memorie fiind format din una sau mai multe celule elementare) pe magistrala de date ci dup un anumit timp care depinde att de tehnologia n care este realizat memoria ct i de dimensiunea acesteia. La fel, la scrierea unei memorii, datele

Fig. 5.3. Memorie SIMM i modul de montare a acesteia

79

de nscris n memorie trebuie meninute un anumit timp pe magistrala de date, pentru ca memoria s fie capabil s le transfere n celula de memorare corespunztoare. Este evident faptul c este de dorit ca timpul de acces al unei memorii s fie ct mai mic n aa fel nct ea s poat rspunde suficient de repede solicitrilor unitii centrale. n prezent memoriile utilizate n calculatoare au timpi de acces ntre 70ns i 10ns. Din pcate cu ct timpul de acces al unei memorii este mai mic preul acesteia este mai mare i din acest motiv, n cele mai multe cazuri, memoria unui sistem este realizat dintr-o combinaie de memorii rapide i memorii lente. Astfel, memoria RAM ntr-un calculator este realizat pe cel puin trei nivele. Pe primul nivel este memoria cea mai rapid, care se afl chiar n interiorul unitii centrale. Aceast memorie se numete memorie cache pe nivelul 1 (cache level 1). n aceast memorie se aduc poriunile de program care sunt rulate la un moment dat, unitatea central lucrnd practic numai cu memoria cache de pe nivelul 1. Atunci cnd este necesar execuia unei instruciuni care nu este n memoria cache de pe nivelul 1, un circuit de control al memoriei aduce poriunea respectiv de program, din memoria extern mai lent, n memoria cache de pe nivelul 1. Microprocesoarele actuale au o memorie cache intern ntre 128ko i 512ko, iar la microprocesoarele foarte puternice destinate staiilor de lucru, memoria cache poate ajunge pn la 2Mo. n exteriorul unitii centrale exist un al doilea nivel al memoriei cache (cache level 2) cu acelai rol ca i memoria cache level 1. Mecanismul memoriei cache este prezentat n figura 5.4. Controlerul de memorie are sarcina de a transfera datele de pe un nivel pe altul n aa fel nct n memoria cache de pe nivelul 1 s se afle ntotdeauna poriunea de program necesar unitii centrale. Performanele unui calculator vor fi cu att mai bune cu ct dimensiunea memoriei cache este mai mare.

Unitatea Central

Date

Memorie (intern) cache nivel1 128ko 512ko Date

Memorie (extern) cache nivel 2 128ko 1024ko

Memorie RAM principal 32Mo 64Mo

Fig. 5.4. Organizarea memoriei RAM la un calculator

n continuare se vor prezenta pe scurt principalele tipuri tehnologice de memorii ROM i RAM existente n prezent i caracteristicile acestora. Memoriile ROM sunt realizate n urmtoarele variante: memorii ROM propriu-zise care nu pot fi nscrise dect o singur dat, nscrierea fiind fcut cel mai adesea la fabricant sau la utilizator cu ajutorul unor dispozitive de programare speciale, aceste memorii fiind denumite i memorii PROM (Programmable Read-Only Memory); 80

memorii EPROM (Erasable Programmable Read-Only Memory) care sunt memorii de tip ROM programabile. Ele pot fi terse si nscrise (programate) de mai multe ori. tergerea memoriei se face cu ajutorul unui flux de lumin ultraviolet, n acest scop capsula circuitului integrat fiind prevzut cu un geam din sticl de cuar (vezi figura 4.1), iar nscrierea se face cu ajutorul unor dispozitive speciale prin metode electrice la tensiuni mai mari dect cele de funcionare normal; memorii de tip EEPROM (Electrically Erasable Programmable Read-Only Memory) care sunt memorii ROM programabile ce pot fi terse i renscrise exclusiv prin mijloace electrice. Avantajul acestui tip de memorii este reprezentat de faptul c ele nu trebuie scoase din circuitul n care au fost montate pentru a fi terse i renscrise. Acest tip de memorie necesit tensiuni mai mari dect cele de funcionare obinuit, pentru tergere i programare; memorii de tip flash (flash memory), ultima generaie de memorii de tip ROM care dei pstreaz informaia i dup ntreruperea tensiunii de alimentare, pot fi terse si programate similar cu memoriile RAM. Singura particularitate este reprezentat de faptul c memoriile flash necesit algoritmi speciali de tergere i programare, aceast operaiune fiind fcut pe blocuri, n trei faze.

Memoriile RAM sunt realizate n urmtoarele variante: memorii RAM dinamice (DRAM - Dynamic Random Access Memory) care sunt memorii de tip RAM ce necesit remprosptarea periodic (la 20 ms) a coninutului, n caz contrar informaia pierzndu-se chiar dac sunt alimentate. Remprosptarea se face simplu prin citirea periodic a mai multor blocuri simultan din memorie. Principalul avantaj al acestui tip de memorii este reprezentat de faptul c pot avea densitate foarte mare a celulelor elementare, putnd fi realizate memorii cu capaciti foarte mari iar principalul dezavantaj este reprezentat de faptul c memoriile RAM dinamice sunt relativ lente (necesit timpi de acces mari). Din acest motiv memoriile RAM dinamice sunt folosite de regul la memoria principal a calculatorului. memorii RAM statice (SRAM - Static Random Access Memory) care sunt memorii de tip RAM ce nu necesit remprosptare. Aceste memorii prezint avantajul c au timpi de acces foarte mici n schimb au dezavantajul c nu pot fi realizate de capaciti foarte mari. Memoriile RAM statice sunt utilizate de regul la realizarea memoriilor cache. 81

Pentru creterea performanelor de vitez ale memoriilor RAM, n prezent sunt utilizate o serie de tehnici care au dus la apariia mai multor tipuri de memorii RAM dinamice: memorii de tip EDO DRAM (Extended Data Output Dynamic Random Access Memory) care sunt memorii de tip DRAM dar mai rapide dect memoriile DRAM obinuite. Spre deosebire de memoriile DRAM obinuite, o memorie EDO DRAM nu poate fi accesat dect pe blocuri de date. Pe durata de timp ct memoria EDO RAM trimite la unitatea central datele corespunztoare unui bloc, poate cuta datele blocului urmtor. Datorit acestor mecanisme timpul de regsire a datelor este mult redus; memorii de tip BEDO DRAM (Burst EDO DRAM). Memoria BEDO DRAM este mai rapid dect memoria EDO DRAM. Acest tip de memorie se sincronizeaz cu viteza unitii centrale pe durate scurte de timp (burst). Pe durata unei astfel de sincronizri o memorie BEDO DRAM poate prelucra patru adrese de memorie simultan. Aceste memorii se pot conecta la procesoare ce lucreaz pe magistrale cu viteza de pn la 66 MHz; memorii de tip SDRAM (Synchronous DRAM). Acest tip de memorii sunt capabile s se sincronizeze cu unitatea central i funcioneaz la frecvene de pn la 200MHz (memorii DDR SDRAM double-data-rate synchronous dynamic random access memory).

n figura 5.5 este prezentat modul de realizare a circuitelor de memorie.

Fig. 5.5. Realizarea fizic a circuitelor de memorie

5.2.

Aplicarea principiului "cache n sistemele de calcul

5.2.1. Memoria Cache Numele acestui tip de memorie provine de la termenul din limba francez ascuns: cache. Dei este un cuvnt de origine francez s-a ncetenit pronunia 82

acestuia n limba englez deoarece majoritatea termenilor din domeniul arhitecturii calculatoarelor provin din aceast limb. Memoria cache reprezint mai degrab un principiu: n sistemul de calcul se vor folosi dou tipuri de memorie principal o memorie lent de dimensiuni mari i o memorie rapid de dimensiuni mai mici. Acest lucru se ntmpl din cauz c memoria rapid este mult mai scump dect cea lent i atunci mecanismul memoriei cache se folosete n scopul creterii performanelor sistemului n condiii de pre acceptabile. Funcionarea memoriei cache se bazeaz pe aducerea anumitor secvene de program, secvene ce sunt necesare la un moment dat, din memoria lent n memoria rapid (memoria cache) figura 5.6.

Figura 5.6. Principiul cache-ului

Funcionarea acestei memorii se bazeaz pe principiul localitii. Exist dou feluri de localizarea a informaiei: localizarea spaial i localizarea temporal:

localitate spaial: dac la un moment dat sunt necesare nite date, n curnd vor fi necesare probabil date aflate n apropierea lor n memorie; localitatea temporal: cnd sunt folosite nite date, foarte adesea acestea se vor folosi de mai multe ori.

Memoria cache folosete acelai fel de interfa ca i memoria principal a sistemului. Acest lucru nseamn c nu ne vom da seama de prezena sau lipsa memoriei cache dect prin viteza de calcul a sistemului. 83

Datorit faptului c eficiena memoriei cache depinde n bun msur de programul executat, pentru determinarea performanelor memoriei cache se fac mai multe determinri cu ajutorul diferitelor tipuri de programe i apoi se realizeaz o medie. Eficiena unui cache se msoar n procentajul de situaii cnd datele cutate se gsesc n cache H (hit ratio): din 100 de accese, cte gsesc datele n cache? Opusul acestei valori este miss ratio M (rateuri). Procentajele astea se msoar rulnd o mulime de programe i fcnd media. Avem desigur, dac socotim 33% ca 1/3: H=1-M Dac timpul de citire din cache este Tc (``hit time''), iar timpul pe care l pierdem cnd ratm este Tm (``miss time'') atunci putem msura timpul mediu de acces la memoria cu cache cu urmtoarea formul: T = Tc x H + Tm x M Trebuie observat faptul c timpul unei ratri (Tm) nu este neaprat egal cu timpul de citire din memoria lent (Tl), pentru c n cazul unei ratri, nti trebuie s ne dm seama dac datele sunt n cache, iar dac nu sunt s accesm memoria lent. Cache-ul va fi eficient dac T < Tl. Valoarea mrimii H depinde de mrimea cache-ului: pentru un cache de mrimea memoriei lente (caz limit), toate datele pot fi inute n memoria rapid, i vom avea H=1. Pentru un cache de mrime 0, H=0, pentru c niciodat datele nu se gsesc n el. Relaia ntre mrimea cache-ului, a memoriei lente i H nu este o linie dreapt, ci crete repede la nceput (figura 5.7). Din cauza asta un cache relativ mic ca mrime are o importan mare ca eficien.

Figura 5.7. Performana cache-ului

84

Eficiena depinde i de raportul dintre Tc i Tm; n anumite cazuri Tm este de ordinul a 10000 x Tc, deci chiar un H mic poate s nsemne mult. Pe lng dimensiuni i timpi de acces, exist o mulime de detalii prin care cache-urile difer ntre ele, datorate faptului c mediile de stocare a informaiei nu se comport chiar la fel. Iat unele dintre posibilele diferene: 1) Mrimea blocului de date: cteodat este mai economic s se transporte mai multe date deodat din memoria lent; cache-urile aduc atunci mai mult dect li se cere (un calup) i pstreaz totul, n ideea (sugerat de principiul de localitate spaial) c i vecinii obiectului accesat vor fi cutai n curnd. Unitatea de transfer ntre cache i memoria lent e numit bloc. 2) Politica de nlocuire: dup o vreme cache-ul se va umple cu date, i totui altele vor trebui aduse. Decizia despre care date trebuie scoase afar este foarte important pentru eficien; ea este politica de nlocuire (replacement policy). Exist o sumedenie de politici; iat-le doar numite pe unele; orice carte de sisteme de operare va descrie cele mai multe dintre ele: politica aleatoare (random), politica circular (round robin), politica ``cel mai rar folosit'' (least frequently used), politica ``primul intrat - primul ieit'' (first in, first out), politica ``cel mai demult folosit'' (least recently used), politica ``setul de lucru'' (working set), politica ``optim'' (optimal), politica ceasului, politica celei de-a doua anse (second-chance). 3) Politica de scriere: odat cu prezena unui cache, datele efectiv devin duplicate: exist o copie n cache. Cnd se fac scrieri, care dintre copii trebuie modificat? Una sau amndou? n funcie de circumstane exist varii rspunsuri la aceast ntrebare. 4) Metoda de identificare: cnd se dorete ceva din memoria lent se indic adresa la care acel obiect se gsete. Principiul transparenei (faptul c interfeele sunt identice) implic faptul c n cache datele s fie cutate tot dup aceast adres; dar cum cache-ul este mic, adresele din memoria extern (= memoria lent) nu reprezint adrese i n memoria rapid. Cum gsesc datele? Rspunsul este dat de metoda de identificare i strns legat de politica de nlocuire, pentru c datele trebuie cutate acolo unde puteau fi aduse. 5) Timpul de via al informaiei: dac dintre copiile pe care le avem (una n cache i alta n memorie) una se schimb? Care este cea bun dup aceea? Ce trebuie fcut cu cealalt? Cu ce ocazie trebuie fcut schimbarea? 5.2.2. Cache-ul de disc Orice sistem de operare modern (mai puin MS-DOS) are un cache de disc. (Chiar i pentru MS-DOS exist smartdrive sau ncache de la Norton). Cache-ul de disc este probabil una din cele mai mari surse de eficien ntr-un sistem de operare. Acesta se datorete faptului c diferena ntre timpul de acces la disc i cel la memorie este uria (timpul de acces al unei memorii este de circa 60-70 de nanosecunde, adic 60x10-9 s, iar timpul de acces al unui disc este de ordinul a 10 milisecunde, adic 10x103 s. Cache-ul de disc este o structur de date care conine un vector de blocuri de 85

mrime egal. Discul este la rndul lui mprit n blocuri de aceeai dimensiune. Cnd utilizatorul cere un octet de pe disc, blocul care conine acel octet este ncrcat n cache, eventual scond un alt bloc afar. Din cele 5 puncte de vedere indicate anterior, un cache de disc are urmtoarele caracteristici: 1) Mrimea blocului: Blocuri mari (512 octei - 8 Kb). 2) Politica de nlocuire: Politica de nlocuire cea mai frecvent este cea de excludere a datelor nefolosite de cel mai mult timp (Least Recently Used). 3) Politica de scriere: Cache-urile de disc sunt n general ``write-back''. Asta nseamn c atunci cnd se scrie pe disc, modificrile sunt fcute doar n cache. Ele sunt mutate pe disc doar cnd blocul respectiv este dat afar, sau cnd acest lucru este cerut explicit de utilizator. 4) Metoda de identificare: Pentru a gsi un bloc n cache se folosesc algoritmi de hash, care sunt foarte eficieni (orice carte elementar de algoritmi descrie hashurile). 5) Timpul de via al informaiei din cache: Pentru a preveni catastrofele, sistemele de operare ``golesc'' (scriu toate blocurile modificate) din cache pe disc periodic (de ex. la 30 de secunde). 5.2.3. Cache-ul microprocesorului Un microprocesor la 200 de Megahertzi (un Pentium pro, de pild) are un ciclu de instruciune de1/(200x106) = 5 nanosecunde. O instruciune poate dura un numr variabil de cicluri, ntre 1 i cteva zeci. Executarea unei instruciuni nseamn: citirea ei din memorie, decodificarea, executarea, memorarea rezultatelor. Dac accesul la memorie dureaz 60 de nanosecunde atunci la fiecare citire procesorul trebuie s piard 12 cicluri! Din cauza asta ntre microprocesor i memoria RAM principal se pune un cache construit din memorie rapid, cu timp de acces de 5-10 nanosecunde. Cteodat designerii pun chiar mai mult dect att: dou nivele de cache ntre procesor i RAM: un nivel ceva mai lent, dar mai mare (pentru un PC ntre 64Kb i 512Kb de obicei), i un cache construit chiar n microprocesor, de ordinul a 1-10Kb, mult mai rapid. Aceste cache-uri se implementeaz folosind hardware specializat. 1) Mrimea blocului: blocurile sunt mici 1 - 16 octei. 2) Politica de nlocuire i 4) Metoda de identificare: Exist dou clase mari de cache-uri de microprocesor, i una intermediar. Ele difer prin locurile din cache n care un octet din memoria extern poate fi plasat. Cele dou mari varieti sunt: cache-ul cu adresare direct, n care locul fiecrui octet este unul i precis calculat, i cache-ul asociativ, n care un octet din memoria extern poate fi plasat n orice loc din cache.

86

5.2.4. Cache-ul cu adresare direct (direct mapped)

Figura 5.8. Cache-ul cu adresare direct

De obicei chiar structura adresei este folosit la cutare. Figura 5.8 arat cum este plasat un anume bloc n cache: biii de la sfritul adresei blocului dau i posibila poziie a blocului n cache. Biii din nceputul adresei blocului constituie verificarea dac blocul este cel aflat n cache (mai multe blocuri candideaz pentru aceeai poziie; cel care se afl nuntru este indicat prin etichet (tag)). n fine, ultimii bii din adres indic poziia octetului n blocul de date. Marele avantaj al schemei directe este c dat fiind adresa, poziia n cache a blocului este unic determinat, i nu trebuie fcut nici o cutare. Politica de nlocuire nu exist din acelai motiv: nu poi alege n ce loc s aduci un bloc. Din cauza asta funcia de cutare i cea de nlocuire sunt identice. 5.2.5. Cache-ul cu adresare asociativ (fully associative) Cache-ul cu adresare asociativ se bazeaz pe un dispozitiv hardware foarte simpatic, care se numete memorie asociativ (din cauza prezenei ei i capt cache-ul numele). O memorie obinuit ofer dou operaii: (a) dndu-se o adres, citete coninutul i (b) dndu-se o adres i o valoare scrie aceast valoare acolo. 87

Pe lng aceste operaii o memorie asociativ mai ofer nc una: dndu-se o valoare, poate spune la care adres se gsete ea. O memorie asociativ nu este tehnologic greu de construit, ns este un dispozitiv relativ costisitor. Un cache asociativ folosete o memorie asociativ pentru a memora adresele externe ale blocurilor care corespund fiecrui bloc din cache. Un bloc poate acum ocupa orice poziie n cache; cnd este cutat memoria asociativ spune unde se afl. Politica de nlocuire va fi ns ceva mai complicat, oricare din schemele nirate fiind un candidat. 5.2.6. Cache-ul parial asociativ (set-associative) Putem s ne imaginm un cache parial asociativ ca o colecie de mai multe cache-uri directe care lucreaz n paralel. Fie k numrul de astfel de cache-uri directe. (un astfel de cache se numete ``associative on k ways'' -- asociativ pe k direcii). Ideea este simpl: cnd caut o adres folosesc adresare direct n toate cele k cache-uri directe simultan. Dac blocul se gsete ntr-unul am rezolvat problema. Dac nu, aleg unul dintre ele pentru nlocuire. Numele este de ``parial asociativ'', pentru c plasamentul n cele k blocuri posibile este oricare, ca la un cache asociativ. S revenim la discuia privind cache-urile microprocesoarelor. 3) Politica de scriere, 5) Timpul de via al informaiei din cache: Dac mai multe microprocesoare sunt legate la aceeai memorie, exist riscul ca fiecare s fac modificri n propriul cache, obinnd astfel rezultate eronate, aa cum arat i figura 5.9. Din cauza asta cache-ul se face adesea ``write-through'': toate modificrile se fac simultan n memorie i n cache. Cache-urile monitorizeaz modificrile fcute n memorie de celelalte cache-uri i invalideaz copiile datelor pe care le posed i care au fost modificate. (Un astfel de cache se numete ``snooping cache'': cache care trage cu urechea, s vad dac altcineva nu modific memoria extern).

Figura 5.9. Acces prin dou cache-uri

88

5.3.

Gruparea memoriilor

Aa cum s-a artat, una din caracteristicile importante ale memoriei este reprezentat de capacitatea acesteia. Capacitatea reflect cantitatea de informaie ce se poate stoca ntr-o memorie i este strns legat de structura acesteia. Gruparea memoriilor reprezint metoda de cretere a capacitii de stocare prin conectarea mpreun a mai multor memorii de capacitate mai mic. Pentru a vedea care sunt metodele de grupare a memoriilor vom studia mai nti semnalele unei memorii. O memorie are nevoie de mai multe semnale de intrare i poate furniza mai multe semnale de ieire. Aa cum s-a artat n paragraful 5.1, o memorie este alctuit din mai multe celule de o anumit dimensiune (un anumit numr de bii) care sunt identificate prin adres. Din acest punct de vedere, o memorie necesit un anumit numr de adrese cu ajutorul crora se identific fiecare celul de memorie n parte. Semnalele de adres sunt semnale binare (pot avea valoarea zero sau unu), fiecare celul de memorie fiind identificat de o combinaie unic de pe magistrala de adrese. Astfel, dac o memorie are, spre exemplu, opt celule de memorie, atunci sunt necesare opt combinaii distincte de cifre zero sau unu. Cele opt combinaii distincte pot fi obinute cu ajutorul a log2 8 = 3 cifre binare. Altfel spus, cu ajutorul a trei cifre binare se pot obine 23 = 8 combinaii distincte: 000, 001, 010, 011, 100, 101, 110 i 111. Celula de memorie selectat permite citirea sau scrierea simultan a tuturor biilor pe care aceasta i conine. Din acest motiv, o memorie necesit pe lng liniile de adres i un anumit numr de linii de date, numrul liniilor de date fiind egal cu numrul de bii ai celulei de memorie. Liniile de date trebuie s fie bidirecionale (ca sa permit citirea sau scrierea biilor celulei de memorie) cu trei stri (s poat trece n starea de nalt impedan) pentru a permite conectarea n paralel a mai multor memorii. Este evident c n cazul memoriilor ROM liniile de date nu sunt bidirecionale din cauz c aceste memorii nu pot fi dect citite dar trebuie, de asemenea s aib starea de nalt impedan pentru a putea fi conectate la magistrala de date a sistemului. Cea de a treia categorie de semnale necesare unei memorii sunt semnalele de comand. Semnalele de comand principale ale unei memoriei sunt: semnalul de comand al seleciei circuitului (Chip Select notat CS) care este un semnal de intrare n memorie i care determin starea magistralei de date (acest semnal nu poate lipsi la nici un tip de memorie): o CS = 1, pe magistrala de date circul semnale, fiecare linie a magistralei putnd avea un semnal care este n starea unu sau zero logic (n memorie se poate scrie sau din memorie se poate citi); o CS = 0, pe magistrala de date nu circul semnale, aceasta fiind n starea de nalt impedan; semnalul de comand al citirii din memorie sau scrierii n memorie ( Re ad / Write - notat R / W ) care este un semnal ce determin direcia magistralei de date (acest semnal lipsete la memoriile ROM): o R / W = 1 , din memorie se citete, sensul magistralei de date fiind din memorie spre exterior; la un moment dat se citesc biii celulei 89

de memorie, selectate de combinaia aflat pe magistrala de adrese; o R / W = 0 , n memorie se scrie, sensul magistralei de date fiind din exterior spre memorie; la un moment dat se scriu biii celulei de memorie, selectate de combinaia aflat pe magistrala de adrese; Pe lng aceste semnale, mai exist o serie de semnale de comand diverse, cum ar fi semnalele de remprosptare, care nu sunt implicate n funcionarea de baz a memoriei. Memoria, ca matrice, este definit de declaraia: memoria: array (0p) of byte unde p reprezint numrul de celule de memorie cu dimensiunea de un octet (byte). O astfel de memorie are nevoie de log 2 n linii de adrese i opt linii de date. Bineneles c celula de D0 A0 memorie poate avea i D1 A1 dimensiunea de un cuvnt . . memorie (word) sau pointer sau adrese . . date . de . dimensiuni mai mici cum ar fi n Dm An 2 xm 1 bit sau 4 bii. bii n continuare vom CS considera memorii generice care au adrese, date i comenzi R /W semnalele de comand: CS i R / W , aa cum se arat n Figura 5.10. Schema bloc a memoriei. schema bloc a unei memorii generice din figura 5.10. Capacitatea memoriei poate fi exprimat de ctre o relaie similar cu relaia (5.1). capacitatea = 2numrul de linii de adres (n+1) x numrul de linii de date (m+1) (5.1)

De exemplu, capacitatea unei memorii cu zece linii de adres i opt linii de date va fi: C = 210 x 8 bii = 1024 x 8 bii = 1k octet = 1ko Capacitatea exprimat n forma dat de ecuaia 5.1 se numete capacitate structural deoarece permite determinarea structurii unei memorii. Pentru exemplul anterior avem: C = 1024 x 1 octet, care ne permite s aflm structura memoriei: 10 linii de adres ( log 2 1024 = 10 ), care pot selecta n mod univoc 1024 ( 210 = 1024 ) celule de memorie care au cte 8 bii (magistrala de date este de un octet). Capacitatea se poate exprima i prin valoarea ei absolut, rezultatul nmulirii numrului de celule de memorie cu dimensiunea acestora, obinndu-se numrul de 90

celule elementare de memorie cu dimensiunea de un bit (de exemplu 1ko), valoare care ns nu ne mai d informaii asupra structurii. O memorie de 1ko poate fi: o memorie de 1024 x 1 octet sau o memorie de 2048 x 4 bii. Gruparea memoriilor poate face n trei moduri: gruparea n scopul creterii numrului de linii de date ale memoriei, numrul de linii de adres rmnnd neschimbat; creterea numrului de linii de date a memoriei nseamn de fapt creterea numrului de bii ai celulei de memorie (numrul de bii citii sau scrii din/n memoria respectiv) ai memoriei rezultate. Evident c mrirea capacitii celulei de memorie va determina creterea corespunztoare a capacitii totale a memoriei; gruparea n scopul creterii numrului de linii de adres a memoriei, numrul liniilor de date rmnnd nemodificat; creterea numrului de linii de adres nseamn de fapt creterea numrului de celule de memorie ai memoriei rezultate, capacitatea celulei (numrul de linii de date) rmnnd neschimbat; i n acest se produce modificarea corespunztoare a capacitii memoriei; gruparea mixt n care se crete att numrul de linii de adres ct i numrul liniilor de date.

5.3.1. Creterea capacitii memoriei prin creterea numrului de linii de date

Creterea numrului de linii de date este necesar, spre exemplu, atunci cnd dispunem de memorii cu opt linii de date (un octet) i dorim s le conectm la un sistem care are o magistral de date cu 16 linii (un cuvnt word). Vom exemplifica modul de grupare pe acest exemplu. Presupunem c avem nevoie de o memorie de 8kw (8 kilo word 8 kilo cuvinte) i nu dispunem dect de memorii de 8kb (8 kilobyte 8 kilo octei). Se observ faptul c ntre memoriile disponibile i cele necesare nu difer dect numrul de linii de date (necesar 16, existent 8), numrul de linii de adres fiind acelai (8192 de celule nseamn log 2 8192 = 13 linii de adres: A0 la A12). Vom determina mai nti cte memorii sunt necesare. Capacitatea absolut a memoriei ce trebuie obinut este: C = 8192 x 16 bii = 131 072 bii. Capacitatea memoriei existente este: C = 8192 x 8 bii = 65 536 bii. Rezult deci c pentru a obine o memorie de 8 kword avem nevoie de 131072/65536 = 2 memorii de 8 kbytes. Modul de conectare a celor dou memorii de 8 kb pentru obinerea unei memorii de 8 kiloword este prezentat n figura 5.11.

91

Se observ c pentru gruparea memoriilor n vederea extinderii numrului de linii de date, liniile de adres i liniile de comand se leag n paralel iar liniile de date se pun mpreun formnd magistrala de date a memoriei rezultate.

U1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 CS1 CS2 OE WE 10 9 8 7 6 5 4 3 25 24 21 23 2 20 26 22 27 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 CS1 CS2 OE WE 5962-38294 U2 10 9 8 7 6 5 4 3 25 24 21 23 2 20 26 22 27 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 CS1 CS2 OE WE 5962-38294 D0 D1 D2 D3 D4 D5 D6 D7 11 12 13 15 16 17 18 19 D0 D1 D2 D3 D4 D5 D6 D7 11 12 13 15 16 17 18 19 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0

MEMORIE DE 8K X 16 BITI
Figura 5.11. Gruparea memoriilor pentru creterea numrului liniilor de date.

5.3.2. Gruparea memoriilor pentru creterea numrului de linii de adres

Creterea numrului de linii de adres este necesar pentru creterea capacitii unei memorii fr modificarea dimensiunii celulei de memorie. Pentru a explica principiul vom considera un exemplu simplu. S presupunem c dorim s obinem o memorie de 8 x 1 bit cu ajutorul unor memorii de 4 x 1 bit. Att memoria pe care dorim s-o obinem ct i memoriile disponibile au celule de aceeai dimensiune (un bit). Ceea ce se dorete este creterea numrului acestor celule. Memoriile disponibile, cele de 4 x 1 bit, necesit dou linii de adres pentru selectarea uneia din cele patru celule iar memoria care se dorete a fi obinut, cea de 8 x 1 bit are 92

nevoie de 3 linii de adres. Rezult c numrul de linii de adres trebuie crescut de la dou linii la trei. Vom analiza acum modul de adresare al celulelor de memorie. Fiecare celul a memoriei este adresat n mod univoc de ctre o combinaie binar de pe magistrala de adrese aa cum se arat n tabelul 5.3. Din acest tabel se observ faptul c cele patru combinaii ale liniilor de adres A1A0 se TABELUL 5.3. repet de dou ori la memoria de 8 x 1 bit, o memorie 4x1bit memorie 8 x 1bit dat pentru A2 = 0 i o dat pentru A2 = 1. A1 A0 A2 A1 A0 Rezult c este posibil s realizm memoria 0 0 0 0 0 de 8 x 1 bit cu ajutorul a dou memorii de 4 x 0 1 0 0 1 1 bit este necesar sa selectam una din 1 0 0 1 0 memoriile de 4 x 1 bit cnd A2 = 0 i s 1 1 0 1 1 selectm cealalt memorie de 4 x 1 bit cnd 1 0 0 A2 = 1. Rezult c semnalele de selecie a memoriilor de 4 x 1 bit vor fi folosite pentru 1 0 1 crearea liniei de adres A2 i va trebui s 1 1 0 crem un nou semnal de selecie pentru 1 1 1 memoria rezultat. Vom exemplifica pe acelai tip de memorie de 8k x 1 octet. Prin gruparea acestora n scopul creterii numrului de linii de adres (creterea numrului de celule de opt bii) se va crea o noua linie de adres (A13) memoria obinut avnd 16k x 1 octet. n acest caz, liniile de date se cupleaz n paralel deoarece dimensiunea celulei de memorie rmne nemodificat (figura 5.12). Memoria inactiv la un moment dat are
U1

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 CS1 OE WE CS2


U5A 1 2 1 3 2 74LS04 74LS08 U4A 1 3 2 74LS08 U3A

10 9 8 7 6 5 4 3 25 24 21 23 2 20 26 22 27 10 9 8 7 6 5 4 3 25 24 21 23 2 20 26 22 27

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 CS1 CS2 OE WE 5962-38294 U2 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 CS1 CS2 OE WE 5962-38294

D0 D1 D2 D3 D4 D5 D6 D7

11 12 13 15 16 17 18 19

D0 D1 D2 D3 D4 D5 D6 D7

D0 D1 D2 D3 D4 D5 D6 D7

11 12 13 15 16 17 18 19

MEMORIE DE 8K X 1 OCTET

Figura 5.12. Gruparea memoriilor prin extinderea liniilor de adres.

93

liniile de date n starea de nalt impedan (prin comanda seleciei circuitului respectiv) i n acest fel liniile de date ale celor dou memorii pot fi cuplate mpreun.
OBSERVAIE: din cele dou exemple prezentate anterior rezult valoarea capacitii memoriei finale este multiplu ntreg de valoarea capacitii memoriei finale. 5.3.3. Gruparea mixt

Gruparea mixt const n creterea att a numrului de linii de date ct i a creterii numrului de linii de adres ceea ce nseamn creterea dimensiunii celulei de memoriei i a numrului de celule. Pentru a realiza o astfel de grupare se realizeaz mai nti gruparea memoriilor n vederea creterii numrului de linii de date dup care memoriile obinute se grupeaz prin creterea numrului de linii de adres, obinndu-se n final memoria dorit. Vom exemplifica acest lucru prin realizarea unei memorii de 2k octei cu ajutorul unor memorii de 1k x 4 bii. Capacitatea absolut a memoriei rezultate este: C = 2 x 1024 x 8 bii = 16384 bii Aceast capacitate trebuie s fie multiplu ntreg de capacitatea memoriilor iniiale. Memoria iniial are capacitatea absolut: C = 1024 x 4 bii = 4096 bii. Rezult c sunt necesare 16384 : 4096 = 4 memorii de 1k x 4 bii. Aceste patru memorii se vor grupa astfel: mai nti memoriile se grupeaz dou cte dou prin extinderea numrului de linii de date, obinndu-se dou memorii cu dimensiunea de 1k x 8 bii. Cele dou memorii obinute se grupeaz prin extinderea numrului de linii de adres, rezultnd memoria final de 2k octei.

5.4.

Adresarea memoriilor

ntr-un sistem de calcul, principalul modul master care genereaz adrese este unitatea central. Numrul total de adrese pe care-l poate genera unitatea central reprezint spaiul maxim de adresare. Acest spaiu se mparte, conform semnalelor de comand generate de unitatea central, ntre memorie i porturi. Exist mai multe moduri de adresare a acestora n funcie de utilizarea spaiului maxim de adresare. Adresarea memoriei (sau a porturilor) poate fi absolut dac la formarea adresei se folosesc toi biii de adres sau relativ (care se mai numete i redundant) dac se folosesc numai o parte din biii de adres.
5.4.1. Adresarea absolut

La adresarea absolut se folosesc toi biii de adres de pe magistrala de adrese pentru selectarea unei locaii de memorie (sau a unui port). 94

Vom explica adresarea absolut printr-un exemplu. adrese pentru Considerm c ntr-un sistem selecia memoriei de 1k magistrala de adrese are 16 linii (A0, valoare n A1, , A15) deci spaiul maxim de zecimal A15A14A13A12A11A10A9A8 A1A0 adresare este de 64 k (216 = 65536). 0 0 0 0 0 0 0 x x x x Pe aceast magistral dorim s 1 0 0 0 0 0 1 x x x x conectm o memorie de 1k 2 0 0 0 0 1 0 x x x x (dimensiunea datelor nu are . . importan aici). Pentru adresarea . . celor 1024 de celule de memorie din . . memoria de 1k avem nevoie de 10 63 1 1 1 1 1 1 x x x x linii de adres (A0, A1, , A9) restul de 6 linii de adres (A15, A14, , x x x x -> orice combinaie ntre A10) fiind folosii la selecia 0000 i 11 11 circuitului. Astfel adresele A0, A1, Figura 5.13. Posibilitile de adresare absolut a , A9 se leag la liniile de adres ale unei memorii de 1k. memoriei iar adresele A10, A11, , A15 se leag printr-un circuit de selecie la intrarea CS a memoriei. n acest fel memoria poate fi aezat la una din cele 64 de adrese posibile din memorie (figura 5.13). Prin adresarea absolut, o locaie de memorie se gsete la o singur adres de memorie.
adrese pentru selecia unei celule din memoria de 1k

5.4.2. Adresarea relativ (redundant)

n cazul adresrii redundante, adresele (sau o parte dintre acestea) nu sunt folosite la selecia memoriei. n acest fel o celul de memorie se poate gsi la mai multe adrese diferite. Relund exemplul din paragraful anterior, dac se leag semnalul de selecie al memoriei de 1k la valoarea unu logic (memorie permanent selectat) i n acest fel se face abstracie de adresele A15, A14, , A10, adresarea unei locaii din aceast memorie este redundant. Astfel, celula de memorie de la adresa 0 se va gsi la 64 de adrese distincte: 0, 400h, 800h, C00h i aa mai departe, pn la adresa FFFFh. Acest lucru se ntmpl deoarece numai adresele A0, A1, , A9 particip la selecia celulei, adresele fiind ignorate.

95

CAPITOLUL 6 PORTURI (INTERFEE)


6.1. Prezentare general

Porturile sunt module destinate conectrii sistemului de calcul cu dispozitivele externe care sunt numite generic dispozitive periferice. La porturi se conecteaz att dispozitivele generale de intrare/ieire (tastatur, monitor) ale calculatorului ct i cele specifice. De asemenea dou porturi de aceeai natur se pot conecta ntre ele n scopul transmiterii informaiei de la un sistem de calcul la altul. Porturile sunt n general circuite de viteze mic, ele fiind conectate la magistralele de vitez mai redus ale calculatorului. O parte din porturile sistemului de calcul au destinaii specifice i poart denumirea de controlere. Dintre acestea mai importante sunt: controlerul de Fig. 6.1. Conectorii pentru porturi n cazul unui calculator personal tastatur, controlerul video, controlerul discului dur (hard disc), controlerul discului flexibil (floppy disc) i controlerul de reea. Alte porturi au destinaii generale, la aceste porturi putnd fi conectate diferite dispozitive periferice; dintre porturile de uz general mai importante fiind portul serial, portul paralel, portul SCSI (Small Computer System Interface) i portul USB (Universal Serial Bus). Datorit faptului c, n general, un port trebuie s realizeze att conversia semnalelor dispozitivelor periferice la semnale compatibile cu semnalele sistemului de calcul, ct i invers, asigurnd circulaia informaiei n ambele sensuri, acestea se mai numesc i interfee. Prin interfa se nelege un ansamblu format din echipamente i programe destinat cuplrii ntre dou sisteme cu caracteristici diferite. Dispozitivele periferice se conecteaz la porturi prin intermediul unor conectori, un exemplu fiind prezentat n figura 6.1. Fiecare port are alocat o adres (un numr) pe care unitatea central o folosete pentru identificarea portului respectiv n schimbul de date cu acesta. Este foarte important ca toate porturile dintr-un calculator s aib adrese diferite. Dac dou porturi au aceeai adres, atunci apare un conflict din cauz c unitatea central nu va fi capabil s disting de la care port sosesc informaiile. n general activitatea de atribuire a adreselor tuturor porturilor dintr-un sistem de calcul se face n mod automat de ctre sistemul de operare. Uneori, dac numrul 96

perifericelor este mare sau din generaii diferite, se poate ntmpla ca sistemul de operare s nu poat realiza alocarea corect a adreselor perifericelor. n acest caz alocarea adreselor se poate face manual de ctre operator. Porturile fiind n general componente lente ale sistemului de calcul, este neeconomic ca unitatea central s lucreze la un moment dat numai cu un port. Modul de lucru cu un port se desfoar simplificat n felul urmtor: unitatea central trimite o comand la un port dup care continu rezolvarea altor sarcini. n momentul n care portul este capabil s rspund solicitrii, ntrerupe activitatea curent a unitii centrale, primete o nou comand, dup care unitatea central nu se mai ocup de port pn la o nou ntrerupere. n felul acesta orict de lent este un port el nu scade viteza de lucru a unitii centrale. Acest mecanism necesit, pe lng alocarea unei adrese i alocarea unei ntreruperi (un numr) fiecrui port n aa fel nct n Fig. 6.2. Alocarea adresei i ntreruperii la momentul lansrii unei cereri de portul serial COM1 ntrerupere, unitatea central a calculatorului s poat determina care este portul care a cerut ntreruperea. Evident c i n cazul ntreruperii este bine ca fiecare port s dispun de o ntrerupere separat. Dei aceast condiie nu este la fel de restrictiv ca cea n cazul adresei, n unele cazuri mai multe porturi putnd avea alocat aceeai ntrerupere, n marea majoritate a cazurilor numrul ntreruperii trebuie s fie diferit de la un port la altul. Din cele artate rezult c un port necesit alocarea din partea sistemului de operare sau a programatorului a dou numere: adresa i numrul ntreruperii, fapt ce-l individualizeaz fa de celelalte porturi din sistem. n figura 6.2 este prezentat modul n care sistemul de operare Windows95 ofer informaii despre setrile unui port. Din aceast Fig. 6.3. Parametrii portului serial figur se vede c portul de comunicaii COM1 are alocate adresele de la 03F8h la 03FFh i ntreruperea 04. 97

Portul serial al calculatorului necesit o atenie special din cauz c el este n general portul de comunicaii. Prin intermediul acestui port se pot transmite date la distan n mod serial asincron. Transmisia serial este metoda cea mai ieftin de a schimba date ntre dou echipamente numerice aflate la distan. Dei transmisiile seriale nu sunt transmisii de date de vitez mare ele prezint avantajul c datele sunt transmise pe un singur canal de comunicaie i deci nu sunt necesare cheltuieli mari. Modul serial de transmisie presupune c la un moment dat s se transmit un singur bit. Asta nseamn c biii unui octet vor fi transmii la opt intervale de timp distincte. n cazul transmisiei seriale este necesar ca att echipamentul care transmite datele (emitorul) ct i echipamentul care primete datele (receptorul) s aib aceeai parametrii ai transmisiei. Pentru transmisia serial asincron parametrii transmisiei sunt: viteza de transmisie care se msoar n bii pe secund (bps), numrul de bii transmii ntr-un cadru, paritatea, numrul de bii de stop i protocolul de control al fluxului de date. n figura 6.3 este prezentat un exemplu de stabilire ai parametrilor transmisiei. Standardul adoptat pentru interfaa seriala este standardul RS 232. Porturile sunt n general dispozitive programabile. Asta nseamn c ele accept prin nscrierea unor cuvinte de comand n port. Din acest motiv, pentru funcionarea corect a unui port nu sunt suficiente numai alocarea adresei i a ntreruperii ci este necesar i programarea portului. Pentru simplificarea programrii i utilizrii portului se folosesc nite programe specifice numite drivere. Aceste programe sunt ncrcate n memorie de ctre sistemul de operare i ele constituie o interfa ntre programele utilizatorului i port. n figura 6.4 este reprezentat schematic modul de funcionare a unui driver. Programele driver sunt furnizate de ctre productorii de echipamente periferice i asigur funcionarea optim a acestora. Din acest motiv utilizatorul unui sistem de calcul nu are dect sarcina de a obine de la productorii de echipamente periferice Fig. 6.4. Funcionarea unui program driver a versiunilor noi ale driverelor i s le pentru un port instaleze pe calculator. Noua tehnologie de realizare a porturilor inteligente s-a extins tot mai mult. Cu ajutorul acestei tehnologii, utilizatorul este degrevat de sarcina de a mai configura porturile sistemului, acestea fiind recunoscute automat i programate corespunztor de ctre programele cu care este nzestrat sistemul de calcul. Aceast tehnologie numit PnP (Plug and Play) permite utilizatorului s realizeze extinderi ale sistemului de calcul simplu i comod, aa cum arat i numele tehnologiei, prin simpla montare a componentei noi n sistemul de calcul, fr a mai fi necesare alte operaii suplimentare. n continuare vor fi prezentate porturile dezvoltate de firma Intel pentru sistemul de calcul prevzut cu unitatea central I8086. Datorit faptului c aceste dispozitive au fost larg rspndite ele au devenit un standard "de facto" pentru circuitele dezvoltate ulterior. 98

6.2.

Interfaa serial programabil 8251

Interfaa serial programabil 8251, cunoscut i sub numele de Receptor Transmitor Universal 1 28 D1 D2 Sincron/Asincron (USART), este 2 27 D0 D3 realizat n tehnologia NMOS, pe o 3 26 Vcc RxD pastil cu 28 de terminale. Ca interfa 4 25 RxC MASA serial de I/E accept date, sub form de 5 24 DTR D4 caractere, transmise n paralel, de ctre 6 23 RTS D5 unitatea central de prelucrare i le 7 8251 22 DSR D6 convertete ntr-un format serial, pentru a 8 21 RESET D7 fi transmise ctre un echipament de 9 20 CLK TxC ieire. n acelai timp, poate recepiona 10 19 TxD WR date transmise serial, de ctre un 11 18 TxE CS echipament de intrare, convertindu-le n 12 17 CTS C/D caractere, ce se transfer n paralel, ctre 13 16 SYNDET RD unitatea central de prelucrare. 14 15 TxRDY RxRDY Interfaa semnalizeaz ctre unitatea central de prelucrare, n cazurile n care Figura 6.5. Semnificaia terminalelor poate accepta un nou caracter, n vederea interfeei seriale programabile 8251. transmisiei sau cnd a recepionat un D7-D0 - conexiuni la magistrala de date a caracter, pentru unitatea centrala. Microsistemului (bidirecional); Interfaa poate fi programat pentru RESET - aducere n condiii iniiale (intrare); diverse opiuni privind funcionarea, iar CLK - ceasul dispozitivului (intrare); starea ei poate fi citit, n orice moment, C/D - semnal de selecie: comand/data de ctre unitatea central de prelucrare. (intrare); RD - citete data sau starea pe magistrala n figura 6.5 sunt prezentate D7-D0 (intrare); semnificaiile terminalelor iar n figura WR - scrie data sau comanda de pe 6.6 schema bloc a interfeei seriale magistrala D7-D0 (intrare); programabile 8251. CS - selecie circuit (intrare); Comunicaia serial, cu DSR - indicator echipament de date pregtit (intrare); echipamente locale sau plasate la DTR - indicator terminal de date pregtit (ieire); distan, legate prin modemuri, poate fi CTS - indicator anulare n vederea realizat de ctre interfaa 8251, fie sub Transmisiei (intrare); forma asincron, fie sub forma sincron. RTS - indicator cerere n vederea transmisiei n cazul transmisiei asincrone (fig. 6.7) (ieire); TxD - ieire serial de date (ieire); fiecrui caracter manipulat i se adaug TxRDY - transmitor pregtit pentru a primi date informaia de cadru, constnd dintir-un pe magistrala D7-D0 (ieire); bit de START, definit ca zero logic i TxE - transmitor vid, nu are date de unul sau doi bii de STOP, definii ca unu transmis (ieire); logic. Frontul negativ al bitului de TxC - ceasul pentru transmisie serial (ieire); RxD - intrare serial (intrare); START indic receptorului uceputul RxRDY - un caracter este pregtit pentru a fi procesului de asamblare a unui caracter transmis pe magistrala D7-D0 (ieire); din fluxul serial de bii, care urmeaz, RxC - ceasul pentru recepie serial (intrare); precum i sincronizarea cu SYNDET forare sau detecie sincron de date transmitorul. Sincronizarea are loc pe (bidirecional); 99

tampon stare

tampon date recepie

tampon date emisie/comenzi

RESET CLK C/D RD WR CS DTR DSR RTS CTS

Logica de comand citete/ scrie

Transmitor (P S) Comanda emisie

TxD TxRDY TxE TxC RxRDY SYINDET RxC RxD

Comand MODEM

Comand recepie Recepie (S P)

Figura 6.6. Schema bloc a interfeei seriale programabile 8251

durata transmisiei unui singur caracter. Bitul sau biii da STOP, adugai la sfritul caracterului, asigur tranziia necesar pentru bitul de START al unui eventual nou caracter. Aceasta permite adaptarea receptorului la viteza de lucru a transmitorului. Dac ceasul receptorului este puin mai rapid dect al transmitorului, primul va recepiona caracterele cu pauze ntre ele, dar le va recepiona corect.
stare MARK bii de date bit de start 5-8 bii bit de paritate 1-2 bii de stop

Figura 6.7. Formatul asincron pentru transmisia serial.

n cazul transmisiei sincrone (fig. 6.8), caractere se asambleaz sub forma unor nregistrri, adugndu~se caractere de cadru la fiecare nceput de nregistrare. Caracterele de cadru (SYN) sunt folosite de catre receptor pentru a determina nceputul unei noi nregistrri. ntruct sincronizarea trebuie meninut pe parcursul unui ir destul de lung de caractere, informaia referitoare la aceasta se extrage din canalul de comunicaie sau de la o surs extern. 100

caracter SYN

caracter SYN

date caractere (6-8 bii/caracter)

Figura 6.8. Formatul sincron pentru transmisia serial.

Comparnd cele dou modaliti de transmisie se constat c, pentru mesaje care depesc 8 caractere, devine mai eficient transmisia sincron. Acest lucru poate fi evideniat prin calculul numrului de bii suplimentari de START, STOP i respectiv de caractere SYN, ce nsoesc datele pentru a fi transmise. Transmisia asincron la distan se efectueaz cu modemuri asincrone, care folosesc semnale de frecvene diferite pentru unu i respectiv zero logic. La transmisia sincron modemul furnizeaz semnalul de sincronizare ctre terminal i impune ca datele s-i fie livrate sincron cu acest semnal. Modemurile sincrone pot opera numai la frecvene prestabilite. Modemul receptor, care are un oscilator, lucrnd pe aceeai frecven, cu cel din modemul transmitor, i ajusteaz faza dup cel din transmitor i interpreteaz orice modificare de faz ca fiind o informaie, o dat. n unele cazuri, cnd se urmrete creterea vitezei de operare, fr a schimba protocolul, se opereaz ntr-un mod hibrid, datele cu format asincron fiind transmise sincron. Aceast transmisie poart numele de isosincron. Interfaa programabil 8251 poate lucra n modurile sincron, asincrun i isosincron. n modul sincron ea manipuleaz caractere de 5, 6, 7 sau 8 bii, cu adugarea i respectiv verificarea unui bit de paritate (par sau impar). Sincronizarea poate fi realizat extern, printr-un hardware adecvat, sau intern, prin detectarea caracterului SYN. Caracterele SYN pot fi diferite. Ele sunt inserate automat, de ctre interfa, la transmisie, pentru a nu pierde sincronizarea, dac software-ul nu furnizeaz la timp datele. La transmisie asincron, interfaa opereaz cu caractere 5,6,7 sau 8 bii i cu adugarea/verificarea bitului de paritate (par sau impar). Se adaug 1 bit de START i 1, l/2 sau 2 bii STOP. Receptorul testeaz cadrarea corect i poziioneaz un indicator, n cazul unei erori. Interfaa poate fi programat sa accepte semnale de ceas, cu frecvena de 16 sau 64 ori mai mare dect cea a semnalelor transmise. Transmisia izosincron se consider ca un caz special de transmisie asincron cu frecvena programat a interfeei ca fiind egal cu cea a ceasului transmitorului/receptorului. Formatele asincron, sincron i izosincron pot fi transmise n modurile semiduplex i duplex, datorit existenei n interfa a unor tampoane duble pentru date. Interfaa 8251 nu asigur toate semnalele de comand pentru un echipament de transmisie a datelor, conform standardului EIA-RS-232-C. Pentru generarea semnalelor neasigurate, de ctre 8251, se poate folosi un port auxiliar, al microprocesorului. Nivelurile de tensiune solicitate de standardul EIA-RS-232-C vor fi realizate prin circuite de atac i recepie corespunztoare (1488 i respectiv 1489). Schema bloc din figura 6.6 const din cinci seciuni, care comunic ntre ele prin intermediul unei magistrale interne. Cele cinci seciuni sunt: receptorul, transmitorul, comanda modemului, comanda pentru citire/scriere i tamponul de I/E. Acesta din urm 101

a fost prezentat mai detaliat i const din urmtoarele subseciuni: tamponul de stare, tamponul de transmisie date i comenzi, tamponul de recepie date. Receptorul primete datele sub form serial, pe terminalul RxD, pe care le asambleaz apoi n cuvinte, n conformitate cu un anumit format. n cazul n care este pregtit s primeasc un caracter, n modul asincron, urmrete tranziia negativ a semnalului RxD. La apariia unei asemenea tranziii declaneaz un generator intern, pentru a putea genera un interval de timp, egal cu jumtatea perioadei unui bit. n cazul n care testul, dup o jumtate de perioad,de bit, indic un nivel cobort, se consider c s-a recepionat bitul de START al unui cuvnt. n continuare se asambleaz cuvntul recepionat serial, prin testarea lui RxD, la fiecare jumtate de interval de bit. Cuvntului asamblat i se ataeaz biii de paritate i de STOP, dup care este transferat pe magistrala intern, n tamponul datelor recepionate, activndu-se semnalul RxRDY, pentru a indica unitii centrale de prelucrare disponibilitatea unui caracter. Dac la testarea bitului de START, se constat c la jumtatea intervalului de bit RxD este la nivel ridicat sau daca s-a activat receptorul pe parcursul transmisiei unui caracter, operaia se anuleaz i se rencepe procesul de testare pentru recepia unui nou caracter. La recepia caracterelor avnd mai puin de 8 bii, examinarea se face la dreapta, iar semnalul RxRDY este activat pentru a indica disponibilitatea unui caracter. La transmisia sincron receptorul nregistreaz un numr specificat de bii, pe care i transfer n registrul tampon de recepie, activnd RxRDY. Pentru a grupa corect biii recepionai, receptorul trebuie sincronizat cu emitorul ceea ce se realizeaz n modul HUNT. In modul HUNT interfaa citete datele serial, bit cu bit, pe linia RxD, comparnd, dup fiecare bit recepionat, coninutul registrului de recepie cu cel care pstreaz caracterul SYN, ncrcat prin program. Modul HUNT ia sfrit cnd cele dou caractere sunt identice, specificndu-se realizarea sincronizrii prin activarea semnalului SYNDET. Dac interfaa a fost programat s accepte dou caractere SYN, sincronizarea se va realiza n momentul n care dou caractere recepionate succesiv sunt identice cu cele dou caractere SYN memorate anterior, prin program, n interfa. Terminalul SYNDET este folosit pentru a sincroniza receptorul, n cazul n care interfaa folosete o sincronizare extern. Modul de lucru HUNT este stabilit prin cuvntul de comand (bitul D7) sau la funcionarea interfeei n regim sincron. Receptorul trebuie activat, n vederea operrii, prin bitul RxE (D2) al cuvntului de comand. n acest caz el va furniza semnalul RxRDY activ, dac are pregtit un caracter pentru a fi transmis pe magistrala DOD7. Pe baza figurii 6.9 se poate explica modul n care se efectueaz recepia caracterelor transmise serial. La recepie, caracterele se asambleaz n RB (fig. 6.9, a), dup care sunt transmise n paralel n registrul tampon RA (fig. 6.9, b). Coninutul lui RA trebuie citit, de ctre unitatea central de prelucrare, n timp ce are loc recepia n RB a unui nou caracter. Dac nu a avut loc citirea cuvntului lui EA, n timpul prestabilit, noul caracter din RB va fi ncrcat n RA, peste vechiul caracter, semnalizndu-se o eroare de ritm, prin poziionarea corespunztoare a bitului 4, n registrul de stare. Transmitorul primete datele n paralel, de la unitatea central, le adaug informaia de cadru, le serializeaz i le transmite la ieirea TxD (fig. 6.9, c). 102

D0 D7

Intrare Ieire date date

Comand Stare

Selecie comand/stare (i scriere/ citire)

Logic de ramificaie

Logic de ramificaie

Selecie comand/stare (i scriere/ citire)

Registrul tampon RA

Registrul tampon RA

Stare

Registrul RB RxD

Registrul TB TxD

Semnale de comand

Figura 6.9. Recepia/Transmisia serial (a) Schema bloc. Intrare serial a caracterului 1 n RB RxD Intrare serial a caracterului 2 n RB Intrare serial a caracterului 3 n RB

Transfer RB <- RA

UCP citete caracterul 1 din RA

UCP citete caracterul 2 din RA

Figura 6.9. Recepia/Transmisia serial (b) Asamblarea caracterelor

Ieire serial a caract. 1 din TB TxD

Ieire serial a caract. 1 din TB

Ieire serial a caract. 1 din TB

Transfer TB <- TA

UCP transfer caracterul 2 n TA

UCP transfer caracterul 3 n TA

UCP transfer caracterul 4 n TA

Figura 6.9. Recepia/Transmisia serial (c) Serializarea caracterelor la transmisie

103

La transmisia asincron se ataeaz un bit de START i, n funcie de modul de programare, dup cei 8 bii de date, se mai adaug un bit de paritate (par sau impar) i 1, 1/2 sau 2 bii de STOP. n cazul transmisiei sincrone nu se introduc bii suplimentari dect n siutaia n care calculatorul nu a furnizat caracterul ctre interfa. Aceasta, n mod automat, va insera caracterul (caracterele) SYN, pentru a asigura o trasmisie continu a biilor. Interfaa nu va iniializa transmisia dect dup ce a primit cel puin un caracter, din partea unitii centrale. Caracterele SYN sunt specificate prin software, n cadrul procedurii de iniializare. Att n modul asincron ct i n cel sincron transmisia este blocat ct timp intrrile TxE i CTS sunt la nivel ridicat. De asemenea, transmitorul poate genera informaia BREAK, reprezentnd o perioad de octei, codificnd SPACE, pe linia de transmisie, pentru a ntrerupe semnalul care se transmite, n cazul comunicaiei duplex. Datele transmise apar, la ieire, la terminalul TxD, fiind controlate, ca vitez de transmisie de ctre semnalul de ceas TxC. Acesta poate fi furnizat, fie de unitatea central, fie de ctre o alt surs. La transmisia asincron datele sunt emise la frecvena de 1/16 sau 1/64 din frecvena lui TXC . Datele sunt strobate de tranziia negativ a semnalului de ceas TxC. Logica de transmisie genereaz dou semnale de comand: TxRDY i TxE. Semnalul TxRDY trece n 1 logic, atunci cnd coninutul registrului TA a fost transferat n, TB, TA putnd fi acrcat cu un nou caracter. TxRDY ia valoarea logic 0, atunci cnd urmtorul octet de date este transferat n TA. Starea TxRDY este disponibi la terminalul TxRDY atunci cnd interfaa poate transmite (CTS=0 i TxE = l). n registrul de stare al interfeei, TxRDY este poziionat n 1 logic, cnd registrul TA este vid, indiferent de valorile semnalelor CTS i TxE. Semnalul TxE este adus n 1 logic, cnd data din TB a fost serializat i transmis, rmnnd n aceast stare pn la ncrcarea lui TB cu coninutul lui TA. La transmisia sincron caracterele SYNC sunt ncrcate n TB prin intermediul lui TA. Dac se va genera o comand, n. timp ce caracterul SYNC este ncrcat n TB, se va obine un caracter eronat, care nu reprezint nici cod de comand, nici cod de SYNC. Seciunea referitoare la comanda modemului (fig, 6.6} genereaz semnalul, DTR , indicnd faptul c interfaa este pregtit i recepioneaz, semnalul DSR , indicnd faptul c modemul este pregtit. Semnalul DTR este generat pe baza poziionrii n 1 a bitului 2 din cuvntul de comand, iar DSR poate fi testat prin examinarea bitului 7 din cuvntul de stare. Tot seciunea de comand a modemului recepioneaz semnalul CTS i genereaz semnalul RTS , indicnd anularea n vederea transmisiei i respectiv - cerere n vederea transmisiei. Comanda intrrilor/ieirilor este asigurat prin logica de comand citete/scrie, din figura 6.6, care decodific semnalele de comand, furnizate de unitatea central. n tabelul 6.1 sunt prezentate semnalele de comand i funciile ndeplinite de ele. Semnalele de comand de citire ( RD ) i scriere ( WR ) pot aprea n orice moment, n raport cu intrarea de ceas, deoarece logica de comand citete/scrie posed circuite proprii de sincronizare. 104

TABELUL 6.1. CS C / D RD 0 0 0 0 1 0 0 0 1 0 1 1 1 x x

WR 1 1 0 0 x

Funcia Unitatea central citete data de la interfa. Unitatea central sitete starea interfeei. Unitatea central scrie data n interfa. Unitatea central scrie o comand n interfa. Interfa neoperaional (magistrala n starea de mare impedan)

Blocul tampon de I/E conine tamponul de stare, tamponul de date pentru recepe i tamponul de date pentru emisie/comenzi. Tamponul de emisie date i de comenzi este comun. Este important Cod comand 16 bii ca, n acest tampon, s nu se nscrie o comand, dac el deja conine o dat. n cazul n care TxRDY este pe Octet 1 Octet 2 nivelul cobort, nu se vor transfera date sau comenzi n interfa Selecie Mod Selecie Comand deoarece, n acest caz, se vor transmite date eronate. a) Coninutul Coninutul memoriei Codurile de comand i strile memoriei pentru pentru interfeei sunt formate ntr-un registru transmisia transmisia de 16 bii i respectiv citite, dintr-un sincron asincron registru de 8 bii. Aceste dou registre sunt manipulate folosind aceeai adres. ntruct cele dou coduri de MOD MOD SYN 1 comand sunt nscrise folosind COMND SZN 2 aceeai adres, ele sunt deosebite prin DATA nceput de mesaj COMND "Selecie Mod" i respectiv "Selecie DATA DATA Comand" (figura 6.10, a). La DATA DATA aplicarea tensiunii de alimentare DATA interfaa trece n ,,Selecie Mod". DATA COMND Dac octetul de comand, forat n DATA DATA COMND interfa, specific modul sincron, DATA MOD logica interfeei ateapt unul sau SYN DATA doua coduri SYN (fig. 6.8). Dup DATA Sfrit de recepionarea codului (codurilor) DATA COMND mesaj SYN, interfaa trece automat n COMND MOD revenirea la ,,Selecie Comand". Aceast situaie MOD COMND selecie. SYN se menine pn la aplicarea unui Mod este DATA semnal RESET sau forarea unei opional. b) comenzi, care aduce interfaa n c) Figura 6.10. Cuvntul de comand pentru interfaa "Selecie Mod". n figurile 6.10, b, c sunt prezentate coninuturile pentru 8251.(a), coninutul zonelor de memorie la transmisiile: sincron (b) i asincron (c). transmisiile sincron i respectiv, asincron. 105

n cazul n care dou programe independente comand aceeai interfa, poate aprea situaia n care, o comand intern de RESET este forat spre interfa, n timp ce ea ateapt un caracter SYN. Aceast comand va fi acceptat n calitate de SYN, fr ca operaia intern de RESET s aib loc. Pentru a evita o asemenea situaie, comanda intern de RESET trebuie precedat de trei octei de comand, cu coninutul egal cu zero.
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 Primul cuvnt de comand modul asincron modul sincron biii 1,0 rata de transmisie 00 invalid; 00 semnaleaz modul sincron 01 rata de transmisie x1; 10 rata de transmisie x 16 11 rata de transmisie x 64 biii 3,2 lungimea caracterului 00 caracter de 5 bii; 00 caracter de 5 bii; 01 caracter de 6 bii; 01 caracter de 6 bii; 10 caracter de 7 bii; 10 caracter de 7 bii; 11 caracter de 8 bii; 11 caracter de 8 bii; biii 5,4 controlul de paritate x0 dezactivat; x0 dezactivat; 01 paritate para; 01 paritate para; 10 paritate impar; 10 paritate impar; biii 7,6 comanda cadrrii Comanda SYN 00 invalid; x0 SYN intern; 01 1 bit de stop; x1 SYN extern; 10 1 1/2 bii de stop; 0x dou caractere SYN; 11 2 bii de stop. 1x un singur caracter SYN. a) b) Al doilea cuvnt de comand bit 0 transmisie activat TxEN 0 dezactivare transmisie; 1 activare transmisie; bit 1 terminal de date pregtit DTR n cazul unui nivel ridicat se va fora n zero ieirea DTR; bit 2 recepie activat RxE 0 dezactiveaz RxRDY; 1 activeaz RxRDY; bit 3 transmite caracterul BREAK:SBRK 0 operare normal; 1 forare TxD la nivel cobort; bit 4 anulare ER 1 anularea tuturor erorilor din registrul de stare (PE,OE,FE); bit 5 cerere de transmisie RTS nivel ridicat se foreaz ieirea RTS n zero; bit 6 RESET intern IR nivel ridicat se foreaz interfaa n mod instruciune; bit 7 intrare n modul HUNT:EH 1 intrare n modul HUNT Figura 6.11. Semnificaia cuvintelor de comand. Primul cuvnt de comand n modul (a) asincron, (b) sincron, (c) al doilea cuvnt de comand.

106

Interpretarea primului cuvnt de comand, de ctre logica din interfa, este prezentat n figura 6.11. Se deosebesc dou interpretri ale acestui cuvnt, n funcie de modul de lucru asincron (fig. 6.11, a) i respectiv sincron (fig. 6.11, b). Primul cuvnt de comand, transmis interfeei, definete modul de operare, n timp ce al doilea cuvnt de comand (Selectie Comand) definete aciuni instantanee, dup cum se arat n figura 6.11, c. Biii din acest cuvnt de comand sunt poziionai n unu sau zero, n general, sub controlul programului. Trebuie menionat faptul ca biii ER, IR si EH sunt anulai n urmtoarele condiii: EH cnd sunt anulate erorile (PE, OE, FE) din registrul de stare, IR cnd interfaa se afl n modul instruciune i EH cnd a fost detectat caracterul SYN. Comanda RxE (Recepie Activat), din cel de-al doilea cuvnt de comand, nu afecteaz logica de recepie, ci numai semnalul RxRDY, Dac, n continuare, datele sunt recepionate de ctre interfa, dup primirea acestei comenzi, ele vor fi asamblate n RA i RB, fr a se genera semnalul RxRDY, spre unitatea central, pentru a semnala caracterele asamblate. n cazul n care se genereaz din nou comanda RxE, este posibil citirea caracterelor asamblate anterior. Pentru a evita aceast situaie, caracterele respective trebuie citite i nlturate imediat ce s-a activat RxEN, n modul asincron, sau EH, n modul sincron. Este important de menionat faptul c semnalele de comand DTR i RTS fiind coatrolate prin biii 1 i respectiv 3, din cuvntul de comand, necesit, pentru o funcionare corect a interfeei, ca la modificarea lor, ceilali bii s nu fie schimbai sau s corespund comenzilor necesare. La citirea strii interfeei seriale programabile biii cuvntului respectiv sunt interpretai conform figurii 6.12. Biii de eroare: (PE - eroare de paritate, OE - eroare de ritm, FE - eroare de cadrare) se poziioneaz n unu la aparia condiiilor de eroare respective. Corectarea erorilor se face prin program.
Cuvntul de stare bit 7 DSR DSR; bitul 3 eroare de paritate PE 1 eroare de paritate; bitul 4 eroare de ritm OE 1 RA nu a fost citit nainte ca RB s fie ncrcat cu un nou caracter; bitul 3 eroare de cadrare (n modul asincron) 1 nu s-a detectat un bit corect de stop la sfritul fiecrui caracter. Figura 6.12. Structura cuvntului de stare. bit 6 SYNDET bit 5 FE bit 4 OE bit 3 PE bit 2 TxE bit 1 RXRDY bit 0 TXRDY

biii 0, 1, 2, 6, 7 condiii pentru semnalele indicate: TxRDY, RxRDY, TxE, SYNDET,

6.3.

Interfaa logic programabil 8255

Circuitul 8255 realizat n tehnologia NMOS, pe o pastil cu 40 de terminale, ale cror semnificaii sunt prezentate n figura 6.13, reprezint o interfa programabil de intrare/ieire (I/E). 107

Dei a fost proiectat ca un circuit din familia microprocesorului 8080, el poate fi utilizat i la alte microprocesoare.
PA3 PA2 PA1 PA0 RD CS GND A1 A0 PC7 PC6 PC5 PC4 PC0 PC1 PC2 PC3 PB0 PB1 PB2 D0 D7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 PA4 PA5 PA6 PA7 WR RESET D0 D1 D2 D3 D4 D5 D6 D7 Vcc PB7 PB6 PB5 PB4 PB2 Modulul de interfa cu magistralele Logica intern CD A grup A Interfaa periferice I/E PA7-PA0 port A (8) grup A I/E port PC -PC 7 4 C sup (4) I/E port PC -PC 4 0 C inf (4) grup B I/E port B PB7-PB0 (8)

tampon D7 D0 magistral de date RD WR A0 A1 RESET CS logica de comand citete/ scrie

Magistral intern de 8 bii CD B grup B

Circuitul posed 24 de terminale de I/E, care pot fi configurate ca unul, dou sau trei porturi de I/E. Dintre cele 24 de terminale, 16 sunt prevzute cu posibiliti de memorare (latch-uri), iar celelalte 8 posed tampoane (buffer-e). Alimentarea circuitului se face de la o surs de 5V; toate intrrile i ieirile sunt compatibile TTL. n figura 6.14 se prezint schema bloc a circuitului 8255, care const din: modulul de Figura 6.13. Terminalele circuitului 8255 i semnificaiile lor. interfa cu magistrala microprocesorului, interfaa cu periferia i logica intern. Modulul de interfa cu magistrala microprocesorului conine tamponul bidirecional, care face legtura ntre magistrala bidirecional de date a microprocesorului i magistrala intern a interfeei paralele, precum i logica de comand pentru operaiile de scriere/citire. Aceasta din urm are ca intrri semnalele de RESET, selecie a circuitului ( CS ), scriere ( WR ), citire ( RD ) i selecie a porturilor i a registrului cuvntului de comand (A0, A1). Semnalul RESET anuleaz coninuturile tuturor registrelor din circuitul 8255. Semnalul CS activeaz comunicaia ntre magistrala microprocesorului i circuitul 8255. 108

- magistral de date (bidirecional); PA0 PA7 - terminale I/E Port A (bidirecional); PB0 PB7 - terminale I/E Port B (bidirecional); PC0 PC7 - terminale I/E Port C (bidirecional); RD - comand citire (intrare); WR - comand scriere (intrare); RESET - comand RESET (intrare); CS - selecie circuit (intrare); - intrri selecie porturi A 0, A 1 (intrri);

Figura 6.14. Schema bloc.

TABELUL 6.2. Selecia porturilor ABC i a registrului cuvntului de comand. Se selecteaz CS A0 A1 0 0 0 Portul I/E A 0 0 0 Portul I/E B 0 1 0 Portul I/E C 0 1 1 Registrul cuvntului de comand (numai pentru scriere) 1 x x Nu se selecteaz 8255 n tabelul 6.2 se prezint efectul semnalelor CS , A0 i A1 privind selectarea porturilor i a registrului cuvntului de comand. n cazul n care se folosete o tehnic simpl de selecie, numit selecia liniar (o variant a seleciei redundante), adresa de 8 bii a unei instruciuni IN sau OUT, se poate utiliza ca n tabelul 6.3. Pe baza seleciei liniare, biii A0, A1, din adres, se folosesc pentru selecia porturilor, din cele 6 circuite 8255, selectabile cu ajutorul rangurilor A7 A2. TABELUL 6.3. Selecia liniar a circuitului 8255. A7 A6 A5 A4 A3 A2 Selecie ( CS ) 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 Circuit 1 Circuit 2 Circuit 3 Circuit 4 Circuit 5 Circuit 6 A1 A0 Selecie 0 0 1 1 0 1 0 1 Port A Port B Port C Registrul cuvntului de comand

Interfaa cu periferia conine 24 de linii de interfa, tampoane i logica de comand. Caracteristicile i funciile liniilor din interfa sunt determinate de modul de operare selectat, prin program. Sub controlul software-ului pot fi selectate trei moduri de lucru diferite, pentru interfaa programabila 8255 (figura 6.15, a, b, c). Modul 0, denumit modul de baz de intrare/ieire, asigur mai multe posibiliti: dou porturi de cte 8 bii (PA7 PA0, PB7 PB0); dou porturi de cte 4 bii (PC3 PC0, PC7 PC4), cu capabilitate de poziionare individual n unu sau zero.

Porturile folosite pentru ieire sunt prevzute cu elemente bistabile de memorare, porturile folosite pentru intrri nu dispun de elemente de memorare (fig. 6.15, a). Modul 1 asigur posibiliti de strobare pentru intrare/ieire. Astfel, unul sau dou porturi, organizate pe 11 bii, conin 8 bii de date, 3 bii de comand i logica de suport pentru ntreruperi. Oricare port poate fi folosit pentru intrare sau ieire. Dac n Modul 1 se folosete un singur port, ceilali 13 bii pot fi configurai n Modul 0. Dac n Modul 1 sunt programate dou porturi, cei doi bii rmai pot fi utilizai pentru intrare sau ieire cu capabilitate de poziionare n unu sau zero (figura 6.15, b). 109

adrese date comenzi a) Modul 0

p
RD,WR

Port B

D7-D0 Port C

A0-A7 Port A

PB7-PB0

PC3-PC0 b) Modul 1

PC7-PC4

PA7-PA0

Port B
PB7-PB0

PC0
Intr.B

PC1
IBFB OBFB

PC2
STBB ACKB

PC3
Intr.A

PC4
STBA I/E

PC5
IBFA I/E

PC6
I/E ACKA

PC7
I/E OBFA

Port A
PA7-PA0

c) Modul 2

comand PortA, port B

Port B

PC0

PC1

PC2

PC3

PC4

PC5

PC6

PC7

Port A

PB7-PB0

I/E sau comand portul B poate fi n modurile 0 sau 1

Intr.A

STBA

IBFA

ACKA

OBFA

PA7-PA0

comand PortA

Figura 6.15. Modurile de lucru pentru interfaa programabil 8255: (a) modul 0, (b) modul 1, (c) modul 2,

n figura 6.16 sunt date configuraiile porturilor A, B i C ale interfeei 8255 i cuvintele de comand corespunztoare, pentru operaia de intrare (a) i operaia de ieire (b). Pentru intrare, semnalele de comand au semnificaiile de mai jos: STBA(B) , strob de intrare, activ pe nivel cobort, ncarc data n registrul de intrare; IBFA(B), indicator tampon de intrare ncrcat, este activ pe nivel ridicat. El este activat de STBA(B) - pe nivel cobort i dezactivat de

ctre frontul cresctor al comenzii RD ; INTRA(B), cerere de ntrerupere pentru microprocesor, activ pe nivelul ridicat, atunci cnd datele sunt deja n registrul de intrare al interfeei 8255. INTRA(B) este activat dac STBA(A) este pe nivel ridicat i dac IBFA(B) i INTEA(B) sunt, de asemenea, active. INTRA(B) este dezactivat pe frontul cztor al comenzii RD ;
110

INTEA(B), bistabile interne asociate cu ntreruperile, activate/dezactivate prin terminalele PC4/PC2. Pentru ieire semnalele de comand au urmtoarele semnificaii:

sunt

OBFA(B) , indicator tampon de ieire ncrcat, este activat pe nivel cobort de ctre frontul negativ al comenzii WR i dezactivat pe frontul negativ al semnalului ACKA(B); ACKA(B), acceptare date de ctre periferic, este furnizat cnd datele au fost preluate de periferic. Este activ pe nivel cobort; INTRA(B), cerere de ntrerupere pentru microprocesor, activ pe nivel ridicat, specific faptul c echipamentul periferic a preluat data. INTRA(B) este activat cnd ACKA(B) este pe nivel ridicat, OBFA(B) este pe nivel ridicat i INTEA(B) este, de asemenea, pe nivel ridicat. Semnalul este dezactivat pe frontul cresctor al comenzii WR ; INTEA(B), bistabile interne asociate cu ntreruperile, sunt activate/dezactivate prin terminalele PC6/PC2.

Dup cum se constat, portul C este folosit pentru manipularea 8 cuvintelor de comand/stare, pentru PA7-PA0 porturile A, B. PC 6,7 0 intrare Dac portul A (sau portul B) STBA PC4 INTEA 1 - ieire IBFA a fost programat ca port de intrare, PC5 logica extern trebuie s indice faptul c o nou dat a fost plasat Intr A PC3 la portul de intrare. Aceast se RD realizeaz prin aplicarea unor I/E PC5,7 semnale de strob STBA , STBB la Modul 1 (Port B) intrrile PC4 i respectiv PC2. 7 Cuvnt de comand 0 Interfaa 8255 va aduce terminalul 1 x x x x 1 0 x 8 IBFA (IBFB) la un nivel ridicat, PB7-PB0 atunci cnd data este ncrcat n STBB portul de intrare i se menine la PC2 INTEB IBFB acest nivel, ct timp portul conine PC1 data respectiv. Semnalul IBFA(IBFB) este anulat la Intr B PC0 dezactivarea comenzii de citire RD ( RD ), emis de microprocesor, indicnd citirea datelor din portul de INTEA comandat prin PC4 intrare. Pentru a specifica INTEB comandat prin PC2 microprocesorului faptul c data Figura 6.16. a. Configuraiile porturilor i cuvintele de comand corespunztoare pentru operaia de intrare. este stabil n portul de intrare, interfaa 8255 genereaz un semnal 111

Modul 1 (Port A) 7 Cuvnt de comand 0 1 0 1 1 1/0 x x x

de ntrerupere (INTR) pe frontul cresctor al semnalului de strob ( STBA , STBB ). Acest semnal, 8 INTR, este dezactivat pe frontul PA7-PA0 PC 4,5 cztor al comenzii RD . 1 intrare ACKA PC6 INTEA Terminalele PC7 i PC6 nu 0 - ieire OBFA PC7 manipuleaz semnale de comand privind intrarea i pot fi utilizate pentru a transfera Intr A PC3 bidirecional date. WR I/E PC4,5 Dac portul A (sau portul B) a fost programat ca port de Modul 1 (Port B) ieire, n momentul n care 7 Cuvnt de comand 0 microprocesorul l ncarc cu o 1 x 1 x x 1 0 x 8 dat, interfaa 8255 genereaz PB7-PB0 un semnal de comanda ACKB PC2 INTEB OBFA ( OBFB ), activ pe nivel OBFB PC1 cobort. Logica extern poate fi astfel informat asupra posibilitii de preluare a datelor Intr B PC0 din portul de ieire WR corespunztor. Logica extern semnaleaz interfeei faptul c a INTEA comandat prin PC6 INTEB comandat prin PC2 preluat informaia, din portul de ieire, prin activarea semnalului Figura 6.16. b. Configuraiile porturilor i cuvintele de ACKA(ACKB). Pentru ca comand corespunztoare pentru operaia de ieire. microprocesorul s poat plasa o nou dat n portul de ieire, el trebuie s atepte un semnal de ntrerupere INTRA, (INTRB), care este activat pe frontul cresctor al semnalului ACKA ( ACKB ). Terminabilele PC4 i PC5 nu manipuleaz semnale de comand n cadrul operaiei de ieire, n Modul 1. Ele pot fi folosite pentru transferul bidirecional de date.
Modul 1 (Port A) 7 Cuvnt de comand 0 1 0 1 0 1/0 x x x

Modul 2, definit ca magistral de I/E, bidirecional strobat, asigur posibiliti de comunicare cu un periferic, pe o magistral de 8 bii. Semnalele de dialog sunt folosite pentru a menine disciplina de transfer a informaiei pe magistral. Modul 2 este folosit cu grupul A de terminale, care se refer la portul A (PA0 , PA1) i la biii PC3 PC7, din portul C (figura 6.14). Configurarea i cuvntul de comand ale circuitului n acest mod sunt prezentate n figura 6.17. Semnificaiile semnalelor sunt prezentate mai jos:

INTRA, cererea de ntrerupere, activ pe nivel ridicat i emis de interfaa 8255, la terminalul PC3, ntrerupe microprocesorul att pentru operaia de intrare, ct i pentru cea de ieire;

112

OBFA , n cadrul unei operaii de ieire, va fi activ pe nivel cobort, pentru a indica faptul c microprocesorul a nscris date n portul de ieire A ; ACK , n cadrul unei operaii de ieire, activ pe nivel cobort, va comanda tamponul de ieire, cu trei stri, al portului A, pentru a furniza data n exterior. ACK , la nivel ridicat, va aduce tamponul de ieire n starea de mare impedan; INTE1, bistabil intern de activare/dezactivare a ntreruperilor, asociat cu semnalul OBF, este poziionat n unu/zero, prin PC6; STBA , n cadrul operaiei de intrare, activ pe nivel cobort, va fora data de intrare n registrul portului de intrare A (PA); IBFA, n cadrul operaiei de intrare, activ pe nivel ridicat, va specifica faptul c data a fost ncrcat n registrul portului de intrare A; INTE2, bistabil intern de activare/dezactivare a ntreruperilor, asociat cu semnalul IBF, este poziionat n unu/zero, prin PC4.
PC3 INTRA

Operaia de intrare, n Modul 2 are loc prin furnizarea dalelor de ctre PA7-PA0 periferic, la intrarea portului A i forarea lor n portul respectiv, folosind strobul OBFA PC7 STBA. La ncrcarea registrului portului ACKA INTE1 PC8 A se genereaz semnalul IBFA, activ pe nivel ridicat. Semnalul de ntrerupere pentru microprocesor, INTRA, este STBA INTE2 PC4 P generat cnd semnalele RD , STBA sunt WR IBFA PC5 inactive i IBFA activ. INTRA este RD PC2-PC0 I/E dezactivat prin generarea comenzii de citire RD , de ctre microprocesor. cuvnt de comand Semnalul IBFA este dezactivat odat cu 1 1 x x x 1/0 1/0 1/0 dezactivarea comenzii RD . PC2 PC0 Modul grupului B Port B Operaia de ieire, n Modul 2 se 1 intrare 1 intrare 1 Mod 1 realizeaz prin furnizarea datelor la 0 ieire 0 ieire 0 Mod 0 intrarea D7 D0 i a semnalului WR , de Figura 6.17. Configuraia terminalelor ctre microprocesor. Datele se transfer n interfeei 8255 n modul 2 i cuvntul de registrul portului de ieire A, fapt care va comand corespunztor. conduce la activarea semnalului OBFA . Acest semnal poate fi testat de ctre echipamentul periferic, pentru a putea stabili disponibilitatea datelor la portul de ieire. Preluarea lor de ctre echipamentul periferic este asigurat prin semnalul ACKA , activ pe nivel cobort. Semnalul ACKA dezactiveaz OBFA i activeaz cererea de ntrerupere INTRA, pentru a anuna microprocesorul c datele au fost preluate de ctre periferic.
8

113

Logica intern de selecie gestioneaz transferul datelor i al informaiei de comanda pe magistrala intern. Prin selecia porturilor A, B i C se efectueaz operaii de I/E. Logica intern va asigura transferul datelor ntre magistrala microprocesorului i porturile de I/E ale interfeei 8255. Configuraia funcional a fiecrui port i poziionarea n unu sau zero a biilor portului C sunt controlate prin software, folosind cuvinte de comand corespunztoare. Selectarea registrului de comand. i ncrcarea lui cu un cuvnt de comand permit logicii interne s efectueze operaiile descrise n cadrul acestui cuvnt. Cuvntul de comand conine un cmp de cod de operaie, care definete modul de operare sau poziionarea unor bii ai portului C, n funcie de valoarea 1, respectiv 0 a bitului 7, din cuvntul de comand. Definirea modului de operare se realizeaz prin ncrcarea n interfaa 8255 a unui cuvnt de comand cu bitul 7 egal cu unu. n figura 6.18 se prezint codificarea cuvntului de comand pentru a specifica configuraia celor 24 de linii de legtur a interfeei programabile cu periferia. Astfel, pot fi specificate independent modurile porturilor A i B, n timp ce portul C poate fi tratat independent sau separat ca dou porturi de cte 4 bii solicitate de modurile de definire ale porturilor A i B.
Cuvntul de comand bit 7 1 bit 6 1/0 bit 5 1/0 bit 4 1/0 bit 3 1/0 bit 2 1/0 bit 1 1/0 bit 0 1/0

Grup B bitul 0 port C (PC3 PC0); 1 intrare; 0 ieire; bitul 1 port B; 1 intrare; 0 ieire; bitul 2 Selecie Mod; 1 Mod 0; 0 Mod 1; Grup A bitul 3 port C (PC7 PC4); 1 intrare; 0 ieire; bitul 4 port A; 1 intrare; 0 ieire; biii 5,6 Selecie Mod; 00 Mod 0; 01 Mod 1; 1x Mod 2. Figura 6.18. Structura cuvntului de comand pentru definirea modului de operare al interfeei 8255.

ncrcarea unui cuvnt de comand cu bitul 7 egal cu zero (figura 6.19) permite comanda individual a biilor portului C, prin poziionarea lor n zero sau unu. Selecia 114

bitului din portul C se realizeaz prin biii 3 l, din cuvntul de comand. Bitul 0, al cuvntului de comand, definete forarea n zero sau n unu a bitului selectat, din portul C. Biii 6 4 ai cuvntului de comand nu sunt folosii.
Cuvntul de comand bit 7 0 bit 6 0 bit 5 0 bit 4 0 bit 3 1/0 bit 2 1/0 bit 1 1/0 bit 0 1/0

bitul 0 bitul selectat se poziioneaz n unu / zero; 1 poziionare n unu; 0 poziionare n zero; biii 3,2,1 selecie bit; 000 bit 0; 001 bit 1; 010 bit 2; 011 bit 3; 100 bit 4; 101 bit 5; 110 bit 6; 111 bit 7; Figura 6.19. Structura cuvntului de comand pentru poziionarea n unu/zero a biilor portului C.

6.4.

Interfaa USB (Universal Serial Bus)

6.4.1. Introducere

Studiul portului USB poate prea puin nspimnttor datorit specificaiilor USB care au 650 de pagini dar i listei impresionante de standarde asociate (USB Class Standards). Dintre standardele asociate face parte i HID Class Specification care detaliaz operaiile obinuite cu dispozitivele (tastatur, maus etc.) i care provine din HID (Human Interface Devices) Class. Dac proiectai un port USB (USB Host) atunci va trebui s alegei ntre trei standarde (Hot Controller Interface Standard). Nici unul dintre aceste standarde nu este specificat n USB 2.0. n continuare se vor prezenta succint informaiile eseniale legate de interfaa USB. Standardele interfeei USB ct i specificaiile conexe trebuie studiate n funcie de domeniul activitii desfurate (proiectare hardware sau software). Mai jos (tabelul 6.4) este prezentat structura standardului USB 2.0 i informaiile coninute de capitolele acestuia precum i recomandri privind parcurgerea informaiilor pentru nelegerea interfeei USB.

115

TABELUL 6.4. Capitol Nume

Descriere

Nr. de pagini 2 8

2 3

Conine scopul i motivaia USB. Informaia cea mai important prezentat n acest capitol este referirea la Universal Serial Bus Device Class Specifications. Nu este necesar citirea acestui capitol. Termeni i notaii Capitol explicativ necesar oricrui standard. Informaii de baz Capitolul prezint scopul interfeei USB care este o interfa Plug and Play simpl (pentru utilizator nu i pentru proiectant). Sunt prezentate noiunile de vitez sczut, complet i nalt (Low, Full and High Speed) i o list a funciilor interfeei. Nici acest capitol nu este necesar a fi citit. Structura Din acest punct trebuie nceput studiul. arhitecturii Capitolul furnizeaz noiunile de baz a sistemului USB: topologia, viteza de transfer a datelor, tipurile fluxurilor de date, specificaii electrice de baz etc. Modelul fluxului n acest capitol se prezint caracteristicile de date USB fluxului de date al portului serial universal (Universal Serial Bus). Sunt prezentai termeni ca: endpoints i pipes i este analizat fiecare tip de flux de date (Control, Interrupt, Isochronous i Bulk). Acest capitol poate fi destul de dificil nceptorilor dar trebuie citit dac se dorete cunoaterea tipurilor de transfer a interfeei USB i a proprietilor acestora. Caracteristici n acest capitol se prezint doi conectori USB mecanice standard. Este prezentat conectorul de tip A destinat transferului n aval (downstream) i conectorul de tip B destinat transferului n amonte (upstream). n acest fel este imposibil s se conecteze un cablu ntre dou porturi upstream. Toate cablurile detaabile trebuie s fie de vitez full/high pe cnd cablurile de vitez sczut (Low) trebuie conectate (fixate) la aplicaie. n afara de faptul c trebuie s aruncai o privire asupra conectorilor, acest capitol poate fi srit (dac nu intenionai s fabricai conectori sau cabluri USB). Proiectanii PCB pot gsi aici dimensiunile standard pentru conectori. 116

Introducere

10

60

33

TABELUL 6.4. (continuare) 7 Caracteristici electrice

10

11

Capitolul 7 prezint semnalele electrice la nivelul de baz, impedana de linie, timpii de cretere i de descretere, specificaiile driver/receptor i codificarea la nivel de bit, structura biilor etc. Cea mai important parte a acestui capitol este identificarea vitezei dispozitivului prin utilizarea unui rezistor pentru interferena liniei de date sau a magistralei dispozitivelor alimentate versus dispozitivelor autoalimentate. n afar de cazul cnd proiectai transceivere USB la nivel de baz putei trece superficial prin acest capitol. Schemele corecte a dispozitivelor USB trebuie s arate ce valoare a rezistorului terminal este necesar pentru adaptarea impedanei magistralei. Protocolul Se exploreaz protocolul USB prezentndu-se pachetele la nivel de bit i discutndu-se despre sync, pid, address, endpoint, CRC fields. Cei mai muli dezvoltatori nu trebuie s cunoasc aceste detalii deoarece circuitul integrat rezolv problema protocolului. n orice caz, nelegerea modului de raportare a strii i dialogul ntre componente este necesar. USB Device Frame Acesta este capitolul cel mai folosit deoarece Work descrie enumerarea pe magistral (bus enumeration) i cererea codurilor (request codes): set, address, get descriptor etc, care reprezint noiunile cele mai folosite din protocolul USB. Capitolul trebuie citit n detaliu. USB Host Se descrie gazda (host) ceea ce presupune: Hardware and generarea frame i microframe, cerinele host Software controller i modelul driver universal serial bus. Dac nu se proiecteaz un Host, capitolul poate fi srit. Hub Specification Se detaliaz modul de lucru al USB hub (hub punct central): configurarea hub, split transactions, standard descriptors for hub class etc. Dac nu se proiecteaz un Hub, capitolul poate fi srit.

75

45

23

143

Pentru realizarea driver-elor (software) pentru perifericele USB, atunci trebuie citite numai capitolele: 117

4 - Architectural Overview 5 - USB Data Flow Model 9 - USB Device Frame Work, and 10 - USB Host Hardware and Software. Proiectarea hardware (electronica) se poate face citind capitolele: 4 - Architectural Overview 5 - USB Data Flow Model 6 - Mechanical, and 7 - Electrical.
6.4.2. Prezentarea Universal Serial Bus

Standardul USB 1.1 a fost suficient de complex nainte ca High Speed s fie introdus n USB 2.0. n scopul nelegerii principiilor fundamentale a USB se vor omite noiunile legate de dispozitivele High Speed. USB versiunea 1.1 suport dou viteze, viteza complet (full) de 12 Mbii/s i viteza sczut (low) de 1,5 Mbii/s. Modul de 1,5 Mbii/s datorit faptului c este mai sczut este mai puin influenat de perturbaiile electromagnetice (EMI) i acest lucru reduce costul mrgelelor de ferit i a calitii componentelor. De exemplu, cristalele de cuar pot fi nlocuite rezonatori mai ieftini. USB 2.0 utilizat la majoritatea calculatoarelor de birou are i viteza nalt de 480 Mbii/s (high) i completeaz Firewire Serial Bus.
6.4.2.1. Vitezele USB o High Speed 480 Mbits/s o Full Speed 12 Mbits/s o Low Speed 1.5 Mbits/s

Magistrala serial universal (Universal Serial Bus) este de tip host controlled i nu poate fi dect un host pe magistral. De asemenea specificaiile nu permit nici un fel de aranjament multimaster. n orice caz, specificaiile On-The-Go care reprezint o adaptare a standardului USB 2.0 a introdus Host Negotiation Protocol care permite la dou dispozitive s negocieze rolul de host. Acest lucru se face n scopul limitrii la o singur conexiune punct la punct cum ar fi cu un telefon mobil sau un personal organiser i nu hub multiple sau configuraii multiple ale dispozitivelor desktop. USB host este rspunztor de toate tranzaciile i programarea limii de band. Datele pot fi transmise prin diferite metode utiliznd token-based protocol. n opinia multor specialiti, topologia magistralei USB este limitativ. Una dintre inteniile iniiale a fost ca USB s reduc numrul de cabluri de conexiune. Proiectanii firmei Apple susin c ideea provine de la tehnologia Apple Desktop Bus prin care tastatura, mouse-ul i alte cteva periferice pot fi conectate mpreun n serie (daisy chained) folosind un singur cablu. 118

n orice caz tehnologia USB folosete topologia stea extins, similar celei 10BaseT Ethernet. Aceasta impune utilizarea unui hub undeva ceea ce duce la creterea preului de cost, creterea numrului de cutii pe birou i creterea numrului de cabluri. Multe dispozitive au hub USB integrate. De exemplu tastatura poate conine un hub conectat la calculator. Mouse-ul i alte dispozitive cum ar fi camera digital pot fi conectate uor n locul tastaturii (sau: dup tastatur nseriat cu aceasta). Monitoarele reprezint un alt periferic dintr-o lung list de periferice care au hub-uri incluse. La topologia stea extins, spre deosebire de conexiunea daisy chain, dispozitivele conectate au anumite beneficii. Mai nti alimentarea fiecrui dispozitiv poate fi monitorizat i chiar oprit dac se produce o anumit condiie fr ca celelalte dispozitive USB s fie ntrerupte. Toate dispozitivele cu viteza high, full sau low pot fi acceptate, prin filtrarea de ctre hub a tranzaciilor cu vitez high i full pe care dispozitivele de vitez sczut nu le vor recepiona. Pn la 127 de dispozitive pot fi conectate la orice magistrala USB la orice moment. Dac sunt necesare mai multe dispozitive se adaug un nou port/host. La nceput, primele USB host aveau dou porturi; cei mai muli productori au considerat acest lucru restrictiv i au nceput s introduc 4 sau 5 porturi (port host card) cu un port intern pentru hard disk. Primele host-uri aveau un singur controler USB i atunci cele dou porturi mpreau aceeai band USB disponibil. O dat cu creterea necesarului de band vedem cartele multiport cu dou sau mai multe controlere fiecare cu canalul su. Controlerele host USB au propriile lor specificaii. La USB 1.1 sunt dou specificaii Host Controller Interface: UHCI (Universal Host Controller Interface) dezvoltat de Intel care a pus o ncrctur software (Microsoft) mai mare permind un hardware mai ieftin i OHCI (Open Host Controller Interface) dezvoltat de Compq, Microsoft i National Semiconductor care are o mai mare ncrctur hardware (Intel) i un soft mai simplu. Prin apariia USB 2.0 noi specificaii Host Controller Interface au fost necesare pentru descrierea la nivel de registru specifice USB 2.0. A aprut EHCI (Enhanced Host Controller Interface). Mai multe firme au cooperat pentru realizarea unei interfee standard i a unui singur driver necesar acesteia. USB aa cum sugereaz i numele su este o magistral serial. Se folosesc 4 fire ecranate din care dou sunt pentru alimentare (+5V i GND) iar celelalte dou sunt fire rsucite cu semnal diferenial de date. Se folosete schema de codare NRZI (Non Return to Zero Invert) pentru transmiterea datelor cu un cmp de sincronizare pentru sincronizarea ceasului la host i la receptor. USB suport plug and plug (conectarea i reconectarea) cu ncrcarea i descrcarea dinamic a driver-elor. Utilizatorul conecteaz dispozitivul la magistral iar host-ul va detecta acest lucru, va interoga dispozitivul nou inserat i va ncrca drive-ul corespunztor i afieaz pe ecran faptul c driver-ul a fost instalat. n momentul n care utilizatorul a terminat, acesta deconecteaz cablul, host-ul detecteaz acest lucru i elimin driver-ul. ncrcarea driver-ului potrivit este produs de folosirea combinaiei PID/VID (Product ID/Vendor ID). VID este furnizat de forumul implementatorilor USB contra cost i acesta este un alt punct forte al USB. Ultimele informaii privind taxele pot fi gsite la USB Implementors Website. 119

Alte organizaii de standardizare furnizeaz un extra VID pentru activiti necomerciale cum ar fi educaia i cercetarea sau pentru pasionaii domeniului. Muli fabricani de circuite integrate au propriile lor combinaii VID/PID care pot fi folosite la dispozitive necomerciale. Ali productori de circuite integrate pot chiar s furnizeze un PID pentru a fi folosit cu VID-urile acestora n dispozitivele dumneavoastr comerciale. Alt facilitate notabil a USB reprezint modurile de transfer. USB suport transferuri Control, Interrupt, Bulk i Isochronous. De exemplu, modul Isochronous permite unui dispozitiv s rezerve o anumit lime de band cu o ntrziere (latency) garantat. Acest lucru este ideal pentru aplicaiile audio i video unde congestionarea magistrale poate produce pierderea datelor sau a frame-urilor. Despre celelalte moduri de transfer se va discuta mai trziu. Fiecare mod de transfer permite proiectantului s lucreze cu diverse domenii cum sunt: detecia i corecia erorilor, ntrzieri i limi de band garantate.
6.4.2.2. Conectorii

Toate dispozitivele au o conexiune upstream ctre host i toate host-urile au o conexiune downstream ctre dispozitive. Conectorii upstream i cele downstream nu sunt interschimbabili din punct de vedere mecanic ceea ce elimin posibilitatea conectrii greite cum ar fi conectarea unui hub cu un port downstream la un port downstream. Sunt dou tipuri de conectori: conector de tip A i conectori de tip B. Conectorul de tip A se folosete ntotdeauna la upstream i se ntlnete de obicei la host-uri i hub-uri. De exemplu conectorul de tip A se ntlnete la calculatoare la main boards Conector USB de tip A. i la hub-uri. Conectorul de tip B se folosete la downstream i n consecin el se va gsi la dispozitive. Se gsesc cabluri de conectare de la conectori de tip A la conectori de tip A i aceasta excepie de la standardul USB se face n scopul conectrii a dou calculatoare. O alt excepie o Conector USB de tip B. reprezint cablurile prelungitoare care au la un capt un Figura 6.20. Conectorii conector tat (de tip A sau B) i un conector de tip mam la portului USB. cellalt capt. Specificaiile USB 2.0 introduc o corecie i definete conectorii mini-USB B. Aceti conectori sunt necesari dispozitivelor electronice miniaturale cum sunt telefoanele mobile sau organisers (agende electronice PDA Personal Digital Assistant). Recent au fost elaborate specificaiile On-The-Go care adaug funcionalitatea peer-to-peer porturilor USB. Acest lucru permite folosirea USB host la telefoane mobile sau la agende electronice i n acest fel s-au introdus specificaiile prizei mini-A i a conectorului tat mini-A i a prizei mini-AB.
TABELUL 6.5. Numrul pinului 1 2 3

Culoarea cablului Rou Alb Verde 120

Funcie VBUS (5 voli) DD+

4 Albastru 6.4.2.3. Caracteristici electrice

Mas

n afar de situaia cnd realizai circuite integrate pentru dispozitive/transmitoare USB sau host/hub USB nu trebuie s cunoatei n amnunt specificaiile electrice. n continuare se va prezenta esenialul despre acestea. USB folosete o pereche de fire pentru transmiterea diferenial a datelor. Datele sunt codificate folosind NRZI i biii sunt combinai n aa fel nct s se asigure tranziia adecvat n fluxul de date. La dispozitivele de vitez low i full, un 1 diferenial este transmis prin polarizarea liniei D+, legat la mas printr-o rezisten de 15K ohm, la peste 2,8V i a liniei D-, legat la 3,6V printr-o rezisten de 1,5K ohm, la o tensiune sub 0,3V. Un 0 diferenial se obine cu D- la o tensiune mai mare ca 2,8V i D+ la o tensiune mai mic de 0,3V, linii conectate cu rezistenele specificate mai sus. Receptorul definete un 1 diferenial ca D+ cu 200mV mai mare ca D- i 0 diferenial ca D+ cu 200mV mai mic dect D-. Polaritatea semnalului este inversat n funcie de viteza magistralei. Adesea termenii de stare J i K sunt folosii pentru specificarea nivelelor logice. La vitez sczut (low) o stare J reprezint un 0 diferenial. La vitez nalt (high) starea J reprezint un 1 diferenial. Transmitoarele USB (transceivers) au att ieiri difereniale ct i single ended. Anumite stri ale magistralei sunt indicate prin semnale single ended cu D+, D- sau amndou. De exemplu un zero single ended (SE0) poate fi folosit pentru a semnala un reset al unui dispozitiv dac ine mai mult de 10ms. Un SE0 este generat prin punerea att a liniei D+ ct i a liniei D- la nivel sczut (< 0,3V). Ieirile single ended i difereniale reprezint informaii importante dac folosii un transceiver i un FPGA ca dispozitiv USB. You cannot get away with sampling just the differential output. (Nu putei merge mai departe cu ieirea drept ieire diferenial!?) Magistralele de vitez sczut (low)/ complet (full) au o impedan caracteristic de 90 ohm +/- 15%. Ieste important s se citeasc schema cnd se aleg rezistenele serie de adaptare a impedanei pentru D+ i D-. Orice schem bun trebuie s specifice aceste valori i toleranele acestora. Viteza nalt (high) 480 Mbiti/s) folosete un curent constant de 17,78 mA pentru semnal n scopul reducerii zgomotului.
6.4.2.4. Identificarea vitezei

Un dispozitiv USB trebuie s indice vitezele sale prin punerea att a liniei D+ ct i a liniei D- la 3,3 voli. Un dispozitiv cu vitez complet (full), prezentat mai jos, va folosi o rezisten conectat la D+ pentru a specifica acest lucru. Rezistorul prezent la dispozitiv este folosit de altfel i de ctre host sau hub pentru a detecta prezena dispozitivului conectat la portul su. Fr aceste rezistene USB consider c nu s-a conectat nimic la magistral. Unele dispozitive au aceste rezistene n circuitul integrat, rezistene ce pot fi conectate sau deconectate prin program, altele au rezistena n exterior. De exemplu Philips Semiconductor folosete tehnologia SoftConnectTM. La prima conectare la magistral aceast tehnologie permite microcontrolerului s iniializeze funciile dispozitivului USB nainte de a valida conectarea rezistorului de 121

identificare a vitezei i care indic faptul c dispozitivul este conectat la magistral. Dac rezistena ar fi conectat imediat la Vbus atunci acest lucru ar indica host-ului un dispozitiv conectat. Host-ul va ncerca s reseteze (iniializeze) dispozitivul i s cear descriptorul atunci cnd microprocesorul nu a nceput nc s iniializeze funciile USB ale dispozitivului. Ali fabricani precum Cypress Semiconductor folosesc de asemenea o rezisten programabil pentru Re-NumerationTM la dispozitivele EzUSB unde un singur dispozitiv poate fi enumerat pentru o funcie cum ar fi In field programming cnd este deconectat de la magistral sub controlul programului (firmware) i enumerat ca un dispozitiv diferit ntr-o fraciune de secund. Multe dispozitive EyUSB nu au nici un fel de memorie Flash sau OTP ROM pentru stocarea codului. Acestea sun bootstraped (pornite) la conectare.

Figura 6.21. Dispozitiv full speed cu rezisten pull up conectat la D+

Figura 6.22. Dispozitiv low speed cu rezisten pull up conectat la D-

Trebuie notat faptul c nu a fost prezentat identificarea vitezei nalte (high). Dispozitivele de vitez nalt vor porni conectndu-se ca dispozitive de vitez complet 122

(full) 1,5k la 3,3V. O dat ce acestea sunt conectate vor transmite un semnal de nalt vitez pe durata resetului stabilind o conexiune de nalt vitez dac hub-ul suport modul de nalt vitez. Dac dispozitivul lucreaz n modul de nalt vitez, rezistena pull up este ndeprtat pentru echilibrarea liniei. Un dispozitiv compatibil USB 2.0 nu trebuie neaprat s poat suporta modul de vitez nalt. Aceasta permite producerea dispozitivelor ieftine la care viteza nu este critic. Acesta este de asemenea cazul dispozitivelor de vitez sczut USB 1.1 care nu trebuie s suporte i viteza complet (full). Oricum, un dispozitiv de vitez nalt poare s nu suporte modul de vitez sczut. Acesta trebuie s suporte doar modul de vitez complet (full) necesar la conectare dup care este negociat modul de vitez high. Un dispozitiv de intrare compatibil USB 2.0 (downstream) hub sau host suport toate cele trei moduri de vitez: high speed, full speed i low speed.
6.4.2.5. Alimentarea VBUS

Unul din avantajele USB este reprezentat de dispozitivele alimentate de la magistral dispozitive care nu mai necesit surs de alimentare extern. Un dispozitiv USB specific consumul su de putere n uniti de 2 mA n descriptorul configuraiei care va fi studiat n detaliu mai trziu. Un dispozitiv nu poate crete consumul su de putere peste valoarea specificat la enumerare, chiar dac acesta pierde alimentarea extern. Sunt trei clase de funcii USB:
o o o

Low-power bus powered functions High-power bus powered functions Self-powered functions

Funcia de alimentare de joas putere a magistralei ia toat puterea de la VBUS i nu poate furniza mai mult de o unitate de ncrcare. Specificaiile USB definesc o unitate de ncrcare ca fiind 100 mA. Magistrala de alimentare de joas putere trebuie de asemenea s fie proiectat s lucreze pn la tensiunea cea mai joas VBUS de 4,40V i pn la tensiunea maxim de 5,25V msurat la conectorul upstream al dispozitivului. Pentru dispozitivele de 3,3V regulatorul este obligatoriu. Funcia de alimentare de nalt putere a magistralei ia puterea de la magistral i nu poate furniza mai mult de o unitate pn cnd a fost configurat dup care poate furniza 5 uniti (500 mA max) specificate de ctre descriptor. Funcia magistralei de nalt putere trebuie s poat fi detectat i enumerat la tensiunea minim de 4,40V. Cnd se opereaz la ncrcarea maxim (5 uniti), o tensiune minim VBUS de 4,75V este specificat cu un maxim la 5,25. Msurtorile se fac la conectorul upstream.
6.4.2.6. Protocolul

Spre deosebire de interfaa serial la care formatul datelor transmise nu este definit, USB utilizeaz protocoale pe mai multe nivele. Orice tranzacie a portului USB const n: 123

Token Packet (un antet ce definete ce ne ateptm s urmeze); Optional Data Packet (coninnd datele utile); Status Packet (folosit pentru confirmarea tranzaciei i care furnizeaz mijloace pentru corecia erorilor).

Datele sunt transmise de ctre USB ncepnd cu cel mai puin semnificativ bit. Structura unui pachet USB conine urmtoarele cmpuri:
Sync toate pachetele trebuie s nceap cu un cmp sync. Acest cmp are o lungime de 8 bii la viteza low i full i 32 de bii la viteza high i este folosit la sincronizarea ceasului receptorului cu cel al transmitorului. Ultimii doi bii semnaleaz faptul c urmeaz cmpul PID; PID reprezint identificatorul pachetului (Packet ID). Acest cmp este folosit pentru identificarea pachetului care urmeaz a fi transmis; ADDR cmpul adres specific dispozitivul cruia i este destinat pachetul. Acest cmp are apte bii i deci se pot adresa 127 de dispozitive. Adresa zero este folosit pentru dirijarea pachetelor ce au adrese pentru dispozitive nealocate nc i deci aceast adres nu poate fi alocat unui dispozitiv; ENDP cmpul endpoint care poate avea pn la 4 bii permind 16 posibiliti endpoint; CRC Codul ciclic de eroare (Cyclic Redundancy Checks); EOP End of packet sfritul pachetului.

USB folosete patru tipuri de pachete: token packets care indic tipul tranzaciei care urmeaz, data packets care conin datele de transmis, handshake packets care sunt folosite pentru ncheierea transmisiei (handshake) coninnd informaii despre confirmarea transmisiei i erorile produse i start of frame packets care indic nceputul unui nou cadru.
Token Packets

Exist trei tipuri de pachete token: In care informeaz dispozitivul USB care host dorete s citeasc informaia, Out care informeaz dispozitivul USB care host dorete s transmit informaia, Setup folosit pentru iniierea controlului transferurilor. Pachetele token au formatul urmtor: Sync PID ADDR ENDP CRC5 EOP
Data Pakets

Exist dou tipuri de pachete de date fiecare dintre acestea fiind capabil sa transmit pn la 1024 octei de date: Data0 i Data1. 124

Modul High Speed definete nc dou PID-uri pentru date: DATA2 i MDATA. Pachetele de date au urmtorul format: Sync PID Data CRC16 EOP

Dimensiunea maxim a datelor pentru viteza low este de 8 octei, pentru viteza full este de 1023 de octei iar pentru viteza high este de 1024 de octei.
Handshake Packets

Sunt trei tipuri de pachete handshake care constau n esen numai din PID: ACK care semnaleaz c datele au fost recepionate cu succes, NAK raporteaz c temporar, dispozitivul nu poate recepiona sau transmite date sau, pe durata tranzaciei unei ntreruperi informeaz host-ul c nu sunt date de transmis, STALL este necesar intervenia host-ului. Pachetele handshake au urmtorul format: Sync PID EOP
Start of Frame Packets Pachetele SOF constau din cadre de 11 bii i sunt transmise de fost la fiecare interval de o milisecund pe magistralele de vitez full sau la fiecare 125s pe magistralele cu vitez high. Pachetele handshake au urmtorul format:

Sync PID

Frame Number

CRC5

EOP

6.5.

Interfeele microcontrolerelor

Cele dou circuite integrate prezentate: interfaa serial 8251 i interfaa paralel 8255 sunt circuite utilizate n realizarea sistemelor de calcul cu microprocesor. Microcontrolerele dein i ele, integrate pe acelai cip cu unitatea central, astfel de interfee mai simple sau mai complexe. De regul un microcontroler deine o interfa serial asincron pentru comunicaia cu alte sisteme de calcul, o interfa serial sincron de mare vitez pentru comunicaia cu alte componente integrate care se pot utiliza n sistem mpreun cu microcontrolerul i un sistem de intrri / ieiri numerice similar cu interfaa paralel prezentat. Se va prezenta n continuare convertorul analog-numeric al microcontrolerului PIC 16F87x, reprezentativ pentru familia sa.

125

6.5.1. Modulul convertor analog-digital (A/D)

Convertorul analog-digital are cinci intrri la dispozitivele cu 28 de pini i opt intrri la cele cu 40/44 de pini. Conversia fiecrei intrri se face pe zece bii. Modului A/D are o referin de tensiune nalt i o referin de tensiune sczut selectabile prin program prin anumite combinaii ntre VDD, VSS, RA2 sau RA3. Convertorul A/D poate funciona i n modul SLEEP dac se asigur pentru convertorul analog-digital semnal de ceas de la oscilatorul RC intern. Convertorul analog digital are patru registre:

registrul rezultat al celui mai semnificativ octet al convertorului analog-digital (ADRESH); registrul rezultat al celui mai puin semnificativ octet al convertorului analog-digital (ADRESL); registrul de control 0 (ADCON0); registrul de control 1 (ADCON1).

Registrul ADCON0 controleaz funcionarea modulului analog-digital. Registrul ADCON1 configureaz pinii portului care pot fi: intrri analogice (RA3 poate fi, de asemenea, referina de tensiune) sau intrri/ieiri digitale.
Registrul ADCON0 (adresa 1Fh)

R/W-0 ADCS1 bit 7

R/W-0 ADCS0 bit 6

R/W-0 CHS2 bit 5

R/W-0 CHS1 bit 4

R/W-0 CHS0 bit 3

R/W-0 GO/DONE bit 2

U-0 bit 1

R/W-0 ADON bit 0

R = bit de citire; W = bit de scriere U = bit neimplementat, citit ca zero; n = valoare la resetul power-on; '1' = bitul este setat; '0' = bitul este resetat; x = valoarea bitului este nu este cunoscut bit 7-6 ADCS1:ADCS0 biii de selecie a ceasului de conversie A/D ADCON1 ADCON0 Ceas de conversie <ADCS2> <ADCS1:ADCS0> 0 00 FOSC/2 0 01 FOSC/8 0 10 FOSC/32 0 11 FRC (ceas derivat de la ceasul intern A/D RC) 1 00 FOSC/4 1 01 FOSC/16 1 10 FOSC/64 1 11 FRC (ceas derivat de la ceasul intern A/D RC) 126

bit 5-3 CHS2:CHS0 bii de selecie ai canalului analogic 000 = canal 0 (AN0) 001 = canal 1 (AN1) 010 = canal 2 (AN2) 011 = canal 3 (AN3) 100 = canal 4 (AN4) 101 = canal 5 (AN5) 110 = canal 6 (AN6) 111 = canal 7 (AN7) Not: PIC16F873A/876A au implementat numai canalele A/D 0 pn la 4; combinaiile neimplementate sunt rezervate; nici una dintre aceste combinaii nu trebuie trimise la aceste dispozitive. DONE bit 2 GO/DONE bit de stare a conversiei 0 = conversie A/D n desfurare (setarea acestui bit pornete conversia A/D i bitul este ters automat de ctre hardware cnd conversia A/D este complet); 1 = conversia nu este n desfurare. bit 1 Neimplementat. La citire se citete zero. bit 0 ADON bit de alimentare a convertorului A/D 1 = convertorul A/D este alimentat; 0 = convertorul este nealimentat i nu consum curent.
Registrul ADCON1 (adresa 9Fh)

R/W-0 ADFM bit 7

R/W-0 ADCS2 bit 6

U-0 bit 5

U-0 bit 4

R/W-0 PCFG3 bit 3

R/W-0 PCFG2 bit 2

R/W-0 PCFG1 bit 1

R/W-0 PCFG0 bit 0

R = bit de citire; W = bit de scriere U = bit neimplementat, citit ca zero; n = valoare la resetul power-on; '1' = bitul este setat; '0' = bitul este resetat; x = valoarea bitului este nu este cunoscut bit 7 ADFM bit de selecie a formatului rezultatului A/D 1 = aliniere dreapta. ase din cei mai semnificativi bii ai ADRESH sunt citii ca zero;

127

0 = aliniere stnga. ase din cei mai puini semnificativi bii ai ADRESL sunt citii ca zero. bit 6 ADCS2 bit de selecie a ceasului de conversie A/D ADCON1 ADCON0 Ceas conversie <ADCS2> <ADCS1:ADCS0> 0 00 FOSC/2 0 01 FOSC/8 0 10 FOSC/32 0 11 FRC (ceas derivat de la ceasul intern A/D RC) 1 00 FOSC/4 1 01 FOSC/16 1 10 FOSC/64 1 11 FRC (ceas derivat de la ceasul intern A/D RC) biii 5-4 Neimplementai. La citire sunt citii ca zero. biii 3-0 PCF3:PCF0 biii de control ai configurrii A/D
PGF AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 VREF+ VREF- C/R <3:9> 0000 A A A A A A A A VDD VSS 8/0 0001 A A A A VREF+ A A A AN3 VSS 7/1 0010 D D D A A A A A VDD VSS 5/0 0011 D D D A VREF+ A A A AN3 VSS 4/1 0100 D D D D A D A A VDD VSS 3/0 0101 D D D D VREF+ D A A AN3 VSS 2/1 011x D D D D D D D D 0/0 1000 A A A A VREF+ VREF- A A AN3 AN2 6/2 1001 D D A A A A A A VDD VSS 6/0 1010 D D A A VREF+ A A A AN3 VSS 5/1 1011 D D A A VREF+ VREF- A A AN3 AN2 4/2 1100 D D D A VREF+ VREF- A A AN3 AN2 3/2 1101 D D D D VREF+ VREF- A A AN3 AN2 2/2 1110 D D D D D D D A VDD VSS 1/0 1111 D D D D VREF+ VREF- D A AN3 AN2 1/2 A = intrare analogic D = I/O digital C/R = numrul canalelor de intrare analogice/numrul tensiunilor de referin pentru conversia A/D Not: Dup RESET pinii dispozitivului care sunt multiplexai cu funcii analogice (Anx) sunt forai s fie intrri analogice.

128

Registrele ADRESH:ADRESL conin cei 10 bii ai rezultatului conversiei A/D. Cnd conversia A/D este complet, rezultatul este ncrcat n perechea de registre ale rezultatului, bitul GO/DONE (ADCON0<2>) este ters i fanionul ntreruperii A/D este s et at . Schema bloc a modulului convertorului A/D este prezentat n figura urmtoare.

Schema bloc a convertorului analog-digital

Dup ce modulul A/D a fost configurat, canalul selectat trebuie achiziionat nainte de a porni conversia analog-digital. Canalele de intrare analogice trebuie s aib biii corespunztori din registrul TRIS selectai ca intrri. Dup ce timpul de achiziie s-a scurs, conversia A/D poate s nceap. Paii care trebuie urmai pentru realizarea unei conversii analog-digitale sunt: 1. Configurarea modulului A/D: configurarea pinilor de intrare a semnalului analogic/referin de tensiune i a I/O digitale (ADCON1); selectarea canalelor de intrare A/D (ADCON0); selectarea ceasului de conversie (ADCON0); alimentarea modulului A/D (ADCON0). 2. Configurarea ntreruperii A/D (dac este necesar): 129

3. 4. 5. 6. 7.

tergerea bitului ADIF; setarea bitului ADIE; setarea bitului PEIE; setarea bitului GIE. Se ateapt timpul de achiziie necesar. Se pornete conversia: se seteaz bitul GO/DONE (ADCON0). Se ateapt terminarea conversiei A/D prin: testarea prin program a bitului GO/DONE; DONE; sau (dac ntreruperile au fost validate) se ateapt ntreruperea A/D. Se citete rezultatul conversiei din perechea de registrele ADRESH:ADRESL, se terge bitul ADIF, dac este necesar. Pentru urmtoarea conversie se face salt la pasul 1 sau 2 dup necesiti. Timpul de conversie A/D este definit ca TAD.

6.5.1.1. Cerinele achiziiei analog-digitale

Pentru convertorul A/D trebuie ndeplinite anumite condiii pentru obinerea unui rezultat precis al conversiei analog-digitale. n primul rnd ncrcarea condensatorului de reinere (CHOLD) trebuie s fie complet pn la tensiunea prezent la intrarea analogic. Modelul intrrii analogice este prezentat n figura urmtoare:

Legend:

CPIN VT I LEAKAGE RIC SS CHOLD

= capacitate de intrare = tensiune de prag = curent de scurgere la pin datorat conexiunii = rezistena de interconectare = comutatorul de eantionare = capacitatea de eantionare/reinere (pentru DAC)

130

Impedana sursei (RS) i impedana comutatorului de eantionare intern (RSS) afecteaz n mod direct timpul necesar ncrcrii capacitii CHOLD. Impedana comutatorului (RSS) variaz n funcie de tensiunea de alimentare a dispozitivului (VDD). Impedana maxim recomandat pentru sursa analogic este de 10 k. Dac impedana scade, timpul de achiziie poate fi sczut. Dup ce canalul intrrii analogice este selectat (schimbat), trebuie s se fac achiziia semnalului nainte de pornirea conversiei analog-numerice. Pentru a calcula timpul minim de achiziie se poate folosi ecuaia: TACQ = Timpul de setare a amplificatorului + Timpul de ncrcare a capacitii de reinere + coeficientul de temperatur = = = = = = = TAMP + TC + TCOFF 2s + TC + [Temperatura 250C) (0,05s/0C)] CHOLD (RIC + RSS + RS) ln(1/2047) - 120pF (1k + 7k + 10k) ln(0,0004885) 16,47s 2 s + 16,47 s + [500C 250C)(0,05 s/0C) 19,72 s

TC TACQ

n aceast ecuaie se folosete eroarea maxim permis de 1/2 LSB (1024 pai pentru A/D).
6.5.1.2. Selecia ceasului conversiei analog-digitale

Timpul de conversie pe bit este definit ca TAD. Conversia A/D necesit cel puin 12TAD pentru conversia pe 10 bii. Sursa ceasului de conversie A/D este selectabil prin program. Cele apte variante posibile pentru TAD sunt: 2TOSC 4TOSC 8TOSC 16TOSC 32OSC 64TOSC oscilatorul RC intern al modulului A/D (2-6s). Pentru o conversie corect A/D ceasul de conversie TAD trebuie astfel ales nct s asigure timpul minim de conversie de 1,6 s. Tabelul urmtor arat timpul TAD rezultat din frecvenele de operare ale dispozitivului i din sursa de ceas A/D selectat.

131

Sursa ceasului AD (TAD) Operare ADCS2:ADCS1:ADCS0 2TOSC 000 4TOSC 100 8TOSC 001 16TOSC 101 32TOSC 010 64TOSC 110 RC(1,2,3) x11

Frecvena maxim a dispozitivului Max. 1,25MHz 2,5MHz 5MHz 10MHz 20MHz 20MHz (Nota 1)

Nota: 1. Sursa RC are un TAD tipic de 4s, dar variaz ntre 2-6s. 2. Cnd frecvena dispozitivului este mai mare dect 1 MHz, sursa de ceas RC A/D este singura recomandat pentru operarea SLEEP. 3. Pentru dispozitive cu tensiune de alimentare extins se vor studia car act er i s t i c i l e el ect r i ce.
6.5.1.3. Conversia A/D

Dac se terge bitul GO/DONE pe timpul unei conversii atunci acea conversie este abandonat iar perechea de registre cu rezultatul conversiei nu vor fi modificai, Dup abandon, o nou achiziie de date este pornit automat pentru canalul selectat. Bitul GO/DONE poate atunci fi setat pentru a porni conversia. n figura de mai jos, dup ce bitul GO este setat, primul segment de timp este minimum TCY i maximum TAD.

Ciclurile TAD ai conversiei A/D

Tcy reprezint un ciclu main (fosc/4) Registrele asociate convertorului analog-digital sunt: INTCON, PIR1, PIE1, ADRESH, ADRESL, ADCON0, ADCON1, TRISA, PORTA, TRISE, PORTE.

132

CAPITOLUL 7 CIRCUITE SPECIALE


7.1. Introducere

Sistemele de calcul sunt prevzute suplimentar cu circuite destinate unor funcii care duc la creterea versatilitii arhitecturii prin adugarea unor funcii noi. Astfel, printre circuitele suplimentare adugate unei arhitecturi, se pot meniona: circuitul pentru gestionarea prioritar a ntreruperilor, circuitul pentru controlul 1 28 Vcc accesului direct la memorie (Direct CS 2 27 A0 Access Memory DMA) i circuitul IOW 3 26 INTA timer (un circuit destinat msurrii IOR 4 25 IR7 intervalelor de timp i contorizrii D7 5 24 IR6 D6 evenimentelor). 6 23 IR5 D5 7 8259 22 IR4 7.2. Controlerul de ntreruperi D4 8 21 IR3 D3 9 20 programabil 8259 IR2 D2 10 19 IR1 D1 11 18 Unitatea 8259 este realizat n D0 IR0 12 17 tehnologia NMOS, pe un singur circuit C0 INT 13 16 integrat, cu 28 terminate ale cror C1 SP 14 15 semnificaii sunt date n figura 7.1. O Masa C2 singur unitate poate manipula pn la 8 cereri de ntreruperi externe i asigur o D7-D0 - magistrala de date (bidirecional); CS - selecie circuit (intrare); varietate de modaliti programabile, A0 - identific unul din cele dou pentru arbitrarea prioritilor acestora. porturi ale unitii (intrare); Datorit posibilitilor de conectare n IOR - semnal de comand citire (intrare); cascad, implementate n unitatea 8259, IOW - semnal de comand scriere (intrare); ntrerupere trimis de unitatea se pot interconecta, la o unitate 8259- INT - cerere de(ieire); central master, pn la opt uniti-slave, INTA - recunoatere ntrerupere (intrare); asigurndu-se astfel faciliti de tratare a SP - identific unitatea fie ca master, fie ca slave (intrare); 64 niveluri prioritare de ntrerupere. C0-C2 - linii de selecie a unitilor slave n Modalitile de arbitrare pot fi sistemele cu uniti multiple (ieire la programate diferit la unitatea master i la master, intrare la slave); fiecare unitate slave. VCC - tensiune de alimentare pozitiv; Schema bloc funcional este Figura 7.1. Semnificaia terminalelor unitii prezentat n figura 7.2. Ea const din pentru comanda prioritar a ntreruperilor mai multe registre i reele logice grupate 8259. n jurul unei magistrale interne. 133

INTA Tampon pentru magistrala de date Logica de scriere/ citire Tampon comparator pentru cascadare

INT

D0 D7

Logica de comand

RD WR A0 CS CAS0 CAS1 CAS2 SP

Registrul cererilor de ntrerupere tratate (RCIT)

Circuit pentru rezolvarea prioritilor

Registrul cererilor de ntrerupere (RCI)

IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7

Registrul de mascare a ntreruperilor (RMI) Magistrala intern Figura 7.2. Schema bloc a unitii 8259.

Cererile de ntrerupere IR0-IR7, de la echipamentele periferice, poziioneaz n unu, pe fronturile pozitive, cnd devin active, bistabilii corespunztori ai Registrului Cererilor de Intrerupere (ROI). Poziionarea n unu, a unuia sau mai multor bistabili din registrul RCI, are ca efect generarea unui semnal (nivel ridicat) pe linia INT. Coninutul lui RCI, corespunztor cererii de ntrerupere considerate, este forat n zero prin secvena INTA. Noua cerere de ntrerupere considerat va fi nregistrat ntr-un bistabil corespunztor, din Registrul Cererilor de ntrerupere Tratate (RCIT), odat cu forarea n zero, a bistabilului asociat ntreruperii respective, n RCI. Bistabilul din RCIT va fi readus n zero prin program, la sfritul operaiei de tratare a ntreruperii, printr-o comand adecvat (OCW2 - a se vedea programarea unitii 8259), dat naintea revenirii n programul principal. Circuitul pentru rezolvarea prioritilor cererilor de ntrerupere stabilete prioritile cererilor, care au poziionat n unu bistabilii RCI. Pe durata impulsului INTA , bitul cu prioritatea cea mai mare este forat din RCI n RCIT. Semnalul de ntrerupere INT, generat de unitatea 8259, este forat direct la microprocesor. Semnalul de recunoatere a ntreruperii ( INTA ), este generat de ctre unitatea central. Primul semnal INTA , va face ca 8259 s foreze, pe magistrala de date D0-D7, codul instruciunii CALL. Ca urmare a acestui cod , unitatea central va furniza, n ciclurile main care urmeaz, nc dou semnale INTA , la care unitatea 8259 va fora, pe magistrala de date, cei doi octei de adres ai instruciunii CALL. n acest mod, 134

unitatea central de prelucrare va ncepe execuia rutinei corespunztoare, de tratare a ntreruperii, a crei adres de start a fost furnizat de instruciunea CALL. Registrul de Mascare a ntreruperilor (RMI) conine biii cererilor de ntrerupere care trebuie mascate. Coninutul su are efect asupra informaiei din RCIT i RCI. Tamponul pentru magistrala de date este bidirecional, fiind prevzut cu circuite cu trei stri, ceea ce permite conectarea direct a unitii 8259 la magistrala de date a unitii centrale de prelucrare. Prin acest tampon sunt transferate cuvintele de comand i informaia de stare. Logica pentru comanda scrierii/citirii accept comenzi de la unitatea central de prelucrare i transfer ctre aceasta cuvntul de stare al unitii 8259. Aceast logic conine registrele pentru Cuvntul de Comanda de Iniializare (CCI) i Cuvntul de Comand al Operrii (CCO). Intrarea de Selecie a circuitului ( CS ) activeaz unitatea 8259, cnd este pe nivel cobort. Intrarea comenzii de scriere ( WR ), activ pe nivel cobort, permite s se nscrie cuvinte de comand (CCI, CCO) n unitatea 8259. Intrarea comenzii de citire ( RD ), activ pe nivel cobort, permite transmiterea, de ctre unitatea 8259, spre unitatea central de prelucrare, pe magistrala de date, a coninuturilor RCI, RCIT, RMI sau a codului binar zecimal al nivelului de ntrerupere. Semnalul de intrare A0, folosit mpreun cu comenzile RD i WR permite scrierea de comenzi n diferite registre de comand sau citirea coninuturilor unor registre. Intrarea A0 se poate conecta direct la una din liniile de adrese. n vederea extinderii schemei sistemului de ntrerupere pentru a putea manipula pn la 64 de cereri de ntrerupere, se pot folosi mai multe uniti 8259, dintre care una va juca rol de master, iar celelalte de slave. Unitatea master va fi desemnat prin conectarea terminalului SP la un nivel pozitiv de tensiune. Conectarea terminalului SP la un nivel cobort de tensiune va desemna o unitate de tip slave. Tamponul comparator pentru cascadare memoreaz i compar identitile tuturor unitilor 8259 folosite n sistem. Terminalele de intrri/ ieiri (CAS0-CAS2) sunt folosite ca ieiri de ctre unitatea master, care transmite n exterior identitatea unitii slave luat n consideraie. Aceleai terminale se folosesc ca intrri, pentru unitile slave, n vederea seleciei. Unitatea slave selectat va fora pe magistrala de date, pe durata ultimelor dou semnale INTA , adresa preprogramat a subrutinei, ncepnd cu octetul cel mai puin semnificativ. Interaciunea unitii 80259 cu unitatea central de prelucrare se desfoar conform urmtoarei secvene:

- una sau mai multe linii IR7-IR0 sunt activate de fronturile cresctoare ale cererilor de ntrerupere; - unitatea 8259 transmite un semnal INT, ctre unitatea central, ca urmare a acceptrii cererilor de ntrerupere i rezolvare a prioritilor; - unitatea central, recunoate semnalul INT i genereaz un semnal INTA ; - la recepionarea semnalului INTA , unitatea 8259 rspunde cu forarea pe magistrala de date (D7-D0) a codului instruciunii CALL;
135

- unitatea central de comand va genera dou semnale succesive INTA , care vor activa forarea pe magistrala de date, sub forma a doi octei succesivi, a adresei rutinei chemate prin CALL, ncepnd cu octetul cel mai puin semnificativ; - dup terminarea tratrii cererii de ntrerupere se va genera comanda Sfrit de Intrerupere (EOI), care va poziiona n zero bitul corespunztor ntreruperii tratate n RCIT. Programarea unitii 8259 se realizeaz prin comenzi generate de ctre unitatea central de prelucrare, care pot fi comenzi de iniializare i respectiv de operare. Cuvintele de comand pentru iniializare sunt dou, pentru cazul unei singure uniti 8259 i respectiv trei, pentru cazul mai multor uniti 8259, n sistem. n figura 7.3, a, b, c, d se prezint structurile celor trei cuvinte de comand ale iniializrii (CCI1,
a) Cuvntul de comand al iniializrii CCI1 A0 0 bit 1 1 o singur unitate 8259; 0 o unitate master i mai multe slave; bit 2 1 ntre vectorii de adres se las 4 octei; 0 ntre vectorii de adres se las 8 octei; biii 7,6,5 biii A7A6A5 ai vectorului de adres de ntrerupere. b) Cuvntul de comand al iniializrii CCI2 A0 1 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 7 bit 6 bit 5 bit 4 1 bit 3 x bit 2 bit 1 bit 0 x

biii 7,6,5,4,3,2,1,0 biii A15A14A13A12A11A10A9A8 ai vectorului de adres de ntrerupere. c) Cuvntul de comand al iniializrii CCI3 A0 1 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

la master

biii 7,6,5,4,3,2,1,0 oricare bit poziionat n unu semnific nivelul la care a fost ataat o unitate 8259 slave. la slave A0 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 1 x x x x x biii 2,1,0 identific nivelul cererii la unitatea master 8259, la care s-a conectat unitatea slave dat. x valoare oarecare (indiferent). Figura 7.3. Structura cuvintelor de comand ale iniializrii.

136

CCI2, CCI3). Primul cuvnt de comand al iniializrii CCI1 (fig. 7.3, a) este generat cnd A0 = 0 i D4 = l. El are ca efect: aducerea n condiiile iniiale a circuitului de sesizare a unei cereri de ntrerupere (tranziie pozitiv a semnalului cerere), anularea RMI, atribuirea intrrii IR7 a prioritii 7, poziionarea n zero a bistabilului asociat cu masca i a bistabilului asociat cu citirea strii. CCI1 specific dac se folosete o singur unitate sau mai multe uniti 8259, indic distana n octei ntre vectorii adreselor de ntrerupere (4 octei sau 8 octei), furnizeaz biii A7-A5, ai vectorului adresei de ntrerupere, pentru instruciunea CALL. Al doilea cuvnt de comand al iniializrii CCI2 (fig. 7.3, b) este forat dup CCI1, n unitatea 8259 i specific biii A15-A8, ai vectorului adresei de ntrerupere. Se menioneaz c unitatea 8259 foreaz automat biii A4, A3, A2, corespunztor codului nivelului cererii de ntrerupere, n timp ce biii Al, A0 sunt forai n zero. Al treilea cuvnt de comand al iniializrii CCI3 se folosete numai n cazurile sistemelor de ntrerupere cu uniti 8259 multiple. Semnificaiile CCI3 difer n funcie de unitatea creia i este adresat: master (fig. 7.3, c) i slave (fig. 7.3, d). Cuvintele de comand a operrii (CC0). Dup programarea unitii 8259 cu cuvintele de comand de iniializare, pot fi luate n consideraie eventualele cereri de ntrerupere. Modurile, disciplinele de tratare a cererilor de ntreruperi, se pot programa prin cuvintele de comand ale operrii, selectate corespunztor CCOl, , CCO3 (fig. 7.4). Primul dintre cuvintele de comand ale operrii, CC01, se refer la programarea registrului de mascare a ntreruperilor (RM1). Acest registru va opera asupra RCI i RCIT. Dac o ntrerupere a fost recunoscut de ctre unitatea 8259, nivelul respectiv, dei mascat prin CCOl, va inhiba nivelurile mai puin prioritare. Pentru a evita acest lucru se poate emite un CCO2, reprezentnd comanda de terminare a ntreruperii (EOI) pentru a anula bitul corespunztor din RCIT sau se va utiliza un CCO3, reprezentnd un mod special de mascare. Modul de tratare cu imbricare complet, a cererilor de ntrerupere, se realizeaz fr transmiterea vreunui CCOi, dup iniializare. n acest mod prioritile sunt atribuite n ordinea 0, ,7, prioritatea cea mai mare avnd-o nivelul 0. La recunoaterea unei ntreruperi, se determin cererea curent cu prioritatea cea mai mare, se foreaz vectorul adres corespunztor pe magistral i se poziioneaz n unu bitul asociat din RCIT. Acest bit rmne poziionat n unu pn la comanda terminrii ntreruperii, naintea revenirii n rutina principal ntrerupt. n acest timp sunt inhibate toate cererile de ntrerupere situate pe niveluri mai puin prioritare dect nivelul tratat. Sunt acceptate cererile de ntrerupere corespunztoare unor niveluri superioare. Modul de tratare cu rotirea prioritii este folosit n aplicaiile n care echipamentele, care solicit ntreruperi, au prioriti egale (de exemplu: canalele de comunicaie). Acest mod are dou variante: modul cu auto-rotire i modul special. n cazul auto-rotirii, dispozitivul care a fost tratat primete nivelul de prioritate cel mai cobort. Modul special permite modificarea prioritilor, de ctre programator, n sensul de a stabili nivelurile cu prioritatea minim i respectiv maxim. Terminarea normal a ntreruperii (EOI) i terminarea special a ntreruperii (SEOI) se refer la modalitile de anulare a bitului, din RCIT, corespunztor cererii de ntrerupere care s-a tratat. n cazul modului cu imbricare complet, unitatea anuleaz 137

bitul cu prioritatea cea mai mare (EOI), n timp ce, n modul cu rotirea prioritii, trebuie s se specifice prin comand (SEOI) nivelul care urmeaz s fie anulat (vezi CCO2 din fig. 7.4, b).
d) Cuvntul de comand al operrii CCO1. Masca de ntrerupere. A0 1 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

biii 7,6,5,4,3,2,1,0 1 poziionare masc; 0 anulare masc. e) Cuvntul de comand al operrii CCO2. Comanda terminrii ntrerupere (EOI).

A0 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 0 R SEOI EOI 0 0 L2 L1 L0 R - rotirea prioritii (1 rotete, 0 fr rotire); SEOI - terminare special a ntreruperii; EOI - terminare normal a ntreruperii. biii 2,1,0 000 se selecteaz nivelul 0 ca avnd prioritate minim; 001 se selecteaz nivelul 1 ca avnd prioritate minim; 010 se selecteaz nivelul 2 ca avnd prioritate minim; 011 se selecteaz nivelul 3 ca avnd prioritate minim; 100 se selecteaz nivelul 4 ca avnd prioritate minim; 101 se selecteaz nivelul 5 ca avnd prioritate minim; 110 se selecteaz nivelul 6 ca avnd prioritate minim; 111 se selecteaz nivelul 7 ca avnd prioritate minim; biii 7,6,5 000 neoperaional; 001 terminare simpl a ntreruperii, se ignor biii 2,1,0; 010 neoperaional; 011 terminare special a ntreruperii, se anuleaz bitul RCIT specificat de biii 2,1,0; 100 neoperaional; 101 terminare ntrerupere i se execut rotirea prioritii n Mod A; 110 execut rotirea prioritii n Mod B. Nivelul cu prioritate minim este stabilit de biii 2,1,0; 111 terminare ntrerupere i execut rotirea prioritii n Mod B. Nivelul cu prioritate minim este stabilit de biii 2,1,0; Figura 7.4. a. b. Cuvintele de comand al operrii.

Modul special de tratare cu mascare este stabilit prin CCO3 i se refer la situaia n care unii bii sunt mascai prin coninutul RMI, stabilit cu ajutorul CCO1. Dac, din diferite motive, se execut subrutina care are nivelul mascat (fie datorit recepionrii semnalului INTA dup mascare, fie datorit auto-mascrii), folosind acest mod, nivelurile mai puin prioritare nu vor fi afectate pn la anularea acestui mod. Nivelurile prioritare, superioare nivelului tratat, de asemenea, nu vor fi afectate. Modul de tratare cu interogare se bazeaz pe dezactivarea, de ctre unitatea central, a Intrrilor de ntrerupere. Servirea echipamentelor se realizeaz prin comanda de interogare, la iniiativa programatorului, folosind CCO3 cu bitul P=l, pe durata 138

impulsului WR . Cu ocazia generrii de ctre unitatea central a unui impuls RD , unitatea 8259 l trateaz ca semnal de recunoatere a ntreruperii, poziionnd n unu, n cazul unei cereri de ntrerupere, bistabilul corespunztor din RCIT i citind nivelul de prioritate asociat. Unitatea 8259 va fora pe magistrala de date un cuvnt, care va avea n bii D2, Dl, D0, codul cererii curente de ntrerupere cu prioritatea cea mai mare, iar n bitul D7 se va indica prezena (1) sau absena (0) unei cereri de ntrerupere.
c) Cuvntul de comand al operrii CCO3. Mod special de mascare. A0 0 biii 1,0 00 nepermis; 01 nepermis; 10 citete RCI la urmtoarea comand RD; 11 citete RCIT la urmtoarea comand RD. bitul 2 1 comand pentru modul interogare; 0 comand pentru modul lips interogare (normal) biii 6,5 00 neoperaional; 01 neoperaional; 10 anuleaz modul special de tratare cu mascare; 11 activeaz modul special de tratare cu mascare; x indiferent. Figura 7.4. c. Cuvintele de comand al operrii. bit 7 x bit 6 CSMM bit 5 SMM bit 4 0 bit 3 1 bit 2 bit 1 bit 0

Citirea strii unitii 8259 se realizeaz prin generarea unui impuls RD , dup ce, n prealabil, s-a transmis o comand corespunztoare CCO3. Astfel, se pot citi RCI, RCIT, poziionnd n mod corespunztor biii Dl, D0, din CCO3. Pentru citirea RMI nu este necesar un CCO3. Informaia citit, de pe magistrala de date, va corespunde lui RMI, dac RD este activ i A0 = 1.

7.3.

ntreruperile microcontrolerului TMS320F240

Microcontrolerul TMS320F240 dispune de un mecanism evoluat de gestiune a ntreruperilor prin intermediul unui manager de evenimente. n continuare se prezint succint acest mod de tratare a ntreruperilor datorit faptului c se consider reprezentativ pentru microcontrolere.

139

7.3.1. ntreruperile managerului de evenimente (EV) Organizarea ntreruperilor unitii centrale

Sistemul de ntreruperi externe ale unitii centrale (miezul procesorului C2xx CPU) este format din ase ntreruperi mascabile (INT1-INT6) i una nemascabil (NMI). Prioritatea maxim o are ntreruperea NMI iar prioritile ntreruperilor mascabile scad de la INT6 la INT1, INT1 avnd prioritatea minim. Fiecrei ntreruperi i corespunde un bit n registrul fanioanelor de ntrerupere a unitii centrale (IFR) i fiecrei ntreruperi mascabile i corespunde un bit n registrul mtilor unitii centrale (IMR). O ntrerupere mascabil este mascat (nu va genera o ntrerupere ctre miez) cnd bitul corespunztor n IMR este 0. De asemenea miezul procesorului mai are un bit pentru mascarea general a ntreruperilor (INTM) n registrul de stare ST0. Cnd INTM este setat la 1, toate ntreruperile mascabile sunt dezactivate.
Rspunsul la ntrerupere a miezului C2xx

Cnd apare o tranziie de la unu la zero pe o intrare de ntrerupere a miezului, bitul corespunztor al fanionului din IFR este setat n 1. O ntrerupere este generat ctre miez dac aceasta nu este mascat - ntreruperile globale sunt permise (INTM=0) i nu exist o alt ntrerupere nemascat de prioritate mai mare n ateptare (acest lucru nsemnnd c nu exist nici un fanion setat al unei ntreruperi nemascate de prioritate mai mare). Fanionul este ters de ctre hardware o dat ce cererea de ntrerupere este trimis ctre miez. Un fanion de ntrerupere poate fi de asemenea ters de ctre programul utilizator scriind un 1 n bitul corespunztor.
Cererea de ntrerupere EV i servirea acestora

ntreruperile managerului de evenimente sunt organizate n trei grupe: A, B i C. Grupul A genereaz o cerere de ntrerupere ctre miez prin INT2 iar B i C prin INT3 i respectiv INT4. n tabelul 7.1 sunt prezentate toate ntreruperile EV, prioritile acestora i modul de grupare.
TABELUL 7.1.
Grup ntrerupere A PDPINT CMP1INT CMP2INT CMP3INT SCMP1INT SCMP2INT SCMP3INT T1PINT T1CINT T1UFINT Prioritatea n interiorul grupului 1 cea mai mare 2 3 4 5 6 7 8 9 10 Vectorul (ID) 0020h 0021h 0022h 0023h 0024h 0025h 0026h 0027h 0028h 0029h Descriere/surs ntrerupere de protecie a acionrilor de putere ntreruperea unitii de comparare complet 1 ntreruperea unitii de comparare complet 2 ntreruperea unitii de comparare complet 3 ntreruperea unitii de comparare simpl 1 ntreruperea unitii de comparare simpl 2 ntreruperea unitii de comparare simpl 3 ntrerupere timer GP 1 la perioad ntrerupere timer GP 1 la comparare ntrerupere timer GP 1 la depire inferioar

140

TABELUL 7.1. (continuare)


B T1OFINT T2PINT T2CINT T2UFINT T2OFINT T3PINT T3CINT T3UFINT T3OFINT CAP1INT CAP2INT CAP3INT CAP4INT 11 cea mai mic 1 cea mai mare 2 3 4 5 6 7 8 cea mai mic 1 cea mai mare 2 3 4 cea mai mic 002Ah 002Bh 002Ch 002Dh 002Eh 002Fh 0030h 0031h 0032h 0033h 0034h 0035h 0036h ntrerupere timer GP 1 la depire superioar ntrerupere timer GP 2 la perioad ntrerupere timer GP 2 la comparare ntrerupere timer GP 2 la depire inferioar ntrerupere timer GP 2 la depire superioar ntrerupere timer GP 3 la perioad ntrerupere timer GP 3 la comparare ntrerupere timer GP 3 la depire inferioar ntrerupere timer GP 3 la depire superioar ntrerupere a unitii de captur 1 ntrerupere a unitii de captur 2 ntrerupere a unitii de captur 3 ntrerupere a unitii de captur 4

Exist cte un registru al fanioanelor de ntrerupere EV pentru fiecare grup: EVIFRA, EVIFRB i EVIFRC. Avem de asemenea cte un registru de mascare pentru fiecare grup: EVIMRA, EVIMRB i EVIMRC. Un fanion n EVIFRx (x=A,B sau C) este mascat (nu va genera o cerere de ntrerupere ctre miez) dac bitul corespunztor din EVIMRx este zero. Exist de asemenea cte un registru al vectorilor de ntrerupere (EVIVRx, x=A, B sau C) asociat cu fiecare grup de ntreruperi EV. Registrul vectorului de ntrerupere corespunztor poate fi citit de ctre o rutin de servire a ntreruperii (ISR) atunci cnd o cerere de ntrerupere generat de ctre un grup de ntreruperi este acceptat de ctre miez. Valoarea (vectorul) din registrul vectorului de ntrerupere identific care este ntreruperea nemascat i n ateptare din grup ce are cea mai mare prioritate.
Generarea ntreruperii

Cnd apare o ntrerupere n modulul EV, fanionul corespunztor din registrul de nreruperi EV este setat n unu. O cerere de ntrerupere este generat ctre CPU de ctre grupul de ntreruperi dac fanionul de ntreruperi este setat i grupul de ntreruperi este nemascat la nivelul EV i ntreruperea corespunztoare din CPU este nemascat la nivelul CPU.
Vectorii de ntrerupere

Vectorul de ntrerupere al unui grup de ntreruperi al EV poate fi citit dup ce o cerere de ntrerupere a fost generat de ctre grupul respectiv ctre miez. Cnd acest lucru se ntmpl, vectorul de ntrerupere (ID) corespunztor fanionului de ntrerupere cu cea mai mare prioritate dintre toate fanioanele setate este ncrcat n acumulator. Fanionul este ters cnd vectorul de ntrerupere este citit. De asemenea fanionul ntreruperii poate fi ters prin scrierea valorii unu direct n fanionul ntreruperii. O valoare zero este ntoars atunci cnd registrul de ntreruperi al unui grup al EV este citit i nu exist nici un fanion setat i nemascat n grupul respectiv. Acest lucru permite identificarea ntreruperilor rtcite (necunoscute) ca ntreruperi EV.

141

Servirea ntreruperii

Dup ce o cerere de ntrerupere EV este recepionat, registrul EVIVRx poate fi citit n acumulator i deplasat la stnga cu unul sau mai muli bii. Dup aceea o adres ofset (adresa de nceput de intrare - a tabelei de intrri n rutinele de ntreruperi) poate fi adunat acumulatorului. O instruciune BACC poate fi utilizat pentru a sri la o intrare n tabel. Un alt salt gsit n tabel ne duce la rutina de servire a ntreruperii (ISR) pentru sursa specificat (specific - cea care a solicitat ntreruperea). Aceast procedur produce o ntrziere a servirii ntreruperii tipic de 20 cicluri CPU (25 dac este necesar salvarea unui context minim a strii mainii) din momentul n care ntreruperea a fost generat i pn cnd prima instruciune a ISR pentru sursa specific este executat. Aceast ntrziere poate fi redus la 8 cicluri CPU dac o singur ntrerupere este permis ntr-un grup EV. Dac spaiul de memorie nu este o problem, ntrzierea poate fi redus la 16 cicluri CPU fr a fi necesar folosirea unei singure ntreruperi pe grup.
Registrele fanioanelor de ntrerupere al EV

Registrele sunt toate tratate ca memorii de 16 bii. Biii neutilizai ntorc zero la citire. Scrierea biilor neutilizai nu are nici un efect. Din cauz c regitrii EVIFRx pot fi citii, apariia unei ntreruperi poate fi monitorizat de program prin citirea repetat a registrului EVIFRx adecvat, atunci cnd ntreruperea este mascat.
Registrul A al fanioanelor de ntrerupere al EV

EVIFRA adresa 742Fh


15-11 Rezervat 10 T1OFINT Flag RW-0 9 T1UFINT RW-0 8 T1CINT RW-0

7 6 5 4 3 2 1 0 T1PINT SCMP3INT SCMP2INT SCMP1INT CMP3INT CMP2INT CMP1INT PDPINT Flag RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 Biii 15-11 Bit 10 Rezervai. La citire ntorc 1 la scriere nu au efect T1OFINT Flag. ntrerupere timer GP1 la depire superioar Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul T1UFINT. ntrerupere timer GP1 la depire inferioar Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect

Bit 9

142

1= Bit 8

Reseteaz fanionul

T1CINT. ntrerupere timer GP1 la comparare Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul T1PINT. ntrerupere timer GP1 la perioad Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul SCMP3INT. ntrerupere la comparator simplu 3 Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul SCMP2INT. ntrerupere la comparator simplu 2 Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul SCMP1INT. ntrerupere la comparator simplu 1 Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul CMP3INT. ntrerupere la comparator complet 3 Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul CMP2INT. ntrerupere la comparator complet 2 Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul CMP1INT. ntrerupere la comparator complet 1 Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul PDPINT. ntrerupere la protecia circuit de comand de putere Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

143

Registrul B al fanioanelor de ntrerupere al EV

EVIFRB adresa 7430h


15-8 7 6 5 4 3 2 1 0 Rezervat T3OFINT T3UFINT T3CINT T3PINT T2UFINT T2OFINT T2CINT T2PINT Flag RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 Biii 15-8 Bit 7 Rezervai. La citire ntorc 1 la scriere nu au efect T3OFINT Flag. ntrerupere timer GP 3 la depire superioar Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul T3UFINT. ntrerupere timer GP 3 la depire inferioar Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul T3CINT. ntrerupere timer GP 3 la comparare Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul T3PINT. ntrerupere timer GP 3 la perioad Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul T2OFINT Flag. ntrerupere timer GP 2 la depire superioar Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul T2UFINT. ntrerupere timer GP 2 la depire inferioar Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul T2CINT. ntrerupere timer GP 2 la comparare Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul T2PINT. ntrerupere timer GP 2 la perioad

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

144

Citire: Scriere:

0= 1= 0= 1=

Fanionul este resetat Fanionul este setat Fr efect Reseteaz fanionul

Registrul C al fanioanelor de ntrerupere al EV

EVIFRC adresa 7431h


15-4 Rezervat 3 CAP4INT Flag RW-0 2 CAP3INT RW-0 1 CAP2INT RW-0 0 CAP1INT RW-0

Biii 15-4 Bit 3

Rezervai. La citire ntorc 1 la scriere nu au efect CAP4INT Flag. ntrerupere captur 4 Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul CAP3INT. ntrerupere captur 3 Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul CAP2INT. ntrerupere captur 2 Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul CAP1INT. ntrerupere captur 1 Citire: 0= Fanionul este resetat 1= Fanionul este setat Scriere: 0= Fr efect 1= Reseteaz fanionul

Bit 2

Bit 1

Bit 0

Registrul A de mascare a ntreruperilor EV

EVIMRA adresa 742Ch


15-11 Rezervat 10 T1OFINT ENABLE RW-0 9 T1UFINT ENABLE RW-0 8 T1CINT ENABLE RW-0

7 6 5 4 3 2 1 0 T1PINT SCMP3INT SCMP2INT SCMP1INT CMP3INT CMP2INT CMP1INT PDPINT ENABLE ENABLE ENABLE ENABLE ENABLE ENABLE ENABLE ENABLE RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0

145

Biii 15-11 Bit 10

Rezervai. La citire ntorc 1 la scriere nu au efect T1OFINT ENABLE 0= Dezactivare 1= Activare T1UFINT enable 0= Dezactivare 1= Activare T1CINT ENABLE 0= Dezactivare 1= Activare T1PINT ENABLE 0= Dezactivare 1= Activare SCMP3INT ENABLE 0= Dezactivare 1= Activare SCMP2INT ENABLE 0= Dezactivare 1= Activare SCMP1INT ENABLE 0= Dezactivare 1= Activare CMP3INT ENABLE 0= Dezactivare 1= Activare CMP2INT ENABLE 0= Dezactivare 1= Activare CMP1INT ENABLE 0= Dezactivare 1= Activare PDPINT ENABLE 0= Dezactivare 1= Activare

Bit 9

Bit 8

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

Registrul B de mascare a ntreruperilor EV

EVIMRB adresa 742Dh


15-8 7 6 5 4 3 2 1 0 Rezervat T3OFINT T3UFINT T3CINT T3PINT T2UFINT T2OFINT T2CINT T2PINT ENABLE ENABLE ENABLE ENABLE ENABLE ENABLE ENABLE ENABLE RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0

146

Biii 15-8 Bit 7

Rezervai. La citire ntorc 1 la scriere nu au efect T3OFINT ENABLE 0= Dezactivare 1= Activare T3UFINT ENABLE 0= Dezactivare 1= Activare T3CINT ENABLE 0= Dezactivare 1= Activare T3PINT ENABLE 0= Dezactivare 1= Activare T2OFINT ENABLE 0= Dezactivare 1= Activare T2UFINT ENABLE 0= Dezactivare 1= Activare T2CINT ENABLE 0= Dezactivare 1= Activare T2PINT ENABLE 0= Dezactivare 1= Activare

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

Registrul B de mascare a ntreruperilor EV

EVIMRC adresa 742Eh


15-4 Rezervat 3 CAP4INT ENABLE RW-0 2 CAP3INT ENABLE RW-0 1 CAP2INT ENABLE RW-0 0 CAP1INT ENABLE RW-0

Biii 15-4 Bit 3

Rezervai. La citire ntorc 1 la scriere nu au efect CAP4INT ENABLE 0= Dezactivare 1= Activare CAP3INT ENABLE 0= Dezactivare 1= Activare

Bit 2

147

Bit 1

CAP2INT ENABLE 0= Dezactivare 1= Activare CAP1INT ENABLE 0= Dezactivare 1= Activare

Bit 0

Registrul A al vectorului de ntrerupere EV

EVIVRA adresa 7432h


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 D5 D4 D3 D2 D1 D0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 Biii 15-6 Biii 5-0 Rezervai. La citire ntorc zero, la scriere nu au efect. D5-D0. Vector (ID) al fanionului de ntrerupere care are cea mai mare prioritate din toate fanioanele setate i nemascate din EVIFRA; valoare zero dac nici un fanion nemascat nu este setat n EVIFRA.

Registrul B al vectorului de ntrerupere EV

EVIVRB adresa 7433h


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 D5 D4 D3 D2 D1 D0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 Biii 15-6 Biii 5-0 Rezervai. La citire ntorc zero, la scriere nu au efect. D5-D0. Vector (ID) al fanionului de ntrerupere care are cea mai mare prioritate din toate fanioanele setate i nemascate din EVIFRB; valoare zero dac nici un fanion nemascat nu este setat n EVIFRB.

Registrul C al vectorului de ntrerupere EV

EVIVRC adresa 7434h


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 D5 D4 D3 D2 D1 D0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 Biii 15-6 Biii 5-0 Rezervai. La citire ntorc zero, la scriere nu au efect. D5-D0. Vector (ID) al fanionului de ntrerupere care are cea mai mare prioritate din toate fanioanele setate i nemascate din EVIFRC; valoare zero dac nici un fanion nemascat nu este setat n EVIFRC.

148

Resetarea fanionului unei ntreruperi se face prin scrierea valorii 1 n registrul EVIFRx (x = A, B sau C) sau prin citirea vectorului de ntrerupere din registrul EVIVRx (x = A, B sau C). Acest lucru este important pentru c semnaleaz achitarea ntreruperii i permite generarea ntreruperii urmtoare.

7.4.

Accesul direct la memorie (DMA)

Accesul direct la memorie, Direct Memory Access (DMA) ofer o cale avantajoas de transfer de date ntre un port de interfa al unui echipament periferic i unitatea de memorie sau ntre dou zone diferite de memorie. Aceste transferuri au o pondere relativ ridicat n activitatea general a unui calculator i reducerea timpului n care se realizeaz transferurile duce la creterea performanelor generale ale calculatorului. Spre exemplu transferul DMA se utilizeaz atunci cnd este necesar salvarea (stocarea) programelor i a rezultatelor acestora din memoria RAM pe un suport extern de memorie (disc flexibil, harddisc, band magnetic, etc.). De asemenea mecanismul transferurilor DMA este utilizat pentru remproasptarea coninutului memoriilor DRAM, cnd practic nu se face un transfer real, dar procesul de citire a memoriei DRAM n vederea transferului, realizeaz remprosptarea acestora.
Magistrala de adrese
Registru acumulator

Magistrala de date Magistrala de comenzi

Unitatea central

Memoria

Porturi

Fig. 7.5. Transferul datelor prin intermediul unitii centrale

n principiu, transferul datelor se poate face prin intermediul unitii centrale, fr a fi necesar existena unui circuit DMA. n figura 7.5 este prezentat fluxul datelor n cazul n care transferul se face prin intermediul unitii centrale. Aceast metod este uzual n cazul sistemelor ieftine dar ea prezint o serie de dezavantaje care o face nerecomandabil la sistemele performante. n primul rnd, durata transferului este relativ mare din cauz c sunt necesare dou activiti succesive ale unitii centrale: o citire a datei din memorie n unitatea central i o scriere a datei, din memorie n port, iar n al doilea rnd este ineficient ocuparea unitii centrale cu o activitate att de simpl cum este transferul datelor. n cazul utilizrii circuitului DMA performanele sistemului cresc din mai multe motive: circuitul DMA fiind un circuit specializat pentru astfel de operaii, transferul datelor se face mult mai rapid dect n cazul transferul datelor prin intermediul unitii 149

centrale, unitatea central este degrevat de astfel de sarcini iar traseul datelor este mai scurt. n figura 7.6 este prezentat fluxul datelor n cazul utilizrii circuitului DMA.
Magistrala de adrese
Registru acumulator

Magistrala de date Magistrala de comenzi

Unitatea central

Memoria

DMA

Porturi

Fig. 7.6. Transferul datelor prin intermediul circuitului DMA

Dup ce este programat, circuitul DMA genereaz semnalele de adres i de control, pe magistrala de comenzi, n aa fel nct s se citeasc datele din memorie i acestea s fie transferate portului (sau altei zone de memorie). Circuitul DMA este un circuit master ca i unitatea central. Din acest motiv aceste dou circuite nu pot lucra simultan ci ele vor prelua pe rnd controlul magistralelor sistemului. Motivul pentru care dou module master nu pot lucra simultan este c (aa cum se vede i din figura 7.6), cele dou module genereaz att adrese ct i comenzi. Dac cele dou module ar lucra simultan atunci adresa generat de unitatea central n scopul execuiei programului din memorie va fi diferit de adresa generat de unitatea DMA pentru realizarea transferului i pe magistrala de adrese (care este comun) ar aprea dou adrese diferite ceea ce ar genera un conflict. Cele dou uniti master (unitatea central i unitatea DMA) i suspend una alteia activitatea, printr-un dialog desfurat pe magistrala de comenzi. Dac circuitul DMA are de fcut un transfer, atunci va solicita unitii centrale s elibereze magistralele. n momentul n care unitatea central poate ceda magistralele semnaleaz acest lucru modulului DMA i i ntrerupe activitatea pe magistrale. La terminarea transferului (sau a unei pri a acestuia, n funcie de modul n care este programat circuitul DMA) unitatea central este informat printr-un semnal de comand c poate prelua controlul magistralelor relundu-i n acest mod activitatea. n mod aparent, faptul c cele dou module master nu pot lucra simultan cu magistralele sistemului, duce la scderea eficienei acestora. Unitatea central, n mod natural, n execuia unui program, necesit efectuarea unor activiti interne (cum ar fi de exemplu executarea unei operaii matematice) care nu solicit lucrul cu magistralele. n aceste intervale de timp circuitul DMA poate prelua controlul magistralelor fr a scdea viteza de lucru a unitii centrale. De asemenea, structura ierarhizat a magistralelor i utilizarea unor magistrale separate, care s permit funcionarea simultan a circuitului DMA i a unitii centrale, duc la creterea eficienei transferurilor de date. Spre exemplu, controlerul video necesit n general un flux mare de date n mod continuu. Din acest motiv s-a extins un standard de magistral care s 150

permit accelerarea transferurilor ntre memoria principal a sistemului de calcul i memoria video. Importana acestui mecanism de transfer al datelor a crescut o dat cu creterea capacitii memoriilor i a volumului de date prelucrate n sistem. Din acest motiv, un criteriu de performan pentru un calculator este reprezentat i de numrul modulelor DMA instalate n sistem. Unele circuite utilizeaz mecanisme DMA fr ca acest lucru s fie specificat explicit, spre exemplu cum este sistemul memoriilor cache. Un modul DMA are mai multe canale care pot fi programate separat i care pot lucra cu mai multe periferice simultan. Din acest motiv la unele porturi, n afar de adres i de numrul ntreruperii alocate se stabilete i canalul DMA asociat pentru transferul datelor.
7.4.1. Circuitul 8257 pentru acces direct la memorie DMA

Accesul direct la memorie. Direct Memory Access, DMA, ofer o cale avantajoas de transfer de date pe magistrala sistemului ntre un port de interfa al unui echipament periferic i unitatea de memorie. n varianta clasic este presupus intervenia unitii centrale, care folosete registrele sale interne ca memorie intermediar. Un astfel de transfer periferic/memorie presupune dou faze: transfer port/memorie n acumulatorul unitii centrale i apoi nc un transfer din registrul intern al unitii centrale n memorie/port. Accesul direct la memorie, realizat de un circuit LSI specializat, elimin unitatea central de pe magistrala sistemului, dirijnd n mod independent transferurile periferic - memorie prin intermediul semnalelor de citire/scriere, semnale generate simultan att pentru port, ct i pentru memorie. n plus, circuitul DMA furnizeaz adresele de memorie la locaii succesive pentru transferuri pe ir de caractere i semnalele de selecie pentru port. Accesul la magistral se realizeaz n urma unui dialog cu unitatea central folosind semnalele de cerere/cedare magistral (de exemplu semnalele HOLD/HLDA pentru microprocesorul 8080 sau BUSRQ/BUSAK pentru microprocesorul Z80). Transferurile succesive se pot realiza n pachet, la viteza maxim, sau cu cte o cerere de transfer pentru fiecare octet, n acest din urm caz, unitatea central poate lucra n pauzele dintre transferuri. Circuitul 8257 ofer funcia DMA, simultan pe patru canale. Viteza maxim corespunde transferului n pachet a cte unui octet la fiecare 4T unde T este perioada semnalului de sincronizare al unitii centrale. T nu poate fi mai mic de 0,32 microsecunde (8257) sau 0,25 microsecunde (8257-5).
7.4.1.1. Conexiunile externe

Schema bloc, figura 7.7, evideniaz aezarea, n jurul unei magistrale interne, a circuitelor de interfa cu unitatea central i a celor pentru dialogul de preluare/eliberare a magistralei acesteia, pe de o parte, i a registrelor de canal, inclusiv circuitele de dialog cu perifericele i circuitele pentru stabilirea prioritii ntre canale, pe de alt parte. Circuitul, prezentat n figura 7.8, are 40 de conexiuni externe, cu urmtoarele semnificaii: 151

D0 D7

Amplificator de magistral de date

Canal 0 Numrtor de adres de 16 bii Canal 1

DRQ 0 DACK 0

DRQ 1 DACK 1

I/OR I/OW CLK RESET A0 A1 A2 A3 CS A4 A5 A6 A7 READY HRQ HLDA MEMR MEMW AEN ADSTB Bloc de comand Bloc scriere/ citire

Numrtor de adres de 16 bii Canal 2 Numrtor de adres de 16 bii Canal 3 Numrtor de adres de 16 bii Arbitraj prioritate

DRQ 2 DACK 2

DRQ 3 DACK 3

TC MARK Figura 7.7. Schema bloc a circuitului 8257

I / OR (trei stri). Semnal de la/spre magistrala unitii centrale pentru eantionarea datelor citite din port. I / OW (trei stri). Semnal de la/spre magistrala unitii centrale pentru eantionarea datelor scrise n port. MEMR (trei stri). Semnal de la/spre magistrala unitii centrale pentru eantionarea datelor citite din locaia de memorie adresat. MEMW (trei stri). Semnal de la/spre magistrala unitii centrale pentru eantionarea datelor scrise n locaia de memorie adresat. MARK (ieire). Semnal emis la fiecare al 128-lea octet transferat. READY (intrare). Semnal care permite introducerea unor stri de ateptare, SW, naintea ncheierii transferului, avnd port-ul i locaia de memorie selectate.

152

HLDA (intrare). Semnal primit de pe 1 40 magistrala unitii centrale, semnificnd c aceasta I/OR A7 2 39 A6 I/OW s-a eliberat, n vederea transferurilor DMA. 3 38 A5 MEMR ADDSTB (ieire). Semnal de eantionare 4 37 A4 MEMW 5 36 pentru ncrcarea unui port adiional, cu octetul cel TC MARK 6 35 mai semnificativ al adresei de memorie. A3 READY 7 34 AEN (ieire). Semnal care semnific HLDA A2 8 33 A1 ocuparea magistralei unitii centrale pentru accese ADSTB 9 32 A0 DMA. Valideaz emiterea octetului cel mai AEN 10 31 Vcc HRQ 11 30 semnificativ de adres din portul adiional. D0 CS 12 29 HRQ (ieire). Semnal de cerere a CLK D1 13 28 magistralei, n vederea eliminrii unitii centrale. D2 RESET 14 27 D3 DACK 2 15 CS (intrare). Semnal de selecie pentru 26 D4 DACK 3 16 25 porturile circuitului 8257. Invalid n timpul DRQ 3 DACK 0 17 24 ciclurilor DMA. DACK 1 DRQ 2 18 23 CLK (intrare). Semnal de sincronizare. DRQ 1 D5 19 22 D6 DRQ 0 Coincide cu semnalul de tact al unitii centrale. 20 21 D7 GND RESET (intrare). Semnal de iniializare. 8257 intr n starea S1. Figura 7.8. Conexiunile externe ale circuitului 8257. DACK 2 (ieire). Semnal de selecie pentru portul corespunztor canalului 2. Se emite dup obinerea magistralei n vederea selectrii portului n vederea efecturii transferului. DACK 3 (ieire), Idem, pe canalul 3. DRQ 3 (intrare). Semnal prin care se semnalizeaz circuitului DMA c este necesar un transfer pe canalul 3. DRQ 2 (intrare). Idem, pe canalul 2. DRQ 1 (intrare). Idem, pe canalul 1. DRQ 0 (intrare). Idem, pe canalul 0. GND. Masa tensiunii de alimentare (0V). (D7-D0) (trei stri). Semnale de date pe magistrala unitii centrale. DACK1 (ieire) Semnal identic cu DACK 2 , pentru canalul 1. DACK0 (ieire). Idem, canalul 0. VCC Sursa de alimentare (+5V). A0-A7 (trei stri). Octetul cel mai puin semnificativ al liniilor de adresare ale magistralei unitii centrale. TC(0). Semnaleaz sfritul transferului irului de octei. Se emite n timpul ultimului transfer.
7.4.1.2. Registrele interne ale 8257

8257 conine cte 2 registre bidirecionale de 16 bii pentru fiecare dintre cele 4 canale i nc dou registre unidirecionale, pentru comanda i examinarea funcionrii circuitului, Semnificaia fiecrei poziii din registre rezult din tabelul 7.2.

153

TABELUL 7.2. Adresa Bistabil A3A2 intern D7 Adres Cmps 0000 0 A7 A15 1 canal 0 Cms 0000 Numrtor Cmps 0001 C7 0 S de octei Cms 0001 1 canal 0 Adres Cmps 0010 0 A7 A15 1 canal 1 Cms 0010 Numrtor Cmps 0011 C7 0 S de octei Cms 0011 1 canal 1 Adres Cmps 0100 0 A7 A15 1 canal 2 Cms 0100 Numrtor Cmps 0101 C7 0 S de octei Cms 0101 1 canal 2 Adres Cmps 0110 0 A7 A15 1 canal 3 Cms 0110 Numrtor Cmps 0111 C7 0 S de octei Cms 0111 1 canal 3 Mod 1000 AL Stare 1000 0 Simboluri folosite: Registru Octet D6 A6 A14 C6 C D5 A5 A13 C5 C13 Coninut D4 D3 A4 A3 A12 A11 C4 C3 C12 C11 D2 A2 A10 C2 C10 D1 A1 A9 C1 C9 D0 A0 A8 C0 C8

A6 A14 C6 C A6 A14 C6 C A6 A14 C6 C

A5 A13 C5 C13 A5 A13 C5 C13 A5 A13 C5 C13

A4 A12 C4 C12 A4 A12 C4 C12 A4 A12 C4 C12

A3 A11 C3 C11 A3 A11 C3 C11 A3 A11 C3 C11

A2 A10 C2 C10 A2 A10 C2 C10 A2 A10 C2 C10

A1 A9 C1 C9 A1 A9 C1 C9 A1 A9 C1 C9

A0 A8 C0 C8 A0 A8 C0 C8 A0 A8 C0 C8

TCS EV EP 0 0 UP

EN3 EN2 EN1 EN0 TC3 TC2 TC1 TC0

Cmps Cms C S AX CX

= cel mai puin semnificativ octet; = cel mai semnificativ octet; = citire port, genereaz I / OR , MEMW ; = scriere port, genereaz I / OW , MEMR ; = bit adres de start transfer, X= 0, , 15; = bit de iniializare a numrului de octei, X=0, , 13.
Registrele de canal

7.4.1.3.

Fiecruia dintre cele 4 canale i corespunde un registru pentru adresa de memorie RAM de la care ncepe transferul, ntr-un spaiu de 64 Koctei i nc un registru de 16 bii, ale crui prime 14 locaii au funcia de numrtor, pentru pn la 16 Koctei. iar celelalte 2 locaii biii 14 i 15, monitorizeaz generarea semnalelor I/OR , I/OW , MEMR , MEMW . Adresa i numrul de octei evolueaz la fiecare transfer DMA pe canalul respectiv, iar ultimul transfer este semnalat ca ncheiere a transferului, Terminal Count, TC, pe o conexiune exterioar a circuitului. Semnalele de citire/scriere corespund combinaiilor: 154

S Verificare Citire port Scriere port Invalid 0 0 1 1

C 0 1 0 1

MEMR 1 1 0 -

MEMW 1 0 1 -

I / OR 1 0 1 -

I / OW 1 1 0 -

Fiecare registru de 16 bii este accesibil printr-o dubl adresare la cte 8 bii, folosind un bistabil intern, care selecteaz ntre octetul cel mai puin semnificativ i cel mai semnificativ.
7.4.1.4. Registrul de mod

Registrul asigur validarea canalelor n lucru i a 4 opiuni, asupra modului de desfurare a dialogului pe magistral. 7 AL 6 TCS 5 EW 4 RP 3 EN3 2 EN2 1 EN1 0 EN0

Registrul este nscris, de regul, dup completarea celor 2 registre de 16 bii ale fiecrui canal cu care se lucreaz. La RESET registrul de control este ters, inhibnduse toate canalele i opiunile, astfel prevenindu-se transferuri DMA nedorite la aplicarea tensiunii. EN03: Enable Channel, corespunde validrii canalului pe care se dorete s se efectueze transferuri. Se pot face transferuri pe 14 canale. Pentru mai mult de un canal, ordinea de servire corespunde unei scheme de prioriti, stabilite de bitul 4. RP: Rotating Priority, corespunde stabilirii schemei de prioriti, ntre dou variante: prioritate fix sau prioritate circular. n varianta fix se aloc o prioritate maxim canalului 0, prioritate care descrete pn la a fi minim pentru canalul 3. n varianta circular, se aloc dinamic nivelul de prioritate al fiecrui canal, dup fiecare ciclu de transfer. n acest caz, fiecare canal servit va trece ultimul pe lista de prioriti, n arbitrarea ciclului DMA urmtor. Alegerea modului RP previne fenomenul de gtuire, bottleneck, cnd unul dintre canale monopolizeaz transferurile n mod DMA. Dac sunt prezentate cereri de transfer pe mai multe canale, se vor servi toate canalele, pe rnd. Primul transfer se va executa conform schemei fixe de prioriti. EW: Extended Write, contribuie la generarea anticipat a semnalelor de scriere, pentru compensarea unor eventuali timpi de acces mai lungi ai participanilor la transfer. n absena acestei opiuni, ar fi fost necesare stri de ateptare, folosind semnalul READY de la conexiunea exterioar 6 ceea ce ar fi micorat viteza de lucru. TCS: Terminal Count Stop, specific oprirea sau continuarea transferurilor DMA, din momentul cnd s-a emis ,,1" pe conexiunea exterioar TC, simultan cu poziionarea bitului corespunztor canalului, n registrul de stare. Bitul de validare a canalului este ters, iar operaiile DMA pe acest canal se pot relua dup o rescriere n registrul de control. n cazul n care nu se programeaz bitul TCS, transferurile DMA continu, la adrese succesive, ct timp perifericul emite DRQ. 155

AL: Autoload, autoncrcare permite, cnd este emis s, s se foloseasc nlnuirea de comenzi, fr intervenia unitii centrale. Opiunea se aplic numai canalului 2, utiliznd canalul 3 ca registru cu parametri de reiniializare. Canalul 2 se programeaz obinuit, pentru primul set de parametri, iar canalul 3 se programeaz cu setul de parametri pentru transferul ulterior. Dup ce se efectueaz ciclurile DMA conform programrii iniiale a canalului 2, se efectueaz automat o trecere a parametrilor din canalul 3 n canalul 2. Opiunea TCS nu are efect, dac a fost prevzut simultan cu opiunea AL. n cazul existenei opiunii AL, programarea canalului 2 este automat duplicata i n registrele canalului 3, ceea ce permite operaii repetate pe bloc, prin programarea unui singur canal. Se pot nscrie parametri separai pentru cele dou canale, dac se programeaz nti canalul 2 i apoi canalul 3. De observat c, dac este validat i canalul 3 i apar cereri DRQ pe acest canal, se pot efectua transferuri simultane pe canalele 2 i 3, ins, la operaia de rencrcare a canalului 2 se vor ncrca parametrii modificai ai canalului 3, cu o diferen dat de numrul de transferuri DMA ce s-au efectuat pe acest din urm canal. La intrarea ntr-un ciclu, dup reiniializarea canalului 2, se poziioneaz bitul UP n registrul de stri. Reiniializarea nu distruge parametrii canalului 3. Reiniializarea se efectueaz la urmtorul ciclu DMA dup un ciclu TC, care va fi astfel primul ciclu cu noii parametri. Bitul UP din registrul de stare se va terge dup acest prim ciclu DMA. n operaii nlnuite, bitul UP se poate examina de unitatea central pentru a semnala reiniializarea i a permite nscrierea noilor parametri n canalul 3, pentru urmtorul bloc ce se va transfera pe canalul 2.
7.4.1.5. Registrul de stare

Registrul indic pe care dintre canale s-a terminat transferul numrului de octei programat, inclusiv semnalarea strii de nceput a unui bloc de transfer cu parametri reiniializai (numai pentru canalul 2). 7 0 6 0 5 0 4 UP 3 TC3 2 TC2 1 TC1 0 TC0

TC03: Terminal Count, sfrit de numrare, corespunde strii conexiunii exterioare TC, numai c aici se specific i numrul de ordine al canalului pe care a avut loc evenimentul. Biii rmn nscrii pn la prima citire a registrului de stare, sau pn la RESET. Deoarece, ntre citirea strii i nscrierea de parametri, poate aprea semnalarea TC, este contraindicat reprogramarea canalelor n funcie de semnalrile din registrul de stare, c ntre cele dou operaii succesive nu se blocheaz transferurile DMA. UP: Update, este emis la primul transfer DMA efectuat conform unor parametri de reiniializare a canalului 2. UP nu se terge la citire. Se folosete pentru a preveni ncrcarea unor parametri n canalul 3, nainte ca parametrii precedeni s fie trecui n canalul 2.

156

7.4.1.6.

Efectuarea transferurilor cu DMA 8257

Funcionarea 8257 corespunde diagramei de stri date n figura 7.9. n urma semnalului RESET se intr n starea S1, n care se ateapt lansarea unei cereri de transfer DRQ de la periferice. Ieirea din S1 i trecerea n S0 se face la primirea DRQ pe unul din canale i lansarea cererii HOLD, pentru obinerea magistralei unitii centrale. n starea S0 se ateapt eliminarea unitii centrale de pe magistral, semnalat prin sosirea semnalului HLDA, dup care se intr n starea S1. n acest moment, 8257 emite adresele superioare pe liniile de date, memorate n portul adiional, cu semnalul ADDSTB. Se obin astfel toate cele 16 linii de adres pe magistral i se intr n starea S2. n S2 ncepe transferul prin activarea operaiei de citire i a unei eventuale scrieri anticipate. Se emite DACK pentru dialogul DRQ-DACK i se intr n starea S3, n care se activeaz scrierea i se fac semnalrile MARK i TC, dac este cazul. Din aceast stare se poate intra ntr-o stare de ateptare SW, daca nu s-a primit READY. Testarea conexiunii externe READY este eliminat dac pe canalul respectiv a fost programat o operaie de verificare, VERIFY. Din S3 se intr n S4, dac s-a primit semnalul READY n operaiile de transfer efectiv. Din SW se trece n S4 dac se primete READY. Starea S4 ncheie un ciclu DMA, inactivnd DACK i, dac este cazul, TC i MARK. n cazul operaiilor cu TCS, se terge validarea canalului respectiv, dac a aprut TC. Se stabilesc prioritile pentru urmtorul ciclu DMA. Se testeaz DRQ i HLDA. Dac DRQ nu se mai emite, se terge HOLD dup semnalarea cderii HLDA. Daca DRQ se emite n continuare, se pstreaz HOLD i, n cazul n care i HLDA se menine, se trece n modul de transfer burst, n pachet, prin succesiunea de stri S1, S2, S3, S4, S1 etc., evitndu-se dialogul de conectare/deconectare la magistrale. La pierderea magistralei, situaie semnalat de cderea HLDA, sau dac perifericul nu mai cere transfer, cu DRQ la ,,0", se terge HOLD i se trece n starea S1 pentru ciclul de reconectare S1, S0, S1, S2, S3, S4 etc. n rezumat, transferul octet cu octet se desfoar dup cum urmeaz (figura 2.25): perifericul cere transfer prin emiterea semnalului DRQ pe unul dintre canale; dac este prioritar i validat, canalul ncepe operaiunea de transfer, lansnd HOLD; la recepia HLDA se lanseaz DACK pe canalul corespunztor, pentru selectarea registrului de date al perifericului; se genereaz apoi perechea de semnale de eantionare: IOR , MEMW sau IOW , MEMR , n funcie de sensul transferului, dac nu este specificat operaia VERIFY; memoria este adresat la locaia specificat n registrul de adrese al canalului, direct de 8257 pe octetul cel mai puin semnificativ i prin intermediul portului adiional 8212, pe octetul cel mai semnificativ. Dup transferul octetului, semnalele de eantionare i achitarea cererii, DACK, se inhib, iar dac DRQ nu se mai emite nainte de S4, se elibereaz magistrala i se inhib HOLD. Funcionarea n mod burst se alege pstrnd DRQ i HLDA dup efectuarea transferului, caz in care se incrementeaz adresa memoriei i se reiau operaiile pe octet, fr deconectare/reconectare intermediar. Dac se cer transferuri simultan pe mai multe canale, procedura corespunde transferului n pachet, cu comutarea canalului pe care se emit semnalele DRQ, DACK, n funcie de schema de prioritate programat. Canalul prioritar este stabilit n S4, n funcie de semnalele DRQ prezente. 157

Dac HLDA devine inactiv, n prezena DRQ, se elibereaz magistrala, inhibndu-se HOLD i se revine n S1, starea dup RESET. Dac READY devine inactiv, eantionat n S3, se insereaz stri SW. La activarea READY, din SW se intr n S4. n acest interval semnalele de selecie DACK i de eantionare IOR / W , MEMR / W sunt active, prelungind timpul de selecie al portului/memoriei, n vederea acceptrii unui timp de acces mai mare.
RESET A DRQ 03 HRQ=1 HLDA HLDA ? arbitrare prioriti B ADDSTB eantioneaz adresele mari n port auxiliar AEN=1 IOR/MEMR = 1 IOW/MEMW = 1 (n avans) DACKi=1 IOW/MEMW = 1 (normal) nu READY TC STOP TC = 1 da IOR/MEMR=0 IOW/MEMW=0 DACKi=0 MARK=0 TC=0 HLDA nu ENCHi=0 VERIFY=0 ? VERIFY READY READY=0 ? READY C

READY=0 ?

TEST NUMRTOR DE TRANSFERURI TC = 1 sau MARK = 1

DRQ03 nici un cel puin un DRQ03 DRQ03 AEN,HRQ=0 arbitraj prioriti DRQ03 A B

Figura 7.9. Schema logic de funcionare a circuitului 8257.

158

7.5.

Circuitul contor/periodizator programabil 8253


1 24 2 23 3 22 4 21 5 20 6 19 7 8253 18 8 17 9 16 10 15 11 14 12 13

Circuitul 8253, realizat n tehnologia NMOS pe o pastil cu 24 de terminale, ale D7 Vcc cror semnificaii sunt prezentate n figura D6 WR 7.10, constitute un contor/periodizator D5 RD programabil. El este organizat sub forma a 3 D4 CS contoare independente, de cte 16 bii, avnd D3 A1 asociat logica corespunztoare pentru D2 A0 comunicaia cu unitatea centrala de prelucrare D1 C2 i cu mediul exterior. Circuitul este vzut, de D0 O2 unitatea central de prelucrare, sub forma unui C0 G2 tablou de porturi de I/E i poate fi folosit ca: O0 C1 generator programabil de semnale G0 G1 dreptunghiulare, contor de evenimente, ceas Masa O1 de timp real, monostabil numeric, element D7-D0 - conexiuni la magistrala de date a pentru generarea comenzilor unor motoare pas microsistemului (bidirecional); cu pas. Folosirea lui n sistemele cu C0 - ceas contor 0 (intrare); microprocesor, n aplicaiile privind O0 - ieire contor 0 (ieire); G0 - poarta contor 0 (intrare); prelucrarea unor semnale sub form de trenuri C1 - ceas contor 1 (intrare); de impulsuri, simplific n mod considerabil O1 - ieire contor 1 (ieire); software-ul necesar acestor prelucrri. G1 - poarta contor 1 (intrare); Dup cum se poate observa n figura C2 - ceas contor 2 (intrare); 7.11, schema bloc a circuitului const din mai O2 - ieire contor 2 (ieire); G2 - poarta contor 2 (intrare); multe componente: tamponul magistralei de A0, A1 - intrri de selecie contor (intrare); date, logica scrie/citete, registrul cuvntului CS - selecie circuit (intrare); de comand i cele trei contoare 0, 1 i 2. RD - comand citire (intrare); Tamponul magistralei de date este WR - comand scriere (intrare); bidirecional, organizat pe 8 bii, cu elemente Vcc - alimentare +5V. MASA cu trei stri, realizeaz interfaa circuitului 8253 cu magistrala de date a unitii centrale Figura 7.10. Semnificaia terminalelor de prelucrare. Datele sunt transmise sau circuitului 8253. recepionate de tampon, la execuia instruciunilor IN i OUT, de ctre unitatea central de prelucrare. Prin intermediul acestui tampon se realizeaz: programarea modurilor de lucru pentru 8253, ncrcarea contoarelor, citirea valorilor datelor din contoare. Logica scrie/citete pe baza semnalelor CS , RD , WR , A0 i Al, primite de la magistrala de legtura cu unitatea central de prelucrare, genereaz semnalele de comand pentru buna funcionare a ntregului circuit. Semnalul CS, activ pe nivel cobort, activeaz/dezactiveaz circuitul astfel nct, dac circuitul nu este selectat ( CS = 0), funcionarea lui nu este influenat. Semnalul RD activ comand citirea datelor de la contoarele circuitului, n timp ce semnalul WR activ asigur ncrcarea registrului de comand i a datelor n contoare. Liniile A0 i Al sunt conectate la magistrala de adrese i servesc la selectarea unuia dintre contoare sau a registrului de 159

comand. n tabelul 7.3 se prezint efectele semnalelor amintite mai sus asupra funcionrii circuitului.
8 D0 D7 RD WR A0 A1 CS Tampon magistral de date Logica scrie/ citeste Registrul cuvntului de comand CLK0 (C0) POARTA0 (G0) OUT0 (O0) CLK1 (C1) POARTA1 (G1) OUT1 (O1) CLK2 (C2) POARTA2 (G2) OUT2 (O2)

Contor 0 8 Contor 1

Contor 2

Figura 7.11. Structura intern a circuitului 8253.

TABELUL 7.3. CS RD WR 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 1 x x

A1 A0 Funcia 0 1 ncarc contorul 0 0 0 ncarc contorul 1 1 1 ncarc contorul 2 1 0 ncarc cuvntul de comand 0 1 Citete contorul 0 0 0 Citete contorul 1 1 1 Citete contorul 2 1 0 Neoperaional, starea de mare impedan x x Circuit neselectat, starea de mare impedan

Registrul cuvntului de comand primete de la magistral, informaia prin care se comand modul de lucru al fiecrui contor. Acest registru se selecteaz prin adresa A1A0 = 11. Coninutul su nu poate fi citit. Contoarele 0, 1 i 2 sunt identice, fiind implementate prin numrtoare de 16 bii, al cror coninut poate fi prestabilit, numrarea efectundu-se n sens descresctor. Contoarele sunt independente i pot fi programate s opereze n modul binar sau BCD, n diverse configuraii, privind intrarea de ceas, poarta de comand i citirea. Citirea coninutului unui contor oarecare se realizeaz direct, n cazul contorizrii unor evenimente sau printr-o tehnic special, n celelalte cazuri, fr a bloca intrarea de ceas. Interfaarea circuitului 8253 cu sistemul se realizeaz n maniera obinuit, a circuitelor de interfa din familia 8080. Intrrile A0 i Al se conecteaz la liniile de adrese A0, Al, ale sistemului, iar semnalul de selecie CS poate fi generat din semnalele magistralei de adrese a sistemului, prin selecie liniar sau decodificare. Semnalele RD , WR sunt derivate din semnalele IORC , IOWC ale magistralei sistemului. 160

Modul de funcionare poate fi stabilit complet prin software, ncrcnd registrul de comand cu un cuvnt corespunztor. Fiecare contor este decrementat cu o unitate pe fiecare front cztor al semnalului aplicat la intrarea de ceas. Semnalul de la intrarea de ceas poate fi asincron sau sincron. In primul caz contorul va fi folosit pentru numrarea unor evenimente. n al doilea caz contorul este folosit pentru generarea unor intervale de timp. Frecvena semnalului aplicat la intrarea de ceas poate varia ntre 0 si 3MHz. Intrarea pe poarta G poate activa sau bloca funcionarea contorului/periodizatorului respectiv. Ieirea 0 a fiecrui contor, n funcie de modul de programare, poate fi folosit ca impuls singular, cerere de ntrerupere sau ca semnal simplu de comand.
Cuvntul de comand. bit 7 bitul 0 0 contorul selectat este tratat ca valoare binar (max. 65535z); 1 contorul selectat este tratat ca valoare BCD (max. 9999BCD); biii 3,2,1 000 Mod 0; 001 Mod 1; x10 Mod 2; x11 Mod 3; 100 Mod 4; 101 Mod 5; biii 5,4 00 operaia de citire a contorului, a se vedea procedura READ/WRITE; 01 citete/ncarc octetul cel mai semnificativ (la incrcare anuleaz octetul cel mai puin semnificativ); 10 citete/ncarc octetul cel mai puin semnificativ (la incrcare anuleaz octetul cel mai semnificativ); 11 citete/ncarc cel mai semnificativ octet, apoi cel mai puin semnificativ octet; biii 7,6 00 selecie contor 0; 01 selecie contor 1; 10 selecie contor 2; 11 comand ilegal; Figura 7.12. Cuvntul de comand pentru circuitul 8253. bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Coninutul cuvntului de comand este prezentat n figura 7.12. Se constat c: biii 7, 6 sunt folosii pentru selectarea contorului la care se refer comanda respectiv, biii 5, 4 specific modalitile de manipulare ale coninuturilor octeilor inferior i superior, care formeaz contorul selectat, biii 3, 2, 1 indic modul de operare, n timp ce bitul 0 caracterizeaz funcionarea binar (valoare maxim: 6553510) sau zecimal codificat binar (valoare maxim: 9999BCD), ale contorului dat. 161

Contorul selectat se consider ncrcat atunci cnd n el s-au nscris unul sau doi octei, n funcie de specificaiile biilor 5, 4 din cuvntul de comand, operaia fiind urmat de un front pozitiv i unul negativ ale impulsului de ceas. O eventuala citire nainte de frontul cztor va conduce la o valoare incorect. n continuare vor fi prezentate modurile de funcionare ale circuitului 8253. Modul 0 este definit ca ntrerupere, la terminarea numrrii. Dup ncrcarea cuvntului de comand, corespunztor C acestui mod, ieirea contorului selectat va WR(n) fi forat la nivelul cobort (fig. 7.13). n 5 4 3 2 1 O continuare se ncarc contorul cu o anumit valoare numeric, care va fi n=5 decrementat, prin aplicarea semnalului Figura 7.13. Modul zero de ceas, pe intrarea corespunztoare. Ieirea se va menine pe nivel cobort pn n momentul cnd valoarea numrului din contor devine zero, moment n care ieirea trece pe nivel ridicat, meninndu-se astfel, pn la o noua ncrcare a contorului. Decrementarea continu i dup atingerea valorii finale. Renscrierea contorului, pe durata decrementrii, are ca efect blocarea operaiei curente, dac se ncarc primul octet, sau amorsarea unei noi operaii, dac se ncarc al doilea octet. n figura 7.13 contorul a fost ncrcat cu valoarea 5, ca urmare a execuiei unei operaii de nscriere ( WR = 0). Decrementarea se va declana dup un front pozitiv, urmat de unul negativ ale semnalului de ceas. Decrementarea este blocat pe durata aplicrii, la intrarea poart, a unui semnal de nivel cobort. Citirea coninutului contorului, pe durata decrementrii, necesit o tehnic special, care va fi prezentat la sfritul acestui paragraf. Cuvntul de comand are urmtoarea structura:
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 1 0 0 1 0 0 0 0

Modul 1 este definit ca monostabil programabil. Ieirea contorului va trece de la un nivel ridicat, la unul cobort numai dup ce cuvntul de comand i contorul au fost ncrcate i semnalul aplicat la poart are o tranziie pozitiv. Aceast tranziie declaneaz decrementarea care, la atingerea valorii finale (zero), va aduce la nivel ridicat ieirea contorului selectat (fig. 7.14). Dac n timp ce ieirea este la C nivel cobort, o nou valoare este nscris WR(n) n contor, aceasta nu va afecta durata G monoimpulsului, pn la urmtoarea O declanare. Valoarea curent a contorului 5 4 3 2 1 poate fi citit n orice moment, fr a n=5 afecta monoimpulsul. Dac intrarea la Figura 7.14. Modul 1 poarta G are o tranziie pozitiv, indiferent de faptul c decrementarea s-a terminat sau nu, contorul este relansat cu valoarea ncrcat iniial. n cazul n care, pe parcursul decrementrii, se ncarc o nou 162

valoare n contor, aceasta va fi luat n consideraie la prima tranziie pozitiva a semnalului la poarta G. Cuvntul de comand:
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 0 1 1 0 0 0 1 1

Modul 2 este definit ca generator de impulsuri divizate cu N. Ieirea va fi forat la nivel cobort, dup ncrcarea cuvntului de comand i a numrtorului selectat cu constanta N, pe o perioad egal cu cea a semnalului de ceas. Perioada impulsurilor astfel generate va fi egal cu N (fig. 7.15).
C WR(n) O 5 4 3 2 1 T 5 4 5T 3 2 1 5 4 3 2 1 5

Figura 7.15. Modul 2

Dac pe parcursul operrii, intrarea G (poarta) va fi forat la nivel cobort, ieirea 0 va fi adus la nivel ridicat, iar la revenirea lui G la un nivel ridicat, contorul se va decrementa din nou, de la valoarea iniial. Astfel, intrarea G poate fi folosit pentru sincronizarea contorului. Cuvntul de comand:
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 0 0 1 1 0 1 0 0

Modul 3 este definit ca generator de impulsuri dreptunghiulare. El este similar cu modul 2, cu excepia faptului c ieirea va rmne la un nivel ridicat pn la realizarea decrementrii, conform cu N/2 sau (N-1)/2 intervale de ceas i la nivel cobort, pentru celelalte N/2 sau (N-1)/2 intervale de ceas, dup cum N este par sau impar. Aceasta se realizeaz (fig. 7.16) prin decrementarea cu 2 pe frontul cztor al fiecrui semnal de ceas. Cnd contorul ajunge n zero, ieirea se modific, contorul este ncrcat cu valoarea iniial i procesul se continu, avnd un caracter repetitiv.
C O (n=4) 2T O (n=5) 3T Figura 7.16. Modul 3 2T 2T

163

Modul 4, definit ca strob comandat prin software, asigur o ieire la nivel ridicat, dup stabilirea modului. Decrementarea contorului selectat are loc dup ncrcarea lui cu numrul dat. Ieirea va fi forat la nivel cobort pe durata unei perioade a semnalului de ceas, cnd contorul a fost decrementat la zero. Decrementarea va fi inhibat, dac intrarea G va fi forat la nivel cobort. Rencrcarea contorului va reporni decrementarea, plecnd de la noua valoare plasat n contor (fig. 7.17).

C WR(n=4) O 4 3 2 4T 1 0 T Figura 7.17. Modul 4.

Cuvntul de comand:
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 1 0 0 1 1 0 1 0

Modul 5, definit ca strob comandat prin hardware, asigur decrementarea contorului selectat, dup ncrcarea lui, ncepnd cu frontul cresctor al semnalului aplicat la poarta G. Ieirea va fi forat la nivel cobort, pe durata unei perioade de ceas, n momentul n care coninutul contorului a devenit zero (fig. 7.18).
C WR(n=4) G O 4 3 2 4T 1 0 T Figura 7.18. Modul 5.

Operaia de citire a coninutului unui contor este important pentru a cunoate valoarea acestuia la un moment dat. Citirea se poate face n dou moduri diferite. n primul mod, citirea se face n timpul decrementrii. Pentru aceasta, pe baza unei comenzi, coninutul contorului, care urmeaz s fie citit, se foreaz ntr-un registru suplimentar, din circuitul 8253, contorul continund operaia de decrementare. Cuvntul de comand necesar are urmtoarea structur:
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 SC1 SC0 0 0 x x x x

164

SC1, SC0 - biii 7 i 6 din cuvntul de comand specific contorul al crui coninut va fi salvat n vederea citirii (00, 01, 10). Biii 5, 6 sunt egali cu 0 i specific operaia de memorare a coninutului contorului. Ceilali bii sunt indifereni. n al doilea mod se blocheaz n prealabil ceasul, printr-o logic extern sau controlnd semnalul de comand la poarta G. Dup aceasta se citete coninutul contorului i se transfer n memorie.

7.6.

Circuitele timer ale microcontrolerelor

n cazul microcontrolerelor, circuitele contor/periodizator sunt larg rspndite i reprezint unul din circuitele de baz ale acestora, ndeplinind funcii complexe. Se va prezenta n continuare modulul circuitelor de contorizare/periodizare ale microcontrolerului TI 320F240 (GPTimer) datorit numeroaselor funcii ndeplinite de acesta, reprezentnd astfel un modul complet i complex.
7.6.1. Timerele de uz general GPTimer

n modulul EV sunt trei timere de uz general (GP Timers). Aceste timere pot fi folosite ca baze de timp independente n aplicaii cum ar fi:
o generarea perioadei de eantionare n sistemele de control; o furnizarea unei baze de timp pentru operarea circuitului QEP sau unitile de captur; o furnizarea unei baze de timp pentru operarea unitile de comparare simple sau complete (full) i a circuitelor PWM asociate pentru a genera ieiri comparare/PWM. Blocurile funcionale ale timerelor GP

Figura 7.19. prezint schema bloc a timerului GP. Fiecare timer conine:
o un contor up/down scriere/citire (R/W) de 16 bii, TxCNT (x=1,2,3); o un registru R/W de 16 bii pentru comparare (cu imagine n memorie) TxCMPR (x=1,2,3); o un registru R/W de 16 bii pentru perioad (cu imagine n memorie) TxPR (x=1,2,3); o un registru de control R/W de 16 bii, TxCON (x=1,2,3); o prescalare (divizare) programabil a ceasului de intrare intern sau extern; o logic de control a ntreruperilor; o un pin de ieire al comparatorului GP timer, TxPWM/TxCMP (x=1,2,3); o ieire logic.

165

Un alt registru de control, GPTCON specific aciunile care se vor iniia pentru diferite evenimente ale timerelor i indic direcia de numrare pentru toate cele trei timere. GPTCON poate fi citit sau scris, scrierea celor trei bii de stare neavnd nici un efect.

Fig. 8.4. Schema bloc a timerului GP x = 1, 2 sau 3

Intrrile timerelor GP

Intrrile timerelor GP sunt:


o ceasul intern CPU care vine direct din miez i deci are aceeai frecven ca i ceasul CPU; o ceas extern, TMRCLK care are frecvena maxim un sfert din frecvena ceasului CPU; o intrare de direcie TMRDIR pentru utilizarea timerelor GP n modul direcional up/down; o semnal de reset RESET.

n plus timerul GP 3 poate folosi depirea timerului GP 2 ca intrare de ceas cnd timerele GP 2 i 3 sunt cascadate ntr-un timer de 32 de bii. Cnd un timer GP este utilizat cu circuitul QEP, circuitul QEP genereaz att ceasul pentru contor ct i sensul de numrare. 166

Ieirile timerelor GP

Timerele GP au urmtoarele ieiri:


o ieirea comparare/PWM a timerului GP TxPWM/TxCMP, (x=1,2,3); o semnal de start pentru modulul ADC; o semnale de depire inferioar, superioar, egalitate la comparare i egalitate la perioad pentru logica proprie de comparare sau pentru unitile de comparare simpl sau complet; o bit de indicare a sensului de numrare. Controlul operrii timerului GP

Modul de operare al timerului GP este controlat de registrul de control TxCON. Biii din registrul TxCON determin: unul din cele ase moduri de numrare este folosit pentru timerul GP; sursa de ceas intern sau extern pentru timerul GP; factorul de divizare a ceasului de intrare (n domeniul 1 la 1/128); condiia de rencrcare a registrului comparatorului timerului; activarea sau dezactivarea timerului; registrul de perioad este registrul propriu sau registrul timerului GP 1 (numai pentru T2CON i T3CON); o utilizarea semnalului de depire a timerului GP 2 ca surs de ceas pentru timer GP 3 (numai la T3CON);
o o o o o o Registrul de control al timerului GP (GPTCON)

Registrul de control GPTCON specific aciunile care se vor face la diferitele evenimente furnizate de timerele GP.
Registrele de comparare ale timerelor GP

Registrele de comparare asociate cu timerele GP stocheaz valoarea care va fi n mod continuu comparat cu contorul timerului GP. Cnd se ntlnete egalitatea se produc mai multe evenimente. Aceste evenimente includ tranziia ieirii comparare/PWM asociate i start ADC n concordan cu starea bitului din GPTCON. n plus fanionul corespunztor ntreruperii de comparare este setat. Aceast operaie poate fi activat sau dezactivat de ctre bitul 1 din TxCON.
Registrul de perioad a timerului GP

Valoarea registrului perioad a timerului GP determin perioada timerului. Operarea timerului se oprete reinnd valoarea curent, reseteaz la zero, sau pornete numrtoarea invers atunci cnd se ntlnete o egalitate ntre registrul perioadei i coninutul timerului modul de reacie depinznd de modul de numrare setat. 167

Dubla bufferare ale registrelor perioadei i comparatorului ale timerelor GP

Registrele de comparare i ale perioadei TxCMPR i TxPR ale timerului GP au corespondent n memorie. O valoare nou poate fi scris n oricare dintre aceste registre n orice moment. Valoarea este scris n corespondentul din memorie. Pentru registrul de comparare coninutul registrului din memorie este ncrcat n registrul de lucru (activ) numai cnd un anumit eveniment specificat de TxCON se produce. Pentru registrul de perioad, registrul de lucru este rencrcat cu valoarea registrului din memorie numai cnd valoarea n registrul contorului TxCNT este zero. Condiia la care registrul de comparare este rencrcat poate fi una din urmtoarele:
o imediat dup ce registrul din memorie a fost scris; o la o depire inferioar, aceasta nsemnnd atunci cnd valoarea contorului timerului GP este zero; o la depire superioar sau la egalitatea perioadei, atunci cnd valoarea contorului este zero sau cnd are o valoare egal cu cea a registrului perioadei.

Facilitatea de dubl bufferare permite codului de aplicaie s actualizeze registrul de comparare sau al perioadei n orice moment. Acesta permite schimbri ale perioadei timerului i limii pulsului PWM pentru ciclul urmtor. Schimbarea din zbor a valorii perioadei timerului n cazul generrii PWM nseamn schimbarea din zbor a frecvenei purttoarei PWM.
Iniializarea registrului perioadei

Registrul perioadei timerului GP trebuie iniializat nainte de iniializarea contorul corespunztor la o valoare diferit de zero. n caz contrar valoarea registrului perioadei va rmne neschimbat pn la urmtoarea depire inferioar. Not: Registrul de comparare este transparent (noua valoare ncrcat se duce direct n registrul activ) atunci cnd operaia de comparare asociat este dezactivat. Acest lucru se aplic tuturor registrelor de comparare din EV.
Ieirea comparare/PWM a timerului GP

Ieirea GP Timer comparare/PWM poate fi specificat a fi activ high, activ low forat high sau forat low n funcie de cum sunt configurai biii GPTCON. Ieirea va comuta din low n high (high n low) la prima egalitate la comparaie atunci cnd este activ high (low). Ea va comuta din high n low (low n high) la a doua egalitate la comparare dac GP timer este n modul de numrare sus/jos sau la egalitatea cu perioada dac GP timer este n modul numrare sus. Ieirea de comparare a timerului va deveni high (low) n acelai mod atunci cnd este setat s fie forat n starea high (low). 168

Sensul de numrare a timerului GP

Sensul de numrare pentru toate cele trei timere GP este reflectat n biii respectivi din GPTCON pe timpul tuturor operaiilor timerelor cu:
o 1 reprezentnd numrare sus; o 0 reprezentnd numrare jos.

Pinul de intrare TMRDIR determin sensul de numrare cnd timerul GP este n modul de numrare direcional up/down. Cnd TMRDIR este setat high este specificat numrarea nainte iar cnd este pus n starea low este specificat modul de numrare napoi.
Ceasul timerelor GP

Sursa de ceas a timerelor GP poate fi ceasul intern al CPU sau ceasul aplicat extern la pinul TMRCLK. Frecvena ceasului extern trebuie s fie mai mic sau egal cu un sfert din ceasul CPU. Timerele GP 2,3 sau 2 i 3 mpreun formnd un numrtor pe 32 de bii pot fi utilizate cu circuitul QEP n modul de numrare direcional up/down. n acest caz circuitul QEP furnizeaz att semnalul de ceas ct i cel de sens. Un domeniu larg de factori de prescalare este prevzut pentru fiecare timer GP.
Timer de 32 bii

Semnalul de depire al timerului GP 2 este folosit ca intrare de ceas pentru timerul GP 3 atunci cnd timerele 2 i 3 sunt cascadate ntr-un timer de 32 de bii. Cnd acest lucru se ntmpl, timerul GP 2 furnizeaz cei mai puini semnificativi 16 bii ai contorului de 32 de bii. Contorul de 32 de bii astfel obinut poate opera numai n modul direcional up/down de numrare cu ceas intern sau extern i cu intrare de sens extern. Circuitul QEP poate fi de asemenea ales pentru a furniza impulsuri de ceas i de sens pentru numrtorul de 32 de bii. Registrul perioadei pentru timerele GP 2 i 3 sunt cascadate n acest caz pentru a furniza un registru de perioad de 32 de bii pe cnd operaia de comparare este bazat pe compararea registrelor individuale i se genereaz semnale de egalitate individuale pentru fiecare potrivire pe 16 bii. Evenimentele de depire inferioar i superioar sunt generate pentru numrtor de 32 bii. Fanioanele de depire inferioar i superioar ale timerului GP 2 semnaleaz n acest caz depirile registrului de 32 de bii, cele ale timerului GP 3 neavnd nici o relevan n acest caz. Fanioanele de comparare ale timerelor GP 2 i 3 sunt setate individual la egalitatea comparrii.
Ceasul de intrare la operare QEP

Circuitul pulsurilor codate n cuadratur (QEP), atunci cnd este selectat, poate genera semnal de ceas i de direcie pentru timerele GP 2 sau 3 sau 2 i 3 mpreun pentru a forma un numrtor de 32 de bii, n modul de numrare direcional up/down. Aceast intrare de ceas nu poate fi scalat de circuitele de prescalare ale timerelor GP 169

(factorul de prescalare va fi totdeauna egal cu unu). De asemenea frecvena de ceas generat de circuitul QEP va fi de patru ori mai mare dect frecvena oricrui canal de intrare QEP din cauz c timerul selectat numr fronturile cresctoare i cztoare de pe cele dou intrri ale QEP. Frecvena de intrare la intrrile QEP trebuie s fie mai mic sau egal cu un sfert din frecvena ceasului CPU.
Sincronizarea timerelor GP

Timerele GP 2 i 3 pot fi sincronizate individual cu timerul GP 1 prin configurarea adecvat a registrelor T2CON i T3CON n modurile urmtoare:
o pornirea operrii timerului GP 2 sau 3 utiliznd acelai bit de control n T1CON care pornete i operarea timerului GP 1; o iniializarea contoarelor timerelor GP 2 sau 3 cu valori diferite nainte de pornirea operaiei sincronizate; o specificarea unuia din timerele GP 2 sau 3 care s utilizeze registrul perioadei timerului GP 1 ca registru propriu de perioad (ignornd propriul registru de perioad).

Aceste metode permit sincronizarea dorit ntre evenimentele timerelor GP. Dac fiecare timer pornete operaia de numrare de la valoarea lui curent (memorat n registrul contorului) un timer GP poate fi programat s porneasc cu o ntrziere cunoscut dup un alt timer GP. Trebuie notat c sunt necesare dou scrieri n T1CON pentru a sincroniza timerul GP1 cu timerul GP2 sau timerele GP 2 i 3.
Pornirea ADC la eveniment timer GP

Biii din GPTCON pot specifica evenimentul GP Timer pe care pornete conversia analog-digital (ADC), eveniment care poate fi: depirea inferioar, egalitatea la comparare, sau egalitatea la perioad. Aceast facilitate permite sincronizarea evenimentele GP timer i pornirea ADC fr nici o intervenie din partea CPU.
ntreruperile timerelor GP

Sunt 12 fanioane de ntrerupere n EVIFRA i EVIFRB pentru cele trei timere GP. Fiecare timer poate genera patru ntreruperi la urmtoarele evenimente:
o o o o

depire superioar TxOFINT (x=1,2 sau 3); depire inferioar TxUFINT (x=1,2 sau 3); egalitate la comparare TxCINT (x=1,2 sau 3); egalitate la perioad TxPINT (x=1,2 sau 3).

Evenimentul de egalitate la comparare se produce atunci cnd coninutul contorului timerului GP este egal cu cel al registrului de comparare. Fanionul 170

corespunztor ntreruperii de comparare este setat dou perioade de ceas CPU dup ce se produce egalitatea dac operaia de comparare a fost activat. Un eveniment de depire superioar se produce atunci cnd numrtorul timerului este egal cu FFFFh. O depire inferioar se produce atunci cnd contorul are valoarea 0000h. n mod similar un eveniment la perioad se produce cnd valoarea din contorul timerului este egal cu coninutul registrului de perioad. Fanioanele de depire superioar, inferioar sau la perioad sunt setate dou cicluri de perioad de ceas CPU dup ce s-a ntlnit evenimentul respectiv. Este de notat c definirea depirii superioare i inferioare este diferit de definiia convenional.
Operaia de numrare a timerului GP

Fiecare timer GP are ase moduri selectabile de operare:


o o o o o o

stop cu reinere; numrare sus o singur dat; numrare sus continu; numrare direcional sus/jos; numrare o singur dat sus/jos; numrare continu sus/jos.

Configuraia biilor corespunztori n registrul de control TxCON determin modul de numrare a timerului GP. Bitul de validare a timerului TxCON[6] valideaz sau invalideaz operaia de numrare a timerului. Cnd timerul este dezactivat operaia de numrare se oprete i prescalatorul timerului este resetat la x/1. Cnd timerul este activat acesta pornete operaia de numrare n concordan cu modul specificat de biii corespunztori din TxCON.
Modul stop/reinere

n acest mod operarea timerului se oprete i reine valoarea curent. Contorul timerului, ieirea de comparare, contorul de prescalare rmn neschimbate.
Modul de numrare sus o singur dat

Timerul GP numr n acest mod ceasul divizat de contorul de prescalare pn cnd valoarea din contorul timerului este egal cu cea din registrul perioadei. Pe urmtorul front cresctor a ceasului de intrare dup aceast potrivire timerul GP reseteaz la zero i i dezactiveaz operaia de numrare prin resetarea bitului de activare TxCON[6]. Fanionul ntreruperii timerului este setat dou perioade de ceas CPU dup ce s-a produs egalitatea ntre registrul perioadei i contorul timerului. O comand de start este trimis ctre modulul ADC n acelai timp ct fanionul ntreruperii este setat dac ntreruperea de perioad a fost selectat cu ajutorul biilor corespunztori din GPTCON pentru a porni ADC. 171

Dou perioade de ceas dup ce timerul GP a devenit zero este setat fanionul de depire inferioar. Un semnal de pornire este trimis ctre modulul ADC n acelai timp ct fanionul ntreruperii este setat dac ntreruperea de perioad a fost selectat cu ajutorul biilor corespunztori din GPTCON pentru a porni ADC. Fanionul de ntrerupere la depire superioar este setat dou perioade de ceas CPU dup ce valoarea TxCNT atinge valoarea FFFFh. Durata de numrare a perioadei este (TxPER)+1 cicluri de ceas prescalat de la intrarea timerului dac contorul timerului are valoarea zero la nceputul perioadei. Valoarea iniial a timerului GP poate fi orice valoare ntre 0h i FFFFh. Cnd valoarea iniial este mai mare dect valoarea registrului perioadei timerul numr sus pn la FFFFh, reseteaz la zero i numr sus n continuare pn cnd atinge valoarea perioadei. Cnd valoarea iniial a registrului contorului timerului este egal cu valoarea nscris n registrul perioadei, timerul seteaz fanionul ntreruperii la perioad, reseteaz la zero seteaz fanionul de ntrerupere la depire inferioar i imediat dup aceasta termin de numrat pn la perioad. Dac valoarea iniial a contorului este ntre zero i valoarea perioadei, timerul numr sus pn la terminarea perioadei ntr-un mod similar cu cel n care numrtorul timerului este egal cu cel al registrului perioadei. O dat ce perioada s-a terminat timerul GP poate fi pornit din nou numai de ctre software prin scrierea bitului de validare a timerului TxCON[6]. Bitul care indic sensul de numrare din GPTCON este 1 n acest caz. Se poate utiliza att ceas intern ct i cel extern. Pinul de intrare TMRDIR este ignorat n acest mod de operare. n figura 7.20. este prezentat modul de numrare sus o singur dat considernd factorul de prescalare este 1. De notat c timerul GP ncepe numrtoarea imediat ce TxCON[6] este setat. Acest lucru este valabil pentru toate modurile de numrare.

Fig. 7.20. Modul numrare sus o singur dat

172

Modul de numrare sus continuu

Modul de numrare sus continuu este similar cu numrare sus o singur dat repetat de fiecare dat cnd timerul este resetat la zero. Numrarea se face n sens direct dup ceasul primit la intrare, prescalat corespunztor, pn cnd registrul contorului este egal cu cel al perioadei. n acest moment contorul reseteaz la zero i pornete o nou perioad. Durata perioadei este TxPR+1 cicluri de ceas scalat cu excepia primei perioade. Durata primei perioade este aceeai numai n cazul n care contorul pornete de la zero. Valoarea iniial a contorului timerului GP poate fi oricare n intervalul 0h i FFFFh. Cnd valoarea iniial este mai mare dect valoarea registrului de perioad timerul numr pn la FFFFh, reseteaz la zero i continu operarea cu valoarea iniial zero. Cnd valoarea iniial este egal cu valoarea registrului de perioad, timerul seteaz fanionul de ntrerupere de perioad, reseteaz la zero, seteaz fanionul ntreruperii de depire inferioar i continu operarea cu valoarea iniial zero. Cnd valoarea iniial este cuprins ntre zero i valoarea coninutului registrului de perioad, timerul numr sus pn la valoarea registrului de perioad i continu operarea la fel ca n cazul cnd valoarea iniial este egal cu valoarea registrului perioadei. ntreruperile asociate evenimentelor (depire superioar, inferioar, perioad) sunt generate n situaiile respective la fel ca la numrarea o singur dat. Bitul de sens din GPTCON este 1 pentru acest mod. Poate fi selectat i sursa de ceas extern. Intrarea TMRDIR este ignorat n acest mod de operare. Numrarea continu sus fcut de timerul GP este n mod particular util pentru generarea PWM cu fronturi triggerate sau pentru perioade de eantionare n diferite sisteme de control ale motoarelor i micrii. Figura 7.21 prezint modul de numrare sus continuu cu factor de prescalare 1.

Fig. 7.21. Modul de numrare sus continuu

Din figura 7.21 se vede c nu se pierde nici un impuls de ceas n momentul cnd contorul atinge valoarea registrului perioadei i pornete un nou ciclu de numrare. 173

Modul de numrare direcional up/down al timerelor GP 1 i 3

Timerele n modul de numrare direcional up/down numr sus (up) sau jos (down) n concordan cu ceasul scalat i intrarea TMRDIR. Cnd pinul TMRDIR este n starea high contorul numr pn atinge perioada sau valoarea FFFFh. Cnd numrtorul atinge una din aceste valori se oprete. Numrtorul numr jos pn la valoarea zero cnd intrarea TMRDIR este n starea low. La aceast valoare (zero) numrtorul se oprete. Valoarea iniial a numrtorului poate fi oricare ntre zero i FFFFh. Cnd valoarea iniial este mai mare dect perioada timerul numr sus pn atinge FFFFh i se oprete aici dac TMRDIR este high. Dac TMRDIR este low atunci numr jos pn la valoarea perioadei dup care continu ca n situaia cnd valoarea iniial este egal cu valoare perioadei. Dac valoarea iniial este egal cu valoarea registrului perioadei atunci contorul se oprete la aceast valoare dac TMRDIR este high sau numr jos de la aceast valoare dac TMRDIR este low. Fanioanele de ntrerupere pe evenimentele respective sunt generate similar ca la modul de numrare o singur dat sus. Intervalul de timp ntre modificarea TMRDIR i modificarea sensului de numrare este de 2 cicluri de ceas CPU dup sfritul numrtorii n curs comutrii curente - (altfel spus la sfritul perioadei impulsului de numrare prescalat). Figura 7.22 ilustreaz modul de numrare direcional up/down.

Fig. 7.22. Modul de numrare direcional sus/jos

Modul de numrare direcional up/down al timerului GP 2

Modul de numrare direcional up/down la timerului GP 2 difer de cele ale timerelor 1 i 3. Timerul GP 2 numr pn la perioad i furnizeaz depire superioar i inferioar. Acest mod de operare poate fi utilizat pentru a msura durate sau numrarea apariiei evenimentelor externe n controlul motoarelor/micrii (deplasrii) i aplicaii ale electronicii de putere. Nu apar tranziii pe ieirile de comparare asociate cu modulul de comparare (care include comparare timer GP, comparare complet sau simpl) care utilizeaz timerul GP ca baz de timp. 174

Cnd QEP este selectat ca surs de ceas pentru timer GP acesta trebuie pus n modul de numrare direcional up/down.
Modul de numrare o singur dat up/down

Timerul GP n acest mod numr n concordan cu ceasul prescalat pn la valoarea din registrul perioadei. Atunci el schimb direcia de numrare i numr jos pn la valoarea zero. Cnd s-a atins valoarea zero este resetat TxCON[6] i contorul de prescalare se oprete i reine starea sa curent. Perioada timerului GP este 2x(TxPR) cicluri de ceas scalat dac valoarea sa iniial este 0. Valoarea iniial a numrtorului poate fi oricare ntre zero i FFFFh. Cnd valoarea iniial este mai mare dect perioada timerul numr sus pn atinge FFFFh reseteaz la zero i continu numrtoarea ca n cazul cnd valoarea iniial este zero. Dac valoarea iniial este egal cu valoarea registrului perioadei atunci numrtorul numr jos pn la zero i termin perioada aici. Dac valoarea iniial este ntre zero i valoarea perioadei atunci contorul numr sus pn la atingerea perioadei i apoi continu ca n situaia cnd contorul este egal cu perioada. Fanioanele de ntrerupere pe evenimentele respective sunt generate similar ca la modul de numrare o singur dat sus. Este de notat c evenimentul egalitatea perioadei se produce la jumtatea perioadei de numrare la egalitatea contorului cu registrul de perioad. O dat ce s-a stabilit acest mod de numrare operaia de numrare nu poate fi pornit dect scriind 1 n TxCON[6]. Bitul de sens este 1 la numrare sus i 0 la numrare jos. Poate fi selectat i ceasul intern i cel extern. Intrarea TMRDIR este ignorat n acest mod. Figura 7.23 ilustreaz modul de numrare o singur dat sus/jos.

Fig. 7.23. Modul de numrare o singur dat sus/jos (TxPR=3)

Modul de numrare up/down continuu

n acest mod operarea este similar modului de numrare o singur dat sus/jos cu precizarea c timerul reia operaiunea de fiecare dat cnd este resetat la zero. Odat 175

ce acest mod de operare este pornit nu este necesar nici o intervenie software sau hardware pentru contorizarea repetat a perioadei. Perioada timerului GP este 2x(TxPR) cicluri de ceas scalat cu excepia primei perioade. Durata primei perioade de numrare are aceeai valoare dac valoarea iniial a contorului timerului este 0. Valoarea iniial a numrtorului poate fi oricare ntre zero i FFFFh. Cnd valoarea iniial este mai mare dect perioada timerul numr sus pn atinge FFFFh reseteaz la zero i continu numrtoarea ca n cazul cnd valoarea iniial este zero. Dac valoarea iniial este egal cu valoarea registrului perioadei atunci numrtorul numr jos pn la zero i continu la fel ca n cazul n care valoarea iniial este zero. Dac valoarea iniial este ntre zero i valoarea perioadei atunci contorul numr sus pn la atingerea perioadei i apoi continu ca n situaia cnd contorul este egal cu perioada. Fanioanele de ntrerupere pe evenimentele respective sunt generate similar ca la modul de numrare o singur dat sus. Sensul de numrare este indicat de bitul corespunztor din GPTCON care este 1 atunci cnd timerul numr sus i 0 cnd numr jos. Poate fi selectat att ceasul intern ct i cel extern. Intrarea TMRDIR este ignorat n acest mod. Figura 7.24 prezint modul de numrare continuu sus/jos.

Fig. 7.24. Modul de numrare continuu sus/jos

Operaia de comparare a timerului GP

Fiecare timer GP are asociat un registru de comparare TxCMPR i un pin de ieire de comparare/PWM. Valoarea timerului GP este n mod constant comparat cu registrul de comparare asociat. Evenimentul la comparare se produce atunci cnd registrul de comparare asociat timerului este egal cu coninutul timerului. Operaia de comparare este validat atunci cnd bitul TxCON[1] este setat la 1. Dac acest bit este setat la 1 atunci la apariia unui eveniment de comparare se produc urmtoarele operaii:

176

o fanionul de ntrerupere la comparare este setat pe dou perioade de ceas CPU dup producerea egalitii ntre registrul timer i registrul comparator; o dac timerul nu este ntr-un mod de direcional de numrare sus/jos se produce o tranziie pe ieirea asociat comparare/PWM n concordan cu bitul de configurare din GPTCON, un ciclu de ceas dup producerea egalitii; o dac fanionul de ntrerupere la comparare a fost selectat s porneasc ADC atunci se trimite un semnal de start la acesta n acelai moment n care fanionul este setat.

Dac operaia de comparare a timerului GP este dezactivat atunci ieirea de comparare/PWM este n nalt impedan i nici unul din evenimentele descrise anterior nu se produce.
Tranziiile comparare/PWM

Tranziiile ieirilor de comparare/PWM sunt controlate de un generator de forme de und simetrice i asimetrice asociat logicii de ieire i depinde de urmtoarele:
o definirea biilor n GPTCON; o modul de numrare n care se gsete timerul; o sensul de numrare cnd modul de numrare este un singur ciclu sus jos sau numrare continu sus/jos. Generatorul de forme de und asimetrice/simetrice

Generatorul de forme de und asimetrice/simetrice genereaz o form de und asimetric sau simetric pe ieirea comparare/PWM n funcie de modul de numrare n care se gsete timerul GP.
Generarea formei de und asimetrice

O form de und asimetric cum este cea prezentat n figura 7.25 este generat cnd timerul este n modul de numrare un ciclu sau continuu sus. Cnd timerul este ntr-unul din aceste dou moduri, ieirea generatorului de forme de und se schimb n felul urmtor:
o o o o o

zero nainte ca operaia de numrare s porneasc; rmne neschimbat pn la producerea unei egaliti de comparare; comut la apariia egalitii de comparare; rmne neschimbat pn la sfritul perioadei; reseteaz la zero la sfritul perioadei dac o nou valoare de comparare pentru perioada urmtoare este diferit de zero.

177

Ieirea este 1 pe ntreaga perioad dac valoarea de comparare este zero la nceputul perioadei. Ieirea nu reseteaz la zero dac o nou valoare de comparare pentru perioada urmtoare este zero. Acest lucru este important pentru c permite generarea pulsurilor PWM cu factor de umplere ntre 0% i 100% fr apariia impulsurilor parazite. Ieirea este zero pe ntreaga perioad dac valoarea de comparare este mai mare dect valoarea din registrul perioadei. Ieirea este 1 pentru o perioad a ceasului de intrare scalat dac valoarea de comparare este egal cu valoarea perioadei. O caracteristic a formei de und asimetrice de comparare/PWM este aceea c o modificare a valorii n registrul de comparare afecteaz numai un front la pulsului comparare/PWM.

Fig. 7.25. Ieirea comparare/PVM a timerului GP pentru modul de numrare sus continuu

Generarea formei de und simetrice

O form de und simetric aa cum este cea prezentat n figura 7.26 este generat atunci cnd timerul este n modul de numrare un singur ciclu sau continuu sus/jos. Cnd timerul este ntr-unul din aceste dou moduri, ieirea generatorului de forme de und se schimb n felul urmtor: zero nainte ca operaia de numrare s porneasc; rmne neschimbat pn la producerea unei egaliti de comparare; comut la apariia primei egalitii de comparare; rmne neschimbat pn se ntlnete a doua egalitate de comparare; o comut la apariia celei de-a doua egalitii de comparare o rmne neschimbat pn la sfritul perioadei; o reseteaz la zero la sfritul perioadei dac nu s-a ntlnit a doua egalitate la comparare i o nou valoare de comparare pentru perioada urmtoare este diferit de zero.
o o o o

Ieirea este setat la 1 la nceputul perioadei i rmne 1 pn la a doua egalitate de comparare dac valoarea de comparare este 0. Dup prima tranziie de la 0 la 1, 178

ieirea rmne 1 pn la sfritul perioadei dac valoarea comparatorului este 0 pentru restul perioadei. Cnd acest lucru se ntmpl ieirea nu trebuie s reseteze la zero dac valoarea de comparare pentru urmtoarea perioad este n continuare zero. Acest lucru este fcut pentru a asigura generarea pulsurilor PWM cu factor de umplere ntre 0% i 100% fr nici un impuls parazit. Prima tranziie nu trebuie s se produc dac valoarea comparatorului este mai mare sau egal cu valoarea perioadei pentru prima jumtate a perioadei. Ieirea va comuta totui cnd o egalitate de comparare se produce n ce-a de-a doua jumtate a perioadei. Aceast eroare n comutarea ieirii adesea ca rezultat a erorilor de calcul din programele de aplicaii este corectat la sfritul perioadei din cauz c ieirea reseteaz la zero numai dac noua valoare de comparare pentru perioada urmtoare este zero. Dac se ntmpl mai trziu, ieirea rmne 1, ceea ce o pune din nou n starea corect. Not: Logica de ieire stabilete polaritatea pentru toi pinii de ieire.

Fig. 7.26. Ieirea comparare/PWM a timerului GP n modul de numrare continuu sus/jos

Logica de ieire

Logica de ieire permite stabilirea condiiilor pentru ieirea comparare/PWM n scopul comenzii diferitelor tipuri de dispozitive electronice de putere. Se pot specifica pentru ieirea comparare/PWM urmtoarele condiii: activ sus, activ jos, forat sus sau forat jos prin configurarea adecvat a biilor din GPTCON. Pentru starea activ, cele dou stri, activ sus i activ jos sunt complementare. Stare activ n 1 nseamn c ieirea furnizeaz 1 cnd este activ i zero n stare inactiv. Ieirea comparare/PWM este setat n 1 (sau 0) imediat ce biii corespunztori din GPTCON sunt setai astfel nct starea ieirii s fie forat sus (sau jos). Tabelele urmtoare descriu starea ieirii pentru diverse moduri de numrare.
TABELUL 7.4. Ieirea de comparare a timerului GP n mod numrare sus un ciclu sau continuu Desfurarea evenimentelor Starea ieirii de comparare nainte de egalitate comparare Inactiv La egalitate la comparare Setat activ La egalitate la perioad Setat inactiv

179

TABELUL 7.5. Ieirea de comparare a timerului GP n mod numrare sus/jos un ciclu sau continuu Desfurarea evenimentelor Starea ieirii nainte de prima egalitate de comparare Inactiv La prima egalitate la comparare Setat activ La a doua egalitate la comparare Setat inactiv Dup a doua egalitate la comparare Inactiv

Toate ieirile comparare/PWM sunt puse n nalt impedan cnd se produce unul din urmtoarele evenimente:
o o o o

GPTCON[6] este setat la 1 de ctre software; PDPINT este pus low i este nemascat; se comand RESET; cnd operaia este dezactivat pentru timerele GP.

Ieirea de comparare n modul de numrare direcional sus/jos

Cnd timerul este n modul de numrare direcional sus/jos nu se produce nici o tranziie la ieirile de comparare. n mod similar, nu se produce nici o tranziie la ieirile de comparare asociate cu unitile de comparare complet cnd timerul GP 1 este n modul de numrare direcional sus/jos. Nu se produce nici o tranziie la ieirile asociate unitilor de comparare simpl atunci cnd timerul GP selectat ca baz de timp pentru acestea este programat n modul de numrare direcional sus/jos. Setarea fanioanelor ce ntrerupere la comparare i generarea cererilor de ntrerupere nu depinde de modul de numrare n care este setat timerul GP.
Calcularea timpului activ/inactiv

Pentru modurile de numrare sus, valoarea registrului de comparare reprezint timpul scurs ntre nceputul perioadei i ntlnirea primei egaliti la comparare; rezult c aceasta este lungimea fazei inactive. Timpul scurs este egal cu perioada ceasului prescalat nmulit cu TxCMPR. Rezult c lungimea fazei active, limea impulsului, este dat de relaia: TxPR TxCMPR+1 cicluri ale ceasului scalat. Pentru modurile de numrare sus/jos, registrul de comparare poate avea valori diferite pentru numrarea jos i numrarea sus. Lungimea fazei active, adic limea impulsului, este dat de relaia: TxPR TxCMPRUP + TxPR TxCPMRDN ciclurile de ceas prescalat. Cnd valoarea TxCMPR este zero atunci ieirea de comparare a timerului GP este activ pe ntreaga perioad dac timerul este n modul de numrare sus. Pentru modurile de numrare sus/jos, ieirea de comparare este activ de la nceputul perioadei dac TxCMPRUP este zero. Ieirea rmne activ dup sfritul perioadei dac TxCMPRDN este de asemenea zero. Lungimea fazei active (limea impulsului) este zero atunci cnd valoarea TxCMPR este mai mare dect TxPR pentru modurile de numrare sus. Pentru modurile de numrare sus/jos prima tranziie este pierdut cnd TxCMPRUP este mai mare sau 180

egal cu TxPR. Similar, a doua tranziie este pierdut cnd TxCMPRDN este mai mare sau egal cu TxPR. Ieirea de comparare a timerului GP este inactiv pe ntreaga perioad dac ambele valori de comparare TxCMPRUP i TxCMPRDN sunt mai mari sau egale cu TxPR pentru modurile de numrare sus/jos.
Registrele de control ai timerelor GP (GPTCON i TxCON)

Registrul de control timer GP (GPTCON) adresa 7400h


15 T3STAT R-1 7 TCOMPOE RW-0 14 T2STAT R-1 5-4 T3PIN RW-0 13 T1STAT R-1 12-11 T3TOADC RW-0 3-2 T2PIN RW-0 10-9 T2TOADC RW-0 1-0 T1PIN RW-0 8-7 T1TOADC RW-0

Not: R=citire, W=scriere, -0=valoare dup reset


Bit 15 Bit 14 Bit 13 Biii 12-11

Biii 10-9

Biii 8-7

Bit6

T3STAT. Stare timer GP 3 0= Numr jos 1= Numr sus T2STAT. Stare timer GP 2 0= Numr jos 1= Numr sus T1STAT. Stare timer GP 1 0= Numr jos 1= Numr sus T3TOADC. Pornete conversie ADC de ctre eveniment timer GP 3 00 = Nici un eveniment nu pornete ADC 01 = ntreruperea la depirea inferioar pornete ADC 10 = ntreruperea la perioad pornete ADC 11 = ntreruperea la comparare pornete ADC T2TOADC. Pornete conversie ADC de ctre eveniment timer GP 2 00 = Nici un eveniment nu pornete ADC 01 = ntreruperea la depirea inferioar pornete ADC 10 = ntreruperea la perioad pornete ADC 11 = ntreruperea la comparare pornete ADC T1TOADC. Pornete conversie ADC de ctre eveniment timer GP 1 00 = Nici un eveniment nu pornete ADC 01 = ntreruperea la depirea inferioar pornete ADC 10 = ntreruperea la perioad pornete ADC 11 = ntreruperea la comparare pornete ADC TCOMPOE. Activeaz ieirea de comparare. PDPINT activ scrie zero la acest bit. 0= Dezactiveaz toate cele trei ieiri de comparare ale timerelor GP (le pune n starea de nalt impedan) 1= Activeaz toate cele trei ieiri de comparare ale timerelor GP 181

Biii 5-4

T3PIN. Polaritatea ieirii de comparare a timerului GP 3 00 = forat n starea jos 01 = activ n zero 10 = activ n unu 11 = forat n unu T2PIN. Polaritatea ieirii de comparare a timerului GP 2 00 = forat n starea jos 01 = activ n zero 10 = activ n unu 11 = forat n unu T1PIN. Polaritatea ieirii de comparare a timerului GP 1 00 = forat n starea jos 01 = activ n zero 10 = activ n unu 11 = forat n unu

Biii 3-2

Biii 1-0

Registrul de control al timerului GP (TxCON; x=1,2 i 3) registrele sunt la adresele 7404h, 7408h i 740Ch.
15 Free RW0 14 Soft RW-0 13 TMODE 2 RW-0 12 TMODE 1 RW-0 11 TMODE 0 RW-0 10 TPS2 RW-0 9 TPS1 RW-0 8 TPS0 RW-0

7 6 TSWT1 TENABL
E

RW-0

RW-0

5 4 3 TCLKS1 TCLKS TCLD1 0 RW-0 RW-0 RW-0

2 TCLD0 RW-0

1 0 TECMP SELT1PR R RW-0 RW-0

Not: R=citire, W=scriere, -0=valoare dup reset


Biii 15-14

Biii 13-11

Free, Soft. Bii de control a emulrii 00 = Stop imediat ce emularea a fost oprit 01 = Stop dup ce perioada curent a timerului este complet la oprirea emulrii 10 = Operarea nu este afectat de oprirea emulrii 11 = Operarea nu este afectat de oprirea emulrii TMODE2-TMODE0. Selectarea modului de numrare 000 = Stop/hold 001 = Modul numrare direct (sus) o singur dat (un ciclu) 010 = Modul numrare continu direct (sus) 011 = Mod numrare bidirecional (up/down) 100 = Modul numrare bidirecional o singur dat (un ciclu) 101 = Mod numrare continuu bidirecional 110 = Rezervat. Rezultat imprevizibil 182

Biii 10-8

Bit 7

Bit 6

Bit 5-4

Biii 3-2

Bit 1 Bit 0

111 = Rezervat. Rezultat imprevizibil TPS2-TPS0. Factor de divizare a ceasului de intrare 000 = x/1 001 = x/2 010 = x/4 011 = x/8 100 = x/16 101 = x/32 110 = x/64 111 = x/128 x frecvena de ceas a unitii centrale (CPU) TSWT1. (Pornirea timer GP cu timer GP 1). Pornete timerul cu bitul de validare al timerului GP 1. Acest bit este rezervat la T1CON 0= Utilizeaz propriul bit TENABLE 1= Utilizeaz bitul TENABLE din T1CON pentru validarea sau invalidarea operaiei ignornd propriul bit TENABLE TENABLE. Validare timer. n modul un singur ciclu numrare direct sau bidirecional acest bit este ters la zero de ctre timer dup ce se completeaz o perioad a operaiei 0= Dezactiveaz operarea timerului: pune timerul n starea de oprire (hold) i reseteaz contorul de divizare (prescalare) 1= Activeaz operarea timerului TCLKS1, TCLKS0. Selectarea sursei de ceas. 00 = Intern 01 = Extern 10 = Cascadare cu timerul GP 2. (este aplicabil numai la T3CON cnd timerele GP 2 i 3 sunt legate pentru a forma un timer de 32 bii; rezervat n T1CON i T2CON; ilegal dac SELT1PR=1 adic rezultatul este imprevizibil) 11 = Circuit pentru impulsuri codate n cuadratur (Aplicabil numai la T2CON i T3CON; rezervat n T1CON; ilegal dac SELT1PR este 1 adic rezultatul este imprevizibil) TCLD1, TCLD0. Condiia de rencrcare a registrului (activ) pentru comparator 00 = Cnd contorul este 0 01 = Cnd valoarea contorului este zero sau egal cu valoarea registrului perioadei 10 = Imediat 11 = Rezervat TECMPR. Validarea comparrii timerului 0= Dezactiveaz operaia de comparare a timerului 1= Activeaz operaia de comparare a timerului SELT1PR. Selecia registrului de perioad. Acest bit este rezervat n T1CON 0= Utilizeaz registru propriu de perioad 1= Utilizeaz T1PR ca registru de perioad ignornd registrul propriu 183

Not: Sincronizarea timerelor GP Dou scrieri consecutive n T1CON sunt necesare pentru a asigura sincronizarea timerelor GP cnd T1CON[6] este folosit pentru validarea timerelor GP 2 sau 3: 1. Configurai toi ceilali bii cu T1CON[6] setat la zero 2. Validai timerul GP 1 i astfel timerul GP 2 sau timerele GP 2 i 3 prin setarea T1CON[6] la unu.
Generarea ieirilor de comparare i PWM utiliznd timerele GP

Fiecare timer poate fi folosit independent pentru a furniza un canal de ieire de comparare sau PWM. Rezult c se pot genera pn la trei ieiri de comparare sau PWM.
Operaia de comparare

Pentru a genera o ieire de comparare modul de operare corespunztor trebuie nti selectat pentru timerul GP. Pentru aceasta urmtoarele activiti trebuie realizate:
o setarea TxCMPR n concordan cu valoarea de comparat; o setarea GPTCON cu tranziia dorit a ieirii care s se produc la egalitatea de comparare; o ncrcarea TxPR cu valoarea dorit a perioadei, dac este necesar; o ncrcarea TxCNT cu valoarea iniial a contorului, dac este necesar; o setarea TxCON cu modul de numrare specific, sursa de ceas i pornirea operrii. Operarea PWM

Pentru a genera o ieire PWM cu un timer GP se selecteaz modul de numrare sus continuu sau modul de numrare sus/jos continuu. Forme de und PWM cu fronturi trigerate sau asimetrice sunt generate cnd este selectat modul de numrare sus continuu. Forme de und PWM centrate sau simetrice sunt generate cnd modul de numrare sus/jos este selectat. Pentru a seta timerul GP pentru aceast operaie se efectueaz urmtoarele activiti:
o setarea TxPR n concordan cu perioada dorit a PWM (purttoarea); o setarea TxCON n modul de numrare specific, sursa de ceas i pornirea operaiei; o ncrcarea TxCMPR cu valorile corespunztoare cu valorile calculate on-line ale limii pulsurilor PWM.

184

Valoarea perioadei este obinut prin mprirea perioadei dorite a PWM la perioada ceasului de intrare a timerului GP i scznd 1 din valoarea obinut cnd este selectat modul de numrare sus continuu pentru a genera forme de und PWM asimetrice. Aceast valoare este obinut prin mprirea perioadei dorite pentru PWM la de 2 ori perioada de ceas de intrare a timerului GP cnd este selectat modul de numrare continuu sus/jos pentru a genera forme de und PWM simetrice. Timerul GP poate fi iniializat n acelai fel cum s-a artat n exemplele anterioare. Pe durata timpului de numrare, registrul de comparare al timerului GP este n mod continuu ncrcat cu noile valori determinate pentru comparare pentru noile cicluri active determinate.
Resetarea timerului GP

Cnd apare semnalul RESET se produc urmtoarele evenimente:


o toi biii registrelor timerelor GP cu excepia bitului de direcie din GPTCON sunt resetai la zero; deci toate operaiile timerelor GP sunt dezactivate. Biii indicatori ai direciei sunt toi setai la 1; o toate fanioanele de ntrerupere ale timerelor sunt resetate la 0; o toi biii de mascare ai ntreruperilor sunt resetai la zero; deci toate ntreruperile timerelor GP sunt mascate; o toate ieirile de comparare ale timerelor GP sunt puse n starea de nalt impedan.

185

Laboratorul nr. 1 Utilizarea interfeei seriale


n cadrul acestui laborator se va folosi placa S-board de interfa cu portul serial al calculatorului n scopul realizrii mai multor experimente privind transmisia serial. Imaginea plcii S-board este urmtoarea:

2 1 5 6

3 Placa S-Board permite i conine: - interfaa cu portul serial RS-232 (1); - funcia UART controlat prin circuitul UTX8100; - selectarea ratei de transfer a informaiei i a formatului ei prin jumperi (2); - leduri pentru afiarea strii circuitului i a erorilor (3); - circuit de conversie pentru realizarea transmisiei utiliznd modul I2C (4); - Conectori de extensie pentru DATA BUS, UART IN, UART AUT, SHIFT OUT (5) i S-BUS (6) necesari pentru realizarea conexiunilor cu plcile din seria EX Toate semnalele portului paralel ajung la portul S-BUS prin intermediul circuitului MAX 232 i 74HC541, circuit de tip buffer, care realizeaz i protecia la erorile ce pot aprea. Conectorul SERIAL OUTPUT permite controlul unor componente conectate la acest port prin intermediu semnalelor TxD, DTR i RTS. Pentru recepia unor semnale de la plcile de extensie se folosete portul SERIAL INPUT ce include pinii DCD, CTS, RxD i DSR. Pentru realizarea unei comunicaii complete prin intermediul portului serial, placa S-Board conine circuitul UART de tip UTX8100 ce realizeaz conversia semnalului serial preluat de la portul serial n semnal paralel pe 8 bii transmis prin 186

intermediul pinilor D0-D7 i invers. Circuitul UTX8100 poate fi controlat din punct de vedere al ratei de transfer a informaie (8 posibiliti) cu ajutorul jumperilor (2). De asemenea tot prin intermediul lor se poate seta numrul de bii transmii, controlul paritii transmisiei i setarea bitului de stop. n cazul apariiei unei erori de transmisie circuitul UTX8100 transmite aceste informaii (Eroare de paritate PE i eroare de cadru FE) prin intermediul unor pini de ieire. Placa S-Board permite creterea numrului porturilor de ieire utiliznd placa de extensie EX-09, conectat la portul SHIFTOUT.

Experimentul nr. 1 Realizarea unei transmisii de semnal serial preluat de portul calculatorului convertit n semnal paralel Pentru realizarea experimentului se va folosi placa S-Board, placa EX-01 care conine un afiaj cu leduri pe 2x8 bii, un calculator care s aib instalat programul Visual BASIC V5.0 sau mai nou i cablul de conexiune IDC-10.

Placa EX-01

Placa EX-03

Procedura de execuie a experimentului Se va defini protocolul de transmisie a semnalului serial dintre calculator i circuitul UART al plcii setndu-se urmtorii parametrii: rata de transfer 57600, 8 biii de date, fr control de paritate i un bit de stop. 1. Cu ajutorul cablului IDC-10 se va realiza conexiunea ntre portul UART OUT a plcii S-Board i DATA BUS1 a plcii EX-01; 2. Se seteaz rata de transfer la 57600 cu ajutorul jumperilor BD1, BD2 i BD3 pui pe 0 logic; 3. Se selecteaz fr control de paritate i un bit de stop cu ajutorul jumperilor PI i SB pui pe 0 logic; 4. Se selecteaz 8 biii de date cu ajutorul jumperului DL pus pe 0 logic; 5. Se pornete calculatorul i se lanseaz aplicaia Visual BASIC. 6. Realizai o form i editai controalele din figura urmtoare; 187

7. Scriei urmtorul program pentru evenimentul Form_Load pentru definirea formatului comunicaiei: Private Sub Form_Load() MSComm1.CommPort = 1 MSComm1.Settings = 57600,n,8,1 MSComm1.PortOpen = True End Sub 8. Scriei urmtorul program pentru evenimentul cmdOut_Click Private Sub cmdOut_Click () MSComm1.Output = Chr(Val(&H & txtOut.Text) Mod 256) End Sub Formatul datei txtOut este n hexazecimal dar formatul datei transmise prin MSComm1.Output este de tip caracter. Prin urmare se transform datele prima dat n zecimal, n domeniul 0-256 i utiliznd funcia Chr() se convertesc n date de tip caracter. Experimentul nr. 2 Conversia unui semnal paralel n semnal serial Pentru realizarea experimentului se va folosi placa S-Board, placa EX-03 care conine 16 comutatoare logice de semnal, un calculator care s aib instalat programul Visual BASIC V5.0 sau mai nou i cablul de conexiune IDC-10. n cadrul acestui experiment se va prelua un semnal paralel emis de placa EX-03 prin intermediul plcii S-Board care realizeaz conversia lui n semnal serial. Procedura de execuie a experimentului Cu ajutorul cablului IDC-10 se va realiza conexiunea ntre portul UART IN a plcii S-Board i DATA BUS a plcii EX-03; 1. Se seteaz rata de transfer la 57600 cu ajutorul jumperilor BD1, BD2 i BD3 pui pe 0 logic; 2. Se selecteaz fr control de paritate i un bit de stop cu ajutorul jumperilor PI i SB pui pe 0 logic; 3. Se selecteaz 8 biii de date cu ajutorul jumperului DL pus pe 0 logic; 4. Se pornete calculatorul i se lanseaz aplicaia Visual BASIC. 5. Realizai o form i editai controalele din figura urmtoare; 188

6. Scriei urmtorul program pentru evenimentul Form_Load pentru definirea formatului comunicaiei: Private Sub Form_Load() MSComm1.CommPort = 1 MSComm1.Settings = 57600,n,8,1 MSComm1.PortOpen = True MSComm1.DTREnable = False End Sub 7. Scriei rutina de ntrziere cum urmeaz: Private Sub Delay() Dim a As Single a = Timer + 0.01 Do While a > Timer DoEvents Loop End Sub 9. Scriei urmtorul program pentru evenimentul cmdln_Click Private Sub cmdIn_Click () Dim tmp As String MSComm1.DTREnable = True Delay MSComm1.DTREnable = False Delay If MSComm1.InBufferCount > 0 Then tmp = MSComm1.Input txtIn.Text = Hex(Asc(tmp)) End If End Sub Deoarece calculatorul utilizat este mai rapid dect circuitul UART , exist posibilitatea ca acesta s nu poat citi datele la timp. De aceea este foarte important utilizarea rutinei de ntrziere.

189

Laboratorul nr. 2 Comunicaia ntre sistemele de calcul


1. Introducere Comunicaia ntre calculatoare se realizeaz n scopul schimbului de date ntre sistemele de calcul. Indiferent de ceea ce reprezint datele comunicate (imagini, texte, baze de date, comenzi, etc.), modul de transmitere a datelor ntre calculatoare face obiectul unor reglementri internaionale n scopul universalizrii schimbului de date ntre sistemele de calcul. Comunicarea de date presupune stabilirea legturii ntre dou sau mai multe calculatoare i gestionarea i controlul transferului de informaie. O interfa de comunicaie reprezint un set de reguli i convenii standardizate care specific modul de realizare a unei legturi. Comunicaia ntre calculatoare poate fi realizat paralel, pe distane scurte, sau serial, pe distane lungi, evident cu diferene legate de viteza de transmisie i de resurse materiale. Comunicaia serial se realizeaz prin conectare direct ntre sistemele de calcul, prin interfaa serial (comunicaie digital - comunicaie prin modem nul), pe distane scurte (sub 15 m), sau cu ajutorul modem-urilor (comunicaie analogic), de obicei prin linii telefonice, pe distane lungi. Viteza de transmisie pe o linie serial se msoar n bps (bii pe secund), iar valorile standardizate pentru aceste viteze sunt: 150 bps, 300 bps, 600 bps, 1200 bps, 2400 bps, 4800 bps, 9600 bps, 19200 bps, 38400 bps, 57600 bps, 115200 bps. Atunci cnd se realizeaz o legtur ntre dou sau mai multe calculatoare, n special n cazul reelelor de calculatoare, pentru a face distincie ntre rolul fiecrui calculator, se folosesc termenii de: file server i client. File server (numit n continuare server), reprezint calculatorul care coordoneaz ntreaga activitate iar staiile de lucru, clienii, sunt reprezentai de ctre calculatoarele pe care lucreaz utilizatorii. 2. Realizarea comunicaiei ntre dou calculatoare prin intermediul sistemului de operare MS-DOS ncepnd cu versiunea 6 a sistemului de operare MS-DOS dou calculatoare pot fi legate n scopul schimbului de date, cu ajutorul comenzilor: INTERLNK.EXE i INTERSVR.EXE care se gsesc n directorul DOS de pe discul C. 190

Pentru a obine informaii cu privire la modul de utilizare al acestor comenzi ele pot fi lansate sub forma: interlnk /? i respectiv intersvr /? ,iar pe ecran apar informaii sumare cu privire la aceste comenzi. Pentru informaii mai complete se d comanda help i n ecranul afiat se caut cele dou comenzi cu ajutorul tastelor cu sgei sau cu ajutorul tastelor Page Up sau Page Down. Dac cursorul a fost poziionat pe una din aceste comenzi, prin apsarea tastei ENTER se afieaz informaii despre comanda respectiv. Aceste programe de comunicaie realizeaz indirectarea discurilor i al imprimantelor calculatorului server spre calculatorul client. De exemplu, dac calculatorul server are discurile A:, B:, C:, iar calculatorul client are discurile A: i C:, dup instalarea driver-ului de comunicaie vor apare pe calculatorul client, suplimentar fa de situaia anterioar, discurile D:, E:, F:, care corespund discurilor A:, B:, respectiv C: de pe calculatorul server. Ordinea indirectrii poate fi schimbat dac se lanseaz programul interlnk.exe de pe calculatorul client, aa cum se va arta mai jos. 2.1. Realizarea legturii fizice (hardware) Realizarea comunicaiei ntre dou calculatoare presupune realizarea legturii fizice ntre calculatoare si lansarea programelor de comunicaie. Legtura fizic ntre calculatoare se realizeaz prin conectarea interfeelor seriale sau paralele libere, ale celor dou calculatoare. Realizarea conexiunii se face astfel: - pentru interfaa serial conectorii disponibili pot fi conectori cu 9 pini sau cu 25 de pini. Conexiunea se realizeaz printr-un cablu cu conectori mam la ambele capete. Cablurile trebuie s aib 3 fire pentru transmisiile de date, legturile necesare fiind: Ground-Ground, Transmit-Receive, i Receive-Transmit, sau 7 fire pentru a copia fiiere la distan, conexiunile necesare fiind: 9 pin ===== pin 5 pin 3 pin 7 pin 6 pin 2 pin 8 pin 4 25 pin ====== pin 7 pin 2 pin 4 pin 6 pin 3 pin 5 pin 20 25 pin ====== pin 7 pin 3 pin 5 pin 20 pin 2 pin 4 pin 6 9 pin ===== pin 5 pin 2 pin 8 pin 4 pin 3 pin 7 pin 6

< < < < < < <

> > > > > > >

(Ground-Ground) (Transmit-Receive) (RTS - CTS) (DSR - DTR) (Receive-Transmit) (CTS - RTS) (DTR - DSR)

Pentru legtura pe interfaa paralel sunt necesari 2 conectori-tat cu 25 de pini la ambele capete. Sunt necesare 11 legturi conform tabelului de mai jos:

191

25 pin 25 pin ====== ====== pin 2 < > pin 15 pin 3 < > pin 13 pin 4 < > pin 12 pin 5 < > pin 10 pin 6 < > pin 11 pin 15 < > pin 2 pin 13 < > pin 3 pin 12 < > pin 4 pin 10 < > pin 5 pin 11 < > pin 6 pin 25 < > pin 25 (Ground-Ground) Pentru realizarea lucrrii de laborator se vor conecta dou calculatoare cu ajutorul cablului cu apte fire pe interfeele seriale COM 2 i cu ajutorul cablului cu unsprezece fire pe LPT1. 2.2. Realizarea legturii prin program (software) Realizarea legturii software ntre cele dou calculatoare presupune instalarea driver-ului (programul de comunicaie) pe calculatorul client i lansarea programului intersvr.exe pe calculatorul file server. Instalarea driver-ului de comunicaie se face prin adugarea unei linii n fiierul config.sys care se gsete n directorul rdcin al discului C: i care este fiierul de configurare al sistemului, citit la lansarea sistemului de operare. n acelai timp trebuie s ne asigurm c n acest fiier comanda: LASTDRIVE=n are valoarea n suficient de mare ca discurile calculatorului server s poat fi indirectate. De exemplu, pentru situaia prezentat mai sus, n fiierul config.sys al calculatorului client comanda LASTDRIVE trebuie s fie: LASTDRIVE=F Comanda LASTDRIVE informeaz sistemul de operare care este numrul maxim de uniti disc care pot fi instalate. Instalarea driver-ului de comunicaie presupune, aa cum s-a artat, adugarea la sfritul fiierului config.sys a liniei urmatoare: DEVICE=[drive:][path]INTERLNK.EXE [/DRIVES:n] [/NOPRINTER] [/COM][:][n|address]] [/LPT[:][n|address]] [/AUTO] [/NOSCAN] [/LOW] [/BAUD:rate] [/V] n care parametri sunt: [drive:][path] Specific localizarea fiierului INTERLNK.EXE (de obicei C:\DOS\) Comutatoare (switches): /DRIVES:n 192

Specific numrul de discuri indirectate. Valoarea implicit este 3. Dac se specific valoarea zero atunci vor fi indirectate numai imprimantele. /NOPRINTER Specific faptul c imprimantele nu vor fi indirectate la instalarea INTERLNK.EXE. Dac acest comutator nu este specificat atunci vor fi indirectate toate imprimantele gsite pe server. /COM[:][n|address] Specific portul serial care va fi utilizat pentru transferul de date. Parametrul n specific numrul portului serial iar address specific adresa portului serial. Dac omitei numrul portului sau adresa, programul interlnk de pe calculatorul client citete toate porturile seriale i alege primul port serial pe care-l gsete conectat la server. Dac punei numai opiunea /COM i omitei opiunea /LPT atunci calculatorul client caut numai porturile seriale. Implicit programul interlnk va citi toate porturile seriale i paralele. /LPT[:][|address] Specific portul paralel care va fi utilizat pentru transferul de date. Parametrul n specific numrul portului paralel iar address specific adresa portului paralel. Dac omitei numrul portului sau adresa programul, interlnk de pe calculatorul client citete toate porturile paralele i alege primul port paralel pe care-l gsete conectat la server. Dac punei numai opiunea /LPT i omitei opiunea /COM atunci calculatorul client caut numai porturile paralele. Implicit programul interlnk va citi toate porturile seriale i paralele. /AUTO Instaleaz driver-ul n memorie numai cnd calculatorul client poate stabili o legtur cu server-ul, atunci cnd calculatorul client este pornit. Implicit driver-ul este instalat n memorie chiar dac calculatorul client nu poate stabili o legtur cu calculatorul server. /NOSCAN Instaleaz interlnk.exe n memorie dar mpiedic stabilirea unei legturi ntre client i server n timpul configurrii sistemului la ncrcarea sistemului de operare. Implicit calculatorul client ncearc stabilirea unei legturi cu calculatorul server imediat dup instalarea driver-ului interlnk.exe. /LOW ncarc driver-ul de comunicaie n memoria convenional chiar dac memoria nalt este liber. Implicit interlnk.exe este ncrcat n memoria nalt dac aceasta este liber. 193

/BAUD:rate Seteaz valoarea maxim a vitezei de transfer pentru interfaa serial. Valorile permise pentru viteza de transmisie sunt: 9600, 19200, 38400, 57600, i 115200. Valoarea implicit a vitezei de transfer este 115200. /V Previne conflictele cu ceasul calculatorului. Aceast opiune se va pune dac avei o conexiune serial ntre dou calculatoare i unul dintre ele se oprete n timp ce se acceseaz prin interlnk o unitate de disc sau o imprimant. Pentru realizarea acestei lucrri de laborator se va scrie n fiierul cvonfig.sys al calculatorului client, la sfritul fiierului, urmtoarea linie: device=c:/dos/interlnk /noprinter /com:2 /baud:9600 /v Dup repornirea calculatorului, prin apsarea simultan a tastelor CTRL+ALT+DEL se va constata c fa de situaia anterioar, au mai aprut suplimentar trei uniti de disc care nu conin nici un fiier. n acest moment se poate stabili o legtur prin lansarea pe calculatorul server a programului intersvr.exe. Sintaxa instruciunii intersvr.exe este: INTERSVR [drive:]...]] [/X=drive:[...]] [/LPT:[n|address]] [/COM:[n|address]] [/BAUD:rate] [/B] [/V] Pentru copierea fiierelor de pe un calculator pe altul se va folosi comanda INTERSVR /RCOPY n care parametri sunt: [drive:][path] Specific localizarea fisierului INTERSVR.EXE (de obicei C:\DOS\) Comutatoare (switches): /X=drive: Specific litera sau literele unitilor de disc care nu vor fi redirectate. n acest fel se poate limita accesul calculatorului client la unele discuri de pe server. Implicit toate unitile de disc ale serverului vor fi redirectate. /LPT:[n|address] Specific portul paralel care va fi utilizat pentru transferul de date. Parametrul n specific numrul portului paralel iar address specific adresa portului paralel. 194

Dac omitei numrul portului sau adresa, programul intersvr de pe calculatorul server citete toate porturile paralele i alege primul port paralel pe care-l gsete conectat la client. Dac punei numai opiunea /LPT i omitei opiunea /COM atunci calculatorul server caut numai porturile paralele. Implicit programul intersvr va citi toate porturile seriale i paralele. /COM:[n|address] Specific portul serial care va fi utilizat pentru transferul de date. Parametrul n specific numrul portului serial iar address specific adresa portului serial. Dac omitei numrul portului sau adresa, programul intersvr de pe calculatorul server citete toate porturile seriale i alege primul port serial pe care-l gsete conectat la client. Dac punei numai opiunea /COM i omitei opiunea /LPT atunci calculatorul server caut numai porturile seriale. Implicit programul interlnk va citi toate porturile seriale i paralele. /BAUD:rate Seteaz valoarea maxim a vitezei de transfer pentru interfaa serial. Valorile permise pentru viteza de transmisie sunt: 9600, 19200, 38400, 57600, i 115200. Valoarea implicit a vitezei de transfer este 115200. /B Afieaz ecranul intersvr n alb-negru. Implicit afiarea se face n culori. /V Previne conflictele cu ceasul calculatorului. Aceast opiune se va pune dac avei o conexiune serial ntre dou calculatoare i unul dintre ele se oprete n timp ce se acceseaz prin interlnk o unitate de disc sau o imprimant. /RCOPY Programul intersvr realizeaz copierea fiiere de pe un calculator pe altul, dac cele dou calculatoare sunt legate printr-un modem nul, pe interfaa serial cu un cablu cu 7 fire i comanda MODE este disponibil pe calculatorul pe care ai instalat interlnk.exe. n lucrarea de laborator, pe calculatorul server, se va da comanda: intersvr /com:2 /baud:9600 /v Dup lansarea programului intersvr cele dou calculatoare sunt conectate mpreun. Pentru redirectarea unei uniti de disc a serverului la o unitate client, altfel dect s-a fcut prin indirectarea implicit se va proceda n felul urmtor: s presupunem c 195

dorim indirectarea unitii de disc c: de pe server la unitatea de disc e: a clientului; comanda care se d pe calculatorul client, este urmtoarea: interlnk e:=c: Pentru ncetarea indirectrii se d comanda pe calculatorul client: interlnk e:= 3. Desfurarea lucrrii de laborator Pentru realizarea lucrrii de laborator se vor conecta mpreun dou calculatoare n modul prezentat mai sus. Cu ajutorul utilitarului NORTON se vor copia fiiere de pe calculatorul server pe calculatorul client i invers. Referatele de laborator vor conine informaiile suplimentare despre aceste comenzi, obinute cu comanda help i modul n care rspunde utilitarul NORTON. Se va crea un program scurt in C++ pe calculatorul server i apoi acest program va fi lansat de pe calculatorul client. Referatul va conine observaiile fcute.

196

Laboratorul nr. 3 Utilizarea interfeei paralele


n cadrul acestui laborator se va folosi placa P-board de interfa cu portul paralel al calculatorului n scopul realizrii mai multor experimente privind transmisia paralel. Imaginea plcii P-board este urmtoarea: 1 5 3

Placa U-Board se va conecta direct la calculator prin intermediul portului paralel (1) i n plus are un circuit de buffer pentru prevenirea apariiei erorilor de transmisie. De asemenea placa conine circuit de conversie pentru magistral I2C. Ea asigur 3 porturi pentru transferul semnalului de la portul paralel. 1. Data Port (2) are 8 pini de semnal denumii D0 D7. Este un port numai de ieire a datelor. Toate semnalele de la portul paralel sunt transmise la acest conector. Aceste semnale sunt asigurate i la portul P-BUS (3). 2. Control port (4) conine 4 pini de semnal denumii C0 C3. C1 i C3 sunt pini cu logic invers. Este un port de ieire identic ca Data Port. Pinii sunt prescrii n standardul UIC-10 dar sunt utilizai numai 4 pini i combinaii de semnale n P-BUS. n plus pinii portului de control sunt utilizai ca pini de semnal ai magistralei I2C. C1 pentru controlul SCL(Serial clock), C0 controlul SDA (Serial data output). 197

3. Status port (3) are 5 pini denumii S3 S7. Pinii sunt prescrii n standardul UIC-10 dar sunt utilizai numai 5 pini i combinaii de semnale n P-BUS. n plus pinul S7 este utilizat ca pin de semnal ai magistralei I2C. P-Board necesit o tensiune de alimentare de 9-12V/ 500 mA de la o surs extern aplicat prin intermediul conectorului 5. Placa conine un circuit stabilizator de tensiune de 5 V, necesar alimentrii circuitelor de pe plac sau a altor plci conectate prin intermediul porturilor P-BUS, DATA BUS i I2C.

Experimentul nr. 1 Trimiterea de date de ieire utiliznd programul Visual BASIC prin portul de date al plcii P-Board Pentru realizarea experimentului se va folosi placa P-Board, placa EX-01 care conine un afiaj cu leduri pe 2x8 bii, un calculator care s aib instalat programul Visual BASIC V5.0 sau mai nou i cablul de conexiune IDC-10. Experimentul presupune realizarea aprinderii i stingerii ledurilor de pe placa EX-01 prin comenzi date prin intermediul softului Visual BASIC, transmise prin intermediul portului paralel al calculatorului i a plcii P-Board utiliznd portul DATA BUS.

Placa EX-01 Procedura de execuie a experimentului:

Placa EX-03

1. Se conecteaz placa P-Board la portul paralel al calculatorului i cu placa EX-01 utiliznd cablul IDC-10 prin intermediul portului DATA BUS. 2. Se pornete calculatorul i se lanseaz aplicaia Visual BASIC. 3. Din meniul Project al softului selectai Add File pentru includerea fiierului INPOUT32.BAS n proiect. 4. Plasai dou butoane de comand n fereastra formei Form1, ca n figur

198

5. Dai dublu click pe butonul Command 1 pentru introducerea urmtorului cod surs n View Code menu : Private Sub Command1_Click() Out &H378, &HFF End Sub 6. Aceiai operaie trebuie efectuat i pentru butonul Command2: Private Sub Command2_Click() Out &H378, 0 End Sub 7. Conectai placa P.Board la sursa de tensiune. 8. Executai programul. Dai click pe butonul Command1. Observai efectul acestei comenzi asupra ledurilor de pe placa EX-01. Toate ledurile se vor aprinde. 9. Dai click pe butonul Command2. Observai efectul acestei comenzi asupra ledurilor de pe placa EX-01. Toate ledurile se vor stinge. Explicai aceste comenzi plecnd de la faptul c &H378 este adresa portului DATA exprimat n baz 16(378) iar &HFF semnalul trimis de aprindere a ledurilor (FF 1111 1111, 1 LED aprins, 0 LED stins). 10. Dac experimentul s-a desfurat cu succes, schimbai valoarea trimis spre placa EX-01, de exemplu OUT &H378, &H55. Ledurile vor fi aprinse i stinse alternativ deoarece 55 n baz 16 este 01010101 n baz 2. Experimentul nr. 2 Trimiterea de date de ieire utiliznd programul Visual BASIC prin portul de control al plcii P-Board Pentru realizarea experimentului se va folosi placa P-Board, placa EX-01 care conine un afiaj cu leduri pe 2x8 bii, un calculator care s aib instalat programul Visual BASIC V5.0 sau mai nou i cablul de conexiune IDC-10. 199

Experimentul presupune realizarea aprinderii i stingerii ledurilor de pe placa EX-01 prin comenzi date prin intermediul softului Visual BASIC, transmise prin intermediul portului paralel al calculatorului i a plcii P-Board utiliznd portul CONTROL BUS. Procedura de execuie a experimentului: 1. Se conecteaz placa P-Board la portul paralel al calculatorului i cu placa EX-01 utiliznd cablul IDC-10 prin intermediul portului CONTROL BUS. 2. Se pornete calculatorul i se lanseaz aplicaia Visual BASIC. 3. Se utilizeaz programul de la experimentul 1 care se modic n felul urmtor. 4. Dai dublu click pe butonul Command 1 pentru introducerea urmtorului cod surs n Viev Code menu : Private Sub Command1_Click() Out &H37A, &HF4 End Sub 5. Aceiai operaie trebuie efectuat i pentru butonul Command2: Private Sub Command2_Click() Out &H37A, &HB End Sub 6. Conectai placa P.Board la sursa de tensiune. 7. Executai programul. Dai click pe butonul Command1. Observai efectul acestei comenzi asupra ledurilor de pe placa EX-01. Numai 4 leduri se vor aprinde deoarece portul de control are numai 4 bii corespunztori pinilor C0 C3. 8. Dai click pe butonul Command2. Observai efectul acestei comenzi asupra ledurilor de pe placa EX-01. Toate ledurile se vor stinge deoarece C0, C1 i C3 sunt pini cu logic invers. Trimiterea datelor prin Control port este similar cu trimiterea prin Data port cu diferena c cele dou porturi au adrese diferite (&H37A i &H378). Alt diferen este dat de numrul diferit de pini de date: 4 corespunztor celor 4 bii inferiori la Control port i 8 la Data port. Pinii C0, C1 i C3 ai portului de control sunt cu logic invers. Experimentul nr. 3 Citirea de date utiliznd portul STATUS al plcii P-Board i programul Visual BASIC Pentru realizarea experimentului se va folosi placa P-Board, placa EX-03 care conine 16 comutatoare logice de semnal, un calculator care s aib instalat programul Visual BASIC V5.0 sau mai nou i cablul de conexiune IDC-10. Experimentul presupune citirea unei informaii trimis de pe placa EX-03 prin intermediul softului Visual BASIC, transmis prin intermediul portului paralel al calculatorului i a plcii P-Board utiliznd portul STATUS . Procedura de execuie a experimentului: 200

1. Se conecteaz placa P-Board la portul paralel al calculatorului i cu placa EX-03 utiliznd cablul IDC-10 prin intermediul portului STATUS INPUT. 2. Se pornete calculatorul i se lanseaz aplicaia Visual BASIC. 3. Realizai o form, plasai un buton de comand i o csu de text necesar afirii datelor citite.

4. Adugai fiierul Inpout32.dll n program. 5. Dai dublu click pe butonul Command 1 pentru introducerea urmtorului cod surs n View Code menu : Private Sub Command1_Click() Text1.Text = Inp(&H379) End Sub 6. Conectai placa P-Board la sursa de tensiune. 7. Executai programul. Schimbai valoarea logic generat de placa EX-03 prin intermediul comutatoarelor logice i observai efectul n fereastra de text. Dac la placa EX-03 se efectueaz modificri la comutatoarele D3-D7 valoarea se va schimba n csua de text dar modificrile fcute la comutatoarele D0-D2 nu vor avea nici un efect deoarece portul STATUS va transmite numai primii 5 bii superiori din cei 8 prin pinii S3-S7. 8. Pentru a se realiza o citire mai corect a biilor transmii de la placa EX-03 se poate modifica comanda n felul urmtor Text1.Text = Hex$ (Inp(&H379) And &HF8 Xor &H80) Biii S0, S1 i S2 sunt 0 iar valoarea bitului S7 trebuie inversat. 9. Pentru citirea valorilor utilizatorul trebuie s de click tot timpul pe butonul Command1. Pentru a se realiza o citire automat se poate folosi linia de comand urmtoare: Private Sub Timer1_Timer () Text1.Text = Hex$ (Inp(&H379) And &HF8 Xor &H80) End Sub. 201

Dup ce programul ruleaz 0,5 s el va sri n subrutina Timer1_Timer () pentru a citi valorile semnalelor de la intrare. Dac au aprut modificri ele vor fi afiate n fereastra de text imediat.

Pentru a realiza o vitez mai mare de citire se va seta valoarea intervalului de timp mai mic n fereastra Properties Timer1 prezentat mai sus.

202

Laboratorul nr. 4 Comanda unui motor pas cu pas prin interfaa paralel
n cadrul acestui laborator se va experimenta comanda unui motor pas cu pas cu ajutorul calculatorului utiliznd placa P-board de interfa cu portul paralel al calculatorului i placa EX-05 destinat special comenzii motorului. Placa EX-05 i motorul pas cu pas comandat sunt prezentate n figura urmtoare:

Placa EX-05 permite comanda unui motor pas cu pas unipolar utiliznd semnale de comand primite la conectorul DATA BUS de la portul paralel al calculatorului prin intermediul plcii P-Board. Semnalele primite sunt transmise prin intermediul unor optocuploare, tranzistorelor finale care comand micarea motorului. Pentru punerea n micare a motorului pot fi folosite trei metode: rotirea cu un pas complet, jumtate de pas sau un micropas. Pentru aceasta se pot folosi 4 bii ca date de intrare pentru realizarea rotirii motorului. Placa EX-05 necesit alimentare de la o surs de tensiune continu extern. Experimentul nr. 1 Comanda unui motor pas cu pas pe o singur faz Pentru realizarea experimentului se va folosi placa P-Board, placa EX-05 , un calculator care s aib instalat programul Visual BASIC V5.0 sau mai nou, o surs de tensiune continu +12 V 2A necesar alimentrii plcii EX-05, un motor pas cu pas unipolar 12 V 100 7.5 grade/pas i cablul de conexiune IDC-10. 203

Procedura de execuie a experimentului Datele de intrare pentru comanda pe o singur faz a motorului pas cu pas sunt mprite n dou grupuri. Primul format din comenzile 1, 2, 4, i 8 necesare rotirii motorului n sensul antiorar iar cellalt grup n sensul orar cu comenzile 8, 4, 2, i 1. Aceste comenzi sunt prezentate n tabelele de mai jos. Pas 1 2 3 4 Faza 4 Faza 3 Faza 2 0 0 0 0 0 1 0 1 0 1 0 0 Rotire la stnga Faza 1 1 0 0 0 Pas 1 2 3 4 Faza 4 Faza 3 Faza 2 1 0 0 0 1 0 0 0 1 0 0 0 Rotire la dreapta Faza 1 0 0 0 1

1. Se pornete calculatorul i se lanseaz aplicaia Visual BASIC. 2. Realizai o form i editai controalele din figura urmtoare;

3. Scriei codul surs pentru butonul de comand Command1 (Left): Private Sub Command1_Click(): Left = False Rights = True Do DoEvents Out &H378, 1 Call delay Out &H378, 2 Call delay Out &H378, 4 Call delay Out &H378, 8 Call delay 204

Loop Until Lefts = True End Sub 4. Conectai placa P-Board cu placa EX-05 cu ajutorul cablului IDC-10 prin intermediul portului DATA BUS. Conectai motorul pas cu pas la placa EX05 i verificai c fazele sunt conectate corect. 5. Alimentai plcile EX-05 i P-Board . 6. Rulai programul creat. 7. Dnd click pe butonul Left, programul va trimite valorile 1, 2, 4, i 8 n ordine. Fiecare comand este separat printr-o rutin de ntrziere. n acelai timp, comanda Do Loop Until va verifica starea comenzii Rights . Observai rotirea motorului. 8. n realizarea rutinei de ntrerupere pot fi utilizate mai multe metode. Una din ele presupune utilizarea bazei de timp a calculatorului. Avantajul metodei este c timpul de ntrziere este identic la toate calculatoarele dar dezavantajul este dat de limitarea de vitez. Viteza de execuie a programului ar putea s nu permit execuia unor condiii corect. Valoarea minim este de 0,01 secunde. Un program simplu pentru realizarea subrutinei este prezentat mai jos: Sub delay() Times = Timer Do DoEvents Loop Until Timer >= Times + 0.01 End Sub Aceast rutin verific valoarea variabilei Timer. Aceasta este o valoare intern a calculatorului Times + 0,01 n sec. 9. Alt metod de realizare a rutinei de ntrziere este prezentat mai jos. Aceast metod crete viteza de lucru dar depinde de calculatorul utilizat. Sub delay() For i = 1 To HScroll1.Value DoEvents Next i End Sub Aceast rutin utilizeaz comanda For Next i cursorul Hscroll pentru ajustarea vitezei. n cazul n care perioada de timp a buclei este mare i viteza programului scade, inserai comanda Doevents n bucl. 10. Codul surs pentru butonul de comand Command2 (Rights): Private Sub Command2_Click(): Left = True Rights = False 205

Do DoEvents Out &H378, 8 Call delay Out &H378, 4 Call delay Out &H378, 2 Call delay Out &H378, 1 Call delay Loop Until Rights = True End Sub Operaiile i explicaiile sunt similare ca rotirea la stnga.

Experimentul nr. 2 Comanda unui motor pas cu pas pe dou faze Pentru realizarea experimentului se va folosi placa P-Board, placa EX-05 , un calculator care s aib instalat programul Visual BASIC V5.0 sau mai nou, o surs de tensiune continu +12 V 2A necesar alimentrii plcii EX-05, un motor pas cu pas unipolar 12 V 100 7.5 grade/pas i cablul de conexiune IDC-10. Procedura de execuie a experimentului Datele de intrare pentru comanda pe dou faze a motorului pas cu pas sunt mprite n dou grupuri. Primul format din comenzile 9, 3, 6, i 12 necesare rotirii motorului n sensul antiorar iar cellalt grup n sensul orar cu comenzile 12, 6, 3, i 9. Aceste comenzi sunt prezentate n tabelele de mai jos. Pas 1 2 3 4 Faza 4 Faza 3 Faza 2 1 0 0 0 0 1 0 1 1 1 1 0 Rotire la stnga Faza 1 1 1 0 0 Pas 1 2 3 4 Faza 4 Faza 3 Faza 2 1 1 0 0 1 1 0 0 1 1 0 0 Rotire la dreapta Faza 1 0 0 1 1

1. Se pornete calculatorul i se lanseaz aplicaia Visual BASIC. 2. Realizai o form i editai controalele din figura urmtoare;

206

3. Scriei codul surs pentru butonul de comand Command1 (Left): Dim i As Integer Dim Lefts, Rights as Boolean Private Sub Command1_Click(): Left = False Rights = True Do DoEvents Out &H378, 9 Call delay Out &H378, 3 Call delay Out &H378, 6 Call delay Out &H378, 12 Call delay Loop Until Lefts = True End Sub 4. Codul surs pentru butonul de comand Command2 (Rights): Private Sub Command2_Click(): Left = True Rights = False Do DoEvents Out &H378, 12 Call delay Out &H378, 6 Call delay Out &H378, 3 207

Call delay Out &H378, 9 Call delay Loop Until Rights = True End Sub 5. Conectai placa P-Board cu placa EX-05 cu ajutorul cablului IDC-10 prin intermediul portului DATA BUS. Conectai motorul pas cu pas la placa EX05 i verificai c fazele sunt conectate corect. 6. Alimentai plcile EX-05 i P-Board . 7. Rulai programul creat. 8. Observai rotirea motorului i facei comparaia cu experimentul 1. Comanda motorului pas cu pas pe dou faze determin obinerea unui cuplu mai mare la motor dar consumul de energie este mai mare. Experimentul nr. 3 Comanda unui motor pas cu pas pentru rotirea cu jumtate de pas Pentru realizarea experimentului se va folosi placa P-Board, placa EX-05 , un calculator care s aib instalat programul Visual BASIC V5.0 sau mai nou, o surs de tensiune continu +12 V 2A necesar alimentrii plcii EX-05, un motor pas cu pas unipolar 12 V 100 7.5 grade/pas i cablul de conexiune IDC-10. Procedura de execuie a experimentului Datele de intrare pentru aceast comand a motorului pas cu pas sunt mprite n dou grupuri de cte 8 valori. Primul format din comenzile 9, 1, 3, 2, 6, 4, 12 i 8 necesare rotirii motorului n sensul antiorar iar cellalt grup n sensul orar cu comenzile 8, 12, 4, 6, 2, 3, 1 i 9. Aceste comenzi sunt prezentate n tabelele de mai jos. Pas 1 2 3 4 5 6 7 8 Faza 4 Faza 3 Faza 2 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 Rotire la stnga Faza 1 1 1 1 0 0 0 0 0 Pas 1 2 3 4 5 6 7 8 Faza 4 Faza 3 Faza 2 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 Rotire la dreapta Faza 1 0 0 0 0 0 1 1 1

208

1. Se pornete calculatorul i se lanseaz aplicaia Visual BASIC. 2. Realizai o form i editai controalele din figura urmtoare;

3. Scriei codul surs pentru butonul de comand Command1 (Left): Private Sub Command1_Click(): Left = True Rights = False Do DoEvents Out &H378, 9 Call delay Out &H378, 1 Call delay Out &H378, 3 Call delay Out &H378, 2 Call delay Out &H378, 6 Call delay Out &H378, 4 Call delay Out &H378, 12 Call delay Out &H378, 8 Call delay Out &H378, 0 Call delay Loop Until Rights = True End Sub 209

4. Codul surs pentru butonul de comand Command2 (Rights): Private Sub Command2_Click(): Left = False Rights = True Do DoEvents Out &H378, 8 Call delay Out &H378, 12 Call delay Out &H378, 4 Call delay Out &H378, 6 Call delay Out &H378, 2 Call delay Out &H378, 3 Call delay Out &H378, 1 Call delay Out &H378, 9 Call delay Out &H378, 0 Call delay Loop Until Lefts = True End Sub 5. Conectai placa P-Board cu placa EX-05 cu ajutorul cablului IDC-10 prin intermediul portului DATA BUS. Conectai motorul pas cu pas la placa EX05 i verificai c fazele sunt conectate corect. 6. Alimentai plcile EX-05 i P-Board . 7. Rulai programul creat. 8. Observai rotirea motorului i facei comparaia cu experimentul 1 i 2. Motorul se va roti mai ncet dect la experimentele 1 i 2 dar rotaia permite o rezoluie mai bun, un pas mai mic al motorului.

210

Laboratorul nr. 5 Studiul convertorului analog numeric


n cadrul acestui laborator se va experimenta conversia unui semnal analogic ]n semnal digital i invers cu ajutorul calculatorului utiliznd placa P-board de interfa cu portul paralel al calculatorului i placa EX-08 ce conine circuitul PCF8591 convertor AD/DA. Placa EX-08 este prezentat n figura urmtoare:

Circuitul principal al plcii PCF8591 permite achiziie de date pe 4 canale analogice, are o ieire analogic i comunic cu alte componente prin interfaa I2C. Cei trei pini de adres A0 A2 sunt folosii pentru programarea hardware a circuitului privind comunicarea cu maximum 8 dispozitive. Adresele, semnalul de control i semnalul de date spre dispozitive sau de la ele sunt transferate serial prin dou linii de date bidirecionale I2C. Principalele funcii ale plcii sunt urmtoarele: multiplexarea semnalului analog de la intrare, conversie pe 8 bii analog digital i digital analog. Rata maxim de conversie este strns legat de viteza maxim a magistralei I2C. 211

Semnalul de intrare poate fi selectat din 2 surse. Una din exterior cuplat la conectorul de intrare iar a doua surs intern reprezentat prin rezistoarele de pe plac. Selecia surselor se efectueaz prin jumperii JP704-JP707 de pe plac. Interfa analogic cu portul paralel al calculatorului prin intermediul magistralei I2C Pentru realizarea experimentului se va folosi placa P-Board, placa EX-08 , un calculator care s aib instalat programul Visual BASIC V5.0 sau mai nou, o surs de tensiune continu 0-5 V cu patru ieiri , un multimetru digital i cablul de conexiune I2C. Procedura de execuie a experimentului 1 Experimentul presupune citirea unui semnal analogic continuu cu ajutorul plcii EX-08. Paii urmai de control al circuitului PCF8591 sunt urmtorii: 1. Trimiterea condiiei de START 2. Trimiterea adresei - 000 (A0 A2 se conecteaz la mas) i definirea modului de scriere (bitul LSB clear 0 R/W = 0) 3. Ateptarea condiiei ACK de la PCF8591 4. Trimiterea datelor de control spre PCF8591, 45H adic activeaz ieirea analog. Se seteaz intrarea analog pe modul single, citire continu i ncepere de citire a semnalului de la ADC pe canalul 1 5. Ateptarea condiiei ACK de la PCF8591 6. Trimiterea condiiei de STOP 7. Trimiterea condiiei de START 8. Trimiterea adresei - 000 (A0 A2 se conecteaz la mas) i definirea modului de scriere (bitul LSB clear 1 R/W = 1) pentru nceperea citirii datelor de la intrarea analog 9. Ateptarea condiiei ACK de la PCF8591 10. Citete intrarea ACD canalul 1 11. Trimite condiia MAck (Master Ack) la PCF8591 12. Citete intrarea ACD canalul 2 13. Trimite condiia MAck (Master Ack) la PCF8591 14. Citete intrarea ACD canalul 3 15. Trimite condiia MAck (Master Ack) la PCF8591 16. Citete intrarea ACD canalul 4 17. Trimite condiia MAck (Master Ack) la PCF8591 18. Trimite condiia de STOP Toi aceti pai pot fi convertii n cod VISUALBasic dup cum urmeaz: Read 4 analog input in continuous Private Sub Timer1_Timer() 212

Call I2CStart Call Send8BIT(&H90) Call Ack Call Send8BIT(&H45) Call Ack Call I2CStop Call I2CStart Call Send8BIT(&H91) Call Ack Text1.Text = (DAT * 5)/ 255 Call MAck Text2.Text = (DAT * 5)/ 255 Call MAck Text3.Text = (DAT * 5)/ 255 Call MAck Text4.Text = (DAT * 5)/ 255 Call Ack Call I2CStop End Sub Subrutina MAck este utilizat pentru trimiterea condiiei de confirmare de la calculator la circuitul PCF8591. Codul ei este prezentat mai jos: Mack subroutine Private Sub Mack() Out &H37A, Inp(&H37A) And &HFE SDA=0 Out &H37A, Inp(&H37A) Or 2 SDL=1 Out &H37A, Inp(&H37A) And &HFD SDL=0 Out &H37A, Inp(&H37A) Or 1 SDA=1 End Sub Subrutinele I2CStart, I2CStop Ack i Send8BIT sunt prezentate mai jos: Private Sub I2CStart() Out &H37A, Inp(&H37A) Or 1 SDA=1 Out &H37A, Inp(&H37A) Or 2 SCL=1 Out &H37A, Inp(&H37A) And &HFE SDA=0 Out &H37A, Inp(&H37A) And &HFD SCL=0 End Sub Private Sub I2CStop() Out &H37A, Inp(&H37A) And &HFE SDA=0 Out &H37A, Inp(&H37A) Or 2 SCL=1 Out &H37A, Inp(&H37A) Or 1 SDA=1 End Sub Private Sub Ack() Out &H37A, Inp(&H37A) Or 1 SDA=1 Out &H37A, Inp(&H37A) Or 2 SCL=1 213

Out &H37A, Inp(&H37A) And &HFD SCL=0 End Sub n cod se seteaz 4 csue de text care vor afia datele de pe cele 4 canale analoge ale ADC. Valorile reprezint tensiunile citite de la intrrile circuitului PCF8591. Imaginea formei create n VISUALBasic este urmtoarea:

Modul de desfurare practic a experimentului 1. 2. 3. 4. Se seteaz adresa 000 la circuitul PCF8591 cu ajutorul jumperilor de pe plac Se conecteaz placa P-Board cu placa EX-08 prin intermediul cablului I2C Se conecteaz placa P-Board la portul paralel al calculatorului i se alimenteaz Se pornete calculatorul se lanseaz aplicaia Visual BASIC se creeaz forma precedent i se scrie programul. 5. Se deschide fiierul Lab12A.vbp 6. Se seteaz jumperii pentru selectarea modului TEST CH-1 intrare analogic (se selecteaz sursa analog de pe plac, vezi figura de mai jos) 7. Se ajusteaz rezistorul variabil CH-1 8. Se observ valoarea tensiunii ce se modific n csua Text1 9. Testai i celelalte intrri CH-2 CH-4. Se urmresc paii 7 i 8 precedeni observnd modificrile valorilor din csuele de text: Text2 pentru CH-2, Text3 pentru CH-3, Text4 pentru CH-4 10. Se seteaz jumperii pentru test la toate canalele 11. Se ajusteaz rezistoarele pentru fiecare canal n parte i se observ valorile din cele 4 csue de text.

214

Se conecteaz cu placa PBoard utiliznd cablul I2C EX-08


ANALOG OUTPUT TEST CH-1 TEST CH-2 TEST CH-3 TEST CH-4 + -

+ + + + + + + + Alimentare de la o surs continu + 5V -

+
CH-1

+
CH-2

+
CH-3

+
CH-4

ANALO G

Procedura de execuie a experimentului 2

Scrierea de date pe 8 bii n modulul DAC a circuitului PCF8591. Paii ce trebuie urmai pentru desfurarea experimentului sunt urmtorii: 1. Trimiterea condiiei de START 2. Trimiterea adresei - 000 (A0 A2 se conecteaz la mas) i definirea modului de scriere (bitul LSB clear 0 R/W = 0) 3. Ateptarea condiiei ACK de la PCF8591 4. Trimiterea datelor de control spre PCF8591, 44H adic activeaz ieirea analog. 5. Ateptarea condiiei ACK de la PCF8591 6. Trimitere de date n intervalul 0-255 la ieirea analog 7. Ateptarea condiiei ACK de la PCF8591 8. Trimite condiia de STOP Toi aceti pai pot fi convertii n cod VISUALBasic dup cum urmeaz: Private Sub Text5_Change() If Val(Text5.Text) > 5 Then Text5.Text = 5 Call I2CStart Call Send8BIT(&H90) Call Ack Call Send8BIT(&H44) Call Ack Call Send8BIT(Val(Text5.Text) * 51.2) Call Ack Call I2CStop End Sub

215

Aceast rutin utilizeaz csua de text Text5 pentru definirea datei ce va trimis circuitului PC8591. 9. Se seteaz adresa 000 la circuitul PCF8591 cu ajutorul jumperilor de pe plac 10. Se conecteaz placa P-Board cu placa EX-08 prin intermediul cablului I2C 11. Se conecteaz placa P-Board la portul paralel al calculatorului i se alimenteaz 12. Se pornete calculatorul se lanseaz aplicaia Visual BASIC 13. Se deschide fiierul Lab12A.vbp 14. Introducei o valoarea a tensiunii n csua Text5 (valoarea maxim 5) 15. Utilizai multimetrul digital, setat pentru msurarea unei tensiuni continue, pentru msurarea tensiunii la ieirea analog a plcii EX-08 i comparai-o cu valoarea introdus n csua de text (vezi figura urmtoare) Multim. gigital Se conecteaz cu placa PBoard utiliznd cablul I2C EX-08
ANALOG OUTPUT TEST CH-1 TEST CH-2 TEST CH-3 TEST CH-4 + -

+ +

+
CH-1

+
CH-2

+
CH-3

+
CH-4

+ + ANALOG + INPUT + +

216

16. Apoi conectai ieirea analog la intrarea CH-1 a plcii EX-08 ca n figura urmtoare 17. Introducei o valoarea a tensiunii n csua Text5 (valoarea maxim 5) 18. Observai modificarea valorii din interiorul csuei de text Text1. Este n concordan cu valoarea din Text5? Se conecteaz cu placa PBoard utiliznd cablul I2C EX-08
ANALOG OUTPUT TEST CH-1 TEST CH-2 TEST CH-3 TEST CH-4 + -

+ +

+
CH-1

+
CH-2

+
CH-3

+
CH-4

+ + ANALOG + INPUT + +

La paii 14 i 15 se testeaz performana circuitului PCF8591 privind conversia semnalului. Valoarea introdus n csua de text Text5 este convertit n semnal digital i apoi trimis circuitului ce realizeaz conversia semnalului digital n semnal analogic. Semnalul analogic este trimis la ieirea analogic a plcii EX-08. La paii 17 i 18 se testeaz funcia ADC i apoi DAC a circuitului PCF8591. Programul va converti valoarea introdus n csua de text Text5 n semnal digital i o trimite modului DAC a circuitului ce realizeaz conversia n semnal analogic. Dup aceea aceast tensiune este trimis napoi pe intrarea analog modulului ADC ce realizeaz conversia n semnal digital vizualizat apoi n csua de text Text1.

217

Laboratorul nr. 6 Programe pentru determinarea structurii i a performanelor sistemului de calcul


n cadrul acestui laborator vor fi prezentate mai multe aplicaii utile, necesare pentru determinarea structurii hardware a unui sistem de calcul precum i a performanelor componentelor n parte sau a sistemului pe ansamblu. Prima aplicaie care poate fi folosit pentru determinarea structurii hardware a unui sistem de calcul, este o component a sistemului de operare folosit, n cazul de fa Microsoft Windows XP, denumit System Information. Lansarea n execuie se face normal ca i orice aplicaie a sistemului urmnd calea Start Programs Accessories System Tools - System Information i dnd click. Interfaa acestei aplicaii este prezentat n figura urmtoare.

Aplicaia la deschidere prezint informaii generale despre sistemul folosit prezentate n panoul din dreapta al ferestrei, dar pentru informaii mai detaliate privind componentele sistemului se poate interoga aplicaia, utiliznd structura arborescent din panoul din stnga al ferestrei, dnd click pe aceea component. Din punct de vedere numai al perifericelor care intr n componena sistemului i cel mai important al controlului lor (instalare, dezinstalare, verificare funcionare) se poate folosi aplicaia System a sistemului de operare care poate fi lansat n mai multe moduri, de exemplu din fereastra Control Panel. 218

Se va da click pe butonul Device Manager din panoul Hardware a aplicaiei i se va deschide o nou fereastr. Printr-o structur arborescent, ne sunt prezentate perifericele din componena sistemului. Starea fiecrui periferic poate fi aflat interognd aplicaia prin comanda Properties. Dac o component nu funcioneaz bine sau sistemul nu a recunoscut-o i din punct de vedere al driverelor necesare, aplicaia semnalizeaz grafic acest lucru afind semnul exclamrii ntr-un cerc galben n dreptul componentei.

219

Sistemul de operare Microsoft Windows XP, are n componen i alte aplicaii utile privind afiarea componenei hardware a sistemului i mai ales a testrii performanelor componentelor de exemplu: Computer Management, Performance, Services etc. Tot n scopul determinrii structurii i a performanelor unui sistem de calcul pot fi utilizate urmtoarele programe: EVEREST i SiSoftware Sandra. Aceste dou programe au un avantaj fa de aplicaiile sistemului de operare deoarece ele integreaz att partea de afiare a structurii sistemului de calcul precum i de testare a performanelor componentelor sistemului. Cele dou programe menionate sunt prezentate n figurile urmtoare:

220

n cadrul acestui laborator studenii trebuie s utilizeze aplicaiile prezentate i s verifice structura sistemului utilizat, informaiile obinute fiind trecute n referatul de laborator. n plus, se va lansa aplicaia Benchmark de verificare a performanelor sistemului de calcul a fiecrui soft n parte i se va face o comparaie ntre rezultatele obinute.

221

Laboratorul nr. 7 Metode de testare a memoriei


n cadrul acestui laborator vor fi prezentate i folosite mai multe programe care permit testarea integritii memoriei interne a sistemului de calcul precum i performanele acesteia. Pentru testarea integritii unitilor de memorie intern pot fi folosite mai multe softuri de exemplu Memtest sau Mem86 ambele fiind gratuite. Pentru ca rezultatul testrii s fie ct mai corect ambele softuri necesit ca ele s fie date n execuie fr ca sistemul de operare al calculatorului s intre n execuie (s nu booteze). Pentru aceasta programele trebuie s fie memorate pe o unitate de memorie extern, CD sau dischet bootabil. Pentru a realiza o dischet bootabil se d comanda de formatare a dischetei, n MSDOS Prompt , cu opiunea de copiere a fiierelor sistem minimale IO.SYS, MSDOS.SYS i COMMAND.COM Ex: Format a: /S sau utiliznd aceeai comand sub sistemul de operare MS XP bifnd n fereastr opiunea de includere a fiierelor sistem dup operaia de formatare a dischetei. Pentru a putea rula aplicaia de pe dischet este nevoie s se modifice n fereastra de setri a BIOS-ului, opiunea de cutare prima dat a sistemului de operare pe unitatea de dischet, astfel nct la o repornire a calculatorului, acesta s ncarce sistemul de pe ea i apoi s se lanseze aplicaia respectiv de verificare a integritii memoriei interne. Deoarece pentru execuia acestei aplicaii se folosesc mai muli algoritmi, durata testului poate dura ntre zeci de minute i ore, fiind influenat i de caracteristicile hardware ale sistemului de calcul. La terminare testrii aplicaia comunic utilizatorului dac memoria RAM a sistemului este n stare bun de funcionare sau dac au aprut erori n funcionarea acesteia. Din punct de vedere al performanelor memorie interne a sistemului pot fi utilizate cu succes i programele prezentate n lucrarea de laborator precedent, EVEREST i SiSoftware Sandra. Ambele programe includ i aplicaiile Benchmark ce permit testarea memorie interne. Ferestrele de lansare a acestei aplicaii pentru ambele programe precum i un exemplu de rulare a unui test pentru verificarea latenei memoriei sunt prezentate n figurile urmtoare.

222

Iar pentru

223

Un alt program ce poate fi utilizat pentru testarea memorie interne este RightMark Memory Analyzer, special realizat pentru acest lucru. n figurile urmtoare fiind prezentate ferestrele de execuie a aplicaiilor de testare:

224

n timpul orei de laborator studenii vor utiliza programele prezentate pentru testarea memorie interne, i vor consemna n referatul de laborator rezultatele obinute, privind performanele memoriei sistemului de calcul, raportate de fiecare program utilizat.

225

Bibliografie

1. Athanasiu Irina, Panoiu Alexandru, - Microprocesoarele 8086, 286, 386, Editura TEORA, Bucureti, 1992; 2. Adrian Petrescu .a. Microcalculatoarele M18, M18B, M118, Editura Tehnic, Bucureti, 1984; 3. Andronescu Gh., - Sisteme Digitale, Editura MatrixRom, Bucureti, 2002; 4. Baluta Gheorghe, - Circuite logice i structuri numerice. Proiectare i aplicaii. Editura MatrixRom, Bucureti, 2002; 5. Blakeslee Thomas, Proiectarea cu circuite logice MSI i LSI standard, EdituraTehnic, Bucureti, 1988; 6. Bogdanov Ivan, - Microprocesorul n comanda acionrilor electrice, Editura FACLA, Timioara, 1989; 7. Budiu Mihai, Cache-uri, Cornell University, USA, 1999; 8. Cpna Octavian, - Proiectarea cu microcalculatoare integrate, Editura Dacia, Cluj, 1992; 9. Cristian Lupu, tefan Stncescu, - Microprocesoare Circuite Proiectare, Editura Militar, Bucureti, 1986; 10. Cuculescu I., - Analiza numerica, Editura Tehnic, Bucureti, 1967; 11. Dancea Ioan, - Microprocesoare. Arhitectura intern, programare, aplicaii. Editura Dacia, Cluj-Napoca, 1979; 12. Davidoviciu A., s.a., - Minicalculatoarele i microcalculatoarele n conducerea proceselor industriale, Editura Tehnic, Bucureti, 1983; 13. Ionescu D. - Codificare si coduri, Editura Tehnic, Bucureti, 1981; 14. Lupu C., s.a. - Microprocesoare. Aplicaii, Editura Militar, Bucureti 1982; 15. Marinescu D. Naicu S., - Microcontrolerul 80C32. Manual de utilizare. Editura Tehnic, Bucureti, 1998; 16. Milici Dan, - Circuite numerice. Introducere n sistemele de calcul, Editura MatrixRom, Bucureti, 2003; 17. Pop Eugen, s.a. - Metode n prelucrarea numeric a semnalelor, Editura FACLA, Timioara, 1989; 18. Popescu D., Popescu C., - Circuite digitale elementare, Editura MatrixRom, Bucureti, 2003; 19. Potorac D.A., - Bazele proiectrii circuitelor numerice, Editura MatrixRom, Bucureti, 2002; 226

20. Puiu-Berizinu M., Rotar Dan An Optimal Control Method of the PWM Inverter used in Electrical Drives with Induction Motor - MIPRO99 CONFERENCE, IEEE Region 8, CROAIA 1999. 21. Puiu Berizinu Mihai, Rotar Dan Using DSP for PWM Inverter Command by the Generatrix Wave Sampling Principle, Conferina Naional de Acionri Electrice CNAE 2000, Iai, 12-14 octombrie 2000, publicat n Buletinul Institutului Politehnic Iai, Tomul XLVI (L), Fasc. 5, ISSN 0258-9109, pp. 72-77 22. Radu O., Sndulescu Gh., - Filtre numerice. Aplicaii, Editura Tehnic, Bucureti, 1979; 23. Rotar Dan - Harmonic analysis based on microcomputers, Efficiency, Cost, Optimization, Simulation and Environmental Aspects of Energy Systems and Processes Congress ECOS98, ISBN 2-905-267-29-1, Nancy, France, pp. 11731180, 1998. 24. Rotar Dan - Protection of the Microcomputer-based Pulse-Width Modulated Inverters, 17th International Conference on COMPUTERS IN TECHNICAL SYSTEMS, Proceedings Volume 2, ISBN 953-6042-57-6, pp. 67-70, CROAIA 1998. 25. Rotar Dan, Ababei tefan - Determinarea consumului energetic prin contorizare numeric, Conferina Naional de Energetic Industrial, Bacu, 1998, Editura Plumb, ISBN 973-9362-16-8, pp. 170-173. 26. Rotar Dan Sisteme de msur digitale a energiei electrice Probleme de management i conservare a energiei, Craiova, ISBN 973-0-00917-1, pp. 21-28, 1999 27. Rotar Dan Programarea DSP, Conferina Naional de Energetic Industrial CNEI 2000 MILENIUM, 10-11 noiembrie 2000, Bacu, Editura ALMA MATER, ISBN 973-99703-4-6, pp. 84-87 28. Rotar Dan Regulator numeric pentru procesorul digital de semnal TMS320F240, Conferina Naional de Energetic Industrial CNEI 2000 MILENIUM, 10-11 noiembrie 2000, Bacu, Editura ALMA MATER, ISBN 973-99703-4-6, pp. 88-91 29. Rotar Dan, Ababei tefan, Sorin Popa, Communication system for DSP and PC compatible computer, Romanian Academy, Branch office of Iai, MCOM-8, 2002, ISSN 1224-7480, pp. 413-418. 30. Dan Rotar, Petru Livini, Ababei tefan, Digital filtering with digital signal processing controller, Romanian Academy, Branch office, MCOM-9 vol. 2, 2003, ISSN 1224-7480, pp. 207-210. 31. Somnea Dan, Vldu Teodor, - Programarea in assembler. Editura Tehnic, Bucuresti, 1992; 32. Stnil Octavian, - Noiuni i tehnici de matematic discret, Editura tiinific i Enciclopedic, Bucureti, 1985; 33. Stanomir D., Stnil O., - Metode matematice n teoria semnalelor, Editura Tehnic, Bucureti 1980; 34. Suciu Marcel, Popescu Dumitru, Ionescu Traian, - Microprocesoare, microcalculatoare i roboi n automatizri industriale, Editura Tehnic, Bucureti, 1986 35. Sztojanov I., s.a. - De la poarta TTL la microprocesor vol I, II, Editura Tehnic, Bucureti, 1987; 227

36. Tnase Ady, Gitan V., - Familia de procesoare pentru prelucrarea numeric a semnalelor ADSP-21, Editura MatrixRom, Bucureti, 2004; 37. Teodorescu Dan, - Introducere n microelectronic, Editura Facla, Timioara, 1985; 38. Teodorescu Dan, - Automatizri microelectronice, EdituraTehnica, Bucureti, 1988: 39. Toacse Gh., - Introducere n microprocesoare, Editura tiinific i Enciclopedic, Bucureti, 1986; 40. Toace Gheorghe, Nicula Dan Electronic digital. Dispozitive. Circuite. Proiectare., Editura Tehnic, Bucureti, 2005; 41. Zoican Sorin - Arhitectura sistemelor de calcul,Universitatea Politehnic, Bucureti, 1998; 42. Zoican Sorin, Popovici C. Eduard - Arhitectura microprocesoarelor. Indrumar de laborator, Universitatea Politehnic, Bucureti, 1997; 43. *** TMS320C24x DSP Controllers - Reference Set: Vol.1, Texas Instruments Inc, 1997; 44. *** TMS320C24x DSP Controllers - Reference Set: Vol.2, Texas Instruments Inc, 1997; 45. *** AT90S3213 Microcontroller, Atmel, 1998; 46. *** PIC 16F97x Microcontroller, Microchip, 2005;

228

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