概述
Xilinx自带有很多IO原语,主要用于对端口时钟信号及其他重要信号的缓冲和驱动,满足综合布线规则,并充分利用FPGA全局时钟树资源。下面将开发过程中用到的IO原语和网上阅读资料整理总结如下。
一、原语说明
1、IBUFG
IBUFG全局输入缓冲,其中I表示为从IO输入,BUF表示缓冲,G表示全局。通过FPGA全局时钟引脚输入的时钟信号必须首先连接到内部IBUFG,这是FPGA内部硬件电路结构布局决定的,并通过全铜的FPGA全局时钟树走线,到达内部各个模块时钟延时和抖动最小。后续可以尝试用普通信号,使用全局时钟引脚和IBUFG的效果。
2、BUFG
BUFG全局缓冲,个人理解与IBUFG的区别是没有I,即不是从IO进来的系统时钟信号,而是FPGA内部logic需要用到的关键时钟信号,例如内部logic之间的接口时钟信号,同样使用BUFG到达内部各个模块时钟延时和抖动最小。
3、BUFGCE
带CE使能端的BUFG,与BUFG相比多了CE,通过CE控制是否输出。在实际工程,可以通过CE端控制何时输出时钟,一来可以降低待机功耗,二来可以等到FPGA加载完成后再使用时钟输出,减小启动电流。
4、BUFGMUX
带MUX选择的BUFG,通过SEL信号,双入单出。
5、IBUFGDS
IBUG的差分形式,其中DS表示差分,必须从FPGA全局时钟差分引脚输入。
6、IBUFDS
与IBUFGDS相比少了G,个人理解可以从普通引脚输入。
7、BUFGDLL(DCM)
数字时钟管理单元,对全局时钟倍频、分频、相移,可以理解为数字锁相环。
二、使用方法
1、IBUFG+BUFG
IBUFG+BUFG是最常用的使用方法,可以用BUFGP,BUFGP=IBUFG+BUFG。
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
差分时钟信号的组合使用方法。
6、IBUFDS+BUFG
差分普通信号的组合使用方法。