Quartus II 时钟约束概念.docx
《Quartus II 时钟约束概念.docx》由会员分享,可在线阅读,更多相关《Quartus II 时钟约束概念.docx(16页珍藏版)》请在三一办公上搜索。
1、Quartus II 时钟约束概念Quartus II Handbook, Volume 3 6-28 时钟约束: 约束所有时钟对准确的时序分析结果而言是必不可少的。Quartus II TimeQuest Timing Analyzer为各种各样的时钟配置和典型时钟提供许多SDC命令。 时钟 使用create_clock命令为任何register, port或pin进行时钟特性描述,使其具有独一的时钟特性。例62展示了create_clock命令: Example 62. create_clock Command create_clock -period -name -waveform -a
2、dd Table 66. create_clock Command Options 选项 -period -name -waveform -add Example 63 约束时钟频率100MHz,占空比50%,0ns上升沿,5ns下降沿。 指定时钟周期 指定时钟名称 指定时钟上升沿/下降沿 可以对一个时钟节点进行多个时钟约束 指定你要约束的时钟 描述 这个章节将介绍SDC可用的应用编程接口,以及描述指定的时钟特性。 Example 63. 100MHz Clock Creation create_clock period 10 waveform 0 5 clk Example 64和上例相差9
3、0度的相位。 Example 64. 100MHz Shifted by 90 Degrees Clock Creation create_clock period 10 waveform 2.5 7.5 clk_sys 使用create_clock命令约束时钟缺省的source Latency值为0。Quartus II TimeQuest Timing Analyzer自动为非虚拟时钟计算时钟网络延时。 Quartus II Handbook, Volume 3 6-29 生成时钟 Quartus II TimeQuest Timing Analyzer可以把修改或改变主时钟特性的分频时钟
4、、波纹时钟和电路作为生成时钟。 你可以定义这些电路的输出作为生成时钟。这些定义可以让Quartus II TimeQuest Timing Analyzer分析这些时钟以及关联的时钟网络延时。 使用create_generated_clock命令定义生成时钟。 Example 65. create_generated_clock Command create_generated_clock -name -source -edges -edge_shift -divide_by -multiply_by -duty_cycle -add -invert -master_clock -phase
5、-offset Table 67. create_generated_clock Command Options 选项 -name -source -edges | -edge_shift -divide_by | -multiply_by 生成时钟名 指定被设定的时钟节点 -edges指定和主时钟的上升沿和下降沿有关的新的上升沿和下降沿 -divide_by和-multiply_by要素是基于第一个时钟上升沿,通过设定来延长或者缩短指定要素的波形 -duty_cycle -add -invert -master_clock -phase -offset 源延时是由于从主时钟开始的时钟网络延时
6、所致。你可以使用set_clock_latency source命令约束源延时。 Figure 617 展示了如何产生一个基于10ns时钟的反向生成时钟: Figure 617. Generating an Inverted Clock create_clock -period 10 get_ports clk create_generated_clock -divide_by 1 -invert -source get_registers clk get_registers gen|clkreg 指定生成时钟的占空比 允许你对同一个管脚添加多个时钟约束 用于主管脚上有多个时钟存在时指定一个主
7、时钟 指定生成时钟的相位 指定生成时钟的偏移 指定被分配到的目标管脚 描述 Figure 618 展示了如何使用-edges和-edge_shift选项以改变生成时钟。 Figure 618. 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 get_ports clk -edges 1 3 5 get_registers clkdivA
8、|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 619 展示了-multiply_by选项对生成时钟的影响。 Figure 619. Multiplying a Generated Clock create_clock -period 10 -waveform 0 5 get_ports cl
9、k # 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 虚拟时钟是一个在设计中没有真正源或者说与设计没有直接关系的一个时钟。例如,如果一个时钟不是设计中的时钟,而仅仅作为一个外部器件的时钟源,并且外部器件和该设计有输入或者输出的管脚,那么就认为这个时钟是虚拟时钟。 使用create_clock命令创造一个虚拟时钟,对源选项没有指定
10、值。 你可以使用set_input_delay和set_output_delay约束虚拟时钟。 Figure 620展示了Quartus II TimeQuest Timing Analyzer若要正确的分析外部寄存器和内部设计逻辑之间的关系,在何处需要设置虚拟时钟的实例。虽然名为virt_clk的晶振没有和Altera器件直接相互作用,但是担当起了外部寄存器的源时钟的角色,所以时钟virt_clk必须申明。 Example 66 展示了定义一个周期10ns,名为virt_clk,50%占空比,上升沿在0ns的虚拟时钟的命令。虚拟时钟用于作为输出延时约束的时钟源。 在你产生虚拟时钟之后,你可以
11、执行register-to-register的分析报告。 Example 66. 虚拟时钟Example 1 #create base clock for the design create_clock -period 5 get_ports system_clk #create the virtual clock for the external register create_clock -period 10 -name virt_clk -waveform 0 5 #set the output delay referencing the virtual clock set_output
12、_delay -clock virt_clk -max 1.5 get_ports dataout Example 67 展示了产生一个周期为10ns,占空比为50%,相移90度虚拟时钟的命令。 Example 67. Virtual Clock Example 2 create_clock -name virt_clk period 10 waveform 2.5 7.5 Quartus II Handbook, Volume 3 6-33 多频时钟 Multi-Frequency Clocks 某些情况下在设计中会有很多个时钟源提供时钟信号。增加的时钟也许扮演一个低频率低功耗时钟的角色。在
13、分析这种设计时,create_clock命令提供了add选项让你添加多个时钟节点。 Example 68展示了时钟周期为10ns的节点clk,然后对同一个节点添加时钟周期为15ns的时钟。Quartus II TimeQuest Timing Analyzer在执行时序分析时两个时钟都用到了。 Example 68. Multi-Frequency Example create_clock period 10 name clock_primary waveform 0 5 get_ports clk create_clock period 15 name clock_secondary wav
14、eform 0 7.5 get_ports clk -add Quartus II Handbook, Volume 3 6-34 自动时钟检测 Automatic Clock Detection 想要为你的设计中所有的时钟节点自动添加时钟约束,那么就使用derive_clocks命令。这个命令从管脚或者寄存器生成时钟以确保设计中的每个寄存器都有时钟。 Example 69 展示了derive_clocks命令选项。 Example 69. derive_clocks Command derive_clocks -period -waveform Table 68 describes the
15、options for the derive_clocks command. 选项 -period 描述 指定时钟周期,你也可以指定时钟频率如下:-period MHz -waveform 指定沿变化时刻 derive_clocks命令不能为PLLs输出时钟进行约束。 derive_clocks命令相当于使用create_clock命令为每个寄存器或者管脚产生时钟。 Quartus II Handbook, Volume 3 6-35 锁相环时钟 Derive PLL Clocks PLLs在Altera器件中被用于时钟管理和综合。你可以定制基于你设计需要的PLL输出时钟约束。因为所有的时钟节
16、点应该有一个共同的时钟基准,故所有的PLL输出应该有一个关联时钟。 你可以使用create_generated_clock命令手动添加一个作为PLL输出的基准时钟,或者你也可以使用derive_pll_clocks命令自动搜寻时序网表并通过设置指定PLL输出来产生时钟。 使用derive_pll_clocks命令为PLL输出自动产生时钟的实例如下: derive_pll_clocks -use_tan_name Table 69. derive_pll_clocks Command Options 选项 -use_tan_name 描述 缺省下,时钟名为输出时钟名字。这个选项使用的网络名字类似
17、于在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发出一个类似于Figure 610的警告信息。 Ex
18、ample 610. 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输出时钟脚的create_generated_clock命令就将生成。如果在derive_pll_clock命令后使用write_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Quartus II 时钟约束概念 时钟 约束 概念
链接地址:https://www.31ppt.com/p-3062239.html