本青还有一头乌黑亮丽的头发的时候,因为某些原因流放产线。维修小妹看有生面孔来,就知道研发来人了,说有块板子修不好,帮忙看看。

故障原因:射频指标工序送维修,原因为不上电。


第一次分析:本青笑了:射频指标工序之前还有4、5道工序,上不上电这种一锤子买卖,还能前几个工序能上电,到你射频指标工序就不能上了?笑话!要么单板电源坏,换各种电源芯片拉倒;要么厂弟厂妹瞎写的故障原因。

然后被维修小妹打脸:维修测试正常,之后的工序也都通过,但是一到射频指标工序,就报不上电,送修。再次维修测试又正常……往复循环3、4次了。


第二次分析:实际看下维修工序的测试项目,这块板子的确能通过维修测试项目,看打印log也正常。跑去射频指标工序,问厂弟厂妹“凭啥写的不上电”,答曰“灯不亮”。回来看板子上的灯,亮的,手动修改寄存器为0和1来亮灯灭灯,也正常。有点紊乱:开了射频后电源功率不够?亮灯频率算交流,有个大电容给滤掉了?……感觉都不大可能。


第三次分析:单板实际测试射频指标工序,哀求厂弟厂妹给个5分钟。一上电,灯正常闪烁,质问“你们管这个叫‘不上电’?”又马上被打脸:灯突然不闪了,灭了!在这个时候实际运行射频指标测试项目,可以运行。

总结这个板子的实际故障现象是:在射频指标工位,软件运行一段时候后,灯灭。


第四次分析:其它工序不存在灯灭的问题,软件有不同:除了射频指标工序需要完全跑起来用的正式发货版本外,其它工序实际都是用的生产测试版本。两者差异很大,着重看一下跟点灯相关的部分。


最终分析:拿到点灯相关的CPLD代码,结合原理图和FPGA功能,发现:CPLD点灯有两个方式:一个是CPU周期性写0和1控制灯亮灯灭;一个是用FPGA输出的帧头脉冲信号来累加计数,加到一定数目后,把点灯管脚取反来亮灭灯。产品要求外部的灯要同步亮灭,于是硬件上用FPGA通过光纤serdes的CDR产生的帧头来亮灭灯。其它工序不需要同步亮灯,亮灯都是CPU开进程周期性写0写1;射频指标工序需要同步亮灯,当FPGA加载完成后,软件切换亮灯方式为同步亮灯,用的FPGA给的帧头来触发计数,类似于PWM。


结论:FPGA的CDR给CPLD的帧头信号没了,原因是板子上这个信号的串联电阻坏了。更换后解决。


作者:nlgdczm

来源:https://www.mysmth.net/nForum/#!article/Circuit/366249