Tutorials - Elettronica

 

 

La memoria FLASH


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

  1. Le memorie Flash conservano i dati scritti anche senza la tensione di alimentazione presente
     
  2. Possono conservare i dati per molti decenni
     
  3. Si accede in lettura come ad una RAM, ma occorre maggior tempo per la scrittura
     
  4. 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. 
     
  5. 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.
     
  6. 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:

 


 

     

Copyright © afg . Tutti i diritti riservati.
Aggiornato il 02/10/11 .