Memorias a3 a2 a1 a0 d3 1 1 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 0 1 1 1 0 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1. ROM •Read Only Memory (ROM) •Basado en matriz AND fija (decodificador completo) + matriz OR programable (contenido de la ROM) •Puede ser usada como: •Memoria no volatil (para µP, µC...) de sólo lectura •Implementar funciones lógicas como sumas de productos •LUT (Look Up Table) Ejemplo: Esquemático funcional ROM 16x4 bits Decodificador (Fijo) Palabras (Programable) a3 a2 a1 a0 d2 1 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 d1 0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 d0 1 0 1 1 1 0 0 0 1 1 0 0 1 1 1 0 d3 d2 d1 d0 d 3 = a3 ⋅ a2 ⋅ a1 ⋅ a0 + a3 ⋅ a2 ⋅ a1 ⋅ a0 + a3 ⋅ a2 ⋅ a1 ⋅ a0 + a3 ⋅ a2 ⋅ a1 ⋅ a0 + a3 ⋅ a2 ⋅ a1 ⋅ a0 + a3 ⋅ a2 ⋅ a1 ⋅ a0 + a3 ⋅ a2 ⋅ a1 ⋅ a0 + a3 ⋅ a2 ⋅ a1 ⋅ a0 15 d 2 = ∑ bi ⋅ Ai ; bi = {'0' , '1'} ; A0 = a3 ⋅ a2 ⋅ a1 ⋅ a0 ; A1 = a3 ⋅ a2 ⋅ a1 ⋅ a0 ;... ; A15 = a3 ⋅ a2 ⋅ a1 ⋅ a0 i =0 d1 = ... d 0 = ... Ejemplo: ROM 4x4 bits, Pseudo-CMOS VDD VDD ab 11 10 01 00 a3 a2 a1 a0 d3 d2 d1 d0 o1 o2 o3 o4 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0 o1 = a ⋅ b = a + b o2 = a ⋅ b + a ⋅ b = b a b o1 o2 o3 o4 o3 = a ⋅ b + a ⋅ b + a ⋅ b = a ⋅ b o4 = 0 •La última máscara (Metal) es configurable para cambiar el contenido de la ROM Ejemplo: ROM 4x4 bits, precharge-evaluation Ejemplo: EPROM 4x4 bits, pseudo-CMOS •VPP/VDD es la tensión de programación (fase de programación) o alimentación (fase ejecución) •Los puertos o[1:4] son de entrada a ‘0’ o ‘1’ durante la fase de grabación VDD φ VDD VDD Prog VPP/VDD φ a o1 b o2 o3 o4 •En una ROM: •La última máscara (Metal) es configurable para cambiar el contenido de la ROM •En una EPROM: •Se usa un transistor con puerta flotante •Para la grabación se usa una tensión Vpp, para acumular o no electrones en la puerta flotante •Aquellos transistores con la puerta flotante cargada, no conducen •Borrado con ultravioleta (20 minutos) VGS=VPP - GND n+ e- - p VGS=V DD VDD n+ B Programación GND - - - n+ UV VDD n+ p B Ejecución - n+ n+ p B Borrado a b o1 o2 o3 o4 2. SRAM •Static Random Access Memory (SRAM) •Bit basado en biestable (6 MOS por bit) •Es una memoria volátil, de lectura/escritura •Para ampliar el número de bits por palabra, se usan varias matrices, con un amplificador R/W por bit y compartiendo los decodificadores •Puede usarse: •Memoria de datos (para µP, µC...) •Implementar funciones lógicas como LUT Ejemplo: Amplificador R/W diferencial VDD VDD WE VDD OE b b d b b OE WE aL d Lectura (OE=‘0’) VDD b VDD VDD WE OE b Amplificador b R/W b OE WE Decodicador columnas WE OE CS d aH Ciclo lectura / escritura SRAM (asíncrona) ... ...... ... ... ... ... ... ... ... ... A ... ... ... ... ... ... ... ... ... CS ... ... ... ... aL Decodificador de filas d Decodicador filas Escritura (WE=‘0’) dm-1 d1 d0 A1 A2 WE OE D D1 D2 Decodificador de columnas aH Escritura Lectura 3. DRAM •Dynamic Random Access Memory (DRAM) •Bit basado en carga en capacidad (1 MOS + 1 Cbit por bit) •La capacidad Cbit suele ser una Cj parásita •Es una memoria volátil, de lectura/escritura •Necesita refresco periódico, para evitar la descarga de Cbit •La lectura es destructiva. Necesita una escritura después •Puede usarse: •Memoria de datos (para µP, µC...) •Implementar funciones lógicas como LUT •El bus de direcciones suele ir multiplexado (filas/columnas) •Método rápido de acceso sin cambiar columna (misma página) Capacidad Cj Parásita (0.30 fF) Data Data Select Select a d Vbit n+ Decodicador filas Registro RAS V bit(t ) = VDD − VTn − ∆Vbit = 1.6 ∆Vbit ⋅ t = 0.4V RAS CAS CS Amplificadores R/W y refresco Decodicador columnas CS CAS Registro VF - Cj ID-INV B(VSS) V ID N ID P ID-INV Cj0/A A VF Cj = p µs Trefresco = 250ns ⇒ f refresco = 4MHz Cj/A + WE OE Cj = 0.3 fF I D − INV = 0.5 nA I D − INV ⋅ t = VDD − VTn − ∆Vbit ⋅ t Cj n+ C j0 1 − VF φ B n ⋅A 1/2 step junction 1/3 linear junction φB ≈ 0.7V n = C BS1 ≈ C BM 0 ⋅ AS ID-INV C BD1 ≈ C BM 0 ⋅ AD VD + VD _ Ciclo lectura / escritura DRAM (asíncrona) CS A A1ROW A1COL A2ROW A2COL RAS CAS WE OE Vbit=VDD-VTn Cbit ‘0’ Vbit Cbit ‘1’ ‘1’ Vbit=VDD -VTn Cbit D1 D D2 Escritura Lectura Ciclo refresco DRAM (asíncrona) Ccol Vcol=0V Vcol Ccol Amplificador lectura Amplificador + Vbit = Qbit = VDD − VTn Cbit _ Vcol=VDD Ccol Amplificador escritura Ccol A A1ROW RAS CAS + Cbit CS Vcol = 0V WE _ OE Vbit = Vbit = Vcol ⇒ Qbit − Qcol Cbit _ D + + Cbit Ccol Vcol = _ Qcol = Vbit Ccol Qbit − Qcol Qcol Ccol Cbit = ⇒ Qcol = ⋅ Qcol ⇒ Vcol = ⋅ (VDD − VTn ) ≈ 0V Cbit Ccol Cbit + Ccol Cbit + Ccol Refresco