生成时钟包括自动生成时钟(又称为自动衍生时钟)和用户生成时钟。自动生成时钟通常由PLL或MMCM生成,也可以由具有分频功能的时钟缓冲器生成如7系列FPGA中的BUFR、UltraScale系列FPGA中的BUFGCE_DIV/BUFG_GT以及Versal中的MBUFG/BUFG_GT等。对于这类时钟,Vivado会自动创建时钟,并不需要用户手工通过create_generated_clock创建。
案例1:单端时钟
这是比较典型的场景,如下图所示:时钟由全局时钟管脚进入经IBUF驱动MMCM以及BUFG。此时只用在输入时钟管脚处(图中红色椭圆标记)创建时钟即可,MMCM生成时钟如图中端口CLKOUT0,Vivado会自动创建。注意主时钟的位置在sysClk对应的全局时钟管脚处,不是MMCM的输出端口,也不是BUFG的输出端口。
案例2:差分时钟
如下图所示,差分时钟转单端驱动MMCM,这里主时钟为clk_pin_p(图中红色方框所示),因此只用对该端口施加create_clock命令。
使用create_clock时,对于差分时钟,施加对象为差分的P端而不是N端,同时只用对P端使用该命令,如下图所示。
有了上述约束,工具就会自动推断出MMCM生成时钟,这可通过report_clocks命令查看并验证,如下图所示(需要打开综合后的网表)。
案例3:7系列FPGA中高速收发器的TXOUTCLK/RXOUTCLK
如下图所示,7系列FPGA中高速收发器的TXOUTCLK,输出端口接BUFG。这时要在TXOUTCLK处施加命令create_clock,因此,要用get_pins而不是get_ports。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !