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 -