第 214 篇

考研数电·零基础讲义 第22讲(下)|SRAM、DRAM 与存储器容量扩展

约 12 分钟 4244 字 华南师范大学数字电子技术考研数电零基础讲义

考研数电·零基础讲义 · 第 22 讲(下)|SRAM、DRAM 与存储器容量扩展 学完这一讲,你能说清 SRAM 和 DRAM 的区别(为什么 DRAM 要刷新),会读 RAM 的CS′CS'⁠、R/W′R/W'控制信号,并能用多片存储器做位扩展、字扩展,算片数、画地址分配表。预计用时 100–120 分钟。

本讲地图

  • SRAM:存储矩阵 + 行/列地址译码器 + 读写控制电路;单元是"锁存器 + 门控管"(六管 CMOS 单元)。断电丢数据,但不用刷新,速度快。
  • DRAM:单元是"1 个 MOS 管 + 1 个电容",靠电荷存数,要定时刷新,读出是破坏性的;集成度高、便宜。
  • 容量扩展:位扩展(字数够、位数不够)和字扩展(位数够、字数不够),可以组合。
  • 华师怎么考:SRAM 与 DRAM 的对比、CS′CS'与R/W′R/W'的作用、扩展题(几片?地址线怎么接?片选怎么译码?)。教材对应第 5 章 5.5.1、5.5.2、5.5.4 节。

前置知识

  • 容量==字数×\times位数,地址线nn根对应2n2^n个字(见第 22 讲上)。
  • 译码器(见第 09 讲下,74HC138 或 2 线-4 线);三态输出和高阻态(见第 06 讲)。
  • SR 锁存器(见第 13 讲上);电容充放电的基本概念。

一、SRAM:用锁存器记数

大白话

SRAM(Static RAM,静态随机存储器)里每个单元是一个小"锁存器",两个反相器首尾相接,一旦存进 1 或 0,只要不断电就一直保持,不用任何额外动作,所以叫"静态"。读写都很快,缺点是每个单元要好几只晶体管,占地大、价格高。

总体结构(教材图 5.5.1)

SRAM 由三块组成:

  1. 存储矩阵:很多存储单元排成行列阵;
  2. 地址译码器:分成行译码器和列译码器两部分;
  3. 读/写控制电路(输入/输出电路):由控制信号决定读还是写。

行/列译码:为什么要拆开?

如果 10 位地址全做成一个"10 线-1024 线"译码器,要 1024 根字线,译码器太庞大。拆成两组:

  • 高几位译码选一行(字线);
  • 低几位译码在这行里再选出要读写的那几位(列选择)。

以教材的1024×41024\times4位 SRAM 为例:共1024×4=40961024\times4=4096个存储单元,排成6464行×\times 6464列。10 位地址分成两组:

  • A4∼A9A_4\sim A_9共 6 位送行译码器,26=642^6=64行,选 1 行;
  • A0∼A3A_0\sim A_3共 4 位送列译码器,24=162^4=16种,把 64 列分成 16 组(每组 4 列),选出其中 1 组共 4 个单元。

也就是64×64=4096=1024×464\times64=4096=1024\times4⁠,数字对上了。

SRAM 行列选址 行译码器 高位地址 列译码器(低位地址) 橙:被选中的字线(行) 绿:被选中的列 红:行列交点 = 被读写的单元 1024×4 位 SRAM: 64 行 × 64 列 行地址 6 位,列地址 4 位

图 1:行译码选一行(橙),列译码选列(绿),交点(红)就是被读写的单元。图中用 8×8 示意,每 2 秒换一个地址(动画循环播放)

控制信号:CS′CS'和R/W′R/W'

CS′CS' R/W′R/W' 状态
1 ×(任意) 片选无效,所有 I/O 端处于高阻态,既不能读也不能写
0 1 读:选中单元的数据送到 I/O 端
0 0 写:I/O 端上的数据写进选中单元

读法:CS′CS'读作"片选非",上面一撇表示低电平有效;R/W′R/W'读作"读/写非",高电平读、低电平写。

I/O 端既是数据输入端又是输出端(双向),内部靠三态缓冲器切换方向。CS′=1CS'=1时 I/O 端高阻,所以可以把多片 RAM 的 I/O 并联接在同一条总线上。

六管 CMOS 静态存储单元

  • T1∼T4T_1\sim T_4组成两个首尾相接的反相器(一个 SR 锁存器),负责记 1 位。
  • T5,T6T_5,T_6(以及列控制的T7,T8T_7,T_8⁠)是门控管:行线Xi=1X_i=1⁠、列线Yj=1Y_j=1时全部导通,把锁存器的QQ⁠、Q′Q'与位线BjB_j⁠、Bj′B_j'接通,才能读写。
  • 读时QQ经缓冲放大送出;写时外部数据强制改写锁存器状态。

特点:CMOS SRAM 静态功耗很低,还能把电源电压降低后继续保存数据,所以可以用电池在断电时维持——但本质上仍是易失性存储器。

⚠️ 易错:

  1. 读出不破坏数据(锁存器自保持),这与 DRAM 不同。
  2. CS′=1CS'=1时 I/O 是高阻,不是低电平。

二、DRAM:用电容记数

大白话

DRAM(Dynamic RAM,动态随机存储器)用一个小电容存电荷:有电荷是 1,没有是 0。电容很小(几皮法),而且总会漏电,所以像一个"漏水的小桶",要定期把水补满——这个操作叫刷新(再生)。这就是"动态"的含义。

单管动态存储单元

单元由 1 个 N 沟道增强型 MOS 管TT和 1 个电容CsC_s组成(教材图 5.5.4)。

单管 DRAM 存储单元与读出 位线 B T 字线 X Cs CB(位线总电容) 读:T通→Cs 与 CB 共享电荷,vB = Cs/(Cs+CB)·vCs 例:Cs/CB = 1/50,vCs = 5 V → vB ≈ 0.098 V(约 0.1 V) 读完 Cs 也只剩约 0.1 V → 破坏性读出,要放大后写回

图 2:单管 DRAM 单元。字线控制 T,Cs 存信息,CB 是整条位线的总电容

  • 写:字线高 → TT导通 → 位线上的数据经TT存入CsC_s⁠。
  • 读:字线高 → TT导通 → CsC_s与位线电容CBC_B 共享电荷。

读出时位线电压为

vB=CsCs+CB vCsv_B=\frac{C_s}{C_s+C_B}\,v_{C_s}

位线上挂着很多单元,CB≫CsC_B\gg C_s⁠,所以读出信号很小。

例 1 读出前vCs=5 Vv_{C_s}=5\ \text{V}⁠,Cs/CB=1/50C_s/C_B=1/50⁠,位线读出电压多大?

令CB=50CsC_B=50C_s⁠,则vB=CsCs+50Cs×5=551≈0.098 V≈0.1 Vv_B=\dfrac{C_s}{C_s+50C_s}\times5=\dfrac{5}{51}\approx0.098\ \text{V}\approx0.1\ \text{V}⁠。

读完后CsC_s上的电压也只剩下约 0.1 V,原来存的 5 V "丢"了——这叫破坏性读出。所以 DRAM 必须配灵敏放大器:既放大位线上的小信号,又把原来的值写回单元(再生)。

DRAM 的总体结构与刷新

教材的例子是1M×11\text{M}\times1位 DRAM(1 位输入、1 位输出):

  • 1M=2201\text{M}=2^{20}⁠,需要 20 位地址,但为了省引脚,地址分两次从同一组引脚(10 根)送入,叫"地址多路复用"。
  • 先让RAS′=0RAS'=0(行地址选通)送入A0∼A9A_0\sim A_9⁠,锁存到行地址锁存器,选中 1024 行之一;
  • 再让CAS′=0CAS'=0(列地址选通)送入A10∼A19A_{10}\sim A_{19}⁠,锁存到列地址锁存器,从这一行选 1 位。
  • R/W′=1R/W'=1读,R/W′=0R/W'=0写。

刷新:刷新计数器从 0 数到 1023,经行地址选择器依次选中每一行,把整行单元读出、放大、写回,以行为单位逐行进行,自动完成。

例 2 若要求每个单元 8 ms 内至少刷新一次,1024 行的 DRAM 平均多长时间刷新一行?

8 ms/1024≈7.8 μs8\ \text{ms}/1024\approx7.8\ \mu\text{s}⁠,即约每 7.8 μs 刷新一行(计算为举例,实际周期以器件手册为准)。

SRAM 与 DRAM 对比(必背)

项目 SRAM DRAM
存储原理 锁存器/触发器(自保持) 电容上的电荷(会漏电)
单元结构 较复杂(如 6 管) 很简单(1 管 + 1 电容)
刷新 不需要 需要,定时逐行刷新
读出 非破坏性 破坏性,需放大并写回
速度 快 较慢
集成度/价格 低、贵 高、便宜
掉电 数据丢失 数据丢失
用途 高速小容量(如高速缓存) 大容量主存

⚠️ 易错:DRAM 靠刷新保持数据,但断电后一样丢数据——RAM 都是易失性的。

三、存储器容量的扩展

为什么要扩展?

一片存储器容量不够时,用多片拼成更大的。拼之前先算:需要的容量 ÷ 一片的容量 = 片数;再判断是位数不够(位扩展),还是字数不够(字扩展),还是都不够。

位扩展:字数够、位数不够

接法:所有片的地址线、R/W′R/W'⁠、CS′CS'分别并联;每片的数据线各自引出,拼成更宽的数据。

例 3 用1024×11024\times1的 RAM 接成1024×81024\times8的 RAM,要几片?

位数从 1 变 8,8/1=88/1=8片,字数不变。8 片地址线并联,每片的 I/O 分别作为总数据线的D0∼D7D_0\sim D_7之一。总容量是单片的 8 倍。

ROM 没有R/W′R/W'⁠,其余接法与 RAM 相同。

字扩展:位数够、字数不够

例 4(教材图 5.5.14) 用 4 片256×8256\times8的 RAM 接成1024×81024\times8的 RAM。

第 1 步:算地址线。1024=2101024=2^{10}⁠,需要 10 根地址线A9∼A0A_9\sim A_0⁠;而每片只有 8 根(⁠A7∼A0A_7\sim A_0⁠,28=2562^8=256⁠)。

第 2 步:分工。低 8 位A7∼A0A_7\sim A_0接各片的地址线(4 片并联);高 2 位A9A8A_9A_8用来选哪一片,送给 2 线-4 线译码器,译出Y0′∼Y3′Y_0'\sim Y_3'低电平信号,分别接 4 片的CS′CS'⁠。

RAM 字扩展接线 2线→4线 译码器 A9 A8 RAM(1) 256×8 CS′ Y0′ RAM(2) 256×8 CS′ Y1′ RAM(3) 256×8 CS′ Y2′ RAM(4) 256×8 CS′ Y3′ 数据线 D0~D7 A0~A7 并联 低电平有效的 Y′ 每次只选中一片,其余片输出高阻,所以数据线可直接并联

图 3:字扩展。译码器每次只选中一片,其余片 I/O 高阻,数据线直接并联

第 3 步:地址分配表(由 Python 逐行验算)

片 A9A8A_9A_8 有效的Y′Y' 地址范围(二进制A9…A0A_9\ldots A_0⁠) 十进制
RAM(1) 00 Y0′Y_0' 00 00000000 ~ 00 11111111 0 ~ 255
RAM(2) 01 Y1′Y_1' 01 00000000 ~ 01 11111111 256 ~ 511
RAM(3) 10 Y2′Y_2' 10 00000000 ~ 10 11111111 512 ~ 767
RAM(4) 11 Y3′Y_3' 11 00000000 ~ 11 11111111 768 ~ 1023

第 4 步:为什么数据线能直接并联? 每片的 I/O 都有由CS′CS'控制的三态缓冲器,任何时刻只有一片的CS′=0CS'=0⁠,其余片 I/O 都是高阻,不会"打架"。

例 5 地址A9…A0=1010100101A_9\ldots A_0=1010100101(十进制 677)落在哪一片?片内地址多少?

A9A8=10A_9A_8=10 → RAM(3);低 8 位10100101=16510100101=165⁠。所以在 RAM(3) 的 165 号单元(⁠512+165=677512+165=677 ✓)。

教材思考题 R5.5.7 问:能不能反过来,用A1A0A_1A_0译码选片,A2∼A9A_2\sim A_9接各片地址线?可以,只是地址分配变成"每连续 4 个地址轮流落在 4 片上",数学上也能凑出 1024 个不同地址。

位、字都不够:组合扩展

例 6 用1K×41\text{K}\times4的 RAM 组成4K×84\text{K}\times8⁠。

  • 位数:8/4=28/4=2片并成一组(位扩展);
  • 字数:4K/1K=44\text{K}/1\text{K}=4组(字扩展);
  • 总片数2×4=82\times4=8片;
  • 需要 12 位地址:低 10 位接各片,高 2 位A11A10A_{11}A_{10}经 2 线-4 线译码器选组,每个Y′Y'同时接这一组 2 片的CS′CS'⁠。

通用公式:片数=总字数单片字数×总位数单片位数=\dfrac{\text{总字数}}{\text{单片字数}}\times\dfrac{\text{总位数}}{\text{单片位数}}⁠。

例 7 用2K×82\text{K}\times8的 ROM 构成8K×88\text{K}\times8的存储空间(4 片),各片地址范围?

字扩展,4 片,高 2 位选片(⁠A12A11A_{12}A_{11}⁠),片内 11 位。地址范围(十六进制):第 1 片 000H~7FFH,第 2 片 800H~FFFH,第 3 片 1000H~17FFH,第 4 片 1800H~1FFFH。

⚠️ 易错:

  1. 扩展先算片数,不要先画图;字扩展一定要多出片选译码;位扩展不需要译码器。
  2. 字扩展时各片的CS′CS'绝不能全接低电平,否则多片同时输出,数据线会冲突。
  3. 地址线条数=log⁡2(总字数)=\log_2(\text{总字数})⁠,不是片数。

读写一次的完整过程(SRAM)

把前面的内容串成"一次操作",考试问到"说明 RAM 的工作过程"时就这么答:

读操作:①送地址(行地址选一行,列地址选出要读的几位);②令CS′=0CS'=0⁠、R/W′=1R/W'=1⁠;③被选中单元的数据经读缓冲器送到 I/O 端,被 CPU 取走;④结束后CS′=1CS'=1⁠,I/O 回到高阻。

写操作:①送地址;②在 I/O 端放好要写的数据;③令CS′=0CS'=0⁠、R/W′=0R/W'=0⁠,数据被写进选中单元(锁存器被置成相应状态);④结束后令CS′=1CS'=1⁠。

可以看到,CS′CS'是"总开关",R/W′R/W'是"方向开关"。CS′=1CS'=1时无论R/W′R/W'是什么,RAM 都不动作。

为什么 DRAM 的地址要分两次送

一片1M×11\text{M}\times1的 DRAM 需要 20 位地址。如果 20 根地址线全部引出,加上电源、数据、控制,引脚太多、封装变大。于是把 20 位拆成"行地址 10 位 + 列地址 10 位",用同一组 10 个引脚先后送入,分别用RAS′RAS'⁠、CAS′CAS'两个信号告诉芯片"现在送来的是行地址"还是"列地址"。代价是控制电路复杂一些,好处是引脚少一半——这就是"地址多路复用"。(SRAM 速度要求高,一般不这样做。)

一道综合的对比题

题 某系统需要8K×88\text{K}\times8的存储空间,现有1K×81\text{K}\times8的 SRAM 若干片,需几片?地址线几根?译码器用什么?

解 位数已够,只需字扩展:8K/1K=88\text{K}/1\text{K}=8片。总字数8192=2138192=2^{13}⁠,需要 13 根地址线:低 10 位A9∼A0A_9\sim A_0并接到每片,高 3 位A12A11A10A_{12}A_{11}A_{10}送 3 线-8 线译码器(如 74HC138),其 8 个输出Y0′∼Y7′Y_0'\sim Y_7'分别接 8 片的CS′CS'⁠。第kk片(⁠k=0∼7k=0\sim7⁠)的地址范围是k×1024∼k×1024+1023k\times1024\sim k\times1024+1023⁠。

四、速记卡

项目 要点
SRAM 结构 存储矩阵 + 行/列译码器 + 读写控制;单元是锁存器
CS′CS' 低电平有效;=1 时 I/O 高阻
R/W′R/W' 1 读,0 写
DRAM 单元 1 管 + 1 电容;读vB=CsCs+CBvCsv_B=\frac{C_s}{C_s+C_B}v_{C_s}⁠;破坏性读出;要刷新
地址多路复用 RAS′RAS'送行地址,CAS′CAS'送列地址,省引脚
位扩展 地址、R/W′R/W'⁠、CS′CS'并联;数据线各自独立
字扩展 低位地址并联;高位地址译码产生各片CS′CS'⁠;数据线并联
片数 总字数片字数×总位数片位数\frac{\text{总字数}}{\text{片字数}}\times\frac{\text{总位数}}{\text{片位数}}

五、自测练习

1. 一个 SRAM 有 10 根地址线、8 根数据线,容量多大?(教材 R5.5.2)

答案与提示

210×8=1024×8=81922^{10}\times8=1024\times8=8192位=1=1 KB。

2. 从 SRAM 中读出数据后,原来的数据还在吗?DRAM 呢?

答案与提示

SRAM 靠锁存器自保持,读出不破坏,数据还在;DRAM 是破坏性读出,读出后单元电荷被大量转移,必须靠放大器和再生电路写回。

3. DRAM 单元读出前vCs=5 Vv_{C_s}=5\ \text{V}⁠,若Cs/CB=1/100C_s/C_B=1/100⁠,位线读出电压约多大?

答案与提示

vB=11+100×5=5101≈0.05 Vv_B=\dfrac{1}{1+100}\times5=\dfrac{5}{101}\approx0.05\ \text{V}⁠。比例越小,读出信号越小。

4. 用1024×41024\times4的 RAM 扩展成2048×82048\times8⁠,需几片?地址线几根?高位地址怎么用?

答案与提示

片数20481024×84=4\frac{2048}{1024}\times\frac84=4片;地址线log⁡22048=11\log_2 2048=11根,低 10 位A9∼A0A_9\sim A_0接各片,最高位A10A_{10}选组(⁠A10=0A_{10}=0选第一组两片,=1=1选第二组两片),每组 2 片位扩展拼成 8 位。

5. 用16K×816\text{K}\times8的存储器组成64K×1664\text{K}\times16⁠,需要几片?共需几根地址线?

答案与提示

字扩展64/16=464/16=4⁠,位扩展16/8=216/8=2⁠,共4×2=84\times2=8片;地址线log⁡265536=16\log_2 65536=16根(片内 14 根 + 选片 2 根)。

6. 4 片256×8256\times8字扩展成1024×81024\times8⁠,若A9A8=01A_9A_8=01⁠,选中哪一片?该片地址范围的十进制是多少?

答案与提示

A9A8=01A_9A_8=01 → Y1′=0Y_1'=0 → RAM(2),地址范围 256 ~ 511(01 00000000 ~ 01 11111111)。

7. 为什么字扩展时多片 RAM 的数据线可以直接并联,位扩展时不行?

答案与提示

字扩展时任何时刻只有一片被选中(⁠CS′=0CS'=0⁠),其余片 I/O 为高阻,总线上只有一个驱动,因此可并联;位扩展时所有片同时工作,每片提供数据的不同位,必须各占一根数据线,并联就乱了。

8.(华师真题风格) 比较 SRAM 与 DRAM 的存储原理、优缺点和用途;解释 DRAM 为什么要刷新。

答案与提示

要点见"SRAM 与 DRAM 对比"表。刷新:DRAM 靠电容存电荷,电容很小又有漏电流,时间一长电荷会漏掉导致 1 变成 0,所以要定时逐行读出、放大并写回,补充电荷。


下一讲预告

第 23 讲介绍可编程逻辑器件(PLD):PROM 其实就是"固定与阵列 + 可编程或阵列",PLA、PAL、GAL、CPLD、FPGA 在此基础上让"与阵列"也可编程,一起看它们怎么实现逻辑函数。

评论

还没有评论。 来写第一条。

留下一条评论

选填,不会公开

纯文本,链接会自动识别。