集成电路SOC的时钟源震荡死机现象的分析与排除

EDA/IC设计

1063人已加入

描述

问题描述:

交换芯片+主控CPU,CPU通过SMI控制交换芯片,CPU提供复位信号和25MHz时钟给交换芯片,交换芯片与CPU数据报文交互通过RMII。主控CPU在boot汇编代码执行交换芯片的复位和25MHz时钟初始化。系统上电可以正常启动,并进入APP。当反复热重启系统(同一台板子热重启次数固定),交换芯片死机(主控CPU通过SMI访问交换芯片,没有任何响应)。断电重启,系统恢复正常。

问题分析:

交换芯片还没有准备好,已经开始读取或写交换芯片寄存器;

频繁复位交换芯片;

交换芯片复位时间不够;

复位信号异常;

复位信号和时钟时序问题;

排除:

断开MDIO和MDC的连线,现象仍旧存在;

断开交换芯片和CPU的复位连线,现象消失;单独搭了交换芯片的最小系统,反复热重启,不存在死机现象;

修改boot代码,延长复位时间,现象仍旧存在;发现复位型号存在异常,复位信号不是固定低电平一段时间然后固定高电平,而是持续一段时间低电平之后,一段时间高电平,然后再一段低电平,最后再固定高电平;

检查代码,因为CPU的复位输出管脚上电默认是低电平,所以为了保证时钟输出和复位信号同步,才产生上边描述的信号,修改复位信号,现象仍旧存在。

到了这里,唯一能影响交换芯片工作的似乎就是时钟了。交换芯片支持两种时钟源:外部25MHz直接输入或者25MHz晶振。断开CPU和交换芯片的时钟连线,焊接上交换芯片预留的独立晶振,现象消失;

仔细检查电路,发现交换芯片使用CPU提供的25MHz时钟,但交换芯片的外部晶振引脚1却焊接了一只20pf的电容。修改20pf电容为下拉电阻,现象消失;拆掉20pf电容现象消失;

注:交换芯片资料已经提交当使用外部时钟是,晶振的引脚1需要接地,晶振的引脚2需要悬空。但是我们硬件工程师错误的认为引脚1的电阻仅是预留,并且错误的制作了bom。

总结:

当SOC支持多时钟源时,一定要注意其他时钟源引脚的初始状态。对于影响SOC工作的情况,需要首先着手进行下面的验证:电源是否稳定、电源启动时序、时钟和复位信号。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分