首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Xilinx-FPGA关于BUFFER(时钟/普通IO信号)的使用总结

  • 23-11-29 12:21
  • 2512
  • 7930
blog.csdn.net

目录

前言

一、时钟BUFFER使用总结

二、普通IO输出时钟信号时的推荐方法

使用ODDR


前言

Xilinx-FPGA开发过程中,关于时钟信号和普通IO信号引入FPGA内部需要遵循一定的使用方法,现在自己一年多使用过的内容做一个总结,也供新手参考。关于BUFFERS原语,主用用于对端口时钟信号及其他重要信号的缓冲和驱动,满足FPGA底层硬件综合布线规则,以正确且充分的利用FPGA全局时钟树资源。


一、使用总结

1、IBUFG+BUFG
IBUFG+BUFG是最常用的使用方法,可以用BUFGP,BUFGP=IBUFG+BUFG。

个人经验:如工程设计中使用局时钟树资源,一般使用clocking wizard IP和更为方便,该IP和包含了MMCM+IBUFG+BUFG,,如下图一个单端系统输入时钟+三个输出时钟的WIZ IP核所示:

2、IBUFG+DCM+BUFG
首先通过DCM数字锁相环适用于动态调整,然后再通过BUFG利用全局时钟树走线。

3、logic+BUFG
FPGA内部的普通logic信号也可以通过通过BUFG利用全局时钟树走线,需要注意的是logic到BUFG之间大概有10ns的延时。

4、logic+DCM+BUFG
FPGA内部的普通logic信号也可以首先通过DCM数字锁相环调整,然后再通过BUFG利用全局时钟树走线。

5、IBUFGDS+BUFG
差分时钟信号的组合使用方法。

一般使用是同1.所述常用clocking wizard IP得到工程所需的各速率的时钟信号,该IP核的输入可选择为差分输入时钟。

6、IBUFDS+BUFG
差分普通信号作为全局时钟信号的的组合使用方法。

二、普通IO输出时钟信号时的推荐方法

若直接使用assign 将clk_object(BUFG输出信号)赋值给IO管脚作为输出,

推荐使用原语ODDR作为实现,代码如下:

  1. ODDR #(
  2. .DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE" or "SAME_EDGE"
  3. .INIT(1'b0), // Initial value of Q: 1'b0 or 1'b1
  4. .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC"
  5. ) ODDR_inst1 (
  6. .Q(实际作为时钟输出信号的IO管脚), // 1-bit DDR output
  7. .C(本计划作为输出的时钟信号), // 1-bit clock input
  8. .CE(1'b1), // 1-bit clock enable input
  9. .D1(1'b1), // 1-bit data input (positive edge)
  10. .D2(1'b0), // 1-bit data input (negative edge)
  11. .R(1'b0), // 1-bit reset
  12. .S(1'b0) // 1-bit set

UG472中P24对BUFIO的描述:

The main purpose of the BUFR and BUFIO combination is to support source-synchronous
interfaces. When an interface is placed into a single region, the BUFIO clocks the
high-speed side of the SelectIOs and the BUFR clocks the deserialized/serialized side at a
lower speed into the FPGA logic providing the clock domain transfer function. For
interfaces that require more logic and/or I/Os than are available in a single clock region/
bank, the BUFMR (BUFMRCE) is used to expand clock domain transfer functionality into
the clock regions above and below. Certain types of applications that require a divided
clock not related to the source-synchronous I/O use case can use a BUFR as a simple clock
divider when an MMCM/PLL cannot be used or is not available for the frequency divide
function. In this case, particular attention must be paid to the timing and skew because this
is not the primary purpose of the BUFR. For more information on clocking SelectIO
resources, consult UG471, 7 Series FPGAs SelectIO Resources User Guide.

BUFIO的输入输出YG472中描述如下:(因此BUFIO的输出可以驱动SELECTIO的I/OLOGIC)

Within the same clock region, BUFIOs are driven by:

•   MRCCs (dedicated 1:1)

•   SRCCs (dedicated 1:1)

•   MMCM.CLKOUT0– MMCM.CLKOUT3

•   CLKFBOUT

•   BUFMRs in the same clock region and clock regions below and above

When used within the same clock region, BUFIOs drive:

•   ILOGIC.clk

•   ILOGIC.clkb

•   OLOGIC.clk

•   OLOGIC.clkb

•   OLOGIC.oclk

•   OLOGIC.oclkb


注:本文转载自blog.csdn.net的我想听相声的文章"https://blog.csdn.net/weixin_42483560/article/details/125643424"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

123
硬件开发
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top