Memorie a semiconduttore Lucidi del Corso di Elettronica Digitale Modulo 11 Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB)
Memorie: classificazione Le memorie si dividono in 3 grandi categorie: RWM (read/write memory): memorie leggibili e scrivibili). Sono comunemente chiamate RAM (che significa però Random Access Memory, memorie ad accesso casuale). Perdono l informazione quando non sono alimentate. Es.: SRAM, DRAM ROM (read-only memory): memorie a sola lettura. Sono scritte una volta per tutte e possono essere solo lette. Mantengono l informazione anche senon alimentate NVRWM (Nonvolatile, olatile read/writerite memory): memorie di lettura e scrittura non volatili (mantengono il dato anche se si spegne l alimentazione) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 2
Dimensioni di memorie La dimensione globale di una memoria viene generalmente misurata in byte (Giga, Mega, Kilo) ossia in termini di gruppi di 8 bit (1byte=8bit). Al loro interno le memorie sono organizzate in word (parole) ossia gruppi di M bit (con M tipicamente 32 nei sistemi attuali) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 3
Memorie: architettura Una memoria di N parole da M bit è organizzata, concettualmente in questo modo A[0] A[1] A[K-1] Dec coder S[0] S[N-1] Word 0 Word 1. Word N-1 M bit Elemento di memoria (singolo bit) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 4
Memorie: architettura Una memoria di N word necessita di K=log 2 N bit di indirizzo per la selezione della parola desiderata I bit di indirizzo i devono essere decodificatidifi da un decoder per generare il segnale di selezione che attiva una fra le N word Gli M bit della word selezionata devono poi andare sul bus di uscita (in un operazione di lettura), oppure dal bus provengono gli M bit da scrivere sulla word selezionata 03 Dicembre 2009 ED - Memorie Massimo Barbaro 5
Memorie: architettura Se il numero N di word diventa molto grande rispetto al numero M di bit questa architettura non è evidentemente più ragionevole perché comporterebbe un organizzazione dello spazio irrazionale (un blocco stretto ed altissimo) e soprattutto porterebbe a delle capacità parassite enormi (lepisteverticali cheattraversano tutte le word per portare in uscita o in ingresso i bit) La soluzione preferibile è quella quadrata: si dividono i bit di indirizzo in 2 gruppi e si usa il primo per selezionare una riga ed il secondo gruppo per selezionare le colonne 03 Dicembre 2009 ED - Memorie Massimo Barbaro 6
Memorie: architettura A[L] A[K-1] Row De ecoder Sense Amplifiers A[0] A[L-1] Column Decoder 03 Dicembre 2009 ED - Memorie Massimo Barbaro 7
Memorie: architettura L architettura preferita per memoria di grandi dimensioni è quella ad array Dei K bit di indirizzo i primi L (i meno significativi) selezionano le colonne e gli ultimi K-L (più significativi) selezionano le righe Il decoder di riga seleziona una delle possibili 2 K-L righe in base ai K-L bit più significativi dell indirizzo La riga selezionata contiene 2 L word ed il decoder di colonna si incarica di selezionare e portare in uscita una fra queste word in base agli L bit meno significativi dell indirizzo Prima di portare in uscita il dato questo viene amplificato dai sense-amplifier posti al termine di ogni colonna 03 Dicembre 2009 ED - Memorie Massimo Barbaro 8
Memorie: architettura Per memorie ancora più grandi (più di 256 KB) anche dopo la suddivisione le capacità parassite delle piste molto lunghe che collegano un elemento di memoria nella prima riga al sense amplifier di colonna sarebbero eccessive Le memorie vengono ancora suddivisi i i in P blocchi (log 2 P bit di indirizzo) ciascuno dei quali è organizzato come un array righe/colonne come il precedente 03 Dicembre 2009 ED - Memorie Massimo Barbaro 9
Memorie: architettura Indirizzo di riga Indirizzo di colonna Indirizzo di blocco Bus 03 Dicembre 2009 ED - Memorie Massimo Barbaro 10
Componenti di una memoria Ognuno dei 3 tipi di memorie considerate (RAM, ROM, NVRWM) ha un architettura come quella vista composta da Il core: l array larray di elementi di memoria, l implementazione del core cambia a seconda del tipo di memoria considerata La periferia: i circuiti di interfaccia (decoder, senseamplifier, driver dei bus) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 11
ROM: elemento di memoria L elemento di memoria di una cella ROM può essere implementato in vari modi (fusibile, diodo). In tecnologia CMOS l elemento di memoria è costuito dalla presenza o assenza di un transistor Per questo motivo le ROM non possono essere scritte: le parole memorizzate sono definite una volta per tuttatt in fase di realizzazione i fisicai del dispositivo (layout) inserendo o non inserendo un MOS in una cella. 03 Dicembre 2009 ED - Memorie Massimo Barbaro 12
ROM: elemento di memoria Pull-up WL[0] WL[1] Riga 1 WL[2] WL[3] BL[0] BL[1] BL[2] BL[3] 03 Dicembre 2009 ED - Memorie Massimo Barbaro 13
ROM: elemento di memoria Quando si seleziona la riga i-esima si porta alto il valore di WL[i] e si mette 0 su WL[j] con j i A questo punto i vari bit della i-esima riga vengono portati ti in uscita tramite la NOR pseudo-nmos costituita dal PMOS di pull-up (sempre acceso) e dagli NMOS che possono essere presenti o meno nella singola cella di memoria del bit k-esimo. Se in posizione i k della riga i c è un MOS questo cortocircuita BL[i] a 0, se il MOS non c è il pull-up porta BL[i] a 1 03 Dicembre 2009 ED - Memorie Massimo Barbaro 14
ROM: elemento di memoria Nel caso della ROM di esempio del lucido 13 le parola memorizzate sono: W[0] = 1011 W[1] = 0110 W[2] = 1010 W[3] = 1111 Nel caso reale, per semplicità, non si modificano le maschere delle diffusioni (mettendo o meno il transistor) ma le metallizzazioni. Si realizzano cioè tutti i MOS ma si collegano (col metal) solo quelli in corrispondenza di bit di memoria pari a 0 e gli altri rimangono flottanti 03 Dicembre 2009 ED - Memorie Massimo Barbaro 15
NVRW: elemento di memoria L organizzazione di una memoria non volatile di lettura e scrittura (comunemente detta E 2 PROM, ossia Electrically Erasable/Programmable Read Only Memory) è molto simile a quella di una ROM La differenza consiste nella possibilità di realizzare la connessione del MOS, o cancellarla, l agendo solo su segnali elettrici i applicati alla cella stessa e NON in fase di realizzazione i fisicai 03 Dicembre 2009 ED - Memorie Massimo Barbaro 16
Floating gate transistor Il transistor di una ROM normale viene sostituito da un transistor a gate flottante, ossia un transistor particolare con doppio gate la cui tensione di soglia può essere variata applicando opportuni segnali elettrici al MOS In questo modo si può programmare un 1 nella ROM alzando notevolmente la tensione di soglia del MOS, quindi in pratica eliminandolo. i l Si può programmare uno 0 abbassando la tensione di soglia del MOS erendendola d confrontabile con quella di un MOS normale 03 Dicembre 2009 ED - Memorie Massimo Barbaro 17
Floating gate transistor Gate flottante Gate di controllo Source Drain n + n + Il MOS a gate flottante ha 2 gate: uno di controllo ed uno flottante, immerso nell ossido e senza contatti elettrici con l esterno lesterno 03 Dicembre 2009 ED - Memorie Massimo Barbaro 18
Floating gate transistor Applicando delle elevate tensioni drain-source (oltre i 10V), gli elettroni che vengono enormemente accelerati possono attraversare l ossido e rimanere intrappolati nel gate flottante A questo punto le cariche negative degli elettroni tendono ad attrarre lacune sotto il gate, quindi diventa più difficile creare il canale (la tensione soglia aumenta) Per riportare la tensione di soglia a livelli normali bisogna eliminare gli elettroni intrappolati nel gate flottante per effetto tunnel (applicando tensioni molto alte al source, per avere una tensione gate-source negativa) In questo modo se il gate flottante è carico la tensione di soglia è alta ed il mos non può essere acceso (memorizzato 1), se invece il gate è scarico il mos si può accendere (memorizzato 0) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 19
Programmazione e cancellazione Gate flottante Gate di controllo Cancellazione - Source n + - n + Programmazione Drain 03 Dicembre 2009 ED - Memorie Massimo Barbaro 20
RAM statiche e dinamiche L elemento di memoria di una memoria RAM (o RWM) cambia a seconda del tipo di implementazione SRAM: static ti RAM, la memorizzazione i avviene in modo statico, con un elemento bistabile con opportuno circuito it di scrittura (mantiene il dato indefinitamente finché alimentata) DRAM: dynamic RAM, la memorizzazione è dinamica per mezzo di cariche intrappolate su una capacità (richiede refresh perché soggetta al leakage della carica) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 21
SRAM: elemento di memoria WL Q Q BL BL 03 Dicembre 2009 ED - Memorie Massimo Barbaro 22
SRAM: elemento di memoria L elemento di memoria è un bistabile (due inverter connessi ad anello) Quando si vuole leggere il bit memorizzato si porta WL a 1 avendo così su BL il dato Q esu BL il dato Q Quando si vuole scrivere un valore D bisogna mettere BL=D e BL =D e poi portare alto WL per forzare lo stato del bistabile I dimensionamenti dei transistor sono critici per garantire il corretto funzionamento delle fasi di lettura e scrittura 03 Dicembre 2009 ED - Memorie Massimo Barbaro 23
DRAM: elemento di memoria E possibile avere implementazioni di memoria molto più compatte utilizzando un approccio dinamico Il dato è memorizzato su capacità quindi tende ad essere distrutto dalle correnti di leakage. E necessario unrefresh Le due principali versioni dell elemento di memoria sono a 3 transistor (cella 3T) e ad 1 transistor (cella 1T) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 24
DRAM: cella 3T WL X B1 B2 03 Dicembre 2009 ED - Memorie Massimo Barbaro 25
DRAM: elemento di memoria L elemento di memoria è una capacità Per leggere il dato si porta WL a 1 ed il dato compare in uscita su BL2 (negato) Per scrivere il dato D si porta BL1=D e poi si alza WL, in tal modo D viene memorizzato sul nodo X (tramite la capacità) In realtà, per rendere l operazione di lettura e scrittura più veloci non si richiede una completa escursione delle tensionifra0evddmasimisuranosolodella V Per leggere correttamente, ovviamente, sulla linea BL2 deve esserci un opportuno pull-up (uno solo per tuttett le celle che si affacciano sulla stessa colonna) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 26
DRAM: cella 1T X WL L elemento ee e di memoria è una sola capacità col transistor di accesso. La linea di lettura e scrittura coincidono. La lettura è distruttiva (se accedo al nodo X BL distruggo la carica immagazzinata per redistribuzione di carica e la devo poi ripristinare) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 27
Memorie: circuiti di periferia Tutte le memorie viste richiedono un certo numero di decoder per selezionare la parola di memoria desiderata Il progetto dei decoderd è critico perché il numero di segnali è molto elevato Soprattutto le DRAM con cella 1T ma anche le altre RAM (per problemi di velocità di risposta) richiedono la presenza di un amplificatore (sense-amplifier) che riporti le variazioni di potenziale misurate sulle bitline a valori digitali (VDD e 0) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 28
Memorie Modellazione verilog Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB)
Modello verilog Il modello verilog di una memoria si basa sullo stesso meccanismo utilizzato per gli altri elementi sequenziali: le informazioni immagazzinate in una variabile di tipo REG rimangono memorizzate fino a che non vengono riassegnate esplicitamente L unica particolarità di una memoria è che bisogna memorizzare un array (matrice) di elementi (ciascuna word) anzi che semplicemente dei bit, questo comporta l introduzione di un nuovo elemento di sintassi verilog (il concetto di array) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 30
Memorie: uso degli array Numero di bit (word size) module mem( );.. reg [7:0] word_ array y[ [0:255];. endmodule Un array è una matrice di elementi definito da un indice. In questo esempio la variabile word_array è un insieme di 256 parole di memoria (l indicevariada0a 255) ciascuna delle quali contiene 8 bit. Numero di word (memory size) 03 Dicembre 2009 ED - Memorie Massimo Barbaro 31
Memorie: uso degli array In un oggetto definito module mem( ); come array non è.. possibile* selezionare un sottoinsieme di bit reg [7:0] word_array [0:255] ; (come si fa con un. vettore) ma ci si Dout = word_array[17]; riferisce sempre a tuttitti i. bit di una particolare word. In questo esempio, la riga endmodule evidenziata accede a tutti gli 8 bit della word di posizione 17 fra le 256 possibili. * In realtà, il nuovo standard verilog (2001) ha introdotto l uso del doppio indice ed è quindi possibile selezione un singolo bit di una singola word, attraverso la sintassi word_array[5][17], dove il primo indice rappresenta il bit (bit 5) ed il secondo la word (word 17). 03 Dicembre 2009 ED - Memorie Massimo Barbaro 32
Esempio: RAM 2 porte module mem(addr, rnw, din, dout); input rnw; // rnw: read-not-write (1 legge, 0 scrive) input [7:0] addr; // Indirizzo: 8 bit -> 256 word input [31:0] din; // Porta di scrittura output [31:0] dout; // Porta di lettura reg [31:0] dout; reg [31:0] word_array [0:255]; always @(addr or din or rnw) begin dout = word_ array[addr]; // Lettura if(~rnw) word_array[addr] = din; // Scrittura end endmodule 03 Dicembre 2009 ED - Memorie Massimo Barbaro 33
Esempio: RAM 1 porta module mem(addr, rnw, dbus); input rnw; // rnw: read-not-write (1 legge, 0 scrive) input [7:0] addr; // Indirizzo: 8 bit -> 256 word inout [31:0] dbus; // Porta di lettura/scrittura wire [31:0] dbus; reg [31:0] word_array [0:255]; assign dbus = (rnw)? word_array[addr] : 32 bz; // Lettura (rnw=1) o scrittura (rnw=0) always @(addr or dbus or rnw) if(~rnw) word_array[addr] = dbus; // Scrittura (l assign precedente ha messo // dbus in alta impedenza quindi posso // leggere il dato proveniente dal bus e // memorizzarlo). endmodule 03 Dicembre 2009 ED - Memorie Massimo Barbaro 34
Esempio: memoria parametrica module mem(addr, rnw, dbus); parameter WORD_SIZE=32, MEM_SIZE=256, ADDR_SIZE=8; input rnw; // rnw: read-not-write (1 legge, 0 scrive) input [ADDR_SIZE-1:0] addr; // Indirizzo inout [WORD_SIZE-1:0] dbus; // Porta di lettura/scrittura wire [WORD_SIZE-1:0] dbus; reg [WORD_SIZE-1:0] word_array [0:MEM_SIZE-1]; assign dbus = (rnw)? word_array[addr] : {WORD_SIZE{1 bz}}; // Lettura (rnw=1) always @(addr or dbus or rnw) if(~rnw) word_array[addr] = dbus; // Scrittura (l assign precedente ha messo // dbus in alta impedenza quindi posso // leggere il dato proveniente dal bus e // memorizzarlo). endmodule 03 Dicembre 2009 ED - Memorie Massimo Barbaro 35
Memorie: modello verilog Ovviamente i due esempi proposti sono solo due possibili modelli di una memoria. Ai segnali di controllo utilizzati se ne possono aggiungere altri (ad esempio un segnale di abilitazione, un segnale di clock per letture sincrone e così via). Ogni modello verilog avrà però al suo interno un array definito da due indici che rappresenta il core di memorizzazione i vero e proprio 03 Dicembre 2009 ED - Memorie Massimo Barbaro 36