ITTO981003A1 - Metodo di programmazione di celle di memoria non volatile ad elevata precisione, con velocita' di programmazione ottimizzata. - Google Patents
Metodo di programmazione di celle di memoria non volatile ad elevata precisione, con velocita' di programmazione ottimizzata. Download PDFInfo
- Publication number
- ITTO981003A1 ITTO981003A1 IT001003A ITTO981003A ITTO981003A1 IT TO981003 A1 ITTO981003 A1 IT TO981003A1 IT 001003 A IT001003 A IT 001003A IT TO981003 A ITTO981003 A IT TO981003A IT TO981003 A1 ITTO981003 A1 IT TO981003A1
- Authority
- IT
- Italy
- Prior art keywords
- voltage
- slope
- programming
- ramp
- ramp voltage
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3468—Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
- G11C16/3486—Circuits or methods to prevent overprogramming of nonvolatile memory cells, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/12—Programming voltage switching circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C27/00—Electric analogue stores, e.g. for storing instantaneous values
- G11C27/005—Electric analogue stores, e.g. for storing instantaneous values with non-volatile charge storage, e.g. on floating gate or MNOS
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Non-Volatile Memory (AREA)
- Read Only Memory (AREA)
Description
D E S C R I Z I O N E
La presente invenzione si riferisce ad un metodo di programmazione di celle di memoria non volatile ad elevata precisione, con velocità di programmazione ottimizzata .
Come è noto, attualmente la programmazione delle celle di una memoria non volatile, in particolare una memoria flash, avviene polarizzando il terminale di porta della cella da scrivere (attraverso una linea di parola) ad un primo potenziale prefissato (ad es. di 8-9 V), il terminale di pozzo (attraverso una linea di bit) ad un secondo potenziale prefissato (ad es. 5 V) e il terminale di sorgente a massa. In tal modo, ha luogo l'iniezione di elettroni caldi, ovvero 1'intrappolamento di elettroni nella regione di porta flottante della cella e la modifica della tensione di soglia della cella stessa.
Il fenomeno dell'iniezione di elettroni caldi è, per sua natura, non controllato e non ripetibile con precisione; di conseguenza, attualmente la programmazione viene effettuata fornendo una pluralità di impulsi di programmazione e leggendo la tensione di soglia della cella dopo ciascun impulso di programmazione (fase di verifica -"verify"-) per valutare se è stato raggiunto il valore desiderato e decidere se applicare o meno ulteriori impulsi di programmazione.
Attualmente sono allo studio tecniche di immagazzinamento di dati digitali ad alta densità (in grado di fornire più di otto livelli); tali tecniche richiedono l'uso di circuiti di retroazione nella circuiteria di programmazione (destinata a fornire gli impulsi di programmazione e ad effettuare la lettura di verifica) che tuttavia rendono la fase di verifica più lenta e la programmazione (che può comprendere, complessivamente, 70-100 fasi di verifica) più lunga.
E' inoltre noto che, applicando una tensione (costante o impulsata) sul terminale-di pozzo della cella da programmare e una tensione crescente linearmente (rampa) sul suo terminale di porta di controllo, dopo un certo periodo di tempo la tensione di soglia varia con la stessa pendenza della rampa. Al proposito, si veda l'articolo "Technological and design constraints for multilevel flash memories" di C. Calligaro, A. Manstretta, A. Modelli, G. Torelli, Proceedings of International Conference on Electronic Circuits and Systems, Rodes, Grecia, pp. 1003-1008.
Sfruttando tale correlazione, è stato già proposto (si veda la domanda di brevetto europeo 97830566.2 del 3.11.97, a nome della stessa richiedente), di calcolare il tempo necessario affinché la cella da programmare raggiunga la tensione di soglia desiderata a partire da un valore di soglia iniziale, conoscendo la pendenza della rampa di tensione applicata in modo da eliminare fasi di verifica intermedie.
In particolare, nella domanda di brevetto sopra citata, al terminale di porta di controllo viene applicata una tensione a rampa discreta, costituita da una serie di impulsi di tensione di durata prefissata Δτ costante e di ampiezza crescente con incremento costante Δν,- di conseguenza la rampa presenta pendenza media pari a m = Δν/Δτ.
Dato che, in condizioni di equilibrio, la tensione di soglia delle celle da programmare cresce con pendenza uguale alla pendenza media m, il metodo descritto in tale brevetto calcola e quindi applica in successione il numero di impulsi di tensione necessari per ottenere l'incremento di tensione di soglia desiderato, senza effettuare verifiche dopo ogni impulso, consentendo così di ridurre il numero totale di fasi di verifica.
E' inoltre noto che la precisione di programmazione dipende dall'ampiezza dell'incremento o gradino AV di tensione applicato ad ogni impulso di programmazione (si veda ad esempio l'articolo di P.L. Rolandi, R. Canegallo, E. Chioffi, D. Gem a, G. Guaitini, C. Issartel, A. Kramer, F. Lhermet, M. Pasotti "1M-Cell 6b/cell Analog Flash Memory for Digital Storage", ISSCC98, S. Francisco, sessioni Memory, pagg. 334-335). Di conseguenza, per aumentare la precisione di programmazione (e quindi il numero di livelli programmabili in una singola cella), è necessario ridurre l'ampiezza dei gradini. Tuttavia, dato che la durata degli impulsi di programmazione è costante, ciò significa ridurre la pendenza media della rampa e quindi aumentare il tempo necessario per programmare la cella di memoria, come si nota dal grafico di fig. 1 che mostra le successioni di impulsi di due differenti ampiezze AVI e AV2, pari al doppio una dell'altra, necessarie per raggiungere uno stesso valore finale VF della tensione di porta di controllo a partire da uno stesso valore iniziale V0.
Tale svantaggio è tanto più sensibile quanto maggiore è la tensione di soglia finale da programmare, in quanto in tal caso è necessario applicare un elevato numero di impulsi e l'allungamento del tempo di lettura diventa significativo. Di conseguenza, quando è richiesta una elevata precisione di programmazione, questa diventa lenta.
Scopo della presente invenzione è realizzare un metodo di programmazione che superi tale inconveniente.
Secondo la presente invenzione vengono realizzati un metodo di programmazione di celle di memoria non volatile ed una relativa memoria non volatile, come definiti nella rivendicazione 1 e, rispettivamente, 10.
Per una migliore comprensione dell'invenzione, viene ora descritta una sua forma di realizzazione, a puro titolo di esempio non limitativo e con riferimento ai disegni allegati, nei quali:
- la figura 1 illustra l'andamento della tensione a rampa applicata al terminale di porta di una cella di memoria, Con due sequenze di impulsi di differente ampiezza;
- la figura 2 illustra uno schema circuitale semplificato relativo ad una memoria non volatile implementante il metodo di programmazione secondo la presente invenzione;
- la figura 3 mostra l'andamento della pendenza media della tensione a rampa applicata al terminale di porta di celle da programmare, secondo il presente metodo; e
- la figura 4 mostra uno schema di flusso relativo al metodo di programmazione secondo l'invenzione.
Il circuito utilizzato per 1'implementazione del presente metodo è sostanzialmente lo stesso descritto nella domanda di brevetto sopra citata e in seguito de-scritto con riferimento alla fig. 2 per chiarezza.
In fig. 2, sono mostrati un settore 10 di una me-moria analogica Ί non volatile, ad esempio di tipo flash, e i componenti della memoria 1 che intervengono nella fase di programmazione. In particolare, il settore 10 è formato da una pluralità di celle 2 disposte su righe e colonne; i terminali di porta di controllo delle celle 2 poste su una stessa riga sono collegati fra loro tramite una linea di parola 4, i terminali di pozzo delle celle 2 poste su una stessa colonna sono collegati fra loro tramite una linea di bit 5 e i terminali di sorgente di tutte le celle 2 sono collegati fra loro e disponibili esternamente (nell'esempio illustrato, in fase di programmazione, sono collegati alla linea di massa 3).
Le linee di parola 4 sono collegate ad un decodificatore di riga 7 avente un ingresso di comando 8 ricevente segnali di indirizzo e un ingresso di polarizzazione 9 ricevente una tensione di porta VPCX. In modo di per sé noto, il decodificatore di riga 7 ha lo scopo di alimentare la tensione VPCX ad una linea di parola 4 per volta, secondo quanto specificato dai segnali di indirizzo forniti sull'ingresso di comando 8<'>.
Le linee di bit 5 sono collegate ad un decodificatore di colonna 13 che, secondo quanto specificato da segnali di indirizzo forniti su un suo ingresso di comando 14, in modo di per sé noto provvede a collegare selettivamente le linee di bit 5 stesse a un bus 16 formato da otto linee; il bus 16 è quindi collegato ad un multiplexer analogico 17 avente lo scopo di collegare una sola delle linee del bus 16 ad un nodo di uscita 18 in base a un segnale di comando fornito su un suo ingresso di comando 19.
Il nodo 18 è collegato ad un primo terminale di un generatore di corrente 20 avente un secondo terminale collegato ad una linea di riferimento 21 posta ad una tensione Vi e generante una corrente di polarizzazione Ib; il nodo 18 è inoltre collegato ad un ingresso invertente di un amplificatore operazionale 25 avente uh ingresso non invertente ricevente una tensione di riferimento V2. L'uscita dell'amplificatore operazionale 25 definisce un nodo 26 collegato ad un ingresso di un convertitore analogico/digitale 27 e ad un primo ingresso 29 di un selettore 28 a due posizioni; il selettore 28 presenta un secondo ingresso 30 collegato ad un generatore di rampa 34 ed un'uscita 31 collegata con l'ingresso di polarizzazione 9 del decodificatore di riga 7.
Il generatore di rampa 34 è di tipo programmabile e presenta un ingresso di comando 34a ricevente un segnale di comando S fornito da un'unità logica di coman-do 37. In dettaglio, il generatore di rampa 34 è<' >in grado di generare in uscita una tensione crescente in modo discreto con gradini di ampiezza dì due differenti valori, sulla base del segnale di comando S. Inoltre, l'ampiezza dei due differenti valori di gradini può essere programmata, ad esempio in fase di progetto, sulla base del numero di livelli stabiliti (numero di bit per cella), come spiegato più in dettaglio in seguito. Ad esempio, l'ampiezza dei gradini più elevati può essere compresa fra 50 e 300 mV e l'ampiezza dei gradini più bassi può essere compresa fra 5 e 50 mV.
L'uscita del convertitore A/D 27 è fornita all'unità logica di comando 37 presentante un ingresso 38 su cui essa comunica con i componenti della memoria 1 non illustrati (per ricevere le istruzioni di programmazione, gli indirizzi delle celle da scrivere e i valori di soglia a cui devono essere programmate le celle) e una pluralità di uscite collegate con gli ingressi 8, 14, 19, e con un ingresso di selezione 32 del selettore 28. L'unità logica di comando 37 è infine collegata ad un'area di memorizzazione permanente della memoria 1, indicata come mappa 40, per la memorizzazio-ne di informazioni necessarie per l'esecuzione della programmazione, come sotto descritto in dettaglio.
Quando deve essere programmata una o più celle 2 del settore 10, l'unità logica di comando 37 decide, in base al livello da programmare, se attivare direttamente una procedura di programmazione lenta, ma precisa, impostando il generatore di rampa 34 attraverso un primo valore il segnale di comando S che specifica la generazione di gradini di tensione di ampiezza ridotta, se attivare inizialmente una procedura di programmazione veloce, ma meno precisa, impostando il generatore di rampa 34 attraverso un secondo valore del segnale di comando S che specifica la generazione di gradini di tensione di ampiezza elevata e quindi, dopo un tempo prefissato, commutare alla fase di programmazione lenta, come, descritto in seguito con riferimento allo schema di flusso di figura 4.
Per la programmazione, l'unità logica di comando 37 comanda il selettore 28 in modo da collegare l'uscita 31 dello stesso all'ingresso 30, ovvero in modo che la tensione VPCX fornita all'ingresso del decodificatore 7 cresca nel modo determinato dal valore del segnale di comando S, con gradini di ampiezza ridotta o elevata. Inoltre, come descritto in dettaglio nella domanda di brevetto europeo sopra citata, l'unità logica di coman do 37 comanda il decodificatore di riga 7 e il decodificatore di colonna 13 in modo che questi forniscano la tensione VPCX alla linea di parola 4 selezionata cui è collegata la cella da programmare e, rispettivamente, la tensione di pozzo prevista alla linea di bit 5 selezionata cui è collegata la cella da programmare, in modo di per sé noto.
Al termine della sequenza di impulsi di programmazione prevista, l'unità logica di comando 37 comanda il multiplexer analogico 17 in modo da collegare la linea di bit 5 selezionata all'ingresso invertente dell'amplificatore operazionale 25 e il selettore 28 in modo da collegare il nodo 26 di uscita dell'amplificatore operazionale 25 all'uscita 31 del selettore 28 e quindi alla linea di parola 4 selezionata. In pratica, in tale situazione, si ottiene un anello di retroazione includente la cella 2 e l'amplificatore operazionale 25. In questa condizione, come descritto in dettaglio in EP-A-0 833 348, in condizione di equilibrio, sull'uscita 26 dell'amplificatore operazionale 25 è presente una tensione VOUT proporzionale alla tensione di soglia attuale della cella 2 selezionata, secondo la relazione:
(1)
in cui Ki è una costante che dipende dalla corrente di polarizzazione e dai parametri della cella ed è quindi nota. Inoltre, data la relazione lineare fra V0UT e Vth e leggendo la cella 2 con lo stesso anello di retroazione, la tensione di uscita VOUT viene utilizzata come tensione di soglia della cella confrontabile con il valore desiderato.
L'unità logica di comando 37, ricevente la tensione VOUT di uscita dell'amplificatore operazionale 25 e conoscendo la tensione cui deve essere programmata la cella di memoria 2, può calcolare inoltre il numero N di impulsi di programmazione di ciascuna sequenza, secondo la relazione:
(2 )
in cui VF è la tensione finale o intermedia desiderata, V0 è la tensione all'inizio della sequenza di impulsi considerata, e Δν è l'ampiezza del gradino in quel momento impostata.
Secondo il presente metodo, inizialmente il generatore di rampa 34 fornisce in uscita una tensione crescente con gradini di ampiezza elevata fino a raggiungere un valore di soglia minore di quello da programmare. Questa prima fase, nella quale in pratica la tensione di programmazione applicata al terminale di porta di controllo della cella da programmare 2 cresce con una pendenza media elevata, indicata con mi in fig. 3, fino a che la tensione di porta VPCX raggiunge un valore intermedio VI, vantaggiosamente viene utilizzata qualora debba essere programmato un valore di tensione elevato, per il quale è necessario un elevato numero di impulsi di programmazione. La prima fase, a bassa precisione, consente quindi di approssimarsi al valore di soglia desiderato in modo rapido. Quindi, il generatore di rampa 34 genera una rampa crescente con gradini di ampiezza ridotta, in modo da ottenere una maggiore precisione. Vantaggiosamente, dopo un breve periodo necessario al circuito per adattarsi alla nuova pendenza media (indicata con m2 in fig. 3), l'unità di comando 37 lègge il valore di soglia raggiunto e calcola il numero di impulsi necessari per il raggiungimento della tensione di soglia finale, corrispondente, in fig. 3, al valore V2 della tensione di porta VPCX.
In tal modo, si ottiene una programmazione veloce e poco precisa all'inizio e più lenta e più precisa solo alla fine della programmazione, ottenendo un risparmio di tempo.
Convenientemente, in fase di progetto, sulla base dei valori di soglia discreti fissati per la memoria 1, e la durata degli impulsi, vengono prefissati i livelli per i quali è conveniente seguire la procedura di pro grammazione a velocità variabile e quelli in cui è in vece preferibile eseguire sin da subito la procedura di programmazione lenta e precisa, per evitare il rischio di sovraprogrammazione o semplicemente perché non si ottiene un significativo guadagno di tempo.
Inoltre, vantaggiosamente, in fase di progetto viene anche determinato, per ciascun livello di soglia associato alla procedura di programmazione a velocità variabile, il numero di impulsi da applicare per arrivare ad un valore di soglia intermedio per il quale si ottiene il massimo vantaggio in termini di tempo, senza rischio di sovraprogrammazione.
Opportunamente, sia i livelli di soglia per i quali viene applicata la procedura di programmazione a velocità variabile sia il numero di impulsi a velocità elevata calcolato vengono memorizzati nella mappa 40 (fig. 2).
In base a tali premesse, con riferimento alla fig.
4 viene ora descritto un esempio di realizzazione del presente metodo. In particolare, inizialmente (blocco 100), l’unità logica di comando 37 riceve le informazioni necessarie per la programmazione di una prefissata cella 2 della matrice, includenti l’indirizzo della cella 2 da programmare e il livello di soglia desiderato . Quindi, l'unità logica di comando 37 provvede a comandare opportunamente i decodificatori di riga 7 e di colonna 13, nonché il multiplexer analogico 17, in modo noto, blocco 101. Successivamente, sulla base del livello di soglia desiderato, l'unità logica di comando 37 legge dalla mappa 40 se deve essere applicata la procedura di programmazione a velocità variabile o no, e, nel primo caso, il numero di impulsi NI con gradino di ampiezza Δ1 da applicare (blocco 102).
Nel caso che debba essere utilizzata la procedura a velocità variabile (uscita SI dal blocco 103), l'unità logica di comando 37 genera il primo valore del segnale di comando S e lo fornisce al generatore di rampa 34; inoltre comanda il selettore 28 per predisporlo alla programmazione, blocco 104; il generatore di rampa 34 fornisce quindi NI impulsi crescenti gradini di ampiezza Δ1 alla linea di parola 4 selezionata (blocco 105) .
Al termine degli NI impulsi, o nel caso che debba essere utilizzata solo la procedura a velocità lenta (uscita NO dal blocco 103), l'unità logica di comando 37 porta il segnale S al suo secondo valore, blocco 106, in modo che il generatore di rampa 34 fornisca in uscita una tensione, a partire dal valore precedentemente raggiunto, crescente con gradini di valore Δ2.
La tensione a rampa viene fornita per un tempo T prefissato (ad esempio determinato sperimentalmente), necessario al sistema per portarsi a regime e corri-spondente ad un numero di impulsi prefissato, blocco 107. In seguito, l'unità logica di comando 37 comanda la lettura di verifica della cella 2, commutando opportunamente il selettore 28 (in modo che questo colleghi l'uscita dell'amplificatore operazionale 25 alla linea di parola 4 selezionata) ed eventualmente generando un terzo valore del segnale S per bloccare temporaneamente la generazione di ulteriori impulsi di programmazione, quindi acquisisce la tensione di uscita VOUT sul nodo 26, blocco 108.
Le fasi successive del presente metodo ricalcano quelle descritte nella summenzionata domanda di brevetto europeo 97830566.2. In sintesi, a questo punto l'unità di comando 37 calcola il numero N2 di impulsi necessari per raggiungere la tensione di soglia desiderata VT, in base alla relazione:
N2 = (VT - VOUT)M 2
blocco 109, comanda l'invio degli N2 impulsi attraverso il segnale S, blocco 110; esegue una nuova operazione di lettura di verifica blocco 111; verifica se è stata già raggiunta la tensione di soglia desiderata VT, blocco 112; in caso negativo (uscita NO), torna a calcolare il numero di impulsi N2 ancora necessari al rag giungimento della tensione di soglia desiderata, in caso positivo viene terminata la procedura di programma-zione .
Il metodo di programmazione descritto consente quindi di programmare le celle di memoria in un tempo, mediamente, inferiore rispetto al metodo descritto nella summenzionata domanda di brevetto europeo 97830566.2, pur mantenendo il livello di precisione desiderato. Infatti, da una parte il presente metodo consente di portarsi velocemente ad un livello di soglia non distante da quello finale desiderato e di eseguire la programmazione più precisa solo alla fine, e dall'altro esso non richiede alcuna verifica preliminare della soglia della cella 2 da programmare. Infatti, non è necessario sapere a priori con precisione il livello di programmazione intermedio che viene raggiunto con la programmazione rapida e le fasi di verifica possono quindi iniziare solo dopo il cambio di pendenza. Il presente metodo utilizza in pratica la stessa circuiteria di programmazione e lettura descritta nella domanda di brevetto europeo 97830566.2, richiedendo solo l'uso di un generatore di rampa programmabile nonché la memorizzazione dei dati relativi alla opportunità e modalità di effettuazione della programmazione a velocità variabile
Risulta infine evidente che al metodo descritto possono essere apportate modifiche e varianti, senza uscire dall'ambito della presente invenzione.
Ad esempio, benché l'esempio di realizzazione de-scritto faccia riferimento all'uso di tensioni a rampa discrete, l'invenzione può essere utilizzata anche a sistemi che usino rampe continue; in tal caso, quindi, il metodo consente di alimentare alla linea di parola selezionata due tensioni a rampa aventi due pendenze effettive differenti, e precisamente una prima pendenza più ripida, per ottenere una prima fase di programmazione rapida ed una seconda pendenza minore della prima, per ottenere una elevata precisione di programmazione .
Inoltre, è possibile pensare anche a soluzioni che prevedano più di due valori della pendenza della rampa, ad esempio tre valori: uno più elevato iniziale, uno intermedio, ed uno più basso, finale.
Il valore di pendenza (effettiva o media) nelle diverse fasi di programmazione può essere fissato una volta per tutte, sulla base del numero di livelli e dei valori di soglia desiderati, in fase progetto o di regolazione finale, oppure può essere scelto di volta in volta dall'unità di comando 37 fra una pluralità di valori memorizzati.
La decisione se effettuare la procedura di programmazione a velocità variabile può essere presa, invece che utilizzando una mappa prememorizzata, verificando di volta in volta se il valore di tensione di soglia o il livello da programmare superano valori prefissati .
Infine, il metodo descritto è applicabile anche a soluzioni nelle quali non si fa uso dell'algoritmo descritto nella summenzionata domanda di brevetto europeo 97830566.2, ovvero in cui si preferisca verificare il valore di soglia raggiunto dopo ogni impulso di programmazione .
Claims (14)
- R I V E N D I C A Z I O N I 1. Metodo di programmazione di una cella (2) di memoria non volatile avente un terminale di porta, comprendente la fase di applicare una tensione a rampa (Vpcx) a detto terminale di porta, caratterizzato dal fatto che detta fase di applicare una tensione a rampa comprende, le fasi di: - generare una<' >prima tensione a rampa avente una prima pendenza (mi); - successivamente generare una seconda tensione a rampa avente una seconda pendenza (m2), minore della prima pendenza.
- 2. Metodo secondo la rivendicazione 1, caratterizzato dal fatto che dette prima e seconda tensione a rampa sono di tipo discreto e comprendono ciascuna una pluralità di impulsi di ampiezza crescente linearmente .
- 3. Metodo secondo la rivendicazione 1 o 2, caratterizzato dal fatto che detta seconda tensione viene generata a partire da un valore finale di detta prima tensione a rampa.
- 4. Metodo secondo una qualsiasi delle rivendicazioni precedenti, caratterizzato dal fatto che, prima di detta fase di applicare, vengono eseguite le fasi di: - acquisire (100) un valore di tensione da programmare; - discriminare (103) fra una prima procedura di programmazione, comprendente dette fasi di generare una prima ed una seconda tensione di rampa, ed una seconda procedura di programmazione, comprendente la fase di generare una unica tensione a rampa avente una terza pendenza .
- 5. Metodo secondo la rivendicazione 4, caratterizzato dal fatto che detta terza pendenza è uguale a detta seconda pendenza.
- 6. Metodo secondo la rivendicazione 4 o 5, caratterizzato dal fatto che detta fase di discriminare comprende la fase di leggere una mappa (40) memorizzante una decisione fra detta prima e seconda procedura.
- 7. Metodo secondo la rivendicazione 6, caratterizzato dal fatto che detta mappa (40) memorizza inoltre un parametro (Ni) correlato alla durata di detta fase di generare detta prima tensione a rampa.
- 8. Metodo secondo la rivendicazione 7, caratterizzato dal fatto che detto parametro comprende un numero di impulsi di tensione (NI) da applicare.
- 9. Metodo secondo una qualsiasi delle rivendicazioni precedenti, caratterizzato dal fatto che detta fase di generare una seconda tensione a rampa comprende le fasi di: - alimentare {106, 107) detta seconda tensione a rampa a detto terminale di controllo per un primo intervallo di tempo prefissato (T); - determinare (108) un valore di soglia raggiunto da detta cella; - determinare (109) un secondo intervallo di tempo necessario per raggiungere un valore di soglia desidera-to; e - fornire (110) detta seconda tensione a rampa per un tempo correlato a detto secondo intervallo di tempo.
- 10. Memoria non volatile multilivello (1), colaprendente una pluralità di celle (2) aventi un terminale di porta e mezzi generatori (34) di una tensione a rampa collegabili a detto terminale di porta, caratterizzata dal fatto che detti mezzi generatori (34) comprendono un generatore di rampa programmabile per generare in successione almeno una prima tensione a rampa avente una prima pendenza e successivamente una seconda tensione a rampa avente una seconda pendenza, minore della prima pendenza.
- 11. Memoria secondo la rivendicazione 10, caratterizzata dal fatto di comprendere un'unità di comando (37) collegata ad un ingresso di comando (34a) di detti mezzi generatori (34) e generante un segnale di comando (S) atto a selezionare detta prima (mi) o detta seconda (m2) pendenza da generare.
- 12. Memoria secondo la rivendicazione 10 o 11, caratterizzata dal fatto che detto generatore di rampa (34) è di tipo discreto.
- 13. Memoria secondo la rivendicazione 11, caratterizzato dal fatto di comprendere mezzi di memoria (40) collegati a detta unità di comando (37) ed atti a memorizzare correlazioni fra livelli di tensione desiderati e l'attivazione di dette prima e seconda tensione.
- 14. Metodo per la programmazione parallela di celle di memoria non volatile e relativa memoria non volatile, sostanzialmente come descritto con riferimento alle figure annesse.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| IT1998TO001003A IT1303204B1 (it) | 1998-11-27 | 1998-11-27 | Metodo di programmazione di celle di memoria non volatile ad elevataprecisione, con velocita' di programmazione ottimizzata. |
| US09/449,168 US6392931B1 (en) | 1998-11-27 | 1999-11-24 | Method for high precision programming nonvolatile memory cells, with optimized programming speed |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| IT1998TO001003A IT1303204B1 (it) | 1998-11-27 | 1998-11-27 | Metodo di programmazione di celle di memoria non volatile ad elevataprecisione, con velocita' di programmazione ottimizzata. |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| ITTO981003A0 ITTO981003A0 (it) | 1998-11-27 |
| ITTO981003A1 true ITTO981003A1 (it) | 2000-05-27 |
| IT1303204B1 IT1303204B1 (it) | 2000-10-30 |
Family
ID=11417213
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| IT1998TO001003A IT1303204B1 (it) | 1998-11-27 | 1998-11-27 | Metodo di programmazione di celle di memoria non volatile ad elevataprecisione, con velocita' di programmazione ottimizzata. |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US6392931B1 (it) |
| IT (1) | IT1303204B1 (it) |
Families Citing this family (35)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6738289B2 (en) * | 2001-02-26 | 2004-05-18 | Sandisk Corporation | Non-volatile memory with improved programming and method therefor |
| DE60139670D1 (de) * | 2001-04-10 | 2009-10-08 | St Microelectronics Srl | Verfahren zur Programmierung nichtflüchtiger Speicherzellen mit Programmier- und Prüfalgorithmus unter Verwendung treppenförmiger Spannungsimpulse mit variablem Stufenabstand |
| JP3987715B2 (ja) * | 2001-12-06 | 2007-10-10 | 富士通株式会社 | 不揮発性半導体メモリおよび不揮発性半導体メモリのプログラム電圧制御方法 |
| US7211843B2 (en) * | 2002-04-04 | 2007-05-01 | Broadcom Corporation | System and method for programming a memory cell |
| FR2842344A1 (fr) * | 2002-07-11 | 2004-01-16 | St Microelectronics Sa | Procede de commande d'une memoire electronique non volatile et dispositif associe |
| US7139198B2 (en) * | 2004-01-27 | 2006-11-21 | Sandisk Corporation | Efficient verification for coarse/fine programming of non-volatile memory |
| KR100632944B1 (ko) * | 2004-05-31 | 2006-10-12 | 삼성전자주식회사 | 동작 모드에 따라 프로그램 전압의 증가분을 가변할 수있는 불 휘발성 메모리 장치 |
| ITTO20040470A1 (it) * | 2004-07-08 | 2004-10-08 | St Microelectronics Srl | Circuito di lettura/verifica di celle di memoria multilivello con tensione di lettura a rampa e relativo metodo di lettura/verifica. |
| US8823969B1 (en) * | 2004-10-18 | 2014-09-02 | Kla-Tencor Corporation | Image processing architecture |
| KR100748553B1 (ko) * | 2004-12-20 | 2007-08-10 | 삼성전자주식회사 | 리플-프리 고전압 발생회로 및 방법, 그리고 이를 구비한반도체 메모리 장치 |
| US7339834B2 (en) * | 2005-06-03 | 2008-03-04 | Sandisk Corporation | Starting program voltage shift with cycling of non-volatile memory |
| US7656710B1 (en) | 2005-07-14 | 2010-02-02 | Sau Ching Wong | Adaptive operations for nonvolatile memories |
| KR100705220B1 (ko) * | 2005-09-15 | 2007-04-06 | 주식회사 하이닉스반도체 | 프로그램 속도를 증가시키기 위한 플래시 메모리 장치의소거 및 프로그램 방법 |
| KR100660544B1 (ko) * | 2005-10-25 | 2006-12-22 | 삼성전자주식회사 | 신뢰성을 향상시킬 수 있는 플래시 메모리 장치 |
| US7512008B2 (en) | 2005-11-30 | 2009-03-31 | Atmel Corporation | Circuit to control voltage ramp rate |
| US7327608B2 (en) * | 2006-03-28 | 2008-02-05 | Sandisk Corporation | Program time adjustment as function of program voltage for improved programming speed in programming method |
| US7330373B2 (en) * | 2006-03-28 | 2008-02-12 | Sandisk Corporation | Program time adjustment as function of program voltage for improved programming speed in memory system |
| US7961511B2 (en) * | 2006-09-26 | 2011-06-14 | Sandisk Corporation | Hybrid programming methods and systems for non-volatile memory storage elements |
| KR100830575B1 (ko) * | 2006-09-26 | 2008-05-21 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것의 멀티-블록 소거 방법 |
| KR100780773B1 (ko) * | 2006-11-03 | 2007-11-30 | 주식회사 하이닉스반도체 | 플래시 메모리소자의 프로그램 시작 바이어스 설정방법 및이를 이용한 프로그램 방법 |
| KR100868105B1 (ko) * | 2006-12-13 | 2008-11-11 | 삼성전자주식회사 | 저항 메모리 장치 |
| US7508715B2 (en) * | 2007-07-03 | 2009-03-24 | Sandisk Corporation | Coarse/fine program verification in non-volatile memory using different reference levels for improved sensing |
| US7599224B2 (en) * | 2007-07-03 | 2009-10-06 | Sandisk Corporation | Systems for coarse/fine program verification in non-volatile memory using different reference levels for improved sensing |
| US7800951B2 (en) * | 2007-08-20 | 2010-09-21 | Marvell World Trade Ltd. | Threshold voltage digitizer for array of programmable threshold transistors |
| US7948802B2 (en) | 2007-12-04 | 2011-05-24 | Micron Technology, Inc. | Sensing memory cells |
| US7715235B2 (en) * | 2008-08-25 | 2010-05-11 | Sandisk Corporation | Non-volatile memory and method for ramp-down programming |
| US8223551B2 (en) * | 2009-02-19 | 2012-07-17 | Micron Technology, Inc. | Soft landing for desired program threshold voltage |
| US8917553B2 (en) | 2011-03-25 | 2014-12-23 | Micron Technology, Inc. | Non-volatile memory programming |
| KR20130091909A (ko) * | 2012-02-09 | 2013-08-20 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 장치 및 프로그램 방법과 이를 이용하는 데이터 처리 시스템 |
| US9082510B2 (en) * | 2012-09-14 | 2015-07-14 | Freescale Semiconductor, Inc. | Non-volatile memory (NVM) with adaptive write operations |
| US9911492B2 (en) | 2014-01-17 | 2018-03-06 | International Business Machines Corporation | Writing multiple levels in a phase change memory using a write reference voltage that incrementally ramps over a write period |
| US9378822B2 (en) * | 2014-05-17 | 2016-06-28 | Elite Semiconductor Memory Technology Inc. | Method for programming selected memory cells in nonvolatile memory device and nonvolatile memory device thereof |
| US9384842B1 (en) | 2015-05-20 | 2016-07-05 | Freescale Semiconductor, Inc. | Method and system to improve soft-programming time in non-volatile memory |
| KR102671402B1 (ko) | 2019-04-16 | 2024-05-31 | 삼성전자주식회사 | 문턱전압 산포 특성을 향상한 메모리 컨트롤러, 메모리 시스템 및 그 동작방법 |
| US11315649B2 (en) | 2019-04-16 | 2022-04-26 | Samsung Electronics Co., Ltd. | Memory controller, memory device and memory system having improved threshold voltage distribution characteristics and related operating methods |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3591824A (en) * | 1969-03-05 | 1971-07-06 | Madatron Inc | Driving means for crt{3 s |
| FR2768274B1 (fr) * | 1997-09-10 | 1999-11-05 | Sgs Thomson Microelectronics | Circuit de generation d'une haute tension de programmation ou d'effacement d'une memoire |
| FR2768846B1 (fr) * | 1997-09-19 | 1999-12-24 | Sgs Thomson Microelectronics | Procede et circuit de generation de la tension de programmation et d'effacement dans une memoire non volatile |
| EP0908895A1 (en) * | 1997-10-09 | 1999-04-14 | STMicroelectronics S.r.l. | Controlled hot-electron writing method for non-volatile memory cells |
| DE69723700D1 (de) * | 1997-11-03 | 2003-08-28 | St Microelectronics Srl | Verfahren zur Programmierung eines nichtflüchtigen Mehrpegelspeichers und nichtflüchtiger Mehrpegelspeicher |
-
1998
- 1998-11-27 IT IT1998TO001003A patent/IT1303204B1/it active IP Right Grant
-
1999
- 1999-11-24 US US09/449,168 patent/US6392931B1/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| US6392931B1 (en) | 2002-05-21 |
| IT1303204B1 (it) | 2000-10-30 |
| ITTO981003A0 (it) | 1998-11-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ITTO981003A1 (it) | Metodo di programmazione di celle di memoria non volatile ad elevata precisione, con velocita' di programmazione ottimizzata. | |
| US6542411B2 (en) | Nonvolatile memory and semiconductor device with controlled voltage booster circuit | |
| US7414871B2 (en) | Program control circuit of flash memory device having MLC and method thereof | |
| JP4995721B2 (ja) | プログラム時間制御を有する不揮発性メモリシステム | |
| US6011715A (en) | Method for multilevel programming of a nonvolatile memory, and a multilevel nonvolatile memory | |
| US7512010B2 (en) | Voltage regulator for flash memory device | |
| US7903467B2 (en) | Programming method of multi-bit flash memory device for reducing programming error | |
| US7397704B2 (en) | Flash memory device and program method thereof | |
| KR100960448B1 (ko) | 불휘발성 메모리 장치의 프로그램 검증 방법 | |
| JP4824295B2 (ja) | マルチレベル高電圧発生装置 | |
| KR101212739B1 (ko) | 비휘발성 메모리장치 및 이의 동작방법 | |
| US11074979B2 (en) | Erase control circuit and method of non-volatile semiconductor memory device, and non-volatile semiconductor memory device | |
| US7274599B2 (en) | NOR flash memory device using bit scan method and related programming method | |
| KR20100133616A (ko) | 불휘발성 메모리 소자 및 이의 프로그램 방법 | |
| US6069822A (en) | Method for parallel programming of nonvolatile memory devices, in particular flash memories and EEPROMS | |
| EP0877386B1 (en) | Method and device for analog programming of non-volatile memory cells, in particular flash memory cells | |
| US6687159B2 (en) | Method of programming a plurality of memory cells connected in parallel, and a programming circuit therefor | |
| KR102653242B1 (ko) | 비휘발성 메모리의 프로그램 방법 및 컨트롤러 | |
| CN112447228B (zh) | 执行乘法累加运算的非易失性存储器件 | |
| GB2299190A (en) | Threshold voltage verification method and circuit for program and erasure verification of non-volatile memory cell | |
| ITTO980990A1 (it) | Circuito per la programmazione parallela di celle di memoria non volatile, con velocita' di programmazione regolabile. | |
| KR100572302B1 (ko) | 플래시 메모리 장치와 그의 프로그램 방법 | |
| CN103971737B (zh) | 闪存及其相关编程方法 | |
| JP3591849B2 (ja) | 記憶装置及びこの記憶装置の動作方法 | |
| KR20090123511A (ko) | 불휘발성 메모리 소자 및 그 동작 방법 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 0001 | Granted |