《Quartus II Handbook Version 9.0 Volume 5:Embedded Peripherals》中Section I的1. SDRAM Controller Core部分提出了如何估计SDRAM数据有效信号窗口,并且给出了SDRAM时钟相对于FPGA时钟相移估计公式。
下面先就事论事,对官方给出的这个公式做一些推导说明。(详细的内容请读者参考上面给出的资料,本文重点讨论估算公式。)原文的四个公式如图1和图2所示。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
图1
图2
对上述四个公式的推导如图3和图4所示。
图3
图4
由上面得到的四个参数再代入下面两个公式求得Maximum Lag和Maximum Lead。
Maximum Lag = minimum(Read Lag, Write Lag)
Maximum Lead = minimum(Read Lead, Write Lead)
最后的相移值由(Maximum Lag + Maximum Lead)/ 2得到。简单的理解,就是相移值满足数据读和写有效的最小区间的中间值。
过去特权同学对这个相移估算也没有太多办法,只能凭感觉找,或者说是主要根据时序分析的结果来一次次的定位最佳的相移值,工作量比较大,也有撞运气的成分在里面,而Altera官方提出的这个方法还是很有效的,至少可以将用户的相移值定位到一个比较小的范围内再进行调整。在这个基础上还需要考虑一些PLL输出延时或者说是板级延时之类的影响,一般也只需要微调就可以搞定。
为了验证这种估算方法在工程应用中是否可行,特权同学特地拿出过去一个比较稳定工作的SDRAM控制器的一些参数进行计算。估算需要涉及到的参数如图5、图6、图7、图8所示。图5是slack最小的R2P输出时间;图6是slack最大的R2P输出时间;图7是datasheet提供的FPGA寄存器的建立保持时间参数,在TimeQuest的路径分析报告中也能找到这些参数;图8是SDRAM的Datasheet提供的相关时序参数。
图5
图6
图7
图8
结合上面的参数,可以进行相移估算如图9所示。
图9
估算到的最佳相移值是1.2005ns,而实际工程中稳定运行的相移是2ns,即估算值的微调范围内。
用户588212 2016-5-12 11:45
用户588212 2016-5-12 11:44
用户430853 2015-4-29 23:47
用户1736158 2015-4-18 18:24
用户1791460 2015-4-7 15:00
用户377235 2013-7-28 08:14
你好!SDRAM的数据好找,可是图5、6、7的数据从何而来?你的文章中说“在TimeQuest的路径分析报告中也能找到这些参数”,是说不用TimeQuest可以得到吗?如果必须用TimeQuest进行约束才能得到需要数据的话,是否要循环多次?你看,我们的目的是确定时钟相位,可在约束时就必须先输入SDRAM时钟相位啊,是多少?初步设为0吗?如果约束通过,何必再调相位?还是要约束的内容与相位无关?
用户288952 2011-9-23 16:02
用户183270 2011-1-12 14:46
ilove314_323192455 2010-12-13 11:24
用户1649635 2010-12-11 15:55