Sie sind auf Seite 1von 8

Ministerul Educaiei i tiintei al Republicii Moldova

Universitatea Tehnic a Moldovei


Facultatea de Calculatoare, Informatic i Microelectronic
Catedra de Microelectronic i Inginerie Biomedical

Disciplina:Limbaje de descriere hardware

Raport
Lucrarea de laborator nr. 6

Tema:Memoria RAM

A elaborat:

Student gr. MN-121


Reu Constantin

A verificat:

Lector asistent
Sereacov Alexandru

Chiinu 2014

Scopul lucrrii: S se proiecteze o memorie RAM si de elaborat un modul de testare pentru


aceast memorie folosind task-urile.
1.1_Construcia unui modul de simulare pentru memoria RAM.
1.2_Construcia unui mediu de simulare pentru memoria RAM(modulul de test)

Generalitati
Structura general a unei memorii cu acces aleator - RAM.
Din punct de vedere teoretic, latch-ul adresabil reprezint o memorie cu acces aleator. Prezint ns
deficiena principal de a avea prea multe conexiuni. Numrul de conexiuni crete inacceptabili pe
msur ce capacitatea de stocare crete, deoarece avem o ieire pentru fiecare bit memorat. Se impune
introducerea unui circuit prin care s putem selecta simplu oricare bit stocat. Altfel spus, va trebui
rezolvat accesul la citire similar accesului la scriere, prin intermediul unui numr minim de conexiuni.
Vom defini structura de principiu a memoriei RAM pornind de la structura latch-ului adresabil,
cruia-i vom aduga un multiplexor, MUXn, pentru selectarea la o ieire de un bit a coninutului
oricrui latch. Rezult structura prezentat n Figura 1, unde ieirea fiecrui latch este conectat la o
intrare selectat a MUX ce are ca bii de selecie aceiai bii cu care se selecteaz ieirile DMUX-ului.
Latchul care primete CK-ul de la ieirea O'j a DMUX-ului are ieirea conectat la intrarea ij a MUXlui. Astfel, intrrile An-1,..., A0 vor selecta, pentru o valoare dat, adresa aceluii latch att la scriere
ct i la citire. Intrrile An-1,..., A0 sunt numite intrri de adresare, sau, simplu, adrese.
Pentru ca scrierea ntr-o celul de memorare (latch-ul de un bit asociat fiecrei adrese) s se
fac fr a se perturba coninutul altor celule de stocare trebuie respectat o riguroas secvenare a
comutrii adresei i a semnalului de WE care comand scrierea.

Fig.1. Principiul de structurare a unei memorii cu acces aleator (RAM).

Fig.2. Forme de und ce definesc relaiile ntre semnalele de intrare la bornele unei memorii RAM.

Procesul de citire se poate desfura cu mai puine restricii deoarece este un proces "pasiv"
care nu determin schimbri n coninutul memoriei. n cazul citirii trebuie s avem numai "rbdare"
ateptnd ca valoarea coninut n locaia selectat s fie selectat prin intermediul MUX-ului de citire.
Se definete pentru citire timpul de acces, ta, ca fiind timpul necesar propagrii codului adreselor prin
MUX. Propagarea pe cile selectate este oricum mai mic iar datele se presupune ca sunt stabile n
latch-uri n momentul citirii. Structura prezentat permite citirea coninutului memoriei i imediat
dup modificarea coninutului unei locaii, dac se menine aceeai adres. Modificarea coninutului
latch-ului selectat se va propaga la ieire ntr-un timp chiar mai mic dect ta, deoarece este aplicat
intrrilor selectate ale MUX-ului.
Structura de memorie RAM prezentat n aceast seciune reprezint o memorie de 2n locaii,
cuvinte, de un bit. Pentru a realiza o memorie cu 2n cuvinte de m > 1 bii va trebui s adugm m 1 MUX, iar fiecare ieire a DMUX-ului s asigure ceasul pentru cte m din cele 2n x m celule de
memorare. Fiecare grup de m Satch-uri va primi pe intrrile de date un cuvnt de m bii.
//Memoria RAM 8x128
module RAMx128(addr,din,dout,r,w,Cl,CS);
parameter w_lengh=8;
parameter mem_size=128;
parameter addr_size=7; //pentru marimea basului de adresa
input [addr_size-1:0]addr;
input [w_lengh-1:0]din;
output [w_lengh-1:0]dout;
input w,r,Cl,CS;
reg[w_lengh-1:0]MEM[0:mem_size-1];
reg[w_lengh-1:0]dout;
always@(addr or din or r or w)
begin
if(CS==1)
if((r==1)&&(w==0))
dout<=MEM[addr];
if(CS==0)
dout<=8'bx;
end
always@(negedge Cl)
begin
if(CS==1)
if((w==1)&&(r==0))
MEM[addr]<=din;
end
endmodule

Rezultatul obtinut:

Fig.3.Semnalele vizualizate in modelsim

Fig.4.Rezultatul simularii

Fig.5.Schema circuitului RAM8x128


//Memoria RAM8x256
module RAM8x256(addr,din,dout,r,w,Cl,CS);
parameter w_lengh=8;
parameter mem_size=256;
parameter addr_size=8; //pentru marimea basului de adresa
input [addr_size-1:0]addr;
input [w_lengh-1:0]din;
output [w_lengh-1:0]dout;
input w,r,Cl,CS;
reg[w_lengh-1:0]MEM[0:mem_size-1];
reg[w_lengh-1:0]dout;
always@(addr or din or r or w)
begin
if(CS==1)
if((r==1)&&(w==0))
dout<=MEM[addr];
if(CS==0)
dout<=8'bx;
end
always@(negedge Cl)
begin
if(CS==1)
if((w==1)&&(r==0))
MEM[addr]<=din;
end
endmodule

Rezultatul obtinut:

Fig.6.Semnalele vizualizate in modelsim

Fig.7.Rezultatele dupa compilare


//Memoria RAM8x1024
module RAM8x1024(addr,din,dout,r,w,Cl,CS);
parameter w_lengh=8;
parameter mem_size=1024;
parameter addr_size=9; //pentru marimea basului de adresa
input [addr_size-1:0]addr;
input [w_lengh-1:0]din;
output [w_lengh-1:0]dout;
input w,r,Cl,CS;
reg[w_lengh-1:0]MEM[0:mem_size-1];
reg[w_lengh-1:0]dout;
always@(addr or din or r or w)
begin
if(CS==1)
if((r==1)&&(w==0))
dout<=MEM[addr];
if(CS==0)
dout<=8'bx;
end
always@(negedge Cl)
begin
if(CS==1)
if((w==1)&&(r==0))
MEM[addr]<=din;
end
endmodule

Rezultaele obtinute:

Fig.8.Semlalele vizualizate in modelsim

//Memoria RAM extinsia paralel


module RAM16x128(addr,din,dout,r,w,Cl,CS);
input[15:0]din;
output[15:0]dout;
input[6:0]addr;
input w,r,Cl,CS;
wire w1;
RAM Q0(addr,din[7:0],dout[7:0],r,w,Cl,w1);
RAM Q1(addr,din[15:8],dout[15:8],w1,r,w,CS);
endmodule

Rezultatele obtinute:

Fig.9.Semnalele vizualizate in modelsim

Fig.10.Rezultatul simularii

Fig.11.Schema circuitului RAM_Ext_paralel

//Memoria RAM extinsie serie


module RAM_Ext(addr,din,dout,r,w,Cl,CS);
parameter addr_size = 7;
parameter w_lengh = 8;
parameter mem_size = 128;
input[addr_size-1:0]addr;
input[w_lengh-1:0]din;
input r,w,Cl,CS;
output[w_lengh-1:0]dout;
reg[w_lengh-1:0]dout;
reg[1:0]dm,cm ;
RAM Modul(addr[6:0],din[3:0],dout[3:0],r,w,Cl,dm[0]);
RAM Modul1(addr[6:0],din[7:4],dout[7:4],r,w,Cl,dm[1]);
always@(CS or addr[addr_size-1:0])
begin
case(addr[addr_size-1:0])
1: dm[1]=0;
0: dm[0]=0;
endcase
end
endmodule

Rezultatul obtinut:

Fig.12.Semnalele vizualizate in modelsim

Fig.13.Rezultatul simularii

Fig.14.Schema circuitului MEM_Ext_Serie

Concluzii: In aceasta lucrare de laborator am studiat memoria RAM si descrierea ai in


ModelSim.Am creat TB si am vizualizat cum lucreaza RAM8x128 , RAM8x256 , RAM8x1024.
Amcreat schemele in Pecision si am aflat cum lucreaza o memorie RAM.

Das könnte Ihnen auch gefallen