明德扬吴老师 发表于 2019-12-26 16:41:34

Xilinx Kintex-7 电源稳定性调试心得(私人总结版)

Xilinx Kintex-7 电源稳定性调试心得(私人总结版)
本文为明德扬原创文章,转载请注明出处!作者:郑先生
http://www.mdy-edu.com/upaa/666/ynt2siavpi4.png
Xilinx KC705 开发套件Xilinx XC7K325T是Kintex-7系列其中一个型号,拥有326K逻辑单元和407K CLB触发器,IO资源也达到了500个单端IO,240对差分对。公司最近在搞的信号采集处理项目就用了这款FPGA,采集模块部分采用14位、500 MSPS LVDS、双通道模数转换器(用的是ADI的AD9684,并行14位LVDS接口,DDR模式)

http://www.mdy-edu.com/upaa/666/qb44kywhthm.png
AD9684PS:此ADC功能很强大,可说是数字通信接收机的利器,哈哈,后续有机会跟大家介绍此ADC的调试心得。调试过程很漫长,由于板卡的稳定性一直存在问题,FPGA发热异常,调试经常遇见莫名其妙的Bug,由于最终采集处理后的数据通过千兆以太网发出,数据给予到上位机进行进一步处理,因此千兆以太网PHY芯片采用的是88E1111,它支持RGMII,GMII,SGMII等接口与MAC层连接,相信大家都不会陌生,Marvell 88E1111 PHY芯片价格还是挺高的,但是功能也确实强大。
http://www.mdy-edu.com/upaa/666/i2rqf33kfhe.pngMarvell 88E1111

值得一提的是88E1111的MDI线与网口变压器连接时,中心抽头需要接VCC,因为88E1111是电流驱动型IC。
http://www.mdy-edu.com/upaa/666/2hqsqdx2ri0.png

参考接法至于采用的电源多大,与所用PHY芯片有关,这里不再赘述。 调试过程中,千兆网口经常出现连接断开的现象,网口变压器异常发热,排查问题时发现88E1111芯片内核电源纹波异常,1.0V的电源,纹波达到了200mV。有意思的是,该电源轨与FPGA 内核电源轨,用的VRM是同一个,所以K7的内核电源的纹波也达到了200mV左右,也就是误差达到了±10%,这是不能接受的。至此我们一度怀疑采集处理后数据的错误是因为该电源的容差过大,导致内部逻辑形成保持时间故障。(事实上后续调试证实是时序约束问题,这里可以建议大家学习一下明德扬的时序约束课程,国内少有的)
http://www.mdy-edu.com/upaa/666/zlqh2q0ckko.png
Xilinx 数据手册上指出内核电源的为1.0V由数据手册可以知道,内核电源需要1V±30mV,很显然该VRM是不满足要求的。电源IC是来自于TI 的开关稳压器TPS54620 同步buck 6A输出,测试时发现其SW端波形异常,明显能看出High side 出现突然关断,Low side 在High side 关断后未导通。
http://www.mdy-edu.com/upaa/666/ewpdzohjiqz.png
初步判定以为是bootstrap 电路出现问题,认为尖峰噪声导致boot电容击穿,然而现实是残酷的,更换boot电容后波形仍然未改变。题主陷入盲目,对补偿电路进行试错法调试,调整芯片本振频率,结果仍然一样。无奈之下,静下心来继续研究数据手册

http://www.mdy-edu.com/upaa/666/ub0uajh1g0u.png

TPS54620 内部框图冷静下来分析了该芯片的内部框图,发现其High side 与low side 都有电流环路,认为是电流环路起作用了。但是什么原因导致电流环路起作用,此时题主一头雾水,虽以前设计过与调试过低压大电流的电源模块,但更多是按照数据手册的指引进行设计,下载原厂提供的spice模型进行参数验证(很多时候照搬参考设计并不能适合每个板卡,没有设备的情况下我都是选择仿真验证)。对该VRM的电路参数进行了一次排查,发现电感选用的是线艺的MSS6132-103ML_ ,这就存在很大问题了,该电感的饱和电流只有1.6A左右!!
http://www.mdy-edu.com/upaa/666/mc1224nsf0o.png
这个电流真的太小了,我认为根本带不动K7的内核,更不用说加个88E1111,但是口说无凭,作为技术人员,感觉可以作为自己的经验方向去调试,但是凭感觉就下结论,是万万不可为的。所以我打开Xilinx Xpower 功耗分析工具,对已经综合后的工程进行功耗分析,结果如下
http://www.mdy-edu.com/upaa/666/tq2bjwqg02g.png
Xpower 界面      分析结果显示内核电源VCCINT的总电流为2.3A,动态电流达到了2.2A,大大超过了1.6A。至此,结论很明显是电感电流过大达到饱和,失效导致high side直通负载电流过大,电流环路起作用关闭high side 。然后话不多说,直接更换饱和电流更大,感量较低的电感,输出电容Cout增加一个100uF的MLCC(PS.增加电容的原因是电感改小了,这样会导致电源功率环路的LC二阶极点左移,在补偿电路为改变的前提下,可能会导致电源振荡),再次测试,SW端波形恢复正常,纹波也只有几十mV。

http://www.mdy-edu.com/upaa/666/5nfvumirxyo.png
TPS54620 PH端波形
内核电源稳定后,再次上电调试,千兆网口通讯正常,FPGA异常发热的问题也迎刃而解,我去查了Xilinx官方文献,内核电源不稳定是会造成功耗异常。建议使用模块电源。MPS,ADI,TI等厂商都有专用于7系列FPGA的电源解决方案,体积小,电流大,动态响应快,缺点相对于用PMIC解决方案就是贵。这三家中MPS的模块电源价格算比较友好了
http://www.mdy-edu.com/upaa/666/s2t3upofkrk.png
   MPS Kintex-7 模块电源解决方案很多工程师都会选择开关稳压器作为FPGA板卡的VRM,这样能省不少成本,但是设计时应该考虑一下VRM的稳定性,避免板卡存在隐患,调试时也能避开许多问题。想要学习交流的同学可以留言给我,也可以联系明德扬学习更多知识!

hyhyx1 发表于 2019-12-26 20:51:38

还以为明德扬不搞xilinx的芯片呢!看来我错了……
页: [1]
查看完整版本: Xilinx Kintex-7 电源稳定性调试心得(私人总结版)