2. SRAM基础:存储单元结构(6T/8T)、工作原理、读写操作的基本流程
SRAM(Static Random-Access Memory,静态随机存取存储器)是嵌入式系统、CPU缓存和高速网络设备中最核心的存储组件之一。与DRAM需要周期性刷新不同,SRAM利用双稳态触发器结构实现数据的静态保持,只要供电不中断,数据就不会丢失。理解SRAM的存储单元结构(尤其是6T与8T单元的差异)、读写操作的时序流程,是进行低功耗设计和时序优化的前提。本章将从存储单元的内部结构出发,逐步拆解其工作原理,并给出完整的读写操作流程与关键时序参数分析。
2.1 6T存储单元:经典双稳态结构
核心原理:交叉耦合反相器的锁存机制
6T SRAM单元由两个交叉耦合的CMOS反相器(INV1和INV2)和两个NMOS访问管(M5和M6)构成。两个反相器的输出分别连接到对方的输入,形成正反馈回路。这种结构具有两个稳定状态:Q=1、Q#=0,或Q=0、Q#=1。只要电源VDD持续供电,该状态就会无限期保持,无需刷新操作。访问管M5和M6分别由字线WL控制,将内部节点Q和Q#连接到互补位线BL和BL#上。
从电路理论角度分析,交叉耦合反相器的增益大于1,使得任何微小的扰动都会被正反馈放大,最终稳定在逻辑“0”或逻辑“1”状态。这一特性决定了SRAM的读写操作本质上是对双稳态的“翻转”或“读取”过程。写入操作需要外部驱动足够强,能够克服反相器的反馈力;而读取操作则需要存储节点能够承受位线电容的电荷分享,不引起状态翻转。
读写操作流程与关键信号
读操作:首先将BL和BL#预充至VDD,然后WL拉高使M5/M6导通。假设存储Q=1、Q#=0,则BL通过M5和INV1的下拉管放电,BL#保持高电平。位线之间产生电压差(通常需要50-100mV),由灵敏放大器(Sense Amplifier)检测并放大为满摆幅逻辑电平。读操作的关键约束是:放电过程中Q节点电压不能低于INV2的翻转阈值,否则会破坏存储数据。
写操作:将待写数据驱动到BL和BL#上(互补),然后WL拉高。外部写驱动电路必须足够强,能够将Q节点拉至目标电平,克服反相器的反馈。例如写“0”时,BL=0、BL#=1,M5将Q拉低,当Q电压低于INV2的翻转阈值时,正反馈加速翻转,完成写入。写操作后WL拉低,数据被锁存。
| 操作类型 | 位线预充 | 字线状态 | 数据路径 | 关键约束 |
|---|---|---|---|---|
| 读操作 | BL=BL#=VDD | WL=VDD | Q→BL 或 Q#→BL# | SNM足够大,防止读翻转 |
| 写操作 | BL=数据, BL#=数据# | WL=VDD | BL→Q, BL#→Q# | 写驱动能力大于反相器反馈 |
| 保持状态 | 无要求 | WL=GND | 无路径 | VDD持续供电,数据静态保持 |
6T单元的低功耗局限
6T单元在深亚微米工艺下面临两个主要问题:读干扰和写冲突。读操作时,位线放电电流会抬升Q节点电压,如果SNM不足,可能造成数据翻转。为了提升读稳定性,需要增大下拉管尺寸,但这会增加面积和功耗。写操作时,如果访问管过强,可能无法将存储节点拉至目标电平,需要精细的晶体管尺寸设计。此外,6T单元在低电压(如0.6V以下)工作时,SNM急剧恶化,限制了其低功耗应用范围。
2.2 8T存储单元:读端口隔离的低功耗方案
结构差异与设计动机
8T单元在6T核心基础上增加了两个额外的NMOS管(M7和M8),构成独立的读端口。M7的栅极连接到存储节点Q,M8的栅极连接到读字线RWL,M7和M8串联在RBL和地之间。写操作仍通过WWL和BL/BL#完成,与6T单元完全一致;而读操作则通过RWL和RBL完成,与存储节点Q完全隔离。
这种结构带来的核心优势是:读操作不再直接访问存储节点,因此不存在读干扰问题,SNM仅由6T核心决定,且与读操作无关。这意味着可以独立优化读端口和写端口,无需在两者之间折中。更重要的是,8T单元支持更低的VDD工作电压,因为读稳定性不再受位线放电影响,这为低功耗设计提供了更大空间。
8T单元的读写流程
写操作:与6T单元完全相同,通过WWL控制M5/M6,将BL/BL#上的数据写入Q/Q#节点。写操作完成后,WWL拉低,数据锁存。
读操作:首先将RBL预充至VDD,然后RWL拉高。如果Q=1,则M7导通,RBL通过M7和M8放电至地;如果Q=0,则M7截止,RBL保持高电平。RBL的电压变化被灵敏放大器检测。由于读路径与存储节点隔离,无论RBL如何放电,都不会影响Q节点的电压。
8T单元的变体与设计考量
在实际工程中,8T单元有多种变体:单端读端口(仅使用RBL,不产生互补信号)可减少布线,但抗噪声能力较弱;差分读端口(使用RBL和RBL#)可提高读速度,但面积更大。此外,还有9T、10T单元,通过增加额外的写辅助管或读缓冲管来进一步优化低电压性能。选择单元结构时,需要综合考虑面积、功耗、速度和工艺复杂度。
| 对比维度 | 6T单元 | 8T单元 |
|---|---|---|
| 晶体管数量 | 6个 | 8个 |
| 读干扰风险 | 存在,需保证SNM | 无,读路径隔离 |
| 最低工作电压 | 较高(约0.7V) | 较低(可至0.4V) |
| 读速度 | 较快(直接放电) | 略慢(串联管增加延迟) |
| 面积开销 | 基准 | 增加约30% |
| 适用场景 | 高速缓存、一般SoC | 低功耗IoT、近阈值计算 |
2.3 读写时序控制与关键参数
读周期时序分析
一个完整的读周期包括:地址建立(tAS)、字线激活、位线放电、灵敏放大器使能(SAE)、数据输出和预充(tPC)。关键路径为:地址译码→WL拉高→位线电压差建立→SAE触发→数据输出。其中,位线放电时间由位线电容和放电电流决定,是读延迟的主要组成部分。为了缩短读延迟,可以增大访问管尺寸(提高放电电流)或减小位线电容(分段位线技术)。
写周期时序分析
写周期要求:数据必须在WL拉高前建立(tDS),并在WL拉低后保持一段时间(tDH)。写脉冲宽度(tWP)必须足够长,确保存储节点完成翻转。如果tWP过短,可能写入失败;如果过长,则增加功耗。写操作的关键是写驱动器的强度,通常使用写辅助电路(如负位线电压、VDD提升)来加速翻转。
// 典型SRAM时序参数(以TSMC 28nm HPC+工艺为例)
// 读周期:tRC = 1.2ns @ 0.9V, 25°C
// 地址访问时间:tAA = 1.0ns
// 写周期:tWC = 1.2ns
// 写脉冲宽度:tWP = 0.6ns
// 地址建立时间:tAS = 0.2ns
// 地址保持时间:tAH = 0.1ns
// 数据建立时间:tDS = 0.3ns
// 数据保持时间:tDH = 0.1ns
低功耗时序优化策略
在低功耗设计中,时序优化与功耗优化往往存在矛盾。例如,降低VDD可以显著降低动态功耗(P ∝ CV²f),但会增加延迟。常用的优化策略包括:电压频率调节(DVFS),在负载较轻时降低电压和频率;位线预充电压降低,将BL预充至VDD-ΔV,减少放电功耗;字线脉冲宽度调制,在保证写入成功的前提下缩短WL高电平时间,减少无效翻转功耗。
2.4 案例拆解:低功耗IoT芯片中的SRAM选型与优化
项目背景与约束
某智能穿戴设备主控芯片需要集成256KB SRAM作为系统主存,目标功耗预算为:待机功耗<5μA,工作功耗<2mA @ 32MHz。芯片采用40nm ULP工艺,VDD范围为0.6V-1.1V。设计团队需要在6T和8T单元之间做出选择,并优化读写时序以满足功耗和性能要求。
初始方案与问题
初始方案采用6T单元,VDD=0.9V,工作频率32MHz。实测待机功耗为8μA,工作功耗为3.2mA,均超出预算。进一步分析发现,待机功耗主要来自6T单元的漏电(亚阈值漏电和栅极漏电),而工作功耗中约40%来自位线充放电。尝试降低VDD至0.7V时,读操作出现偶发性数据翻转(SNM不足),导致系统不稳定。
方案调整与实施
团队决定改用8T单元,并采取以下优化措施:
- 单元替换:将6T单元全部替换为8T单元,面积增加约30%,但VDD可降至0.6V。
- 位线预充优化:将BL预充电压从VDD降至0.8×VDD,减少预充功耗约20%。
- 字线脉冲调制:根据工艺角仿真结果,将WL高电平时间从1.2ns缩短至0.8ns,减少无效翻转。
- 电源门控:在待机模式下,关闭SRAM的VDD(通过电源开关),仅保留保持电压(0.5V),漏电降低90%。
结果对比与复盘
| 指标 | 初始6T方案 | 优化后8T方案 | 改善幅度 |
|---|---|---|---|
| 待机功耗 | 8μA | 1.2μA(含电源门控) | ↓85% |
| 工作功耗 | 3.2mA | 1.5mA | ↓53% |
| 最低工作电压 | 0.7V(不稳定) | 0.6V(稳定) | ↓14% |
| 读访问时间 | 1.0ns | 1.3ns | ↑30%(可接受) |
| 面积 | 基准 | +30% | 代价 |
复盘经验:8T单元虽然增加了面积和读延迟,但在低功耗场景下收益显著。电源门控是降低待机功耗最有效的手段,但需要额外的电源管理逻辑和状态保存策略。位线预充电压降低需要仔细验证读操作的可靠性,确保灵敏放大器能够正确检测电压差。字线脉冲调制需要精确的时序控制,建议使用可配置的延迟链以适应不同工艺角。
2.5 常见误区与设计总结
误区一:认为8T单元一定比6T单元功耗低
8T单元的低功耗优势主要体现在低电压工作能力上,而非单元本身的功耗。在相同VDD下,8T单元的漏电和动态功耗与6T单元相当,甚至略高(因为多出两个晶体管)。只有在降低VDD的情况下,8T单元才能体现出功耗优势。如果系统无法利用低电压(如外围逻辑电压受限),8T单元的优势就不明显。
误区二:忽略读操作对SNM的动态影响
6T单元的SNM在读取过程中会动态变化,称为“读SNM”。读操作时,访问管导通,位线放电电流会抬升Q节点电压,使得SNM降低。设计时不能只关注保持状态的SNM,必须仿真读操作过程中的最差SNM。8T单元由于读路径隔离,不存在此问题,这是其低电压工作的关键原因。
误区三:时序参数只关注典型值
SRAM的时序参数随电压、温度和工艺角变化显著。在低电压下,延迟可能增加2-3倍。设计时必须覆盖所有工作条件(SS/FF工艺角、-40°C至125°C温度范围、VDD±10%波动),确保时序收敛。建议使用统计静态时序分析(SSTA)方法,考虑工艺偏差的影响。