• vivado里那些看不懂的原语


    遇到一段代码

                    GLOBAL sw_clk(
                            .in                     (SWCLK),
                            .out                    (swck)
                    );
    
    • 1
    • 2
    • 3
    • 4

    是Intel风格的,可以用xilinx的BUFG进行替代
    // BUFG 分配时钟专用资源,指定信号走专门的时钟布线

    修改为

    			 BUFG sw_clk(
                            .I	(SWCLK),
                            .O	(swck)
                    );
    
    • 1
    • 2
    • 3
    • 4

    布线时候报错

    [Place 30-574] Poor placement for routing between an IO pin and BUFG. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
    	< set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets SWCLK_IBUF] >
    
    	SWCLK_IBUF_inst (IBUF.O) is locked to IOB_X0Y7
    	 and SWCLK_IBUF_BUFG_inst (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y0
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    具体原因未知,只能先把功能打通,所以把相关的部分注释掉。

    下面是收集的一些资料,来源都做了标注。

    【FPGA】xilinx IOBUF的用法

    inout类型的接口,主动添加IOBUF

    IOBUF #(
          .DRIVE(12), // Specify the output drive strength
          .IBUF_LOW_PWR("TRUE"),  // Low Power - "TRUE", High Performance = "FALSE"
          .IOSTANDARD("DEFAULT"), // Specify the I/O standard
          .SLEW("SLOW") // Specify the output slew rate
       ) IOBUF_inst (
          .O(O),     // Buffer output
          .IO(IO),   // Buffer inout port (connect directly to top-level port)
          .I(I),     // Buffer input
          .T(T)      // 3-state enable input, high=input, low=output
       );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    Reference

    xilinx FPGA全局时钟资源的使用

    1.什么是xilinx fpga全局时钟资源
      时钟对于一个系统的作用不言而喻,就像人体的心脏一样,如果系统时钟的抖动、延迟、偏移过大,会导致系统的工作频率降低,严重时甚至会导致系统的时序错乱,实现不了预期的逻辑功能。xilinx fpga内的全局时钟资源可以很好的优化时钟的性能,因此在设计时要尽可能多的使用fpga内部的时钟资源。xilinx fpga内部的全局时钟采用全铜工艺实现,配合专用时钟缓冲和驱动结构,可以使进入全局时钟网络的时钟到达fpga内部各个逻辑单元的抖动和延迟最小。全局时钟资源是专用布线资源,存在于全铜布线层上,使用全局时钟资源不会影响芯片的其他布线资源。最好的全局时钟解决方案是:让时钟从全铜工艺的全局时钟输入管脚进入fpga,然后经内部的全局时钟缓冲单元去控制各个触发器。xilinx常用的全局时钟资源原语有:全局时钟缓冲IBUFG、差分全局时钟缓冲IBUFGDS、全局缓冲BUFG、数字时钟管理单元DCM、锁相环PLL。

    2.全局时钟资源的使用方法
      IBUFG是从全局时钟输入管脚输入的单端时钟的第一级缓冲,IBUFGDS是指的是差分时钟的缓冲。只要是从全局时钟管脚的输入的时钟必须要经过IBUFG,如果不经过,那么ise在布局布线时就会报错,反之如果使用了IBUFG,那么信号一定是从全局时钟输入管脚输入的,这是因为IBUFG和IBUFGDS的输入只和fpga的全局时钟输入引脚有物理上的连接,与普通的IO和内部逻辑块CLB没有物理上的连接。BUFG是全局缓冲,BUFG的输出到达fpga内部各个逻辑单元的时钟延迟与抖动都是最小的。BUFG不但可以驱动IBUFG和DCM的输出,还可以驱动其他普通的片内信号和普通io,当某个信号扇出很大时,而且要求的抖动延迟最小时,可以用BUFG驱动该信号,普通IO和普通的片内逻辑信号进入全局时钟布线层有一个固定的延迟,一般在10ns左右,即普通信号或普通IO从输入到BUFG的输出有一个约10ns左右的固有延迟,但BUFG的输出到片内所有的单元(IOB,CLB,选择性块RAM)的延时可以忽略不计。时钟资源原语的使用方法主要有以下四种:
      
    Reference

    Vivado使用心得(二)BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用

    全局时钟资源的使用方法(五种)

    1. IBUFG + BUFG的使用方法:
      IBUFG后面连接BUFG的方法是最基本的全局时钟资源使用方法,由于IBUFG组合BUFG相当于BUFGP,所以在这种使用方法也称为BUFGP方法。

    2. IBUFGDS + BUFG的使用方法:
      当输入时钟信号为差分信号时,需要使用IBUFGDS代替IBUFG。

    3. IBUFG + DCM + BUFG的使用方法:
      这种使用方法最灵活,对全局时钟的控制更加有效。通过DCM模块不仅仅能对时钟进行同步、移相、分频和倍频等变换,而且可以使全局时钟的输出达到无抖动延迟。

    4. Logic + BUFG的使用方法:
      BUFG不但可以驱动IBUFG的输出,还可以驱动其它普通信号的输出。当某个信号(时钟、使能、快速路径)的扇出非常大,并且要求抖动延迟最小时,可以使用BUFG驱动该信号,使该信号利用全局时钟资源。但需要注意的是,普通IO的输入或普通片内信号进入全局时钟布线层需要一个固有的延时,一般在10ns左右,即普通IO和普通片内信号从输入到BUFG输出有一个约10ns左右的固有延时,但是BUFG的输出到片内所有单元(IOB、CLB、选择性块RAM)的延时可以忽略不计为“0”ns。

    5. Logic + DCM + BUFG的使用方法:
      DCM同样也可以控制并变换普通时钟信号,即DCM的输入也可以是普通片内信号。使用全局时钟资源的注意事项全局时钟资源必须满足的重要原则是:使用IBUFG或IBUFGDS的充分必要条件是信号从专用全局时钟管脚输入。换言之,当某个信号从全局时钟管脚输入,不论它是否为时钟信号,都必须使用IBUFG或IBUFGDS;如果对某个信号使用了IBUFG或IBUFGDS硬件原语,则这个信号必定是从全局时钟管脚输入的。如果违反了这条原则,那么在布局布线时会报错。这条规则的使用是由FPGA的内部结构决定的:IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接。另外,由于BUFGP相当于IBUFG和BUFG的组合,所以BUFGP的使用也必须遵循上述的原则。

    Reference

    Xilinx FPGA输入输出缓冲 BUF 的使用

    Reference

    UltraScale Architecture Libraries Guide (UG974)

    Reference

  • 相关阅读:
    (附源码)计算机毕业设计SSM基于框架的家用电器销售管理
    SQL练习题
    如何在 Linux 中管理用户
    DASCTF X CBCTF 2022九月挑战赛 dino3d
    什么是生成器 — 一篇文章让你看懂
    适配器模式
    xming Error: Can‘t open display:
    MyBatis源码学习
    [Vulnhub] narak
    个人以及企业用户如何选择合适的阿里云服务器?
  • 原文地址:https://blog.csdn.net/I_LOVE_MCU/article/details/125891894