Xilinx全局时钟
前言
Xilinx系列、ISE环境中,设计复杂工程时全局时钟系统的设计显得尤为重要。
一、时钟网络与全局缓冲
在XilinxFPGA中,时钟网络分为两类:全局时钟网络和I/O区域时钟网络。以全铜工艺实现的全局时钟网络,加上专用时钟缓冲与驱动结构,从而可使全局时钟到达芯片内部所有的逻辑可配置单元,且I/O单元以及块RAM的时延和抖动最小,可满足高速同步电路对时钟触发沿的苛刻需求。
在FPGA设计中,FPGA全局时钟路径需要专用的时钟缓冲和驱动,具有最小偏移和最大扇出能力,因此最好的时钟方案是由专用的全局时钟输入引脚驱动的单个主时钟,去钟控设计项目中的每一个触发器。只要可能就应尽量在设计项目中采用全局时钟,因为对于一个设计项目来说,全局时钟是最简单和最可预测的时钟。
在ISE设计全局时钟时,IBUFG、BUFG、BUFGMUX等概念经常会被提及,这些资源可以统称为时钟资源,它们分为四类:全局时钟输入端口、全局时钟复用器、I/O时钟缓冲、水平时钟布线缓冲。下面挑选其中几个常见的资源种类,简单介绍下:
IBUFG:即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUFG,否则在布局布线时会报错。IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和SSTL等多种格式的I/O标准。
IBUFGDS:是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多种格式的IO标准。
BUFG:是全局缓冲,它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。
BUFGCE:是带有时钟使能端的全局缓冲。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。
BUFGMUX:是全局时钟选择缓冲,它有I0和I1两个输入,一个控制端S,一个输出端O。当S为低电平时输出时钟为I0,反之为I1。需要指出的是BUFGMUX的应用十分灵活,I0和I1两个输入时钟甚至可以为异步关系。
BUFGP:相当于IBUG加上BUFG。
以上为常用的时钟资源,对于一般的全局时钟系统设计,有这些资源就足够了。
二、常用全局时钟系统
要组建一个全局时钟系统,首先要从全局时钟管脚输入一个时钟。有了这个时钟,就可以组建各种类型的全局时钟系统了。一般来说,常用的全局时钟系统有两种:IBUFG+BUFG系统、IBUFG+DCM(PLL)+BUFG。
1、 IBUFG+BUFG系统
IBUFG+BUFG方案如下图所示,这也是最基本的全局时钟系统。将时钟管脚输入的时钟作为IBUFG的输入,然后将IBUFG的输出再作为BUFG的输入,则BUFG的输出即为得到的全局时钟。IBUFG+BUFG的方案相当于BUFGP。
2、 IBUFG+DCM(PLL)+BUFG
平时用得最多的还是IBUFG+DCM(PLL)+BUFG方案,如下图所示。将时钟管脚输入的时钟作为IBUFG的输入,然后将IBUFG的输出作为DCM(PLL)的输入,将经DCM(PLL)频率变换后的输出再作为BUFG的输入这种方案使用方法最为灵活,对全局时钟的控制更加有效。通过DCM(PLL)模块不仅能对时钟进行同步、移相、分频、倍频等变换,而且可以使全局时钟的输出达到无抖动延迟(“0”skew)。
三、全局时钟系统使用的问题与注意事项
1、 全局时钟的时钟源必须从全局时钟管脚输入,并且要先经过IBUFG。
2、如果全局时钟涉及到逻辑运算,可以将BUFG换成BUFGCE(与)、BUFGMUX(二选一)等,事实上,BUFG、BUFGCE等资源均是由BUFGMUX生成。
3、从BUFG输出的时钟,是不能直接连接普通I/O管脚输出的,会报错,若要将全局时钟输出,有两种方法:一是直接将BUFG的输入连接普通I/O管脚输出,或者将BUFG的输出经由ODDR2后再连接I/O管脚输出。需要注意的是,将CLOCK_DEDICATED_ROUTE属性设为FALSE虽然会将ERROR降为WARNING,但是这样时钟系统将不再是全局时钟系统,不建议这样做。
4、DCM(PLL)资源中有时钟反馈输入和时钟反馈输出管脚,一般的处理方法是将时钟反馈输出管脚经由BUFG后输入到时钟反馈输入管脚。
四、全局时钟系统使用举例
下面将举出实例,来看一下如何组建一个全局时钟系统。
某FPGA从全局时钟管脚引入频率为26M的晶振源,FPGA内部需要22MHz、22MHz反向、171.6MHz、36MHz,其中22MHz、22MHz反向、171.6MHz为FPGA内部使用,22MHz、36MHz经由普通I/O管脚输出,而且22MHz反向还要与信号t_rn作逻辑与运算,试给出该需求的全局时钟系统解决方案。
在ISE中组建时钟系统有两种方法:一是用IP核生成器配置生成相应IP,再用线连接起来, 二是在文件中直接用语言配置生成各类资源(DCM、PLL、IBUFG、BUFG等),再用线连接。第一种方法较为简单但灵活性差,而第二种方法稍微复杂但灵活性较强,可以随时修改,使用哪种方法取决于个人喜好。
这里用第二种方法来生成上文需求的全局时钟系统,下图为最终效果图。
1、clk26为从全局时钟管脚输入的时钟源,从管脚输入后先经过一个IBUFG。
2、因为22MHz、171.6MHz和36MHz不能由一个PLL产生,故将IBUFG的输出时钟信号输入到两个PLL。
3、PLL0有三个输出:CLKOUT0、CLKOUT1、CLKOUT2,分别为22MHz、171.6MHz和22MHz反向。clk22_out为22MHz时钟的I/O输出信号,故不经BUFG直接输出;clk22为22MHz经过BUFG后的信号,为全局时钟信号;clk171p6为171.6MHz经过BUFG后的信号,为全局时钟信号;clk22_inv为22MHz反向经过BUFGCE(与t_rn作逻辑与运算)后的信号,为全局时钟信号。
4、PLL1有一个输出:CLKOUT0,为36MHz,clk36_out为36MHz的I/O输出信号,故不经BUFG直接输出。
转自:http://blog.csdn.net/lg2lh/article/details/44997937
Xilinx全局时钟的更多相关文章
- Xilinx FPGA全局时钟和全局时钟资源的使用方法
对FPGA的全局时钟了解不多,遂转载一篇文档: http://xilinx.eetop.cn/?action-viewnews-itemid-42 目前,大型设计一般推荐使用同步时序电路.同步时序电路 ...
- xilinx FPGA全局时钟资源的使用
1.什么是xilinx fpga全局时钟资源 时钟对于一个系统的作用不言而喻,就像人体的心脏一样,如果系统时钟的抖动.延迟.偏移过大,会导致系统的工作频率降低,严重时甚至会导致系统的时序错乱,实现不了 ...
- 51.ISE中的DCM全局时钟转为普通IO
在用DCM这个IP核时,它的输入时钟为全局时钟引脚输入,输出有两种情况,第一,可以直接接在全局时钟引脚:第二,可以通过ODDR2原语接在普通IO引脚:说下第二种是怎么用的: DCM DCM_INST ...
- Xilinx原语学习之时钟资源相关原语
一直来,都是使用Vivado中自带的GMIItoRGMII IP核来完成GMII转RGMII的功能:尽管对GMII及RGMII协议都有一定的了解,但从没用代码实现过其功能.由于使用IP时,会涉及到MD ...
- Xilinx FPGA的专用时钟引脚及时钟资源相关
主要参考了https://www.eefocus.com/liu1teng/blog/12-02/237897_4533d.html .Xilinx UG471.UG472以及Xilinx Forum ...
- 时钟管脚设置问题 xilinx ERROR:Place:864 - Incompatible IOB's are locked to the same bank 0
ERROR:Place:1108 - A clock IOB / BUFGMUX clock component pair have been found that are not placed ...
- [Xilinx]Modelsim独立仿真Vivado生成的PLL核
EDA Tools: 1.Vivado 2015.1(64-bit) 2.Modelsim SE-64 10.1c Time: 2016.05.26 ------------------------- ...
- xilinx FPGA普通IO作PLL时钟输入
本帖转自于 :http://www.cnblogs.com/jamesnt/p/3535073.html 在xilinx ZC7020的片子上做的实验; [结论] 普通IO不能直接作PLL的时钟输入, ...
- Xilinx FPGA LVDS应用
最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用.Xilinx FPGA中,主要通过原语实现差分信号的收发:OBUFDS(差分输出BUF),IBUFDS(差分输入BUF). 注意在分 ...
随机推荐
- Android 色彩设计理念
色彩 色彩从当代建筑.路标.人行横道以及运动场馆中获取灵感.由此引发出大胆的颜色表达激活了色彩,与单调乏味的周边环境形成鲜明的对照. 强调大胆的阴影和高光.引出意想不到且充满活力的颜色. 色样 – 0 ...
- POJ--2449--Remmarguts' Date【dijkstra_heap+A*】第K短路
链接:http://poj.org/problem?id=2449 题意:告诉你有n个顶点,m条边.并把这些边的信息告诉你:起点.终点.权值.再告诉你s.t.k.需求出s到t的第k短路,没有则输出-1 ...
- shell中使用if判断时用到的一些参数
shell 编程中使用到得if语句内判断参数 –b 当file存在并且是块文件时返回真 -c 当file存在并且是字符文件时返回真 -d 当pathname存在并且是一个目录时返回真 -e 当path ...
- IIS 之 Web 服务器上的 ASP.NET 进程模型设置
配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置. processModel 节只能在 Machine.config 文件中进行设置, ...
- 高可用性(HA) 4 - network bonding
我们都知道,hadoop namenode是一个臭名昭著的单点故障点(SPOF). 当你找到一篇High Availability的文章, 以为使用heartbeat/pacemaker, coro ...
- Java从零开始学二十一(集合List接口)
一.List接口 List是Collection的子接口,里面可以保存各个重复的内容,此接口的定义如下: public interface List<E> extends Collecti ...
- linux 目录结构(转)
原文:http://www.centoscn.com/CentOS/2014/1222/4347.html linux 目录结构 /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin ...
- JavaScript二(第一个js程序)
一.<script>xxxx</script>标签解析 1.charset :可选,表示通过src属性指定的字符集,由于大多数浏览器忽略它,所以很少有人用它2.defer:可选 ...
- Linux虚拟机下使用USB转串口线——配置minicom、以及screen的使用
转自:http://bbs.ednchina.com/BLOG_ARTICLE_637212.HTM 环境:Windows XP + (VMware Workstation - Linux) 1.确保 ...
- CSS3 calc()函数使用
1.calc是什么? calc是英文单词calculate(计算)的缩写,用于动态计算长度值. calc()函数支持 "+", "-", "*&quo ...