[转载].SDRAM时钟相移估算

[转载].SDRAM时钟相移估算

转特权(吴厚航)哥的博文。

http://blog.ednchina.com/ilove314/955999/message.aspx

 

SDRAM时钟相移估算

    《Quartus II Handbook Version 9.0 Volume 5:Embedded Peripherals》中Section I的1. SDRAM Controller Core部分提出了如何估计SDRAM数据有效信号窗口,并且给出了SDRAM时钟相对于FPGA时钟相移估计公式。

     下面先就事论事,对官方给出的这个公式做一些推导说明。(详细的内容请读者参考上面给出的资料,本文重点讨论估算公式。)原文的四个公式如图1和图2所示。

1

图1

 

2

图2

    对上述四个公式的推导如图3和图4所示。

3 

图3

 4

图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 

图5

6 

图6

7 

图7

 8

图8

    结合上面的参数,可以进行相移估算如图9所示。

 9

图9

    估算到的最佳相移值是1.2005ns,而实际工程中稳定运行的相移是2ns,即估算值的微调范围内。

转载于:https://www.cnblogs.com/yuphone/archive/2010/04/06/1705657.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110788.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python字符串使用详解

    Python字符串使用详解除了数字,Python中最常见的数据类型就是字符串,无论那种编程语言,字符串无处不在。例如,从用户哪里读取字符串,并将字符串打印到屏幕显示出来。字符串是一种数据结构,这让我们有机会学习索引和切片——用于从字符串中提取子串的方法。1字符串索引在Python语法支持中,我们简单的阐述过字符串的使用,现在我们看看python程序在处理字符串时,如何对其进行索引,打印出其中的每个字符串。我们输入一个字符串:’你好,Lucky’,Python使用方括号[]来对字符串进行索引,方括号内的数字0~n表

    2025年7月29日
    0
  • 向量的内积例题_python求向量的模

    向量的内积例题_python求向量的模有两个向量v1=(x1,x2,…,xnv_1=(x_1,x_2,…,x_n和v2=(y1,y2,…,yn)v_2=(y_1,y_2,…,y_n),允许任意交换v1v_1和v2v_2各自的分量的顺序,计算v1v_1和v2v_2的内积x1y1x2y2…xnynx_1y_1x_2y_2…x_ny_n的最小值样例:输入:n=3v1=(1,3,−5)v_1

    2022年9月24日
    0
  • lscpu命令详解

    lscpu的使用描述:  此命令用来显示cpu的相关信息  lscpu从sysfs和/proc/cpuinfo收集cpu体系结构信息,命令的输出比较易读  命令输出的信息包含cpu数量,线程,核数,套接字和Nom-UniformMemeorAccess(NUMA),缓存等  不是所有的列都支持所有的架构,如果指定了不支持的列,那么lscpu将打印列,但不显示数据语法:

    2022年4月18日
    46
  • MyBatisCodeHepler 激活码-激活码分享

    (MyBatisCodeHepler 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月26日
    43
  • Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)「建议收藏」

    Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)「建议收藏」通过前面几篇的学习,我们知道创建线程的方式有两种,一种是实现Runnable接口,另一种是继承Thread,但是这两种方式都有个缺点,那就是在任务执行完成之后无法获取返回结果,那如果我们想要获取返回结果该如何实现呢?还记上一篇Executor框架结构中提到的Callable接口和Future接口吗?,是的,从JAVASE5.0开始引入了Callable和Future,通过它们构建的线程,在

    2022年6月16日
    51
  • Cargo使用文档-指定依赖项「建议收藏」

    Cargo使用文档-指定依赖项

    2022年3月6日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号