3 Memoria sistemelor cu microprocesor 3.1. Generalităţi. Clasificări. Memoria este subsistemul care implementează funcţia de memorare. Funcţia de memorare constă în posibilitatea regăsirii unei informaţii codificate binar care a fost anterior stocată. Memoria sistemului cu microprocesor poate fi împărţită în 2 categorii: - memoria principală (internă) ; - memoria auxiliară (externă) . Fiecare din cele 2 categorii menţionate are la bază diverse principii de implementare. Memoria principală este specifică tuturor sistemelor cu microprocesor, atât celor dedicate, cât şi sistemelor de calcul. Aceasta este prezentă atât la sistemele mici cât şi la cele de capacitate medie şi mare. Memoria principală este singura care poate fi accesată direct de unitatea centrală. În consecinţă pentru ca programele să poată fi executate, indiferent de capacitatea sistemului, acestea trebuie să fie aduse în memoria principală. Capacitatea memoriei principale este limitată fizic de spaţiul de adrese al unităţii centrale. Spaţiu de adresă este determinat de numărul de linii de adresă a microprocesorului din unitatea centrală. Memoria auxiliară este o memorie de capacitate mare. Cu această memorie unitatea centrală nu comunică direct ci prin intermediul unor circuite specializate prin care se aduc date şi programe din memoria auxiliară în memoria principală, de unde vor fi apoi prelucrate. Intuitiv, acest mod de comunicaţie poate fi reprezentat conform figurii 3.1 : MA
MP
UC
Fig. 3.1 Comunicarea UC cu memoria
Memoria auxiliară este implementată pe principiul magnetic (floppy-disc, hard-disc sau benzi magnetice) şi pe principiul optic (CD-ROM). La sistemele de la nivelul ierarhic superior, în care sunt utilizate microprocesoare evoluate care implementează conceptul de memorie virtuală, apare noţiunea de memorie virtuală. Din punct de vedere al programatorului, memoria virtuală reprezintă o memorie unică ce include atât memoria principală cât şi memoria auxiliară. Privită ca memorie unică, memoria virtuală oferă un spaţiu de adresare foarte mare comparativ cu cel fizic al microprocesorului. Microprocesoarele care implementează acest concept conţin în structură o unitate de gestiune a memoriei, care degrevează utilizatorul de sarcina de alocare a memoriei principale sau
81
auxiliare. În acest context, programatorul va utiliza adrese logice pe care unitatea de gestiune a memoriei (UGM) le translatează în adrese fizice pentru selectarea memoriei principale. Se realizează astfel o extensie a funcţiei de translatare în vederea asigurării corespondenţei dintre spaţiul adreselor şi spaţiul memoriei care este mult mai mare. Deoarece memoria auxiliară are o capacitate mult mai mare decât memoria principală rezultă că, la un moment dat, numai o parte din conţinutul memoriei auxiliare poate fi adus în memoria principală. În vederea asigurării corectitudinii funcţionării sistemului, momentul şi dimensiunea transferurilor între MA şi MP este stabilită de către UGM. Această operaţie este implementată pe baza a trei algoritmi pe care îi realizează UGM : algoritmul de transfer care stabileşte când este necesar transferul memoriei auxiliare în memoria principală ; - algoritmul de amplasare care alocă o zonă din memoria principală în care se va transfera blocul de date sau fişierul cerut ; - algoritmul de reamplasare care stabileşte blocurile de date sau fişierele care trebuie reamplasate precum şi momentul reamplasării . În consecinţă, memoria virtuală crează aparenţa unei memorii totale de capacitate foarte mare, care lucrează cu timpul de acces al memoriei principale. Prin modul de implementare a UGM, se realizează şi protecţia zonelor de memorie împotriva accesului neautorizat. 3.2. Memoria principală. Principii de realizare. Parametrii.
DECODIFICATOR LINII
Memoria principală (internă) este implementată pe principii electronice. Pentru sistemele mici, această memorie reprezintă şi unica memorie a sistemului. Ca principiu, circuitele electronice care implementează memoria principală au la bază celula de memorie. Celula de memorie reprezintă un circuit elementar care realizează memorarea unui bit. Organizarea acestor circuite este sub formă matricială, cu un anumit număr de linii şi coloane (fig. 3.2). Matricea de memorie 1 2 3 ... m Matrice de conţine în nodurile sale memorie A1 celulele elementare de 1 A2 memorie. În funcţie de tipul 2 A3 circuitului de memorie, 3 . celula elementară este . . implementată fie prin . . . . tranzistori bipolari, fie prin Ai tranzistori MOS. Selecţia n celulei de memorie se face Ai+1 prin accesarea liniei şi ... DECODIFICATOR coloanei pe care este Ak COLOANE amplasată această celulă. Fig. 3.2 Structura circuitelor de memorie
82
Din punct de vedere practic, accesarea se face prin intermediul unor semnale externe care poartă denumirea de adrese (A1,…,Ak). Aceste adrese realizează selecţia celulelor de memorie prin intermediul unor decodificatoare (de linii respectiv coloane). Numărul acestor semnale externe de adresă vor stabili şi capacitatea memoriei. Parametrii principali care permit evaluarea performanţelor acestor circuite şi a memoriei în ansamblu vizează atât aspecte constructive cât şi funcţionale. În cele ce urmează vor fi evidenţiaţi şi definiţi principalii parametrii : Geometria – se defineşte ca fiind numărul de biţi pe cuvânt precum şi numărul de cuvinte pe care îl conţine memoria. Acest parametru este specific circuitului care implementează memoria principală. Capacitatea – este dată de numărul total de biţi ce poate fi memorat. Acest parametru este specific ambelor tipuri de memorie. Pentru memoria principală capacitatea este m x n, dată de dimensiunea matricii de memorie. Dacă memoriile au cuvântul de 1 octet atunci capacitatea se poate da şi în octeţi sau bytes (B). Deoarece capacitatea circuitelor este ridicată se folosesc multiplii : K (Kilo), M (Mega), G (Giga), T (Tera) biţi (b) sau bytes (B) (respectiv octeţi) : 1 Tb (B) = 210 Gb (B) = 220 Mb (B) = 230 Kb (B) = 240 b (B) Volatilitatea – reprezintă proprietatea memoriei de a pierde sau nu informaţia la dispariţia tensiunii de alimentare. Dacă informaţia rămâne după dispariţia tensiunii memoriile sunt nonvolatile. Informaţia poate fi regăsită după realimentarea circuitului. Puterea disipată – reprezintă puterea specifică consumată pe unitatea de informaţie (bitul). Timpul de acces – se defineşte prin timpul scurs din momentul în care este accesată memoria şi până în momentul în care datele devin valide pentru a putea fi citite sau pot fi scrise. Timpul de acces la memorie este foarte mic la memoriile principale şi mai ridicat la memoriile auxiliare, invers faţă de capacitate. În raport cu modul de utilizare a memoriei de către unitatea centrală, aceasta poate fi împărţită în două categorii de circuite : - memorii numai cu funcţia de citire (pot fi doar citite de către unitatea centrală) ; - memorii cu funcţie de citire / scriere (pot fi atât citite cât şi scrise de către unitatea centrală în timpul funcţionării) . Pentru sistemele dedicate de capacitate mică, memoriile cu funcţia de citire conţin sistemul de operare, considerent pentru care sunt denumite şi memorii program. Memoriile cu funcţia de citire / scriere sunt destinate pentru înmagazinarea datelor, drept pentru care sunt denumite şi memorii de date. În contextul sistemelor de capacitate medie şi mare, deşi memoria principală conţine ambele tipuri de memorii, această distincţie nu mai poate fi făcută deoarece programele se rulează din memoriile cu funcţia de citire / scriere. Memoriile cu funcţia de citire, în acest context, conţin BIOS-ul care compatibilizează hardul cu sistemul de operare stocat în memoria auxiliară. Acesta realizează aducerea şi iniţializarea fişierelor sistem din memoria auxiliară în memoria principală.
83
3.3. Memorii cu funcţia de citire / scriere. 3.3.1. Tipuri de memorii cu funcţia de citire / scriere. Aceste memorii au proprietatea că pot fi atât scrise cât şi citite de către sistem în timpul funcţionării. În raport cu volatilitatea, acestea pot fi împărţite în două categorii : RAM şi EEPROM. Memoriile RAM (Random Access Memory) sunt memorii volatile care pierd informaţia la dispariţia tensiunii de alimentare ; Memoriile EEPROM (Electricaly Eraseable Programmable Read Only Memory) sunt memorii nonvolatile în care informaţia rămâne şi după dispariţia tensiunii de alimentare. Aceste memorii pot fi atât scrise cât şi citite pe cale electrică de către sistemul care le utilizează. Memoriile RAM, în funcţie de principiul de implementare, pot fi : − memorii SRAM (RAM static) ; − memorii DRAM (RAM dinamic) . Proprietăţile şi principiile de realizare a acestora vor fi analizate în cele ce urmează. 3.3.2. Memorii RAM static. Structura memoriei RAM static conţine o serie de blocuri specifice evidenţiate în figura 3.3. Magistrală internă
A0 A1 . . .
D L
Matrice de memorie
AS
Ai Ai+1 ...
Ak-1
DC
BLC CE R/W (CS)
AC
Buffer de I/E D0 D1 … Dp
Fig. 3.3 Structura memoriilor RAM static
Adresarea celulelor de memorie se face prin liniile de adrese externe A1÷Ak aplicate decodificatoarelor de linii şi de coloane (DL şi DC). Datele care se scriu şi se citesc sunt vehiculate prin intermediul unui buffer bidirecţional cu trei stări. Pentru scriere / citire sunt utilizate amplificatoare de scriere / citire (AS / AC) care stabilesc legătura între matricea de memorie şi buffer-ul de intrare-ieşire prin intermediul magistralei interne. Circuitul are un bloc logic de comandă (BLC) care gestionează funcţionarea întregului circuit. Acest bloc de comandă primeşte două semnale de comandă : CE (chip enable sau CS - chip select),
84
respectiv semnalul de citire / scriere (R/W). Semnalul CE (CS) are rolul de a selecta circuitul. Dacă acest semnal este inactiv, buffre-ul de intrare-ieşire este în stare de impedanţă ridicată, fiind deci blocată funcţionarea circuitului. Activarea acestui semnal permite funcţionarea circuitului, putându-se realiza operaţia de scriere / citire. Pentru operaţia de citire trebuie transmise memoriei adresele în vederea selecţiei celulelor de memorie din care se face citirea, iar pe magistrala de date datele ce urmează a fi scrise. După stabilizarea celor două magistrale şi selecţia circuitului (prin activarea semnalului de selecţie), se activează semnalul de citire care va determina blocul de comandă să stabilească blocul de I/E ca ieşire iar amplificatorul de citire să realizeze preluarea detelor din celulele selectate care vor fi transmise spre exterior putând fi astfel preluate de unitatea centrală. Operaţia de scriere are loc în mod similar şi urmăreşte ciclul de scriere cunoscut : selectarea circuitului, transmiterea adresei unde urmează a fi înscrise datele, transmiterea datelor pe magistrala de date şi activarea semnalului de scriere. Prin activarea semnalului de scriere, blocul logic va comanda buffer-ul de I/E ca intrare, datele putând fi astfel preluate, iar prin intermediul amplificatorului de scriere vor fi transmise celulelor de memorie selectate. Circuitul elementar de memorie pentru aceste memorii este reprezentat printr-un circuit basculant bistabil. Structura matricii de memorie (fig. 3.4) conţine m x n celule elementare. 1
WL1
2
WL2
n
WLn
Selecţie cuvânt
Conexiune de alimentare DL1
DL1 DL2 1
DL2
DLm
2
DLm m
Conexiune de bit pentru selecţie coloane
Fig. 3.4 Structura unei matrici de memoriilor RAM
Accesul la celula (i,j) se face prin selecţia liniei WLi şi a coloanei prin perechea DLj x DLj . Structura internă a unei celule elementare de 1 bit are configuraţia dată în figura 3.5 :
85
Data de intrare
Data de ieşire
R/W
Fig. 3.5 Structura unei celule elementare de 1 bit
Scrierea se realizează aplicând pe intrarea R/W un semnal 0 care face ca data de la intrare să fie înscrisă în bistabil. Pentru citire R/W = 1 ceea ce face ca data conţinută în bistabil să fie transferată la ieşire fără a afecta informaţia conţinută în bistabil. Operaţiile de citire / scriere fiind complementare nu se influenţează. Bistabilii, reprezentând celulele elementare, sunt implementaţi fie cu tranzistori bipolari, fie cu tranzistori MOS. Structura celulei implementate cu tranzistori bipolari (fig. 3.6) poate avea mai multe configuraţii : VCC (+ 3,5V) Linie alim.
+ 3V
VCC (+ 3,5V) Linie alim.
WL
T1 T2
T1
WL
T2
T1
+ 0,3V
+ 0,5V
+ 0,3V
T2
Linie alim.
WL
+ 2,5V
IEE
+ 1,5V -V
DL
a)
DL
DL
b)
DL
DL
c)
DL
Fig. 3.6 Celule elementare RAM cu tranzistori bipolari
Linia de alimentare (VCC sau generatorul de curent IEE) este comună tuturor celulelor din matricea de memorie. Linia de selecţie cuvânt (WL) realizează selecţia pe linii în matricea de memorie. Activarea unei linii de selecţie cuvânt face posibilă citirea sau scrierea unei informaţii în oricare din celulele de memorie situate pe aceeaşi linie în matrice. Liniile de bit DL şi DL sunt destinate pentru scrierea sau citirea
86
informaţiei în celula elementară. Acestea sunt comune celulelor plasate pe aceeaşi coloană în matricea de memorie. Operaţiile de citire / scriere se realizează prin aplicarea unor nivele de tensiune adecvate pe liniile de selecţie cuvânt sau bit. Celulele elementare implementate cu tranzistori MOS (fig. 3.7) conţin 4 sau 6 tranzistori MOS . Linie bit
Linie bit T1 n
T5
n
n
n
T3
T4
n
Selecţie cuvânt WL
T2
Linie alimentare VDD
T6
T1 p
T2 p
n
n
T3
T4
T5 n
n
T6 n
WL VDD R
R DL
Linii alim.
a)
DL DL
Selecţie cuvânt DL
b)
Fig. 3.7 Celule de memorie RAM static cu tranzistori MOS
Celula de memorie din figura 3.7 a) foloseşte şase tranzistoare MOS cu canal n. Bistabilul care formează celulele de memorie este reprezentat printr-un circuit basculant bistabil realizat cu tranzistoarele T3 şi T4, care au ca sarcini active tranzistoarele T1 şi T2. Tranzistoarele T5 şi T6 permit conectarea ieşirilor bistabilului la liniile de bit pentru citirea sau scrierea informaţiei. Liniile de bit sunt conectate prin rezistoare la + VDD. Citirea celulei se realizează prin aplicarea unei tensiuni ridicate pe linia de selecţie cuvânt WL. Tranzistorii T5 şi T6 se deschid formând sarcini suplimentare spre + VDD prin rezistenţele R de la capetele liniilor de bit. Dacă T3 este blocat şi T4 în conducţie, comanda de citire va circula spre masă un curent prin linia de bit DL şi tranzistorul T4. Acesta va fi sesizat de amplificatorul de citire conectat pe liniile DL şi DL. Scrierea celulei se realizează prin ridicarea potenţialului liniei WL şi forţarea prin circuite adecvate (de scriere) a unei tensiuni zero pe linia de bit pe care se scrie valoarea 0 (aplicând 0 pe DL bistabilul va trece T3 în conducţie, iar T4 va fi blocat). Bistabilul din figura 3.7 b) are o structură asemănătoare cu cel din fig. a) cu deosebirea că este realizat cu tranzistoare MOS complementare. Pentru o funcţionare corectă a circuitelor de memorie RAM, semnalele implicate în selectare, scriere / citire memorie trebuie să satisfacă anumite restricţii de timp (fig. 3.8).
87
tRC
tWC
ADR
ADR
tWA
tA (CE) CS
(CE) CS
R/W
R/W
tW
tAD DATE
DATE
a)
tODT
b)
tDS tDM
Fig. 3.8 Diagrame de semnal pentru : a) citire; b) scriere în RAM
Pentru ciclul de citire a memoriei apar în diagramă (fig. 3.8 a) următorii timpi : tRC, tA, tAD şi tODT. Timpul tRC – durata ciclului de citire reprezintă intervalul de timp dintre două schimbări de adresă ; Timpul tA – timpul de acces la memorie, este dat de timpul scurs de la stabilirea adreselor până la obţinerea datelor la ieşire ; Timpul tAD – timpul de apariţie a datelor după aplicarea semnalului de selecţie circuit CS (CE) ; Timpul tODT – reprezintă intervalul de timp cât datele sunt stabile la ieşire. Pe toată durata citirii trebuie ca semnalul R/W = 1. Pentru ciclul de scriere a memoriei apar în diagramă (fig. 3.8 b) următorii timpi : tWC, tWA, tW, tDS şi tDM. Timpul tWC – ciclul de scriere, reprezentat prin intervalul de timp dintre două schimbări de adresă ; Timpul tWA – intervalul de timp în care adresele trebuie să rămână stabile în raport cu frontul posterior al impulsului de scriere ; Timpul tW – durata impulsului de scriere ; Timpul tDS – timp de pregătire a datelor în raport cu momentul înscrierii ; Timpul tDM – timp de menţinere a datelor după dispariţiia impulsului de scriere. Conform diagramei, datele trebuie să rămână stabile în intervalul tDS + tDM în jurul frontului posterior al impulsului de sriere. Semnalul R/W = 0 trebuie să apară după stabilirea adreselor şi poate fi simultan cu semnalul CS (CE). 3.3.3. Memorii RAM dinamic. Structura memoriei RAM dinamic este asemănătoare cu cea a memoriei RAM static în ceea ce priveşte modul de organizare a celulelor de memorie, dar apar şi deosebiri datorate particularităţilor pe care le prezintă memoria RAM dinamic privind funcţionarea. Blocurile specifice memoriei RAM dinamic sunt evidenţiate în figura 3.9.
88
Organizarea matricială, cu amplasarea celulelor de memorie pe linii şi coloane, este păstrată şi la Ak-1 memoria RAM dinamic. Selecţia Matrice celulelor de memorie se realizează prin Bloc de RFSH transmiterea pe linii a adreselor A0, A1, D memorie …, Ak-1 a două cuvinte succesiv. L Primul cuvânt este pentru selecţia liniei Acest cuvânt se transmite, prin RAS BLC MUX / DMUX multiplexorul MUX şi decodificatorul CAS de linii (DL), unui registru de linii în care cuvântul se încarcă prin strobul de R/W Di Do linii (RAS). În consecinţă vor fi Fig. 3.9 Structura memoriei selectate toate celulele de pe linia RAM dinamic respectivă. Al doilea cuvânt pentru selecţia coloanei se transmite după cel pentru selecţia liniei şi se realizează în tandem cu strobul de coloane (CAS). Acest cuvânt este transmis, prin MUX şi decodificatorul de coloane (DC), unui registru de coloane în care cuvântul va fi înscris de strobul de coloane (CAS). În intervalul de timp de la transmiterea adresei pentru selacţie linii şi cae pentru selecţia coloanei are loc şi operaţia de REFRESH realizată de blocul intern RFSH specific al memoriei. La recepţionarea adresei de linie blocul RFSH va realiza o citire şi o rescriere a conţinutului tuturor celulelor aflate pe linia respectivă. Această operaţie este realizată transparent faţă de utilizator. Comunicaţia dintre matricea de memorie şi magistrala de date se face prin intermediul unui multiplexor / demultiplexor (MUX / DEMUX). Funcţia blocului este stabilită de blocul logic de comandă BLC în funcţie de valoarea logică a semnalului R/W. Dacă R/W = 0 are loc operaţia de scriere şi este stabilită funcţia de demultiplexare (DEMUX). Pentru R/W = 1 are loc operaţia de citire şi atunci va fi selectată funcţia de multiplexare (MUX). Structura unei celule de memorie RAM dinamic este mai simplă decât cea a memoriilor RAM static, deoarece la memoria RAM dinamic stocarea informaţiei se realizează prin sarcina acumulată în capacitatea grilă-sursă (C) a tranzistorilor MOS din care sunt realizate celulele elementare (fig. 3.10). Sarcina acumulată pe capacitate scade în timp, ca urmare a descărcării Intrare Ieşire condensatorului, ceea ce are ca efect dată dată C pierderea informaţiei. Din acest considerent informaţia trebuie să fie refăcută periodic. Operaţia de refacere poartă denumirea de reîmprospătare Selecţie celulă memorie (refresh) şi se realizează la intervale de timp dependente de constanta R-C a Fig. 3.10 Celulă elementară circuitului (intervale de 1-2 ms). RAM dinamic A0 A1 . . .
MUX U X
DC
89
Reîmprospătarea se realizează printr-o operaţie de citire, pe durata căreia, de regulă, accesul microprocesorului la circuitul de memorie este blocat. Durata de inaccesibilitate pe perioada de reîmprospătare este de (1÷5) % din timpul de lucru al memoriei dinamice. Structura celulei de memorie poate conţine patru, trei sau chiar un singur tranzistor MOS (fig. 3.11 a, b, c). T3
T4
Selecţie scriere cuvânt W/WL Selecţie citire cuvânt R/WL
T1
T2 C1
T2
C2
Selecţie cuvânt
WL T
T3 DL
Capacităţi de memorie
DL
C
DL
T1
VDD
Linie bit
C
Linie bit
VDD
a)
b)
c)
Fig. 3.11 Structura celulei de memorie RAM dinamic cu tranzistori MOS
Structura circuitelor de citire / scriere şi refresh este dependentă de structura celulei de memorie. Numărul redus de tranzistoare pe celulă la memoriile RAM dinamic are ca efect creşterea capacităţii de memorie pe unitatea de arie şi consum de putere mai redus, faţă de memoriile RAM static. Memoriile RAM static nu necesită însă circuite externe speciale pentru operaţia de refresh. Ciclurile de citire / scriere a memoriilor RAM dinamic sunt mai complexe decât la memoriile RAM static datorită multiplexării în timp a adreselor precum şi a operaţiilor de refresh.
Fig. 3.12 Diagrama de semnal pentru citire / scriere RAM dinamic
90
Diagramele de semnal pentru operaţiile de citire / scriere (fig. 3.12) prezintă schematic timpii şi formele de undă pentru cele două operaţii fără a evidenţia ciclul de refresh. Adresele se transmit în două grupe succesive, cu acelaşi număr de biţi (dependent de capacitatea de memorie), una pentru linii (ROW ADDRESS) şi una pentru coloane (COLUMN ADDRESS), însoţite de semnalele de stare aferente (RAS pentru linii şi CAS pentru coloane). Timpii pentru cele două operaţii de citire sunt evidenţiaţi în diagrama de semnal (fig. 3.12 a) : - tASR – timp de stabilizare a adreselor de linii înaintea activării RAS (Row Address Set-up Time); - tRAH – timp minim de menţinere a adreselor înainte de a fi schimbate (Row Address Hold Time); - tASC – timp de stabilizare a adreselor de coloane înaintea activării CAS (Column Address Set-up Time); - tCAH – timp de menţinere a adreselor după aplicarea semnalului CAS (Column Address Hold Time); - tRCD – timp de întârziere între RAS şi CAS (RAS-CAS Delay Time – 10 ÷ 50 ms); - tACC – timp de acces date după CAS (Access time from CAS); - tRAC – timp de acces date faţă de frontul activ RAS ; - tRP, tCP – timp de pregătire a următorului impuls RAS, respectiv CAS (150 ÷ 200 ms) . Operaţia de scriere poate fi realizată în mai multe moduri : citire – scriere (ciclul de citire modificare-scriere fig. 3.12 b), scriere întârziată (Delayed Write Cycle), scriere anticipată sau ”în pagină” etc. Diagrama de semnal şi timpii aferenţi pentru ciclul de citire modificarescriere este prezentată în figura 3.12 b : - tCWD – timp de întârziere a semnalului de scriere WRITE faţă de CAS ; - tDS, tDH – timp de introducere respectiv menţinere a datelor ; - tWP – durata impulsului de comandă ; - tDHR – timp de menţinere în raport cu RAS ; - tWCS – timp de aplicare WRITE ; - tWCH – timp de menţinere WRITE ; - tCWL – comanda WRITE în raport cu sfârşitul impulsului CAS ; - tRWL – comanda WRITE în raport cu sfârşitul impulsului RAS . Diagrama de semnal prezintă modificări pentru celelalte moduri de scriere în concordanţă cu ciclul de reîmprospătare.
91
3.3.4. Memorii EEPROM. Memoriile EEPROM (E2PROM) sunt memorii nonvolatile care pot fi atât citite cât şi scrise, pe cale elctrică, de către sistemul care le utilizează. Configuraţia acestor circuite depinde de tipul şi firma producătoare. Constructiv sunt realizate în tehnologie CMOS cu tensiuni de alimentare de la 2,7 V la 5,5 V. Sunt incluse în capsule DIP sau SOIC (cu 8 pini). Admit circa 106 cicluri de ŞTERGERE / SCRIERE, iar informaţia poate fi păstrată pe o durată de 100 ÷ 200 ani. Structura matriceală se păstrează şi pentru aceste tipuri de memorie, organizarea şi dimensiunea matricii de memorie, fiind dependentă de tipul memoriei. Circuitele fiind introduse în capsule cu număr redus de pini (8), citirea şi scrierea datelor se face de regulă serial. Pentru a pune în evidenţă structura, modul de utilizare, principalele operaţii (CITIRE, SCRIERE, ŞTERGERE) posibile vor fi analizate câteva tipuri de configuraţii reprezentative. Un circuit reprezentativ pentru această categorie este x24C01, realizat în tehnologie CMOS, cu un consum de 1mA, iar în standby de circa 50µA. Memoria are capacitatea de 1 Kb, matricea de memorie având organizarea internă 128 x 8. Principalele blocuri din structura internă (fig. 3.13 a) gestionează funcţionarea circuitului, asigurând schimbul de informaţii între circuit şi exterior.
(5) SDA
START STOP LOGIC
NC NC NC VSS
GTCHV BLOC CONTROL LOGIC LOAD
(6) SCL
DIP
H.V. GENERATION TIMING & CONTROL
WORD ADDRESS COUNTER
R
XDEC
INC
E2PROM 32 x 32
8 7 6 5
VCC NC SCL SDA
SOIC / MSOP NC NC NC VSS
NADC YDEC
R/W
1 2 3 4
x 24C01
START CYCLE
1 2 3 4
x 24C01
(8) VCC (4) VSS
8 7 6 5
VCC NC SCL SDA
8 DATA REGISTER
PIN
DOUT
b)
RD
DOUT ACK
a) Fig. 3.13 Structura şi configuraţia pinilor pentru circuitul x24C01
Selecţia octetului din matricea de memorie se face prin intermediul decodificatoarelor de linii XDEC respectiv coloane YDEC, care primesc informaţiile de la numărătorul cuvântului de adresă (NADC). Controlul funcţionării circuitului este asigurat de un BLOC CONTROL LOGIC şi un generator de timp şi control pentru orizontală şi verticală (GTCHV). Schimbul de date între exterior şi matricea de memorie se face printr-un registru de date.
92
Circuitul este inclus într-o capsulă de 8 pini DIP, SOIC / MSOP (fig. 3.13b). Din cei 8 pini sunt utilizaţi doar 4 : doi pentru alimentare (VCC (8) şi VSS (4)) şi doi pentru asigurarea protocolului de transfer de date bidirecţional (SDA (5) şi SCL (6)). Semnalul SCL (Serial Clock) este un semnal de intrare şi asigură scrierea sau citirea datelor. Semnalul SDA (Serial Data) este un semnal bidirecţional prin care se transferă datele pentru a fi înscrise sau se obţin datele citite. Când este utilizat pentru citire este “open drain” ceea ce presupune utilizarea unui rezistor (R) dimensionat corespunzător. Protocolul de transfer al circuitului este un protocol bidirecţional orientat pe BUS. Din acest considerent semnalele (SCL şi SDA) trebuie să respecte anumite restricţii pentru a asigura realizarea protocolului de transfer. Valoarea datelor pe linia SDA nu poate fi schimbată decât pe durata cât SCL este în 0 logic (fig. 3.14). Valoarea datelor se poate schimba pe durata cât SCL este în 1 logic pentru a indica condiţiile de START respectiv STOP. tRC
tWC
ADR
ADR
tWA
tA (CE) CS
(CE) CS
R/W
R/W
tW
tAD DATE
DATE
a)
tODT
b)
tDS tDM
Fig. 3.14 Structura şi configuraţia pinilor pentru circuitul x24C01
Orice operaţie este precedată de o condiţie de START. Condiţia de START (fig. 3.15) se realizează pe durata cât SCL are valoarea logică 1 prin tranziţia 1⎟0 a semnalului pe linia SDA. Toate comunicaţiile trebuie să se încheie printr-o condiţie de STOP. Condiţia de STOP se realizează pe durata cât SCL are valoarea logică 1 prin tranziţia din 0⎤1 a semnalului pe linia SDA. Principalele operaţii care pot fi realizate sunt : scriere bit sau pagină (fig. 3.16 a,b), citire bit (fig. 3.16 c) sau citire secvenţială (fig. 3.16 d).
93
Memoriile RAM dinamice au matricea de memorie realizată astfel încât celula elementară să aibă un număr foarte redus de tranzistori. Din acest considerent se utilizează, de regulă, tranzistoare MOS astfel că celula elementară de memorie ajunge să fie implementată şi cu un singur tranzistor. Funcţia de memorare a unei unităţi de informaţie, în acest caz, este realizată de către capacitatea acestor tranzistori. În consecinţă, densitatea de integrare este foarte ridicată, aceste memorii având o capacitate foarte mare. Datorită simplităţii celulei elementare, pe lângă avantajul creşterii considerabile a capacităţii de memorare, apare şi dezavantajul că informaţia din aceste memorii, pentru a nu se pierde, trebuie să fie tot timpul reîmprospătată. Datorită capacităţii mari de memorie ar fi nevoie de un număr foarte mare de linii de adresă. Din acest considerent selecţia celulelor care urmează a fi citite sau scrise se face prin transmiterea a două cuvinte de adresă succesiv. Deoarece cele două cuvinte se transmit pe aceleaşi linii fizice, pentru declararea liniilor sau coloanelor la care face referire cuvântul respectiv, acestea trebuie să fie însoţite de semnalele specifice notate RAS - pentru linii şi CAS - pentru coloane. Comunicaţia dintre matricea de memorie şi magistrala de date se face prin intermediul unui multiplexor-demultiplexor. Funcţia de multiplexare sau de demultiplexare este stabilită de către blocul de comandă în funcţie de nivelul logic de pe linia de citire / scriere (R/W). De asemenea circuitul este prevăzut şi cu un bloc propriu de refresh. Această operaţie constă în citirea conţinutului unor locaţii de memorie şi apoi rescrierea acestora cu conţinutul citit. Operaţia de refresh se face transparent faţă de utilizator. Pentru selecţia celulelor de memorie se transmite, în prima etapă, cuvântul de selecţie a liniei care prin multiplexorul aferent şi strobul de linii (RAS) este transmis unui registru de linii. Acesta va selecta toate celulele de pe linia respectivă, iar blocul de refresh va face o citire şi apoi o rescriere a conţinutului
94
acestora. Această operaţie se realizează în intervalul dintre cele două cuvinte care reprezintă adresa de linie şi respectiv de coloană. După transmiterea adresei semnificând cuvântul de linie se transmite cuvântul care reprezintă adresa de coloană în tandem cu strobul de coloane (CAS). Dacă se face o comparaţie între memoriile RAM statice şi memoriile RAM dinamice se poate constata că cele dinamice au o capacitate mult mai mare decât primele însă au dezavantajul că necesită o permanentă reîmprospătare. Astfel, dacă avem k linii de adresă, atunci capacitatea memoriei RAM statice va fi : Cstatic = 2k , iar capacitatea memoriei RAM dinamice va fi : Cdinamic = (2k)2 = 22k . Memoriile EEPROM intră tot în categoria memoriilor cu funcţia de scriere / citire. Acestea sunt memorii nonvolatile din care informaţia nu dispare odată cu dispariţia tensiunii de alimentare, ea fiind disponibilă în forma iniţială după apariţia tensiunii de alimentare. Memoriile EEPROM sunt memorii care pot fi atât şterse cât şi programate pe cale electrică, operaţie ce poate fi realizată în timpul funcţionării sistemului. Aceste memorii au o structură diferită faţă de cele analizate anterior. Citirea şi scrierea acestora se face în mod diferit, având loc o transmitere sau o recepţie serială a informaţiilor. Acestea, de regulă, sunt utilizate pentru memorarea unor informaţii care pot să se schimbe în timpul funcţionării sistemului şi care trebuie păstrate şi în cazul dispariţiei tensiunii de alimentare. Memorii cu funcţia de citire Sunt caracterizate prin faptul că pot fi numai citite în timpul funcţionării sistemului. Structura acestor circuite este prezentată în următoarea figură :
A1 A2 . . .
D L
Matrice de memorie
C E (P)
DC
BLC
Ai
D0 ÷ Dm
Ai+1 ...
Ak
Prog CE OE (CS)
95
Memoriile ROM pot fi numai citite în timpul funcţionării sistemului, programarea acestora făcându-se de către producător în momentul realizării circuitului. Pe lângă memoriile ROM propriu-zise mai există şi memorii care pot fi programate de către utilizator. Programarea se face prin intermediul unor circuite speciale numite programatoare. Din categoria
memoriilor cu funcţia de citire care pot fi programate fac parte memoriile PROM şi memoriile EPROM. Fig. 3.5.
Memoriile PROM sunt memorii cu funcţia de citire care pot fi programate o singură dată de utilizator. Memoriile EPROM sunt memorii cu funcţia de citire care pot fi programate de mai multe ori de către utilizator, după ce în prealabil au fost şterse. Această ştergere se realizează prin expunerea memoriei la o sursă de ultraviolete a căror raze se transmit cipului prin intermediul unei ferestre de cuarţ. Structura acestor tipuri de memorii este prezentată în figura 3.5. şi conţine matricea de memorie, decodificatoarele de linii şi de coloană (DL şi DC), circuitul de ieşire (şi de programare – pentru PROM şi EPROM : CE(P) ), precum şi blocul logic de comandă (BLC). În timpul funcţionării sistemului aceste memorii pot fi doar citite, drept pentru care circuitul de ieşire se comportă ca un buffer unidirecţional şi cu trei stări. Selecţia celulelor care urmează a fi citite se realizează prin liniile de adresă A0 ÷ Ak care sunt transmise matricii de memorie prin intermediul decodificatoarelor de linii sau de coloane. Selecţia circuitului se realizează prin semnalul CE (chip enable sau CS chip select), iar scoaterea circuitului din cea de-a treia stare se realizează prin semnalul OE (output enable). Pentru ca adresele să devină operante, cipul trebuie să fie selectat (CE = 0). Pentru ca datele selectate să fie transmise în exterior este necesar ca şi semnalul OE să fie activ. Pentru memoriile PROM şi EPROM, care pot fi programate de utilizator, mai există un semnal suplimentar - semnalul de programare (Prog). Prin intermediul acestui semnal se realizează programarea memoriei. Pentru programare, la început se transmit adresele pentru selecţia celulelor în care urmează să fie înscrisă informaţia, iar apoi se transmit pe magistrala externă datele care urmează să fie înscrise în memorie. Apoi se realizează selecţia cipului şi se transmite un semnal de programare (Prog) a cărui amplitudine trebuie să fie de 12.5 V , 21 V sau 25 V, cu o durată de 5 ms, 10 ms, 20 ms sau 50 ms, în funcţie de tipul memoriei.
Selecţia memoriei principale Memoria principală a sistemelor cu microprocesor este implementată utilizând circuite de tip ROM şi RAM care se conectează la bus-ul unic cu cele trei componente generate de unitatea centrală. Magistrala de adrese stabileşte şi capacitatea maximă a memoriei principale. După cum s-a văzut anterior, această
96
capacitate depinde de numărul de linii ale magistralei de adrese. Astfel, dacă există n linii de adresă, spaţiul de adresare va fi de A = 2n cuvinte de m biţi, unde m depinde de dimensiunea magistralei de date a microprocesorului. Necesarul de memorie va fi stabilit de Dm-1 . . . . . . D1 D0 către utilizator în funcţie de specificaţiile 0 tehnico-funcţionale, acesta putând să acopere 1 în totalitate spaţiul de adresare sau să fie mult ... mai redus decât acesta. Capacitatea de i ... memorie se stabileşte în funcţie de destinaţia 2n-1 şi complexitatea sistemului şi se noteaşă cu M, definind şi spaţiul de memorie. Fig. 3.6.
Pentru a putea comunica cu memoria este necesar ca aceasta să fie conectată la bus-ul unic. Modul de conectare se realizează diferenţiat în raport cu relaţia de legătură dintre spaţiul de adresă ţi spaţiul de memorie. Selecţia unui cuvânt din spaţiul de memorie se face prin operaţia de adresare. Prin această operaţie se alocă o adresă din spaţiul de adresă (A) pentru fiecare cuvânt din spaţiul de memorie (M). Această operaţie se realizează printr-o funcţie de translatare : fT : A → M. Implementarea acestei funcţii se face diferit, în funcţie de dimensiunea memoriei şi a spaţiului de adresă. Implementarea acestei funcţii de translatare poartă denumirea şi de selecţia memoriei. Selecţia memoriei poate fi : - liniară ; - decodificată . Selecţia liniară - se practică atunci când spaţiul de memorie necesar este mult mai mic decât spaţiul de adresă. În esenţă, selecţia constă în sintetizarea unui semnal care să permită selecţia unui singur cip de memorie dintr-un spaţiu de adresă bine definit. Acest semnal va fi utilizat pentru comanda pe intrarea CE (CS) a circuitului de memorie. Dacă spaţiul de adresă este mult mai mare decât spaţiul de memorie, vor rămâne adrese suficiente şi pentru selecţia cipului, astfel încât să poată fi realizată selecţia liniară. În acest caz nu sunt necesare circuite suplimentare pentru selecţie, pentru această operaţie fiind utilizate adresele din partea superioară a magistralei de adrese. Pentru exemplificarea modurilor de selecţie se va considera că avem 16 linii de adresă, deci spaţiul de adresă va avea capacitatea A = 216 = 65536 octeţi = 64 Ko. Pentru a pune în evidenţă modalitatea de realizare a selecţiei liniare se va considera că spaţiul de memorie (M) necesar este de 5 Ko, format din 4 Ko EPROM şi 1 Ko - RAM. Memoria EPROM este implementată prin două cipuri de tip 2716 fiecare având 2 Ko iar memoria RAM este implementată tot prin două cipuri de tip 2114, fiecare având 1 Ko * 4 biţi. Pentru a pune în evidenţă modalitatea de selecţie, trebuie să realizăm harta memoriei şi modul ei de alocare în spaţiul de adrese : 0 Ko 2 Ko EPROM 1 4 Ko EPROM 2 5 Ko
64 Ko
RAM
0000 07FF 0800 0FFF 1000 13FF . . . . . FFFF
Selecţie cip EPROM (1/2)
Selecţie locaţii EPROM
97cip RAM Selecţie
Selecţie locaţii RAM
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0/1 x x x x x x x x x x x 0 0 0 1 0 0 x x x x x x x x x x
Când: A11 = 0 ⇒ se selectează primul cip de memorie EPROM ; A11 = 1 ⇒ se selectează al doilea cip de memorie EPROM ; A12 = 1 ⇒ se selectează cipul de memorie RAM . Selecţia celor trei circuite de memorie poate fi făcută conform figurii următoare (fig. 3.7.) :
A11 MREQ A12
CSEPROM1
BUS DATE
CSEPROM2
CSRAM
A0 ...
EPROM 1
A10
A0 ...
EPROM 2
A10 CE
OE
A0 ...
RAM
A9 CE
OE
A0 ...
CE
MEMRD Fig. 3.7.
Selecţia decodificată - se practică atunci când liniile magistralei de adrese care au rămas disponibile nu sunt suficiente pentru a selecta toate cipurile utilizate în sistemul de memorie sau dacă, datorită capacităţii mai ridicate a memoriei, nu poate fi realizată selecţia fără a produce conflicte pe magistrală. Acest tip de selecţie presupune utilizarea unor circuite auxiliare, de regulă decodificatoare de adresă. Selecţia decodificată, în raport cu capacitatea de memorie, poate fi : - cu decodificare incompletă ;
98
RAM
A9 CE
- cu decodificare completă . Decodificarea incompletă se poate realiza atunci când spaţiul de adrese este mai mare decât spaţiul de memorie şi nu poate fi aplicată selecţia liniară. Pentru exemplificare se va considera că pentru realizarea unui sistem este necesar un spaţiu de memorie de 28 Ko, dintre care 24 Ko – ROM (implementaţi prin trei cipuri de câte 8 Ko fiecare) şi 4 Ko – RAM (implementaţi printr-un singur cip de 4 Ko). Pentru a pune în evidenţă modalitatea de selecţie, trebuie să realizăm harta memoriei : 0 Ko 8 Ko
ROM 0
16 Ko
ROM 1
24 Ko
ROM 2
28 Ko
RAM
0000 1FFF 2000 3FFF 4000 5FFF 6000 6FFF . . . FFFF
64 Ko MREQ A15
D C
A14
B
A13
A
D1
Selecţie locaţii ROM
D1
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 C B A x x x x x x x x x x x x x D→MREQ
x x x x x x x x x x x x Selecţie locaţii RAM
⎯0
CSROM0 (0000÷1FFF)
⎯1
CSROM1 (2000÷3FFF)
⎯2
CSROM2 (4000÷5FFF)
⎯3
CSRAM0 (6000÷7FFF)
După cum se observă, memoria RAM este selectată în tot spaţiul de adrese 6000h ÷7FFFh (deşi este nevoie doar de jumătate din acest spaţiu) deoarece, cum spaţiul 7000h ÷7FFFh nu este alocat, nu se va produce nici un conflict.
Decodificarea completă se impune atunci când spaţiul de memorie este foarte apropiat, ca mărime de spaţiul de adrese. În acest caz, pentru evitarea conflictelor, se impune o decodificare completă. Pentru evidenţierea modului de abordare şi realizare a selecţiei complete se va considera că memoria sistemului are 48 Ko - ROM (implementaţi prin trei cipuri de câte 16 Ko fiecare) respectiv 12 Ko - RAM (implementaţi prin trei cipuri de RAM static de câte 4 Ko fiecare). Pentru a pune în evidenţă modalitatea de selecţie, trebuie să realizăm harta memoriei :
Selecţie locaţii ROM
D1 D2
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 D→0 B A x x x x x x x x x x x x x x C→MREQ 1 1 B A x x x x x x x x x x x x C→3 D1
99
D→0 Selecţie locaţii RAM 0 Ko 16 Ko
ROM 0
32 Ko
ROM 1
48 Ko
ROM 2
52 Ko
RAM 0
56 Ko
RAM 1
60 Ko
RAM 2
64 Ko
0000 3FFF 4000 7FFF 8000 BFFF C000 CFFF D000 DFFF E000 EFFF
MREQ A15 A14
A13
...
FFFF
A12
D C B
D1
⎯0
CSROM0 (0000÷3FFF)
⎯1
CSROM1 (4000÷7FFF)
⎯2
CSROM2 (8000÷BFFF)
A
⎯3
D
⎯0
CSRAM0 (C000÷CFFF)
⎯1
CSRAM1 (D000÷DFFF)
⎯2
CSRAM2 (E000÷EFFF)
C B
D2
A
Selecţia memoriei RAM dinamic În cazul utilizării unui sistem cu memorie de tip RAM dinamic apar o serie de particularităţi în ceea ce priveşte selecţia. Aceste particularităţi sunt determinate de caracteristicile funcţionale ale memoriei dinamice faţă de cea statică. Din analiza funcţionării acestor memorii s-a constatat că pentru selecţie este necesar să se transmită succesiv două cuvinte de adresă însoţite de strob-urile pentru linii (RAS) şi coloane (CAS). Un alt aspect care se cere a fi rezolvat constă în obligativitatea realizării reîmprospătării memoriei, acţiune care trebuie să se realizeze periodic, indiferent dacă memoria este accesată sau nu. Pentru evidenţierea modului de realizare a selecţiei se va considera că memoria RAM a unui sistem necesită 32 Ko, implementaţi prin module de câte 16 Kx1. În consecinţă, pentru implementarea unui bloc de 16 Ko se vor utiliza 8 cipuri de memorie de 16 Kx1. Fiind nevoie de 32 Ko vor fi utilizate două astfel de module. Având în vedere modul de transmitere a celor două cuvinte de adresă pentru selecţie, adresele magistralei sistemului vor fi multiplexate prin intermediul unor multiplexoare 2 : 1. Modul de realizare a selecţiei este prezentat în figura 3.8.
Fig. 3.8.
După cum se observă, adresele de pe magistrala de adrese se transmit multiplexat circuitelor de memorie, prin intermediul unor multiplexoare 2 : 1. Multiplexarea se face astfel : A0 – A7, A1 – A8, … , A6 – A13. Comanda multiplexorului se face cu ajutorul unui bistabil de tip D. Comanda de refresh se face prin intermediul aceluiaşi bistabil, iar semnalul Refresh, care întră şi în sinteza semnalului de comandă pentru strob-ul de linii, este comandat prin intermediul porţilor NAND. Semnalul de comandă al coloanelor este obţinut la ieşirea unui decodificator.
100
În funcţie de modul de aplicare al adresei A15, cei 32 Ko de memorie dinamică pot fi amplasaţi în prima jumătate a spaţiului de memorie (0000h ÷7FFFh ⇔ semnalul A15 aplicat direct pe intrarea porţii NAND) sau în a doua jumătate a acestuia (8000h ÷FFFFh ⇔ semnalul A15 aplicat pe intrarea porţii NAND prin intermediul unei porţi inversoare). Dacă timpul de acces al memoriilor este mai mare, atunci strob-ul coloanelor poate fi întârziat prin plasarea la ieşirea decodificatorului a două porţi inversoare (desenate punctat în figură). Semnalul de reîmprospătare poate fi furnizat fie de către microprocesor, dacă acesta are implementat acest mecanism, fie este sintetizat (furnizat de către un bloc extern microprocesorului).
101