Sei sulla pagina 1di 35

Memorie

8
Memorie

In questo capitolo verranno illustrate brevemente le varie tipologie di memorie a semiconduttore esistenti (RAM, ROM, volatili, non volatili). Si inizier a trattare in dettaglio le memorie Ram statiche e dinamiche; si illustreranno i vari cicli di lettura e scrittura ed alcuni data-sheets di prodotti commerciali. Poi si passer a descrivere le memorie non volatili, categoria a cui appartengono le ROM, EPROM, E2PROM e le FLASH. Si descriver la cella base programmabile e cancellabile elettricamente.

8.1
8.1.1

CLASSIFICAZIONE DELLE MEMORIE


MEMORIE AD ACCESSO CASUALE E MEMORIE SEQUENZIALI

Una qualunque elettronica a microprocessore richiede memoria per immagazzinare sia i dati che le istruzioni dei programmi. Esistono vari tipi di memorie, che utilizzano differenti tecnologie costruttive e sono caratterizzate da tempi di accesso molto diversi tra loro (tipicamente di qualche ordine di grandezza). In generale, le memorie per computer sono suddivise in due categorie: la memoria principale e la memoria di massa. La prima solitamente quella accessibile in maniera pi rapida e dalla quale il sistema acquisisce le istruzioni di programma. Normalmente, essa opera in modalit definita ad accesso
- 235 -

Fondamenti di Elettronica

casuale, che in seguito verr indicata col termine originale inglese RAM-Random Access Memory. Una memoria RAM infatti caratterizzata da questa propriet: il tempo necessario per immagazzinare (scrivere) linformazione desiderata e per recuperarla (leggerla) non dipende dalla posizione fisica della locazione allinterno della matrice. Le memorie ad accesso casuale vengono a confrontarsi con le memorie di massa sequenziali (dette anche seriali), come i dischi ed i nastri magnetici, dove le informazioni sono disponibili esclusivamente nello stesso ordine in cui furono inserite in origine. Per questo motivo, nelle memorie seriali il tempo necessario per accedere a un particolare dato dipende dalla sua locazione in memoria, e esso generalmente pi lungo di quello ottenibile con una RAM. In un comune computer le memorie sequenziali sono utilizzate esclusivamente come memorie di massa. 8.1.2 MEMORIE DI LETTURA/SCRITTURA E DI SOLA LETTURA Unulteriore importante classificazione delle memorie consiste nella distinzione tra memorie di lettura/scrittura (read/write-R/W memory) e di sola lettura (read only memory, ROM). Le prime permettono di immagazzinare e leggere dati a velocit confrontabili tra loro, le seconde o non sono riscrivibili del tutto (OTP, One-Time Programmable) oppure possono esserlo (EPROM, EEPROM e FLASH) mediante tecniche particolari descritte in questo capitolo. In compenso, queste ultime sono generalmente pi veloci delle R/W, e vengono impiegate, ad esempio, per immettervi il sistema operativo di un microprocessore, come avviene nel caso del Bios di una scheda madre per PC. 8.1.3 MEMORIE VOLATILI E NON VOLATILI Lultima, ma non meno importante, distinzione riguarda le memorie volatili e non. Una memoria si dice volatile se, in assenza di alimentazione esterna (o di batterie), perde linformazione in essa contenuta. Tipicamente tutte le RAM sono volatili (a meno di avere una batteria tampone). Una memoria si dice invece non volatile se conserva sempre linformazione in essa contenuta, anche in assenza di alimentazione. 8.1.4 MEMORIE RAM STATICHE E RAM DINAMICHE Le memorie RAM statiche sono costituite da celle elementari piuttosto voluminose: ciascun bit memorizzato mediante 4 o 6 transistori MOS (come si vedr in Fig. 8.3) che, realizzando un flip-flop, mantengono il dato binario fino a quando non viene tolta lalimentazione. Invece, le memorie RAM dinamiche consentono una maggior densit dintegrazione su chip perch ciascun bit memorizzato in una cella molto semplice, composta da un solo transistore ed un condensatore (come si vedr in Fig. 8.10): purtroppo il dato binario rischia di perdersi a causa della scarica del condensatore. Per questo motivo, una memoria dinamica, in genere, necessita di un aggiornamento (refresh) periodico dei dati memorizzati, allo scopo di leggere la tensione ai capi del condensatore per poi ricaricare la carica accumulata in esso. Tale refresh si realizza mediante scansione periodica di tutti gli indirizzi di riga della matrice, almeno una volta ogni millisecondo. Nellindustria microelettronica mondiale, i chip di memoria rappresentano lo stato dellarte dei livelli raggiunti nellimpacchettamento (packing) e nella riduzione generale dingombro su chip, entrambi ottenibili con le pi sofisticate tecnologie a disposizione. proprio su questi punti (in aggiunta a problematiche di affidabilit nel tempo e di bassi consumi energetici) che si basa la sfida tra i maggiori Produttori di memorie del mondo. Basti pensare che, mentre nel 1970 un chip conteneva 1kbit di informazione, nel 2001 sono gi in commercio chip da 256Mbit e tra breve sar possibile arrivare al Gbit.
- 236 -

Memorie

Fig. 8.1:

Struttura schematica di una memoria ROM.

8.1.5

ARCHITETTURA DI UNA MEMORIA

Per quanto concerne lorganizzazione generale di una memoria, si riporta in Fig. 8.1 una semplice architettura di una ROM prototipo (in cui presente un solo decoder). Gli N bit in ingresso rappresentano i bit di indirizzamento (address), ossia quelli necessari per selezionare una determinata riga nella matrice tra le 2N disponibili. Invece M rappresenta il numero di bit in uscita, ossia i dati veri e propri che verranno letti dal dispositivo che segue; il loro valore dipende dallo stato in cui si trova la cella di memoria elementare in quellistante, nonch dal tipo di logica presente a valle. Ad esempio se N=8 e M=4 allora si ha una memoria da 2564bit; M=4 detto nibble, M=8 byte mentre M=16 word. La cella di memoria elementare lelemento caratterizzante di una tipologia particolare di memorie ed grazie alla sua struttura che si ottengono prestazioni diverse in termini di tempo daccesso, necessit di un refresh periodico, dissipazione di potenza statica e dinamica, capacit di integrazione. Per una memoria ROM, i punti dincrocio tra una riga e una colonna rappresentano delle connessioni da programmare. Queste possono essere dei semplici collegamenti che lutente pu o meno bruciare (fusable link) a seconda se vuole programmare uno 0 o un 1 nel bit corrispondente. 8.1.6 TEMPORIZZAZIONI Quando si parla di memorie, sono molto importanti i parametri di timing (le temporizzazioni), nonch la massima frequenza di clock che consente al dispositivo di funzionare correttamente. quindi opportuno chiarire fin da subito il significato dei simboli usati nei diagrammi di timing, ricorrendo alla Fig. 8.2. Solitamente gli Address sono indicati con A, mentre i dati (che possono essere sia uscite che ingressi, a seconda che ci si trovi in lettura o in scrittura) vengono indicati con la lettera Q. La notazione V identifica un valore valido mentre un livello che sta cambiando o pu cambiare in genere considerato non conosciuto ed indicato con X. Un comando attivo basso indicato con una barra, ad esempio /CE o CE . Un ingresso che ha una doppia funzione fornito di una barra diagonale che separa le due scelte, ad esempio RD / WR per read (se alto) o write (se basso).
- 237 -

Fondamenti di Elettronica

Fig. 8.2:

Diagrammi di timing: significato dei simboli grafici.

8.2

MEMORIE RAM STATICHE

Lelemento base delle memorie SRAM un bistabile (flip-flop). Lo scopo quello di memorizzare un livello logico 1 oppure 0 in modo permanente, ossia fintantoch il dispositivo rimane alimentato e senza il problema di vedere svanire il dato. A seconda della tecnologia disponibile (NMOS, CMOS, bipolare) la topologia della cella pu cambiare leggermente. In Fig. 8.3, a sinistra, rappresentata la tipica cella CMOS. Si ha un bistabile composto da quattro transistori, ai quali si accede (per scrivere o leggere) tramite altri due transistori, T1 e T2, che connettono la cella alla bit-line D (verticale) quando la word-line W (orizzontale) viene abilitata dal decoder di riga e portata al potenziale VDD. Lingombro piuttosto elevato, come mostrato alla destra di Fig. 8.3: nel caso di una cella di 10m10m, un chip di silicio di 5mm6mm conterrebbe solamente circa 256kbit (pari a 32kbyte).

Fig. 8.3:

Singola cella di memoria RAM statica CMOS (sinistra) esuo layout su silicio (destra); lingombro verticale inferiore ai 10m. - 238 -

Memorie

8.2.1

CICLO DI LETTURA

Per lettura di una memoria si intende loperazione che consiste nellacquisire linformazione in essa contenuta e localizzata in un certo indirizzo. estremamente importante che il valore applicato al bus di indirizzo A sia stabile per un certo tempo, indicato con tAVQV in Fig. 8.4, durante il quale il dato in uscita Q si trova in uno stato sconosciuto. Una volta trascorso tale periodo di tempo, il dato in uscita sar ritenuto valido. Non appena lindirizzo cambier (perch ad esempio si vorr leggere unaltra cella), il dato, suo malgrado, rimarr disponibile in uscita ancora per un periodo pari a tAXQX. Per il significato dei tempi di lettura dei cicli 1 e 2 si veda la Fig. 8.6. Il ciclo di lettura pu essere effettuato in free-running, ossia ammettendo che i dati in uscita possano essere non corretti in certi istanti ma, comunque, sempre presenti. Ci avviene tipicamente quando la RAM usata in un sistema real-time di acquisizione o riproduzione di un segnale campionato. Un altro modo di procedere alla lettura della memoria consiste nel porre luscita in three-state (alta impedenza) fintantoch non viene abilitato il comando di output enable, attivo basso in Fig. 8.5. Il bus dati della RAM esce cos dallo stato three-state solo durante il ciclo di lettura. Si ricorre a questa modalit di funzionamento quando la RAM condivide il bus dati con altre memorie (di dati e/o programma e/o look-up tables) o periferiche come porte seriali, parallele, DMA, convertitori ADC, etc. Inevitabilmente, in questa modalit, i tempi di lettura si allungano. Le condizioni operative vengono spesso specificate nei data sheet (Fig. 8.6) insieme a tutte le specifiche dinamiche. Si osservi che il ciclo di lettura (tAVAV) pi lungo del tempo di accesso (tAVQV) per permettere alla circuiteria interna di prepararsi al ciclo successivo. Pertanto la fmax=(1/tAVAV) inferiore a quella teorica, pari a 1/tAVQV.

Fig. 8.4:

Ciclo di lettura in free-running.

Fig. 8.5:

Ciclo di lettura pilotato dal comando output-enable. - 239 -

Fondamenti di Elettronica

Fig. 8.6:

Tempi di lettura caratteristici di una memoria.

8.2.2

CICLO DI SCRITTURA

Con scrittura si intende il processo di immagazzinamento del bit di informazione nella cella elementare di memoria; nel corso di questa operazione, luscita viene posta per convenienza ad alta impedenza. Come mostrato in Fig. 8.7, laccesso al dato richiesto pu essere controllato mediante labilitazione del segnale di enable (attivo basso), pur di avere posto in precedenza il controllo di write a livello attivo (basso).

Fig. 8.7:

Ciclo di scrittura pilotato dal comando chip-enable. - 240 -

Memorie

Fig. 8.8:

Ciclo di scrittura pilotato dal comando write-enable.

In alternativa, possibile comandare loperazione tramite il segnale di controllo Read/Write (Fig. 8.8); il comando chip enable si limita a consentire che loperazione avvenga. Si noti che, nonostante siano indicate per comodit due tracce per il DATA IN ed il DATA OUT, in realt nel circuito integrato esiste un solo bus dati bidirezionale. Per il significato dei tempi caratteristici di scrittura relativi ai cicli 1 e 2 si veda il datasheet di Fig. 8.9 fornisce i valori (minimo, massimo o tipico, a seconda) dei tempi caratteristici dei cicli di scrittura.

Fig. 8.9:

Tempi di scrittura caratteristici di una memoria. - 241 -

Fondamenti di Elettronica

Fig. 8.10:

Cella elementare di una DRAM (sinistra); CM la capacit di memoria, mentre CL quella parassita. Sezione trasversale dela cella (destra); le dimensioni totali sono inferiori ad 1m.

8.3

MEMORIE RAM DINAMICHE

La cella base della RAM dinamica pi semplice di quella caratteristica della memoria statica in quanto consiste in un solo condensatore di memoria CM e di un MOS di accesso (Fig. 8.10). Il risparmio in termini di area occupata notevole, come dimostra anche la sezione trasversale riportate nella medesima figura; ad esempio passando dalle dimensioni 10m10m di una cella statica alle 1m1m della dinamica si riescono ad ottenere delle memorie con densit 100 volte superiore (un chip da 5mm6mm conterr circa 32Mbit). Proprio a causa delle dimensioni elevate della matrice di memoria ottenibile, per ridurre il numero di piedini necessario multiplexare gli indirizzi di riga e quelli di colonna sugli stessi pin che giungono dallesterno del circuito integrato. I comandi per multiplexare gli address di riga e di colonna sono chiamati /RAS (Row Address Strobe) e /CAS (Column Address Strobe), entrambi attivi bassi.
____ RAS Row decoder Address addressed memory cell

BIT lines

Latch

WORD lines

Sense amplifiers Column decoder

Output buffers

Din Dout

Latch

__ R/W __ CE

____ CAS
Fig. 8.11:

Struttura generale di una DRAM. - 242 -

Memorie

Si osservi come in Fig. 8.11 per ogni bit-line (verticale) vi sia un sense-amplifier, ossia un dispositivo che legge il contenuto della cella (la carica del corrispondente condensatore) per fornire in uscita un segnale digitale di tipo full-swing (tipicamente da 0V a Vdd) o scrive il contenuto della cella, a seconda del comando applicato sul piedino R/W. Il bit in ingresso applicato sul pin Din, mentre il bit in uscita disponibile sul pin Dout. Nel caso di memoria organizzata a byte, la matrice di memoria semplicemente ottuplicata, lasciando inalterate le Word lines, mentre moltiplicando per otto le Bit line, i Sense Amplifier e gli Output Buffer. Il problema principale delle celle di memoria DRAM si presenta in fase di lettura. Infatti la carica immagazzinata in CM deve essere travasata sulla bit-line, che ha una capacit CL assai pi grande (tipicamente si hanno valori intorno ai 20 fF per CM mentre per CL si arriva anche al pF). Pertanto la variazione di tensione che si registra sulla bit-line estremamente piccola: ad esempio, dalluguaglianza del travaso di carica (CLVL=CMVM) si ottiene VL=(CMVM)/CL=2%VM. Con VM di circa 5V, si ha quindi un valore di VL pari soltanto a un centinaio di mV; per questo motivo sono necessari sense-amplifiers di colonna estremamente sensibili. Nel panorama delle DRAM esistono oggigiorno diversificazioni che il caso di citare, soprattutto per fornire unidea della vasta gamma di prodotti a disposizione del progettista. Queste sottoclassi delle DRAM sono le: Fast Page Mode; Extended Data Out (EDO DRAM); Synchronous Dynamic Ram (SDRAM); Prima di addentrarci nei principi di funzionamento di queste tre sottoclassi, vediamo innanzitutto come funziona la DRAM classica. 8.3.1 DRAM CLASSICA Essa possiede i comandi di /RAS e /CAS per il multiplexing degli indirizzi di riga e colonna, ed dotata delle abilitazioni di write-enable (/WE), e output-enable (/OE), come la SRAM. Un tipico diagramma di timing per la lettura presentato in Fig. 8.12.

Fig. 8.12:

Ciclo di lettura di una memoria DRAM classica. - 243 -

Fondamenti di Elettronica

Lindirizzo di riga deve essere stabile sul bus per almeno un tempo pari a tASR prima di attivare il RAS, per una durata tRAH, pena la mancata memorizzazione dellindirizzo di riga allinterno della DRAM. Il comando /RAS rimarr attivo per tutto il tempo tRAS . Dopo un tempo tASC dalla commutazione del RAS, possibile inviare il nuovo indirizzo, quello di colonna, che deve essere mantenuto stabile per tCAH dopo che il segnale /CAS diventato attivo. Ovviamente il /WE deve essere posto alto (disattivo perch siamo in lettura) almeno prima della commutazione del CAS e deve rimanere in questo stato per un tempo tRCH oltre linnalzamento del /CAS stesso. La Fig. 8.13 illustra il significato delle varie abbreviazioni utilizzate. Il segnale /OE posto basso in modo tale che la DRAM possa mettere i dati sulluscita dopo un lasso di tempo che dipende dallistante in cui stato fornito lindirizzo di colonna (tAA) e sono stati attivati i comandi RAS (tRAC), CAS (tCAC) ed OE (tOEA). Il ciclo di lettura viene completato quando /RAS e /CAS ritornano nel loro stato inattivo (tCRP, tRP). Ci che caratterizza le prestazioni di una DRAM sono pertanto i tempi tRAC (necessario alla lettura di una data cella; sui data-sheet riportato il valore massimo, cio il pi sfortunato), tCAC (tempo richiesto per avere i dati in uscita, riferito alla commutazione del CAS) e soprattutto il tRC, tempo minimo necessario per compiere lintero ciclo di accesso casuale alla memoria. Questultimo dato dalla somma di tre termini, ossia: tRC = tRAS + tRP (tempo di precarica) + tempi di commutazione Per migliorare le prestazioni del sistema, stato necessario implementare cicli di accesso alla memoria che realizzassero pi letture o scritture consecutive del dispositivo. Ci stato reso possibile prima dalle memorie Fast Page Mode, poi dalle EDO ed ora dalle SDRAM. Questi dispositivi hanno la particolarit di poter accedere a pi celle di memoria in una pagina senza dover iniziare un nuovo ciclo. Una pagina definita come quel gruppo di celle di memoria che hanno in comune lindirizzo di riga.

Fig. 8.13:

Significato delle abbreviazioni delle durate temporali dei cicli di lettura e scrittura. - 244 -

Memorie

Fig. 8.14:

Ciclo di lettura relativo a una Fast Page Mode DRAM.

Fig. 8.15:

Tempi caratteristici di una memoria Fast Page.

8.3.2

DRAM FAST PAGE MODE

Nella seguente Fig. 8.14 mostrato il ciclo di lettura relativo ad una Fast Page Mode DRAM, seguita dalla tabella (Fig. 8.15) esplicativa dei tempi caratteristici. Il tempo tPC rappresenta il tempo necessario per leggere (o scrivere) in una locazione di memoria e per ripristinare le tensioni corrette nella memoria, per avviare una nuova lettura (o scrittura). Il ciclo di lettura di una Fast Page inizia con il fronte di commutazione del /CAS e termina alla fine del minimo tempo di precarica (precharge, tCP). Naturalmente il /CAS deve rimanere attivo per un tempo tCAS sufficiente per consentire un accesso corretto ai dati; una volta trascorso un tempo tCAC, i dati saranno presenti in uscita. Si noti che il primo ciclo impiega lo stesso tempo di un ciclo standard, ma ha il vantaggio di indirizzare tutte le celle di memoria allinterno della pagina (con stesso indirizzo di riga), le cui colonne verranno scandite dai successivi accessi mediante il /CAS. La durata massima di una serie di letture in una pagina (tRAS di Fig. 8.14) limitata dalla necessit di effettuare il refresh periodico. 8.3.3 EDO-EXTENDED DATA OUT DRAM Le Extended Data Out DRAM sono state implementate per ridurre ulteriormente il tempo richiesto per effettuare un accesso alla matrice di memoria. Esse sono state progettate in modo tale da mantenere attivi i driver di uscita anche quando il segnale /CAS ritorna al livello logico alto, necessario per garantire il tempo di recovery tCP. La conseguenza immediata di questo fatto che ora il tCAS pu essere inferiore al tempo tCAC, e ci concorre a ridurre il ciclo minimo di accesso. La Fig. 8.16 illustra quanto detto.
- 245 -

Fondamenti di Elettronica

Fig. 8.16:

Ciclo di lettura per le memorie EDO DRAM.

8.4

SDRAM- SYNCHRONOUS DYNAMIC RAM

Tutte le memorie considerate finora sono memorie asincrone, ossia le varie transizioni dei comandi non avvengono simultaneamente, bens sono legate alle transizioni applicate ai segnali di controllo, a meno dei ritardi temporali intrinseci. Ci non pi vero nelle memorie sincrone: in esse, laccesso avviene modo diverso rispetto a quelli finora analizzati, con il risultato di rendere il tempo di accesso ancora pi breve. Questa nuova modalit assume il nome di burst ed effettua lincremento automatico dellindirizzo di colonna che, quindi, non deve essere pi fornito dallesterno. In realt cambia anche larchitettura interna della memoria che, essendo ora sincrona, obbliga a far transitare verso il dispositivo gli indirizzi, i dati ed anche i comandi nel medesimo istante. Il funzionamento della SDRAM gestito da una macchina sequenziale interna, che elabora i segnali in ingresso come vere e proprie istruzioni e non semplici pin di controllo. I parametri pi significativi sono la frequenza di funzionamento, che solitamente varia da 66MHz a 150MHz, ed il tempo di latenza, indicato in Fig. 8.17. Lo schema a blocchi dellarchitettura interna di una SDRAM da 16 Mbit della Toshiba riportata in Fig. 8.18. La memoria composta da due (per la 16 Mbit) o pi (4 per la 64Mbit) banchi, ciascuno dei quali viene indirizzato da una o pi linee delladdress bus, dette appunto linee di Bank Select (BS). La presenza di due o pi banchi consente lesecuzione pipeline delle operazioni, permettendo ad un banco di essere nello stato di precarica mentre laltro effettua laccesso per operazioni di lettura o scrittura. Questo processo

Fig. 8.17:

Tempi di latenza in lettura per una SDRAM. - 246 -

Memorie

Fig. 8.18:

Struttura di una SDRAM da 16Mbit Toshiba.

noto con il nome di interleaving e consente di eliminare il tempo di attesa per una precarica (precharge latency). Sono presenti anche un Refresh Counter ed un Column Counter, poich la modalit burst richiede lincremento automatico degli indirizzi di colonna. Il Mode Register (Fig. 8.19) un registro a 12bit che seleziona la lunghezza del burst, nonch il tipo di accesso alla memoria (sequenziale o interleaved) ed il numero di cicli di clock che devono trascorrere prima che il dato sia disponibile sul bus. La piedinatura della SDRAM in esame riportata in Fig. 8.20. Per consentire alle SDRAM di funzionare, necessario fornire loro dei comandi mediante tali piedini. Tuttavia, a differenza di tutte le RAM asincrone viste in precedenza, questi comandi non sono i soliti fronti di salita e di discesa di un singolo segnale per volta, ma un insieme di segnali predefiniti.

Fig. 8.19:

Organizzazione interna del Mode Register. - 247 -

Fondamenti di Elettronica

Fig. 8.20:

Piedinatura della SDRAM Toshiba da 16Mbit.

Ad esempio la Fig. 8.21, a sinistra, mostra come impostare i segnali di comando per effettuare il comando mode register set al prossimo rising-edge del segnale di clock (CLK). Questo comando viene eseguito se si attivano i segnali /CS, /RAS, /CAS e /WE in corrispondenza di un impulso di clock. In questo modo i dati presenti sulladdress bus (A0..A11) vengono memorizzati nel Mode Register e determineranno il comportamento futuro del dispositivo. Il comando di Activate (Fig. 8.21, in centro) consente invece di inviare alla memoria lindirizzo di riga (sul bus A0 ed A10) del banco selezionato (tramite A11, Bank select). Notare infatti che /RAS basso durante tale operazione. Il comando di Precharge (Fig. 8.21, a destra) inizia la precarica del banco selezionato da A11. Se lindirizzo A10 (precharge select) a livello alto, la precarica viene attivata su tutti i banchi presenti internamente al dispositivo. I comandi read e write sono incaricati di inviare alla memoria, oltre al comando stesso, anche lindirizzo di colonna, secondo quanto mostra la Fig. 8.22. Nel comando di read, il dato disponibile solo dopo un certo tempo, chiamato CAS latency. Non si dimentichi che queste memorie sono dinamiche e, quindi, hanno bisogno di refresh. Il comando di Auto Refresh (Fig. 8.23 a sinistra) avviene attivando i segnali /CS, /RAS, /CAS, CKE e rendendo disattivo /WE. In questa condizione, la generazione degli indirizzi per il refresh viene attuata internamente, e per un periodo di almeno 100s il dispositivo non accetta alcun comando. necessario che lhardware pilotante la SDRAM

Fig. 8.21:

Comandi di mode register set (sinistra), activate (centro) e precharge (destra). - 248 -

Memorie

Fig. 8.22:

Comando di read (a sinistra) e di write (a destra).

esegua dei cicli di attesa per non inviare in questo intervallo di tempo dei comandi che sarebbero ignorati. Il segnale CKE utilizzato come abilitazione del clock. Se esso attivo, il prossimo fronte di salita del clock valido, altrimenti il dispositivo sospende qualsiasi operazione in corso e, nel caso in cui non vi fossero operazioni precedenti, entra in uno stato di power down, durante il quale si mantiene in self-refresh (Fig. 8.23 a destra). Il comando burst stop (Fig. 8.24 a sinistra) interrompe loperazione di burst in corso. Infine il comando di no operation (Fig. 8.24 a destra) permette di non eseguire alcuna operazione sulla memoria. Questultima rimane in uno stato idle determinato dalla disattivazione di ogni ingresso con /RAS, /CAS, /WE alti mentre /CS basso.

Fig. 8.23:

Comandi di auto refresh (sinistra) e di self refresh (destra).

Fig. 8.24:

Comando di burst stop (sinistra) e di no operation (destra). - 249 -

Fondamenti di Elettronica

Fig. 8.25:

Ciclo di power-on.

8.4.1

CICLI DELLE SDRAM

Avendo visto i singoli comandi da dare alla SDRAM, ora possibile analizzare alcuni cicli necessari al funzionamento della memoria. Il ciclo di power-on (Fig. 8.25) il pi importante. Dopo 200s di pausa, necessario inviare un comando di precharge all banks, seguito da otto cicli di autorefresh. Successivamente deve essere inviato il comando di Mode Register Set che inizializza il dispositivo. Per i veri e propri cicli operativi di accesso alla memoria utile osservare il diagramma di stato mostrato in Fig. 8.26, che illustra le relazioni esistenti tra i diversi comandi; se ne pu dedurre come allinterno della SDRAM sia integrata una vera e propria rete sequenziale sincrona che gestisce le operazioni della memoria.

Fig. 8.26:

Tipico diagramma degli stati di una SDRAM. - 250 -

Memorie

Fig. 8.27:

Ciclo di single write.

Fig. 8.28:

Ciclo di single read.

Si pu osservare che esistono due modi per eseguire i comandi di read e write, ovvero con o senza auto-precharge (rispettivamente READA-READ e WRITEA-WRITE). Il vantaggio di avere a disposizione operazioni che includano autoprecharge consiste nel poter inviare un solo comando ed eseguire sia loperazione di precharge che la lettura (scrittura) vera e propria. In realt questi due tipi di comando consentono di organizzare due tipi di accesso alla memoria, chiamati single e burst. Vediamo come sono strutturati i cicli di single write e single read. Il ciclo single write inizia con il comando activate. La memoria necessita di un ritardo tRCD dal comando di activate al successivo comando di write. Il motivo per cui si usa un comando di write invece di un writea dovuto allesigenza di dover terminare il ciclo dopo un solo accesso. Non possibile inviare un successivo comando di activate prima del tempo tRP, come mostrato in Fig. 8.27. In modo analogo funziona il ciclo di single read (Fig. 8.28). Anche i cicli in modalit burst cominciano con il comando activate, che consente di inviare alla memoria lindirizzo di riga. Il ciclo burst write si effettua tramite il comando writea, che deve essere inviato alla memoria dopo il tempo tRCD. Il primo dato viene scritto in memoria nel medesimo istante in cui avviene linvio del comando, come mostra la Fig. 8.29. possibile inviare un successivo comando di activate solo dopo un tempo tRP. Il ciclo burst read (Fig. 8.30) si svolge in modo analogo. In questo caso si osservi che il comando di read non esegue immediatamente loperazione di lettura del primo stream di dati, ma vi un tempo di latenza, indicato con tCAS, che dipende dal tipo di memoria. Infine, si ha il ciclo di auto refresh: dopo linvio di questo comando, intercorre un tempo tRC, dipendente dal tipo di memoria utilizzata, durante il quale non possibile inviare ulteriori comandi.
- 251 -

Fondamenti di Elettronica

Fig. 8.29:

Ciclo di burst write.

Fig. 8.30:

Ciclo di burst read.

8.4.2

INTERFACCIA TRA P

SDRAM

Dopo avere finalmente compreso il principio di funzionamento di una memoria SDRAM, non difficile intuire che linterfaccia tra P e tale dispositivo possa presentare notevoli difficolt dal punto di vista realizzativo. Sar pertanto necessario utilizzare dei P che abbiano al loro interno una gestione sincrona della memoria, oppure (circostanza pi frequente) si dovr programmare opportunamente il P, in modo che esso possa gestire correttamente e completamente la SDRAM. Ci possibile solo con P che abbiano al loro interno delle periferiche programmabili. In Fig. 8.31 riportata, a titolo di esempio, linterfaccia schematica tra una memoria SDRAM e il microprocessore PowerPC MPC860. Questultimo possiede una GPCM (General Purpose Chip Select Machine) che pu essere utilizzata come controller dedicato.

Fig. 8.31:

Interfaccia tra microprocessore MPC860 e memorie SDRAM. - 252 -

Memorie

8.5

RAM DEDICATE AD APPLICAZIONI PARTICOLARI

Esiste in commercio una classe molto vasta di memorie riscrivibili e volatili (RAM), la cui struttura progettata per allo scopo di svolgere funzioni particolari. Le principali componenti di tale classe sono le: First In-First Out buffer (FIFO); Dual Port access memory (DP-RAM); Video Ram (VRAM). In questa sezione focalizzeremo la nostra attenzione esclusivamente su queste ultime. Larchitettura di una Video Ram (Fig. 8.32) tale da gestire una matrice di memoria che deve essere in grado di pilotare, mediante opportuna circuiteria analogica esterna, il monitor di un PC o di un qualunque televisore (per applicazioni televideo o similari). La scrittura in memoria video deve potere avvenire in posizione casuale (da qui la scelta di utilizzare dispositivi RAM) ma deve anche garantire la lettura e scrittura veloce in modo seriale (sequenziale). Questo ultimo requisito necessario per pilotare un monitor o per leggere uno stream di dati in modalit SAM (Serial Access Memory).

Fig. 8.32:

Architettura di una video RAM. - 253 -

Fondamenti di Elettronica

Laccesso alla Video RAM identico a quello di una normale DRAM. Non per nulla, questa memoria pu essere utilizzata come una normale Ram da parte del P, che vi scriver e potr leggerne i dati contenuti. Tuttavia, lapplicazione specifica pensata espressamente per il pilotaggio di monitor video o di LCD grafici: ad ogni bit allinterno della memoria corrisponder pertanto un pixel sullo schermo (in caso di immagine monocromatica). Inoltre anche possibile attribuire pi di un bit, tipicamente tre, ad ogni pixel dello schermo (in modalit colore). La SAM viene adoperata per pilotare ad alta velocit il tubo a raggi catodici (CRT) o lo schermo a cristalli liquidi (LCD). Essa andr caricata con i dati contenuti nella Ram, quindi si render necessario effettuare un trasferimento di blocchi da RAM a SAM e sar possibile compiere loperazione inversa. La Fig. 8.32 ha lo scopo di fornire unidea della complessit architettonica di tali memorie.

8.6

MEMORIE EPROM

Tra le memorie non volatili possibile effettuare una distinzione tra quelle non cancellabili (ROM, PROM, OTP) e quelle riscrivibili dallutente finale (EEPROM e FLASH). Con riferimento a questa seconda categoria, opportuno sottolineare il fatto che, mentre nelle EEPROM possibile scrivere e cancellare singoli byte allinterno della memoria (senza alterare gli altri), nelle FLASH la cancellazione viene effettuata solo su interi banchi e non su singoli byte. Le prime memorie non volatili caratterizzate da una certa diffusione sul mercato furono le EPROM (Electrically Programmable Read Only Memory). La cancellazione avveniva esclusivamente mediante irraggiamento a luce UV, dopo che la memoria era stata completamente rimossa dalla scheda su cui era montata. Successivamente si pass alle EAPROM (Electrically Alterable PROM, che potevano essere riprogrammate ma solamente convertendo gli 1 in 0 e non viceversa) ed infine alle EEPROM (Electrically Erasable PROM). Queste ultime consentirono finalmente la cancellazione e la programmazione, da parte dellutente, anche di singoli byte. Oggi le nuove FLASH ROM, che vedremo pi avanti, cercano di essere compatibili con il mondo precedente (sia in termini di adattabilit sul circuito finale che di compatibilit con i programmatori commerciali), ma hanno delle caratteristiche che le rendono specifiche soprattutto per quanto riguarda la struttura a blocchi, la loro cancellazione e le tempistiche da rispettare. Queste memorie sono non volatili e non necessitano di refresh. Le memorie EPROM possono essere programmate elettricamente ma non sono cancellabili allo stesso modo, bens tramite esposizione ai raggi ultravioletti (irradiati da unopportuna lampada). Questa operazione richiede qualche minuto, dopodich il dispositivo pu essere nuovamente programmato con un programmatore standard.

Fig. 8.33:

Sezione di un FAMOS (sinistra) e modellizzazione dellaccoppiamento capacitivo (destra). - 254 -

Memorie

Fig. 8.34:

Iniezione di cariche durante la programmazione del FAMOS (sopra). Caratteristica di trasferimento (sotto) con (a destra) e senza (a sinistra) carica sul Floating Gate.

Come elemento base della cella di memorizzazione del singolo bit, queste memorie possiedono un Floating Gate Avalanche Injection MOS, abbreviato in FAMOS, riportato in Fig. 8.33. Esso presenta due gate sovrapposti, con quello vicino al canale flottante, isolato dal resto del mondo, mentre il gate superiore pu essere contattato dallesterno. La programmazione avviene portando il control gate, CG, ad una tensione positiva elevata VG e, contemporaneamente, polarizzando positivamente il drain a tensioni VDA superiori a quelle di normale funzionamento. Grazie allaccoppiamento capacitivo), il gate interno si porta ad un potenziale VG1 pari a circa (VG/2), nel caso di spessore dellossido uniforme. Nasce quindi un canale conduttivo in cui gli elettroni acquistano unenergia talmente elevata da giungere al drain (dove il campo pi elevato) con velocit tale da creare ionizzazione per impatto. Il campo elettrico presenta anche unintensa componente perpendicolare alla superficie del silicio, in grado di iniettare alcuni di questi elettroni nel gate flottante. Questa carica negativa si accumula sul gate flottante (FG) fino a quando essa stessa causa un abbassamento della tensione VG1 e, quindi, la scomparsa del canale. Si tratta quindi di una programmazione auto-limitante. Togliendo ora le tensioni di programmazione, la carica negativa sul FG tale da impedire comunque la nascita di un canale conduttivo, anche se il CG polarizzato alle normali tensioni positive di lettura (mediante la word-line). Se invece il FAMOS non fosse stato programmato, si sarebbe comportato come un normale MOS e sarebbe entrato in conduzione ad un livello alto di VG2. In questo modo si va a modificare la tensione di soglia VT del MOS stesso, come si apprezza in Fig. 8.34. La carica, teoricamente, pu rimanere immagazzinata nel FG per decine di anni e quindi, a buon diritto, questa cella si pu definire non volatile. Tuttavia, lesposizione della memoria a radiazione UV (attraverso una finestra trasparente nel package del dispositivo), causa la ricombinazione della carica verso il canale e, in definitiva, la cancellazione di tutta la memoria.

8.7

MEMORIE EEPROM (E2PROM)

Strutturalmente, le EEPROM (Fig. 8.35) sono simili alle EPROM viste in precedenza, ma possono essere anche cancellate elettricamente. Ora per il floating gate si estende sopra il drain in una regione dove lossido molto pi sottile che altrove (<10nm). La programmazione avviene polarizzando il CG ad una tensione positiva, tale da attrarre gli elettroni che dal drain arrivano sul FG per effetto tunnel. Il processo ancora autolimitante. La cancellazione ora pu avvenire applicando tensione negativa sul CG: si
- 255 -

Fondamenti di Elettronica

Fig. 8.35:

Cella base di una memoria E 2PROM.

Fig. 8.36:

Layout di una cella E2PROM e relativa rappresentazione circuitale.

avr ancora tunneling di elettroni ma questa volta in senso inverso, ossia dal FG al drain. Il rischio che si pu correre in questa fase consiste nello scaricare il FG in maniera eccessiva, tale da far comparire addirittura carica positiva su di esso; il MOS risulterebbe in questo caso sempre conduttivo (qualunque sia VCG). Per evitare che questo fenomeno provochi errori di lettura, si soliti inserire un ulteriore MOS, detto di accesso, raddoppiando per lingombro. A parit di tecnologia, ci determina una quantit di memoria dimezzata rispetto alle EPROM, come evidente dalla Fig. 8.36. Per permettere la realizzazione di schede estremamente compatte, sono oggi proposte delle EEPROM in cui i dati possono essere letti e scritti solo serialmente, un bit alla volta. Una memoria di questo tipo mostrata in Fig. 8.37. In questo modo, per trasferire i dati bastano solamente due linee: una di Dato In/Out (SDA) ed una di sincronizzazione e clock (SCL). Naturalmente cos facendo il trasferimento risulta pi lento rispetto ad un accesso parallelo. Lapplicazione di queste memorie non volatili non certo in schede che necessitino di un elevato throughput o di scambio di dati ad alta velocit (quali i valori istantanei acquisiti da un ADC o i coefficienti da utilizzare ripetutamente in conti elaborati), ma per immagazzinare dati usati sporadicamente (come parametri, settaggi o codici identificativi dellapparato). In questo caso la trasmissione il tipico SPI (Serial Peripheral Interface).

Fig. 8.37:

Esempio di memoria E2PROM seriale. - 256 -

Memorie

8.8

MEMORIE FLASH

Una memoria FLASH una memoria non volatile, le cui celle sono sia programmabili che cancellabili elettricamente. La prima cella FLASH fu presentata nel 1979, mentre il primo prodotto commerciale, un chip da 256k di memoria, fece la sua comparsa sul mercato nel 1984 per merito della Toshiba. La sua diffusione fu tuttavia molto lenta, fintantoch questa tecnologia dimostr di essere affidabile e realizzabile industrialmente. I primi prototipi FLASH necessitavano di unalimentazione esterna in tensione per la programmazione e, per la cancellazione, era indispensabile intervenire manualmente dallesterno. Essi si distinguevano, nei confronti delle EPROM, solo per la propriet di essere cancellabili elettricamente ma la vita utile era piuttosto breve, meno di 10000 cicli. 8.8.1 STRUTTURA DI UNA MEMORIA FLASH Le moderne memorie FLASH sono fornite di un microcontrollore integrato per gestire loperazione di cancellazione, inoltre offrono la possibilit di cancellare un settore e dispongono di una sola alimentazione. La crescente domanda di memorie non volatili ad alta densit per computer portatili e per il mercato delle telecomunicazioni ha incoraggiato un serio interesse nelle memorie FLASH con capacit di immagazzinamento multilivello e di operativit a basse tensioni di alimentazione. La prima caratteristica implica che si devono poter conservare due o pi bit in una singola cella, mentre la seconda si traduce in una riduzione dei consumi. La Fig. 8.38, a sinistra, illustra la sezione trasversale di una cella di FLASH, presentata per la prima volta nel 1988 dalla Intel. Essa composta da un transistor MOSFET a canale n, con un floating gate isolato e sospeso nel materiale dielettrico. Questo separato dal canale da un sottile strato di ossido, spesso circa 10 nm, detto gate oxide, e dal control gate sovrastante da un triplo strato dielettrico (ONO, oxide-nitride-oxide) chiamato interpoly dielectric, il cui spessore equivale a quello di uno strato di diossido di silicio da 20 nm. La giunzione di source pi profonda di quella di drain per ottenere maggiori tensioni di breakdown tra il source ed il substrato. Infatti, come vedremo, loperazione di cancellazione richiede lapplicazione di alte tensioni al source. La Fig. 8.38, in centro, mostra il layout della cella standard. Un banco di memoria sar composto da numerosi arrays di queste celle. Larea attiva ha la forma di una T (rovesciata nella figura in esame): per questo motivo la cella detta T-shaped. Il floating gate si estende su tutto lossido per garantire la copertura completa della regione di canale e per incrementare la sovrapposizione con il control gate.

Fig. 8.38:

Sezione trasversale (sinistra), layout (centro) e profilo (destra) di una cella FLASH . - 257 -

Fondamenti di Elettronica

Fig. 8.39:

Zone del dispositivo in cui avvengono le operazioni di cancellazione e scrittura.

Fig. 8.40:

Modalit di programmazione e cancellazione nelle memorie ROM.

Mentre la EPROM si programmava per iniezione a valanga (Channel Hot Electron Injection, CHEI) e si cancellava per rimozione della carica mediante radiazione UV, la EEPROM sfruttava leffetto tunneling (per la precisione il cosiddetto effetto FowlerNordheim) sia per la programmazione che per la cancellazione. Ora, con le memorie FLASH si programma con il CHEI, ma si cancella mediante processo FN, questa volta verso il source, come mostrato in Fig. 8.39 e riassunto nella tabella di Fig. 8.40. La cancellazione avviene polarizzando negativamente il gate (ovviamente si tratta del control gate, CG, lunico raggiungibile mediante contatto dallesterno) e positivamente il source. Il tunneling avviene verso la regione poco drogata di source (che prende il nome, per motivi storici, di LDD-Low Doped Drain ). In programmazione, il FG immagazzina carica, impedendo la successiva formazione del canale; questa situazione corrisponde al livello logico 0. Invece, nel caso di cella vergine o cancellata (livello 1), il canale si pu formare agendo sul comando del CG. Il processo CHEI per la programmazione richiede diversi mA di corrente e tensioni di programmazione elevate (Vpp attorno ai 12V). Questa la ragione per cui era necessario fornire alla memoria FLASH di prima generazione una tensione esterna. Attualmente la tecnologia si evoluta: ad esempio la Atmel sta impiegando un processo avanzato in cui si sfrutta il tunneling FN anche per la programmazione. Questo processo richiede correnti di pochi nA ad alta tensione (15 o 20V), quindi possibile utilizzare delle pompe di carica onchip per generare la tensione richiesta. In tal caso lalimentazione della memoria quindi unica e pu essere pari a 5V o pi bassa (in particolare si stanno affermando valori di 3,3V, 3V, 2,5V, 2,1V fino a 1,8V). Il basso assorbimento permette anche la programmazione contemporanea di interi settori, velocizzando in loperazione di write. 8.8.2 ORGANIZZAZIONE DI UNA MEMORIA FLASH Larchitettura interna di una memoria FLASH differente rispetto a quella delle RAM ed EPROM: la ragione consiste nel fatto che per cancellare la singola cella necessario poter accedere al source della cella (e quindi al suo bulk sottostante). Poich impensabile (allo stato attuale) isolare il bulk di ogni singolo Floating Gate MOS, i Costruttori hanno raggruppato diverse zone sul chip con il bulk in comune. Ci comporta la suddivisione della matrice (array) in blocchi o settori. Le memorie FLASH di vecchia generazione
- 258 -

Memorie

(qualche anno fa) possedevano blocchi molto larghi, di 4k o 128kbytes. Quindi, per cancellare (che in sostanza significa riscrivere un altro valore ) una cella (bit, byte o word, a seconda dellorganizzazione della memoria) era necessario cancellare tutto il corrispondente blocco, ovvero riportare tutte le celle nello stato 1. Il ciclo di cancellazione (sector erase time) era generalmente di centinaia o migliaia di millisecondi, e lintera memoria poteva quindi richiedere addirittura trenta secondi per essere cancellata! Inoltre, in aggiunta allalimentazione standard Vcc=5V, era necessario fornire al chip anche unulteriore tensione di +12V. Oltre allovvio svantaggio di necessitare di una tensione aggiuntiva per la scrittura, il problema era aggravato dal fatto che questa tensione dovesse necessariamente essere molto stabile e precisa, con tolleranze contenute in un intervallo tipicamente esteso tra 11.4V12.6V. I blocchi possono essere tutti della stessa dimensione oppure di dimensioni diverse tra loro; naturalmente la suddivisione in piccoli blocchi vantaggiosa perch la loro cancellazione non coinvolge altre celle ed il processo pu avvenire pi rapidamente. Tipicamente, nelle FLASH per alterare un byte necessaria la riscrittura di una pagina, normalmente di 64 bytes o anche di qualche kbyte, mentre la EEPROM non richiede unoperazione di block-erase per liberare spazio prima di potere scrivere. Questo provoca un enorme (ma necessario) dispendio di tempo, come si pu vedere dalla tabella di Fig. 8.41 per le 2Mbit Intel. La struttura una 256k8, quindi il tempo medio di programmazione per un byte appunto 4 sec/ 256K=15s/ byte. Nel caso peggiore invece si avr 25sec/ 256K=100s/ byte. Tale differenza non dovuta solo alle inevitabili tolleranze di fabbricazione del processo, bens dipende anche dallinvecchiamento delle celle, fenomeno che coincide in pratica col numero di cancellazioni subite dal Floating Gate MOS, nonch dalle condizioni ambientali (quali temperatura, stabilit e valore corretto dellalimentazione Vcc e soprattutto Vpp). Leffetto deleterio della temperatura su programmazione e cancellazione del chip riportato in Fig. 8.42. Si noti un drastico peggioramento oltre i 70C per il tempo di programmazione (scrittura), che tende ad aumentare sensibilmente dopo circa 10000 cicli. fondamentale specificare a questo riguardo unaltra differenza rispetto alle EEPROM. Anchesse, infatti, hanno una durata di vita limitata (solitamente 10-100kwrite/byte) che a prima vista potrebbe sembrare paragonabile a quella delle FLASH (10-100k erase/byte). In

Fig. 8.41:

Tabella relativa ai tempi di cancellazione e programmazione di una 2 Mbit Intel. - 259 -

Fondamenti di Elettronica

Fig. 8.42:

Dipendenza dei tempi di programmazione (sinistra) e cancellazione (destra) dalla temperatura.

realt la differenza notevole poich le FLASH non subiscono invecchiamento (inteso come stress per gli alti campi elettrici applicati alla Floating Gate ) se non in corrispondenza dellerase di un blocco, ossia solo quando si cancella un blocco. Per esempio, un blocco da 8kbyte contiene 8192 bytes, quindi potranno avvenire ben 8192 operazioni di write prima che avvenga una singola erase. Inoltre possibile allungare il tempo di vita di una FLASH mediante opportuni algoritmi di archiviazione dei dati. Si supponga, ad esempio, di dover sovente memorizzare 5 bytes come risultato di unelaborazione o acquisizione. Se si decidesse di salvare (cio scrivere) questo stream di dati allinterno della FLASH in uno stesso gruppo di registri, allora sarebbe necessario far precedere a tale operazione lerase di tutto il blocco. Operando secondo questa modalit, dopo 100000 salvataggi la FLASH sarebbe gi vecchia. Conviene invece salvare i 5 bytes in celle successive, anche se le precedenti non dovessero servire pi. Una possibile scelta quella di scrivere i nostri 5 bytes insieme ad altri, come ad esempio il byte di stato (FFH= clean, 0FH= valid, 00H= dirty ), per un totale di 6 bytes, in celle successive. Il blocco da 8K si riempirebbe dopo ben ( 8192/6 )= 1365 scritture. Solo a questo punto si dovrebbe effettuare lerase del blocco e si potrebbe ripartire dalla prima cella. Se il salvataggio avvenisse ogni minuto, invece di dover sostituire la FLASH (o comunque iniziare ad avere problemi di affidabilit) dopo 100000 minuti, corrispondenti a 70 giorni, si potrebbe continuare a lavorare per ben 136570=95550 giorni, ossia 260 anni! Naturalmente, da parte del P (e quindi dallutente) sarebbe necessario gestire in modo leggermente pi complesso il salvataggio, marcando con FFH la quintupla di byte da scartare perch obsoleti, scrivendo i nuovi 5 bytes e inserendo anche il nuovo byte di controllo 0FH. Se il P avesse bisogno degli ultimi 5 bytes salvati, dovrebbe cercare allinterno del blocco fino a trovare il byte a 0FH. Al successivo salvataggio baster sovrascrivere con 00H il byte precedente ed inserire la nuova sestupla.
- 260 -

Memorie

Fig. 8.43:

Timing relativi alle operazioni di cancellazione e programmazione di una memoria FLASH.

Si noti che la scelta del codice relativo al byte di stato non stata casuale. Infatti si deve ricordare che una scrittura (write) in una FLASH gratuita e permette di sbiancare gli 1 in 0. Naturalmente nellapproccio finora considerato si deve avere a disposizione un intero blocco di memoria da dedicare a questa piccola serie di byte. Tutto dipende dalle scelte di progetto e dalle economie di scala dei dispositivi sempre pi capienti ed economici. Altro problema delle FLASH consiste nel fatto che la memorizzazione di carica nel Floating Gate della cella funzione delle tolleranze di processo e del layout del MOS stesso. Pertanto il tempo necessario per scrivere un byte pu variare da 8s a 155s, come mostra la tabella di Fig. 8.43. Nella stessa tabella sono specificati anche i tempi di Erase, indicati come tWHQV3 e tWHQV4. Questi tempi rimangono circa costanti per un numero di cancellazioni inferiore a 10000. Oltre questo valore, anche il tempo necessario per la cancellazione aumenta, perci sar cura del P attendere per un tempo pi lungo, se il progetto deve rimanere affidabile un numero superiore di cicli. 8.8.3 COMANDI DI UNA MEMORIA FLASH Fortunatamente, non deve essere il progettista a programmare il firmware del P in modo da fargli attendere il pi a lungo possibile, come specificato dal costruttore della FLASH. invece proprio quest ultimo che mette a disposizione, allinterno della FLASH, uno Status Register che indica quando unoperazione di program o di erase completata. Quindi il P pu fare un polling su questo registro interno per capire quando la memoria pronta per unaltra operazione, ad esempio di lettura. Grazie alla presenza di questo importante registro di comando, la FLASH pu essere pilotata con le solite linee OE, CE, WE (oltre allalta tensione Vpp) per le operazioni di lettura e scrittura. Limportante scrivere dei comandi opportuni in questo registro, in modo che nella FLASH si avvii una macchina a stati per presiedere a tutte le operazioni necessarie. La tabella di Fig. 8.44 riporta alcuni comandi.
- 261 -

Fondamenti di Elettronica

Fig. 8.44:

Elenco di comandi caratteristici di una memoria FLASH.

Fig. 8.45:

Operazioni che avvengono sul bus in seguito a un comando.

La FLASH si attende che il primo ciclo di scrittura (write) sia un comando e, quindi, non scrive nulla nelle celle di memoria vere e proprie. Le azioni conseguenti che vengono avviate sui pin e sui bus di dati sono mostrate in Fig. 8.45. Il comando di lettura, OOH, permette la lettura anche con Vpp=12V. Dopo avere scritto il comando, necessario attendere 6 s prima di leggere la memoria allindirizzo desiderato. Una volta in read, non sono necessarie altre operazioni sul registro per ulteriori letture. Il comando di lettura dellIntelligent Identifier, 90H, permette di conoscere il codice identificativo del costruttore della memoria e quello identificativo dellID del chip stesso. In questo modo il P o il Programmer pu sapere di che tipo di memoria si tratta e scegliere conseguentemente la corretta tecnica e tempistica di pilotaggio. Dopo questo necessario fornire il comando di Read Memory, OOH, per terminare la lettura dellI.I. Il comando di Set-Up Erase/Erase, 20H ripetuto due volte, inizia la cancellazione della FLASH (sul secondo rising-edge del pin WE). La cancellazione termina quando il P invia il nuovo comando Erase-verify o quando un timer interno alla FLASH va in time-out. Questultima modalit fornisce una sicurezza ed una semplificazione aggiuntiva nella gestione della memoria da parte del C.
- 262 -

Memorie

Come gi accennato in precedenza, il tempo di erase dipende da diversi parametri quali il valore di Vpp (compreso tra 11,4V e 12,6V), la temperatura, ed il numero di erase effettuati. Per uguagliare il pi possibile i tempi di cancellazione tra byte e banchi diverri, necessario scrivere tutte le celle a 00H prima di lanciare la cancellazione. Se questa operazione non viene eseguita dal P, la FLASH rischia di non essere cancellata in modo uniforme ed affidabile. La Fig. 8.46 illustra un esempio di algoritmo, fornito dalla Casa Costruttrice, che il P deve eseguire in modo da portare a termine correttamente loperazione di quick-erase. Si osservi (parte destra del diagramma di flusso) che se dopo mille tentativi non si riesce a scrivere, ci viene interpretato come malfunzionamento della FLASH stessa.

Fig. 8.46:

Algoritmo di Quick-Erase per una memoria FLASH. - 263 -

Fondamenti di Elettronica

Fig. 8.47:

Fronti donda per le operazioni di erase.

Il comando di Erase-Verify, AOH, controlla che la precedente operazione di erase sia avvenuta correttamente su tutti i byte dellarray. necessario specificare lindirizzo del singolo byte che si vuole verificare e ripetere loperazione per tutti i byte di interesse. Se si legge FFH, vuol dire che il corrispondente byte stato correttamente cancellato. Nel caso in cui uno o pi byte non siano nella configurazione FFH, necessario eseguire nuovamente il comando Set-Up Erase/Erase. Successivamente si dovr ripetere lErase Verify, partendo dal byte fallente. La Fig. 8.47 ne mostra le tempistiche. Il comando di Set-Up Program/Program viene avviato con il comando 40H fornito due volte di seguito: il primo avverte del tipo di comando, mentre il secondo fornisce lindirizzo (caricato sul falling edge di WE) ed il dato (memorizzato sul rising edge del secondo WE) da scrivere. Loperazione interrotta quando il P invia il comando di Program-Verify oppure quando il timer interno alla FLASH raggiunge il time out (dopo circa 10s). Il Program Verify, COH, serve per controllare che il byte appena programmato sia corretto. Non necessario in questo caso fornire laddress, poich ancora nel latch della FLASH. Come nel caso precedente di Erase, il numero di tentativi (PLSCNT) che si disposti a compiere, prima di segnalare un errore, dipende dallutente e comunque deve assumere un valore finito, pena lo stallo del sistema.
- 264 -

Memorie

Nello scegliere una FLASH (ma il discorso vale anche per le altre memorie) spesso importante analizzare il package, in modo da effettuare una scelta oculata che si possa rivelare vincente negli sviluppi futuri del prodotto o, semplicemente, nellimplementazione su circuito stampato. Ad esempio, la scheda da progettare potr in futuro richiedere una maggiore quantit di memoria rispetto a quella attuale. Per questo motivo, utile disporre di una classe di memorie che possano essere pin-to-pin compatibili e che, senza richiedere modifiche esterne, possano essere scelte di capienza diversa, come mostrato in Fig. 8.48. Sar il P che dovr andare a testare la memoria per capire se si tratta di una 256k o di una 2M, ad esempio cercando di scrivere e poi leggere indirizzi campione che includano o meno le linee di address A15, A16, A17 ovvero i pin 2, 3 e 30 in Fig. 8.48. Scegliendo opportunamente il package, sar inoltre pi facile far correre le piste per disporre pi memorie sullo stesso bus, come in Fig. 8.49.

Fig. 8.48:

Piedinatura di una memoria FLASH.

Fig. 8.49:

Diversi tipi di package (in alto) e Bus con pi memorie ( in basso). - 265 -

Fondamenti di Elettronica

8.9

ESERCIZI

1) Quanti bit sono necessari per indirizzare una ROM da 128x8 bit? Quanti sono i bit nella parola di uscita? 2) Si dispone di ROM da 256x4. Come si pu ottenere una memoria da 256x8? E da 512x4? Disegnarne lo schema di principio. 3) Mostrare, mediante un diagramma temporale, la differenza tra tempo di accesso e tempo di ciclo in una memoria. 4) Un FAMOS programmato equivalente a un interruttore aperto o chiuso? Giustificare la risposta. 5) Mostrare che la cella di memoria di una RAM statica pu avere solo due punti di lavoro stabili. 6) Loperazione di refresh necessaria in una SRAM o in una DRAM? Giustificare la risposta. 7) In una DRAM la capacit di memoria CM sia di 100fF e la capacit della bit-line CL sia di 5 pF. Supponendo che la capacit CL sia precaricata a 2.5V, quale la variazione di tensione sulla bit-line quando si legge uno zero immagazzinato in CM?

Es. 8
Nella RAM sono Scansione memorizzate 8 forme donda in 8 banchi, selezionabili ciclicamente con il tasto Banco. Il blocco Up/Down Up/Down Clock genera gli impulsi Clock di clock e li invia in modo opportuno ai contatori del blocco Scansione, in base alla scelta effettuata con il bistabile comandato dal pulsante Up/Down. La scansione avviata e interrotta Start/Stop Up/Down alla pressione ciclica di Start/Stop. Banco a) Collegare tra loro gli LS193 del blocco Scansione e progettare il blocco Selezione con il rispettivo pulsante. b) Progettare il blocco Up/Down Clock con i rispettivi pulsanti.
74LS193
A0 . . . . . . . D0 . . . . . . D7

74LS193

MCM6206 32k x 8

74LS193

. . . A11 A12 A13 A14

74LS193 Selezione

_ E

_ G

__ W

- 266 -

Memorie

Es. 9
Una SRAM da 32k per 8bit ha la tempistica mostrata a lato. a) Individuare su quale fronte avviene l'effettiva scrittura del dato e disegnare le durate (specificando se min o max) per cui deve essere mantenuto stabile il dato. b) Disegnare i timing tipici di una memoria DRAM in fase di lettura ed in modalit di accesso fast-page mode.

Address ___ CE __ R/W Data In Data Out

Es. 10
Il C deve leggere i dati della DRAM da 32Mbit (organizzata a byte ed avente un tempo di refresh massimo di 100ms) utilizzando solo 8+3 linee di I/O. a) Progettare la rete logica completa. b) Implementare le routine di lettura (che preleva laddress dai registri REG1 e REG2 e salvi il dato in REG3). c) Implementare la routine di refresh.
Vdd

+5V

rete logica

PB0 . . . PB7 GND

Es. 11
Si comandi lADC seriale a 12bit non con C, bens con integrati MSI. a) Progettare e dimensionare il circuito completo che acquisisca il dato ogni 100ms, partendo dalla pressione di un pulsante di RECORD. b) Progettare il circuito che scriva 4kbyte di dati in una SRAM e poi fermi automaticamente lacquisizione.

C S \ shd n : chip select / sh utd ow n D out : D a ta ou t M iS O : M asterin S laveou t S ck : S e ria lc lock

Se pesco chi un giorno ha detto 'il tempo un gran dottore' lo lego ad un sasso stretto stretto e poi lo butto in fondo al mare.

Loredana Bert, Sei bellissima.


- 267 -

DRAM
GND

PA0 . . . PA7

A0 . . . . . A10 D0 . . . D7 ___ RAS ___ CAS __ W __ CE

Vdd

Fondamenti di Elettronica

"Non devo essere timido come mio padre! Se lui non lo fosse stato, io avrei avrei avuto almeno quattro o cinque anni di pi!" "Mamma voleva una femmina, pap non voleva figli. Ha vinto lui, sono nato io. Fino all'et di tredici anni continuavo a chiedermi come mai non c'erano altri bambini in quell'orfanotrofio. Ma nonostante tutto sono cresciuto normalissimo, se si esclude il fatto che vengo in analisi sedici volte la settimana da ventidue anni. Solo che ultimamente mi sento un po' gi... per arrivare a casa devo prendere l'ascensore e abito al pianterreno. Credo che il problema principale siano le donne: troppe! Non riesco a tener dietro a tutte: scappano troppo in fretta! Insomma, sono a un passo dal baratro, dalla parte del baratro. Che cosa mi consigliate, dottore? A parte l'eutanasia intendo: qualcosa di altrettanto riposante, ma senza una bara intorno!" "Eh, le mamme! La mia ne ha avuti quattordici, di figli. L'ultimo lo ha chiamato: FIUUUU!" "Finti? Sono veri, i miei baffi! E questa la prova migliore: ho preso tutto da mia madre!" "Il sogno di mia madre era avere un salotto e delle poltrone intonate. Ma eravamo poveri, non abbiamo mai potuto permetterci un maestro di canto!"
- 268 -

Memorie

Memorie..............................................................................................235
8.1
8.1.1 8.1.2 8.1.3 8.1.4 8.1.5 8.1.6

Classificazione delle Memorie ....................................................................... 235


Memorie ad Accesso Casuale e Memorie Sequenziali .............................................................. 235 Memorie di lettura/scrittura e di sola lettura .............................................................................. 236 Memorie volatili e non volatili................................................................................................... 236 Memorie RAM statiche e RAM dinamiche ............................................................................... 236 Architettura di una Memoria ...................................................................................................... 237 Temporizzazioni ......................................................................................................................... 237

8.2
8.2.1 8.2.2

Memorie RAM Statiche.................................................................................. 238


Ciclo di lettura ............................................................................................................................ 239 Ciclo di scrittura ......................................................................................................................... 240

8.3
8.3.1 8.3.2 8.3.3

Memorie RAM Dinamiche............................................................................. 242


DRAM classica........................................................................................................................... 243 DRAM Fast Page Mode ............................................................................................................. 245 EDO-Extended Data Out DRAM............................................................................................... 245

8.4
8.4.1 8.4.2

SDRAM- Synchronous Dynamic Ram........................................................... 246


Cicli delle SDRAM .................................................................................................................... 250 Interfaccia tra P e SDRAM ................................................................................................... 252

8.5 8.6 8.7 8.8


8.8.1 8.8.2 8.8.3

RAM dedicate ad applicazioni particolari ...................................................... 253 Memorie EPROM........................................................................................... 254 Memorie EEPROM (E2PROM)..................................................................... 255 Memorie FLASH............................................................................................ 257
Struttura di una memoria FLASH .............................................................................................. 257 Organizzazione di una memoria FLASH ................................................................................... 258 Comandi di una memoria FLASH ............................................................................................. 261

8.9

Esercizi ........................................................................................................... 266

- 269 -