EDN China 电子设计技术互动社区>博客 >ilove314博客 >深入剖析I/O约束
个人档案
呢称:ilove314     文章(398)     访问(1531055)     评论(1503)     投票(165)     订阅本博  RSS
介绍:     在实践中学习,在实践中思考,在实践中总结,在实践中提高;也许,在特权同学的原创博文中会有一些不成熟的思考和文字,也非常期待各路好手分享自己的看法和见解,特权在此先谢过了!~_~
    你们必认识真理,真理必叫你们得以自由。And you shall know the truth, and the truth shall set you free. ----John 8:32
 
在成功的时候我学习谦虚
在失败的时候我学习坚毅
在快乐的时候我学习节制
在痛苦的时候我学习忍耐
在愤怒的时候我学习冷静
在害怕的时候我学习勇敢
在焦虑的时候我学习乐观
在迷惑的时候我学习分析
在犹豫的时候我学习
全部博文:
2012年  -   5月 4月 3月 2月
2011年  -   12月 11月 10月 9月 8月 7月 6月 5月 4月 3月 2月 1月
2010年  -   12月 11月 10月 9月 8月 7月 6月 5月 4月 3月 2月 1月
查看全部博文
              博客首页

深入剖析I/O约束  [CPLD/FPGA] 发布时间:2009-02-05 22:13:53  

 


题记:时序分析摸索了很久,看了很多资料,也反反复复的对比总结,然后思考。现在总算有点大彻大悟的感觉了,但是还不够有些东西理解的可能还不是那么深入透彻,也喜欢把自己的思考过的东西拿出来和大家分享,更是希望大家能提出一些看法,在不断的讨论总结中才会有进步。


 


Quartus II TimeQuest Timing Analyzer综合设计约束支持设计管脚的约束。这些约束允许Quartus II TimeQuest Timing Analyzer执行系统静态时序分析,不仅包括FPGA的时序,而且包括了任何外部器件的时序以及板级时序参数。


 


输入输出延时 Input and Output Delay


使用输入输出延时约束来指定任何外部器件或者板级参数。当您应用这些约束,Quartus II TimeQuest Timing Analyzer将在整个系统执行静态时序分析。


设置输入延时  Set Input Delay


set_input_delay约束指定了某个管脚(器件I/O)关于给定时钟的数据到达时间。Figure 6–26 展示了一个输入延时的路径。




使用set_input_delay命令来指定设计管脚的输入延时。Example 6–18展示了set_input_delay命令及选项。


Example 6–18. set_input_delay Command


set_input_delay


-clock <clock name>


[-clock_fall]


[-rise | -fall]


[-max | -min]


[-add_delay]


[-reference_pin <target>]


[-source_latency_included]


<delay value>


<targets>


 


Table 6–14. set_input_delay Command Options


































选项


描述


-clock <clock name>


指定时钟源


-clock_fall


指定数据到达时间为时钟下降沿


-rise | -fall


指定是时钟的上升沿或者下降沿延时


-max | -min


指定是数据的最大或者最小到达时间


-add_delay


另外增加一个延时,但是不会取代该管脚已经存在的延时


-reference_pin <target>


从设计中指定的管脚或节点确定源和网络潜伏期。这有利于指定由某个时钟反馈的输出管脚相关的输入延时。


-source_latency_ included


指定包括源潜伏延时值的输入延时值,因此任何分配给时钟的源时钟潜伏期将被忽略。


<delay value>


指定延时值


<targets>


指定目标管脚或者节点


 


如果您仅仅为输入延时值指定一个-max或者-min值,将会出现警告信息。此时未设定的输入最小延时值或输入最大延时值的缺省值和另一方相同。同样地,如果你仅仅为延时值指定一个-rise或者-fall值,也会出现警告信息。该默认延时值也会以和输入最大和最小延时值一样的方式设置。


最大值被用于建立时间检测,而最小值被用于保持时间检测。


默认情况下,输入延时(min/max, rise/fall)设置仅仅允许为一个clock, -clock_fall, -reference_pin组合。为一个相同的管脚指定输入延时值,若不想移除这些不同的clock, -clock_fall, 或者-reference_pin原先的输入延时设置,你必须指定-add_delay选项。当你指定了-add_delay选项,最坏的情况值将被采用。


-rise-fall选项是相互排斥的,-min-max选项也是相互排斥的。


设置输出延时  Set Output Delay


set_output_delay命令指定一个给定时钟相关管脚(器件管脚)的数据需要时间。使用set_output_delay命令指定设计管脚的输出延时约束。Figure 6–27展示了一个输出延时路径。




Example 6–19. set_output_delay Command


set_output_delay


-clock <clock name>


[-clock_fall]


[-rise | -fall]


[-max | -min]


[-add_delay]


[-reference_pin <target>]


<delay value>


<targets>


 


    各命令选项和set_input_delay类似,这里略过。


    其它说明和set_input_delay类似,这里也略过。


 


 


    下面对I/O约束中关键的输入(输出)最大(最小)延时的概念做一些阐述。



点击看大图 



 


点击看大图


从上图可以看到,输入最大/最小延时是针对外部器件的一些特性而进行设置的。所谓输入最大延时(这里先假设系统处于一个理想状态,即外部器件和FPGA共用一个时钟源,并且不考虑时钟偏斜,就是说时钟同步到达外部器件和FPGA的锁存沿),就是从时钟的发射沿算起,数据经过外部器件的最大Tco延时+PCB走线延时;而输入最小延时,就是数据经过外部器件的最小Tco延时+PCB走线的延时。这个时间和FPGA内部的建立保持时间又有怎样的关系呢?


和一般的时序分析一样,外部器件输入到FPGA的数据也必须满足建立保持时间要求,输入最大延时通俗的理解就是外部器件的数据到达FPGA端口的最晚时间,这个最晚时间可不能太晚,必须考虑FPGA内部锁存这个数据的建立时间Tsu。如果数据晚到时钟的锁存沿前的Tsu时间还没有到达,那么时钟就无法锁存这个数据了。那么就会出现时序违规了,所以,这个输入最大延时需要满足的第一个条件就是Tsu+输入最大延时<时钟周期TCLK(即上图的第一个公式)。


同理,这个数据要到达FPGA最快的时间称之为输入最小延时。这个最快时间也不能太快,试想想,如果在时钟的发射沿外部器件里的数据在非常短的时间内通过了外部器件的TcoPCB走线,到达FPGA端口时,假设此时FPGA正出于上一个从外部器件传递来的数据的保持时间Th内,那么新到达的数据势必会破坏了前一个数据的保持时间,这也会造成时序违规。这么说来,这个输入最小延时也不能太小,也必须满足一定的条件,这个条件就是:Th<输入最小延时(即上图的第二个公式)。


    讨论了这么多,相信你该理解了。那么我们再加上PCB时钟偏斜,时钟偏斜的概念我也不多说,你可以理解为这个参数是源时钟在PCB布线传输信号到达相应的锁存端口时间是会有一定偏差的,那么这个偏差就是PCB时钟偏斜,那么为什么是减去这个值而不是加上这个值呢?你可以理解这个PCB时钟偏斜值=时钟源到达FPGA端口时间-时钟源到达外部器件端口时间,然后~~慢慢消化吧!


 


建议大家参看Wind330博友的文章《同步时序约束之INPUT_DELAY详解》:


http://blog.ednchina.com/wind330/194897/message.aspx


 



点击看大图 


    输入最大/最小延时的概念说的很明白了,至于输出最大/最小延时的理解也很类似。上图的第一个公式其实和输入最大/最小延时的第一个公式有异曲同工之妙,只是把减数的位置互换了一下,不难理解。


但是第二个公式,我个人理解和altera官方的教程里提出来的不太一样,我的理解是这样的:FPGA输出数据达到外部器件输入管脚最快的时间=Tco+PCB布线延时,而根据输入最大/最小延时中第二个公式的分析,外部器件的Th应该小于上面的值,即外部器件的Th< Tco+PCB布线延时(先不讨论PCB时钟偏斜),那么Tco>Th-PCB布线延时才对,而不是Tco>输出最小延时=Th+PCB布线延时。


上面是我对这个公式的理解,也许分析得不对,期待高手指点!


 


 

标签:  
有[ 0 ]名读者喜欢此文     
阅读(5856)   评论(12)   [最后更新:2009-02-11 18:37:07]
收藏  I   打印  I   推荐到我的小组  I   转发到我的博客 (0)
对不起,您还没有登录,请先登录注册


有 [ 3 ] 名读者发表评论 - 深入剖析I/O约束

网友:

ilove314 快速回复
对不起,您还没有登录,请先登录注册
引用回复 (0)
对不起,您还没有登录,请先登录注册
2009-02-11 18:30
评论: 接受riple兄的提议
臭鸡蛋 (0) 鲜花 (0)

网友:

xalexchen 快速回复
对不起,您还没有登录,请先登录注册
引用回复 (0)
对不起,您还没有登录,请先登录注册
2009-02-11 15:17
评论: 很好很强大,不过暂时没接触altera
臭鸡蛋 (0) 鲜花 (0)

网友:

riple 快速回复
对不起,您还没有登录,请先登录注册
引用回复 (0)
对不起,您还没有登录,请先登录注册
2009-02-11 07:27
评论: 特权同学这一系列关于时序分析的文章写得非常好,能不能单独分一个类别出来,便于大家阅读、收藏。
臭鸡蛋 (0) 鲜花 (0)

网友:

ilove314 快速回复
对不起,您还没有登录,请先登录注册
引用回复 (0)
对不起,您还没有登录,请先登录注册
2009-02-10 22:38
评论: “尽信书不如无书”啊,altera的教程里也难免有疏漏的地方,我看quartus ii handbook里也常有地方写错了时间下标。有时还是要自己多思考多讨论
臭鸡蛋 (0) 鲜花 (0)

网友:

ilove314 快速回复
对不起,您还没有登录,请先登录注册
引用回复 (0)
对不起,您还没有登录,请先登录注册
2009-02-10 22:35
评论: https://mysupport.altera.com/etraining/webex/SourceSynchTiming/player.html刚看了官方的同步接口时序的实例分析,这里分析的更透彻明白,基本的概念要清楚,但是也要注意具体问题具体分析。谢谢riple
臭鸡蛋 (0) 鲜花 (0)

网友:

riple 快速回复
对不起,您还没有登录,请先登录注册
引用回复 (0)
对不起,您还没有登录,请先登录注册
2009-02-10 21:35
评论: 特权同学分析得对,应该是Tco>Th-PCB布线延时。我错了,自作聪明了,哈哈哈!
臭鸡蛋 (0) 鲜花 (0)

网友:

ilove314 快速回复
对不起,您还没有登录,请先登录注册
引用回复 (0)
对不起,您还没有登录,请先登录注册
2009-02-10 19:08
评论: 感谢riple兄耐心的解答。 1,不知道您说的关于Tco,Tsu,Th的不同是不是关于FPGA寄存器的micro Tco,micro Tsu,micro Th和通常意义上器件的Tco,Tsu,Th的区别。 2,我认为不论这里讨论的是不是FPGA器件内部的时序关系,从某种程度上这套理论也同样适用于其他器件(当然可能说需要有一些附加条件,这也是我之所以会在分析output min delay时出现和图片中altera给的推导不一样的原因)。当然我也发现FPGA器件的约束需要我们添加的一些参数大都是和器件以外因素有关的,而约束概念也大都是围绕着这个大前提来定义的。 3,我找到了quartus ii handbook中关于这个output min delay的计算。在Volume 3--6. The Quartus II TimeQuest Timing Analyzer的7-48。如果我的理解没错的话,最后得出来的output min delay = 外部器件Th-PCB布线延时-PCB时钟斜移。 特权愚见,期待指点!谢谢!
臭鸡蛋 (0) 鲜花 (0)

网友:

riple 快速回复
对不起,您还没有登录,请先登录注册
引用回复 (0)
对不起,您还没有登录,请先登录注册
2009-02-10 10:03
评论: 一个问题:在FPGA输入输出寄存器时序约束和分析过程中,Tco、Tsu、Th各个参数的物理意义与FPGA内部寄存器的约束和分析过程中对应的参数是不同的。这一点,特权同学有没有分析过?
臭鸡蛋 (0) 鲜花 (0)

网友:

riple 快速回复
对不起,您还没有登录,请先登录注册
引用回复 (0)
对不起,您还没有登录,请先登录注册
2009-02-10 09:55
评论: 上文中,input_delay的物理意义说得很清楚。在布局布线过程中,该参数的用处在于给FPGA内部的数据和时钟布线提供一个限制(约束),使最终的结果(从FPGA输入引脚到FPGA寄存器的输入端口的延时)满足Tsu和Th两个公式。同理,output_delay的用处也在于给布局布线提供一个限制,使最终的结果(从FPGA寄存器的时钟输入端口到FPGA的输出引脚)满足Tco公式。需要注意的是,在分析FPGA输入和输出寄存器的过程中,只有针对FPGA进行约束和限制的公式才有实际意义,外部器件的Tco、Tsu、Th需要当作客观的,只能由数据手册或测量、估算得到的物理参数;对外部器件推导出的任何约束公式在这里都是没有意义的。毕竟,EDA工具只能通过调整FPGA的布局布线来产生不同的FPGA内部延时,达到适应外部环境和参数的目的。
臭鸡蛋 (0) 鲜花 (0)

网友:

riple 快速回复
对不起,您还没有登录,请先登录注册
引用回复 (0)
对不起,您还没有登录,请先登录注册
2009-02-10 09:38
评论: 上面这个步骤错在,把FPGA输入寄存器的Th计算公式(已知正确的父公式)错当成了外部器件输入寄存器的Th计算公式(错误推导出的子公式)。
臭鸡蛋 (0) 鲜花 (0)
我来评论 - 深入剖析I/O约束
您的昵称: 美国的游客        (您将以游客身份发表,请登录 |  注册)
您的评论:
 
你还可以输入1000
验证码:
   
转发到我的博客
评论 @特权's Blog——永远忠于年轻时的梦想! 的“深入剖析I/O约束”
题记:时序分析摸索了很久,看了很多资料,也反反复复的对比总结,然后思考。现在总算有点大彻大悟的感觉了,但是还不够有些东西理解的可能还不是那么深入透彻,也喜欢把自己的思考过的东西拿出来和大家分享,更是希望大家能提出一些看法,在不断的讨论总结中才会有进步。QuartusIITimeQuestTimingAnalyzer综合设计约束支持设计管脚的约束。这些约束允许QuartusIITimeQuestTi
你还可以输入20000
同时评论给 ilove314
    
快速回复
 
你还可以输入1000
    
引用回复
引用评论 
 
你还可以输入1000
    
热门标签

EDN官方QQ群   更多QQ群
  • EDN-深圳 8366025
  •  NEW!
  • 菜农Cortex-M0技术交流 12047788
  • EDN-哈尔滨 75642591
  • EDN-上海 15156661
  • EDN-广州 57660943
  • EDN-桂林 48813559
  • EDN-武汉 25150805
  • EDN-模拟电路 2837145
  • EDN-通讯 30548292
  • EDN-综合 57490949

促进EDN网友交流合作,方便EDN网友学习沟通

2012 EDN China -- Use of this website is subject to its terms of use.
经营许可编号:京公安备110102000546 京ICP备09028740号-20