原创 深入剖析I/O约束

2009-2-11 18:37 9344 4 18 分类: FPGA/CPLD

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


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


 


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 展示了一个输入延时的路径。


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


918dcada-501a-4c20-8342-9ee7c7ba59b4.jpg


使用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展示了一个输出延时路径。



de884cd7-decc-4cab-b075-97493b947b5f.jpg


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布线延时。


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


 


 

PARTNER CONTENT

文章评论14条评论)

登录后参与讨论

用户598257 2014-7-1 10:26

谢谢特权同学对知识的共享,祝身体健康

用户428044 2013-1-23 15:58

恩。。Th-pcb延迟-时移 。。正解

用户1323656 2011-8-26 09:43

这个产品是否类似于迪文的串口屏啊,我们在批量用迪文的串口屏

ilove314_323192455 2009-2-11 18:30

接受riple兄的提议

用户377539 2009-2-11 15:17

很好很强大,不过暂时没接触altera

ash_riple_768180695 2009-2-11 07:27

特权同学这一系列关于时序分析的文章写得非常好,能不能单独分一个类别出来,便于大家阅读、收藏。

ilove314_323192455 2009-2-10 22:38

“尽信书不如无书”啊,altera的教程里也难免有疏漏的地方,我看quartus ii handbook里也常有地方写错了时间下标。有时还是要自己多思考多讨论

ilove314_323192455 2009-2-10 22:35

https://mysupport.altera.com/etraining/webex/SourceSynchTiming/player.html刚看了官方的同步接口时序的实例分析,这里分析的更透彻明白,基本的概念要清楚,但是也要注意具体问题具体分析。谢谢riple

ash_riple_768180695 2009-2-10 21:35

特权同学分析得对,应该是Tco>Th-PCB布线延时。我错了,自作聪明了,哈哈哈!

ilove314_323192455 2009-2-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时钟斜移。 特权愚见,期待指点!谢谢!
相关推荐阅读
特权ilove314 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
特权ilove314 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
特权ilove314 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
特权ilove314 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
EE直播间
更多
我要评论
14
4
关闭 站长推荐上一条 /3 下一条