Sunteți pe pagina 1din 16

Laborator 3 CNI Circuite de memorare RAM i ROM i sisteme cu circuite de memorare Coninut laborator: 1. Obiectivul lucrrii. 2.

Noiuni teoretice: a. Aspecte generale despre circuitele de memorie b. Circuite de memorare construite n laborator c. Proiectarea sistemelor cu memorii 3. Cerine laborator. 4. Tem. Obiectivul lucrrii: n acest laborator sunt prezentate n primul rnd modurile n care sunt comandate circuitele de memorie. Aa cum s-a prezentat i n laboratorul anterior, alturi de semnalele de adresare i cele de date sunt necesare semnale de comand scriere i citire. Pe lng acestea mai este necesar i un semnal de validare a funcionrii ntregului circuit necesar conectrii acestuia pe o magistral comun. Partea a doua a laboratorului este dedicat conectrii mai multor circuite de memorare pe o magistrala comun. Schemele construite aici sunt exemple practice, la scar redus, de sisteme cu circuite de memorare. Laboratorul servete la aprofundarea noiunilor legate de lucru cu circuitele de memorie i de modul n care acestea pot fi integrate n sistem.

Noiuni teoretice: A. Aspecte generale despre circuitele de memorie: Circuitele de memorare se mpart n dou mari clase : memorii ROM i memorii RAM. Denumirea de ROM provine din limba englez Read Only Memory memorie numai pentru citit i se refer la circuitele care n regim normal de funcionare pot s fie numai citite. Denumirea de RAM provine din Random Acces Memory memorie cu acces aleator i se refer la circuitele care n regim normal de funcionare pot fi att citite ct i scrise. Trsturi comune celor 2 memorii: - liniile de selecie sunt denumite linii de adres. Notaia acestor linii este generalizat, A0,,An-1, A0-linia cel mai puin semnificativ; - informaiile ce sunt enumerate se preiau din circuitele de memorie, sunt transferate prin intermediul liniilor de date. Majoritatea circuitelor de memorie (RAM) au liniile pentru datele de intrare comune cu datele de ieire. Celula elementar ntr-o locaie de memorie se numete bit. Majoritatea circuitelor de memorie, n momentul aplicrii unei informaii de adres selecteaz simultan mai multe celule elementare de memorie. Acestea formeaz o locaie de memorie. Practic, circuitele de memorie realizate de diferite firme productoare conin valori de tipul 1,2,4,8,12,16,32 bii n codul unei locaii de memorie. Pentru cteva combinaii de bii ntr-o locaie de memorie exist denumiri specifice: 8 bii=1 octet=1 byte; 16 bii=1 word; 4 bii=1 nibble. Coninutul unei locaii

de memorie se transfer ctre exteriorul circuitului de memorie prin intermediul liniilor de comand acestea fiind notate D0, D1, . D0=bitul cel mai puin semnificativ. Se numete organizarea unui circuit de memorie produsul neefectuat ntre numrul locaiilor de memorie i dimensiunea n bii a unei locaii. Numrul locaiilor de memorie e dat de 2nr. linii adres pentru circuitul respectiv. De exemplu: 210 locaii de memorie=1024=1K; 220=1M; 230=1G. O memorie cu 14 linii de adres i 8 bii ntr-o locaie :A0,,A13 - linii de date; 10 D0,..,D7 linii de adres; 12148=24 2 { 8=2k8=16k8=16 K 0 octet .
K

Se numete capacitatea unui circuit de memorie i se exprim n bii produsul efectuat ntre numrul locaiilor de memorie i numrul de bii aflai ntr-o locaie. 16K8 =128Kb 1) Circuite de memorare de tip ROM: Se pot clasifica n mai multe categorii: - OTP (one time programing) - EPROM (erasable ROM),care se pot terge, doar de tip unipolar, prezint fereastr de quar; - EEPROM (electrically erasable PROM), cu acces paralel=flash, admit 1 mil. 10 mil. ciclii scriere-citire. La circuitele ROM bipolare arderea fuzibil pentru o celul de memorie realizeaz procesul de memorare. La o memorie ROM unipolar memorarea se realizeaz prin stocarea sarcinii electrice ntr-o gril fix i una flotant a unui tranzistor MOS. Descrcarea acestei sarcini electrice are loc prin expunerea pastilei de siliciu la raze ultraviolete. La o memorie ROM-OTP aceasta nu e posibil deoarece memoria nu dispune de o fereastr de quartz pentru expunere. Un circuit ROM conine urmtoarele linii de semnal: - linii de adrese numrul lor e dat de organizarea circuitului - linii de date ntotdeauna un circuit conine: - linia CE (cip enable); - OE (output enable). Etajele de ieire la o memorie ROM sunt de tip tristate. La memoriile ROM bipolare putem avea ieiri: - open colector; - tristate. Intrarea CE la activare permite adresarea i selecia locaiei de memorie cu care se lucreaz. Semnalul OE la activare deschide etajele de ieire cu liniile de date ale circuitului.

Fig.1. Formele de und pentru accesarea unei memorii 2) Circuite de memorare de tip RAM: Memoriile RAM se mpart n urmtoarele categorii: statice SRAM, dinamice DRAM. Pentru o memorie RAM-static celula de memorare e clasicul latch.

Fig.2. Celula de memorare SRAM Pentru o memorie RAM-dinamic:

Fig.3. Celula de memorare DRAM Capacitile dren-surs i gril-surs vor reprezenta mijlocul de stocare, sub forma unor cmpuri electrice. La memoria DRAM capacitatea parazit care servete n cadrul procesului de memorare auxiliar unui tranzistor unipolar are tendina ca foarte repede sa-i piard sarcina electric stocat ntre armturi. Din acest motiv e nevoie ca la intervale relativ mici s se intervin asupra structurii prin remprosptarea sarcinii electrice stocate. Procesul poart denumirea de refresh i are loc printr-o operaie de citire. Memoriile dinamice au avantajele unor capaciti mari de memorare integrate pe aceeai capsule de siliciu la consumuri energetice relativ reduse. Costul unei memorii DRAM e mult mai mic dect al unei memorii statice RAM avnd aceeai capacitate. B. Circuite de memorare construite n laborator Pentru exemplificare n acest laborator s-au realizat mai multe circuite de memorare. n primul rnd este vorba de o memorie SRAM cu organizarea 16x8.

U3
adresa(3:0) data(7:0) csbar oebar webar

ram16x8

Fig.4.RAM 16x8 Aceast memorie, realizat n cadrul laboratorului, are urmtoarele caracteristici: Memoria ram16x8 Are dimensiunea de 16 octei. Intrri: Adresa(3:0) intrari adrese 4 bii; Cs_bar intrare pentru selectarea circuit 1 bit; Oe_bar intrare pentru selectarea ieirii 1 bit; We_bar intrare pentru validarea scrierii 1 bit. Intrri-ieiri: Data (7:0) intrare-ieire de date 8 bii. n limbajul VHDL, descrierea unei memorii RAM 16x8se face ca n listingul de mai jos: library IEEE; use IEEE.STD_LOGIC_1164.all; entity ram16x8 is port( csbar : in STD_LOGIC; oebar : in STD_LOGIC; webar : in STD_LOGIC; adresa : in STD_LOGIC_VECTOR(3 downto 0); data : inout STD_LOGIC_VECTOR(7 downto 0) ); end ram16x8; architecture ram16x8_a of ram16x8 is type memorie is array (0 to 15) of std_logic_vector(7 downto 0); begin process(csbar,oebar,webar,adresa) variable data_in : memorie; variable index : integer; begin if csbar = '0' then index := 0;

for i in 0 to 3 loop if adresa(i)='1' then index := index + 2**i; end if; end loop; if oebar = '0' then data <= data_in(index); else if webar = '0' then data_in(index) := data; else data <= "ZZZZZZZZ"; end if; end if; else data <= "ZZZZZZZZ"; end if; end process; end ram16x8_a; Semnalele de comand (cs_bar, oe_bar i we_bar) sunt semnale active 0 logic. Deci, cnd aceste semnale sunt n 1 logic nseamn c funciile comandate sunt dezactivate. Secvena de scriere pentru acest circuit este urmtoarea:

Fig.5. Secvena de semnale pentru operaia de scriere Pentru citire secvena este urmtoarea:

Fig.6. Secvena de semnale pentru operaia de citire Ca la orice circuit de memorare secvena de scriere, ca i cea de citire, ncepe cu transmiterea adresei locaiei. La secvena de scriere este transmis i data care se dorete scris. Urmeaz apoi trecerea n 0 a semnalului de selectarea a circuitului apoi comanda operaiei care se dorete s se efectueze. Aa cum se observ i n formele de und prezentate n figurile de mai sus, fiecare din paii prezentai mai sus necesit un anumit interval de timp. Pentru circuitele ntlnite n practic acesta are valori clar precizate n formele de und din datele de catalog. Justificarea ordinii aplicrii semnalelor i a necesitii timpilor a fost fcut n laboratorul anterior! Un alt circuit construit i utilizat n acest laborator este o memorie ROM cu organizarea 256x8. Circuitul prezentat n figura de mai jos are urmtoarele caracteristici: U4
adrese(7:0) date(7:0) cs oe

rom256x8

Fig.7. ROM 256x8 Memoria ram16x8 Are dimensiunea de 16 octei. Intrri: Adrese(7:0) intrari adrese 8 bii; Cs intrare pentru selectarea circuit 1 bit; Oe intrare pentru selectarea ieirii 1 bit; Intrri-ieiri: Date (7:0) ieire de date 8 bii. Descrierea memoriei ROM echivaleaz cu cea a unui multiplexor de date i a unui buffer tree state, aa cum este prezentat n listingul de mai jos:

library IEEE; use IEEE.STD_LOGIC_1164.all; entity rom256x8 is port( cs : in STD_LOGIC; oe : in STD_LOGIC; adrese : in STD_LOGIC_VECTOR(7 downto 0); date : out STD_LOGIC_VECTOR(7 downto 0) ); end rom256x8; architecture rom256x8_a of rom256x8 is signal data_in : std_logic_vector(7 downto 0); begin with adrese select data_in <= --aici urmeaza continutul memoriei ROM --data adresa X"78" when X"00", X"20" when X"01", X"FF" when others; process(cs,oe,data_in) begin if cs='0' and oe = '0' then date <= data_in; else date <= "ZZZZZZZZ"; end if; end process; end rom256x8_a; Memoria ROM este privit aici ca un circuit care permite numai citiri fr scrieri. Acesta este modul de operare normal al memoriei ROM. n practic, scrierea unei memorii din clasa ROM se face ntr-o operaie denumit programare. Deci programarea este un regim separat de cel de operare normal. Aceasta deoarece programarea presupunea la circuitele mai vechi prezena unor tensiuni suplimentare de programare. La memoriile ROM noi, cum ar fi cele din clasa FLASH sau EEPROM, regimul de programare presupune aplicarea unor secvene speciale de scriere, avnd ns aceleai tensiuni de operare ca n regimul de operare normal (numai citire).

De orice tip ar fi ele, memoriile din clasa ROM au dou regimuri distincte de funcionare: regimul normal numai citire i regimul de programare scriere. n acest laborator se va lucra cu o memorie ROM cu organizarea 256x8 numai n regimul normal de operare, memoria avnd deja scris n ea anumite date. n laboratorul urmtor, prin intermediul unei aplicaii, se va realiza i regimul de programare. n regimul normal de operare, secvena parcurs este numai una de citire, similar cu citirea de la memoriile din clasa SRAM. ntr-un sistem pe care ruleaz un program, constantele declarate n program sunt stocate ntr-o memorie nevolatil, din clasa ROM iar variabilele ntr-o memorie din clasa RAM. Aa cum o s se vad n laboratoarele urmtoare nsi secvena de program constituie de fapt o informaie care trebuie stocat ntr-o memorie nevolatil! C. Proiectarea sistemelor cu memorii Un sistem de calcul, alturi de microprocesor, trebuie s aib i circuite de memorare, pentru stocarea variabilelor, a constantelor i a secvenelor de program. Arhitectura unui sistem de calcul tipic este prezentat n figura de mai jos.

Memorie RAM

Variabile

Microprocesor
Magistrala adrese si date memorii

Memorie ROM

Constante, Secvente de program

Magistrala circuite de intrare iesire

Circuite periferice

Interfete cu utilizatorul

Fig.8. Schema bloc a unui sistem cu microprocesor Accesarea memoriilor RAM, ROM dar i a circuitelor periferice se face prin intermediul unor adrese. La nivelul sistemului cu microprocesor se poate defini noiunea de spaiu de adresare, care const n totalitatea locaiilor care le poate adresa. Pentru memoria din figura 4 spaiul de adresare este de la 00h pn la 0fh deci un total de 16 locaii distincte.

n cele ce urmeaz se va pune problema, pentru exemplificare, a proiectrii unei memorii cu organizarea de 32x8. Memoria rezultat va trebui s ocupe un spaiu de adresare pentru 32 locaii ncepnd cu adresa 00h. Problema 1. Construirea unei memorii SRAM 32x8 folosind memorii SRAM16x8 i plasarea ei ntr-un spaiu de adresare ncepnd cu adresa 0. n cazul n care se dorete construirea unei memorii cu dimensiunea de 32 locaii, spaiul de adresare va fi, n mod evident cuprins ntre adresele 00h i 1fh. Dimensiunea spaiului de adresare este ntotdeauna multiplu de 2. Construcia memoriei 32x8 pornete de la un calcul referitor la numrul de circuite de memorie 16x8 utilizate. Aici avem: 32 x8 = 2 x1 = 2 circuite . 16 x8 Deci sunt necesare dou circuite de memorie 16x8 pentru construirea unei memorii 32x8. Pasul urmtor l constituie construirea spaiului de adresare. Fiind vorba de o memorie de 32 de locaii sunt necesari 5 bii de adres care s fie folosii. Spaiul de adresare trebuie s fie unul continuu i trebuie evitat adresarea dual. Adresa de nceput este 00h. Deci harta de adrese va fi urmtoarea: 1 1 1 1 A4 A3 A2 A1 A0 Hexa Circuit 0 0 0 0 0 00h RAM1 0 1 1 1 1 0fh 1 0 0 0 0 10h RAM2 1 1 1 1 1 11h Cel de-al 4-lea bit de adrese (A4) va fi folosit pentru selectarea circuitului de memorie prin comandarea semnalului de selecie circuit CS_BAR. Pentru construirea unei memorii de 32x8 folosind memorii 16x8 se folosete o schem prin care sunt selectate separat cele dou memorii, printr-un demultiplexor 1:2 aa cum se vede n figura de mai jos (figura 7). Selecia global este dat de intrarea de activare a circuitului demultiplexor n timp ce intrrile de comand scriere global ca i cea de comand citire sunt conectate la intrrile de comand scriere i citire ale memoriilor. Magistrala de date poate fi comun, deoarece la un moment dat este activat un singur circuit.

U2 adr(3:0) U1 cs_gen adr4


e_bar y(1:0) sel adresa (3:0) data( 7:0)

csel(0) csel(1:0)

csbar oebar webar

ram16x8 U3
adresa (3:0) data( 7:0)

dmux2_1
csel(1)

csbar oebar webar

oe_gen we_gen

date(7:0)

ram16x8 Fig.9. Memoria 32x8 realizat din memorii 16x8

Formele de und rezultate n urma simulrii circuitului sunt prezentate n figura de mai jos.

Fig.10. Formele de und la scrierea i citirea din circuitul de memorie 32x8 proiectat Spaiul de adresare pentru un sistem de calcul este unul continuu i ncepe, n mod normal, de la adresa 0. n acelai spaiu de adresare se afl, de regul, mai multe circuite de memorare, unele chiar de mai multe tipuri. Problema 2. Construirea unui circuit cu memorii ROM i RAM i plasarea acestuia ntrun spaiu de adresare continuu ncepnd cu adresa 0. n cele ce urmeaz se cere realizarea unui circuit, accesat de ctre un microprocesor, care s conin urmtoarele: - o memorie ROM cu organizarea 256x8 plasat ncepnd cu adresa 0000h; - o memorie SRAM cu organizarea 32x8, alctuit din dou memorii SRAM cu organizarea 16x8; - spaiul de adresare trebuie s fie continuu i s se evite adresarea dual. nainte de a porni la construirea circuitului propriu zis se vor face nite calcule legate de logica de adresare.

Pentru memoria ROM condiiile impuse sunt legate de adresa de nceput. Harta de adrese este urmtoarea: 1 1 A8 A7 A6 A5 A4 A3 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1
adr 8 S1 adr 7 adr 6 adr 5 adr 4 S0 adr 3

1 1 A2 0 1 0 1 0 1
adr 2

1 1 A1 0 1 0 1 0 1
adr 1

1 1 A0 0 1 0 1 0 1
adr 0

Hexa 000h 0ffh 100h 10fh 110h 11fh

Max ROM Max RAM Circuit ROM RAM1 RAM2


Selectii DMUX

Pentru selecia circuitelor se vor folosi doi pini, pinul al 9-lea de adrese i pinul 4. Pinul 4 este utilizat pentru selecia circuitelor RAM1 sau RAM0 atunci cnd memoria ROM nu este selectat (deci pentru adrese mai mari de 0ffh). Schema de conectare ale memoriilor pentru spaiul comun de adrese este prezentat n figura de mai jos.
U1 adr(7:0)
adri(7:0) adri(3:0) csel(0) csel(1)
I1 O I0 adrese(7:0) date(7:0) cs oe

rom256x8 U2
adri(4)
adresa (3:0) data(7:0)

csel(2)

date(7:0)

csbar oebar webar

U4 cs_gen adr8 oe_gen we_gen


e s1 s0 y(3:0)

csel(3:0)

ram16x8 U3
adresa (3:0) data(7:0)

csel(3)

dmux1_4

csbar oebar webar

ram16x8

Fig.11. Conectarea a 3 memorii 2SRAM i una ROM la un spaiu de adrese continuu Formele de und pentru operaii de citire din memoria ROM, scriere i citire din memoria RAM sunt prezentate n figura de mai jos.

Fig.12. Formele de und pentru operaiile de citire ROM, scriere RAM i citire RAM Cerine laborator: 1. Lucrul cu memoria SRAM 16x8 Pentru a lucra cu memoria SRAM se vor efectua urmtoarele operaii: - se va crea un proiect, urmrind etapele prezentate n laboratoarele anterioare; - se va aduga la proiectul existent fiierul memorii.vhd aflat n directorul cu laboratorul curent (selecie Add new file apoi Add existing file fig.13); - se va compila fiierul adugat; - se va crea un fiier schematic gol; - se vor aduga componente din proiect (Units without symbols) - se va construi circuitul alctuit din memoria din figura 4. Se va compila.

Fig.13 Adugarea la un proiect a unui fiier existent se va realiza simularea memoriei cu urmtorii stimuli pe pini: Semnal Adr Oe_bar We_bar Stimul Value Hotkey O Hotkey W Valoare 00001111 0,1 0,1

Cs_bar Date -

Hotkey C Value

0,1 0000000011111111

se vor efectua 3 operaii de scriere i citire de la locaii diferite, innd cont de formele de und din figurile 5 i 6. Not: Atribuirea stimulilor pe semnalul de date se face innd cont de faptul c magistrala Date este una bidirecional. Astfel, atunci cnd se efectueaz operaia de scriere, se va plasa stimulul pe intrare, ca n figura de mai jos. Se va urmri ca plasarea stimulul-ului s fie bifat n list.

Cnd se efectueaz o operaie de citire se va urmri scoaterea stimulului din list i apoi rularea unui pas n simulare. Se va urmri debifarea din list. Se va apsa butonu Close (fr Apply!!)

Se vor efectua cel puin 3 operaii de scriere, n locaii distincte, i 3 operaii de citire ale memoriei pentru punctarea acestui exerciiu. 2. Lucrul cu memoria ROM 256x8 Pentru lucrul cu memoria ROM se vor parcurge paii:

se va aduga la proiectul existent fiierul rom256x8.vhd aflat n directorul cu laboratorul curent (fig.13); se va compila fiierul adugat; se va crea un fiier schematic gol; se vor aduga componente din proiect (Units without symbols) se va construi circuitul alctuit din memoria din figura 7. Se va compila. se va realiza simularea memoriei cu urmtorii stimuli pe pini: Semnal Stimul Valoare Adr Value 0000000011111111 Oe Hotkey O 0,1 Cs Hotkey C 0,1 se vor realiza 3 operaii de citire de la locaii diferite; se va realiza implementarea circuitului pe machet cu urmtoarele conexiuni: Semnal Stimul Valoare Adr SW_DIP0..7 0000000011111111 Oe SW_USER0 0,1 Cs SW_USER1 0,1

3. Construirea circuitului de memorie cu organizarea 32x8 folosind memorii 16x8 Pentru construirea circuitului de memorie cu organizarea 32x8 folosind circuite 16x8 se va proceda n felul urmtor: - Se va crea, urmrind paii descrii n laboratorul anterior, un fiier VHDL, n care se va descrie demultiplexorul pentru selecii.
library IEEE; use IEEE.STD_LOGIC_1164.all; entity dmux2_1 is port( e_bar : in STD_LOGIC; sel : in STD_LOGIC; y : out STD_LOGIC_VECTOR(1 downto 0) ); end dmux2_1; architecture dmux2_1a of dmux2_1 is begin process(e_bar,sel) begin if e_bar = '0' then case sel is when '0' => y <= "10"; when '1' => y <= "01"; when others => y <= "11"; end case; else y <= "11"; end if;

end process; end dmux2_1a;

Se va compila fiierul. Se va crea un fiier schematic i se va introduce schema din figura 9. Se va efectua simularea circuitului plasnd urmtorii stimuli: Semnal Adr4 Adr Oe_gen We_gen Cs_gen Date Stimul Value Value Hotkey O Hotkey W Hotkey C Value Valoare 0,1 00001111 0,1 0,1 0,1 0000000011111111

Se vor realiza 3 operaii de scriere i 3 operaii de citire de la adrese diferite pentru a se evidenia modul n care lucreaz memoria.

4. Construirea circuitului cu memorie ROM i dou memorii RAM, n spaiul de adresare continuu. Pentru construirea circuitului de memorie cu organizarea 32x8 folosind circuite 16x8 se va proceda n felul urmtor: - Se va crea, urmrind paii descrii n laboratorul anterior, un fiier VHDL, n care se va descrie demultiplexorul pentru selecii.
library IEEE; use IEEE.STD_LOGIC_1164.all; entity dmux1_4 is port( e : in STD_LOGIC; s1 : in STD_LOGIC; s0 : in STD_LOGIC; y : out STD_LOGIC_VECTOR(3 downto 0) ); end dmux1_4; architecture dmux1_4_a of dmux1_4 is signal sint : std_logic_vector(1 downto 0); begin sint(0)<=s0; sint(1)<=s1; process(e,sint) begin if e = '0' then case sint is when "00" => y <= "1110";

when "01" => y <= "1101"; when "10" => y <= "1011"; when "11" => y <= "0111"; when others => y <= "1111"; end case; else y <= "1111"; end if; end process; end dmux1_4_a;

Se va compila fiierul. Se va crea un fiier schematic i se va introduce schema din figura 11. Se va efectua simularea circuitului plasnd urmtorii stimuli: Semnal Adr8 Adr Oe_gen We_gen Cs_gen Date Stimul Value Value Hotkey O Hotkey W Hotkey C Value Valoare 0,1 0000000011111111 0,1 0,1 0,1 0000000011111111

Se vor realiza: 6 operaii de citire din spaiul memoriei ROM i 3 operaii de scriere i 3 operaii de citire de la adrese diferite n spaiul memoriilor RAM pentru a se evidenia modul n care lucreaz memoria.

Tema 5. S se proiecteze un circuit de memorie SRAM 64x8 folosind memorii 16x8, urmrind paii de la punctele anterioare. 6. S se realizeze un circuit aflat ntr-un spaiul de adresare cu urmtoarea distribuire: Circuit Adresa nceput SRAM0 16x8 Adresa 00h SRAM1 16x8 Adresa 0fh ROM 256x8 Adresa 100h

Criterii de evaluare: 1 1P 2 2P 3 2P 4 2P 5 3P 6 3P