FPGA设计时序约束一、主时钟与生成时钟

这篇具有很好参考价值的文章主要介绍了FPGA设计时序约束一、主时钟与生成时钟。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

​目录

一、主时钟create_clock

1.1 定义

1.2 约束设置格式

1.3 Add this clock to the existing clock

1.4 示例

1.5 差分信号

二、生成时钟generate_clock

2.1 定义

2.2 格式

2.2.1 by clock frequency

2.2.2 by clock edges

2.2.3 示例

2.2.4 自动生成时钟

2.2.5 重命名生成时钟


一、主时钟create_clock

1.1 定义

    主时钟是来自FPGA芯片外部的时钟,通过时钟输入端口或高速收发器GT的输出引脚进入FPGA内部。对于赛灵思7系列的器件,主时钟必须手动定义到GT的输出,对于Ultrascale和Ultrascale+系列的器件,定时器会自动地接入到GT的输出。

1.2 约束设置格式

    主时钟约束使用命令create_clock进行创建,进入Timing Constraints窗口,clocks选择Create Clock,单击添加图标或双击Create Clock,进入创建窗口

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

Create Clock窗口中,Clock name为时钟约束命名,Source objects设置约束的对象类型,可以是ports,nets,pin,Waveform设置波形的形状,Period为波形周期,Rise at设置时钟的上升沿位置,Fall at设置时钟的下降沿位置。command后面为根据上述的设置自动生成对应的约束命令。

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

1.3 Add this clock to the existing clock

Add this clock to the existing clock勾选后,对于如果某个对象已创建时序约束,再次创建时将不会将之前的约束覆盖。

下面两条约束create_clk1和create_clk2的约束对象source objects都是clk1,约束内容不同,未勾选Add this clock to the existing clock时,约束如下

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

查看时序分析结果,只有create_clk2的信号,create_clk1已被覆盖

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

勾选Add this clock to the existing clock

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

时序分析报告中,create_clk1和create_clk2都存在

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

1.4 示例

    以时钟输入端口为例,时钟信号周期为10ns,占空比为50%,通过输入缓冲器和全局时钟缓冲器BUFG到达寄存器的时钟输入端口。

  约束命令: create_clock -period 10 [get_ports sysclk]

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

   来自高速收发器GT的时钟rxclk,周期为3.33ns,50%的占空比,经过时钟管理单元MMCM,生成不同的分频时钟信号,分频时钟信号再传输到寄存器。 

约束命令:create_clock -name rxclk -period 3.33 [get_pins gt0/RXOUTCLK]

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

1.5 差分信号

约束命令:create_clock -name sysclk -period 3.33 [get_ports SYS_CLK_clk_p]

    差分信号作为主时钟输入时,以一个差分信号输入到PLL的时钟输入端口CLKIN1为例,主时钟必须约束到差分端口的输入正极(sys_clk_clk_p)

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

二、生成时钟generate_clock

2.1 定义

        生成时钟通常来源于设计内部的时钟管理单元,如MMCM,PLL等,生成时钟是与主时钟相关,其来源来自主时钟或其他生成时钟。因此,需先定义主时钟,再定义生成时钟。优点是主时钟变化时会同步进行变化。

生成时钟与主时钟关系可以是分频,倍频,非整数倍频率,相移,占空比切换,以及上述关系的组合。

2.2 格式

在Timing Constraints中,左侧选择Create Generated Clock,

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

    在Create Generated Clock可以看到生成时钟的相关参数设置

clock name: 设置生成时钟的名称

Master pin(source):设置生成时钟的来源,可以是IO ports或cells pin

Master clock:设置生成时钟的源时钟

Source objects:指定指定生成时钟的实际对象,可以是I/O ports,cell pins或nets.

Do not override clocks already defined on the same Source object:勾选后,如果Source objects上有其他时钟约束,将不会被覆盖,不勾选,则覆盖原先的约束信息

Derive from source clock waveform:设置生成时钟波形与源时钟的关系,有频率相关和边沿相关两种方式,见2.2.1和2.2.2

2.2.1 by clock frequency

Multiply source clock frequency by:生成时钟是源时钟的倍频关系,值大于或等于1

Divide source clock frequency by:生成时钟是源时钟的分频关系,值大于或等于1

Duty cycle:设置生成时钟的占空比

Invert the generated clock signal:勾选后对生成信号进行倒置,即高低电平互换,0变1,1变0

下图设置的命令为:create_generated_clock -name gen_clk -source [get_ports clk1] -multiply_by 2 -invert -master_clock [get_clocks create_clk1]

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

2.2.2 by clock edges

通过源时钟的边沿设置生成时钟,以下图为例。

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

对应的命令为create_generated_clock -name gen_clk -source [get_pins clk_IBUF_BUFG_inst/O] -edges {1 3 4} -edge_shift {2.0 0.0 1.0} -add -master_clock [get_clocks  "*"] [get_pins {shiftr_reg[13]/C}]

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

含义解释:-edge {1,3,4}即生成时钟的第1个上升沿位置,第1个下降沿位置,第2个上升沿位置分别对应源时钟的第1,3,4个变化边沿,-edge_shift的3个值为在源时钟基础上的偏移。假设源时钟clk周期为10ns,占空比为50%,从0时刻开始,统计了边沿变化的数目,-edge {1,3,4}如中间波形所示,对应了clk第1,3,4的边沿;Generate clk即为各个边沿的偏移值,分别是0+2,10+0,15+1,即为Generate clk的波形。

2.2.3 示例

a)二分频的生成时钟实现用寄存器实现

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

主时钟周期为10ns,对应的约束命令为

create_clock -name clkin -period 10 [get_ports clkin]  #创建主时钟
create_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 [get_pins REGA/Q]  #创建生成时钟

b)边沿生成时钟

时钟边沿设置生成时钟,对应命令为,由波形可看出生成时钟的3个边沿刚好对应主时钟的第1,3,5,因为无偏移,故不需要-edge_shift,

create_generated_clock -name clkdiv2 -source [get_pins REGA/C] -edges {1 3 5}  [get_pins REGA/Q]

生成时钟的波形clkdiv2如下图所示

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

c)非整数倍频生成时钟

    通过同时设置倍频和分频可以设置非整数倍的生成时钟频率,如果需要生成一个4/3倍频的生成时钟,先用倍频参数multiply_by 4,再用分频参数divide_by 3。

create_generated_clock -name clk43 -source [get_pins mmcm0/CLKIN] -multiply_by 4 -divide_by 3 [get_pins mmcm0/CLKOUT]

2.2.4 自动生成时钟

    Vivado在某些场景下会根据已定义的主时钟自动产生生成时钟,将生成时钟约束到时钟修正块(CMB:clock modifying blocks)中,CMB可以是MMCM,PLL,BUFR等,在UltraScale器件中,还包括GT_COMMON/GT_CHANNEL/IBUFDS_GTE3,ISERDESE3,BITSLICE_CONTROL / RX*_BITSLICE。

    如果用户在需自动产生生成时钟的网表对象中设置了约束,则不会产生生成时钟。自动产生的生成时钟是以定义位置连接net的最顶层的部分名来命名。

    以下图连接示例,主时钟clkin驱动MMCM实例化为clkip/mmcm0的CLKIN,自动产生的生成时钟名称为cpuclk,约束到clkip/mmcm0/CLKOUT

create_clock,FPGA所知所见所解,时钟约束,主时钟,生成时钟,create_clock

2.2.5 重命名生成时钟

    对于自动生成的生成时钟,可以使用约束对其进行重命名,命令格式如下

new_name:重命名的名称

source_object:为自动生成时钟的源对象

source/master_clock:在源对象source_object存在其他时钟时,必须加上该参数,避免冲突或产生歧义

create_generated_clock -name new_name [-source master_pin] [-master_clock master_clk] source_object

    并不是生成时钟都可以重命名,自动生成时钟重命名于来源的pin,例如MMCM/PLL的输出端口,不能重命名于BUFG的输出端口,并且用户定义的生成时钟不能重命名。文章来源地址https://www.toymoban.com/news/detail-807465.html

到了这里,关于FPGA设计时序约束一、主时钟与生成时钟的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA时序约束--进阶篇(主时钟约束)

    在FPGA设计中,时序约束的设置对于电路性能和可靠性都至关重要。在上一篇的文章中,已经详细介绍了FPGA时序约束的基础知识。 本文将重点讲解主时钟约束设置,给出详细的约束命令,并介绍了在Vivado中如何写入主时钟约束。 主时钟是FPGA电路中最基础的时钟,其稳定性和

    2024年02月09日
    浏览(34)
  • FPGA时序分析与约束(3)——时钟不确定性

            在之前的文章中,我们介绍了组合电路的时序和时序电路的时序问题,在阅读本文章之前,强烈推荐先阅读完本系列之前的文章,因为这是我们继续学习的理论的理论基础,前文链接: FPGA时序分析与约束(2)——时序电路时序         本文我们将介绍时钟相关

    2024年02月10日
    浏览(30)
  • 【ug903】FPGA时序约束学习(4)-如何约束跨时钟域(Clock domain crossing,CDC)

    时序约束系列: 如何约束时钟 主时钟、虚拟时钟、生成时钟、时钟组、时钟不确定性 如何约束输入输出延迟 输入延迟、输出延迟 如何约束时序例外 多周期路径、输入输出延迟、虚假路径、最大最小延迟 如何约束跨时钟域 总线偏斜 跨时钟域(Clock Domain Crossing,CDC)约束适用

    2024年02月08日
    浏览(30)
  • FPGA的时序分析、约束和收敛(8)----关于时序路径、时钟悲观度和建立时间/保持时间的一些问题

    目录 写在前面 1、为什么同一条时序路径在报表里的值不一样?

    2024年02月12日
    浏览(43)
  • FPGA设计时序约束二、输入延时与输出延时

    目录 一、背景 二、set_input_delay 2.1 set_input_delay含义 2.2 set_input_delay参数说明 2.3 使用样例 三、set_output_delay 3.1 set_output_delay含义 3.2 set_output_delay参数说明 3.3 使用样例 四、样例工程 4.1 工程代码 4.2 时序报告 五、参考资料     为了在设计中准确的模拟信号从FPGA传输到外部或

    2024年02月07日
    浏览(31)
  • 【FPGA】Verilog:时序电路设计 | 二进制计数器 | 计数器 | 分频器 | 时序约束

    前言: 本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例:计数器与分频器   ​​ 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片  配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度  存储器:2Mbit SRAM   N25Q064A SPI Flash(样图旧款为N25Q032A) 通用

    2024年02月02日
    浏览(48)
  • 【数字IC/FPFA】时序约束--时钟约束

    时钟周期约束,顾名思义,就是我们对时钟的周期进行约束,这个约束是我们用的最多的约束了,也是最重要的约束。 下面我们以vivado中的时钟约束为例,介绍时钟约束的相关内容。 在Vivado中我们通过使用create_clock来创建时钟周期约束。使用方法如下: 其中,参数name为创建

    2024年02月03日
    浏览(33)
  • 基于Xlinx的时序分析、约束和收敛(4)----主时钟约束

    目录 主时钟约束语法 例1:引脚输入的主时钟约束 例2:高速收发器GT的恢复时钟

    2023年04月17日
    浏览(26)
  • FPGA时序分析与时序约束(四)——时序例外约束

    目录 一、时序例外约束 1.1 为什么需要时序例外约束 1.2 时序例外约束分类 二、多周期约束 2.1 多周期约束语法 2.2 同频同相时钟的多周期约束 2.3 同频异相时钟的多周期约束 2.4 慢时钟域到快时钟域的多周期约束 2.5 快时钟域到慢时钟域的多周期约束 三、虚假路径约束 四、最

    2024年01月20日
    浏览(34)
  • FPGA时序约束与分析(1) --- 时序约束概述

    本系列参考文献 — FPGA时序与约束分析-吴厚航 FPGA从综合到实现需要的过程如下:synth_design - opt_design - place-design - phys_opt_design - route_design 1、时序约束的理解 2、时序约束的基本路径 3、时序约束的步骤 4、时序约束的主要方法 5、查看相关时序信息 FPGA的设计约束分为物理约束

    2024年02月16日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包