ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

16Mb/32Mb低功耗SRAM选型与设计:从时序图到功耗核算

16Mb/32Mb低功耗SRAM选型与设计:从时序图到功耗核算 最近在给一台小型工业控制器做改版MCU内置RAM不够用要在总线上外扩一块容量合适、功耗尽量低、访问延迟又可控的随机存储。我在物料库里翻来找去最后把注意力放在16Mb和32Mb的先进低功耗SRAM上。很多人一听到SRAM第一反应是CPU里的缓存觉得这是片上的东西跟自己做板子没什么关系其实16Mb/32Mb这个容量段的分立SRAM一直在工业控制、通信设备和医疗仪器里默默服役。这篇文章把我这次选型、读时序图、做功耗核算和画板调试的过程写出来顺便把SRAM和DRAM的区别和联系、SRAM时序图怎么读这两个高频问题一起讲透。1. 16Mb和32Mb容量段的市场逻辑为什么低功耗SRAM还在不断出新一次硬件选型最先要回答的问题不是“哪个型号便宜”而是“这个容量段到底解决什么问题”。16Mb换算过来是2MBytes32Mb是4MBytes。这个容量在存储体系里很有意思比MCU片内SRAM通常几十KB到几百KB大两个数量级又比DDR颗粒动辄512MB/1GB的容量小得多比NOR Flash容量小但胜在访问是字节级随机存取不需要先擦后写也不需要等待页读取。它正好卡在“片内RAM不够用、上DDR又太重”的中间地带所以一直有稳定的出货量。1.1 16Mb和32Mb的具体组织方式16Mb这样的密度看起来简单实际采购时却要把它拆成语宽和字数。同样16Mb有1M×16、2M×8、4M×4几种组织32Mb常见的是2M×16、4M×8、1M×32。组织方式直接决定你需要多少根地址线和数据线以及和MCU总线如何对接。容量组织地址线数量数据线数量16Mb1M×1620根A0-A1916根16Mb2M×821根A0-A208根32Mb2M×1621根A0-A2016根32Mb4M×822根A0-A218根1M×16是比较讨喜的组织因为正好可以塞进16位MCU总线或者FPGA的并行接口2M×8则适合8位单片机外扩或者只关心字节访问的场景。选型时先定组织方式再谈功耗否则后面引脚分配会很难受。1.2 “先进低功耗”三个字意味着什么标题里“Advanced Low-Power”不是营销话术。过去SRAM给人的印象是快但费电待机功耗也压不下去而新一代16Mb/32Mb产品把工作电压从3.3V压到1.8V甚至1.2V待机电流从几十微安做到几微安深度睡眠模式再降一个数量级。能做到这点一方面是工艺从0.18µm/0.13µm往65nm/55nm/40nm走单元尺寸和寄生电容都在缩小另一方面是芯片内部做了电源管理和阵列分块不是简单把整个阵列一锅端地掉电。1.3 谁在为这个容量段买单我接触到的项目里工业控制器、运动控制卡、网络交换设备、医疗监护仪、车载信息终端都用得到这类SRAM。共同点都是数据随机访问频繁、对时序确定性要求高、系统功耗预算紧张但没有大到需要上DRAM和DDR控制器的地步。这也是为什么16Mb/32Mb这个容量段的产品线至今还在更新不是被Flash替代而是和Flash互补——程序和数据放Flash运行时的关键缓冲放SRAM。2. 功耗账本拆解动态读写能量和静态漏电究竟消耗在哪外扩一颗SRAM占系统功耗比例通常不大但电池供电产品里“不大”也要精打细算。我习惯把SRAM功耗分成动态和静态两本账来看两本账的优化手段完全不同。2.1 动态功耗一次读操作的能量怎么花动态功耗来自信号的每周期充放电基本公式就是大家熟悉的0.5×C×V²×f只是这个C是整个读写路径上所有节点的等效电容。一次读操作里位线先被预充电到VDD然后其中一条通过存储单元放电字线、列选择、灵敏放大器、输出缓冲依次翻转每一级都在消耗能量。以我查的一款16Mb 1.8V SRAM规格书为例工作在45ns读周期大约22MHz时读操作电流典型值在25mA左右动态功耗大约45mW频率降下来功耗线性下降。如果想压低这部分最有效的杠杆就是电压从3.3V降到1.8V0.5×C×V²一项就能省掉约70%。这也是为什么新一代低功耗SRAM都往低压走而不是单纯靠减少位线电容。2.2 静态功耗大容量SRAM的隐形杀手静态功耗则来自晶体管漏电。6T单元里那些处于截止态的管子源漏之间有亚阈值漏电栅氧上有栅极漏电阱和衬底之间还有结漏电。一个单元漏电只有皮安到纳安级但16Mb有上千万个单元叠起来就是几十微安。更麻烦的是漏电对温度极其敏感温度每升高20到30℃漏电可能翻一倍所以规格书里待机电流会分25℃和85℃给出两个值差距往往十分感人。这就是为什么低功耗SRAM要在待机状态下关闭位线预充电、停掉内部时钟振荡器甚至把阵列电压降下来把静态功耗从“全阵列常态漏电”压到“只保持数据所需的最小漏电”。2.3 芯片内部常见的低功耗设计手段从我翻过的几款主流16Mb/32Mb低功耗SRAM框图看芯片内部基本都有阵列分块bank分割和功耗模式控制。读操作只激活被寻址的那一块阵列其余块保持空闲进入待机模式后内部时钟和位线预充电全部关断只剩存储单元挂在保持电压上。再进一步是深度睡眠模式芯片会把内部稳压器切到更低输出或者直接断开大部分偏置电路。这里有一个重要区别必须看清深度睡眠模式下有的芯片数据保持有的芯片数据不保持。选型时必须揪住这个指标不放否则掉一次电数据全丢产品直接出事故。我见过不少开发者在待机模式下把工具测出来的几十微安当成“无法优化”其实换成支持深度睡眠的型号常温下能压到1µA以内。3. SRAM和DRAM的本质差异六管锁存、刷新策略与使用门槛SRAM和DRAM这对名词经常一起出现网上也总有人问区别和联系。我用最通俗的话总结两者都是随机存取存储器字面上都能随时访问任意地址但存储一个比特的原理完全不同这个原理差异直接决定了它们的应用边界。3.1 单元架构锁存器与电容的差别SRAM标准单元是6个晶体管两个交叉耦合反相器互锁成一个正反馈结构数据是靠反相器之间的反馈“锁”住的只要电源还在状态就能一直保持不需要任何额外操作来维持。DRAM的单元只有1个晶体管加1个电容数据以电荷形式存在电容里电容天生会漏电于是必须周期性读出再写回也就是刷新。形象点说SRAM是抽屉里的实体账本翻开就能看不怕放DRAM是一个不断漏水的水桶得时刻有人给它续水。正因为SRAM单元要6个管DRAM只要1个管加1个电容同样晶圆面积下DRAM能做出来的容量天然比SRAM大得多这也是大容量场景下DRAM成本更有优势的根本原因。3.2 刷新、时序与接口复杂度架构差异直接带来使用门槛的差距。SRAM访问是最朴素的“地址给定—数据返回”异步SRAM连时钟都不需要地址和片选信号到位延时足够数据就出来。DRAM则要把地址分两次送行地址和列地址要管理bank、行激活、预充电还要按期做刷新。处理器接SRAM只需最简单的总线状态机和读/写信号接DRAM则几乎必须配一个控制器MCU没有DDR控制器做板子还得外挂一颗DDR控制芯片或者用带控制器的FPGA复杂度完全不是一个量级。做嵌入式的朋友应该深有体会同一个MCU扩SRAM可能一天就能调通扩DDR得先折腾控制器配置、训练序列还要处理电源上电顺序一不留神就开不了机。3.3 实际项目里怎么二选一项目里我给自己定了两个硬性判断标准容量需求在8MB以下、访问要求随机且频繁、又要确定性延迟的优先SRAM容量需求超过16MB、对连续带宽要求更高、成本又敏感的场景才去考虑DRAM或者PSRAM伪静态RAM内部是DRAM核带自刷新。另外别忘了SRAM不需要刷新也就没有刷新周期的功耗和延迟抖动这在实时控制里非常方便。成本方面SRAM单价确实比同等容量的DRAM高但省掉了控制器的BOM、PCB布线和软件复杂度综合成本并没有想象中那么不可接受。这两个概念之间的“联系”则是它们同属易失性存储器掉电都丢数据对设计者来说选择本质上是拿面积、成本和复杂度换访问简单性和实时性。4. 从时序图看懂16Mb SRAM读周期、写周期与裕量实操“SRAM时序图”是网上搜索量很高的词确实不会看时序图板子画出来就是废的。这里我用最常见的异步并行SRAM举例把读周期、写周期和裕量计算一次讲清楚。4.1 读周期从地址有效到数据上线的完整链路异步SRAM读操作没有时钟全靠信号间的相对关系约束。一次完整的读周期第一步是地址信号稳定第二步CE#片选拉低选中芯片第三步OE#输出使能拉低打开输出缓冲第四步内部地址译码、字线驱动、位线放电、灵敏放大器放大第五步数据出现在DQ线上第六步外部控制器在数据建立稳定后采样。规格书里的关键参数是这几项参数含义参考值45ns产品tRC / tAA读周期时间 / 地址访问时间45nstRC最小 / tAA最大tACECE#有效到数据有效45ns最大tDOEOE#有效到数据有效20ns最大tOHA地址变化后输出保持时间3ns最小tHZOE#/CE#无效到输出高阻15ns最大这里要注意tOHA给的是最小值意思是地址一旦变化旧数据还能在总线上保持至少tOHA时间保证控制器不会把旧数据误读成新地址的数据。tHZ则是总线释放时间如果多个外设共享数据总线必须在下一个设备驱动总线前让SRAM的输出变成高阻否则总线冲突短路轻则数据错重则烧IO。4.2 写周期建立时间与保持时间是红线写操作比读操作容易出鬼。异步SR
返回列表