FPGA时钟和原语

这篇具有很好参考价值的文章主要介绍了FPGA时钟和原语。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.原语

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

          FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block Select RAM)的时延和抖动都为最小.

全局时钟资源必须满足的重要原则是:当某个信号从全局时钟管脚输入,不论它是否为时钟信号,都必须使用IBUFG或IBUFGDS;如果对某个信号使用了IBUFG或IBUFGDS硬件原语,则这个信号必定是从全局时钟管脚输入的。如果违反了这条原则,那么在布局布线时会报错。这条规则的使用是由FPGA的内部结构决定的:IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接。

          为了适应复杂设计的需要,Xilinx的FPGA中集成的专用时钟资源与数字延迟锁相环(DLL)的数目不断增加, 与全局时钟资源相关的原语常用的包括:

  BUFG、IBUFG、IBUFGDS、BUFGP、BUFGCE、BUFGMUX、DCM等;

1.BUFG、BUFR、BUFH

理解:BUFG是全局时钟网络了,它可以驱动所有的IO和逻辑,并且可以被Transceiver所驱动。

          BUFR是区域时钟缓冲器,要进入区域时钟网络,必须例化BUFR,BUFR相比BUFG的最大优势是skew和功耗都比较小

          BUFH即为水平时钟缓冲器,它相当于一个功能受限的BUFG,其输出时钟只能通过HROW在左右相邻的时钟区域内工作。

2.IBUFG

理解:从板子上给的输入时钟,必须分配在全局时钟输入管脚上,而且要经过IBUFG单元进行缓冲,IBUFG与IBUF区别:IBUFG可以认为是IBUF后接了一个BUFG。

3.IBUFGDS

理解:IBUFDS差分转单端后进BUFG(整体叫IBUFGDS),再进PLL/DCM。

4.BUFGP

理解:BUFGP=IBUFG+BUFG,最基本的全局时钟资源使用方法,由于IBUFG组合BUFG相当于BUFGP,所以在这种使用方法也称为BUFGP方法

5.BUFGCE

理解:带有时钟使能端(CE)的全局缓冲

6.BUFGMUX

理解:带有时钟选择(控制端口S)的全局缓冲

7.DCM

理解:数字时钟管理单元

使用方法:

1.IBUFG+BUFG=BUFGP

2.IBUFG+ BUFG + DCM 的使用方法
        这种使用方法最灵活,对全局时钟的控制更加有效。通过DCM模块不仅仅能对时钟进行同步、移相、分频和倍频等变换,而且可以使全局时钟的输出达到无抖动延迟。

3.Logic + BUFG

        BUFG不但可以驱动IBUFG的输出,还可以驱动其它普通信号的输出。当某个信号(时钟、使能、快速路径)的扇出非常大,并且要求抖动延迟最小时,可以使用BUFG驱动该信号,使该信号利用全局时钟资源。但需要注意的是,普通IO和普通片内信号从输入到BUFG输出有一个约10ns左右的固有延时,但是BUFG的输出到片内所有单元(IOB、CLB、选择性块RAM)的延时可以忽略不计为“0”ns。

4.Logic + DCM + BUFG的使用方法:

        DCM可以是普通信号的输入

fpga原语,FPGA时钟和原语,fpga开发

//LVDS_25标准的差分输入ADC数据
IBUFDS#(
.DIFF_TERM("TRUE"),
.IOSTANDARD("LVDS_25")
)IBUFDS_ADC(
.O(ADC_D[i]),
.I(ADC_P_D[i]),
.IB(ADC_N_D[i])
);

//差分输入芯片输入100M时钟,作为FPGA的全局时钟
IBUFGDS #(
.DIFF_TERM ("TRUE"),
.IBUF_LOW_PWR ("FALSE")
) u_ibufg_clk_100 (
.I (FPGA_CLK_100M_P),
.IB (FPGA_CLK_100M_N),
.O (clk_100m)
);

//差分输出缓冲器
OBUFDS#(
.IOSTANDARD("DEFAULT")
)OBUFDS_inst(
.O(O),
.OB(OB),
.I(I)
);


  // 低成本项目output buffering
  // BUFG从16降到12的方法

//   BUFG drpclk_bufr_inst
//    (.O   (drpclk),
//     .I   (clkout1));
	
  BUFH drpclk_bufr_inst
   (.O   (drpclk),
    .I   (clkout1));

  BUFG gt_clk_bufg_inst
   (.O (gt_clk),
    .I (clkout0));

  BUFG gt_pcs_clk_bufg_inst
   (.O (gt_pcs_clk),
    .I (clkout2));

  BUFGMUX phy_clk_bufg_inst
   (.O (phy_clk),
    .I0(clkout0),
    .I1(clkout1),
    .S (mode_1x));

  // Note that this bufg is a duplicate of the gt_clk bufg, and is not necessary if BUFG resources are limited.
//  (* DONT_TOUCH = "true" *)  BUFG log_clk_bufg_inst
//    (.O (log_clk),
//     .I (clkout0));
 
  // End output buffering
//______________________________________________________________________________

assign log_clk = gt_clk;

2.时钟

        下图1-1fpga原语,FPGA时钟和原语,fpga开发是7系列fpga时钟架构的高层次视图:

fpga原语,FPGA时钟和原语,fpga开发

        一个时钟区域总是每列包含50个clb、10个36K块RAM(除非5个36K块被PCIE的集成块替代),每列包含20个DSP Slice和12个BUFH。一个时钟区域包含一个CMT (PLL/ MMCM),一个50个IO BANK,一个由四个串行收发器组成的GT Quad,以及在块RAM列中为PCIe的半列。

时钟主要由三个部分组成:全局时钟、局部时钟和I/O时钟。

  1. BUFG即为全局时钟缓冲,Backbone是时钟布线的主干道,BUFG通过它可以到达任意一个时钟区域,而且BUFG通过HROW到达时钟区域内部的每个逻辑单元。
  2. BUFH即为水平时钟缓冲器,它相当于一个功能受限的BUFG,其输出时钟只能通过HROW在左右相邻的时钟区域内工作。
  3. BUFIO即为IO时钟缓冲,其输出时钟只能作用在一个时钟区域的IO寄存器处,无法在FPGA内部逻辑使用。
  4. BUFR即为区域时钟缓冲,其输出只能作用在一个时钟区域。
  5. BUFMR即为多区域时钟缓冲器,其输出作用在本时钟区域,还可以通过CMT Backbone作用在上下相邻两个时钟区域。
  6. MMCM、PLL即时钟管理模块,用来消除时钟的延迟、抖动以及产生各种不同频率的时钟。
  7. CC即为外部时钟输入管脚,其管脚在内部可以连接到BUFG、BUFR、BUFIO、BUFH、MMCM、PLL等,看具体的应用具体连接。一个时钟区域有4对CC管脚,其中2对SRCC,2对MRCC。SRCC作为区域时钟使用时,只能连接本时钟区域的BUFR和BUFIO。而MRCC则还可以通过BUFMR作用在上下相邻的时钟区域
     

        图1-2是一个时钟区域内可用时钟资源的高层次概览,以及它们的基本连接。全局时钟缓冲器可以通过HROW驱动到每个区域,即使再物理空间上不位于那里。水平时钟缓冲器(BUFH)通过HROW驱动到区域中的每个时钟点。BUFG和BUFH在HROW中共享路由通道。I/O缓冲区(BUFIO)和区域时钟缓冲区(BUFR)位于I/O BANK内部。BUFIO只驱动I/O时钟资源,BUFR驱动I/O资源和逻辑资源。BUFMR支持BUFIO和BUFR的多区域链接。具有时钟能力的输入将外部时钟连接到设备上的时钟资源。某些资源可以通过CMT主干道连接到上面和下面的区域。
fpga原语,FPGA时钟和原语,fpga开发

图1-3为设备右侧单个时钟区域的时钟详细图:

fpga原语,FPGA时钟和原语,fpga开发

 图1-4显示了全局BUFG和区域BUFH/CMT/ CC管脚连接性的详细图,以及区域中可用资源的数量(显示为右侧区域)。 

fpga原语,FPGA时钟和原语,fpga开发

         4个时钟输入引脚中的任何一个都可以驱动CMT中的的PLL/MMCM和BUFH。BUFG显示在该区域中,但在物理空间上可以位于时钟主干道中的其他物理位置。BUFG和BUFH共享HROW中的12个路由轨道,可以驱动该区域内的所有时钟点。BUFG也可以驱动BUFH(图1-4中没有显示)。这允许在其他全局时钟分布上单独启用时钟(CE)。一个GT Quad有10条专用路径来驱动CMT和时钟主干道中的时钟缓冲器。位于I/O BANK的BUFR在逻辑、CMT和BUFG中有四个驱动时钟点。CMT可以使用CMT主干道驱动相邻区域的其他CMT,但有一定的局限性。类似地,具有支持时钟的引脚可以在相同的限制下驱动相邻区域的CMT。具有支持时钟的引脚可以驱动BUFG在设备相同的顶部/底部的任何位置。在CMT主干道中有四个通道支持垂直区域之间的连接。来自一个区域的时钟源可以驱动其自身区域内的时钟缓冲区资源,也可以驱动水平相邻区域内的时钟缓冲区资源。CMT、支持时钟引脚和串行收发器可以通过BUFH将时钟驱动到水平相邻区域,也可以连接到设备相同的顶部/底部的BUFG。

  

图1-5更详细地展示了I/O时钟资源和互联性。

fpga原语,FPGA时钟和原语,fpga开发

         每个I/O BANK包含4个BUFIO和4个BUFR。每个时钟缓冲器可以被一个特定的具有支持时钟管脚对的输入时钟驱动,也可以由MMCM的特定输出时钟直接驱动。两个支持时钟的输入管脚对,被称为MRCC,支持多区域时钟方案。一个MRCC管脚对可以驱动特定的BUFMR,而BUFMR又可以驱动相同和相邻区域中的BUFIO和BUFR,从而促进多区域/BANK接口。同样,GT Quad也可以驱动BUFMR。

        尽管所有7系列设备具有相同的基本架构,但在不同的系列和系列内的设备之间存在一些架构差异。每个7系列FPGA在设备的左侧边缘至少有一个完整的I/O列。GT可以是7系列fpga 支持的任意一个串行收发器(GTP、GTX或GTH)。带有GT的设备在设备的右边缘有一个GT和I/O的混合列(某些Artix-7和Kintex-7设备),或者设备的右边缘有一个完整的GT列(某些Virtex-7和Kintex-7设备)。其他Virtex-7器件的左右边缘都有完整的GT列,左右两侧都有完整的I/O列侧面。

3.总结

  1. FPGA由多个BANK组成,每个BANK是一个独立的时钟域。
  2. 每个BANK有一对MRCC和一对SRCC用来外接外部的晶振,MRCC比SRCC多一个驱动BUFMR功能。
  3. BUFG是全局时钟,通过clock backbone时钟主干道到达每一个时钟域,然后通过HROW水平主干道到达每一个点。
  4. BUFR可以驱动所在的时钟区域内的所有时钟,BUFMR还可以驱动上下相邻两个时钟域的时钟。
  5. BUFIO是I/O区域内的时钟缓冲,只能驱动I/O资源,不能驱动内部逻辑。

一个比喻:7系列的时钟资源就像城市内的车辆,而时钟布线资源就像是城市内的干道。有些车比较牛(BUFG),可以通过主干道(时钟主干道)到达每一个区域(时钟区域),然后通过个别几个区域内的次干道(HROW)到达每一个地点;有一些车没那么牛(BUFH),只能通过个别几个区域内的次干道(HROW)到达每一个地点;有些车就更差了(BUFR),只能在自己的小区内开开。文章来源地址https://www.toymoban.com/news/detail-753781.html

到了这里,关于FPGA时钟和原语的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Xilinx FPGA ICAP原语实现多重配置

    1. FPGA可以运行几个固件 众所周知,常见的FPGA通常为SRAM结构,固件程序一般存放在外置的串行Flash中,比如SPI Flash,M25P16或N25Q128等。 FPGA启动时,一般先从SPI起始地址开始加载数据到内部的SRAM,加载完成、校验通过则会直接运行。 那么有没有可能在SPI Flash中存放两个或多个

    2024年02月02日
    浏览(61)
  • 基于高云FPGA开发板的多功能数字时钟

    目录 一、数字时钟作品的功能 二、数字时钟作品的主体设计原理和功能说明 三、数字时钟的各设计模块说明及模块程序代码 1) 时钟分频模块time_div、freq_div 2)按键消抖模块key_db 3)控制模块control 4)时间正常计数模块time_count 5)时间设置模块time_set 6)时间动态扫描位选模块time_d

    2024年01月22日
    浏览(63)
  • 【FPGA/verilog -入门学习1】verlog中的BUFGCE,BUFGMUX原语

    参考:(详解)BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用 - 知乎 FPGA资源介绍——时钟资源(二)_fpga时钟资源-CSDN博客 是 带有时钟使能端的全局缓冲 。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。 对比发现:使用自己产生

    2024年02月21日
    浏览(68)
  • FPGA小脚丫开发板实现数字时钟,具备调时、整点报时、闹钟功能(含verilog代码)

    一、实现功能 1. 能正常完成时钟的时、分、秒走时; 2. 使用 LED 闪烁或者改变颜色等方式实现秒的指示,要求闪烁频率或者颜色切换频率为 1Hz ; 3. 使用两位七段数码管显示时和分,其切换方式为:默认显示“分钟”,按住 K4 键显示“小时”,按下 K3 显示秒针; 4. 关上开关

    2024年02月11日
    浏览(61)
  • FPGA以太网入门(二)——ARP测试实验(基于紫光同创,含原语介绍)

    此篇为专栏《紫光同创FPGA开发笔记》的 第六篇 ,同时也是 FPGA 以太网入门 的 第二篇 ,记录我的学习 FPGA 的一些开发过程和心得感悟,刚接触 FPGA 的朋友们可以先去此博客 《FPGA零基础入门学习路线》来做最基础的扫盲。 本篇内容基于笔者实际开发过程和正点原子资料撰写

    2024年02月20日
    浏览(58)
  • K7系列FPGA进行FLASH读写1——CCLK控制(STARTUPE2原语)

      最近的工作涉及对 FPGA 进行远程更新,也就是通过远程通信接口将 .bin 文件送到 FPGA,然后写入 FLASH,这样当 FPGA 重新上电后就可以执行更新后的程序了。因此第一步工作就是进行 FLASH 的读写控制。   然而如果尝试配置 FLASH 管脚时,会发现 CCLK 管脚是不可配置的,这

    2024年02月05日
    浏览(45)
  • FPGA学习——FPGA实现电子时钟

    Cyclone IV开发板上的数码管一共有6个,我们每次只能选择其中一个显示,怎么解决电子时钟时、分、秒同时显示呢?要实现电子时钟首先要了解什么是余晖效应。   余晖效应一般指视觉暂留。 视觉暂留现象即视觉暂停现象(Persistence of vision,Visual staying phenomenon,duration o

    2024年02月09日
    浏览(74)
  • FPGA时钟资源详解(3)——全局时钟资源

     FPGA时钟系列文章总览: FPGA原理与结构(14)——时钟资源 https://ztzhang.blog.csdn.net/article/details/132307564         全局时钟是 FPGA 中的一种专用互连网络,旨在将时钟信号分配到 FPGA 内各种资源的时钟输入处。这种设计考虑了时钟信号在整个芯片上的传播,确保了低偏斜(

    2024年04月27日
    浏览(45)
  • FPGA时钟资源详解(4)——区域时钟资源

     FPGA时钟系列文章总览: FPGA原理与结构(14)——时钟资源 https://ztzhang.blog.csdn.net/article/details/132307564 目录 一、概述 二、Clock-Capable I/O 三、I/O 时钟缓冲器 —— BUFIO 3.1 I/O 时钟缓冲器 3.2 BUFIO原语 四、区域时钟缓冲器——BUFR  4.1 区域时钟缓冲器 4.2 BUFR原语 五、区域时钟网

    2024年04月26日
    浏览(45)
  • 【FPGA 衍生时钟约束】——时钟分频与倍频

    【FPGA 衍生时钟约束】——时钟分频与倍频 在 FPGA 开发中,时钟约束是必不可少的一部分。而对于一些需要高速运算的设计,时钟分频和倍频则是一种经常使用的技术。在本文中,我们将详细介绍 FPGA 中时钟分频和倍频的实现方法及注意事项。 时钟分频是将时钟信号分裂成更

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包