Extinderea capacității de memorare
Extinderea capacității de memorare este o operație frecventă în practică, atunci când se dorește realizarea unei memorii cu capacitate mai mare decât cea a unui singur circuit integrat. Există trei metode de extensie: în lățime, în adâncime și mixtă.
Etapele proiectării
Indiferent de metoda de extensie, pașii de proiectare sunt:
- Determinarea numărului de circuite de memorie necesare
- Proiectarea electronică suplimentare (decodificatoare, multiplexoare), dacă este necesară
Extensia în lățime (paralel)
Principiu: se mărește numărul de biți ai cuvântului memorat, păstrând același număr de cuvinte. Liniile de adresă și control se conectează în paralel la toate cipurile, iar liniile de date sunt separate.
Exemplu: de la 8K×8 la 8K×24 (imagine color)
Se dorește modernizarea unui sistem de achiziție video de la imagini alb-negru (8 biți, 256 nuanțe de gri) la imagini color (24 biți, 16.777.216 culori). Rezoluția este 320 × 240 pixeli (76.800 puncte).
Soluție: 3 cipuri de memorie 128K × 8 biți (de exemplu SRAM 628128):
Cip #1: D7–D0 (componentă roșie) ─┐
Cip #2: D15–D8 (componentă verde) ├── magistrala de date 24 biți
Cip #3: D23–D16 (componentă albastră) ─┘
Toate cipurile primesc în comun:
- Adrese: A0–A16 (paralel)
- Control: nCS, nOE, nWE (paralel)
Numărul de circuite = lățime dorită / lățime circuit = 24 / 8 = 3 cipuri.
Extensia în adâncime (serie)
Principiu: se mărește numărul de cuvinte adresabile, păstrând aceeași lățime a cuvântului. Adresele inferioare se conectează în paralel la toate cipurile; adresele superioare se folosesc pentru selectarea cipului activ prin intermediul unui decodificator.
Exemplu 1: de la 128K×8 la 256K×8 (2 cipuri)
Se dorește mărirea rezoluției de la 320×240 la 640×400 pixeli (256.000 puncte), păstrând reprezentarea pe 8 biți.
Soluție: 2 cipuri de 128K × 8 biți:
- Adresele A0–A16 se leagă în paralel la ambele cipuri
- Adresa A17 (noua adresă superioară) selectează cipul activ
Deoarece memoria HM6264A are două intrări de selecție (nCS1 activ LOW și CS2 activ HIGH), linia A17 se conectează direct:
- A17 = 0 → nCS1 = 0 la Cip #1, CS2 = 0 la Cip #2 → Cip #1 selectat
- A17 = 1 → nCS1 = 1 la Cip #1, CS2 = 1 la Cip #2 → Cip #2 selectat
Nu este necesar niciun circuit suplimentar (fără decodificator extern).
Exemplu 2: de la 128K×8 la 1M×8 (8 cipuri cu DCD 3:8)
Se dorește o memorie Flash de 1 Moctet utilizând 8 circuite 29F010 (128K × 8 biți).
Soluție:
- 20 linii de adresă necesare pentru 1M cuvinte
- A0–A16 (17 linii) se conectează în paralel la toate 8 cipurile
- A17–A19 (3 linii) se conectează la intrările decodificatorului 74LS138 (DCD 3:8)
- Cele 8 ieșiri ale DCD comandă intrările nCE ale fiecărui cip
A0–A16 ──────────── în paralel la cipurile #0...#7
A17–A19 ──→ DCD 74LS138 ──→ Y0 la nCE(#0)
──→ Y1 la nCE(#1)
──→ ...
──→ Y7 la nCE(#7)
nRD ─────────────── la nOE al tuturor cipurilor
nWR ─────────────── la nWE al tuturor cipurilor
Hazardul combinațional la decodificare
Problemă critică: datorită hazardului combinațional propriu DCD, la schimbarea adreselor, este posibil ca pentru intervale scurte de timp (câțiva t_pd) două sau mai multe ieșiri ale decodificatorului să fie simultan active, validând accidental mai multe memorii simultan.
Consecință: apare un conflict pe magistrală (bus contention) — două memorii încearcă simultan să impună valori diferite pe aceleași linii de date. Deși un conflict scurt nu distruge imediat memoriile, procesul repetat produce încălzire și în final defectarea circuitelor.
Soluția: legarea semnalului nRD la intrarea nOE a tuturor memoriilor. nOE strobează ieșirea la momente bine definite, după stabilizarea ieșirilor DCD, eliminând complet problema hazardului.
Extensia mixtă (lățime + adâncime)
Principiu: se măresc simultan și numărul de cuvinte și lățimea cuvântului.
Exemplu: 256K × 12 biți din cipuri SRAM de 1 Mbit
Sunt necesare 3 cipuri, cu două variante de implementare:
Varianta 1: cipuri de 128K × 8 biți
- 2 cipuri furnizează câte 8 biți → biții D0–D7 (primul cip) și D8–D11 (4 biți din al doilea cip)
- Al treilea cip furnizează 8 biți, din care se folosesc 4
- Adresa A17 selectează prin decodificator care pereche de cipuri este activă
- La ieșirea cipului al doilea se folosește un multiplexor 4:1 (74LS157) pentru selectarea jumătății active
Varianta 2: cipuri de 256K × 4 biți
- 3 cipuri furnizează fiecare câte 4 biți: D0–D3, D4–D7, D8–D11
- Toate adresele (A0–A17) se conectează în paralel — nu este necesar decodificator suplimentar
- Aceasta este soluția mai simplă
Formulă generală
N_cipuri = (cuvinte_dorite / cuvinte_cip) × (lățime_dorită / lățime_cip)
Exemplu: 256K × 12 din cipuri de 128K × 8:
- Pe adâncime: 256K / 128K = 2
- Pe lățime: 12 / 8 = 1,5 → se rotunjește în funcție de lățimile disponibile
- Total: 3 cipuri (necesită analiză detaliată a configurației)
Observații de proiectare
- Reducerea consumului: înlocuirea circuitului 74LS138 (TTL) cu 74HCT138 (CMOS compatibil TTL) reduce semnificativ consumul
- Selecția globală (nSEL): poate fi legată la masă dacă nu se dorește economie de energie; utilizarea ei reduce consumul în regim standby — esențial pentru echipamentele portabile
- Multiplexorul 74LS157 nu asigură transfer bidirecțional — pentru citire și scriere trebuie înlocuit cu buffere three-state comandate de nRD și nWE
Puncte cheie pentru examen
- Extensia în lățime: adrese și control în comun (paralel), date separate; mărește biți/cuvânt
- Extensia în adâncime: adresele inferioare în comun, cele superioare la DCD pentru selectare cip; mărește numărul de cuvinte
- Extensia mixtă: combinație lățime + adâncime
- Formula:
N = (cuvinte_dorite/cuvinte_cip) × (lățime_dorită/lățime_cip) - Hazardul combinațional la DCD se rezolvă prin utilizarea unui al doilea semnal de control (nOE legat la nRD) care strobează ieșirea după stabilizare
- Exemplu clasic: 8 cipuri 29F010 + DCD 74LS138 → memorie de 1 Moctet
- Memoria cu 2 pini de selectare (nCS1, CS2) simplifică extensia în adâncime cu 2 cipuri (fără DCD extern)
Exercițiu rezolvat complet
Enunț
Proiectați un sistem de memorie de 512K × 16 biți folosind cipuri de memorie SRAM de 128K × 8 biți. Specificați:
- Numărul total de cipuri necesare
- Tipul extensiei (lățime, adâncime, mixtă)
- Schema de conexiuni
- Decodificatorul necesar (dacă este cazul)
Rezolvare
Pas 1: Determinarea numărului de cipuri
Pe adâncime: 512K / 128K = 4 (necesare 4 cipuri pe coloană)
Pe lățime: 16 / 8 = 2 (necesare 2 cipuri pe rând)
Total cipuri: 4 × 2 = 8 cipuri
Extensia este mixtă (atât în lățime, cât și în adâncime).
Pas 2: Liniile de adresă
Cuvinte dorite: 512K = 2¹⁹ → 19 linii de adresă (A0–A18)
Cuvinte per cip: 128K = 2¹⁷ → 17 linii de adresă (A0–A16)
Adrese comune la toate cipurile: A0–A16 (17 linii)
Adrese pentru selectare: A17–A18 (2 linii) → DCD 2:4
Pas 3: Decodificatorul
Se folosește un decodificator 2:4 (de exemplu 74HCT139, jumătate din cipul dual):
A17 A18 │ Y0 Y1 Y2 Y3
──────────┼───────────────────────
0 0 │ 0 1 1 1 → selectează grupul 0
0 1 │ 1 0 1 1 → selectează grupul 1
1 0 │ 1 1 0 1 → selectează grupul 2
1 1 │ 1 1 1 0 → selectează grupul 3
Pas 4: Schema de conexiuni
Magistrala de date (16 biți)
D15–D8 D7–D0
│ │
┌──────────────────┼─────────────┼──────────┐
│ │ │ │
│ ┌─────────┐ ┌─────────┐ │
│ │ Cip #1A │ │ Cip #1B │ Grup 0 │
│ │ 128K×8 │ │ 128K×8 │ (Y0→nCS) │
│ └────┬────┘ └────┬────┘ │
│ │ │ │
│ ┌─────────┐ ┌─────────┐ │
│ │ Cip #2A │ │ Cip #2B │ Grup 1 │
│ │ 128K×8 │ │ 128K×8 │ (Y1→nCS) │
│ └────┬────┘ └────┬────┘ │
│ │ │ │
│ ┌─────────┐ ┌─────────┐ │
│ │ Cip #3A │ │ Cip #3B │ Grup 2 │
│ │ 128K×8 │ │ 128K×8 │ (Y2→nCS) │
│ └────┬────┘ └────┬────┘ │
│ │ │ │
│ ┌─────────┐ ┌─────────┐ │
│ │ Cip #4A │ │ Cip #4B │ Grup 3 │
│ │ 128K×8 │ │ 128K×8 │ (Y3→nCS) │
│ └────┬────┘ └────┬────┘ │
│ │ │ │
└───────┴─────────────┴─────────────────────┘
A0–A16 → în paralel la toate 8 cipurile
A17–A18 → DCD 2:4 → Y0..Y3 la nCS al grupurilor
nRD → nOE al tuturor cipurilor (previne hazardul)
nWR → nWE al tuturor cipurilor
Pas 5: Harta de memorie
Adresa hex Grup Cip
─────────────────────────────
00000–1FFFF 0 #1A + #1B
20000–3FFFF 1 #2A + #2B
40000–5FFFF 2 #3A + #3B
60000–7FFFF 3 #4A + #4B
Verificare totală: 4 × 128K × 2 × 8 = 8192K biți = 8 Mbiți = 1 MB ≡ 512K × 16 biți ✓