当前位置: 首页 > news >正文

数字设计小思 - 谈谈非理想时钟的时钟偏差

写在前面

本系列整理数字系统设计的相关知识体系架构,为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中,时钟信号的好坏很大程度上影响了整个系统的稳定性,本文主要介绍了数字设计中的非理想时钟的偏差来源与影响。

(本文长度约三千字,请耐心阅读,本人水平有限,如有纰漏与错误,欢迎留言讨论)

理想时钟

在数字设计中的理想时钟如下图所示:

理想时钟

理想时钟的特点如下:

  • 时钟无重叠: 任意时刻下, Φ 与Φ非的与恒为零;
  • 全轨输出: VDD - V(Φ) = V (Φ非);
  • 时钟无延迟、无偏斜、无抖动

非理想性时钟

在数字设计中的非理想时钟如下图所示,和理想时钟相对立,如果不满足上述的理想时钟的相关特点,可认为其实一个非理想时钟。

非理想性时钟

对上图进行分析,假设CLK1、CLK2是同一个时钟树下的不同时钟,此时,两个时钟边沿的时间差就为时钟偏斜,同时,对于某一个时钟,在时钟变化边沿时,会有一定的随机性,所以这里随机的时钟周期变化叫做时钟抖动。

假设CLK1是CLK2的前级时钟,所以上图中两个时钟的边沿的时间差即为时钟延迟。

在上图中其实不能很准确体现出时钟延迟和时钟偏斜的概念区别,贴出另外一个图以供参考:

在下图中很容易理解时钟延迟和时钟偏斜的概念:

  • 时钟延迟(clock latency)是指从时钟源到终点所花费的总时间。

  • 时钟偏斜(clock skew)是指到达不同时钟树终点的时间差。

时钟偏斜主要来自时钟在空间上的不期望变化,时钟延迟和时钟抖动主要来自时钟在时间上的不期望变化。

时钟延迟(clock latency)

时钟延迟(clock latency)是指从时钟源到终点所花费的总时间,主要针对的是一个时钟,从时钟源端输出到所驱动的器件的时钟输入端的时间延迟。

时钟偏斜(clock skew)

时钟偏斜(clock latency)是一对物理时钟的标称时间差与实际时间差之间的区别。理想情况下,时钟应同时到达系统中所有的钟控元件(锁存器、触发器、存储器和动态门等),这样系统才有一个共同的参考时间。实际中,时钟到达各点的时间稍微有些差别,这个差别就叫时钟偏斜

两个不同时钟的时钟延迟,就是时钟偏斜。

时钟偏斜发生在两个时钟信号之间,一般不会引起电路实际时钟周期的变化,只会导致时钟相位的偏移;时钟抖动可以发生在一个时钟信号自身,会引起时钟周期的变化

时钟偏斜与时钟抖动统称为时钟偏差,二者之和也叫时钟不确定性(uncertainty)。边沿之间的时钟抖动有时也被归于与时间相关的时钟偏斜。

时钟抖动(clock jitter)

时钟抖动(clock jitter) 是指芯片的某一个给定点上时钟边沿发生暂时的随机变化,会导致时钟周期的缩短或加长。

时钟抖动

边界间抖动(edge-to-edge) :时钟边沿相对与理想时钟边沿的最大变化值,实际上是随时间变化的时钟偏斜。

 边界间抖动

长周期抖动(k-cycle):数个周期后边沿之间的最大变化值,主要影响芯片间的时序同步,也叫绝对抖动。

长周期抖动

周期间抖动(cycle-to-cycle) :相邻时钟周期间的时变偏离,主要影响芯片内时序同步,也叫相对抖动。

周期间抖动

随机抖动(random jitter):由器件和导线的固有噪声(如热噪声) 所致,为高斯分布,用均方根值(RMS)表征,无法预估。

随机绝对抖动的高斯分布

确定性抖动 (deterministic jitter): 确定性抖动由非理想传输效应、串扰、电源浪涌等所致,为非高斯分布,用峰峰值表征,可以预估。

在逻辑综合前,常采用理想时钟(逻辑时钟)+预设偏差的方式来模拟真实时钟;在物理设计时,完成实际时钟(物理时钟)的设计,其偏差必须满足系统要求。

  • 逻辑时钟(logical clock) :没有时钟偏斜的理想时钟,逻辑设计者在用硬件描述语言描述系统行为时使用。
  • 物理时钟(physical clock) :带有时钟偏斜的实际时钟,为了使系统达到预期行为,设计者不得不在时钟偏差、功耗、金属化资源利用率和设计代价之间寻求均衡。
  • 全局时钟(global clock) :为整个系统提供基准的单一时钟。

布线对时序的影响

同一个时钟下,驱动不同的触发器,都需要在实际设计时候都需要进行布线,所以不同的触发器之间布线长短也会有一定差异。

布线方向的影响:正偏差

时钟布线方向与数据通过流水线方向一致会使得时钟正偏差,也即,tskew > 0 。

好处:可采用更短的时钟周期从而得到更高的时钟频率,有利于提高数据通过率。

坏处:需采用更长的保持时间,以免出现冒险竞争。

布线方向的影响:负偏差

时钟布线方向与数据通过流水线方向相反会使得时钟负偏差,也即,tskew < 0 。

好处:冒险竞争不易发生,提高了电路的健壮性。

坏处:加长了最小时钟周期从而降低了时钟频率,不利于提高数据通过率。

布线方向的影响:双向电路

时钟布线方向与数据通过流水线方向可能相同也可能相反,从而使正负偏差都存在。

一个较为理想的设计目标是使正、负偏差都很小,零偏差最好。

时钟偏差的来源

时钟偏差的来源大致如下图所示:

时钟偏差分析

结合上图中的引起时钟偏差来源,大致可对时钟偏差进行分类,系统偏差、随机(random)偏差、漂移(drift)偏差、抖动(jitter)偏差,不同类型的偏差的原因如下:

  • 系统(systematic)偏差:时钟产生器、时钟门控器、电容负载、互连线的偏差,可预估并通过设计来纠正。

  • 随机(random)偏差:工艺离散引起元器件和互连线参数的随机变化,无法预估,但可以测试,并用可校准延时元件来补偿。

  • 漂移(drift)偏差:与时间有关的环境因素(如温度随时间变化、温度的空间梯度变化)变化所致,也可补偿,但需实时。

  • 抖动(jitter)偏差:高频环境变化(如电源浪涌、串扰)导致的电路延时随时间和空间的变化,最难以防范,因补偿电路来不及对它进行响应。

下面针对其中几个原因进行举例分析。

时钟线长度不一引入偏差

由于时钟在驱动不同单元时,不同单元布局分布在不同区域,所以使得时钟扇出的信号进行实际布线的长度长短不一,从而引起了时钟偏差,如下图所示,La和Lb长度不同,所以时钟对应到单元A和单元B的时钟延迟不同,使两个单元的时钟存在偏斜。

电源变化引入偏差

Itanium 2 处理器芯片电源电压的空间分布:1.2V标称电源电压下的最大变化为±100mV,由此导致的延时变化为13%/100mV。

Itanium 2电源电压的空间分布

温度变化引入偏差

对Itanium 2的仿真结果表明,温 度在芯片上的非 均匀分布达到 20℃时,会导致 1.5%的延时变化。

工艺变化引入偏差

工艺上变化也会引入时钟的偏差,如沟道长度、阈值电压和片上误差。

沟道长度: Itanium 2的标称值为180nm,工艺离散导致的偏差可能高达±12.5nm,这会导致±10%的延时变化。

阈值电压:0.18um工艺下,小nMOS管(W<12.5um)、小pMOS管、 大nMOS管、大pMOS管的标准偏差分别为16.8、14.6、7.9、3.5mV, 这会导致一个标准偏差为2%的延时分布。

片上误差 (on-chip variation, OCV)空间分布,相同的缓冲器单元因所处芯片位置 不同而产生的延迟误差。

门控器引入偏差

反相器链的延迟差以及C1与C2的差会导致时钟偏斜|t2 -t1 | 。采用逻辑努力技术合理设计反相器链的级数及门间面积比,可减少乃至消除此偏差。

下图的D锁存器的时钟偏斜来源于反相器的延迟以及C1与C2的差。通过调整两个NOR2门的面积 比,可对时钟偏斜进行补偿。

负载变化引入偏差

负载变化会引入时钟偏差,栅电容与所加电压有关,时钟负载与锁存器/寄存器的当前状态及下一个状态有关。如下图所示,不同电平变化会影响时钟负载的微小变化。

总结

  1. 时钟延迟(clock latency) 是指从时钟源到终点所花费的总时间。时钟偏斜(clock skew) 是指到达不同时钟树终点的时间差。时钟抖动(clock jitter) 是指芯片的某一个给定点上时钟边沿发生暂时的随机变化,会导致时钟周期的缩短或加长。
  2. 时钟偏斜 主要来自时钟在空间上的不期望变化,时钟延迟和时钟抖动 主要来自时钟在时间上的不期望变化。
  3. 时钟偏斜发生在两个时钟信号之间,一般不会引起电路实际时钟周期的变化,只会导致时钟相位的偏移;时钟抖动可以发生在一个时钟信号自身,会引起时钟周期的变化
  4. 时钟偏斜与时钟抖动统称为时钟偏差,二者之和也叫时钟不确定性(uncertainty)。边沿之间的时钟抖动有时也被归于与时间相关的时钟偏斜。
  5. 布线方向会对时序造成正负偏差的影响,一个较为理想的设计目标是使正、负偏差都很小,零偏差最好。
  6. 时钟偏差分为,系统偏差、随机(random)偏差、漂移(drift)偏差、抖动(jitter)偏差,不同偏差的原因不同,可通过合理的设计将相应的影响规避或影响降至最低。

相关文章:

数字设计小思 - 谈谈非理想时钟的时钟偏差

写在前面 本系列整理数字系统设计的相关知识体系架构&#xff0c;为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中&#xff0c;时钟信号的好坏很大程度上影响了整个系统的稳定性&#xff0c;本文主要介绍了数字设计中的非理想时钟的偏差来源与影响。 &#xff08;本文长…...

智慧厕所引导系统的应用

智慧公厕引导系统是一种基于智能化技术的公厕管理系统&#xff0c;可以为如厕者提供更加便捷、舒适、安全的如厕环境和服务&#xff0c;同时也可以引导如厕者文明如厕&#xff0c;营造文明公厕的氛围。智慧公厕引导系统可以通过智能引导屏、手机小程序等方式&#xff0c;为如厕…...

眼球追踪、HDR、VST,从代码挖掘Valve下一代VR头显

擅长爆料、挖掘线索的Brad Lynch&#xff0c;此前发布了Quest Pro等设备的线索文章引发关注。​近期&#xff0c;又公布一系列与“Valve Deckard”VR头显相关消息&#xff0c;比如支持眼球追踪、HDR、VST透视、Wi-Fi网络等等。在SteamVR 1.26.1测试版更新、Steam用户端、Gamesc…...

【MYSQL】聚合函数和单表/多表查询练习、子查询、内外连接

目录 1.聚合函数 1.1.group by子句 1.2.having语句 2.单表查询 2.2单表查询 3.多表查询 3.2.子查询 5.内链接 6.外连接 1.聚合函数 函数说明count返回查询到的数据的数量sum返回查询到的数据的总和avg返回查询到的数据的平均值max返回查询到的数据的最大值min返回查询…...

分布式数据库集成解决方案

分布式数据库集成解决方案 分析访问部署扩展.1 以界面方式创建数据库&#xff08;采用DBCA&#xff09; # 背景 由于公司业务的发展&#xff0c;要求在其它三个城市设立货仓&#xff0c;处理发货业务。公司本部运行着一套用Sybase数据库的MIS系统可以实现发货&#xff0c;该系统…...

如何配置静态路由?这个实例详解交换机的静态路由配置

一、什么是静态路由 静态路由是一种路由的方式&#xff0c;它需要通过手动配置。静态路由与动态路由不同&#xff0c;静态路由是固定的&#xff0c;不会改变。一般来说&#xff0c;静态路由是由网络管理员逐项加入路由表&#xff0c;简单来说&#xff0c;就是需要手动添加的。…...

OpenCV教程——图像操作。读写像素值,与/或/非/异或操作,ROI

1.读取像素值 我们可以通过mat.ptr<uchar>()获取图像某一行像素数组的指针。因此如果想要读取点(x50&#xff0c;y0)&#xff08;⚠️即(row0,col50)&#xff09;的像素值&#xff0c;可以这样做&#xff1a;mat.ptr<uchar>(0)[50]。 在本节将介绍另外几种直接读…...

Winforms不可见组件开发

Winforms不可见组件开发 首先介绍基本知识,有很多的朋友搞不清楚Component与Control之间的区别,比较简单形象的区别有下面两点: 1、Component在运行时不能呈现UI,而Control可以在运行时呈现UI。 2、Component是贴在容器Container上的,而Control则是贴…...

静态链接库与动态链接库

静态链接库与动态链接库 一、从源程序到可执行文件二、编译、链接和装入三、静态链接库与动态链接库四、静态链接库与动态链接库的制作与使用1.静态库的制作及使用2.动态库的制作及使用 一、从源程序到可执行文件 由于计算机无法直接理解和执行高级语言&#xff08;C、C、Java…...

ffmpeg 抓取一帧数据

FFmpeg功能比较强大&#xff0c;这里记录一条从摄像机抓拍的一条命令&#xff1a; ffmpeg.exe -i rtsp://admin:hisense2021192.168.1.64:554/live0.264 -r 1 -ss 00:00:00 -t 00:00:01 -f image2 image.jpg ; ---执行成功。 这是一条网络摄像机的抓图命令&#xff0c;其实就…...

学好数据结构的秘诀

学好数据结构的秘诀 作为计算机专业的一名“老兵”&#xff0c;笔者从事数据结构和算法的研究已经近20余年了&#xff0c;在学习的过程中&#xff0c;也会遇到一些问题&#xff0c;但在解决问题时&#xff0c;积累了一些经验&#xff0c;为了让读者在学习数据结构的过程中少走…...

IT知识百科:什么是下一代防火墙和IPS?

引言 随着网络攻击的日益增多&#xff0c;防火墙和入侵防御系统&#xff08;Intrusion Prevention System, IPS&#xff09;已成为企业网络安全的必备设备。然而&#xff0c;传统的防火墙和IPS已经无法满足复杂多变的网络安全威胁&#xff0c;因此&#xff0c;下一代防火墙和I…...

常量指针和指针常量, top-level const和low-level const

区分常量指针和指针常量&#xff0c;并且认识什么是top-level const和low-level const。 1.判别&#xff1a; 拿到一个指针&#xff08;例如const int* a),就从左往右读&#xff0c;只看const和*。const读作常量&#xff0c;*读作指针,int类型这些不用管。 2.指针常量 int a…...

【iOS】-- GET和POST(NSURLSession)

文章目录 NSURLSessionGET和POST区别 GET方法GET请求步骤 POSTPOST请求步骤 NSURLSessionDataDelegate代理方法AFNetWorking添加头文件GETPOST第一种第二种 NSURLSession 使用NSURLSession&#xff0c;一般有两步操作&#xff1a;通过NSURLSession的实例创建task&#xff1b;执…...

@RequestBody,@RequestParam,@RequestPart应用场景和区别

ReqeustBody 使用此注解接收参数时&#xff0c;适用于请求体格式为 application/json&#xff0c;只能用对象接收 RequestParam 支持application/json&#xff0c;也同样支持multipart/form-data请求 RequestPart RequestPart这个注解用在multipart/form-data表单提交请求的方法…...

libevent高并发网络编程 - 02_libevent缓冲IO之bufferevent

文章目录 1. 为什么需要缓冲区&#xff1f;2. 水位3. bufferevent常用API3.1 evconnlistener_new_bind()3.2 evconnlistener_free()3.3 bufferevent_socket_new()3.4 bufferevent_enable()3.5 bufferevent_set_timeouts()3.6 bufferevent_setcb()3.7 bufferevent_setwatermark(…...

院内导航移动导诊服务体系,院内导航怎么实现?

院内导航怎么实现&#xff1f;经过多年发展&#xff0c;医院规模愈加庞大&#xff0c;尤其是综合性医院&#xff0c;院区面积较大&#xff0c;门诊、医技、住院等大楼及楼区内部设计复杂&#xff0c;科室、诊室数量众多&#xff0c;对于新患者犹如进入了迷宫&#xff0c;客观环…...

MCTP协议和NCSI

MCTP&#xff08;Management Component Transport Protocol&#xff09;是一种管理组件传输协议&#xff0c;用于在计算机系统中管理各种组件&#xff0c;例如固件、BIOS、操作系统等。MCTP 协议定义了一种传输格式&#xff0c;以便在各种总线上进行通信&#xff0c;例如 PCIe、…...

Jmeter接口测试流程详解

1、jmeter简介 Jmeter是由Apache公司开发的java开源项目&#xff0c;所以想要使用它必须基于java环境才可以&#xff1b; Jmeter采用多线程&#xff0c;允许通过多个线程并发取样或通过独立的线程对不同的功能同时取样。 2、jmeter安装 首先需要安装jdk&#xff08;最好是最…...

怎样使用Web自动化测试减少手动劳动?以百度网站为例

从入门到精通&#xff01;企业级接口自动化测试实战&#xff0c;详细教学&#xff01;&#xff08;自学必备视频&#xff09; 目录 摘要 步骤1&#xff1a;安装和配置Selenium 步骤2&#xff1a;启动浏览器并访问百度网站 步骤3&#xff1a;关闭浏览器 总结 摘要 本指南将…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

《Offer来了:Java面试核心知识点精讲》大纲

文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...

41道Django高频题整理(附答案背诵版)

解释一下 Django 和 Tornado 的关系&#xff1f; Django和Tornado都是Python的web框架&#xff0c;但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循MVC设计&#xff0c;并强调代码复用。Django有…...

JavaScript 标签加载

目录 JavaScript 标签加载script 标签的 async 和 defer 属性&#xff0c;分别代表什么&#xff0c;有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...