Elettronica Applicata I proff. Padovini e Sampietro

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) l’informazione desiderata e per recuperarla
(leggerla) non dipende dalla posizione fisica della locazione all’interno 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
Un’ulteriore 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
L’ultima, 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
l’informazione 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
l’informazione 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
l’alimentazione. Invece, le memorie RAM dinamiche consentono una maggior densità
d’integrazione 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.
Nell’industria microelettronica mondiale, i chip di memoria rappresentano lo stato
dell’arte dei livelli raggiunti nell’impacchettamento (packing) e nella riduzione generale
d’ingombro 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:
8.1.5
Struttura schematica di una memoria ROM.
ARCHITETTURA DI UNA MEMORIA
Per quanto concerne l’organizzazione 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
quell’istante, nonché dal tipo di logica presente a valle. Ad esempio se N=8 e M=4 allora si
ha una memoria da 256⋅4bit; M=4 è detto “nibble”, M=8 “byte” mentre M=16 “word”.
La cella di memoria elementare è l’elemento caratterizzante di una tipologia particolare
di memorie ed è grazie alla sua struttura che si ottengono prestazioni diverse in termini di
tempo d’accesso, necessità di un refresh periodico, dissipazione di potenza statica e
dinamica, capacità di integrazione. Per una memoria ROM, i punti d’incrocio tra una riga e
una colonna rappresentano delle connessioni da programmare. Queste possono essere dei
semplici collegamenti che l’utente 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:
8.2
Diagrammi di timing: significato dei simboli grafici.
MEMORIE RAM STATICHE
L’elemento 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. L’ingombro è piuttosto elevato, come mostrato alla destra di Fig. 8.3:
nel caso di una cella di 10µm⋅10µm, un chip di silicio di 5mm⋅6mm conterrebbe solamente
circa 256kbit (pari a 32kbyte).
Fig. 8.3:
Singola cella di memoria RAM statica CMOS (sinistra) esuo layout su silicio (destra);
l’ingombro verticale è inferiore ai 10µm.
- 238 -
Memorie
8.2.1
CICLO DI LETTURA
Per lettura di una memoria si intende l’operazione che consiste nell’acquisire
l’informazione 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 l’indirizzo cambierà (perché ad esempio si vorrà leggere
un’altra 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 l’uscita 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:
8.2.2
Tempi di lettura caratteristici di una memoria.
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, l’uscita viene posta per
convenienza ad alta impedenza.
Come mostrato in Fig. 8.7, l’accesso al dato richiesto può essere controllato mediante
l’abilitazione 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 l’operazione tramite il segnale di controllo
Read/Write (Fig. 8.8); il comando “chip enable” si limita a consentire che l’operazione
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:
8.3
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 1µm.
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
10µm⋅10µm di una cella statica alle 1µm⋅1µm della dinamica si riescono ad ottenere delle
memorie con densità 100 volte superiore (un chip da 5mm⋅6mm 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 dall’esterno 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.
Row decoder
BIT lines
Latch
Address
____
RAS
WORD lines
Fig. 8.11:
Column decoder
Latch
Sense amplifiers
____
CAS
addressed
memory
cell
Output
buffers
Din
Dout
__
R/W
__
CE
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, dall’uguaglianza del travaso di carica (CL⋅VL=CM⋅VM) si
ottiene VL=(CM⋅VM)/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 un’idea 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
L’indirizzo 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 dell’indirizzo di riga
all’interno 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 l’innalzamento 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 sull’uscita
dopo un lasso di tempo che dipende dall’istante in cui è stato fornito l’indirizzo 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 l’intero ciclo di accesso
casuale alla memoria. Quest’ultimo è 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 l’indirizzo 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 all’interno 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:
8.4
Ciclo di lettura per le memorie EDO DRAM.
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, l’accesso 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 l’incremento automatico dell’indirizzo di
colonna che, quindi, non deve essere più fornito dall’esterno. In realtà cambia anche
l’architettura 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
dell’architettura 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 dell’address bus, dette appunto linee
di Bank Select (BS). La presenza di due o più banchi consente l’esecuzione “pipeline” delle
operazioni, permettendo ad un banco di essere nello stato di precarica mentre l’altro
effettua l’accesso 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 l’incremento 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 sull’address 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
l’indirizzo 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 l’indirizzo 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 l’indirizzo 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 100µs il
dispositivo non accetta alcun comando. È necessario che l’hardware 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 l’operazione di burst in corso.
Infine il comando di “no operation” (Fig. 8.24 a destra) permette di non eseguire alcuna
operazione sulla memoria. Quest’ultima 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:
8.4.1
Ciclo di power-on.
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 200µs 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 all’interno 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 l’operazione 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 all’esigenza 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 l’indirizzo 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 l’invio 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 l’operazione 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 l’invio 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
E
SDRAM
Dopo avere finalmente compreso il principio di funzionamento di una memoria
SDRAM, non è difficile intuire che l’interfaccia 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, l’interfaccia schematica tra una memoria
SDRAM e il microprocessore PowerPC MPC860. Quest’ultimo 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.
L’architettura 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
L’accesso 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, l’applicazione specifica è pensata
espressamente per il pilotaggio di monitor video o di LCD grafici: ad ogni bit all’interno
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 l’operazione inversa. La Fig. 8.32 ha lo scopo di fornire un’idea 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 dall’utente finale (EEPROM e
FLASH). Con riferimento a questa seconda categoria, è opportuno sottolineare il fatto che,
mentre nelle EEPROM è possibile scrivere e cancellare singoli byte all’interno 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 dell’utente, 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
un’opportuna 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 dell’accoppiamento 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 dall’esterno. 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 all’accoppiamento capacitivo), il gate interno si porta ad un potenziale ∆VG1 pari
a circa (∆VG/2), nel caso di spessore dell’ossido uniforme. Nasce quindi un canale
conduttivo in cui gli elettroni acquistano un’energia talmente elevata da giungere al drain
(dove il campo è più elevato) con velocità tale da creare ionizzazione per impatto. Il campo
elettrico presenta anche un’intensa 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, l’esposizione 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 l’ossido è 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ò
l’ingombro. 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. L’applicazione 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 dell’apparato). 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 un’alimentazione esterna in tensione per la
programmazione e, per la cancellazione, era indispensabile intervenire manualmente
dall’esterno. Essi si distinguevano, nei confronti delle EPROM, solo per la proprietà di
essere cancellabili elettricamente ma la vita utile era piuttosto breve, meno di 10’000 cicli.
8.8.1
STRUTTURA DI UNA MEMORIA FLASH
Le moderne memorie FLASH sono fornite di un microcontrollore integrato per gestire
l’operazione 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, l’operazione di
cancellazione richiede l’applicazione 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. L’area 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 l’ossido 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 l’effetto 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, l’unico raggiungibile mediante contatto
dall’esterno) 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 l’alimentazione 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 l’operazione di write.
8.8.2
ORGANIZZAZIONE DI UNA MEMORIA FLASH
L’architettura 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 dell’organizzazione 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
l’intera memoria poteva quindi richiedere addirittura trenta secondi per essere cancellata!
Inoltre, in aggiunta all’alimentazione standard Vcc=5V, era necessario fornire al chip
anche un’ulteriore tensione di +12V. Oltre all’ovvio 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.4V–12.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
un’operazione 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 256k⋅8, quindi il tempo medio di programmazione per un byte è
appunto 4 sec/ 256K=15µs/ byte. Nel caso peggiore invece si avrà 25sec/ 256K=100µs/ byte. Tale
differenza non è dovuta solo alle inevitabili tolleranze di fabbricazione del processo, bensì
dipende anche dall’invecchiamento 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 dell’alimentazione Vcc e soprattutto Vpp).
L’effetto deleterio della temperatura su programmazione e cancellazione del chip è
riportato in Fig. 8.42. Si noti un drastico peggioramento oltre i 70°C per il tempo di
programmazione (scrittura), che tende ad aumentare sensibilmente dopo circa 10’000 cicli.
È fondamentale specificare a questo riguardo un’altra differenza rispetto alle EEPROM.
Anch’esse, 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 dell’erase di un blocco, ossia solo quando si cancella un blocco. Per
esempio, un blocco da 8kbyte contiene 8192 bytes, quindi potranno avvenire ben 8’192
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 un’elaborazione o acquisizione. Se si decidesse di salvare (cioè
scrivere) questo stream di dati all’interno della FLASH in uno stesso gruppo di registri,
allora sarebbe necessario far precedere a tale operazione l’erase di tutto il blocco. Operando
secondo questa modalità, dopo 100’000 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 ( 8’192/6 )= 1’365 scritture.
Solo a questo punto si dovrebbe effettuare l’erase 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 100’000 minuti, corrispondenti a
70 giorni, si potrebbe continuare a lavorare per ben 1365⋅70=95550 giorni, ossia 260 anni!
Naturalmente, da parte del µP (e quindi dall’utente) 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
all’interno 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 nell’approccio 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 8µs a 155µs, 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 10’000. 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, all’interno della FLASH,
uno “Status Register“ che indica quando un’operazione di program o di erase è completata.
Quindi il µP può fare un “polling” su questo registro interno per capire quando la memoria
è pronta per un’altra 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 all’alta tensione Vpp) per le operazioni di
lettura e scrittura. L’importante è 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 all’indirizzo desiderato.
Una volta in read, non sono necessarie altre operazioni sul registro per ulteriori letture.
Il comando di lettura dell’Intelligent Identifier, 90H, permette di conoscere il codice
identificativo del costruttore della memoria e quello identificativo dell’ID 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 dell’I.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.
Quest’ultima 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 l’operazione 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 d’onda 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 dell’array. È necessario specificare l’indirizzo del
singolo byte che si vuole verificare e ripetere l’operazione 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 l’Erase 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 l’indirizzo
(caricato sul falling edge di WE) ed il dato (memorizzato sul rising edge del secondo WE)
da scrivere. L’operazione è interrotta quando il µP invia il comando di Program-Verify
oppure quando il timer interno alla FLASH raggiunge il “time out” (dopo circa 10µs).
Il Program Verify, COH, serve per controllare che il byte appena programmato sia
corretto. Non è necessario in questo caso fornire l’address, 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 dall’utente 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, nell’implementazione
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) L’operazione 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 d’onda 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.
- 266 -
74LS193
A0
.
.
.
74LS193
.
.
.
.
74LS193
.
.
.
A11
74LS193
Selezione
D0
.
.
.
.
.
.
D7
MCM6206
A12
A13
A14
32k x 8
_
E
_
G
__
W
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
+5V
µP
PA0
.
.
.
PA7
PB0
.
.
.
PB7
rete logica
Vdd
GND
A0
.
.
.
.
.
A10
D0
.
.
.
D7
___
RAS
___
CAS
__
W
__
CE
Vdd
DRAM
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 l’address dai registri REG1 e
REG2 e salvi il dato in REG3).
c) Implementare la routine di refresh.
GND
Es. 11
Si comandi l’ADC 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 l’acquisizione.
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 -
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
8
Memorie..............................................................................................235
8.1
8.1.1
8.1.2
8.1.3
8.1.4
8.1.5
8.1.6
8.2
8.2.1
8.2.2
8.3
8.3.1
8.3.2
8.3.3
8.4
8.4.1
8.4.2
8.5
8.6
8.7
8.8
8.8.1
8.8.2
8.8.3
8.9
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
Memorie RAM Statiche.................................................................................. 238
Ciclo di lettura ............................................................................................................................ 239
Ciclo di scrittura ......................................................................................................................... 240
Memorie RAM Dinamiche............................................................................. 242
DRAM classica........................................................................................................................... 243
DRAM Fast Page Mode ............................................................................................................. 245
EDO-Extended Data Out DRAM............................................................................................... 245
SDRAM- Synchronous Dynamic Ram........................................................... 246
Cicli delle SDRAM .................................................................................................................... 250
Interfaccia tra µP e SDRAM ................................................................................................... 252
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
Esercizi ........................................................................................................... 266
- 269 -