欢迎来到天天文库
浏览记录
ID:27821411
大小:190.00 KB
页数:8页
时间:2018-12-06
《一文详解FPGA编程技巧输入输出偏移约束.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、一文详解FPGA编程技巧输入输出偏移约束 1.偏移约束的作用 偏移约束(OffsetConstraint)用来定义一个外部时钟引脚(Pad)和数据输入输出引脚之间的时序关系,这种时序关系也被称为器件上的Pad-to-Setup或Clock-to-Out路径这些约束对与外部元器件相连的接口十分重要,在这里,需要解释两个术语: Pad-to-Setup:也被称为OFFSETINBEFORE约束,是用来保证外部输入时钟和外部输入数据的时序满足FPGA内部触发器的建立时间要求的如下图TIN_BEFORE
2、约束使得FPGA在进行DATA_IN和CLK_SYS布线时努力保证DATA_IN相对于CLK_SYS的延时小于TIN_BEFORE Clock-to-Out:也被称为OFFSETOUTAFTER约束,是用来满足下游器件建立保持(setup/hold)要求或输出时钟和数据之间时序要求的 OFFSETINBEFORE或OFFSETOUTAFTER约束允许用户指定外部输入或输出引脚相对于时钟边沿到内部数据的延时 1.1输入偏移约束时序参考图 1.2输出偏移约束时序参考图 XilinxFPG
3、A有三个层次的约束: GlobalOFFSET:为所有输入或输出指定相对某个特定时钟的约束; GroupOFFSET:为一组输入或者输出指定相对驱动他们的时钟的约束 Net-SpecificOFFSET:为某个特定的输入或者输出指定相对其驱动时钟的约束; 在进行约束的详细讲解之前,必须明确两个概念: 建立时间setuptime 指在触发器始终上升沿到来之前,数据必须保持稳定的时间,如果建立时间不够,数据将不能被打入触发器; 保持时间holdtime 指触发器的时钟上升沿到来之后数据必须
4、稳定不变的时间,如果保持时间不够,数据不能被打入触发器; 1.3建立保持时间时序图 2.OFFSETIN约束 OFFSETIN约束用来设定Pad-to-Setup时序要求OFFSETIN是对数据时钟关系的一种说明它当分析建立时间要求(data_delay+setup-clock_delay-clock_arrival要求满足约束条件)的时候,需要考虑时钟延时(clockdelay)、时钟边沿(clockedge)、DLL/DCM引入的时钟相位 2.1.OFFSETINBEFORE约束 O
5、FFSETINBEFORE约束限定了数据从引脚传播到同步元件并在同步元件建立起来的所需的时间比如“OFFSET=IN2nsBEFOREclock_pad”这个约束,限定数据必须在下一个时钟边沿到来之前2ns内读取,因此FPGA会规划使得数据相对时钟边沿的超前2ns之内 2.1OFFSETINBEFORE约束带校准功能的电路 上图FPGA在布线时会尽力去满足如下不等式: TData+TSetup-TClock《=Toffset_IN_BEFORE; 2.1.1.VALID约束 OFFSET
6、IN约束往往和VALID约束一起使用OFFSETIN约束在建立时间分析中作为建立时间要求使用,而VALID约束在保持时间约束中作为保持时间要求使用VALID约束指定了输入数据的持续时间在默认情况下,FPGA指定VALID和OFFSET的值相等,也即FPGA在默认情况下认为保持时间为0 2.2带有VALID约束的输入偏移约束 2.1.2.OFFSETIN约束的一个简单例子 FPGA的分析工具在综合时经常会用到一个词:Slack,即松弛时间,当Slack》0时,该路径设计满足时序要求;当Slac
7、k《0时,该路径不满足时序要求 Slack=(Requirement-(DataPath-ClockPath-ClockArrival)) 2.3OFFSETIN的简单例子时序 该约束为: TIMESPECTS_clock=PERIODclock_grp10nsHIGH50%; OFFSET=IN3nsBEFOREclock; 2.4OFFSETIN约束时序报告 从时序约束报告的Slack的值可以看出,Data不能被Clock成功打入触发器FF0. 2.2.OFFSETINAF
8、TER约束 OFFSETINAFTER和OFFSETINBEFORE在本质上是一样的,只是形式上不一样,其约束效果是完全一样的OFFSETINAFTER的约束公司如下: TData+TSetup-TClock《=TPeriod–Toffset_IN_AFTER; 3.OFFSETOUT约束 OFFSETOUT约束用来定义clock-to-pad时序要求OFFSETOUT约束是对外部clock-to-data的说明并且必须考虑clock_delay
此文档下载收益归作者所有