查看: 811|回复: 0

明德扬时序约束专题课问题汇总

[复制链接]
  • TA的每日心情
    开心
    2023-1-4 10:25
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2022-4-14 07:45:04 | 显示全部楼层 |阅读模式
    分享到:
    时序约束程课程结构安排合理,基于QUARTUS和VIVADO两大平台来讲解时序约束,包括时序约束理论、时序约束步骤和时序培训三大部分。

    以下是同学们平时学习中常遇到的问题汇总,如果同学们的问题我们帖子里面没有的请第一时间联系我,我们对新问题进行补充!更多问题解疑可以点击链接查看:http://www.mdy-edu.com/fpgake/2021/0410/1279.html



    【问题1】既然打两拍的方法不能纠错,那“打两拍”还有什么意义?
    答:错误有很多种,有些错误是1次性错误,而有些是系统性错误。
    传输过程中,如果发了0,如果全部接收模块都认为是1,这并不是问题,这是可以预防和可控的(例如检测多几次就行了)。
    但是亚稳态的时候,如果发了0,但部分接收认为认为是1,而另一部分模块认为是0,至于哪些模块认为是1哪些是0,这是随机的,不可预知的,这就是灾难。更详细的内容,建议参考:FPGA知识大串讲:http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=581


    【问题2】模块A的时钟clka为100MHz,模块B的时钟clkb为300MHz。现在模块A要把32bit的数据送给模块B。模块A要如何发送,模块B要如何接收呢?答:方法1:采用异步FIFO的方法。
    方法2:采用指令信号的方法传输,模块A产生vld信号给模块B,模块B对vld进行同步化处理(打两拍)后,检测同步化信号的上升沿。
    需要注意的,VLD的信号是让模块B周期的三倍或以上。由于clka是100M,产生的vld是10ns,而clkb是300M,周期是3.33ns。所以模块A只要产生1个时钟的vld给模块B即可。


    【问题3】模块A的时钟clka为300MHz,模块B的时钟clkb为100MHz。现在模块A要把32bit的数据送给模块B。模块A要如何发送,模块B要如何接收呢?
    答:方法1:采用异步FIFO的方法。
    方法2:采用指令信号的方法传输,模块A产生vld信号给模块B,模块B对vld进行同步化处理(打两拍)后,检测同步化信号的上升沿。需要注意的,VLD的信号是让模块B周期的三倍或以上。
    由于clka是300M,产生的vld是3.33ns,而clkb是100M,周期是10ns。所以模块A要产生10个时钟的vld给模块B。


    【问题4】一块电路板上,有两个芯片,芯片A的时钟clka为100MHz,芯片B的时钟clkb为100MHz。现在芯片A要把32bit的数据送给芯片B。模块A要如何发送,模块B要如何接收呢?
    答:方法1:采用异步FIFO的方法。
    方法2:采用指令信号的方法传输,模块A产生vld信号给模块B,模块B对vld进行同步化处理(打两拍)后,检测同步化信号的上升沿。需要注意的,VLD的信号是让模块B周期的三倍或以上。
    虽然clka和clkb都是100M,但他们不是同一个晶振产生的,因此都是异步时钟。为了满足以上要求,所以模块A要产生3个时钟的vld给模块B。



    【问题5】A, B时钟都是50M,但是他们不相关,为了防止编译器把他们默认为同一个时钟,是不是要用一个异步时钟组约束,来告诉编译器他们是不同的两个时钟?
    答:一般分别产生A和B的时钟约束即可。



    【问题6】 建立时间可以是负值吗?
    答:建立时间当然可以是负数了。负数表示,可以在时钟上升沿后数据才变化。(建立时间是器件的属性,至于怎么器件怎么做到的,那就要问器件工程师了)



    【问题7】 程序原本时序可以通过,加上singalTap节点之后时序不通过是什么原因
    答:增加signaltap ILA等在线调试工具时,需要使用到内部的资源,例如RAM、选择器、寄存器等,增加后再去综合和布局布线。由于改变了资源,因此肯定对时序是有影响的,有可能改善了也有可能恶化了。如果时序有问题,分析路径,如果是在线调试工具路径,评估是否会有风险,没风险就算了



    【问题8】时序约束什么时候要做?
    答: 1.在需要的时钟频率下,如果逻辑功能不稳定,那么就需要时序约束。
    2.一般时钟大于100M的时候,我们就要做一下时序约束。



    【问题9】时序约束建立时间和保持时间的生活案例。
    答:可以想象,有一个人从家里出发去机场,搭乘13点的飞机。
    1. 13点起飞,起飞前15分钟要到机场,这个15分钟,就类似于建立时间要求。
    2. 机场每小时有要飞一趟飞机,每个小时表示的是时钟周期。
    3. 飞机起飞后,机场要保持10分钟,之后才能来下一批乘客,这个10分钟就是保持时间。
    4. 这个人出发去搭13点的飞机,因此他要在12点45分之前到机场,并且是12点10分之后到机场。既不能早到,也不能晚到机场。
    5. 如果这个人12点45分之后才到机场,那就搭不上本趟飞机,即违反了建立时间要求。(建立时间影响的是自己坐飞机)
    6. 如果这个人12点10分前就到了机场,那就会因此上一趟飞机的起飞,即违反了保持时间要求。(保持时间不满足,影响的是上一批乘客坐飞机)
    7. 这个人是计划去机场,因此他要估算几点能到机场。首先他会算所有情况下的最大延迟,如刚到路口红灯就来了、走路最慢等,在这种最慢的情况下,如果能在12点45分前到,说明建立时间没问题。然后,他会算所有情况下的最小延迟,如刚到路口绿灯,走路最快,在这种最快的情况下,如果能在12点10分后才,那说明保持时间没问题。



    【问题10】为什么建立时间分析的时钟到达时间要加一个时钟周期而保持时间分析则不用呢?
    答: 因为建立时间是源寄存器发出数据,目的寄存器采集,也就是上一个时钟发出来,本时钟采集。这里有一个时钟周期的因素,所以要加1个时钟周期。而保持时间分析,则是“本个时钟”发出数据后,如果延时太小,会影响“本个时钟”对上一个数据的采集,因为不需要加1个时钟周期。另外,要注意一点,保持时间是跟时钟周期无关的。


    【问题11】系统同步只可能是单沿采集?没法像DDR那样双沿采集?
    答:系统同步也是可以是双沿采集的,但比较少。课程里,只是介绍了部分情形。如果想看所有情形有哪些,可以打开VIVADO的时序约束向导,可以设置INPUT DELAY窗口查看。


    【问题12】QUARTUS生成SDC时,默认出现的那条时钟约束是正常的么?我自己删掉就行了?
    答:默认生成的当然是不正常。

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-5-20 17:34 , Processed in 0.102335 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.