目前,大型设计一般推荐使用同步时序电路。同步时序电路基于时钟触发沿设计,对时钟的周期、占空比、延时和抖动提出了更高的要求。 为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。  FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block Select RAM)的时延和抖动都为最小。为了适应复杂设计的需要,Xilinx的FPGA中集成的专用时钟资源与数字延迟锁相环(DLL)的数目不断增加,最新的Virtex II器件最多可以提供16个 全局时钟输入端口 和8个 数字时钟管理模块(DCM )。
       常用的与全局时钟资源相关的Xilinx器件原语包括:IBUFG、IBUFGDS、BUFG、BUFGP、BUFGCE、BUFGMUX、BUFGDLL和DCM等。
        1.  IBUFG  即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUF元,否则在布局布线时会报错。 IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和 SSTL等多种格式的IO标准。
        2.  IBUFGDS   是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多种格式的IO标准。
        3.   BUFG   是全局缓冲,它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。
        4.  BUFGCE  是带有时钟使能端的全局缓冲。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。
5. BUFGMUX 是全局时钟选择缓冲,它有I0 和I1 两个输入,一个控制端S,一个输出端O。当S为低电平时输出时钟为I0,反之为I1。需要指出的是BUFGMUX的应用十分灵活,I0和I1两个输入时钟甚至可以为异步关系。
        6. BUFGP 相当于IBUG加上BUFG。
        7. BUFGDLL 是全局缓冲延迟锁相环,相当于BUFG与DLL的结合。BUFGDLL在早期设计中经常使用,用以完成全局时钟的同步和驱动等功能。随着数字时钟管理单元(DCM)的日益完善,目前BUFGDLL的应用已经逐渐被DCM所取代。 
        8.  DCM  即数字时钟管理单元,主要 完成时钟的同步、移相、分频、倍频和去抖动等 。DCM与全局时钟有着密不可分的联系,为了达到最小的延迟和抖动,几乎所有的DCM应用都要使用全局缓冲资源。DCM可以用Xilinx ISE软件中的Architecture Wizard直接生成。
全局时钟资源的使用方法  
        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的使用也必须遵循上述的原则
IBUFDS、IBUFGDS和OBUFDS都是差分信号缓冲器,用于不同电平接口之间的缓冲和转换。IBUFDS 是差分输入的时候用,OBUFDS是差分输出的时候用,而IBUFGDS则是时钟信号专用的输入缓冲器。


IBUFDS、IBUFGDS和OBUFDS都是差分信号缓冲器,用于不同电平接口之间的缓冲和转换。

IBUFDS 是差分输入的时候用,OBUFDS是差分输出的时候用,而IBUFGDS则是时钟信号专用的输入缓冲器。

下面详细说明:

IBUFDS

Differential Signaling Input Buffer with Selectable I/O Interface

//差分输入时钟缓冲器

IBUFDS是一个输入缓冲器,支持低压差分信号(如LVCMOS、LVDS等)。

在IBUFDS中,一个电平接口用两个独特的电平接口(I和IB)表示。一个可以认为是主信号,另一个可以认为是从信号。主信号和从信号是同一个逻辑信号,但是相位相反。

Inputs

Outputs

I

IB

O

0

0

No Change

0

1

0

1

0

1

1

1

No Change

Verilog Instantiation Template

IBUFDS instance_name (.O (user_O),

.I (user_I),

.IB (user_IB));

IBUFGDS

Dedicated(专用的) Differential Signaling Input Buffer with Selectable I/O Interface

//专用差分输入时钟缓冲器

IBUFGDS是一个连接时钟信号BUFG或DCM的专用的差分信号输入缓冲器。在IBUFGDS中,一个电平接口用两个独立的电平接口(I和IB)表示。一个可以认为是主信号,另一个可以认为是从信号。主信号和从信号是同一个逻辑信号,但是相位相反。

Inputs

Outputs

I

IB

O

0

0

- *

0

1

0

1

0

1

1

1

- *

* The dash (-) means No Change.

Verilog Instantiation Template

IBUFGDS instance_name (.O (user_O),

.I (user_I),

.IB (user_IB));

OBUFDS

Differential Signaling Output Buffer with Selectable I/O Interface

//差分输出时钟缓冲器

OBUFDS是一个输出缓冲器,支持低压差分信号。OBUFDS隔离出了内电路并向芯片上的信号提供驱动电流。它的输出用O和OB两个独立接口表示。一个可以认为是主信号,另一个可以认为是从信号。主信号和从信号是同一个逻辑信号,但是,相位相反。

Inputs

Outputs

I

O

OB

0

0

1

1

1

0

Verilog Instantiation Template

OBUFDS instance_name (.O (user_O),

.OB (user_OB),

.I (user_I));

IBUFDS、IBUFGDS和OBUFDS相关推荐

  1. FPGA之道(68)原语的使用

    文章目录 前言 原语的使用 什么是原语 需要使用原语的情况 时钟相关原语 差分输入.输出原语 接口相关原语 用原语表示IP核的好处 UDP 简介 前言 本文节选自<FPGA之道>. 原语的 ...

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

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

  3. Xilinx原语的使用

    一.什么是原语? 原语,英文名称primitive,是FPGA软件集成开发环境所提供的一系列底层逻辑功能单元.由于是底层逻辑功能单元,所以它们往往跟目标FPGA芯片以及芯片厂商紧密相关,因此不同厂商. ...

  4. Lattice Diamond关于原语的使用

    Lattice Diamond关于原语的使用 前言 一.原语基本概念 (一)简介 (二)常用原语 1.时钟相关原语 2.差分输入/输出原语 3.接口相关原语 二.Lattice原语 (一)原语使用 ( ...

  5. xilinxFPGA使用差分信号及差分信号有关的原语

    FPGA使用差分信号 1.xilinx FPGA差分信号的使用方法 对于xilinx FPGA,区别altera的地方在于在Verilog的代码里,xilinx的LVDS信号需要定义一对差分对信号,通 ...

  6. 【XINLIX 原语】XILINX 原语的使用之 IBUFDS 差分转单端、OBUFDS 单端转差分

    目录 IBUFGDS IBUFDS 介绍 IBUFDS 示意图 例化方式 OBUFDS OBUFDS 介绍 OBUFDS 示意图 例化方式 在 XILINX 中有许多原语,常见的差分转单端 IBUFD ...

  7. FPGA差分转单端,单端转差分 IBUFDS OBUFDS BUFG

    Xilinx,IBUFDS原语 IBUFDS #(.DIFF_TERM("FALSE"), // Differential Termination.IBUF_LOW_PWR(&qu ...

  8. 关于IDDR与ODDR以及IBUFDS和OBUFDS的使用

    IBUFDS:差分转单端 OBUFDS:单端转差分 IDDR:单端转双沿数据 ODDR:双沿数据转单端数据 注意:ODDR与IDDR工作有一个复位时间,大概110-120ns之间 IDDR是上升沿采一 ...

  9. VIVADO的差分转单端IBUFDS的使用

    VIVADO的差分转单端IBUFDS的使用 pp_0604 2020-07-06 11:43:47 1883 收藏 8 分类专栏: 笔记 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA 版 ...

最新文章

  1. 不用工具箱的神经网络matlab程序_MATLAB中的神经网络工具箱(2)函数命令及模型搭建...
  2. 四、MySql七个查询命令中哪些命令执行效率过慢
  3. 自己设计java流程审核_关于工作流引擎取回审批的设计方案与实现过程
  4. Python基础入门:使用openpyxl读写Excel文件
  5. laravel翻看php日志,关于Laravel的日志用法
  6. 尝试做了个Chrome浏览器的扩展程序,显示extensions的页面
  7. Vue 状态管理 Vuex
  8. route 更改网络设置
  9. Spring Cloud学习(一)
  10. KeepAlived+Nginx 模拟nginx单点故障转移,实现高可用
  11. 冲刺第二阶段工作总结01
  12. cache 的设计与实现
  13. 高性能MySQL(呕心沥血整理万字长文)
  14. java合并2个txt文本,Java实现多个文档合并输出到一个文档
  15. testbed笔记:头文件里的函数
  16. 人脸识别(1)---人脸识别长篇研究
  17. 为什么直到YOY小黄仓的出现,我们的消费积分才能最大利用呢?
  18. java工程师怎么找兼职,快来看鸭~
  19. 智能家居,产业跌宕三十年
  20. IO流常用类使用详解

热门文章

  1. Error: Can't find Python executa Error: Can'tble python, you can set the PYTHON env variable.解决办法
  2. python pprint模块详解
  3. 水牛城大学本科的计算机专业,PGA学生系列访谈(三):毕业生访谈之我在水牛城的大学时光...
  4. git clone速度太慢的解决办法
  5. Navicat有什么用?如何安装?【C++培训】
  6. 安卓编译Release版本
  7. 配置路由器用SSH登陆
  8. processing制作动态山水背景
  9. 【干货】Python:load_workbook用法(持续更新)
  10. java架构模式与设计模式(四)--事件风暴