Cap 3 - Digilander

March 20, 2018 | Author: Anonymous | Category: Ingegneria, Elettrotecnica
Share Embed


Short Description

Download Cap 3 - Digilander...

Description

CAPITOLO 3

DESCRIZIONE DEGLI ALGORITMI MULTILIVELLO

59

Nel capitolo 1 sono state descritte dal punto di vista fisico le modalità per programmare, cancellare e leggere il contenuto informativo di una singola cella FAMOS. Nel

presente

capitolo

saranno

esposti,

invece,

gli

algoritmi

di

programmazione e di cancellazione necessari all'implementazione della funzionalità multilivello sulle celle di memoria a disposizione

3.1 PROGRAMMAZIONE MULTILIVELLO La programmazione multilivello consiste nell’immagazinamento di più livelli di carica nella floating-gate. L'algoritmo di implementare una

test è stato pensato per

programmazione con tecnica a quattro livelli, al fine di

verificare la possibilità di raddoppiare la capacità della memoria in esame. La programmazione single level è caratterizzata da 2 livelli logici distinti: il primo con la floating-gate non programmata (livello logico 1) e il secondo con la floating-gate programmata (livello 0). Le operazioni di programmazione e di lettura sono semplici giacché per la programmazione è sufficiente applicare un impulso di lunga durata, sufficiente a portare la carica nella floating-gate in condizione di saturazione. Per la programmazione multilivello invece è necessario controllare con estrema precisione la carica iniettata nella floating gate in quanto nelle fasi di lettura bisogna essere in grado di distinguere uno tra i quattro livelli logici possibili (11,01,00,10) La presenza dei quattro livelli logici, richiede quindi che non ci sia la sovrapposizione delle distribuzioni per poter effettuare nel tempo una lettura corretta delle celle dell’array di memoria. L’aumento dei livelli logici e quindi l’adiacenza tra le soglie come riportato in figura 3.1 spinge ad avere distribuzioni molto strette e livelli opportunamente

60

distanziati per controbattere la tendenza naturale della floating-gate a perdere carica immagazzinata.

Figura 3.1 Distribuzione delle celle nei quattro livelli logici 11,10,00,01

Accanto a questi parametri non va dimenticato il tempo di programmazione che aumenta con l’aumentare dell’accuratezza con la quale vogliamo controllare la carica iniettata nella floating-gate. E’ necessario pertanto trovare algoritmi che soddisfano entrambe le esigenze. Due sono le tecniche di programmazione che si utilizzano nei test e che spiegheremo in seguito:

- tecnica di programmazione algoritmica - tecnica di programmazione di tipo analogico.

61

3.2 TECNICA ALGORITMICA

La tecnica algoritmica ha come obiettivo principale la programmazione delle celle in modo accurato. L’approccio consiste nell’applicazione di opportune tensioni ai terminali della cella (fase di programmazione) e nella successiva lettura del contenuto (fase di verifica). La programmazione e' realizzata applicando impulsi di tensione, adeguatamente controllati, ad uno o più terminali. La tecnica algoritmica fa quindi parte delle cosiddette tecniche PROGRAM-VERFIY. Nel diagramma temporale viene messa in evidenza la successione delle operazioni di program e di verify.

Figura 3.2.1 Treno di impulsi di program verify

Esistono diverse varianti di tale algoritmo le più interessanti consentono di regolare l’ampiezza del treno di impulsi, altre invece di variarne la durata, o ,come nel caso implementato, un algoritmo che unisce entrambe le scelte. Il diagramma temporale è riportato in figura 3.2.2 e evidenzia come l’impulso di programmazione sia costituito da un treno di impulsi di ampiezza crescente con steps di tensione pari a dVG e di durata decrescente.

62

Figura 3.2.2 Treno di impulsi variabili in durata e in ampiezza.

In particolare la regolazione della tensione sul gate di controllo e’ da preferire rispetto a quella sulla tensione di drain, dato che quest’ultimo ha effetto principalmente sulla durata della programmazione. Poiché

comporta

un’occupazione

di

area

non

trascurabile,

la

programmazione con verifica trova principalmente applicazione per memorie stand-alone, dove la matrice di memoria costituisce la parte piu’ consistente dell’intero sistema. Tale modalità di operare garantisce delle distribuzioni sufficientemente strette a discapito dei tempi di programmazione, in quanto, non c'è simultaneità tra programmazione e verifica.

63

3.3 TECNICA ANALOGICA

La programmazione analogica e' una tecnica di programmazione nella quale si controlla la carica iniettata nella floating-gate con un opportuno sistema di retroazione che arresta l’algoritmo quando si raggiunge il livello di carica prefissato. Fissando le tensioni di polarizzazione, l’aumento di carica nella floatinggate, implica un aumento della tensione di soglia Vt e la rispettiva diminuzione della corrente di drain, il cui valore è utilizzato per la misura del livello di programmazione. E’ evidente come in questa tecnica ci sia simultaneità tra programmazione e verifica con riduzione notevole del tempo per l’esecuzione dell’intero algoritmo. Lo svantaggio però, si riscontra nella difficoltà di controllare in maniera buona la larghezza delle distribuzioni per la variabilità della corrente di drain che dipende dalle caratteristiche tecnologiche delle singole celle dell’array.

64

3.4 ALGORITMO DI PROGRAMMAZIONE MULTI LIVELLO L’algoritmo di programmazione multilivello realizzato è riportato in figura 3.4.1:

Figura 3.4.1 Diagramma di flusso dell’algoritmo di program.

65

L’algoritmo prevede nella prima fase il caricamento della maschera “11” che protegge dalla programmazione quelle celle che non devono essere programmate. Tale fase e' seguita dall'operazione di program, per il pacchetto precedentemente definito, e da un'operazione di verifica nella quale si valuta l'avvenuto raggiungimento del livello logico desiderato per le celle programmate. Nel caso in cui le celle raggiungono il giusto livello di programmazione, l'algoritmo prevede il caricamento della maschera relativa al nuovo livello logico da programmare. Nell'eventualità che nel pacchetto selezionato non tutte celle raggiungono il livello desiderato, l’algoritmo prevede la possibilità di programmare le celle variando l’ampiezza della tensione di programmazione e la durata degli impulsi. Il numero di tentativi può essere definito dall’utente all’inizio dell’algoritmo ed e’ naturalmente limitato; se durante questi tentativi le celle non raggiungono il livello di programmazione previsto, il packet in esame e' dichiarato errato. Per concludere il tema degli algoritmi multilivello, e' presentato in figura 3.5.2 l'algoritmo implementato per effettuare la valutazione statistica delle celle di memoria; questo misura la corrente di drain Ids delle celle selezionate e conseguentemente effettua una programmazione delle stesse. Tale sequenza e' ripetuta tante volte quanti sono i passi necessari a programmare completamente le celle. Ad ogni nuovo impulso di programmazione viene incrementata l'ampiezza della tensione di gate, con steps scelti dall'utente, e la durata del impulso.

66

Figura 3.4.2 Diagramma di flusso dell'algoritmo statistic.

67

3.5 ALGORITMO DI CANCELLAZIONE

L'operazione di cancellazione è piuttosto complessa in quanto e' articolata in quattro fasi fondamentali: pre-program, erase, verifica di cancellazione e gateheal. L'operazione di pre-program ha lo scopo di portare tutte le celle, sia quelle programmate sia quelle cancellate, del settore selezionato ad un livello di carica comune, senza richiedere una precisione estrema del livello di programmazione. Tale operazione evita, infatti, che celle non programmate si portino in condizione di sovra-cancellazione in seguito ad un impulso di erase. L'operazione di erase consiste nella cancellazione del settore selezionato applicando sui terminali le tensioni opportune e disabilitando le celle non soggette a tale operazione. Come per l'operazione di program anche per la cancellazione esiste una fase in cui si verifica l'esito dell'operazione ed è chiamata erase verify. Essa consiste nella lettura della corrente che scorre nelle celle selezionate, a seguito di una tensione di 0V sulle wordlines e sull'array source e di 1V sulle bitlines. Se la corrente letta ha un valore negativo, ovvero se la cella in esame si trova in uno stato di over-erased, l'algoritmo prevede l'operazione di gate-heal. Tale operazione prevede un impulso di programmazione sull'intero settore, al fine di assicurare che non ci siano celle con bassi valori di tensione di soglia. L'algoritmo termina quando sono state eseguite un numero di iterazioni di erase o di gate-heal pari a quelle stabilite dall'utente. In figura 3.5.2 e' mostrato l'algoritmo di cancellazione implementato:

68

Figura 3.5.1 Diagramma di flusso dell'operazione di cancellazione.

Per poter verificare la funzionalità multilivello della memoria a disposizione, e' necessario implementare gli algoritmi trattati nel presente capitolo su un sistema automatico di test. Tale sistema dovrà consentire analisi statistiche su grandi campioni di memoria, possibilmente in tempi brevi, e dovrà essere adeguato allo sviluppo hardware ma soprattutto software.

69

View more...

Comments

Copyright © 2017 DOCUMEN Inc.