This is an old revision of the document!
Introducere
În proiectarea sistemelor digitale, logica secvențială este utilizată nu doar pentru a gestiona starea curentă a automatelor finite, ci și pentru a stoca volume mari de informații/date de uz general. Aceste blocuri de circuite secvențiale de mari dimensiuni sunt denumite memorii.
Caracteristicile primare care definesc un bloc de memorie sunt:
Capacitatea/Dimensiune: măsurată în biți (b), octeți (B), și multiplii acestora (KB,
MB,
GB, etc).
Timp de acces: viteza necesară pentru citirea/scrierea unei date, măsurată tipic în nanosecunde (ns).
Structura internă: un bloc mare de memorie este construit din mai multe module mai mici de memorie.
Volatilitatea: proprietatea datelor de a persista (non-volatil) sau de a se pierde (volatil) după un ciclu de alimentare (on-off-on).
Alterarea datelor: posibilitatea de a rescrie conținutul memoriei după fabricație.
Modul de acces al datelor: ordinea de accesare a datelor în raport cu timpul (aleatoriu, secvențial).
Număr de porturi: câte unități hardware pot avea acces simultan la memorie, în același ciclu de ceas.
Preț: costul de producție
Tehnologia de fabricație: influențează caracteristicile menționate anterior.
Fiecare soluție este una de compromis 1), iar în aplicațiile de dimensiuni mari se adoptă o tehnică hibridă, numită ierarhie de memorii.
Ierarhia de memorii
Memoria unui calculator numeric este organizată ca o ierarhie de module de memorie. La baza ierarhiei se află memoria auxiliară/secundară 2), urmată de memoria principală 3), apoi de memoria cache 4), iar în vârful ierarhiei se află registrele generale ale procesorului 5).
Memoria cache este o memorie SRAM, utilizată pentru eficientizarea timpului de acces la date a procesorului. Aceasta este încapsulată împreună cu unitatea centrală de procesare (CPU) pentru a facilita viteza ridicată de transfer, eficiența energetică pentru transportul datelor și compensarea timpului de acces la memoria principală.
Memoria principală este o memoria DRAM ce oferă o capacitate mare de lucru (în general de ordinul GB) la un cost rezonabil (10s of $).
Criterii de clasificare
Mod de acces
Unul din cele mai simple criterii de clasificare este cel dupa modul de acces:
memorii cu acces aleator (Random Access Memory)- datele pot fi citite sau scrise în orice ordine, fără a ține cont de locația fizică a datelor pe mediul de stocare
memorii cu acces secvențial - datele sunt citite sau scrise într-o ordine strictă, de ex. succesiune liniară
Hard disk,
CD-ROM - capetele de citire/scriere se deplasează de-a lungul mediului de stocare.
Bandă magnetică - pentru a accesa o anumită porțiune a benzii necesită derularea acesteia.
Posibilitatea de modificare a datelor
Din acest punct de vedere există:
memorii care au conținut fixat din momentul fabricației (Read Only Memory)
memorii care au un conținut pseudo-fixat (număr limitat de cicluri de scriere)
memorii care au un continut alterabil
Volatilitatea datelor
memorii volatile: datele se pierd atunci când alimentarea cu energie este întreruptă.
memorii non-volatile: datele persistă pe mediul de stocare pentru o perioadă îndelungată.
În cadrul acestui laborator vom aprofunda memoriile cu acces aleator, volatile (RAM).
Tipuri memorii cu acces aleator (RAM)
RAM static (SRAM)

Sursă imagini
Un bit de memorie este implementat folosind bistabile sau latch-uri, fiind necesari între 4 și 6 tranzistori.
Design-ul facilitează un consum energetic extrem de eficient în idle, însă acesta crește odată cu frecvența acceselor.
Costul per bit este ridicat și densitatea de biți per chip este scazută.
RAM dinamic (DRAM)
Sursă imagine
De ce este necesar circuitul de refresh?
De ce este necesar circuitul de refresh?
Din cauza imperfecțiunilor9), condensatoarele din chip-urile de RAM dinamic se descarcă singure în timp (de ordinul milisecundelor). Din acest motiv celulele trebuie citite periodic, iar cele ce stochează biți de 1 vor fi reîncărcate. Acest procedeu se numește refresh și reprezintă un overhead necesar doar pentru întreținere, RAM-ul fiind indisponibil în acest timp pentru accese utile (“închis pentru curățenie”).
Memorii SRAM sincrone
În cadrul acestui laborator vom implementa o memorie RAM statică sincronă.
Descrierea semnalelor
Toate operațiile necesare pentru interfațarea unui chip SRAM sincron sunt controlate de unul sau mai multe semnale externe de ceas. Pentru a funcționa corect toate semnalele de control trebuie să fie valide atunci când are loc tranziția respectivă a ceasului, adică să fie respectați timpii de setup și hold.
Functionarea unui SSRAM poate fi descrisa prin urmatoarele semnale:
Clock: semnalul de sincronizare care marchează momentele în care datele sunt citite sau scrise.
Address (ADDR or SAx): adresa la care se efectuează operația de citire sau scriere.
Data Inputs and Outputs (DQs or I/Os): Aceste semnale reprezintă datele care sunt scrise în memoria SSRAM în cazul operației de scriere, respectiv datele care sunt citite din memoria SSRAM în cazul operației de citire.
Chip Select (CS or SS): activează modulul de memorie, stabilind contextul pentru operațiile ulterioare de citire sau scriere.
Output Enable (OE or G): permite scrierea pe magistrală de date a informațiilor de la adresa specificată.
Write Enable (WE or RW): permite scrierea datelor în modulul de memorie, fiind prioritar fată de Output Enable.
Descriere elaborată a semnalelor
Descriere elaborată a semnalelor
Address (ADDR or SAx): acest semnal de intrare este folosit pentru a selecta o locație de memorie de pe chip. În realitate, pentru memorii mari construite din mai multe chip-uri, atunci când selectăm o adresă, de fapt selectăm mai multe celule de memorie, câte una pentru fiecare chip.
Obs. 1. Într-o memorie formată din 8 chip-uri, selectarea unei adrese conduce la 8 locații de memorie simultan. Mai departe, distincția dintre acestea se face decodificând biții suplimentari ai adresei.
Obs. 2. Dimensiunea adresei depinde de mărimea memoriei. O memorie SRAM de 32K x 8 va avea 15 biți de adresă (215 = 32K).
Data Inputs and Outputs (DQs or I/Os): Pinii de DQ sunt folosiți pentru intrarea și ieșirea datelor. Pe unele memorii pinii de intrare/ieșire sunt separați, iar pe altele sunt multiplexați pe aceiași pini. Spre exemplu, o memorie SRAM de 32K x 8 va avea 8 biți de date.
În timpul unei operații de scriere, un semnal de date se aplică pe pinii de Data Input. Aceste date sunt eșantionate și stocate în celula de memorie selectată prin biții de adresă.
În timpul unei operații de citire, datele de la adresa de memorie selectată vor apărea pe pinii de Data Output odată ce accesul s-a încheiat și Output Enable (OE) a fost activat.
În majoritatea timpului, pinii DQ sunt într-o stare de impedanță mărită, adică nu trag și nu dau curent. Ei nu prezintă niciun semnal către exterior, ca și când ar fi deconectați din circuit.
Output Enable (OE or G): (semnal descris în continuare ca activ high) atunci când OE este 0 ieșirile (DQ) sunt întotdeauna în stare de impedanță mărită. Când OE este 1, ieșirile sunt active, iar datele pot apărea pe pini atunci când sunt disponibile. OE este un semnal asincron: poate fi modificat în orice moment de timp, iar SRAM-ul va răspunde imediat schimbării.
În timpul unei operații de citire acest semnal se folosește pentru a bloca datele de a apărea la ieșire până atunci când sunt necesare.
Înaintea unei operații de scriere acest semnal este uneori folosit pentru a evita coliziuni pe magistrala de date prin tri-state.
În timpul operației de scriere propriu-zise semnalul OE este ignorat.
Clock: La SRAM-urile cu un singur semnal de ceas, acesta controlează momentul când semnalele de intrare sunt eșantionate de către memorie, la începutul unui ciclu de citire sau scriere, și când semnalele de ieșire devin vizibile pe pini.
Chip Select (CS or SS): (activ high) este folosit pentru a permite/bloca semnalele de intre/ieșire către/de la chip. De exemplu, atunci când CS este 0 semnalele de input aplicate pe pini sunt ignorate.
Write Enable (WE or RW): (activ high - 1 = write) semnalul este folosit pentru a alege dintre o operație de citire sau de scriere. Atunci când WE este 1 datele aplicate pe pinii de intrare sunt copiate în memorie. Când WE este 0 se începe un ciclu de citire, iar datele de pe linia de date sunt ignorate.
Stabilirea nivelelor logice pe care sunt active semnalele este o chestiune ce ține strict de convenție, și este de preferat păstrarea aceleiași convenții pe întreg parcursul unui proiect.
Pentru a asigura compatibilitatea între module cu convenții diferite de polaritate, se pot utiliza porți logice inversoare.