ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:190.50KB ,
资源ID:6117899      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/6117899.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(Quartus_II_时钟约束.doc)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Quartus_II_时钟约束.doc

1、QuartusII 时钟约束 时钟约束(Clock Specification): 约束所有时钟(包括你的设计中特有的时钟)对准确的时序分析结果而言是必不可少的。Quartus II TimeQuest Timing Analyzer为各种各样的时钟配置和典型时钟提供许多SDC命令。 这个章节将介绍SDC可用的应用编程接口,以及描述指定的时钟特性。 时钟(Clocks) 使用create_clock命令为任何register, port或pin进行时钟特性描述,使其具有独一的时钟特性。例6–2展示了create_clock命令: Example 6–2. create_cl

2、ock Command create_clock -period [-name ] [-waveform ] [-add] Table 6–6. create_clock Command Options 选项 描述 -period 指定时钟周期 [-name ] 指定时钟名称(不一定是约束时钟的节点名称) [-waveform ] 指定时钟上升沿/下降沿 [-add] 可以对一个时钟节点

3、进行多个时钟约束 指定你要约束的时钟(目标节点) Example 6–3 约束时钟频率100MHz,占空比50%,0ns上升沿,5ns下降沿。 Example 6–3. 100MHz Clock Creation create_clock –period 10 –waveform { 0 5 } clk Example 6–4和上例相差90度的相位。 Example 6–4. 100MHz Shifted by 90 Degrees Clock Creation create_clock –period 10 –waveform { 2.5 7.5 }

4、clk_sys 使用create_clock命令约束时钟缺省的source Latency值为0。Quartus II TimeQuest Timing Analyzer自动为非虚拟时钟(non-virtual clocks)计算时钟网络延时(clock’s network latency)。 Quartus II Handbook, Volume 3 6-29 生成时钟(Generated Clocks) Quartus II TimeQuest Timing Analyzer可以把修改或改变主时钟(或者引入时钟)特性的分频时钟、波纹时钟和电路作为生成时钟。 你可以定

5、义这些电路的输出作为生成时钟。这些定义可以让Quartus II TimeQuest Timing Analyzer分析这些时钟以及关联的时钟网络延时(network latency)。 使用create_generated_clock命令定义生成时钟。 Example 6–5. create_generated_clock Command create_generated_clock [-name ] -source [-edges ] [-edge_shift ] [-divi

6、de_by ] [-multiply_by ] [-duty_cycle ] [-add] [-invert] [-master_clock ] [-phase ] [-offset ] Table 6–7. create_generated_clock Command Options 选项 描述 -name 生成时钟名 -source 指定被设定的时钟节点 -edges

7、 | -edge_shift -edges指定和主时钟的上升沿和下降沿有关的新的上升沿和下降沿 -divide_by | -multiply_by -divide_by和-multiply_by要素是基于第一个时钟上升沿,通过设定来延长或者缩短指定要素的波形 -duty_cycle 指定生成时钟的占空比 -add 允许你对同一个管脚添加多个时钟约束 -invert -master_clock 用于主管脚上有多个时钟存在时指定一个主时钟 -phase

8、 指定生成时钟的相位 -offset 指定生成时钟的偏移 指定被分配到的目标管脚 源延时是由于从主时钟(不一定是主管脚)开始的时钟网络延时所致。你可以使用set_clock_latency –source命令约束源延时。 Figure 6–17 展示了如何产生一个基于10ns时钟的反向生成时钟: Figure 6–17. Generating an Inverted Clock create_clock -period 10 [get_ports clk] create_generated_clock -divide

9、by 1 -invert -source [get_registers clk] \ [get_registers gen|clkreg] Figure 6–18 展示了如何使用-edges和-edge_shift选项以改变生成时钟。 Figure 6–18. Edges and Edge Shifting a Generated Clock create_clock -period 10 -waveform { 0 5} [get_ports clk] # Creates a divide-by-t clock create_generated_clock -source

10、[get_ports clk] -edges {1 3 5 } [get_registers \ clkdivA|clkreg] # Creates a divide-by-2 clock independent of the master clocks’ duty cycle (now 50%) create_generated_clock -source [get_ports clk] -edges {1 1 5} -edge_shift { 0 2.5 0 } \ Figure 6–19 展示了-multiply_by选项对生成时钟的影响。 Figure 6–19. M

11、ultiplying a Generated Clock create_clock -period 10 -waveform { 0 5 } [get_ports clk] # Creates a multiply-by-2 clock create_generated_clock -source [get_ports clk] -multiply_by 2 [get_registers \ Quartus II Handbook, Volume 3 6-32 虚拟时钟Virtual Clocks 虚拟时钟是一个在设计中没有真正源或者说与设计没有直接关系的一个时钟。例

12、如,如果一个时钟不是设计中的时钟,而仅仅作为一个外部器件的时钟源,并且外部器件和该设计有输入或者输出的管脚,那么就认为这个时钟是虚拟时钟。 使用create_clock命令创造一个虚拟时钟,对源选项没有指定值。 你可以使用set_input_delay和set_output_delay约束虚拟时钟。 Figure 6–20展示了Quartus II TimeQuest Timing Analyzer若要正确的分析外部寄存器和内部设计逻辑之间的关系,在何处需要设置虚拟时钟的实例。虽然名为virt_clk的晶振没有和Altera器件直接相互作用,但是担当起了外部寄存器的源时钟的角色,所以时钟

13、virt_clk必须申明。 Example 6–6 展示了定义一个周期10ns,名为virt_clk,50%占空比,上升沿在0ns的虚拟时钟的命令。虚拟时钟用于作为输出延时约束的时钟源。 在你产生虚拟时钟之后,你可以执行register-to-register的分析报告(在Altera器件和外部器件的寄存器之间)。 Example 6–6. 虚拟时钟Example 1 #create base clock for the design create_clock -period 5 [get_ports system_clk] #create the virtual cloc

14、k for the external register create_clock -period 10 -name virt_clk -waveform { 0 5 } #set the output delay referencing the virtual clock set_output_delay -clock virt_clk -max 1.5 [get_ports dataout] Example 6–7 展示了产生一个周期为10ns,占空比为50%,相移90度虚拟时钟的命令。 Example 6–7. Virtual Clock Example 2 create_cl

15、ock -name virt_clk –period 10 –waveform { 2.5 7.5 } Quartus II Handbook, Volume 3 6-33 多频时钟 Multi-Frequency Clocks 某些情况下在设计中会有很多个时钟源提供时钟信号。增加的时钟也许扮演一个低频率低功耗时钟的角色。在分析这种设计时,create_clock命令提供了–add选项让你添加多个时钟节点。 Example 6–8展示了时钟周期为10ns的节点clk,然后对同一个节点添加时钟周期为15ns的时钟。Quartus II TimeQuest Timing Anal

16、yzer在执行时序分析时两个时钟都用到了。 Example 6–8. Multi-Frequency Example create_clock –period 10 –name clock_primary –waveform { 0 5 } [get_ports clk] create_clock –period 15 –name clock_secondary –waveform { 0 7.5 } [get_ports clk] -add Quartus II Handbook, Volume 3 6-34 自动时钟检测 Automatic Clock Detectio

17、n 想要为你的设计中所有的时钟节点自动添加时钟约束,那么就使用derive_clocks命令。这个命令从管脚或者寄存器生成时钟以确保设计中的每个寄存器都有时钟。 Example 6–9 展示了derive_clocks命令选项。 Example 6–9. derive_clocks Command derive_clocks [-period ] [-waveform ] Table 6–8 describes the options for the derive_clocks command. 选项 描述 -period

18、 指定时钟周期,你也可以指定时钟频率如下:-period MHz -waveform 指定沿变化时刻 derive_clocks命令不能为PLLs输出时钟进行约束。 derive_clocks命令相当于使用create_clock命令为每个寄存器或者管脚产生时钟。 Quartus II Handbook, Volume 3 6-35 锁相环时钟 Derive PLL Clocks PLLs(锁相环)在Altera器件中被用于时钟管理和综合。你可以定制基于你设计需要的PLL输出时钟约束。因为所有的时钟

19、节点应该有一个共同的时钟基准,故所有的PLL输出应该有一个关联时钟。 你可以使用create_generated_clock命令手动添加一个作为PLL输出的基准时钟,或者你也可以使用derive_pll_clocks命令自动搜寻时序网表并通过设置指定PLL输出来产生时钟。 使用derive_pll_clocks命令为PLL输出自动产生时钟的实例如下: derive_pll_clocks [-use_tan_name] Table 6–9. derive_pll_clocks Command Options 选项 描述 -use_tan_name 缺省下,时钟名为输出时钟名字。

20、这个选项使用的网络名字类似于在Quartus II Classic Timing Analyzer中使用的。 derive_pll_clocks命令调用create_generated_clock命令以产生PLL输出的生成时钟。 create_generated_clock命令的source是PLL的输入时钟。derive_pll_clocks命令的前后已固定,你必须手动为PLL生成一个输入时钟节点。如果PLL的输入时钟节点未被定义好,报告中不会出现PLL输出的时钟。取而代之的,当时序网表更新后,Quartus II TimeQuest Timing Analyzer发出一个类似于Figu

21、re 6–10的警告信息。 Example 6–10. Warning Message Warning: The master clock for this clock assignment could not be derived. Clock: was not created. 你可以把derive_pll_clocks命令添加到你的SDC文件中,以使得derive_pll_clocks命令可以自动检测PLL的任何变化。derive_pll_clocks在你的SDC文件中,每次读取该文件,PLL输出时钟脚的cr

22、eate_generated_clock命令就将生成。如果在derive_pll_clock命令后使用write_sdc命令,新的SDC文件包含了独立的PLL输出时钟管脚的create_generated_clock命令,并且不是derive_pll_clocks命令。任何PLL属性的变化不会自动的反应到新的SDC文件中。你必须通过写入derive_pll_clocks命令手动更新新的SDC文件中的create_generated_clock命令(反映PLL的变化)。 通过添加适当的multicycle约束计算不确定因素,derive_pll_clocks将约束设计中的任何LVDS传送和LV

23、DS接收。 例如,Figure 6–21展示了一个寄存器到寄存器路径的单一PLL设计。 使用derive_pll_clocks命令自动约束PLL。当Figure 6–21的设计中使用到这个命令,将产生Example 6–11的信息。 Example 6–11. derive_pll_clocks Generated Messages Info: Info: Deriving PLL Clocks: Info: create_generated_clock -source pll_inst|altpll_component|pll|inclk[0] -divide_by 2 -n

24、ame pll_inst|altpll_component|pll|CLK[0] pll_inst|altpll_component|pll|clk[0] Info: 名为pll_inst|altpll_component|pll|inclk[0]的节点用于作为PLL输入时钟脚的源参考选项。此外,PLL输出时钟的名字是PLL输出时钟节点pll_inst|altpll_component|pll|clk[0]。 如果PLL处于时钟替换模式,PLL输出时钟将产生多时钟;一个是主要输入时钟(例如inclk[0]),另一个是次要输入时钟(例如inclk[1])。假若那样的话,你可以使用set_

25、cock_groups命令加上-exclusive选项以削减主要和次要输出时钟。在你可以为这个设计产生任何报告之前,你必须为PLL输入时钟管脚产生一个基本时钟,使用类似下面的命令: create_clock -period 5 [get_ports pll_inclk] 你不用在PLL的输入时钟管脚pll_inst|altpll_component|pll|inclk[0]上产生基本时钟。PLL输入时钟管脚产生所有的扇出时钟管脚,包括PLL输入时钟管脚。 Quartus II Handbook, Volume 3 6-37 缺省时钟约束 Default Clock Const

26、raints 为了提供彻底的时钟分析,如果你的设计中没有基本时钟约束,Quartus II TimeQuest Timing Analyzer在缺省时会自动的检测所有未被约束的时钟节点。Quartus II TimeQuest Timing Analyzer使用以下命令产生1GHz的时钟约束你的未约束时钟: derive_clocks -period 1 独立的时钟约束(例如,create_clock, create_generated_clock)可能会出现在设计中。这将导致不切实际的分析设计中的时序要求。derive_clocks的使用应该避免出现在最终的时序里。 缺省时钟约束仅仅

27、被用于Quartus II TimeQuest Timing Analyzer检测所有没有时钟连接的同步单元。例如,如果一个设计约束两个时钟,而仅有一个时钟已经约束了,这将不会使用缺省时钟约束。然而,如果两个时钟都未被约束,那么将会启动缺省时钟约束。 Quartus II Handbook, Volume 3 6-37 Clock Groups 设计中存在着许多时钟,然而,并非所有时钟都相互关联,况且某些时钟间相互关联是没有必要的。异步时钟就是不相关时钟(异步时钟有不同的理想时钟源)。专用时钟也不一定在同一时刻激活(例如,多元时钟)。必须向Quartus II TimeQues

28、t Timing Analyzer指明相互排斥的时钟,从而阻止其把这些时钟作为关联时钟进行分析。 使用set_clock_groups命令指明相互排斥或者异步的时钟。Example 6–12 展示了set_clock_groups命令及选项。 Example 6–12. set_clock_groups Command set_clock_groups [-asynchronous | -exclusive] -group [-group ] [-group ] ... Table 6–10 des

29、cribes the options for the set_clock_groups command. 选项 描述 -asynchronous 异步时钟——两个时钟没有相位关系并且不在同一时刻激活 -exclusive 专有时钟——两个时钟中仅有一个在特定时间激活。2选1时钟就是专有时钟的一个实例 -group 指定相互独有的时钟名。用于指定时钟名 Example 6–13展示了set_clock_groups命令和等价命令set_false_path的用法。 Example 6–13. set_clock_group

30、s Example # Clocks A and C are never active when clocks B and D are active set_clock_groups -exclusive -group {A C} -group {B D} # Equivalent specification using false paths set_false_path -from [get_clocks A] -to [get_clocks B] set_false_path -from [get_clocks A] -to [get_clocks D] set_false_

31、path -from [get_clocks C] -to [get_clocks B] set_false_path -from [get_clocks C] -to [get_clocks D] set_false_path -from [get_clocks B] -to [get_clocks A] set_false_path -from [get_clocks B] -to [get_clocks C] set_false_path -from [get_clocks D] -to [get_clocks A] set_false_path -from [get_cloc

32、ks D] -to [get_clocks C] Quartus II Handbook, Volume 3 6-39 影响时钟特性 Clock Effect Characteristics create_clock和create_generated_clock命令产生不涉及板级影响的理想时钟。这个章节描述如何计算影响时钟特性的时钟延时(clock latency)和时钟不确定时间(clock uncertainty)。 时钟延时 Clock Latency 时钟延时(clock latency)由两部分组成:源(source)和网络(network)。源延时(S

33、ource latency),是指从源时钟到目的时钟端的传播延时(例如,一个时钟端口),而网络延时(network latency)是指从一个定义点时钟到一个寄存器时钟端口的传播延时。寄存器时钟节点总的延时是时钟路径上源和网络延时之和。 set_clock_latency命令仅仅支持源延时。当使用该命令时,-source选项需指定。 使用set_clock_latency命令指定设计中的任意时钟端口的源延时Example 6–14展示了set_clock_latency命令选项。 Example 6–14. set_clock_latency Command set_clock_lat

34、ency -source [-clock ] [-rise | -fall] [-late | -early] Quartus II TimeQuest Timing Analyzer自动计算网络延时;因此,set_clock_latency命令仅仅指定源延时。 时钟不确定时间 Clock Uncertainty set_clock_uncertainty命令为时钟或者时钟到时钟传输指定了时钟不确定时间或时钟偏斜。可以为个别的建立和保持时间指定不确定时间,也可以为个别时钟传输指定上升沿或下降沿。Quartus

35、 II TimeQuest Timing Analyzer为每个合适路径数据需要时间(data required time)里扣除建立不确定时间,为每个合适路径的数据需要时间加上保持不确定时间。 使用set_clock_uncertainty命令指定时钟管脚的任意时钟不确定时间。Example 6–15展示了set_clock_uncertainty命令及选项。 Example 6–15. set_clock_uncertainty Command and Options set_clock_uncertainty [-rise_from | -fa

36、ll_from | -from ] [-rise_to | -fall_to | -to ] [-setup | -hold] Quartus II Handbook, Volume 3 6-41 获得时钟不确定时间 Derive Clock Uncertainty 使用derive_clock_uncertainty命令应用于交互时钟(inter-clock)、内部时钟(intra-clock)和I/O接口的不

37、确定时间的自动检测。建立和保持不确定时间都适合于时钟到时钟的传输。Example 6–16展示了derive_clock_uncertainty命令选项。 Example 6–16. derive_clock_uncertainty Command derive_clock_uncertainty [-overwrite] [-dtw] Quartus II TimeQuest Timing Analyzer自动的添加设计中时钟到时钟传输的时钟不确定时间。随着set_clock_uncertainty命令已被应用于源和目的时钟对中的任何时钟不确定时间约束,比起由derive_cloc

38、k_uncertainty命令约束的时钟不确定时间具有更高的优先权。例如,如果set_clock_uncertainty命令先指定了源时钟CLKA和目的时钟CLKB之间的时钟网络延时。那么derive_clock_uncertainty命令次之,由derive_clock_uncertainty命令计算出的由源时钟CLKA到目的时钟CLKB的不确定时间将被忽略。 你可以使用-overwrite命令覆盖原先的时钟不确定时间分配,后者手动添加remove_clock_uncertainty命令进行移除。 在以下的时钟到时钟传输类型中,时钟必然能够出现,它们被derive_clock_uncer

39、tainty命令自动归类。 ■ Inter-clock ■ Intra-clock ■ I/O Interface 交互时钟传输 Inter-Clock Transfers 交互时钟传输(Inter-clock transfers)发生在FPGA核和来自内部PLL输出节点或管脚的源与目的时钟的寄存器到寄存器传输。Figure 6–22展示了一个交互时钟传输的例子。 内部时钟传输 Intra-Clock Transfers 内部时钟传输(Intra-clock transfers)发生在FPGA核和来自内部PLL输出节点或管脚的源与目的时钟的寄存器到寄存器传输。Figu

40、re 6–22展示了一个内部时钟传输的例子。 I/O接口时钟传输 I/O Interface Clock Transfers I/O接口时钟传输发生在数据从I/O端口到FPGA核(input)或者从FPGA核到I/O端口(output)时的时钟传输。Figure 6–24展示了一个I/O端口时钟传输的例子。 约束I/O总线不确定时间,你必须生成一个虚拟时钟来约束输入和输出管脚(使用以虚拟时钟作为参考的set_input_delay和set_output_delay命令)。当set_input_delay或者set_output_delay命令以PLL输出作为参考时钟管脚时

41、虚拟时钟需阻止derive_clock_uncertainty命令应用于交互或者内部时钟传输在I/O总线时钟传输的确定时钟。 产生的虚拟时钟应该和驱动I/O端口的源时钟具有相同的属性。例如,Figure 6–25展示了一个典型的具有时钟说明的输入I/O接口。 Example 6–17展示了用SDC命令来约束Figure 6–25中的I/O接口。 Example 6–17. SDC Commands to Constrain the I/O Interface # Create the base clock for the clock port create_clock –p

42、eriod 10 –name clk_in [get_ports clk_in] # Create a virtual clock with the same properties of the base clock driving # the source register create_clock –period 10 –name virt_clk_in # Create the input delay referencing the virtual clock and not the base # clock # DO NOT use set_input_delay –clock clk_in # [get_ports data_in] set_input_delay –clock virt_clk_in [get_ports data_in]

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服