当前位置: 代码网 > 科技>人工智能 > BUFG/BUFGCE/BUFH/BUFHCE/BUFH/BUFGHCE/BUFMR/BUFMRCE/BUFR/IBUF/IBUFDS

BUFG/BUFGCE/BUFH/BUFHCE/BUFH/BUFGHCE/BUFMR/BUFMRCE/BUFR/IBUF/IBUFDS

2024年08月02日 人工智能 我要评论
对BUFG/BUFGCE/BUFH/BUFHCE简单了解。

本文对bufg/bufgce/bufh/bufhce简单介绍,便于后续查看。
原语的使用:在vivado中找到所要用的原语,直接将其实例化到设计中即可。


下图为 7 系列 fpga 时钟架构图:
在这里插入图片描述

bufg

全局时钟缓冲。它的输入是ibufg的输出,bufg的输出到达fpga内部的iob、clb、选择性块ram的时钟延迟和抖动最小。bufg连接的是芯片中的专用时钟资源,能减少信号的传输延时,提高驱动能力。bufg可以到达设备上的任何时钟点
注意:如果内部产生的时钟,只在局部模块使用,可以考虑不使用bufg。一个bufg只能驱动一个时钟

   bufg bufg_inst (
      .o(clk0), // 1-bit output: clock output.
      .i(clk)  // 1-bit input: clock input.
   );

bufgce

带有使能端的全局时钟缓冲,使能端为高电平有效,即ce=0,q=0.否则,q=i。
除此之外,还有bufgce_1,和bufgce区别在于,当ce=0时,q=1。

   bufgce #(
      .ce_type("sync"),          // async, hardsync, sync
      .is_ce_inverted(1'b0),     // programmable inversion on ce
      .is_i_inverted(1'b0),      // programmable inversion on i
      .sim_device("ultrascale")  // ultrascale
   )
   bufgce_inst (
      .o(clk0),   // 1-bit output: buffer
      .ce(ce), // 1-bit input: buffer enable
      .i(clk)    // 1-bit input: buffer
   );

在这里插入图片描述

bufh

在这里插入图片描述

水平时钟缓冲器,其允许通过水平时钟行访问单个时钟区域中的全局时钟线。 水平时钟缓冲器 (bufh) 通过 hrow 驱动到该区域中的每个时钟点。

   bufh bufh_inst (
      .o(clk0), // 1-bit output: clock output
      .i(clk)  // 1-bit input: clock input
   );

bufhce

带有使能端,以独立启用或禁用跨越单个时钟区域的时钟。每个时钟区域最多可支持 12 个时钟。

   bufhce #(
      .ce_type("sync"), // "sync" (glitchless switching) or "async" (immediate switch)
      .init_out(0)      // initial output value (0-1)
   )
   bufhce_inst (
      .o(clk0),   // 1-bit output: clock output
      .ce(ce), // 1-bit input: active high enable
      .i(clk)    // 1-bit input: clock input
   );

在这里插入图片描述

bufmr

多时钟区域缓冲器。将时钟信号驱动到时钟区域内的专用时钟网络,与全局时钟树无关。
注意其允许区域和i/o时钟跨3个垂直相邻的时钟区域。

   bufmr bufmr_inst (
      .o(clk0), // 1-bit output: clock output (connect to bufios/bufrs)
      .i(clk)  // 1-bit input: clock input (connect to ibuf)
   );

在这里插入图片描述

bufr

区域时钟缓冲器,可以驱动现有时钟区域中的i / o逻辑和逻辑资源(clb,block ram等)【驱动区域时钟树】
在这里插入图片描述

bufmrce

多了使能,如果在多个时钟区域中需要本地时钟,则bufmrce可以驱动相邻时钟区域中的多个bufr组件,以进一步扩展该时钟功能。
在这里插入图片描述

ibuf

介绍
输入缓冲,综合的时候,工具会自动给输入信号连接ibuf。

   ibuf ibuf_inst (
      .o(o), // 1-bit output: buffer output
      .i(i)  // 1-bit input: buffer input
   );

ibufds

重点是差分。
ibufgds的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通io和其它内部clb等没有物理连接,因此差分信号进入片内之后不经过ibufds缓冲是无法直接处理的,即无法使用。

另外还有 ibufds、ibufgds和obufds。这些都是差分信号缓冲器,均用于不同电平接口之间的缓冲和转换。

如下为ibufds原语:
两个电平接口,可认为是主从信号。主信号和从信号是同一个逻辑信号,但是相位相反

   ibufds ibufds_inst (
      .o(o),   // 1-bit output: buffer output
      .i(i),   // 1-bit input: diff_p buffer input (connect directly to top-level port)
      .ib(ib)  // 1-bit input: diff_n buffer input (connect directly to top-level port)
   );

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com