行列寻址 Memory · 8×8 位阵列

3 根地址线分时送行 / 列 → RAS / CAS → 64 个单元,读回 I love U
核心:64 个单元若各给一根地址线需要 6 根;DRAM 把地址拆成行 3 位 + 列 3 位,共用同一组 ADDR[2:0] 引脚分时传送 —— RAS ↑ 先把行号锁进行地址寄存器并拉高一条字线 WL,整行 8 位被灵敏放大器读进行缓冲;随后 CAS ↑ 把列号锁进列地址寄存器,从行缓冲里选中一位送到 Dout。 同一行内连续 CAS 是 Row Hit(省掉一次 ACTIVATE);换一行必须先 PRECHARGE 关闭字线再 RAS,这是 Row Miss。
怎么玩:点阵列里任意格子会自动完成「换行的 PRECHARGE → RAS → CAS」并读出该位;点左侧 WL 标签只激活整行;点 ADDR / WE / Din 徽章改输入。 0–7 设地址,A RAS、C CAS、P PRECHARGE、空格 读整行、W 翻 WE、I 翻 Din、F 刷新、M DRAM 衰减、Z 撤销、R 复位。
目标:按 C0→C7 依次读出每一行的 8 位,按 ASCII 解出 8 个字符,凑成 I love U。练习模式显示答案,挑战模式隐藏。
展开:命令真值表、为什么必须「先快照再统一写入」、以及和前两关的对照
命令↑ 沿锁存动作合法前提
RAS ↑ / ACTIVATEADDR → 行地址寄存器WLr 拉高,整行 8 位 → 行缓冲,状态 IDLE → ACTIVE当前为 IDLE;跨行必须先 PRECHARGE
CAS ↑(读)ADDR → 列地址寄存器;行缓冲[col] → Dout 的 D 触发器输出 1 位,Q(t+1)=D @ ↑CAS必须已 ACTIVE
CAS ↑(写,WE=1)ADDR → 列地址寄存器Din 写入选中单元并同步更新行缓冲必须已 ACTIVE
PRECHARGE—行缓冲回写阵列、位线预充、字线关闭 → IDLE已 ACTIVE
REFRESH—逐行 ACTIVATE + PRECHARGE 回写,恢复电容电荷仅 DRAM 衰减模式有效

行缓冲是「同时更新」的另一种形态:ACTIVATE 时整行 8 位被同时采样进灵敏放大器(等价于 8 个 D 触发器在同一 ↑ 沿取各自 D), 所以必须先用旧阵列值做快照再统一写入行缓冲,不能边读边改 —— 与「8 个 FF 共享 CLK」那一关是同一条物理约束。
和前两关的代价对照:串行挑战用 1 个 FF、64 个 ↑ 沿输出一句话;并联寄存器用 8 个 FF、8 个 ↑ 沿; 行列寻址用 64 个单元、64 次 CAS 但只需 8 次 ACTIVATE —— 同一行内 7 次是 Row Hit,不必重复激活。 真实 SDRAM 的 tRCD / tRP / CL 时序、Bank 交错、x8/x16 位宽组织都是在这套状态机上叠加的。
DRAM 电荷衰减模式是教学简化:每个周期内未被激活的行电荷 −1,归零后原本为 1 的位会掉成 0(标 ⚠); ACTIVATE 会恢复该行电荷,REFRESH 批量恢复全阵列。已丢失的数据无法靠刷新找回 —— 这正是 DRAM 必须周期性刷新的原因。 SRAM 用 6 管锁存器(本质就是本系列一直在讲的 D 触发器/双稳态),只要供电就不需要刷新。