学习内容

全局时钟缓冲,输入缓冲,输出缓冲

开发环境

xilinx spartan6、ISE14.7、modelsim10.5

写在前面的话

当你用ISE14.7时可能会出现如下的报错
This design contains a global buffer instance, <clk_inst/clkout3_buf>, driving the net, <clk_out_OBUF>, that is driving the following (first 30) non-clock load pins.
This design contains a global buffer instance,
等等
(上边的报错主要是因为如DCM出来的时钟信号要经过ODDR2才能引导我们外部的引脚)你会出现类似的报错,学习本篇文章后解决办法很简单,当然你不想学习也可以,直接参照本篇文末的的做法对于spartan6可以添加ODDR2来解决这个问题。
但是本文不限于解决这一种错误,本文的主要目的是了解和学习相关概念和思想,毕竟原语和IP核所包含的东西是不一样的,比如我们调用的PLL IP核是包含IBUFG和BUFG的,但是我们自己写PLL的话不能忘记的

知识总结

xilinx原语总结 包括BUFG IBUF和IBUFDS IBUFG和IBUGGDS OBUF和OBUFDS等

当我们的FPGA要使用外部时钟或者将时钟输出到外部引脚的时候该怎么做?

1.当我们使用外部时钟的时候,首先连线的时候一定要接到全局时钟引脚,平时用得最多的还是IBUFG+DCM(PLL)+BUFG方案,如下图所示。将时钟管脚输入的时钟作为IBUFG的输入,然后将IBUFG的输出作为DCM(PLL)的输入,将经DCM(PLL)频率变换后的输出再作为BUFG的输入这种方案使用方法最为灵活,对全局时钟的控制更加有效。通过DCM(PLL)模块不仅能对时钟进行同步、移相、分频、倍频等变换,而且可以使全局时钟的输出达到无抖动延迟(“0”skew)。简单来说就是
全局时钟I/O口->IBUFG->PLL
2.当把FPGA中的时钟(比如DCM和PLL输出的时钟)输出到普通I/O口时,不能直接输出,要经过BUFGODDR2,但是需要注意的是如果我们调用的是IP核那么不需要调用BUFG的原语,因为IP核已经包括了BUFG,只需要调用ODDR2即可,如果DCM和PLL是通过原语编写的那么我们需要加上BUFG和ODDR2。简单来说就是
内部使用的应该是 PLL -> BUFG->
外部管脚输出的 应该是 PLL -> BUFG -> ODDR -> PIN
ODDR2的代码如下:

ODDR2 oddr2_inst(.D0(1'b1),.D1(1'b0),.CE(1'b1),.C0(clk_in),  .C1(!clk_in), .R (1'b0),.S (1'b0),.Q (clk_out));

其中clk_in为我们经过BUFG的时钟信号,经过ODDR2后为clk_out可以输出到我们的普通I/O口不会报错。
为什么要用ODDR处理?因为如果直接从 BUFG 上连接到 OBUF 上,在编译器 map 的过程中就会出现错误,为避免这个错误,另一种方法就是在约束文件中加上一条约束,让编译器忽略时序约束的要求,直接通过普通逻辑资源连接。但这样 Clock 输出的时延和抖动(Jitter)都会变差。

Spartan6时钟资源介绍

时钟资源
时钟布线资源具有高速、低SKEW的特点,它对系统设计非常重要,即使系统速率不高,也应该关注时钟设计,以消除潜在的时钟危险。Spartan-6器件包含16个全局时钟资源40个I/O区域时钟资源。全局时钟用于系统时钟,而I/O区域时钟专用于I/O串行/解串(ISERDES和OSERDES)设计。

Spartan-6时钟资源包含以下4种。

全局时钟输入引脚(GCLK)。局时钟多路复用器。I/O时钟缓冲器。时钟布线网络。
包括由BUFGMUX驱动的全局时钟网络和由I/O时钟缓冲器(BUFIO2)、PLL时钟缓冲器(BUFPLL)驱动的I/O区域时钟网络。
时钟输入
每个Spartan-6有32个全局时钟输入引脚,分布在FPGA的四周。时钟输入引脚在片上的分布图如图2-5所示。时钟输入引脚接收外部时钟信号,直接连接片内的DCM/PLL/BUFGMUX/BUFIO2。时钟输入引脚不连接时钟时,用作普通I/O。

一个差分时钟输入需要两个全局时钟输入。成对的时钟输入在标号上是连续的,例如,GCLK0和GCLK1是差分对,GCLK20和GCLK21是差分对。每个全局时钟缓冲器有两个时钟输入,Spartan-6支持最多16对的差分全局时钟输入。

设计中的时钟输入引脚连接IBUFG原语,通常综合工具会分析设计,自动将顶层时钟引脚推演为与IBUFG相连。如果需要更多IBUFG的控制功能,可以通过例化IBUFG的方式,将IBUFG的I端口连到顶层端口,将O端口连接到DCM、BUFG或通用逻辑。

因为第一次接触FPGA资源相关方面知识,暂时更新到这里,以后学习深入了会回头更新。

FPGA-全局时钟缓冲IBUFG BUFG IBUFGDS ODDR2相关推荐

  1. bufg和bufgp_Xilinx FPGA全局时钟和第二全局时钟资源的使用方法(转)

    "全局时钟和第二全局时钟资源"是FPGA同步设计的一个重要概念.合理利 用该资源可以改善设计的综合和实现效果:如果使用不当,不但会影响设计 的工作频率和稳定性等,甚至会导致设计的综 ...

  2. Xilinx FPGA全局时钟和第二全局时钟资源的使用方法

    目前,大型设计一般推荐使用同步时序电路.同步时序电路基于时钟触发沿设计,对时钟的周期.占空比.延时和抖动提出了更高的要求.为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时 ...

  3. 【FPGA】FPGA中的缓冲与驱动那些事

    目录 转载说明 原文精彩片段 缓冲: 驱动: 转载说明 为解决问题而学习才是由效率的,今天重新看了以前的那个项目的Verilog HDL程序,到现在我还没有弄明白细节,只有慢慢蚕食.看到了这样一串程序 ...

  4. Xilinx FPGA中全局时钟资源的使用方法

    1. IBUFG 即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲.所有从全局时钟管脚输入的信号必须经过IBUFG单元,否则在布局布线时会报错.IBUFG支持AGP,CTT,GTL,GTL ...

  5. (30)FPGA面试题全局时钟资源及原语

    1.1 FPGA面试题全局时钟资源及原语 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题全局时钟资源及原语: 5)结束语. 1.1.2 本节引言 &quo ...

  6. Spartan-6的时钟资源、全局时钟缓冲器/多路复用器

    时钟资源 时钟布线资源具有高速.低SKEW的特点,它对系统设计非常重要,即使系统速率不高,也应该关注时钟设计,以消除潜在的时钟危险.Spartan-6器件包含16个全局时钟资源和40个I/O区域时钟资 ...

  7. FPGA之时钟规划图解

    目录 一.前言 二.时钟规划概念 三.时钟规划的模块 3.1 时钟BUF 3.2 时钟源 四.时钟规划之时钟单元布局 4.1 BUFG 4.2 BUFH 4.3 BUFR 4.4 BUFIO 五.时钟 ...

  8. FPGA 之 时钟,时钟域, 以及复位系统的设计

    FPGA时钟和时钟域 时钟树 所谓时钟树为FPGA内部资源, 分 : 全局时钟树, 区域时钟树 , IO时钟树 原则上优先使用全局时钟树, 在GT接口上使用IO时钟树, 一般工具也会对GT时钟加以限制 ...

  9. Xilinx FPGA全局介绍

    Xilinx FPGA全局介绍 现场可编程门阵列 (FPGA) 具有诸多特性,无论是单独使用,抑或采用多样化架构,皆可作为宝贵的计算资产:许多设计人员并不熟悉 FPGA,亦不清楚如何将这类器件整合到设 ...

最新文章

  1. MATLAB中unzip出错,node.js里unzip出错的处理
  2. C++ Under the Hood
  3. 幼儿使用计算机亮度,使用夜灯会影响孩子的视力?真相究竟是什么
  4. python列表推导式生成随机数_Python:列表推导式/生成器推导式
  5. LeetCode 623. Add One Row to Tree
  6. OC中数组的遍历方法
  7. ubuntu 刷新频率 如何查看_ubuntu如何调整显示的分辨率和刷新率?
  8. 【远距离无线模块】WDS3及SI4338使用步骤及配置说明
  9. 常见字符与ASCII码值对照表
  10. Python 信号处理——短时傅里叶变换(STFT)
  11. 人的命,三分天注定,七分靠打拼,有梦就会红,爱拼才会赢
  12. 官方太空射击游戏总结
  13. python 获取项目根目录
  14. SEO的关键字分析的浅析
  15. linux下输入ls显示时间格式,【Linux基础】linux下修改ls显示的时间格式
  16. 真正的Java学习从入门到精通
  17. arduino密码锁代码
  18. CSR BC417143BGQ蓝牙模块芯片替换方案
  19. 2018版苹果开发者设置内购(App内购买项目)、税务、银行问题,开通苹果支付
  20. TensorRT量化-FP16和INT8

热门文章

  1. python 保留两位有效数字
  2. BloomFilter 布隆过滤器
  3. potplay录制摄像头视频
  4. 小程序input组件获得焦点时placeholder内容有重影
  5. 互联网创意APP,灵感创意,金点子,all
  6. java之多线程抢火车票
  7. 值得买的android手机,2015上半年最值得购买的五款安卓旗舰机
  8. 传真服务器软件产品的选择
  9. Android 10.0 Launcher3 电话和短信app图标显示未读短信和未接来电的条数
  10. vins中imu融合_小觅智能 | VINS 学习笔记(持续更新中)