Spartan6系列之Spartan6系列之芯片时钟资源深入详解

1.   时钟资源概述

  时钟设施提供了一系列的低电容、低抖动的互联线,这些互联线非常适合于传输高频信号、最大量减小时钟抖动。这些连线资源可以和DCM、PLL等实现连接。

每一种Spartan-6芯片提供16个高速、低抖动的全局时钟资源用于优化性能;这些资源可以背Xilinx工具自动地使用,即使时钟频率相对较低,使用时钟资源来消除潜在的时序冒险仍然是十分重要的,

每一个Spartan-6 FPGA提供40个超高速、低抖动的IO局部时钟资源(32个BUFIO2S和8个BUFPLL)这些IO局部时钟资源是为IO Serializer和de-serializer电路服务的。

Spartan-6 FPGA的时钟资源主要由四种类型的连接器构成:

  • 全局时钟输入引脚(GCLK)
  • 全局时钟多路复用器(BUFG、BUFGMUX)
  • IO时钟缓冲器(BUFIO2、BUFIO2_2CLK、BUFPLL)
  • 水平方向时钟布线缓冲器(BUFH)

有两种类型的时钟网络:

  • 为FPGA内部逻辑资源提供低抖动时钟资源的全局时钟网络
  • 为SelectIIO逻辑资源提供高性能低抖动时钟资源的IO局部时钟网络

  BUFGMUX能够在两个全局时钟资源之间进行复用,也可以当做普通的BUFG时钟缓冲使用,这个时钟缓冲只能够直接驱动全局时钟布线资源,只能够驱动时钟输入;当然,FPGA内部逻辑触发器的时钟输入也可以来自那些普通的布线资源,不过那些普通的布线资源会具有较大的时钟抖动。

  BUFPLL和BUFIO2用来驱动IO局部时钟网络的时钟资源,这一特性限定了它们的使用目的,他们只能用于ISERDES或OSERDES这资源的输入时钟资源;

  BUFIO2能够驱动SDR和DDR的ISERDES2和OSERDES2的时钟,BUFIO2能够把GCLK或GTP_DUAL Tile的输入时钟布线到BUFG、DCM、PLL时钟输入。BUFIO2_2CLK能够用来代替BUFIO2s使用在DDR的ISERDES2和OSERDES2的设计时钟。

  类似地,BUFPLL可以驱动SDR时钟的IO时钟网络,BUFPLL将PLL的CLKOUT0或CLKOUT1和IO局部时钟网络连接起来。

  BUFH通过提供逻辑资源与全局时钟布线水平区域的连接,使得芯片总体的低抖动时钟资源更为丰富。

1.1.  全局时钟结构

图 1?1全局时钟结构

  Spartan-6 FPGA的全局时钟网络由16个位于器件中心位置的BUFGMUX驱动,时钟的输入可以来自FPGA的上、下、左、右的bank,也可以来自PLL或DCM;16个BUFGMUX驱动vertical spine并经vertical spine 往南北方向传播,根据这条线路,时钟水平延伸至HCLK时钟列并经HCLK时钟列提供了访问局部逻辑原语的路径;每一个HCLK列左右两边各有16个水平时钟缓冲BUFH驱动左右逻辑资源。

图 1?2BUFH时钟布线路径

  在Spartan-6 FPGA器件上,有32个GCLK输入,但是只有16个全局时钟缓冲,也就是说每一个全局时钟缓冲只能被2个GCLK中的一个驱动,在两个GCLK(假设为GCLK_A和GCLK_B共享BUFGMX_C)都需要使用的情况下,为了为用户提供更多的灵活性,可以让GCLK_A引脚布线到BUFGMUX_C,而GCLK_B使用BUFIO2间接地布线到另一个BUFGMUX_D。但是经过BUFIO2布线的时钟会出现延时。

表格 1?1 Bank0和Bank1共享全局时钟资源不完全统计情况表

图 1?3Bank0和Bank1的BUFGMUX的连接情况

图 1?4Bank2和Bank3的BUFGMUX的连接情况

  对于使用GTP Transceiver的设计来说,每一个GTP参考时钟是和一个BUFIO2关联在一起的,这可能影响Bank0和Bank2上的全局时钟引脚的使用;对SDR接口来说,GCLK的引脚输入与的冲突如表格 1?2所示,对DDR接口来说,GTP需要两个BUFIO2,因为DDR的需要将时钟反转,DDR接口对GCLK引脚输入的冲突如表格 1?3所示。

表格 1?2SDR接口使用中BUFIO2的输入冲突

表格 1?3DDR接口使用中BUFIO2的输入冲突

1.2.  IO时钟结构

1?5IO时钟结构

  所有的SelectIOn的逻辑资源(输入寄存器、输出寄存器、IDDR2、ODDR2、ISERDES2、OSERDES2)必须被来自BUFIO2的时钟驱动;每个BUFIO2时钟域有4个高速I时钟,由4个专用BUFIO2 缓冲驱动;Spartan6 FPGA有4个BUFIO2时钟域共32BUFIO2.

1?6BUFIO2时钟域

2.   时钟输入

  时钟输入引脚接受外部时钟信号并且直接将其连接至BUFGMUX或者BUFIO2原语。当然,时钟引脚也可以用作普通IO。BUFIO2除了能将时钟输入到IO时钟网络,BUFIO2也提供了专用的接往PLL/DCM或BUFG的时钟路线

2?1经BUFIO2布线的专用时钟输入

  对Spartan-6 FPGA而言,专用的时钟输入引脚位于芯片边沿的中心位置,下图例举了4Bank的Spartan-6 FPGA的时钟引脚布局。

2?2四Bank Spartan-6 FPGA 时钟引脚布局

3.   时钟管理技术

  Spartan-6 FPGA的CMT(时钟管理单元)提供了非常灵活、高性能的时钟;Spartan-6 FPGA的CMT模块位于竖直的全局时钟树的中间列位置,每个CMT包含2个DCM、1个PLL。

3?1Spartan-6 FPGA CMT位置图

3?2CMT结构框图

3.1.  DCM的功能

  DCM:Digital Clock Management,数字时钟管理单元的英文缩写。DCM拥有先进的时钟能力可将时钟直接导入全局时钟分布网络,DCM可以解决各种各样的时钟问题,尤其是在高性能、高频率领域。

  • 消除了时钟抖动,提升了整个系统的性能
  • 调节一个时钟信号的相位
  • 对输入时钟进行倍频或分频,也能够通过动态或静态的提供乘除因子产生新的时钟频率。
  • 使时钟信号更健康,占空比稳定在50%
  • 镜像、转发、重缓冲一个时钟信号,对输入时钟信号进行去抖斜或转换成差分IO电平。
  • 时钟输入抖动过滤
  • 扩频时钟产生
  • 振荡器工作模式

3?3DCM结构框图

3.2.  PLL的功能

  PLL:Phase-Locked Loop,锁相环的英文缩写。Spartan-6 FPGA器件包含6个CMT Tile。PLL的主要目的是作为外部时钟或内部时钟的抖动过滤器或频率合成器。

3?4PLL结构框图

时间: 2024-12-17 22:07:36

Spartan6系列之Spartan6系列之芯片时钟资源深入详解的相关文章

MVC之前的那点事儿系列(7):WebActivator的实现原理详解(转载)

MVC之前的那点事儿系列(7):WebActivator的实现原理详解 文章内容 上篇文章,我们分析如何动态注册HttpModule的实现,本篇我们来分析一下通过上篇代码原理实现的WebActivator类库,WebActivator提供了3种功能,允许我们分别在HttpApplication初始化之前,之后以及ShutDown的时候分别执行指定的代码,示例如下: [assembly: WebActivator.PreApplicationStartMethod(typeof(A.InitCla

C#进阶系列——WebApi 接口参数不再困惑:传参详解

C#进阶系列--WebApi 接口参数不再困惑:传参详解

SQL Server时间粒度系列----第4节季、年时间粒度详解

本文目录列表: 1.SQL Server季时间粒度2.SQL Server年时间粒度 3.总结语 4.参考清单列表 SQL Serve季时间粒度   季时间粒度也即是季度时间粒度.一年每3个月是一个季,一年共4季,1月到3月是第1季.4月到6月是第2个季.依次顺延.季也是日期时间范围的,我们也会引入季基准日期,也就是每个季度的第一天.以下提供季基准日期和整数相互转换的功能的实现,还有获取指定日期时间所在当前年内的季索引,从1开始计数,包括1.2.3.4. 提供季基准日期和整数相互转换的功能函数,

Linux Shell系列教程之(八)Shell printf命令详解

本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell printf命令语法 printf format-string [arguments...] format-string为描述格式规格的字符串,用来描述输出的排列方式,最好为此字符串加上引号.此字

TortoiseGit学习系列之TortoiseGit基本操作拉取项目(图文详解)

前面博客 TortoiseGit学习系列之TortoiseGit基本操作修改提交项目(图文详解) TortoiseGit学习系列之TortoiseGit基本操作将提交到本地的项目推送到在线仓库(图文详解) TortoiseGit基本操作拉取项目 如果本地的项目没有在线仓库的新,则需要执行拉取操作(Pull ...). 在本地项目的空白处点击鼠标右键, 选择 TortoiseGit --> 拉取... 或: Pull.... 弹出拉取(pull)对话框: [如果拉取有BUG,请不要使用 rebas

FineBI学习系列之FineBI与HBase数据连接(图文详解)

不多说,直接上干货! 这是来自FineBI官网提供的帮助文档 http://help.finebi.com/http://help.finebi.com/doc-view-584.html 目录: 1.描述 2.操作 3.注意事项 1.描述 Hbase作为大数据平台的重要组成部分,在数据存储方面起到了至关重要的作用,因此BI连接Hbase也是必不可少的功能之一.FineBI提供的方法是通过phoenix连接hbase,下面我们将详细介绍如何进行连接. 2.操作 2.1 配置信息   驱动 URL

StreamSets学习系列之StreamSets的集群安装(图文详解)

不多说,直接上干货! 若是集群安装 需要在对应节点执行相同的操作. 见 见 StreamSets学习系列之StreamSets的Core Tarball方式安装(图文详解) 欢迎大家,加入我的微信公众号:大数据躺过的坑        人工智能躺过的坑   同时,大家可以关注我的个人博客:    http://www.cnblogs.com/zlslch/   和     http://www.cnblogs.com/lchzls/      http://www.cnblogs.com/sunn

StreamSets学习系列之StreamSets的Create New Pipeline(图文详解)

不多说,直接上干货! 前期博客 StreamSets学习系列之StreamSets的Core Tarball方式安装(图文详解) 欢迎大家,加入我的微信公众号:大数据躺过的坑        人工智能躺过的坑   同时,大家可以关注我的个人博客:    http://www.cnblogs.com/zlslch/   和     http://www.cnblogs.com/lchzls/      http://www.cnblogs.com/sunnyDream/       详情请见:htt

Redis笔记系列(二)——Redis安装部署与维护详解

本文介绍Redis2.8的安装部署和维护方法. Redis在linux上的安装 步骤1: 首先从官网下在redis正式版的压缩包redis-2.8.19.tar.gz http://download.redis.io/releases/redis-2.8.19.tar.gz 步骤2:编译源程序: tar zxvf redis-2.8.19.tar.gz [[email protected] Downloads]$ tar zxvf redis-2.8.19.tar.gz [[email prot