整改周期里最纠结的一个决定,不是磁珠选300Ω还是600Ω,也不是共模电感要不要绕双线,而是把板子上那颗现成SDRAM换成一颗看起来有点“复古”的异步SRAM。当时产品在交流220V进线端做传导骚扰预扫,5.2MHz附近超标了差不多18dB,滤波链路从X电容换到Y电容再换到两级共模电感,怎么调都压不下去。后来用近场探头贴着内存颗粒走了一圈才发现,真正的能量源头不是电源入口,而是SDRAM那颗持续运行的时钟以及背后的刷新机制。也就是从那天起,我开始认真研究ISSI的IS62WV1288DALL这颗128K×8高速异步静态RAM,最终用它替换掉原来的SDRAM方案,顺带把EMI电源滤波器也做了简化。
这篇文章不是要告诉你“某颗料天下无敌”,而是把这次替代的完整思路拆开讲清楚:为什么SDRAM天生是EMI大户、IS62WV1288DALL哪些参数支撑了这次替代、滤波电路的插入损耗目标到底怎么定、原理图和PCB落地时有哪些坑。内容适合正在做EMC整改的硬件工程师、准备把旧SDRAM方案换掉的项目组、以及所有被并行总线辐射问题折磨过的同行。
1. 噪声源定位:并行存储总线才是真正的“天线”
1.1 从220V端口预扫超标开始的完整排查链路
产品是在传导骚扰测试阶段出的问题,测试标准对应的频段是150kHz到30MHz,我们在5.2MHz附近超了约18dB,10.3MHz处的二次谐波也贴着限值线上沿,余量不到2dB。一开始团队按常规思路处理,先换电源入口的EMI滤波器,把原本单级共模电感换成两级,X电容从0.47uF加到1uF,又在输入端口套了磁环,结果只是把10.3MHz附近压低了一点,5.2MHz那个峰纹丝不动。这种情况基本可以判断,噪声不是单纯从交流输入端口“引进来”的,而是在板子内部被某个强辐射源激发后,通过线缆共模路径再耦合回LISN测量端。于是我们搬出近场探头配合前置放大器,在板卡正常运行时逐点扫描,热点非常集中:SDRAM颗粒上方、时钟线走线附近、以及SDRAM供电引脚周围。用示波器在这些位置观察时域波形,能清楚看到100MHz时钟沿上的振铃,上升沿大约1.6ns,对应频谱分量轻松覆盖到300MHz以上。这就是典型的高速同步存储器件问题:它本身不只是一个存储芯片,而是一个在整个板卡上持续发射频谱能量的噪声源。
1.2 SDRAM为什么天生就是EMI“大户”
很多刚从MCU开发转过来的工程师会有个误区,觉得SDRAM结构复杂、容量大、性能好,怎么都比SRAM“高级”。但从EMC角度讲,SDRAM恰恰是把所有不友好的要素都集合在一颗器件里了。首先,它必须有一个持续运行的时钟信号,SDRAM不是完全异步的,内部状态机每一步都跟着时钟沿走。其次,它需要周期性刷新,哪怕CPU完全不访问它,芯片内部也在不停做行激活、预充电、刷新这些大电流动作,这些动作在时域上是周期性的,在频域上就会形成一系列离散谱线。第三,SDRAM的数据总线在burst传输时多位同时翻转,SSO(同时开关输出)产生的瞬态电流叠加,会在电源和地网络上制造很大的di/dt。
打个比方,SDRAM就像一个全天候播报的电台,不管有没有人听,它都在那儿发射信号。而异步SRAM更像一个对讲机,没人按下通话键的时候是完全安静的,只在CPU发起读写事务时才会有总线活动。这个差异在EMI治理上是非常关键的,因为电磁干扰本质上是一个“能量在时间和空间上叠加”的问题,一个非周期的、突发性的信号,在频谱上能量会分散开,而一个持续周期信号则是把能量集中到离散频点上,后者更容易超标,也更难用滤波的方式“扣掉”。IS62WV1288DALL就是典型的完全异步静态RAM,没有内部时钟、不需要刷新、没有PLL,CPU不去碰它的时候,整颗芯片几乎处于静止状态,这决定了它在EMI表现上具备天然优势。
2. IS62WV1288DALL选型逻辑:替代不是简单换颗料
2.1 这颗料的基本盘和引脚兼容性
选择ISSI的IS62WV1288DALL并不是拍脑袋决定的。这颗料的基本参数如下:容量是128K×8bit,供电范围2.5V到3.6V,访问速度有8ns、10ns、20ns等几个档位,典型封装是TSOP-44,工业级版本温度范围覆盖-40℃到+85℃。它跟市面上大量异步SRAM的引脚定义高度兼容,A0到A16共17根地址线,DQ0到DQ7共8根数据线,控制信号是CE#、OE#、WE#,有些封装带UB#/LB#字节使能。这种标准异步接口意味着,绝大多数MCU或者应用处理器上的静态存储控制器(比如STM32的FMC/FSMC、NXP i.MX的WEIM等)都可以直接对接,不需要改动硬件架构,只需要改时序配置。在我这个项目里,CPU原本连接SDRAM的是内存控制器,我们把SDRAM槽位重新映射到静态存储控制器通道,电平、引脚、控制逻辑都能匹配,改动的阻力比想象中小得多。
2.2 为什么不用Pseudo SRAM、MRAM或者FRAM
可能有人会问,现在不是有PSRAM(伪静态RAM)、MRAM、FRAM这些“更先进”的选择吗?这里有一个很容易被忽略的EMC视角。PSRAM本质上是一颗带内部刷新逻辑的DRAM核,外面包了一层SRAM接口,它还是需要周期性刷新,内部还是有一个不断运行的状态机,在EMI特性上和SDRAM没有本质区别,只是把麻烦藏在了芯片内部。MRAM和FRAM在辐射特性上确实不错,但一是供应链和成本没有优势,二是在这个项目里只需要128K容量,用MRAM/FRAM属于“杀鸡用牛刀”。IS62WV1288DALL是真正的完全静态结构,没有隐藏的周期动作,数据手册上也写得清楚:只要不断电,数据靠CMOS锁存结构保持,不需要任何刷新命令。对EMI整改来说,不需要刷新这件事,比什么“先进工艺”都重要。
2.3 “替代EMI”的真实含义:用低噪声源替代整套抑制方案
项目复盘时同事开玩笑,说这个项目是“用一颗SRAM替代了EMI部门”。话虽然夸张,但思路确实是这样。原来的方案里,为了把SDRAM时钟和总线的辐射压下去,我们在电源输入口上了两级EMI滤波器,在SDRAM供电上加了四五颗磁珠,还考虑过加展频时钟芯片。整套抑制链路占了不小的PCB面积,BOM成本也不低,更麻烦的是,这些滤波器件本身也有插入损耗和寄生参数,经常会引入新的谐振点。当我们把噪声源从SDRAM换成了IS62WV1288DALL之后,很多原本为“堵噪声”而加的东西都不再需要了。所以标题里说的“替代EMI”,完整的含义是:用一个本身低噪声的存储器技术方案,替代掉原本为压SDRAM的EMI所设计的那一整条滤波与抑制链路。这个思路比单纯换一颗料要值钱得多。
3. 滤波电路重设计:插入损耗不是越大越好
3.1 从LISN测试反推需要的插入损耗
EMI电源滤波器最核心的指标是插入损耗(Insertion Loss),定义是滤波器接入前后负载上电压的比值换算成分贝:IL=20lg(V1/V2)。很多工程师选滤波器时有一个朴素观念,插入损耗越大越好,其实不是这样。插入损耗是和频率强相关的,两级滤波器在10MHz以上通常能提供40到60dB的抑制,但在150kHz这个低频段,可能连5dB都不到。我们这次整改,真正要做的不是盲目堆高插入损耗,而是根据噪声源的变化反推一个“够用就行”的目标。
先看原方案的状态。旧方案里SDRAM是主要噪声源,两级滤波器在5.2MHz频点实测提供了约40dB的插入损耗,整机测出来仍然超标18dB,说明噪声源本身的能量太高,靠滤波器“堵”已经到瓶颈了。替换成IS62WV1288DALL之后,我们重新用近场探头在原来热点位置测量,同样带宽下噪声频谱幅度大约下降了20dB到25dB。也就是说,源项降下来了,对滤波器后端的要求也相应降低。于是我们把两级共模电感简化为一级,X电容从1uF降到0.47uF,实测5.2MHz处整体余量达到8dB,整个频段都留有至少6dB的余量。做一个粗略的估算:IL_target = IL_old - source_reduction + margin,即40dB - 20dB + 6dB = 26dB,一个性能在线的一级共模滤波器完全可以覆盖。这就是“插入损耗不是越大越好”的工程含义——够用、有裕量、不会引入新的谐振,才是合理的滤波设计。
3.2 磁珠与去耦电容网络:时域电流回路才是根本
滤波器降低了从板卡传到220V入口的共模电流,但板内总线翻转产生的瞬态电流,仍然需要在源头得到抑制。异步SRAM总线访问时,地址线和数据线同时翻转,8位数据最多可能在同一时刻切换,瞬间抽取电流的斜率很大。如果这个电流回路的阻抗高,就会在电源网络上产生电压跌落和地弹,直接把噪声耦合到整块板子。我在这颗IS62WV1288DALL的电源脚附近做了典型的去耦组合:每个VDD脚到地放一颗0.1uF的X7R陶瓷电容,旁边再放一颗0.01uF的高频电容,再往外围加一颗4.7uF的钽电容做中低频储能。三个容值覆盖的频率范围不同,0.1uF处理几十MHz量级的去耦,0.01uF处理上百MHz的高频分量,4.7uF则稳定电源轨。电源入口处再串一颗磁珠,要注意选型时看阻抗-频率曲线,而不是只看100MHz阻抗值,这一点后面避坑章节会细说。
3.3 滤波性能被“意外”抵消时的备选手段
换完SRAM之后,原先很多超标频点自然消失,但并口总线在突发访问时还是会有残余能量。这种情况下,我习惯的优先级是:先在驱动端加串联匹配电阻,把信号边沿变缓;再考虑RC吸收网络;最后才考虑展频时钟。串联匹配电阻是最简单性价比最高的手段,地址线、数据线上各串33Ω排阻,放在CPU输出端,能有效压低信号振铃,辐射频谱能下降好几个dB。RC吸收网络用在控制信号上,比如CE#、WE#这些低频控制线,加上一个小电容到地形成低通,但电容不能太大,否则会拖慢边沿,影响时序。展频时钟属于“最后手段”,因为它虽然能把峰值能量分散,但会让系统的时序抖动变差,通常只有当所有无源手段都用尽、仍然超标时才考虑。实际在IS62WV1288DALL方案上,我们靠串联电阻和去耦改进就解决了问题,压根没上展频。
4. 从原理图到PCB落地:换料最容易漏掉的一步
4.1 时序重读:不是“接上就能跑”
异步SRAM接口简单,但不意味着可以无视时序直接接上跑。IS62WV1288DALL的读周期里有几个关键参数:地址建立时间、CE#访问时间、OE#访问时间、数据输出有效时间;写周期则关注WE#脉冲宽度、地址建立时间、数据建立时间和数据保持时间。这些参数在数据手册里都有最大值和最小值,但实际配置时必须给足降额空间,不能贴着极限值跑。
我这边用的是STM32的FMC接口,把SRAM挂在NOR/PSRAM bank上,配置时把AddressSetup设为2个HCLK周期,DataSetup设为4个HCLK周期,HCLK跑40MHz,这样一次读写周期大约在150ns左右,对一颗8ns/10ns的SRAM来说余量非常充裕。可能有工程师会觉得,既然芯片最快能跑8ns,为什么总线只跑40MHz?这里有个容易忽略的点:总线速度越快,信号边沿越急,EMI几乎成正比恶化。异步SRAM的容量本来就不大,我们产品在这个存储区域的数据吞吐需求也不高,完全没必要把总线跑到100MHz以上。把总线主动降速,换取更低的EMI和更可靠的时序,这是SDRAM方案不具备的调节空间——SDRAM的工作频率由电源时钟决定,你很难单独降下来。
4.2 PCB设计清单:等长、匹配电阻和参考平面
换掉SDRAM之后,原来为100MHz时钟设计的PCB走线布局需要一并调整。IS62WV1288DALL虽然是异步器件,但数据总线在读写瞬间仍有几十MHz的翻转频率,上升沿如果控制在2ns左右,信号频谱还是能延伸到百MHz以上。所以布线规则不能因为“低速SRAM”就放松。我的做法是:地址线、数据线、控制线三组分别做等长,组内偏差控制在±25mil以内;每一根地址线和数据线在驱动端串联33Ω匹配电阻;走线尽量走在完整参考平面上方,避免跨越电源轨分割区。整组SRAM总线走线总长尽量控制在50mm内,如果超过这个长度,信号完整性问题会明显增加,串阻的压振效果也会打折。
去耦电容的摆放同样有讲究。很多人把电容放在SRAM旁边就以为完事了,实际上电容到VDD引脚的过孔距离如果超过1mm,本身的寄生电感就会让电容在高频下失效。我习惯把0.1uF和0.01uF两颗电容直接放在IC的同侧,过孔紧贴焊盘打下去,连接到内层的完整地平面和电源平面。磁珠则放在电源进入这颗IC的入口处,和去耦电容形成LC滤波结构,位置顺序是:电源轨先过磁珠,再接大电容,再分支到小电容和IC的VDD脚。
4.3 替换后的BOM变化和成本测算
这次整改不仅是换了芯片,还把一整条EMI抑制链路简化了。新旧方案对比如下:
| 项目 | 原SDRAM方案 | 新IS62WV1288DALL方案 |
|---|---|---|
| 存储颗粒 | SDRAM 1颗 | IS62WV1288DALL 1颗 |
| 时钟源 | 有源晶振+PLL/展频 | 不需要额外时钟源 |
| 刷新逻辑 | SDRAM控制器+刷新命令 | 无刷新动作 |
| 电源滤波 | 两级共模电感+大X电容 | 单级共模电感+常规X电容 |
| 磁珠数量 | 5颗以上 | 2颗 |
| 走线复杂度 | 需要匹配100MHz时钟 | 等长+串阻即可 |
最终BOM成本大概下降了三分之一,PCB面积省出一块约为拇指大小的区域,这个区域后来被用来加强电源平面的完整性设计。换料并不是简单地把SDRAM封装改成SRAM封装,而是一个从系统架构层面重新思考“哪些抑制措施是必须的,哪些只是因为噪声源太恶劣才不得不加”的过程。
5. 实测数据与整改迭代:噪声源换掉之后的变化
5.1 传导骚扰测试结果分析
整改完成后,我们在同样的电源端口、同样的测试环境下重新做传导骚扰测试。原方案在5.2MHz处峰值超出限值约18dB,10.3MHz处超出约6dB。换成IS62WV1288DALL后,5.2MHz处变成低于限值8dB,10.3MHz处变成低于限值15dB,整个150kHz到30MHz频段,最差的一点仍有6dB余量。这个改善幅度超出了预期,因为按近场探头看到的数据,源项下降是20dB左右,加上简化滤波器后插入损耗降低的负作用,理论上余量应该在3到5dB,实际测出更优,原因是原来的两级滤波器在某些频段存在谐振反峰,实际上并没有发挥出理论插入损耗值,简化之后反倒把反峰问题一起去掉了。
5.2 辐射骚扰测试结果分析
辐射频段的变化更直观。原SDRAM方案的100MHz时钟,在240MHz和480MHz附近都有明显的窄带峰,这两个频点都贴着B类限值走。替换成IS62WV1288DALL之后,30MHz到1GHz的整个扫描范围内,背景底噪明显下降,240MHz和480MHz不再有窄带脉冲,最差频点距离限值也有至少12dB的余量。这说明移除SDRAM持续时钟后,原先由时钟谐波主导的辐射问题已经基本消失。异步SRAM在CPU不访问时没有信号活动,近场探头放在芯片上方只能看到环境底噪,这是SDRAM方案完全做不到的。
5.3 功能稳定性验证
EMI达标只是第一步,存储器的功能可靠性同样关键。我们在替换后跑了72小时的连续读写测试,数据模式包括0x55/0xAA交替、递增地址、随机数、以及模拟真实业务数据的混合模式,全部读写比对一致。还做了-40℃到+85℃的温度循环测试,在高温和低温极限下反复读写,没有出现偶发错误。需要特别说明的是,异步SRAM是易失性存储,上电后内容是不确定的,软件里必须有初始化逻辑,不能像某些铁电和MRAM那样期待上电就能读到有效数据。这一点虽然简单,但忘了初始化会导致第一批出货的产品出现随机启动异常,属于非典型但真实存在的坑。
6. 换料整改中三个没写进数据手册的坑
6.1 坑一:号称8ns的料在40MHz总线上反而出错
第一次改动后,我们曾尝试把总线时钟提到80MHz,希望榨干这颗SRAM的性能。结果在高温老化时出现了偶发读写错误,频率不高但不可接受。排查下来不是芯片的访问时间不够,而是CPU静态存储控制器的信号完整性问题:FSMC数据线在总线高速切换时,沿过冲导致数据采样窗口抖动。最终我们退回40MHz总线频率,稳定跑了一整个温度循环批次后再没出过问题。教训是:数据手册上的8ns是常温、标准负载下的极限参数,实际系统里还有走线电容、过孔电感、供电跌落和温度漂移,必须留足20%以上的时序余量,不能拿极限值当设计值。
6.2 坑二:磁珠谐振让某个频点“越滤越脏”
简化滤波方案后有一版设计,传导测试低频段全绿,但18MHz左右反而冒出一个新的尖峰,比改进前还高了6dB。后来用阻抗分析仪测了磁珠,发现这颗磁珠在十几MHz频段处于感性区,和旁边4.7uF钽电容构成了一个并联谐振电路,谐振阻抗拉高,反而阻挡了高频去耦路径。此后选磁珠我就学乖了,先看厂家提供的阻抗-频率完整曲线,而不是只看数据手册首页的100MHz阻抗值。同样容值的电容也要看自谐振频率,不同封装和介质,谐振点差异很大,不能只看容值盲目并。
6.3 坑三:近场探头数据缺乏可重复性
整改过程中出现过一次乌龙:近场探头放在同一位置,上午测和下午测数据差了很多,一度以为是SRAM批次问题。后来发现是探头到频谱仪的线缆位置在测试过程中被碰歪了,线缆本身在强电磁环境下也会拾取噪声。从那以后我们固定了所有测试条件:探头用夹具固定、记录探头角度和距离、频谱仪用Peak Hold模式扫描多圈取包络、至少测三次取一致性最好的结果。拿近场数据做相对对比是可以的,但绝对不能把近场探头数据当成正式超标依据,正式结论必须回归到标准限值和规范测量环境。
写在最后的一点体会
这次项目做完,我养成了一个习惯:评估任何一颗存储器件的时候,先问一句,它在待机状态下有没有周期性动作。这颗IS62WV1288DALL最打动我的地方不是哪项参数特别亮眼,而是它把“安静”这件看似理所当然的素质做到了极致。EMC整改做到最后,很多时候不是往板子上堆更多滤波器件,而是想尽办法让板子的源头少发点噪声。如果你正在被类似的总线辐射问题折磨,不妨先放下手里那颗磁珠,回头审视一下噪声源本身,也许同样的整改思路,能帮你也省掉不少麻烦。