G.- F. Dalla Betta, G. Soncini. Appunti di Elettronica 2. Capitolo VI Memorie a semiconduttore VI.1. VI.2. VI.3. VI.4. Considerazioni generali RAM statiche RAM dinamiche Memorie a sola lettura Esempi ed esercizi 1 VI.1. Considerazioni generali Generalmente un sistema digitale richiede oltre ad una rete logica combinatoria anche la capacità di immagazzinare dati: • la parte di memoria normalmente e’ la piu’ ingombrante sui chip • le memorie hanno sempre spinto le tecnologie a progredire. Vi sono essenzialmente due famiglie di memorie, le memorie RAM (Random Access Memory) e le ROM (Read Only Memory). 1. RAM Dati immagazzinati volatili Permettono la lettura e scrittura dei dati Suddivise in due categorie: RAM statiche e dinamiche 2. ROM I dati sono permanentemente immagazzinati e possono solamente essere letti Dati immagazzinati non volatili Parametri fondamentali: Costo per bit (legato alla Capacita’ totale) Tempi di accesso 2 Tipica organizzazione di una memoria (architettura) • La memoria é solitamente organizzata secondo una struttura a matrice suddivisa in righe e colonne, in cui ogni cella é in grado di immagazzinare un bit. • Per accedere ad una cella si selezionano, tramite i due decoder, la riga e la colonna voluta e in seguito si procede con l’operazione di lettura o scrittura, eseguita contemporaneamente anche su un gruppo di bit. 2N x 2M celle • Le operazioni di scrittura-lettura dei bit avvengono tramite le colonne (dette bit-lines), mentre le righe della matrice servono per selezionare le celle di memoria (vengono chiamate word-lines). 3 VI.2. Memorie RAM statiche (SRAM) Le memorie RAM si dividono in RAM statiche e RAM dinamiche. Partiamo dalle prime. Le memorie RAM statiche (SRAM) sono in grado di mantenere il dato immagazzinato per un tempo indefinito (finché viene fornita l’alimentazione) senza bisogno di alcuna operazione di refresh. La struttura base in grado di immagazzinare un bit é costituita da due invertitori in serie posti in retroazione (latch). Per accedere (scrivere o leggere) al dato contenuto nella cella tramite la bit line é necessario almeno un interruttore controllato dalla corrispondente word line. Solitamente vengono impiegati due accessi complementari (2 bit line C e C e 2 interruttori). 4 Cella SRAM in CMOS Cella a 6 transistor (6-T) Il latch viene realizzato con due invertitori CMOS retroazionati. Solitamente per realizzare gli switch di accesso (comandati dalle word line) si impiegano transistori nMOS (piú conduttivi dei pMOS). La cella SRAM a 6 transistor (6-T SRAM) qui riportata presenta alcune problematiche: infatti durante la fase di lettura si vuole determinare lo stato della cella tramite i transistor di accesso senza alterare lo stato presente nella cella, mentre in fase di scrittura si vuole forzare, sempre tramite gli stessi transistor d’accesso, la cella nello stato desiderato. 5 6 Schema completo della SRAM in CMOS SRAM FCMOS: pur occupando piu’ area della equivalente cella con Load in poly-Si, e’ la migliore quanto a margine di immunita’ ai disturbi, consumo di potenza e tempo di accesso. Funzionamento qualitativo 1. RS=0: il latch conserva il dato, le bit line si precaricano a VDD oppure si portano a 0 (Write Circuits …) 2. RS=1: i pass transistor mettono in comunicazione le bit line con il latch... 7 Operazione di lettura nelle SRAM Supponiamo che il dato memorizzato nella cella sia ad esempio uno zero, cioe’ V1=0V e V2=Vdd=5V. Lo stato della cella all’inizio dell’operazione di lettura ( subito dopo aver selezionato la word line) e’: M2, M5: OFF M1, M6: ON, Zona triodo Dopo che RS va a Vdd, la tensione di C non cambia, perché attraverso M4 non scorre corrente, mentre la tensione di C inizia a scendere a causa della corrente di M3. Tuttavia la capacita’ della bit line é elevata e dunque VC scende di poco (~100’s mV). 8 Mentre M3 e M1 scaricano la bit line V1 inizia a salire, quindi per non alterare il dato memorizzato nella cella durante la fase di lettura, e’ necessario garantire che V1 non superi la tensione di soglia di M2. Allo scopo si devono dimensionare i transistor M1 ed M3 in modo opportuno. Supponiamo che dopo aver acceso i transistor d’accesso M3, M4 la tensione della bit line VC rimanga vicina a Vdd; ne consegue che M3 opera in saturazione, mentre M1 opera in zona triodo. Si ha percio: 2 kM 3 kM 1 2 VDD V1 VTn 2 VDD VTn V1 V1 2 2 Imponendo la condizione V1maxVTn si ottiene: kM 3 kM 1 W L M 3 2 VDD 1.5 VTn VTn 2 W VDD 2 VTn L M 1 9 Il valore cosi’ trovato e’ sicuramente conservativo, perche’ in realta’ una parte della corrente IDM3 fluisce nella capacita’ parassita al nodo 1 (caricandola). Rispettando questo criterio di progetto mi assicuro che M2 non si accenda e che il dato “0” resti correttamente memorizzato. Procedendo in modo analogo per quanto riguarda la fase di lettura di un 1 logico, si ottiene una condizione simile (simmetrica) per il rapporto dei fattori di forma di M2 ed M4. kM 4 kM 2 W L W L M 4 2 VDD 1.5 VTn VTn 2 VDD 2 VTn M 2 10 Sense Amplifier Per poter leggere il dato presente nella cella e’ necessario riuscire a leggere il leggero sbilanciamento di tensione tra le due bit line. Infatti, essendo la capacita’ delle bit line elevata e la corrente fornita o assorbita dalla cella selezionata di valore ridotto, per ottenere dei tempi di lettura sufficientemente brevi, e’ necessario riuscire a rilevare sbilanciamenti di tensione tra le bit-line estremamente ridotti (pochi mV). Per fare questo si impiega un circuito detto Sense Amplifier. Possibile implementazione CMOS del Sense Amplifier 11 Funzionamento qualitativo Supponiamo che dopo aver selezionato la cella da leggere le bit lines siano sbilanciate in modo che VC scenda un po’ (lettura di uno 0). Quando sale il segnale di clock (che indica l’istante in cui si vuole leggere il dato) M3 si accende ed essendo VC <VC M1 e’ piu’ conduttivo di M2 (VGS1>VGS2) e abbassa ulteriormente VC (retroazione positiva) spegnendo sempre di piu’ M2. Il latch cross-coupled e’ dunque in grado di amplificare la differenza di tensione tra le bit lines nel senso che ne favorisce lo sbilanciamento. L’ulteriore amplificazione del segnale differenziale e’ delegata all’amplificatore operazionale a valle. 12 Operazione di scrittura nelle SRAM Supponiamo di voler scrivere uno “0” logico nella cella e che nella cella sia immagazzinato un “1” dall’operazione precedente. Le bit lines vengono inizializzate con il valore del dato che si vuole scrivere, cioe’ VC=0V e VC =VDD. In figura e’ riportato lo stato della cella non appena vengono accesi i due transistor d’accesso M3 ed M4 (inizio della scrittura). M1, M6 OFF M5, M2 ON, Zona triodo. VC e’ imposto dal circuito esterno di scrittura e dunque si puo’ considerare costante e di valore prossimo a zero. Se M2 ed M4 sono stati disegnati con rapporti di forma opportuni (vedi condizione precedente) allora quando M4 viene acceso V2 rimane inizialmente sotto la tensione di soglia di M1. Per scrivere uno “0” nella cella, V1 deve scendere al di sotto della tensione di soglia di M2; quando V1=VTn, M2 si spegne, M3 opera in zona triodo (VDS ~ V1), mentre M5 opera in saturazione (notare che V2 rimane basso ma non a 0 V). Dunque si ha: k pM 5 2 0 V DD VTp 2 knM 3 2 2VDD VTn V1 V1 2 13 Imponendo la condizione V1<VTn, si ottiene: k pM 5 knM 3 2VDD 1.5VTn VTn 2 VDD VTp Se questa condizione e’ verificata, M2 viene forzato nella zona di interdizione durante la fase di scrittura dello “0”. Questo garantisce, di conseguenza, che M1 si accenda modificando il dato immagazzinato. Una condizione simmetrica vale per i rapporti di forma di M6 ed M4. VI.3. Memorie RAM dinamiche (DRAM) Nell’intento di realizzare memorie ad altissima capacita’ (con struttura della cella semplificata) si e’ arrivati alle memorie dinamiche, in cui l’informazione e’ memorizzata in una capacita’. Come noto, in questo caso, serve periodicamente un Refresh. 3) Cella a 1 transistor Stacked cap. Standard attuale. 1) Cella a 4 transistor 2) Cella a 3 transistor 14 DRAM con cella a 3 transistor Il dato e’ memorizzato come carica sulla capacita’ parassita C1 A seconda del valore memorizzato, Mn2 puo’ essere acceso o spento. I pass transistor Mn1/Mn3 consentono la scrittura/lettura del dato. Ci sono linee dati separate per lettura e scrittura. Il funzionamento richiede un clock a 2 fasi non sovrapposte. F1: precharge: PC=1, RS/WS=0 N.B. NMOS: VC < VDD !! F2: data read/write: PC=0, RS/WS=1 15 Tipiche forme d’onda segnali per DRAM a 3 transistor 16 17 PRECARICA PC=1, RS/WS=0 Attraverso i due transistori di precarica (NMOS), le capacita’ delle linee vengono caricate. • Ricordiamo quanto detto per le logiche MOS dinamiche: VCi _ MAX VDD VTn _ 0 VC _ MAX 2 2 La fase di precarica ha termine solo dopo che VC ha raggiunto il suo valore stazionario VCi_MAX N.B. C2 , C3 >> C1 Scrittura di un “1” logico Blocco di lettura escluso 18 DIN 0 1) MD OFF, C2 resta carica. 2) Quando WS accende Mn1, parte della carica di C2 si riversa su C1, caricandola. Dato che C2 >> C1,, la tensione su C1 si porta circa allo stesso valore della tensione che avevo in partenza su C2 3) Quando WS torna basso spegnendo Mn1, la carica resta su C1, e la tensione VC1 e’ tale da accendere Mn2. Lettura di un “1” logico 19 Blocco di scrittura escluso 1) Quando RS accende Mn3, questo, insieme a Mn2, crea un cammino conduttivo verso massa che consente di scaricare C3 (precaricata). 2) Il circuito di lettura interpreta la caduta di tensione su C3 come segnale alto (logica negata). N.B. L’operazione di lettura in una cella a 3 transistor non modifica il dato memorizzato, la carica su C1 rimane indisturbata (a meno della scarica attraverso le correnti di leakage). Scrittura di uno “0” logico Blocco di lettura escluso DIN 1 1) MD ON, C2 si scarica. 2) Quando WS accende Mn1, C1 puo’ scaricarsi anch’essa attraverso Mn1 e Mn-D 3) Quando WS torna basso spegnendo Mn1, sulla capacita’ C1, resta pochissima carica e Mn2 si spegne. VGS2<VTn 20 Lettura di un “1” logico 21 Blocco di scrittura escluso 1) Quando RS accende Mn3, dato che Mn2 e’ spento, non esiste un cammino conduttivo verso massa che consenta di scaricare C3 (precaricata). 2) Il circuito di lettura interpreta la presenza di una tensione alta su C3 come segnale basso (logica negata). N.B. Anche in questo caso l’operazione di lettura nella cella a 3 transistor non modifica il dato memorizzato. 22 REFRESH La carica immagazzinata sulla capacita’ parassita C1 non puo’ essere conservata per tempi troppo lunghi a causa delle correnti di perdita e di sotto-soglia del pass-transistor Mn1. Per evitare di perdere l’informazione, il dato memorizzato nella cella va periodicamente letto, invertito (logica negata) e riscritto nella stessa cella (refresh). Il refresh nelle DRAM e’ eseguito per tutte le celle ogni qualche ms. Notare che l’operazione viene eseguita contemporaneamente su un’intera riga della memoria, con ovvio risparmio di tempo. Ricordiamo infine che nelle celle 3-T non c’e’ consumo di potenza statico per la conservazione dei dati. La circuiteria aggiuntiva che si occupa del refresh non contribuisce significativamente al consumo di potenza totale. 23 DRAM con cella a 1 transistor Le celle di memoria DRAM a un transistor consentono di ottenere le massime capacita’ di memorizzazione ( 1 Gbit). N.B. C2 >> C1 Va ricordato che, in questo caso, la capacita’ sui cui memorizzare il dato (C1) e’ realizzata appositamente mediante un processo tecnologico dedicato (stacked capacitor). Scrittura di un dato Scrittura di un “1” La bit line e’ portata al valore logico alto (VDD) dai circuiti di scrittura (DATA=1), mentre la word line al valore alto (R/W=1) accende il transistor Mn1, attraverso il quale C1 puo’ caricarsi al livello logico alto (VDD-VTn con effetto Body) . Scrittura di uno “0” La bit line e’ portata al valore logico basso (0) dai circuiti di scrittura (DATA=0), mentre la word line al valore alto accende il transistor Mn1, attraverso il quale C1 puo’ scaricarsi al livello logico basso (massa). 24 Lettura di un dato L’operazione di scrittura e’ complicata e distruttiva, richiede cioe’ di andare anche a riscrivere il dato che si e’ letto. Funzionamento qualitativo: -si precarica la bit-line ad un segnale VREF (intermedio tra VH e VL). -si accende Mn1 mettendo in comunicazione C1 e C2 -la ridistribuzione di carica tra C1 e C2 sbilancia leggermente la tensione della bit-line in un verso o nell’altro a seconda del valore del dato presente. N.B. L’informazione memorizzata va comunque persa !! Serve il refresh ogni volta che si legge un Dato. 25 L’esiguita’ dei segnali in gioco rende necessari schemi di lettura complicati, che sfruttano dei Sense Amplifiers particolari, basati su latch dinamici. DRAM 1-T a 256 celle L’array di celle e la bit line sono divisi in due parti disposte simmetricamente rispetto ai due lati del LATCH. Ogni lato, inoltre, presenta una cella dummy che contiene una capacita’ il cui valore e’ meta’ di quello delle capacita’ delle celle di memoria. N.B. C >> C D 26 Tipiche forme d’onda segnali per DRAM a 1 transistor 1 2 3 L’operazione di lettura consiste essenzialmente di 3 fasi distinte 27 Fase 1: PRECARICA PC=1: si precaricano le due meta’ delle bit-line al valore di riferimento, e nel contempo si scaricano le capacita’ delle celle dummy (nodi X e Y). Gli altri segnali sono inattivi. Gran parte della circuiteria e’ spenta. 28 29 Fase 2: LETTURA Una delle word-lines (es: R128) va a 1, e si attiva la dummy cell sul lato opposto (con DS). a) Se il dato e’ 1, la tensione sulla half-column D sale leggermente, mentre quella sulla half-column D scende leggermente perche’ la capacita’ dummy si sta caricando. a) Se il dato e’ 0, la tensione sulla half-column D scende leggermente, anche quella sulla half-column D scende, ma di meno perche’ ho C/2, quindi posso “sentire” la differenza. Fase 3: FINE LETTURA / RINFRESCO Escludo le dummy cell (DS/ DS = 0). Con CS=1, attivo il LATCH che “sente” e amplifica la piccola differenza di potenziale tra le due half-columns, sbilanciandole infine verso valori di tensione opposti. Dato che la word-line R128 e’ ancora alta, cosi’ facendo rinfresco anche il dato nella cella. 30 VI.4. La memoria a sola lettura (ROM) 31 • E’ un componente integrato a larga scala che a rigore appartiene alla categoria delle reti combinatorie. La capacita’ di conservare le informazioni la rende pero’ una vera e propria memoria. • Il cuore del circuito e’ una DEC 0 matrice di punti di contatto in 1 2 cui vengono memorizzate le A0 tabelle della verità delle n-2 2 An-1 funzioni da realizzare. 2n-1 • Per una maggiore flessibilità d’impiego, le uscite sono ottenute ponendo in serie agli CS OR degli amplificatori a 3 stati aventi in comune il segnale di abilitazione CS (Chip Select). O1 O2 Om 32 • Una volta stabiliti i contatti necessari, che corrispondono alle situazioni in cui le funzioni devono assumere valore 1, è possibile leggere le tabelle, naturalmente una riga alla volta e come conseguenza della presentazione in ingresso della corrispondente configurazione di valori delle variabili indipendenti. • Queste ultime sono dette segnali di indirizzamento ed una loro configurazione di valori indirizzo della memoria. Sui bordi del simbolo rettangolare usato per rappresentare una ROM, i segnali di indirizzamento sono indicati con la lettera A (Address) seguita da un pedice che ne specifica il peso in una loro interpretazione come numero binario intero. • Da un punto di vista tecnologico, diverse sono le tecniche impiegate per realizzare memorie a sola lettura e diverse sono quindi anche le modalità d’impiego. 33 ROM CMOS (pseudo N-MOS) Tabella programmazione R1 R2 R3 R4 C1 C2 C3 C4 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 Problemi. - consumo di potenza statico - segnale basso VOL > 0 34 ROM CMOS dinamica (precarica/valutazione) CK=0 precarico le colonne a VDD tramite i transistori p. CK=1 Scarico condizionatamente le colonne attraverso i pass transistor n. Tabella programmazione R1 R2 R3 R4 R5 C1 C2 C3 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 In pratica, metto un MOS ad ogni incrocio e poi lo abilito oppure no. 35 Il modo in cui realizzo tale programmazione determina la seguente classificazione: • ROM (Read Only Memory): i punti di contatto sono realizzati su ordinazione nella fase finale di costruzione del chip (metal mask). • PROM (Programmable ROM): i contatti sono all’inizio tutti stabiliti, il cliente puo’ eliminarli su apposite macchine bruciando i fusibili posti in serie al drain. • EPROM (Erasable Programmable ROM): i transistori utilizzati sono particolari (gate isolato e gate di accesso) Un’opportuna apparecchiatura di programmazione consente di aprire i contatti non desiderati; la situazione iniziale è ripristinabile sottoponendo il dispositivo a radiazioni ultraviolette. • E2PROM (Electrical Erasable Programmable ROM): simili alla precedenti ma programmabili e cancellabili con soli impulsi elettrici. • FLASH: evoluzione delle E2PROM, consentono fino a 105 cicli di R/W, con tempi di prog. di pochi ms, e cancellazione in secondi. • In pratica e’ più conveniente realizzare matrici di programmazione 36 quadrate. Allo scopo gli “OR” di uscita devono essere sostituiti da multiplexer per concentrare i segnali di colonna sulle linee di uscita desiderate; i MUX sono selezionati dai segnali di indirizzamento non introdotti nel decoder. • Con questa tecnica di selezione a due dimensioni è possibile conseguire un notevole risparmio d’area sul chip. Rispetto alla selezione lineare si riduce infatti il numero totale di ingressi richiesto per gli operatori AND. • Ulteriore vantaggio e’ la maggiore velocita’ di lettura (capacita’ di linea piu’ basse). DEC A0 Matrice 2k · 2 3+n-k Ak-1 Ak An-1 CS MUX MUX 2n-k:1 2n-k:1 AMP. 3 STATI ROM O1 O2 O8 37 Sintesi con memorie a sola lettura La sintesi a ROM di funzioni combinatorie può dar luogo a due differenti problemi progettuali: • il dispositivo scelto ha un numero insufficiente di uscite (è necessario prevedere l’impiego di diverse ROM; • il dispositivo scelto ha un numero insufficiente di segnali di indirizzamento. Esempio: 13 funzioni di 10 variabili con ROM 1024x8 (10 ingressi). x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 ROM 1024x8 ROM 1024x8 O1 O2 O3 O4 O5 O6 O7 O8 O1 O2 O3 O4 O5 O6 O7 O8 z1 z9 z2 z3 z4 z5 z6 z7 z8 z10 z11 z12 z13 38 Per il secondo problema si deve ricorrere all’interconnessione a BUS, resa possibile dalla presenza di amplificatori a 3 stati sulle uscite del dispositivo e dal segnale comune di abilitazione (CS). • Il progettista deve preliminarmente decomporre le tabelle della verità in blocchi con un numero di righe pari a quello della ROM prescelta e poi programmarne tante quanti sono tali blocchi. • La multiplazione delle uscite omonime, indispensabile per ricomporre il tutto in un unico circuito, richiede poi la loro semplice interconnessione, una volta che si sia previsto un decoder per fornire a ciascuna ROM il segnale di abilitazione che le compete. • Un flag RD (Read) dovrà infine disabilitare temporaneamente il decoder in corrispondenza di ogni variazione dei segnali di indirizzamento. Esempio: Composizione modulare di una ROM di dimensioni 2048x8 con quattro ROM di dimensioni 512x8. x3 x4 x5 x6 x7 x8 x9 x10x11 x1 x2 EN A0 A1 DEC 2:4 3 2 1 0 A0 A1 A2 A3 A4 A5 A6 A7 A8 CS 39 ROM 512x8 O1 O2 O3 O4 O5 O6 O7 O8 A0 A1 A2 A3 A4 A5 A6 A7 A8 CS ROM 512x8 O1 O2 O3 O4 O5 O6 O7 O8 A0 A1 A2 A3 A4 A5 A6 A7 A8 CS ROM 512x8 O1 O2 O3 O4 O5 O6 O7 O8 A0 A1 A2 A3 A4 A5 A6 A7 A8 CS ROM 512x8 O1 O2 O3 O4 O5 O6 O7 O8 z1 z2 z3 z4 z5 z6 z7 z8 40 z2 = Sm(0, 2, 4, 7, 8) • Le uscite della ROM sono 2, tante quante le funzioni da programmare, mentre le variabili indipendenti A0 e A1 non sono sufficienti calcolare funzioni di 4 variabili. • Ciascuna ROM ha però 4 righe delle 16 a noi necessarie, quindi consente di programmare 1/4 della tabella della verità. ROM2 R.C. ROM3 z1 = 1 se NBCD > 5 ROM4 x1 x2 x4 x8 ROM1 Esercizio Progettare una R.C. a 2 uscite, funzioni entrambe di numeri del codice BCD, disponendo di ROM 4x2. x8 x4 x2 x1 z1 z2 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1 0 - - - - - - - 41 x1 x2 x4 x8 A0 A1 CS ROM1 A0 A1 CS ROM2 A0 A1 CS ROM3 A0 A1 CS ROM4 O1 O1 O1 O1 O2 O2 O2 O2 z1 z2 A1 A0 0 1 EN 2 3 42 Note • Le uscite delle ROM possono essere multiplate senza ricorrere ad un MUX avvalendosi degli amplificatori a 3 stati interni a ciascuna ROM e comandati dal CS. • Il funzionamento è corretto se e solo se i 4 comandi di CS sono mutuamente esclusivi; le configurazioni del codice 1 su 4 dovranno quindi essere alternate alla configurazione 0000 (si usa l’Enable del decoder). • Programmazione vera e propria. Vediamo ad esempio la ROM1. x1 x2 DEC 0 A0 1 2 A1 3 Prime quattro righe della tabella della verità. Problema: le funzioni non sono completamente specificate ... z1 z2