ic基础|时钟篇05:芯片中buffer到底是干嘛的?一文带你了解buffer的作用

大家好,我是数字小熊饼干,一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是已经还准备入行,看过之后都会有有一些收获,如果看完后喜欢的话就请关注我吧~谢谢~

大家好,本期文章我们来聊聊一种在芯片中常见的器件缓冲器buffer,这种器件不仅在我们的时钟树上,还在数据路径上有着大量的应用。接下来就让我们好好了解一下这种常见的器件。

一、buffer的功能

buffer的结构是偶数个反相器的级联或者是类似结构的电路,buffer的一个特点是其输出的信号和输入的信号是相同的,不会改变逻辑值。如下面的真值表所示:

在这里插入图片描述
既然buffer不会改变信号的逻辑值,那么其作用到底是什么呢?事实上buffer的功能主要有以下两点:

  • 提高驱动能力。
  • 优化时序。

这里的驱动能力指的是:前级电路的输出信号可以在规定时间内被后级电路有效响应。而所谓的提高驱动能力,就是指在电路中插入buffer后,后面可以挂更多的负载(扇出)而其输出信号不会失真,如下图所示:

在这里插入图片描述
如果电路的负载过大,将导致其输出电流不够,输出信号上下边沿不够陡峭,即图上的第二种的信号一样。而在插入buffer后,由于buffer的驱动能力比较强,最终输出的信号会是第一种而非第二种。这种信号的边沿陡峭程度可由转换时间(transition time)进行定量描述,信号的转换时间越短,代表着该单元内部电路的驱动能力越强,延时就越短。

二、buffer的应用

由于buffer的种种特性,在芯片中的时钟树以及各种路径上有着非常重要的应用,接下来我们进行具体的说明:

2.1 buffer在时钟树上的应用

在芯片中,时钟源输出的时钟信号需要驱动大量的寄存器,单独依靠时钟源的信号驱动能力明显是不够支撑其如此之大的扇出。

因此,正确的做法是添加大量时钟buffer,由这些buffer一级一级串行级联下去组成时钟树,每一个分结点就化分成一级新的分支,如下图所示:

在这里插入图片描述
在组成了时钟树后,时钟直接驱动buffer,由buffer驱动后面的寄存器,这就相当于通过插入buffer减少了时钟树各个分支的负载数量,因此各个时钟树分支的驱动能力就会比较强,从而使得时钟的的传播延迟和时钟的转换时间变得比较小。

下图展示了一种时钟树的例子,该时钟树分为3节结构,第一节是从时钟的根节点(clock root)后的一长串缓冲器链组成;第二节是时钟网格(global clock mesh),这种时钟网格最显著的特点是使用多个缓冲器进行驱动;第三节是连接各个触发器的局部时钟树。

在这里插入图片描述
由于时钟的根节点到达每个寄存器的时钟端的路径不同,因此到达的时间也会不同,即存在时钟偏移(clock skew)。在我们前面的文章中提到过建立时间和保持时间裕量的计算方式:

	Tsetupslack=Tclk+Tskew-Tco-Tcomb-Tsu>=0Tholdslack=Tco+Tcomb-Tskew-Thd>=0

从上面的公式可以看出:

  • 对于建立时间来说,时钟偏移越大越有利满足建立时间(即时钟到达目标触发器的时间与源触发器之间的时间差越大越好);

  • 对于保持时间来说,时钟偏移越少,越有利于满足保持时间(即时钟到达目标触发器的时间与源触发器之间的时间差越小越好)。

因此,我们可以利用buffer来对时钟偏移加以控制,使其处于一个能够满足建立时间和保持时间的合理值。比如在下图的例子中,由于组合逻辑的延时过大,而导致了建立时间违例,因此我们可以通过增加第二个目标触发器的时钟路径延时,使得时钟偏移变大,从而避免时序违例:

在这里插入图片描述
大家观察上图可以发现,在图中的第二个触发器的时钟端是通过加buffer来增加延迟的,这似乎是与我们之前说的加入buffer可以增加驱动能力以及优化时序相矛盾,实际上,buffer本身便有延时,如果插入buffer前的路径上的驱动能力已经足够强,信号的转换时间也比较小,那么再插入buffer也起不到优化的作用,反而会带来更多的延时,上图中就是利用buffer的这种特性来增大时钟偏移的。

2.2 buffer在数据路径的应用

接下来我们介绍插入buffer在数据路径起到的作用。

在芯片内部,触发器之间通过导线连接,通常来说导线的延迟是和其长度的平方成正比,如果某条路径很长的话,那么导线本身的负载电容就不容忽视,会导致很大的延时。

这种情况下,我们可以等间距插入N个buffer,原本的路径分为N+1段,其中每一段buffer驱动的负载电容较少,在给定相同的电压时,由于电路的负载电容减少,自然对电容的充电速度变得更快了,这就使得信号的上升沿变得更加陡峭;同理,当电容放电时,由于负载电容变少,因此放电的速度也会变快,这也就使得信号的下降沿也变得更加陡峭。

因此由于信号的转换时间变小,路径的延迟也随着变小。所以即使buffer本身也会带来延时,但是插buffer减少的延时大于buffer自身带来的延时,仍然可以实现对时序的优化。

三、总结

以上是buffer功能的简要介绍啦,在下篇文章中,我们将之前提到过的时钟门控、时钟分频、时钟切换、osc和pll等电路组合起来,就可以组成一个基础的时钟和复位产生模块(CRG, clock reset generator)中的时钟部分电路,我们将在下篇文章对其进行介绍,那么我们下次再见~

往期时钟篇文章:
[ic基础|时钟篇:关于时钟切换的二三事(https://mp.weixin.qq.com/s?__biz=Mzk0MTY1MDgxOQ==&mid=2247483928&idx=1&sn=342d3b609557fd94d01adadc2dd6d7f7&chksm=c2ce64f4f5b9ede2e7e0c7e42d936ec49ef6952e3a11e82905794d20012b0f26042ed590a162&token=162837663&lang=zh_CN#rd)

ic基础|时钟篇02:关于时钟分频器的二三事

ic基础|时钟篇03:低功耗技术之——门控时钟clock gating及锁存器latch的避免

ic基础|时钟篇04:原来芯片中的时钟是这样来的?一文带你了解芯片中的时钟源头——osc振荡器和pll锁相环

如果你喜欢这篇文章的话,请关注我的公众号-熊熊的ic车间,里面还有ic设计和ic验证的学习资料和书籍等着你呢~欢迎您的关注!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图片AI高效生成惊艳之作,一键解锁无限创意,轻松打造概念艺术新纪元!

在数字化时代,图片已经成为我们表达创意、传递信息的重要载体。然而,传统的图片生成方式往往耗时耗力,无法满足我们对于高效、创意的需求。幸运的是,现在有了图片AI,它以其高效、智能的特点,为我们带来了全…

微服务-系统架构

微服务: 系统架构的演变 单一应用架构 早期的互联网应用架构,大量应用服务 功能 集中在一个包里,把大量的应用打包为一个jar包,部署在一台服务器,例如tomcat上部署Javaweb项目 缺点:耦合度高,一台服务器…

Point-Nerf 理论笔记和理解

文章目录 什么是point nerf 和Nerf 有什么区别Point Nerf 核心结构有哪些?什么是point-based radiance field? 点云位置以及置信度是怎么来Point pruning 和 Point Growing 什么是point nerf 和Nerf 有什么区别 基本的nerf 是通过过拟合MLP来完成任意视角场景的重…

Linux(六)

Linux(六) 自定义头文件自定义头文件中写什么如何引入头文件条件编译条件编译作用 gcc工作原理Make 工作管理器什么是Make什么是Makefile/makefileMakefile假目标Makefile中的变量自定义变量预定义变量自动变量 Makefile中变量展开方式递归展开方式简单展…

2024攻防演练利器之必修高危漏洞合集

随着网络安全的发展和攻防演练工作的推进,红蓝双方的技术水平皆在实践中得到了很大的提升,但是数字化快速发展也导致了企业的影子资产增多,企业很多老旧系统依旧存在历史漏洞,与此同时,在攻防演练期间,往往…

利用EAS自动生成数据模型和sql脚本

EAS适用于敏捷开发中小系统,这节主要讲解EAS对应的模型和数据库脚本输出应用。 在这个应用程序中,用户可自定义实体模型和枚举模型,只要选择相应的实体或者枚举进行右击添加即可。 解决方案参数设定,在解决方案的设定中可设置项目名称、通用语言,命名空间和输出位置。 连…

C语言系列文章 | 函数 (共 10209 字)

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 目录 函数的概念库函数自…

设计软件有哪些?建模和造型工具篇(1),渲染100邀请码1a12

之前我们介绍的都是渲染软件,但对于设计师来说建模和造型是在渲染之前,所以从现在开始,我们会介绍一批建模和造型工具。 1、ZBrush ZBrush是由Pixologic公司开发的数字雕刻和绘画软件,专为艺术家和设计师而设计。它结合了3D建模…

抖店如何打造出爆品?学好这几招,轻松打爆新品流量

大家好,我是电商花花。 近年来,抖店商家越来越多,而选品,爆品就是我们商家竞争的核心了,谁能选出好的新品,打造出爆品,谁的会赚的多,销量多。 做抖音小店想出单,想赚钱…

转置卷积简明教程

转置卷积层也被(错误地)称为反卷积层。反卷积层反转了标准卷积层的操作,即如果对通过标准卷积层生成的输出进行反卷积,则会返回原始输入。转置卷积层与反卷积层相似,因为两者生成的空间维度相同。转置卷积不是通过值反…

Java+Spring Boot +MySQL + MyBatis Plus一款数字化管理平台源码:云MES系统

JavaSpring Boot MySQL MyBatis Plus一款数字化管理平台源码:云MES系统 MES是为企业提供制造全过程的信息化产品,支持企业智能制造。MES可实现与企业的ERP、PDM等其他信息化系统进行无缝连接,也可与现场生产设备进行连接、数据采集&#xff…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第29课-会员制展厅

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第29课-会员制展厅 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&…

$subcribe的使用

$subcribe的使用 只要是store都有$subscribe函数,是订阅的意思,可以监测到store中数据的变化 使用$subscribe函数可以实现刷新不丢失,将数据保存到浏览器的本地存储中,每次进入页面都使用localStorage的数据填充页面

手把手教学,一站式教你实现服务器(Ubuntu)Anaconda多用户共享

背景:书接上回,一站式安装Ubuntu及配置服务器手把手教学,一站式安装ubuntu及配置服务器-CSDN博客 在安装及配置好服务器后,因为课题组可能涉及多个用户共用一台服务器,为了防止服务器上代码误删和Anaconda环境管理混乱…

⌈ 传知代码 ⌋ 实现沉浸式交互故事体验

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

批量漏洞挖掘思路小结

漏洞挖掘是指对应用程序中未知漏洞的探索,通过综合应用各种技术和工具,尽可能地找出其中的潜在漏洞。一般情况下漏洞挖掘针对单一的应用系统,通过端口扫描、目录扫描、文件扫描等方式对其安全性进行评估,而本文主要针对Nday和1day…

零基础的粉丝有福了:逐键提示盲打更轻松

盲打就是不看键盘去打字,对于零基础的粉丝而言,盲打入门通常都是很难的,今天就给大家放个福利:从今天开始就能盲打,3天之后盲打就入门了。 真的有这么简单吗?是的,跟着我做就可以了。 首先&am…

【MinIO学习】

OSS Docker podman MinIO服务器 MinIO客户端 Bucket Object 时间同步 The difference between the request time and the servers time is too large。 URL

ISCC2024个人挑战赛WP-MISC

(非官方解,以下内容均互联网收集的信息和个人思路,仅供学习参考) where is flag 下载附件,解压出pyc,然后到下面网址反编译 python反编译 - 在线工具 记住c,是密文, Key是 k5fg…