半导体存储器

半导体存储器用来存储大量的二进制信息. 根据读写功能可以分为只读存储器 (Read-only Memory, ROM) 和随机存储器 (Random Access Memory, RAM) 两大类.
存储器中的每一个存储单元都有一个唯一的地址, 只有被输入地址指定时, 该存储单元才能与公共的输入输出针脚接通, 进行读写操作.

ROM正常工作的时候只能读取, 不能修改电路内存储的数据. 但要注意这并不意味着ROM是无法修改的.
ROM的电路结构包含存储矩阵, 地址译码器和输出缓冲器三个组成部分. 存储单元可以用二极管构成, 也可以用双极型三极管或MOS管构成. ROM主要有掩模只读存储器, 可编程只读存储器和可擦除的可编程只读存储器 (EPROM) 三类.

掩模只读存储器

掩模只读存储器是采用掩模工艺制作的, 其中的存储数据是由制作过程中使用的掩模板决定的. 因此, 掩模ROM在出厂时内部数据就已经被固化了, 无法再进行任何修改.
如图是一个4×4 bit的二极管ROM电路, 可以存储4个4-bit的数据. 这个电路的一个关键点在于: 线路的每一个交叉点都是一个存储单元, 交叉点处有二极管连接时相当于存1, 没有接二极管时相当于存0. (注意输出缓冲器的D0~D3都是经过了一个反相输出的三态)

地址 数据
A1 A0 D3 D2 D1 D0
0 0 0 1 0 1
0 1 1 0 1 1
1 0 0 1 0 0
1 1 1 1 1 0

也可以采用MOS管制作. 上图的存储矩阵用MOS管制作则如下图所示:

可编程只读存储器 (PROM)

可编程只读存储器 (Programmable Read-Only Memory, PROM) 在出厂的时候, 每个交叉点都连接了如下图所示的存储单元. 该单元由一个三极管和熔丝构成, 在熔丝没有断开的情况下, 相当于存入1.
配合读/写放大器, 如下图所示, 可以在写入的时候通过通入较大的脉冲电流来烧断熔丝, 实现1改为0的操作.
这种存储器只能写入一次, 之后便不能复原重新写入数据.

可擦除的可编程只读存储器 (EPROM)

PROM只能写入一次, 但是在研制过程中需要经常修改存储器的内容, 于是EPROM应运而生.
EPROM主要有两种: 用紫外线擦除的可编程ROM (Ultra-Violet Erasable Programmable Read-Only Memory, UVEPROM) , 用电信号的可擦除的PROM (Electrically Erasable Programmable ROM, EEPROM) 和快闪存储器 (Flash Memory) .

UVEPROM

EPROM和PROM的主要区别在于存储单元更换成了叠栅注入MOS管 (Stacked-gate Injection Metal-Oxide-Semiconductor, SIMOS) . 原理图如下图所示:
这是一个N沟道增强型的MOS管, 和一般MOS管的区别在于有两个重叠的栅极, 控制栅极Gc和浮置栅极Gf. 控制栅极用于控制读出和写入, 浮置栅极用于长期保存注入电荷, 是实现数据存储的关键. 两者的配合使得可擦写成为可能.
一般的N沟道增强型MOS管在G极 (注意G极与两个N沟道所在平面之间还隔着一层绝缘层) 加上高电平后, G极下方形成一个电子的通道, 使得源极S和漏极D之间导通. 而对于SIMOS, 由于Gf的加入, 情况就变得多样了. 在Gf没有储存负电荷的情况下, 与一般MOS管无异, 设这个时候的导通电压为V1;而在Gf储存了负电荷的情况下, 则需要Gc加上更高的电压V2才能将该管导通.如果让SIMOS工作在V1~V2之间, 则可以通过控制Gf的负电荷的有无来实现该管的行为, 相当于接入了MOS管 (Gf没有存储负电荷) 和没有接入MOS管 (Gf存储负电荷) .
那么负电荷的注入和释放是怎么实现的呢?
当S和D之间加以较高的电压 (约+20~+25V) 时, 将发生雪崩击穿现象. 如果同时在控制栅极上加以高压脉冲, 则在栅极电场的作用下, 一些速度较高的电子便穿越绝缘层到达浮置栅极, 被浮置栅极俘获而形成注入电荷.
如果用一定波长的紫外线或X射线照射SIMOS管的栅极氧化层, 则二氧化硅绝缘层中将产生电子-空穴对, 为浮置栅极上的电荷提供泄放通道, 使之放电, 完成对负电荷的释放.

EEPROM

EEPROM采用的是如下图所示的存储单元, 由一个浮栅隧道氧化层MOS管 (Floating gate Tunnel Oxide, Flotox) 和一个普通的MOS管组成.
Flotox管的结构如下图所示, 与SIMOS管类似, 主要的区别是浮置栅极与源极S有了一个交叠区, 交叠区之间的绝缘氧化层很薄 (20nm以下) , 且面积很小, 从而保证该区域的电容足够小. 这个区域称为隧道区. 当隧道区的电场强度大到一定程度时 (>10^7 V/cm) , 便在漏极和浮置栅极之间出现导电隧道, 电子可以双向通过, 形成电流. 这也是为什么隧道区要做得很薄的原因, 这样可以在一个常规的电压下获得很大的场强. 而且浮置栅极与漏极之间的电压是通过加在控制栅极上来实现的, 为了保证大部分电压能够分到浮置栅极和漏极之间, 需要保证浮置栅极和漏极之间的电容足够小于浮置栅极和控制栅极之间的电容.
Flotox管又是怎么实现负电荷的注入和释放的呢?首先, 我们需要保证隧道效应的存在, 所以要在Gc和漏极D之间加一个高电压 (20V) ;然后, 在隧道效应存在的情况下, 通过控制电场的方向来控制负电荷的注入和释放. 在Gc为20V而D为0V时, 负电荷注入, 在Gc为0V而D为20V时, 负电荷释放.
而EEPROM的存储单元还引入了一个MOS管主要是为了保护Flotox管, 延长Flotox管的使用寿命. 正常使用时如下图的 (a) 所示, 只需在Flotox管的Gc上加+3V和普通的MOS管T2的G极上加+5V, Flotox管的导通或截止取决于该管是否存储了负电荷. 在写入的情况下, T2管的G极, 即字线W上加+20V的电压维持隧道效应 (10ms) , 通过控制T1管的Gc和T2管连接的位线的电压关系, 如下图的 (b) 和 © 所示, 实现对负电荷的注入和释放.

Flash Memory

Flash相比EEPROM主要的改进是提高了集成度, 把Flotox管和MOS管集成到了一个叠栅MOS管中. 写入0的方法为UVEPROM的雪崩注入方式, 不过雪崩击穿的电压降低至源极-漏极间的6V和控制栅极的12V, 而擦除 (写入1) 的方式为EEPROM的隧道效应方式, 在源极上加12V和在Gc极上加0V.
通过把源极并联的方式可以实现Flash的快速擦除, 但是写入依然比较慢, 所以Flash不能满足快速写入和读出的需求, 通常情况下仍然作为只读存储器.

随机存储器支持随时读写任何一个指定的存储单元, 但它也存在数据易失性的缺点. RAM又分为静态随机存储器SRAM和动态随机存储器DRAM两大类.

静态随机存储器SRAM

如下图所示为一个1024×4位SRAM电路, SRAM电路通常由存储矩阵, 地址译码器 (行地址译码器和列地址译码器) 和读/写控制电路. 行地址译码器负责选字线 (图中使用的是10位地址的A3~A8) , 列地址译码器负责选字线上的某几位 (图中使用的是10位地址的A0~A2和A9) . 读/写控制器的R/W‘信号负责控制读写, CS’负责控制RAM的使能.
从上图可知, SRAM的电路结构宏观上和ROM电路没有太大的差别, 主要的差别还是在存储单元上. 如下图所示为六管NMOS的SRAM的存储单元: T1~T4构成一个SR锁存器, T2和T4提供高电位的维持, T1和T3提供状态的循环反相. T5和T6为门控管, 作为模拟开关, 由字线Xi控制. 当Xi为高电平时, T5和T6导通, Q'和Q的状态传输到位线Bj'和Bj上. T7和T8为同一位线共用的门控管, 用于和读/写缓冲放大器连接, 这两个门控管的开关由位线Yj控制. 最后还要由读/写控制电路控制读写. 在CS'=0的情况下, 根据R/W'的状态进行读写的切换. R/W'=1时, 右边的读取电路A1选通, Q最后被输送到I/O处;R/W'=0时, 两侧的写入电路A2和A3选通, I/O的状态最后被输送到Q和Q'处. 由于CMOS电路具有微功耗的特点, 尽管他的制造工艺比NMOS电路复杂, 但在大容量的静态存储器中几乎都采用CMOS存储单元. 如下图为CMOS静态存储单元的电路, 其结构与六管NMOS电路相近, 主要的差别是T2和T4换成了P沟道增强型MOS管. T1~T4构成的是两个CMOS反相器相互反向输出从而维持电路状态的结构. 而在高速系统 (如ECL系统) 中, 常用的SRAM为双极型SRAM, 其存储单元结构如下图所示: 位线X控制T1和T2两个三极管是否与位线B和B'接通, X接低电平 (约0.3V) , 位线B和B‘接1.4V时, 由于基极到e21和e11导通, T1和T2的基极电压被钳在1V左右 (如果导通压降为0.7V) , 则e12和e22处于反向偏置状态, 存储单元与位线隔离;而当X接高电平 (约3V) , 高于位线的1.4V时, e12和e22导通, 存储单元与位线接通. 这样字线X就实现了对存储单元的隔离与选中.
位线均处于1.4V时为读取状态, 不会破坏存储单元的状态. 而要改变存储单元的状态, 则需根据需要调整位线的电压至高电平+3V或低电平+0.3V.

动态随机存储器 (DRAM)

动态存储单元

RAM的动态存储单元是利用MOS管栅极电容可以存储电荷的原理制成的. 由于存储单元的结构能够做的非常简单, 所以在大容量, 高集成度的RAM中的得到了普遍的应用. 但由于栅极电容的容量很小 (通常仅为几皮法) , 而漏电流又不可能绝对等于零, 所以电荷保存的时间有限. 为了及时补充漏掉的电荷以避免存储的信号丢失, 必须定时地给栅极电容笔冲电荷, 通常将这种操作称为刷新或再生. 因此DRAM工作时必须辅以必要的刷新控制电路 (控制电路通常时做在DRAM芯片内部的) , 同时也使操作复杂化了. 尽管如此, DRAM仍然时目前大容量RAM的主流产品.
目前常用的动态存储单元是单MOS管动态存储单元, 这样便于提高集成度, 提高产品的容量. 但外围控制电路要复杂不少. 如下图所示为一个单管动态存储单元: CS为实际的MOS管的栅极电容, CB为位线上的电容. 通过给字线通高电平, T导通, CS向CB放电, 相当于读取其存储的状态. 但是这是一种破坏性的读取, 尤其是在实际的电路中, CB要比CS大得多. 而且即使CS原来是高电平, 导通后因为CB»CS, 只能读到细微的电压升高. 为此, 需要一个外围电路来完成对信号的放大和状态的恢复, 称为灵敏恢复/读出放大电路. 如下图所示为灵敏恢复/读出放大电路的结构: 主要包含一个由T1~T4组成的正反馈放大器, T5~T7三个门控管和提供参考电平VR的虚单元. VR为介于高, 低电平之间.
首先介绍一下T1~T4组成的正反馈放大器的一个特性. 当B和B'的电压不平衡时, 在ΦL输入正脉冲时, T2和T4被导通, 这种不平衡将被放大, 接着ΦS输入正脉冲, 这种不平衡放大到极限, 一个为高电平一个为低电平. 比如, 一开始B>B', 那么在ΦL和ΦS依次输入足够宽的正脉冲后, B将升高到高电平, B‘降低到低电平.
灵敏恢复/读出放大器的读出过程如下图所示: 主要分四个阶段:

  1. ΦR和ΦF输入正脉冲
  2. ΦW输入正脉冲
  3. ΦS输入正脉冲
  4. ΦL输入正脉冲

发生的操作依次为:

  1. CB和CB'的充电阶段, 此时VC<sub>B</sub>和VC<sub>B‘</sub>相等
  2. 选中字线读取存储单元状态的阶段, 此时VC<sub>B</sub>和VC<sub>B‘</sub>出现差异
  3. 放大读出出来的状态的阶段, 此时VC<sub>B</sub>和VC<sub>B‘</sub>的差异被放大
  4. 恢复CS状态的阶段, VC<sub>B</sub>和VC<sub>B‘</sub>的差异被放大到极限, 差为VH-VL, 同时存储单元的状态得到恢复

而写入的过程也相对简单, 最简单的方案是: 只要保持B和B‘在所需的电平, ΦW输入正脉冲即完成对存储单元状态的更新.

DRAM的总体结构

DRAM的总体结构如下图, 为一个64Kx1位DRAM: 主要的要点有:

  1. 为了压缩地址规模, 采用分时输入, 由时钟发生器的RAS‘和CAS’控制. 首先令RAS‘=0, 输入地址的低8位, 再令CAS’=0, 输入地址的高八位, 同时A0~A7送到行地址译码器, A7送到A7寄存器. 这里A7主要用来根据奇偶选择从那块存储矩阵选取行. 经过行地址译码器和列地址译码器, 以及A7寄存器的控制, 特定的一个bit被选中.
  2. WE'=1时进行读操作, WE‘=0时进行写操作, 并有对应的缓冲器, 锁存器.

位扩展方式

在字数足够而每个字的位数不足时使用, 如下图为用8片1024×1位的RAM接成了一个1024×8位的RAM, 只需要将8片的所有地址线, R/W', CS'分别并联起来.

字扩展方式

在位数足够而字数不足时使用, 如下图为用4片256×8位的RAM扩展成1024×8位RAM, 除了将所有的地址线和R/W'并联外, 还要使用额外的两个位A8和A9, 搭配2线-4线译码器, 对4片RAM的CS‘进行控制, 实现对每一片RAM的地址划分.

存储器的地址可以看作自变量, 而存储器的输出可以看作因变量, 内部存储矩阵存储的是我们所需的函数值表. 这样看的话, 存储器就可以用来作为一个用于特定函数的计算器. 比如在对八字段数码管的控制电路中就可以使用存储器来简化我们的设计. 如下图所示:

  • semiconductor_memory.txt
  • Last modified: 5 months ago
  • by daizhirui