You are on page 1of 4

Seminar Circuite Integrate Digitale Zoltan Hascsi

PROIECTAREA UNEI MEMORII



O aplicaie particular necesit o memorie proiectat dup cerinele acesteia. S
presupunem c aplicaia noastr are nevoie de un spaiu de adresare de 64KB, pentru cuvinte de
8 bii, n care primele 8K adrese sunt necesare unei memorii ROM (probabil c aici se vor afla
instruciunile unui microcontroller), iar ultimele 40K adrese sunt gestionate dinamic de aplicaie
(aici se vor stoca datele i stiva programului, de exemplu). De multe ori spaiul de adresare
necesar nu se potrivete ca dimensiune cu memoriile fizice avute la dispoziie, caz n care trebuie
s proiectm o arie de memorii (sau un banc de cipuri) mpreun, bineneles, cu circuitele
aferente care asigur accesarea corect a locaiilor de memorie. S ne punem n aceast situaie
incomod i s construim memoria cerut cu cipuri ROM de 1K8 i cipuri DRAM de 4K1. Dac
ascultm intuiia care ne spune c vom avea nevoie de o selecie ntre cipuri, lum n trecere i
circuite demultiplexoare 1:8.
Primul pas ctre implementarea memoriei este plasarea cipurilor de memorie n limita
spaiului de adresare, astfel nct s acoperim zonele de memorie cerute. Lucrurile trebuiesc
potrivite cu precizie milimetric (adic la bit) astfel nct s nu apar dou locaii de memorie cu
aceeai adres. Pe scurt, cipurile s aib zone disjuncte n spaiul de adres.
Un calcul sumar ne arat numrul de cipuri necesare aplicaiei noastre:
ROM : n = ( 8K 8 ) / ( 1K 8 ) =8 cipuri
RAM : n = ( 40K 8 ) / ( 4K 1 ) = 10 8 cipuri
Avnd aceste cipuri spaiul de memorie poate fi partiionat conform desenului de mai jos,
desen care reprezint de fapt harta memoriei pentru aplicaia dat:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1
0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
sel
ROM
sel
RAM
adrese interne
RAM
adrese interne
A
15
ROM 0
ROM 1
ROM 7
RAM 0
RAM 1
RAM 10
0 0 0 0
0 3 F F
0 4 0 0
1 C 0 0
1 F F F
6 0 0 0
6 F F F
7 0 0 0
7 F F F
F F F F
F 0 0 0
8 0 0 0
#add A
0
. . . . .


Privind cu atenie harta memoriei se pot face cteva observaii utile pentru implementare.
Zona de memorie ROM este situat ntre adresele #0000 i #1FFF (un numr scris n
hexazecimal este precedat de un diez - #-). Dac citim adresele n binar (pe desen n stnga
memoriei) observm c primii trei bii au aceeai valoare pentru toate adresele din zona destinat
ROM-ului, A
15
=0, A
14
=0, A
13
=0. Este evident cum se va face accesarea corect a cipurilor
ROM: dac primii trei bii ai adresei sunt 0, atunci citirea se va face din zona de memorie ROM.
Seminar Circuite Integrate Digitale Zoltan Hascsi

n zona ROM sunt ns 8 cipuri, unul singur fiind posesorul locaiei dorite. Selecia cipului
ROM corespunztor se face cu urmtorii trei bii ai adresei. Primului cip (ROM0) i-au fost alocate
primele 1K adrese, deci adresele pn la #03FF sunt localizate aici. Aceste adrese au n comun,
pe lng primii trei bii corespunztori zonei ROM, biii A
12
, A
11
i A
10
. Aceast valoare, 000, va fi
folosi8t pentru selecia primului cip ROM. Al doilea cip (ROM1) conine adresele ncepnd cu
#0400 pn la #07FF, pentru care biii A
12
, A
11
i A
10
sunt 001. n mod analog toate cele opt cipuri
ROM au o identificare unic, dat de biii A
12
, A
11
i A
10
ai adresei. De exemplu adresa
000101XXXXXXXXXX corespunde unei locaii din cipul ROM5 (5 n binar este 101). Ultimii 10 bii
ai adresei sunt folosii pentru adresarea celor 1024 (1K) locaii n interiorul cipului ROM selectat.


selecie cip ROM
3
A
10
. . . A
12

selecie zona ROM
3
A
13
. . . A
15

adres intern ROM
10
A
9
. . . A
0



Dac urmrim pe harta memoriei valorile adreselor corespunztoare zonei RAM observm
c primii doi bii ai acestora sunt n toate cazurile diferii de 00. Putem deci selecta zona de ROM i
numai cu ajutorul primilor doi bii A
15
A
14
ai adresei, dar numai dac zona de memorie neacoperit,
situat ntre adresele #1FFF i 3FFF, nu este deloc utilizat de sistem (zon pentru care primii doi
bii sunt 00 dar al treilea bit este A
13
=1).
Selecia cipului ROM se face prin intermediul unui demultiplexor care va activa ROM-ul care
corespunde biilor A
12
A
11
A
10
din adres (intrarea de CE a cipului ROM valideaz ieirea acestuia).
Biii de selecie au efect ns numai dac adresa este n primii 8K din spaiul de adresare, adic
dac primii trei bii ai adresei sunt 000. Demultiplexorul este activ numai dac intrarea de validare
(E) este n 0.

A
W CE
ROM 0
A
9 0
. .
A
W CE
ROM 7
A
9 0
. .
W
ROM 1
10
3
A A
9 0
. .
A A
10 12
. .
A A
13 15
. .
S
2
S
1
S
0
0
1
7
D
M
U
X
E
A
12
A
11
A
10
DATA
8


Pentru adresarea DRAM-ului de 4K este nevoie de 12 linii de adres (ce vor fi multiplexate,
mpreun cu adresa de refresh, pentru accesarea efectiv a cipurilor DRAM). Cipurile DRAM se
grupeaz cte opt pentru a asigura lungimea de opt bii a cuvntului din memorie. Vom identifica
n cele ce urmeaz un bloc DRAM cu un indice (RAMi), iar un cip RAM cu doi indici: primul indice
este al blocului iar al doilea desemneaz indicele bitului din cuvnt (RAMij).
Seminar Circuite Integrate Digitale Zoltan Hascsi

Privind pe harta memoriei cum sunt partiionate locaiile de memorie ntre grupurile DRAM
sesizm c fiecare grup este caracterizat prin valoarea primilor 4 bii ai adresei. De exemplu
adresele #7000 - #7FFF aparin grupului RAM1, i au n comun biii A
15
, A
14
, A
13
i A
12
=0111.
Aceti patru bii vor fi folosii pentru identificarea (selecia) grupului DRAM. Reamintim c dac
aceti bii au valoarea 000X adresa respectiv aparine ROM-ului. Grupurile DRAM sunt
identificate prin A
15
, A
14
, A
13
, A
12
=0110 pentru RAM0, A
15
, A
14
, A
13
, A
12
=0111 pentru RAM1, ...
A
15
, A
14
, A
13
, A
12
=1111 pentru RAM9.
Pentru selecia n zona DRAM s-ar putea folosi un decodor 4:16 care s recunoasc
combinaiile 0110, 0111, ... , 1111. Cum ns nu avem la ndemn dect demultiplexoare 1:8,
vom recurge la un mic truc combinaional. Urmrind cu atenie adresele binare se observ c toat
zona de memorie RAM2-RAM9 are n comun cel mai semnificativ bit al adresei A
15
=1. Selecia
ntre aceste opt grupuri se face cu un singur demultiplexor al biilor A
14
, A
13
i A
12
, a crui ieire
selectat este valid numai pentru A
15
=1. Primele dou grupuri DRAM sunt situate n zona de
adrese corespunztoare lui A
15
=0. Vom folosi un alt demultiplexor 1:8, comandat tot de biii A
14
,
A
13
i A
12
i validat de bitul A
15
= 0. RAM0 i RAM1 vor fi selectate de ieirile 6 i 7 ale
demultiplexorului, care corespund combinaiilor 110 i respectiv 111 ai biilor de adres A
14
, A
13
i
A
12
. Aceast schem nu este altceva dect un decodor 4:16 realizat cu demultiplexoare 3:8! (vezi
schema de mai jos)
CAS
RAM 1
A
15
S
2
S
1
S
0
0
1
7
D
M
U
X
E
A
14
A
13
A
12
CAS
RAM 2
CAS
RAM 9
CAS
RAM 0
RAM 3
S
2
S
1
S
0
6
7
E
3
3
E
E
0
0
1
1
CAS


S-au folosit ambele intrri de validare ale demultiplexorului, E
1
pentru extinderea
demultiplexorului, iar E
0
pentru intrarea propriu-zis (semnalul CAS este cel demultiplexat).
Toate celelalte intrri ale cipului RAM sunt comune tuturor cipurilor, cu excepia ieirilor care
sunt comune numai pe coloane. Semnalele RAS, CAS, W, select, ca i adresa de refresh sunt
generate de un automat de control al memoriei RAM. n schema urmtoare apare un singur cip dar
conexiunile W, RAS i A
5
-A
0
de la ieirea multiplexorului sunt comune tuturor cipurilor. Liniile de
date D
j
sunt comune cipurilor pe coloane. Semnalul CASi este comun tuturor cipurilor de pe linia i.
Seminar Circuite Integrate Digitale Zoltan Hascsi


A
W CAS
RAM ij
A
5 0
. .
W
A A
5 0
. .
A A
11 6
. .
ADD refresh
RAS
6
MUX
4 : 1
6
6
6
6
RAS
CAS i
D
out j
D
in j
select


Schema este gata, memoria este alturat sistemului, sistemul este alimentat i la pornire, n
timpul testului de memorie, surpriz:
Memor y Er r or at l ocat i on AD53. Wr i t e t est f ai l ed.
Ce facem cnd apare un asemenea mesaj? Dac testul de memorie a euat doar pentru o
singur locaie de memorie, atunci nu avem altceva de fcut dect s detectm cipul defectat i
s-l nlocuim. Nu o s scoatem cipurile de pe soclu ca s le verificm unul cte unul; testul de
memorie ne i arat unde este eroarea. Trebuie doar s tim cum s decodificm mesajul.
Adresa AD53 corespunde zonei RAM. Selecia grupului RAM se face cu biii A
15
, A
14
, A
13
i
A
12
Cum AD53 n binar este 1010 1101 0101 0011, rezult c cipul defect se afl n ultimele 8
grupuri RAM (bitul A
15
este 1), selectat de ieirea demultiplexorului cu indice 2 (A
14
A
13
A
12
=010).
Este vorba deci de grupul RAM4 (constituit din cipurile RAM47 ... RAM40).
Fiecare cip din grupul respectiv memoreaz la adresa AD53 cte un bit al cuvntului.
Detecia cipului defect se face comparnd cuvntul care ar fi trebuit memorat cu valoarea citit de
test. S presupunem c testul a ncercat scrierea lui #55 i a citit apoi #51.

bitul: 7 6 5 4 3 2 1 0
cuvntul scris: #55 = 0 1 0 1 0 1 0 1
cuvntul citit: #52 = 0 1 0 1 0 0 0 1

Prin urmare bitul D
2
a fost incorect scris, cipul RAM42 trebuie nlocuit.