欢迎来到天天文库
浏览记录
ID:27527082
大小:27.00 KB
页数:5页
时间:2018-12-04
《FPGA实战开发技巧(5).doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、FPGA实战开发技巧(5) 一般来讲,添加约束的原则为先附加全局约束,再补充局部约束,而且局部约束比较宽松。其目的是在可能的地方尽量放松约束,提高布线成功概率,减少ISE布局布线时间。典型的全局约束包括周期约束和偏移约束。在添加全局时序约束时,需要根据时钟频率划分不同的时钟域,添加各自的周期约束;然后对输入输出端口信号添加偏移约束,对片内逻辑添加附加约束。1.周期约束 周期约束是附加在时钟网路上的基本时序约束,以保证时钟区域内所有同步组件的时序满足要求。在分析时序时,周期约束能自动处理寄存器时钟端的反相问题,如
2、果相邻的同步元件时钟相位相反,则其延迟会被自动限制为周期约束值的一半,这其实相当于降低了时钟周期约束的数值,所以在实际中一般不要同时使用时钟信号的上升沿和下降沿。 硬件设计电路所能工作的最高频率取决于芯片内部元件本身固有的建立保持时间,以及同步元件之间的逻辑和布线延迟。所以电路最高频率由代码和芯片两部分共同决定,相同的程序,在速度等级高的芯片上能达到更高的最高工作频率;同样,在同一芯片内,经过速度优化的代码具有更高的工作频率,在实际中往往取二者的平衡。 在添加时钟周期之前,需要对电路的期望时钟周期有一个合理的估
3、计,这样才不会附加过松或过紧的周期约束,过松的约束不能达到性能要求,过紧的约束会增加布局布线的难度,实现的结果也不一定理想。常用的工程策略是:附加的时钟周期约束的时长为期望值的90%,即约束的最高频率是实际工作频率的110%左右。 附加时钟周期约束的方法有两个:一是简易方法,二是推荐方法。简易方式是直接将周期约束附加到寄存器时钟网线上,其语法如下所示: [约束信号]PERIOD={周期长度}{HIGH
4、LOW}[脉冲持续时间];其中,[]内的内容为可选项,{}中的内容为必选项,“
5、”表示选择项。[约束信号]可为
6、“Netnet_name”或“TIMEGRPgroup_name”,前者表示周期约束作用到线网所驱动的同步元件上,后者表示约束到TIMEGRP所定义的信号分组上(如触发器、锁存器以及RAM等)。{周期长度}为要求的时钟周期,可选用ms、s、ns以及ps等单位,默认值为ns,对单位不区分大小写。{HIGH
7、LOW}用于指定周期内第一个脉冲是高电平还是低电平。[脉冲持续时间]用于指定第一个脉冲的持续时间,可选用ms、s、ns以及ps等单位,默认值为ns,如果缺省该项,则默认为50%的占空比。如语句: Net“clk_
8、100MHz”period=10nsHigh5ns; 指定了信号clk_100MHz的周期为10ns,高电平持续的时间为5ns,该约束将被添加到信号clk_100MHz所驱动的元件上。 推荐方法常用于约束具有复杂派生关系的时钟网络,其基本语法为: TIMESPEC“TS_idenTIfier”=PERIOD“TNM_reference”{周期长度} {HIGH
9、LOW}[脉冲持续时间]; 其中,TIMESPEC是一个基本时序相关约束,用于标志时序规范。“TS_identifier”由关键字TS和用户定义的
10、identifier表示,二者共同构成一种时序规范,称为TS属性定义,可在约束文件中任意引用,大大地丰富了派生时钟的定义。在使用时,首先要定义时钟分组,然后再添加相应的约束,如: NET”clk_50MHz”=“syn_clk”; TIMESPECT“TS_syn_clk”=PERIOD“syn_clk”20HIGN10; TIMESPEC利用识别符定义派生时钟的语法为: TIMESPEC“TS_identifier2”=PERIOD“timegroup_name”“TS_identifier1” [*
11、
12、/]倍数因子[+
13、-]phasevalue[单位] 其中,TS_identifier2是要派生定义的时钟,TS_identifier1为已定义的时钟,“倍数因子”用于给出二者周期的倍数关系,phasevalue给出二者之间的相位关系。如: 定义系统时钟clk_syn: TIMESPEC“clk_syn”=PERIOD“clk”5ns; 下面给出其反相时钟clk_syn_180以及2分频时钟clk_syn_half: TIMESPEC“clk_syn_180”=PERIOD“clk_180”clk_synP
14、HASE+2.5ns; TIMESPEC“clk_syn_180”=PERIOD“clk_half”clk_syn/2;2.偏移约束 偏移约束也是一类基本时序约束,规定了外部时钟和数据输入输出引脚之间的相对时序关系,只能用于端口信号,不能应用于内部信号,包括OFFSET_IN_BEFORE,OFFSET_IN_AFTER,OFFSET_OUT_BEFOR
此文档下载收益归作者所有