记得好几年前,在设计一款带有DDR1的电路板时,受老板要求为了降低成本,我将原本的四层板改为两层板。然而在样板制作完毕后进行调试时,发现了一个严重的问题:DDR1在系统运行过程中会突然出现故障。花了数天的时间试图解决问题,检查了贴片是否正确、多次检查了BOM清单、更换了许多元件,但仍然无法找到问题的根源。最终,我决定向DDR代理商寻求帮助。
代理商进行了一系列的测试,发现当DDR1频率变高时就会出现问题。他们还测试了断开电路上的1.2V内核电压,并在电路上外接一个1.2V的电压源,结果发现系统可以正常工作,DDR1不再出现故障。代理商的结论是,问题可能出在PCB设计方面,导致内核电压的纹波较大,影响了系统的稳定性。他们建议我回去重新分析PCB设计,找出问题的根本原因。
随后,我专注于分析PCB设计,发现有一条电路线的布局并不合理。底层板有一条线从上面向下延伸,正好将CPU底部的左右两侧GND分开,这要求左右两侧GND必须绕一大圈才能连接在一起。而顶层板的左侧有CPU控制的1.2V DC-DC电压,即CPU的内核电压。这个DC-DC电压还有一个反馈电路,给CPU提供反馈。但是反馈电路的地与CPU的GND被那条线分开,需要绕一大圈才能重新连接起来。
通过示波器分别测量了这两个地的电势,结果发现它们的电压相差了100多毫伏。我还测量了1.2V的内核电压,发现内核电压存在较大的毛刺。于是我用刀刮去了这两个地的绿油,让铜箔裸露出来,然后用两个0欧姆电阻将两侧的GND连接起来。结果发现DDR1开始正常运行,系统也稳定工作。起初我还不太相信,试了几次将那两个电阻拆下,发现DDR1又出现故障。但当我将这两个电阻重新连接后,DDR1再次正常运行。经过多次验证,问题确实得到解决。
之后,我更改了PCB,并按照更改后的设计制作了样板。在调试时发现DDR1可以正常工作,系统也能稳定运行。最终,这个电路板也成功量产,成本也得到了大幅降低。
现在回过头来看,这个问题实际上是一个电源完整性问题。在当时的设计中,对电源完整性和信号完整性的理解还不够深刻,导致设计出的PCB可能存在电源完整性和信号完整性方面的问题,从而影响了系统的稳定性和可靠性。