我以前一直觉得,硬件设计越简单越好,能用一根线解决的问题,绝不加一颗电阻。所以刚转到这个新团队的时候,看到同事不管什么接口,只要是跟外面连的,哪怕是个慢悠悠的串口,都要加一块电平转换芯片,我就觉得挺浪费的。一块芯片好几块钱,板子面积也大了,这不是纯属堆料吗?
后来有一次加班调试,我负责的那块板子,FPGA的JTAG烧写口直接连到了调试器上。结果因为调试器那边的电压有点高,加上我手贱,带电插拔了几次,FPGA就彻底不工作了。查了半天,发现是JTAG的TCK引脚对地短路了,整个FPGA报废,一片好几百块,心疼得我直抽抽。
那之后我才开始琢磨,为什么经验老到的同事,连个UART这种低速接口都不肯用分压电阻,非要上专用芯片。他们不是不懂省钱,而是吃过亏,知道对外接口最怕的其实不是电平匹配,而是那些乱七八糟的意外。
比如现场工程师接错线,直接把12V怼到3.3V的引脚上,这种事儿在工厂里太常见了。要是没加转换芯片,主控芯片或者FPGA瞬间就烧了,换起来又贵又麻烦。但要是加了一块几块钱的转换芯片,就算烧了,换个芯片就行,成本低得多。还有热插拔,带电插拔连接器的时候,会有很大的电流浪涌,直接冲击芯片的输入脚,普通芯片根本扛不住,但电平转换芯片内部有专门的ESD防护和浪涌吸收结构,能扛住不少。
再说JTAG,它本身是高速信号,对波形要求高,可调试器那边的电压跟FPGA这边经常不一样,直接连就容易出问题。而且JTAG口是调试下载用的,频繁插拔,万一静电放电,或者调试器供电不稳,FPGA的JTAG缓冲器很脆弱,一坏就是整个芯片报废。加了电平转换芯片,等于给FPGA上了一道保险,就算烧写口被搞坏了,坏的也只是那个小芯片。
当然,也不是所有地方都要加。如果是同一块板子上两个芯片之间通信,电源域稳定,没有热插拔风险,那用0欧电阻直连,或者用MOS管搭个简单的双向电平转换电路,完全够用,还省钱。但只要是跟外部设备连接的接口,比如调试口、传感器接口、扩展板接口,最好还是加专用芯片,这钱花得值。
我现在明白了,所谓的“大道至简”和“稳健冗余”,不是谁对谁错,而是看场景。同事他们不是不懂精简,而是经历过太多“小概率”事故,知道用一颗小芯片的成本,换整个系统的高可靠性,其实很划算。硬件设计说到底就是在理想性能、成本和可靠性之间找平衡,有时候看似多余的东西,恰恰是工程师用经验换来的智慧。从那以后,我对外接口也开始老老实实加芯片了,再也不笑话同事了。
热门跟贴