La memoria Flash
La memoria elettronica è disponibile in una discreta varietà di forme
per servire una altrettanto ampia varietà di scopi.
Questa memoria deve avere la possibilità di:
- conservare per lungo tempo in modo sicuro i dati scritti
- essere letta in tempi brevi in modo da non rallentare il processore
- essere scritta, modificata e cancellata senza la necessità di
particolari apparecchiature
- avere la possibilità di essere integrata in modo semplice nella
struttura embedded del microcontroller
- e quindi non dare origine a costi elevati
Queste condizioni sono offerte dalla tecnologia FLASH.
Questo tipo di
memoria viene utilizzato in un numero estremamente ampio di applicazioni,;
ad esempio per il BIOS del computer, come sostituto elettronico, senza parti
in movimento, di dischi rigidi (SSD - Solid State Disk), in fotocamere
digitali (CompactFlash, SD, SmartMedia, Memory Stick, ecc), in lettori MP3,
videogiochi, cellulari e ogni altra applicazione dove occorre un sistema per
l'archiviazione facile e veloce delle informazioni o un supporto facilmente
aggiornabile per il firmware.
In particolare, nei microcontroller, è necessario disporre di una memoria
non volatile per conservare il programma.
La memoria Flash è, in sostanza, un tipo di chip EEPROM (Electrically Erasable
Programmable ROM) in cui non occorrono altro che segnali elettrici per le
operazioni di lettura e scrittura.
La memoria Flash conserva le informazioni in una matrice di transistor,
chiamato "cellule", ognuna delle quali memorizza normalmente un
bit di informazione (anche se in prodotti recenti, indicati come dispositivi
di celle multi-livello, si possono memorizzare più bit per ogni cella,
utilizzando più di due livelli di carica elettrica)
|
L' elemento base della cella è costituito da una specie di MOSFET
che ha due gate invece di uno solo.
Un gate è detto di controllo (CG-Control Gate) come in altri
MOS, ma il secondo è un gate floating (FG - Floating Gate), che è
isolato completamente tutt'intorno da uno strato di ossido di
silicio.
Dato che il FG è isolato, qualsiasi elettrone collocato su di
esso resta intrappolato lì e quindi viene " memorizzato".
A causa dell' isolamento, la carica rimane bloccata anche se
manca la tensione di alimentazione del MOSFET. |
E, in effetti, quello che la cella conserva è la carica elettrica che
viene applicata sul suo floating gate.
La presenza della carica nel floating gate rappresenta la memorizzazione di
un bit uguale ad 1, mentre l'assenza di carica rappresenta uno 0.
Possiamo anche immaginare la cella come una specie di condensatore che ha
accumulato o meno una carica elettrica e la conserva, essendo il suo
isolamento di valore resistivo così elevato da non consentirne l' auto
scarica se non in tempi valutabili a molti decenni.
L' ossido che isola costituisce una barriera che garantisce il blocco degli
elettroni. Però, applicando una tensione più elevata di quella di
funzionamento, le cariche elettriche possono essere fatte passare e
modificare così il potenziale dell' FG. E questo modifica la conduzione di
corrente del MOSFET, che viene abilitato dal CG.
Quando si vuole "leggere" la cella, l' indirizzo inviato dal
processore viene decodificato e punta ad un blocco che contiene la cella.
Mandando una tensione specifica sul CG, si confronta la corrente della
cella con quella di una cella di riferimento e la presenza o assenza di
corrente è tradotta in 1 e 0, riproducendo all' uscita i dati memorizzati.
Dunque, le operazioni di lettura della cella richiedono la tensione di
alimentazione singola (a livelli logici compatibili con i processori, ovvero
in un ambito tra 2 e 5.5V). Ma la "scrittura" o la
cancellazione sono effettuate con l' aiuto di una tensione più elevata di
quella di alimentazione,che fornisce un campo elettrico abbastanza forte per
muovere elettroni sul FG.
Questa tensione di programmazione o cancellazione è dell' ordine minimo dei
10V e generalmente, per sicurezza, viene data valida per valori tra 12 e
13.5V. Valori superiori portano ad un degradamento più veloce delle celle,
riducendo la vita della memoria; valori troppo bassi rendono casuale
la sicurezza del completamento dell' operazione di scrittura o
cancellazione.
Nei dispositivi con possibilità di accedere ad una tensione esterna, la
tensione di programmazione arriva attraverso un pin in cui viene integrato
un sistema di commutazione sensibile al livello della tensione. Questo
consente di "scrivere" la Flash solo ed esclusivamente quando l'
Utente applica questa tensione, evitando cancellazioni o modifiche
involontarie durante il funzionamento ordinario ed è la situazione tipica
dei microcontroller.
Nei dispositivi previsti per una sola tensione di alimentazione, la tensione
di programmazione è generata da una pompa di carica on-chip, generalmente
realizzata con una cascata di charge-pump elementari.
In questo caso, se la struttura è implementata nel microcontroller, esso
potrà modificare da sè, senza l' applicazione di altro che la tensione di
alimentazione, il contenuto della sua flash. Questo è il meccanismo che
consente l' applicazione dei bootloader.
Le operazioni di lettura delle celle sono rapide, analoghe a quelle di
una RAM (ns) e adeguate quindi ai tempi di ciclo di istruzione dei
microcontroller. Però, sia in lettura che in scrittura, i tempi sono
maggiori (ms) e queste operazioni sono da intendersi in modo diverso dalle
RAM e molto più simile alle EEPROM, anche perchè il numero di scritture
che una memoria FLASH può supportare non è illimitato, anche se molto alto
(solitamente si fa riferimento a oltre 105 cicli di scrittura).
Le memorie Flash sono divise in segmenti, solitamente chiamati blocchi o
settori. Tutte le celle di memoria in un blocco devono essere cancellate
allo stesso tempo, anche se la programmazione può, generalmente, essere
eseguita su un byte o un word per volta.
Breve riassunto
Per riassumere
- Le memorie Flash conservano i dati scritti anche senza la tensione di
alimentazione presente
- Possono conservare i dati per molti decenni
- Si accede in lettura come ad una RAM, ma occorre maggior tempo per la
scrittura
- Si scrivono o cancellano con l' aiuto di una tensione dell' ordine dei
12V. In generale questa tensione va applicata dall'e sterno su un
pin specifico, richiedendo quindi un apparecchio di programmazione.
- Esistono però dispositivi che permettono il bootload sulla loro Flash,
contenendo un sistema di pompa di carico per creare la tensione di
programmazione senza bisogno di apparati esterni.
- Sono generalmente divise a blocchi, per cui è possibile che le
operazioni di scrittura o cancellazione siano effettuabili solo su un blocco.
Alcune Note per i PIC
Con riferimento ai PIC di
Microchip:
- I componenti che hanno nella sigla la lettera F (16Fxxx, 18Fxx,
ecc) hanno integrata memoria programma di tipo Flash.
- La tensione di scrittura per i
PIC è la Vpp, indicata a circa 13 V), applicata al pin
MCLR (programmazione HVP).
-
Svariati PIC, ad esempio gli enhanced, hanno charge pump on chip per la
Vpp e quindi la possibilità di scrivere il contenuto della Flash
senza la Vpp esterna, rendendo così possibili i bootloader (programmazione
LVP).
|
Può essere utile consultare anche:
|