《QuartusII时钟约束概念》由会员分享,可在线阅读,更多相关《QuartusII时钟约束概念(16页珍藏版)》请在金锄头文库上搜索。
1、QuartusIIHandbook,Volume36-28时钟约束(ClockSpecification约束所有时钟(包括你的设计中特有的时钟)对准确的时序分析结果而言是必不可少的。QuartusIITimeQuestTimingAnalyze为各种各样的时钟配置和典型时钟提供许多SDCT令。这个章节将介绍SDC可用的应用编程接口,以及描述指定的时钟特性。时钟(Clocks)使用create_clock命令为任何register,port或pin进行时钟特性描述,使其具有独一的时钟特性。例62展示了create_clock命令:Example62create_clockCommandcreat
2、e_clock-period-name-waveform-addTable6-6.create_clockCommandOptions选项描述-period指定时钟周期-name指定时钟名称(不一定是约束时钟的节点名称)-waveform指定时钟上升沿/下降沿-add可以对一个时钟节点进行多个时钟约束指定你要约束的时钟(目标节点)Example6S约束时钟频率100MHz,占空比50%,0ns上升沿,5ns下降沿Example63100MHzClockCreationcreate_clock-period10waveform05clkExample6V和上例相差90度的相位。Example64
3、100MHzShiftedby90DegreesClockCreationcreate_clock-period10waveform2.57.5clk_sys使用create_clock命令约束时钟缺省的sourceLatency值为0。QuartusIITimeQuestTimingAnalyzer自动为非虚拟时钟(non-virtualclocks)计算时钟网络延时(clocksnetworklatency)。QuartusIIHandbook,Volume36-29生成时钟(GeneratedClocksQuartusIITimeQuestTimingAnalyzer可以把修改或改变主时
4、钟(或者引入时钟)特性的分频时钟、波纹时钟和电路作为生成时钟。你可以定义这些电路的输出作为生成时钟。这些定义可以让QuartusIITimeQuestTimingAnalyzer分析这些时钟以及关联的时钟网络延时(networklatency)。使用create_generated_clock命令定义生成时钟。Example65create_generated_clockCommandcreate_generated_clock-name-source-edges-edge_shift-divide_by-multiply_by-duty_cycle-add-invert-master_clo
5、ck-phase-offsetTable6T.create_generated_clockCommandOptions选项描述-name生成时钟名-source指定被设定的时钟节点-edges|-edge_shift-edges指定和主时钟的上升沿和下降沿有关的新的上升沿和下降沿-divide_by|-multiply_by-divide_by和-multiply_by要素是基丁第一个时钟上升沿,通过factor设定来延长或者缩短指定要素的波形-duty_cycle指定生成时钟的占空比-add允许你对同一个管脚添加多个时钟约束-invert-master_clock用丁主管脚上有多个时钟存在时
6、指定一个主时钟-phase指定生成时钟的相位-offset指定生成时钟的偏移指定被分配到的目标管脚源延时是由丁从主时钟(不一定是主管脚)开始的时钟网络延时所致。你可以使用set_clock_latencysource命令约束源延时。Figure6T7展示了如何产生一个基丁10ns时钟的反向生成时钟:Figure6T7.GeneratinganInvertedClockcreate_clock-period10get_portsclkcreate_generated_clock-divide_by1-invert-sourceget_registersclkget_registersgen|cl
7、kregEdges12345679elkgen|dkregTimeIIIIIII0102030Figure6T8展示了如何使用-edges和-edge_shift选项以改变生成时钟。Figure6T8.EdgesandEdgeShiftingaGeneratedClockcreate_clock-period10-waveform05get_portsclk# Createsadivide-by-tclockcreate_generated_clock-sourceget_portsclk-edges135get_registersclkdivA|clkregCreatesadivide-by
8、-2clockindependentofthemasterclocksdutycycle(now50%)create_generated_clock-sourceget_portsclk-edges115-edge_shift02.50Ed糜12345673dkRLFLLnclkdivA|dkregclkdivB|dkregTimeIIII0102030Figure6T9展示了-multiply_by选项对生成时钟的影响。Figure6T9.MultiplyingaGeneratedClockcreate_clock-period10-waveform05get_portsclk#Create
9、samultiply-by-2clockcreate_generated_clock-sourceget_portsclk-multiply_by2get_registersdkdkmult|cllkregTimojI-0102030QuartusIIHandbook,Volume36-32虚拟时钟VirtualClocks虚拟时钟是一个在设计中没有真正源或者说与设计没有直接关系的一个时钟。例如,如果一个时钟不是设计中的时钟,而仅仅作为一个外部器件的时钟源,并且外部器件和该设计有输入或者输出的管脚,那么就认为这个时钟是虚拟时钟。使用create_clock命令创造一个虚拟时钟,对源选项没有指定
10、值。你可以使用set_input_delay和set_output_delay约束虚拟时钟。Figure620展示了QuartusIITimeQuestTimingAnalyzer要正确的分析外部寄存器和内部设计逻辑之间的关系,在何处需要设置虚拟时钟的实例。虽然名为virt_clk的晶振没有和Altera器件直接相互作用,但是担当起了外部寄存器的源时钟的角色,所以时钟virt_clk必须申明。Example6-6展示了定义一个周期10ns,名为virt_clk,50%占空比,上升沿在0ns的虚拟时钟的命令。虚拟时钟用丁作为输出延时约束的时钟源。Figure620.VirtualClockBoa
11、rdTopology在你产生虚拟时钟之后,你可以执行register-to-register的分析报告(在Altera器件和外部器件的寄存器之间)。Example6-6.虚拟时钟Example1#createbaseclockforthedesigncreate_clock-period5get_portssystem_clk#createthevirtualclockfortheexternalregistercreate_clock-period10-namevirt_clk-waveform05#settheoutputdelayreferencingthevirtualclockset
12、_output_delay-clockvirt_clk-max1.5get_portsdataoutExample6-7展示了产生一个周期为10ns,占空比为50%,相移90度虚拟时钟的命令。Example67VirtualClockExample2create_clock-namevirt_clk-period10waveform2.57.5QuartusIIHandbook,Volume36-33多频时钟Multi-FrequencyClocks某些情况下在设计中会有很多个时钟源提供时钟信号。增加的时钟也许扮演一个低频率低功耗时钟的角色。在分析这种设计时,create_clock命令提供了
13、-add选项让你添加多个时钟节点。Example6-8展示了时钟周期为10ns的节点clk,然后对同一个节点添加时钟周期为15ns的时钟。QuartusIITimeQuestTimingAnalyzer在执行时序分析时两个时钟都用到了。Example6-8.Multi-FrequencyExamplecreate_clock-period10-nameclock_primarywaveform05get_portsclkcreate_clock-period15-nameclock_secondarywaveform07.5get_portsclk-addQuartusIIHandbook,V
14、olume36-34自动时钟检测AutomaticClockDetection想要为你的设计中所有的时钟节点自动添加时钟约束,那么就使用derive_clocks命令。这个命令从管脚或者寄存器生成时钟以确保设计中的每个寄存器都有时钟。Example6P展示了derive_clocks命令选项。Example69derive_clocksCommandderive_clocks-period-waveformTable6-8describestheoptionsforthederive_clockscommand.选项描述-period指定时钟周期,你也可以指定时钟频率如下:-periodMHz-waveform指定沿变化时刻derive_clocks命令不能为PLLs输出时钟进行约束。derive_clocks命令相当丁使用