Altera S10 DDR 校准问题及经验分享
背景及问题描述
某客户在使用 Altera 1SX165HU3F50E2VG 做 TCON 项目,其中使用到了 EMIF (DDR 控制器) + LVDS 两个 IP,具体使用如下图所示。DDR4 放置在 2C/2B Bank,LVDS 放置在 2F Bank,处于同一 column 位置。
在样机测试中,当工程单独使用 EMIF IP 时,DDR4 的 calibration 能够成功;当工程加入 LVDS IP 后,DDR4 的 calibration 一直失败,此时 LVDS IP 的参考时钟端口是没有时钟信号;后续检查中发现当接上外部板卡 “DTC PCB Board” 时,会有一个 LVDS_CLK 过来,最终给 LVDS IP 提供输入参考时钟。此时发现 calibration 能成功。
校准问题分析
EMIF 的 calibration 模块是由 NIOS 控制的,其中 NIOS 是硬核,驱动 NIOS 的时钟由片内的晶振提供,所以 EMIF 的 calibration 是上电自启动的,并不会收到干扰;正常情况下,LVDS 对于 EMIF 的校准是没有影响才对。
如下图所示,LVDS 模块由 LVDS IP + IO PLL 组成,IO PLL 提供时钟信号给到 LVDS IP。对两种现象进行差别对比,如果 “DTC PCB Board” 不接,就没有输入时钟给到 IO PLL,此时 PLL 就不会 locked,内部校准自然不会成功。如果接了 “DTC PCB Board”,IO PLL 有了输入时钟,就会完成校准。
结论
以上操作都是影响 PLL 端的,该 PLL 与 EMIF 并无任何联系,因此看不出 PLL 的校准不成功会影响到 EMIF 的校准不成功;但两者同样都是校准功能,似乎彼此之间也能存在某种联系。
通过查找资料,发现该问题与 S10 器件的底层架构有关,IO PLL 跟 EMIF 的 calibration 都是由该 column 上 I/O SSM (subsystem manager) 控制的;上电时芯片会先做一个 PLL 的自检,因此对于 IO PLL 的校准会优先于 EMIF 的校准。此时如果 PLL IP 没有时钟进来,由于没有提供参考时钟,IO PLL 的校准会失败,芯片会停止对后面其他需要校准的单元进行校准,所以 EMIF 会出现校准失败的现象,实际上 EMIF 并没有做过校准操作。
解决方式
EMIF 出现校准失败的原因是由于:当 PLL 与 EMIF 是在同一个 column 上时才会发生,因此规避的方法是在 IO PLL 里的 “Cascading” 选项下把 permit_cal 勾选出来,同时在 PLL 模块接口给 permit_cal 赋值一个高电平信号:
当在 IO PLL IP 里使能这个选项后,IO PLL 的校准就会被延后,EMIF 的校准请求会被优先响应。所以这种情况下 EMIF 就能通过校准,可以正常使用。该问题目前只出现在带有 IO SSM 模块的 S10 器件,不带 IO SSM 模块的 A10 跟 C10GX 系列并无此问题。
总结
本文主要通过某客户在使用 Altera S10 器件过程中遇到的问题,为大家分享关于 S10 DDR 校准问题的一些经验。欲了解更多 Altera 相关方案或技术信息,可点击下方「联系我们」,提交您的需求,骏龙科技公司愿意为您提供更详细的技术解答。
更多信息: