最近遇到很多debug相关的咨询,曾经我们说过,我们做过的板子越多,遇到问题的概率也越多,很多别人没遇到过的问题,说不定我们早就触过雷,从而类似的问题形成经验总结,就不会再有同样的问题发生。一些问题可能不一定和PCB设计相关,但由于找不到原因到底在哪里,最终需要进行一一排除,所以兜兜转转又回到PCB设计上来,这也是我们经常要面对的工作之一。
调试是一项很辛苦的差事,说起调试,曾经听过一个故事。早期某大厂一些硬件人员在调试前会去仙湖植物园的弘法寺拜一拜,烧香祈求项目能一次性调试通过。虽然是传言甚至戏谑但多少也反应出硬件调试中一些奇怪的问题,有时甚至不以人的意志为转移。
在我们看来,系统性能能否成功无非就是软件和硬件的配合,所以很多时候硬件和软件大家的工作都是相互配合,相安无事的,但一旦出了问题却找不出具体原因的时候,大家可能就会相互指责,各说各有理,但大多数时候往往硬件最后是落於下风的,因为硬件涉及到的因素会更多,比如硬件原理、器件选型、物料、PCB设计、制板、焊接等,这些最终都和硬件相关,哪一个环节出问题了,都会影响系统性能。而软件只需要简单说一句上次同样的原理已经验证通过了,什么都是一样为什么这次改了个PCB版本就不行了呢?接着硬件也补充说对啊,原理、器件和软件都是一样,就改了个PCB设计,重新打了一板为什么调试出来就有问题,难道是PCB的问题?最后这个“锅”就到了和PCB相关的身上了。今天不说“锅”的事,系统需要良好的工作,需要各方面一起协调努力,软件也需要配合硬件的变化进行一定的调整,大家都要做好才能保证系统的稳定运行,所以每一方面都不能忽略,出了问题当然就需要从各个方面进行排查,实事求是从解决问题的角度出发,不要有背“锅”侠的心态。
虽然我们不直接进行硬件调试,但我们遇到调试的问题也很多,因为我们是实现硬件原理中重要的一环,发挥着桥梁作用,所以很多问题最终会排查到PCB设计环节中来,大家要有这种意识。最近就遇到一个HDMI显示不正常的案例,大致经过是这样的。
客户在我司设计的一个板卡在调试时发现HDMI接口能正确识别,但接上显示器后却一直闪屏,最后直接就识别不到了。客户用示波器测试信号眼图也没有发现太多问题,这个问题客户内部已经调了几个月还没有找到原因,最后希望我们从PCB的角度排查一下看能否找到是不是和信号完整性相关,部分PCB设计如下图所示:
从PCB设计来看,4对数据走线和换层基本都是一致的,从表层走到内层,再从内层换层到底层,经过底层的电容,电感和ESD器件再到HDMI接口,中间换层过孔做了反焊盘连盘掏空处理,内层信号换层到底层,存在过孔stub比较长的风险,但对于6Gbps的信号来说,这个50mil的stub正好处于可钻可不钻的边沿,也就是说影响不是致命的,能背钻当然更好。另外电容、电感和ESD器件,这些器件和连接器表贴焊盘等没有经过一定的优化,可能存在阻抗不连续的影响,这块我们的要求是8Gbps以上是必须要优化,8Gbps以下如果有空间可以优化,因为如果要优化的话,意味着第三层或者倒数第三层焊盘位置是不能走线的,有可能还要补参考层,尤其是空间很紧张的情况下,实现起来会比较麻烦,很多设计人员本着多一事不如少一事的原则,很多就不优化了,PCB设计本来就是权衡的艺术,这也能理解。
除了器件焊盘的影响,这些器件的选型会对阻抗带来更大的影响,之前的文章就写过,由于ESD选型不当,导致阻抗偏低很多,没看过的可以再看看这篇文章:ESD器件对高速信号有影响吗(陈雅给链接),可以看到加了ESD后的阻抗确实低了差不多14欧姆,如下图所示: