0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

时钟树的使用方法简介

汽车玩家 来源:CSDN 作者:Reborn Lee 2020-03-08 17:37 次阅读

时钟树不仅可以做到高扇出,还可以做到让时钟信号到达各个触发器的时刻尽可能一致,也即保证时钟信号到达时钟域内不同触发器的时间差最小。

这篇博文进一步说时钟树的问题,我们知道了时钟树的这么强大的功能,好处这么多,那么怎么使用时钟树,我什么时候使用到了时钟树呢?

时钟树的使用方法简介

一、什么情况下,时钟应该“上树”?

如果一个时钟信号是为FPGA内部的一些逻辑资源提供“脉搏”的,那么强烈建议该时钟“上树”;

如果时钟信号的时钟域实在太小,例如仅控制若干个触发器,那么也许不利用时钟树,FPGA设计也可能通过时序分析,但是仍然建议使用时钟树;

如果时钟信号的时钟域只包括一个触发器,那么也就不存在所谓的时间差了,此时就完全不需要时钟树;

如果一个时钟信号仅仅是为FPGA外部的硬件电路提供时钟激励的,那么外部无论有多少个存储单元需要使用该时钟,都没必要使用时钟树,因为FPGA内部的时钟树无法延伸到FPGA芯片外部。

二、如何选择时钟树?

上篇博文提到了时钟树的类型,分为全局时钟树、局部时钟树和IO时钟树。那么具体来说,如果需要使用时钟树,该为时钟选择哪一类时钟树呢?

也许自觉会这么告诉自己,时钟域大的,选择全局时钟树;时钟域小的,选择区域时钟树;时钟域特别小,选择IO时钟树。

事实告诉你,自觉是完全错误的。

IO时钟树分布在FPGA的接口资源中,由于它们离IO管脚最近,所以可以协助FPGA完成一些较高速率的串行数据接收,再经过简单地串并转换之后,以比较低的速率将并行数据丢进FPGA芯片的内部,供其他资源使用。一般来说,每个IO BANK内部会有若干个IO时钟树的资源,因此IO时钟树虽然覆盖范围小,但并不是为小规模的时钟域量身定做的,因此FPGA内部的资源也无法使用该时钟树。

再看全局时钟树,由于全局时钟树可以覆盖到整个FPGA芯片,因此全局时钟树的个数也十分有限,因此使用一定要谨慎,不可滥用。但是如果你硬着头皮省下来一堆全局时钟树,结果却闲置在一边,不派上用场,那简直就是浪费时间,白花心思。因此,全局时钟树这样的资源,不可滥用,也不可不用,要充分利用。

因此,在全局时钟树不紧缺的情况下,无论时钟域的大小,统一建议使用全局时钟树,因此这样也能给编译器提供最大的布局布线自由度,从而让时序约束更容易实现。

最后来看区域时钟树。老实说,区域时钟树覆盖范围也是相当的大,最大可能能到FPGA芯片的几分之一,因此如果时钟域不是特别大,到底使用全局时钟树还是区域时钟树,其实没有一个确定的结论。不过如果不是全局时钟树资源不够用,一般不建议使用区域时钟树。当然了,使用区域时钟树可以让时钟域中资源的分布在物理上更紧凑一些,并且有些功能是必须使用区域时钟树和IO时钟树配合来完成的,因此请注意相关功能的说明。

最后总结下,IO时钟树用于IO接口的串并转换,不可用于FPGA内部时钟域。

全局时钟树,可以覆盖到整个FPGA芯片,在全局时钟树不紧缺的情况下,尽量使用全局时钟树,可以给编译器提供最大的布局布线自由度,让时序约束更容易实现。

局部时钟树,特定情况下可能又用途,但全局时钟树不紧缺的情况下,建议使用全局时钟树。

三、时钟信号如何“上树”?

1)使用全局时钟树资源

方法一,通过正确的物理连接。

如果时钟信号是由FPGA芯片外部产生的,那么我们可以不通过编程就可以实现时钟树资源的分配。

因为在FPGA芯片的外围管脚中,有一些专门为全局时钟设计的管脚,这点我们可以通过相应的FPGA芯片的数据手册来确认,如果在制作电路板时,直接将外部时钟信号通过这些管脚接入FPGA内部,那么它将自动占据全局时钟树资源。当然了,这些管脚也可以接入普通的数据信号,编译器会对该管脚引入的信号在FPGA设计内部扮演的角色进行分析,如果发现其并没有作为时钟信号来使用,那么将不会为其分配时钟树资源。

方法二,通过恰当的代码描述。

如果很不巧,外部的时钟信号(外部时钟)没有通过专用的全局时钟管脚连接到FPGA内部,又或者某一个时钟信号是FPGA内部产生(再生时钟)的,例如FPGA内部PLL的输出,那么此时就需要通过编写程序来完成时钟的“上树”工作了。有些时候,即使不使用代码显示指定,编译器也会根据代码的分析结果,来为时钟信号分配全局时钟资源。不过这种靠“天”吃饭的思想不可取,FPGA工程师一定要让FPGA芯片尽可能的处于自己,而不是编译器的掌控之下,因此强烈建议通过自己的代码来指明时钟树的使用。

那么具体要怎么通过HDL代码来实现时钟树资源的分配呢?答案就是使用原语。

由于原语是跟FPGA芯片的生产厂商息息相关的,因此同一个功能的原语在不同的编译器中的名称很可能大相径庭,例如用于全局时钟树分配的最主要的原语,Xilinx公司叫它BUFG,而Altera公司却称其为global。

这里,以Xilinx公司的FPGA产品为例,来介绍代码的描述方法,其他公司的FPGA产品方法类似,只不过需要替换原语的名称罢了。

如果FPGA内部有一个名为innerClk的时钟信号,我们想为它分配一个全局时钟树,Verilog HDL描述为:

wire globalClk;

BUFG onTree(.O(globalClk), .I(innerClk));

按照上述HDL代码描述以后,我们就可以在后续的逻辑功能中放心使用上树后的innerClk——globalClk了。

实际上,直接从外部全局时钟管脚引入的时钟信号,相当于在HDL代码中使用了IBUFG + BUFG原语。

除此之外,如果希望多个时钟信号分享一个时钟树,也可以使用BUGMUX这个原语,相当于MUX +BUFG,例如,希望当前FPGA设计中的某一部分逻辑其时钟是可以在40Hz和60Hz之间切换的。

2)使用区域时钟树、IO时钟树资源

与全局时钟管脚类似,FGPA芯片的外围管脚中也有专门为区域时钟和IO时钟设计的专有管脚,但是,光将时钟信号连接到这些管脚上,还并不一定能完成相应时钟树的使用,还必须要在代码中显式地进行描述才行。

以Xilinx公司为例,使用原语BUFIO,将会为这些专用管脚上的信号分配IO时钟树资源,使用BUFR,将会为这些专用管脚上的信号分配区域时钟树资源。由于区域时钟常配合IO时钟完成串并转换,因此,BUFR还具有神奇的分频功能。最后,由于这两个时钟树的覆盖范围并不是整个FPGA芯片,所以在进行HDL代码编写时,也请注意资源的使用。

四、被“拉下树”的时钟信号

已经上树的时钟信号,若不小心,也可能被拉下树,因此,在HDL代码编写的时候,一定要避免这种情况。

是什么导致时钟信号脱离了时钟树了呢?

通过前面的介绍,我们知道时钟树是由若干级缓冲器再加上一些近似等长的连线组成的,这也就是说,时钟树仅能对时钟信号起到一个基本的传递作用,除此以外,别无它用。

因此,凡是相对时钟树上的时钟信号进行任何逻辑操作,来生成一个新的信号,那么新的信号已经不再位于时钟树上了(注意,原来的时钟信号仍在时钟树上)。如果希望新的信号仍然作为时钟来驱动一些逻辑,那么必须重新调用相应原语来让新的时钟信号获得空闲的时钟树资源,所以,之前介绍的FPGA内部生成的再生时钟,门控时钟,行波时钟,如果需要使用,一定要先使用原语为它们分配好时钟树资源。

下面举例说明,原始时钟信号被拉下树以及在此上树的过程:

// gClkOnTreeA is on the clock tree assign midClk0 = ~gClkOnTreeA; // midClk0 is not on the clock tree assign midClk1 = en & gClkOnTreeA; // midClk1 is not on the clock tree BUFG reOnTree0(.O(gClkOnTreeB),.I(midClk0)); //gClkOnTreeB is on the clock tree BUFG reOnTree1(.O(gClkOnTreeC),.I(midClk1)); //gClkOnTreeC is on the clock tree

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21729

    浏览量

    602988
  • 时钟
    +关注

    关注

    10

    文章

    1733

    浏览量

    131446
收藏 人收藏

    评论

    相关推荐

    示波器高压探头使用方法

    示波器高压探头是一种用于测量高电压信号的仪器,通常用于高压电源、电机、变压器等电气设备的测试。以下是示波器高压探头的详细使用方法
    的头像 发表于 10-03 16:43 422次阅读

    探针头型使用方法有哪些

    探针头型的使用方法多种多样,具体取决于探针头型的类型、被测对象的特性以及测试需求。以下是一些常见探针头型的使用方法概述: 1. 凹头探针 用途 :主要用于测试长导脚、端子及绕线柱等较长或较粗的被测点
    的头像 发表于 09-07 10:57 562次阅读

    DC/DC模拟的基本使用方法和特性确认方法

    本篇介绍了DC/DC模拟的基本使用方法及确认基本特性的方法
    的头像 发表于 08-20 17:08 673次阅读
    DC/DC模拟的基本<b class='flag-5'>使用方法</b>和特性确认<b class='flag-5'>方法</b>

    浅谈锡膏的储存及使用方法

    锡膏(焊锡膏)是电子组装过程中常用的材料,它的储存和使用方法对保证焊接质量和性能至关重要。以下是详细的储存及使用方法
    的头像 发表于 06-27 10:02 866次阅读

    可编程电源使用方法

    可编程电源使用方法 可编程电源使用方法 摘要:本文详细介绍了可编程电源的使用方法,包括其基本概念、主要功能、选择原则、操作步骤、注意事项以及实际应用案例,旨在帮助读者全面了解可编程电源
    的头像 发表于 06-10 15:29 985次阅读

    现场总线的使用方法与注意事项

    的稳定可靠运行,正确的使用方法和注意事项至关重要。本文将详细介绍现场总线的使用方法和注意事项,以供读者参考。
    的头像 发表于 06-06 11:49 774次阅读

    手柄控制代码及使用方法

    手柄控制代码及使用方法
    的头像 发表于 05-15 10:19 1762次阅读

    钳形电流表的使用方法和注意事项

    钳形电流表,作为电气测量和测试的重要工具,其使用方法和注意事项对于保障测量结果的准确性和操作人员的安全至关重要。本文将从钳形电流表的使用方法和注意事项两个方面进行详细阐述,以期为读者提供一个全面而深入的了解。
    的头像 发表于 05-14 16:14 3378次阅读

    时钟的图好像是APB的时钟都是AHB给的,请问这些时钟为多少是哪儿配的呢?是sysinit里吗?

    大家好,我看时钟的图好像是APB的时钟都是AHB给的,请问这些时钟为多少是哪儿配的呢?是sysinit里吗?
    发表于 05-11 07:34

    光纤热缩管正确使用方法

    光纤热缩管是一种用于保护光纤连接点的材料,其主要功能是在光纤连接点处提供保护,防止光纤受到机械伤害或环境因素的影响。在正确使用光纤热缩管之前,首先需要了解其正确的使用方法。本文将详细介绍光纤热缩管
    的头像 发表于 04-07 17:13 1480次阅读

    手机信号屏蔽器:功能、原理及使用方法详解

    深圳特信电子|手机信号屏蔽器:功能、原理及使用方法详解
    的头像 发表于 04-01 09:09 3077次阅读

    555集成芯片的使用方法

    555集成芯片的使用方法主要依赖于其特定的引脚功能和电路设计。
    的头像 发表于 03-25 14:39 1446次阅读

    异步电路中的时钟同步处理方法

    网络 时钟分配网络是实现异步电路的一种常用方法。它将一个主时钟信号分发给整个电路,以确保电路中的所有部件都按照相同的时钟进行操作。时钟分配网
    的头像 发表于 01-16 14:42 1168次阅读

    磁场探头和电场探头的使用方法与技巧

    磁场探头和电场探头的使用方法与技巧  磁场探头和电场探头是用于测量磁场和电场的仪器。它们在科学实验、工程设计和实际应用中都起着重要的作用。本文将详细介绍磁场探头和电场探头的使用方法和技巧。 一、磁场
    的头像 发表于 01-05 14:31 902次阅读

    PCBA焊接电路中电烙铁的使用方法

    PCBA焊接电路中电烙铁的使用方法的相关知识。
    的头像 发表于 12-26 10:27 801次阅读