第 214 篇
考研数电·零基础讲义 第22讲(下)|SRAM、DRAM 与存储器容量扩展
考研数电·零基础讲义 · 第 22 讲(下)|SRAM、DRAM 与存储器容量扩展 学完这一讲,你能说清 SRAM 和 DRAM 的区别(为什么 DRAM 要刷新),会读 RAM 的、控制信号,并能用多片存储器做位扩展、字扩展,算片数、画地址分配表。预计用时 100–120 分钟。
本讲地图
- SRAM:存储矩阵 + 行/列地址译码器 + 读写控制电路;单元是"锁存器 + 门控管"(六管 CMOS 单元)。断电丢数据,但不用刷新,速度快。
- DRAM:单元是"1 个 MOS 管 + 1 个电容",靠电荷存数,要定时刷新,读出是破坏性的;集成度高、便宜。
- 容量扩展:位扩展(字数够、位数不够)和字扩展(位数够、字数不够),可以组合。
- 华师怎么考:SRAM 与 DRAM 的对比、与的作用、扩展题(几片?地址线怎么接?片选怎么译码?)。教材对应第 5 章 5.5.1、5.5.2、5.5.4 节。
前置知识
- 容量字数位数,地址线根对应个字(见第 22 讲上)。
- 译码器(见第 09 讲下,74HC138 或 2 线-4 线);三态输出和高阻态(见第 06 讲)。
- SR 锁存器(见第 13 讲上);电容充放电的基本概念。
一、SRAM:用锁存器记数
大白话
SRAM(Static RAM,静态随机存储器)里每个单元是一个小"锁存器",两个反相器首尾相接,一旦存进 1 或 0,只要不断电就一直保持,不用任何额外动作,所以叫"静态"。读写都很快,缺点是每个单元要好几只晶体管,占地大、价格高。
总体结构(教材图 5.5.1)
SRAM 由三块组成:
- 存储矩阵:很多存储单元排成行列阵;
- 地址译码器:分成行译码器和列译码器两部分;
- 读/写控制电路(输入/输出电路):由控制信号决定读还是写。
行/列译码:为什么要拆开?
如果 10 位地址全做成一个"10 线-1024 线"译码器,要 1024 根字线,译码器太庞大。拆成两组:
- 高几位译码选一行(字线);
- 低几位译码在这行里再选出要读写的那几位(列选择)。
以教材的位 SRAM 为例:共个存储单元,排成行 列。10 位地址分成两组:
- 共 6 位送行译码器,行,选 1 行;
- 共 4 位送列译码器,种,把 64 列分成 16 组(每组 4 列),选出其中 1 组共 4 个单元。
也就是,数字对上了。
图 1:行译码选一行(橙),列译码选列(绿),交点(红)就是被读写的单元。图中用 8×8 示意,每 2 秒换一个地址(动画循环播放)
控制信号:和
| 状态 | ||
|---|---|---|
| 1 | ×(任意) | 片选无效,所有 I/O 端处于高阻态,既不能读也不能写 |
| 0 | 1 | 读:选中单元的数据送到 I/O 端 |
| 0 | 0 | 写:I/O 端上的数据写进选中单元 |
读法:读作"片选非",上面一撇表示低电平有效;读作"读/写非",高电平读、低电平写。
I/O 端既是数据输入端又是输出端(双向),内部靠三态缓冲器切换方向。时 I/O 端高阻,所以可以把多片 RAM 的 I/O 并联接在同一条总线上。
六管 CMOS 静态存储单元
- 组成两个首尾相接的反相器(一个 SR 锁存器),负责记 1 位。
- (以及列控制的)是门控管:行线、列线时全部导通,把锁存器的、与位线、接通,才能读写。
- 读时经缓冲放大送出;写时外部数据强制改写锁存器状态。
特点:CMOS SRAM 静态功耗很低,还能把电源电压降低后继续保存数据,所以可以用电池在断电时维持——但本质上仍是易失性存储器。
⚠️ 易错:
- 读出不破坏数据(锁存器自保持),这与 DRAM 不同。
- 时 I/O 是高阻,不是低电平。
二、DRAM:用电容记数
大白话
DRAM(Dynamic RAM,动态随机存储器)用一个小电容存电荷:有电荷是 1,没有是 0。电容很小(几皮法),而且总会漏电,所以像一个"漏水的小桶",要定期把水补满——这个操作叫刷新(再生)。这就是"动态"的含义。
单管动态存储单元
单元由 1 个 N 沟道增强型 MOS 管和 1 个电容组成(教材图 5.5.4)。
图 2:单管 DRAM 单元。字线控制 T,Cs 存信息,CB 是整条位线的总电容
- 写:字线高 → 导通 → 位线上的数据经存入。
- 读:字线高 → 导通 → 与位线电容 共享电荷。
读出时位线电压为
位线上挂着很多单元,,所以读出信号很小。
例 1 读出前,,位线读出电压多大?
令,则。
读完后上的电压也只剩下约 0.1 V,原来存的 5 V "丢"了——这叫破坏性读出。所以 DRAM 必须配灵敏放大器:既放大位线上的小信号,又把原来的值写回单元(再生)。
DRAM 的总体结构与刷新
教材的例子是位 DRAM(1 位输入、1 位输出):
- ,需要 20 位地址,但为了省引脚,地址分两次从同一组引脚(10 根)送入,叫"地址多路复用"。
- 先让(行地址选通)送入,锁存到行地址锁存器,选中 1024 行之一;
- 再让(列地址选通)送入,锁存到列地址锁存器,从这一行选 1 位。
- 读,写。
刷新:刷新计数器从 0 数到 1023,经行地址选择器依次选中每一行,把整行单元读出、放大、写回,以行为单位逐行进行,自动完成。
例 2 若要求每个单元 8 ms 内至少刷新一次,1024 行的 DRAM 平均多长时间刷新一行?
,即约每 7.8 μs 刷新一行(计算为举例,实际周期以器件手册为准)。
SRAM 与 DRAM 对比(必背)
| 项目 | SRAM | DRAM |
|---|---|---|
| 存储原理 | 锁存器/触发器(自保持) | 电容上的电荷(会漏电) |
| 单元结构 | 较复杂(如 6 管) | 很简单(1 管 + 1 电容) |
| 刷新 | 不需要 | 需要,定时逐行刷新 |
| 读出 | 非破坏性 | 破坏性,需放大并写回 |
| 速度 | 快 | 较慢 |
| 集成度/价格 | 低、贵 | 高、便宜 |
| 掉电 | 数据丢失 | 数据丢失 |
| 用途 | 高速小容量(如高速缓存) | 大容量主存 |
⚠️ 易错:DRAM 靠刷新保持数据,但断电后一样丢数据——RAM 都是易失性的。
三、存储器容量的扩展
为什么要扩展?
一片存储器容量不够时,用多片拼成更大的。拼之前先算:需要的容量 ÷ 一片的容量 = 片数;再判断是位数不够(位扩展),还是字数不够(字扩展),还是都不够。
位扩展:字数够、位数不够
接法:所有片的地址线、、分别并联;每片的数据线各自引出,拼成更宽的数据。
例 3 用的 RAM 接成的 RAM,要几片?
位数从 1 变 8,片,字数不变。8 片地址线并联,每片的 I/O 分别作为总数据线的之一。总容量是单片的 8 倍。
ROM 没有,其余接法与 RAM 相同。
字扩展:位数够、字数不够
例 4(教材图 5.5.14) 用 4 片的 RAM 接成的 RAM。
第 1 步:算地址线。,需要 10 根地址线;而每片只有 8 根(,)。
第 2 步:分工。低 8 位接各片的地址线(4 片并联);高 2 位用来选哪一片,送给 2 线-4 线译码器,译出低电平信号,分别接 4 片的。
图 3:字扩展。译码器每次只选中一片,其余片 I/O 高阻,数据线直接并联
第 3 步:地址分配表(由 Python 逐行验算)
| 片 | 有效的 | 地址范围(二进制) | 十进制 | |
|---|---|---|---|---|
| RAM(1) | 00 | 00 00000000 ~ 00 11111111 | 0 ~ 255 | |
| RAM(2) | 01 | 01 00000000 ~ 01 11111111 | 256 ~ 511 | |
| RAM(3) | 10 | 10 00000000 ~ 10 11111111 | 512 ~ 767 | |
| RAM(4) | 11 | 11 00000000 ~ 11 11111111 | 768 ~ 1023 |
第 4 步:为什么数据线能直接并联? 每片的 I/O 都有由控制的三态缓冲器,任何时刻只有一片的,其余片 I/O 都是高阻,不会"打架"。
例 5 地址(十进制 677)落在哪一片?片内地址多少?
→ RAM(3);低 8 位。所以在 RAM(3) 的 165 号单元( ✓)。
教材思考题 R5.5.7 问:能不能反过来,用译码选片,接各片地址线?可以,只是地址分配变成"每连续 4 个地址轮流落在 4 片上",数学上也能凑出 1024 个不同地址。
位、字都不够:组合扩展
例 6 用的 RAM 组成。
- 位数:片并成一组(位扩展);
- 字数:组(字扩展);
- 总片数片;
- 需要 12 位地址:低 10 位接各片,高 2 位经 2 线-4 线译码器选组,每个同时接这一组 2 片的。
通用公式:片数。
例 7 用的 ROM 构成的存储空间(4 片),各片地址范围?
字扩展,4 片,高 2 位选片(),片内 11 位。地址范围(十六进制):第 1 片 000H~7FFH,第 2 片 800H~FFFH,第 3 片 1000H~17FFH,第 4 片 1800H~1FFFH。
⚠️ 易错:
- 扩展先算片数,不要先画图;字扩展一定要多出片选译码;位扩展不需要译码器。
- 字扩展时各片的绝不能全接低电平,否则多片同时输出,数据线会冲突。
- 地址线条数,不是片数。
读写一次的完整过程(SRAM)
把前面的内容串成"一次操作",考试问到"说明 RAM 的工作过程"时就这么答:
读操作:①送地址(行地址选一行,列地址选出要读的几位);②令、;③被选中单元的数据经读缓冲器送到 I/O 端,被 CPU 取走;④结束后,I/O 回到高阻。
写操作:①送地址;②在 I/O 端放好要写的数据;③令、,数据被写进选中单元(锁存器被置成相应状态);④结束后令。
可以看到,是"总开关",是"方向开关"。时无论是什么,RAM 都不动作。
为什么 DRAM 的地址要分两次送
一片的 DRAM 需要 20 位地址。如果 20 根地址线全部引出,加上电源、数据、控制,引脚太多、封装变大。于是把 20 位拆成"行地址 10 位 + 列地址 10 位",用同一组 10 个引脚先后送入,分别用、两个信号告诉芯片"现在送来的是行地址"还是"列地址"。代价是控制电路复杂一些,好处是引脚少一半——这就是"地址多路复用"。(SRAM 速度要求高,一般不这样做。)
一道综合的对比题
题 某系统需要的存储空间,现有的 SRAM 若干片,需几片?地址线几根?译码器用什么?
解 位数已够,只需字扩展:片。总字数,需要 13 根地址线:低 10 位并接到每片,高 3 位送 3 线-8 线译码器(如 74HC138),其 8 个输出分别接 8 片的。第片()的地址范围是。
四、速记卡
| 项目 | 要点 |
|---|---|
| SRAM 结构 | 存储矩阵 + 行/列译码器 + 读写控制;单元是锁存器 |
| 低电平有效;=1 时 I/O 高阻 | |
| 1 读,0 写 | |
| DRAM 单元 | 1 管 + 1 电容;读;破坏性读出;要刷新 |
| 地址多路复用 | 送行地址,送列地址,省引脚 |
| 位扩展 | 地址、、并联;数据线各自独立 |
| 字扩展 | 低位地址并联;高位地址译码产生各片;数据线并联 |
| 片数 |
五、自测练习
1. 一个 SRAM 有 10 根地址线、8 根数据线,容量多大?(教材 R5.5.2)
答案与提示
位 KB。
2. 从 SRAM 中读出数据后,原来的数据还在吗?DRAM 呢?
答案与提示
SRAM 靠锁存器自保持,读出不破坏,数据还在;DRAM 是破坏性读出,读出后单元电荷被大量转移,必须靠放大器和再生电路写回。
3. DRAM 单元读出前,若,位线读出电压约多大?
答案与提示
。比例越小,读出信号越小。
4. 用的 RAM 扩展成,需几片?地址线几根?高位地址怎么用?
答案与提示
片数片;地址线根,低 10 位接各片,最高位选组(选第一组两片,选第二组两片),每组 2 片位扩展拼成 8 位。
5. 用的存储器组成,需要几片?共需几根地址线?
答案与提示
字扩展,位扩展,共片;地址线根(片内 14 根 + 选片 2 根)。
6. 4 片字扩展成,若,选中哪一片?该片地址范围的十进制是多少?
答案与提示
→ → RAM(2),地址范围 256 ~ 511(01 00000000 ~ 01 11111111)。
7. 为什么字扩展时多片 RAM 的数据线可以直接并联,位扩展时不行?
答案与提示
字扩展时任何时刻只有一片被选中(),其余片 I/O 为高阻,总线上只有一个驱动,因此可并联;位扩展时所有片同时工作,每片提供数据的不同位,必须各占一根数据线,并联就乱了。
8.(华师真题风格) 比较 SRAM 与 DRAM 的存储原理、优缺点和用途;解释 DRAM 为什么要刷新。
答案与提示
要点见"SRAM 与 DRAM 对比"表。刷新:DRAM 靠电容存电荷,电容很小又有漏电流,时间一长电荷会漏掉导致 1 变成 0,所以要定时逐行读出、放大并写回,补充电荷。
下一讲预告
第 23 讲介绍可编程逻辑器件(PLD):PROM 其实就是"固定与阵列 + 可编程或阵列",PLA、PAL、GAL、CPLD、FPGA 在此基础上让"与阵列"也可编程,一起看它们怎么实现逻辑函数。
评论
还没有评论。 来写第一条。