数字设计小思 - 谈谈时钟:数字系统的心脏

news2025/1/21 7:23:38

前言

本系列整理数字系统设计的相关知识体系架构,为了方便后续自己查阅与求职准备。时钟作为数字系统中的“心脏”,其设计的质量好坏直接关乎整个系统的稳定性,本文主要介绍了数字设计中的常见的时钟产生电路和时钟类型,并进行相关分析简介。

时钟产生电路

环形振荡器

奇数个反相器首尾相连即构成环形振荡器(简称 “环振” ),每个反相器两端出现周期性振荡信号。

环形振荡器

假定每个反相器都相同,所产生的时 钟周期T或频率f取决于反相器链的级数N和反相器的传播延时tp
T = 1 f = 2   ×   N × t p T = \frac {1}{f} = 2\ × \ N × t_p T=f1=2 × N×tp
可通过改变反相器的级数以及每个反相器的面积来改变输出的时钟频率。

环形振荡器的优缺点如下:

  • 优点: 电路简单,无需外接元器件,完全片上集成。

  • 缺点: 频率精度差,随工艺、电源电压离散的变化大;频率稳定性差,随时间、 温度的变化大。

针对该时钟的特点,因此该时钟适用于对精度和稳定度要求都不高的片上时钟产生器。

晶体振荡器

晶体震荡电路主要构成如下,主要由晶体谐振器产生震荡,电容进行滤除振荡产生的谐波,放大器将筛选出的频率进行维持并进行放大,从而产生稳定的时钟信号。晶体振荡器电路结构

石英晶体两端加上电压后,就会产生振荡电流(机械能 ↔ 电能),振荡频率由晶体的尺寸与形状决定(晶体越薄越小,频率越高)。

晶体振荡器的优缺点如下:

  • 优点: 晶体振荡器频率稳定性高,可达10 ^ -6 (ppm), 而环形振荡器只能达到 10 ^ -2(ppm)。
  • 缺点: 晶体振荡器输出频率范围一般不超过100MHz,难以满足现代高速数字IC的更高时钟频率要求;而且采用非硅工艺的石英谐振器,无法片内集成;输出频率难以调节,只能产生单一频率。

PLL锁相环电路

锁相环 (PLL) 是一种反馈电路,且为模拟电路,性能受工艺、电源噪声、温度等的 影响显著,设计难度较大。

PLL电路的工作原理是将外部信号的相位与压控晶体振荡器 (VCXO) 产生的时钟信号的相位进行比较。然后,电路调整振荡器时钟信号的相位以匹配参考信号的相位。因此,原始参考信号和新信号彼此是精确同相的。

PLL锁相环电路

一个锁相环PLL电路通常由以下模块组成:

  1. 鉴相鉴频器PFD(Phase Frequency Detector): 将分频后的反馈时钟与参考时钟的相位进行比较,若反馈时钟滞后/领先参考时钟,则发生一个Up/Down信号。该信号的大小正比于所检测到的相位差。
  2. 电荷泵: 电荷泵将Up/Down信号转换为一个较大/较小的模拟控制电压Vcont,以便加速/减慢VCO, 从而消除反馈时钟与参考时钟的相位差。
  3. 低通滤波器(环路滤波器)LPF(Low-Pass Filter、Loop Filter): 用于滤除Vcont中的高频成分并平滑其响应,减少本地时钟的抖动。
  4. 压控振荡器VCXO(Voltage Controlled Oscillator): 压控振荡器产生系统时钟信号,信号的频率受输入电压Vcont的控制。利用变容二极管(偏置电压的变化会改变耗尽层的厚度,从而影响电容大小)与电感构成的LC谐振电路构成,提高变容二极管的逆向偏压,二极管内耗尽层变大,电容变小,LC电路的谐振频率提高,反之,降低逆向偏压时,二极管内电容变大,频率降低。

DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。DLL即Delay Lock Loop,主要是用于产生一个精准的时间延迟,且这个delay不随外界条件如温度,电压的变化而改变。PLL利用压控振荡器调整频率来改变相位,DLL利用压控延迟线调整延时来改变相位。

DLL调整相位的方法是用压控延迟线(VCDL,Votage-Controlled Delay Line)而非 VCO,通过改变延时而非频率。

PLL/DLL电路的优缺点如下:

  • 优点: 稳定性好,无需积分运算,极点少;锁定速度快,PLL需要先锁定频率再锁定相位,DLL直接锁定相位;抗抖动与噪声性能好,无环振VCO 那样的反馈路径,对工艺与环境波动不敏感;可直接产生多相时钟。
  • 缺点: 无法改变输出频率,不能倍频,不 能产生多个时钟频率;调节范围较大时,可能产生错误锁定。

时钟类型

全局时钟

全局时钟(Global Clock)。一般的时钟都指的是全局时钟,全局时钟在芯片中的体现形式是时钟树。

时钟树

它是由片上的时钟管脚引入,经过锁相和放大之后进入时钟树,输出给寄存器的稳定、可靠的时钟信号。这种时钟的时延通常被设计得最小,相对抖动也最小。全局时钟

内部时钟

对于内部时钟最早的接触应该就是使用计数器输出的计数值的相关逻辑做分频时钟。但如果设计不当,该部分会导致设计功能和时序问题。组合逻辑电路的常见的引起设计错误的问题:毛刺和延时,同时也是组合逻辑搭建的时钟所面对的问题。往简单了说,组合逻辑的毛刺会引起功能的异常,降低系统的稳定;延时会引起在时钟进行时序分析的相关问题,下面就这两方面进行说明。

组合逻辑搭建的时钟产生器会引入毛刺,使功能出现问题,此外由组合逻辑所导致的延迟也会导致时序方面的问题。在同步设计中,数据输入端的毛刺不会引起任何问题,因为数据是在时钟边沿处捕获的,所以可以将毛刺自动滤掉。然而,如果毛刺或尖峰脉冲出现在时钟输入端(或者寄存器的异步输入端)就会产生明显的影响。

下图通过逻辑设计产生了时钟,时钟产生部分包含一些组合逻辑,而计数器的寄存器是对边沿敏感的,这就导致下图的设计毛刺会明显影响到计数器的值。

逻辑设计时钟产生

在下面这个例子中可以看到,由于时钟沿处的毛刺,计数器在所示的时钟周期上递增了两次。由于时钟毛刺的作用,计数器增加了额外的计数值,这样就可能导致功能出现问题。

毛刺导致逻辑错误

窄毛刺会违背寄存器的最小脉冲宽度要求。在毛刺到达时钟输入端时,如果寄存器的数据输入变化,会违背建立和保持时间。即使设计没有违背时序要求,寄存器也可能输出意料之外的值,使整个设计功能出现风险。

解决毛刺引发的设计功能问题,最简单的办法就是使用寄存器在时钟产生逻辑后寄存输出,这样无论前级的时钟产生部分的代码是否存在毛刺,都使用触发器做了寄存,降低了毛刺引起功能错误的风险。

解决方法

分析完毛刺的影响,下面分析下组合逻辑构建的时钟引入的延迟问题。

用来产生内部时钟的组合逻辑也会增加时钟线上的延迟。在某些情况下,时钟线上的逻辑延迟会导致时钟偏移比两个寄存器之间的数据路径延迟更大。如果时钟偏移大于数据延迟,就会违背寄存器的时序要求,设计的功能也不会正确。

因此,就需要设计时钟时尽量减少时钟偏斜,一种减少时钟偏移的方法是将产生的时钟放到SoC中高扇出且低偏移值的时钟树上。使用低偏移值时钟树有助于减少信号整体的时钟偏移。

分频时钟

许多设计需要来自于主时钟的分频时钟。在设计中要保证大多数时钟来自于PLL。使用PLL能避免由异步时钟分频逻辑引起的许多问题。在对主时钟进行分频时,应该始终使用同步计数器或状态机。

此外,设计应该保证总是由寄存器直接产生分频时钟信号。不要对计数器或状态机的输出进行解码,然后产生时钟信号;这种实现方式常会导致毛刺和尖峰脉冲。可参考内部时钟的举例。

门控时钟

门控时钟的时钟线上的门控单元会导致时钟偏移,并会引入尖峰脉冲作用于触发器。但在涉及到低功耗设计时(通常ASIC中),门控时钟还是比较常用的。

门控时钟

行波时钟

行波计数器:将触发器前级输入引脚连接至下个寄存器的输入引脚,依次级联。由于第一个触发器时钟到Q的延迟而使第二个触发器的时钟输入产生偏移,而且不能在每个时钟边沿都激活。此时,延时逐渐累积会在引入时序分析和综合麻烦,因此需要尽量避免使用这种结构,

行波计数器

积累延时

尽管使用行波计数器(或者行波时钟)存在各种问题,但是在功耗较高的系统中很适合使用这种计数器,因为这样能大量降低由逻辑或SoC所引起的峰值功耗。

多路时钟

时钟多路器用于使同一个逻辑功能具有不同的时钟。某些类型的多路逻辑选择如下图所示的时钟源。

多路逻辑选择时钟源

例如,需要处理多个频率标准的通信应用常常使用多个时钟。虽然在时钟信号上引入逻辑上的问题,是在不同的应用中对多路时钟的要求差别很大。

在能满足下面的标准,时钟多路操作就是可接受的:

  • 在初始化配置后,时钟多路逻辑就不再改变。
  • 在测试时,设计会绕过功能时钟多路逻辑而选择普通时钟。
  • 在时钟切换时,寄存器始终处于复位状态。
  • 在时钟切换时产生的短暂错误响应没有负面影响。

如果设计中时钟切换很频繁,并且不在复位时切换,设计也不能容忍芯片中出现短暂的错误响应,就必须使用同步设计以确保寄存器没有违背时序,时钟信号上不出现毛刺同时没有竞争条件或其他麻烦。

为了实现时钟切换,在xilinx的原语中,存在CLK选择的结构以供设计者进行选择设计,按下面的原语示例,设计时需要控制信号S满足建立时间和保持时间,可实现时钟的无毛刺切换。

   BUFGMUX #(
      .CLK_SEL_TYPE("SYNC")  // ASYNC, SYNC
   )
   BUFGMUX_inst (
      .O(O),   // 1-bit output: Clock output
      .I0(I0), // 1-bit input: Clock input (S=0)
      .I1(I1), // 1-bit input: Clock input (S=1)
      .S(S)    // 1-bit input: Clock select
   );

双边沿或混合边沿时钟

双边沿时钟是指在时钟的上升沿和下降沿都进行数据传输,两个触发器由两个相位相反的时钟信号控制。

双边沿或混合边沿时钟

这样操作会为使用同步复位和使用插入扫描链这样的测试方法带来麻烦,同时也会增加确定关键信号的路径的难度。

但双沿采样时钟也是有好处的。

双沿时钟使得原本一个周期输出/输入一个数据的架构,改变为一个周期输出/输入两个数据,这样在不升高时钟频率的前提下,提升了信号的吞吐率,从而带来性能的提升。另外一个使用双沿时钟的优势是降低功耗,因为时钟频率减半,所以系统的功耗只有等效同步电路的一半。

但一般情况下,不建议使用双边沿时钟,这是因为:

  • 由于上下沿都用,要求时钟的质量很高,一般的时钟源很难达到,成本高。
  • 由于时钟的抖动等不确定因素的存在,容易使时钟的占空比发生改变,因此容易引起建立时间和保持时间的违规。

在FPGA中的通常高速传输时会用到双沿采样时钟,DDR存储同样也是使用的双沿采样,但在常规情况下不使用双沿采样时钟。

reference

  1. 什么是PLL? - 知乎
  2. PLL与DLL
  3. 硬件架构艺术
  4. 西电数字集成设计课程资料

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

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

相关文章

音视频八股文(7)-- 音频aac adts

AAC介绍 AAC(Advanced Audio Coding)是一种现代的音频编码技术,用于数字音频的传输和存储领域。AAC是MPEG-2和MPEG-4标准中的一部分,可提供更高质量的音频数据,并且相比于MP3等旧有音频格式,AAC需要更少的…

【经典题】二叉搜索树与双向链表

二叉搜索树与双向链表链接 解题思路 思路1 : 中序遍历,将节点放进vector中,再改链接关系,这很容易想出并解决,但这样明显不符合题意。 思路2: 这道题目要求将一个二叉搜索树转换成一个排序的双向链表&a…

php连接sqlserver

1.使用工具 Wampserver--3.3 sqlserver2023 php7.4.33 2.连接流程 1.下载Microsoft Drivers for PHP for SQL Server 下载地址:下载 Microsoft Drivers for PHP for SQL Server - PHP drivers for SQL Server | Microsoft Learn 2.下载Microsoft ODBC Driver …

简记二分算法模板与代码案例:整数二分和浮点数二分

本文以 Java 语言实现,整理的代码模板适用于编程竞赛。对代码模板原理的讲解不多,主要记录一下如何使用。 目录 一、算法模板 (1)整数二分 (2)浮点数二分 二、例题 例题:acwing-789.数的范…

开源网安入选“2023年中国信通院开源供应商名录”

近日,为进一步推进开源供应链安全合规发展,中国信息通信研究院云大所发布了“2023年中国信通院开源供应商名录”(简称名录),名录供应商均为通过可信开源供应链系列评估的企业。名录范围涵盖云计算、大数据、中间件、数…

【致敬未来的攻城狮计划】第1期 作业汇总贴 + 获奖公布

​ 文章目录 一、写在前面二、种子学员介绍三、作业贴汇总四、小小总结五、获奖公布六、学员有话说七、特别致谢 一、写在前面 时间过得真快,距离 【致敬未来的攻城狮计划】第1期 的发起,已经过去一个多月了,而第1期的真正学习考核期也将在…

虹科案例 | 如何通过智能、非接触式测量解决方案,提高起重机的安全和效率?

PART 1 案例详情 自建造初期以来,起重机行业已经走了很长一段路。技术的使用在行业进步中发挥了重要作用,降低了使用桥式起重机的危险性。特别是,智能、非接触式测量解决方案通过使用高架升降机更安全、更高效、更高效,为行业的进…

如何将化学分子SMILES字符串转化为Pytorch图数据结构——ESOL分子水溶性数据集解析

硬核原创,转载请注明出处: https://leytton.blog.csdn.net/article/details/130406553 一、前言 在用Pytorch图神经网络对化学分子进行数据分析的时候,经常使用现有的数据集。看到自动处理完毕的数据结构,里面的特征值让我们一脸…

springsecurity工作流程

Spring Security 的工作流程如下: 1.当用户请求一个受保护的资源时,Spring Security 的过滤器链会拦截该请求。 2.然后 Spring Security 会判断该请求是否认证(authenticated)和授权(authorized)。 认证(Authentication):验证用户身份,判断用户是否能登录系统。Spring Securi…

Linux应用编程(线程同步)(互斥锁)

对于一个单线程进程来说,它不需要处理线程同步的问题,所以线程同步是在多线程环境下可能需要注意的一个问题。线程的主要优势在于,资源的共享性,譬如通过全局变量来实现信息共享,不过这种便捷的共享是有代价的&#xf…

docker网桥冲突解决方法

Docker网桥网段冲突导致访问不到容器问题 三种情况 一、docker0所用网段与局域网所用网段相同,导致网桥冲突,这会造成冲突网段无法访问docker服务。 解决办法: 1.停止docker,删除冲突网桥 systemctl stop docker ip link del doc…

干货 | 中科院心理所考研复试经验分享

Hello,大家好! 这里是壹脑云科研圈,我是喵君姐姐~ 此时此刻,23年考研的小伙伴估计正在为复试进行准备吧,大家都准备得怎么样了呢? 今天为大家带来的就是我国顶级心理学研究结构—中科院心理所…

leetcode19_删除链表的倒数第 N 个结点

文章目录 题目详情分析Java代码实现 题目详情 leetcode19 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 分析 暴力的方法,两趟遍历,第一个遍历记录总的节点数目,第二次遍历到总结点数-N个位置&…

PyTorch——利用Accelerate轻松控制多个CPU/GPU/TPU加速计算

PyTorch——利用Accelerate轻松控制多个CPU/GPU/TPU加速计算 前言官方示例控制多个CPU/GPU/TPU简单说一下设备环境导包加载数据 FashionMNIST创建一个简单的CNN模型训练函数-只包含训练训练函数-包含训练和验证训练 参考链接 前言 CPU?GPU?TPU&#xff…

边学边记——数据结构☞关于对象的比较(包括对equals()方法的重写,Comparable接口,Comparator接口的介绍)

目录 一、基本类型 二、引用类型——对象的比较 1. 关于同一性的比较 2. 关于相等性的比较 三、Comparable接口 1. 介绍 2. 实现 3. 什么叫做正确的compareTo方法的重写 四、实现Comparator接口(基于比较器比较) 1. 介绍 2. 实现 3. 使用场景…

CentOS防火墙的常用快捷命令

CentOS是免费开源的Linux发行版之一,它兼容RHEL并由社区进行维护,大多数美国服务器提供对该系统支持。在使用CentOS系统时,您需要了解一些常用命令,比如开启、查看、关闭防火墙等。本文将介绍下CentOS防火墙的常用命令。 CentOS是一种面向企业级服务器环境的Linux发行版,…

D触发器仿真实验

关于D触发器的内容见专栏的单片机原理及应用,主要是时钟脉冲出现时候,会改变输出状态。 下面来做一个D触发器的仿真实验。 部件 使用74LS74:带清除和预置端功能的双上升沿D型触发器 74LS74是一款现代集成电路芯片,属于TTL&…

火爆全网,测试用例技巧-Python实现XMind测试用例转Excel测试用例

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试&#x…

Jenkins中Changelog插件使用

Jenkins中Changelog插件使用 通过changlog插件获取每次提交的变更信息 一、安装changelog插件 二、使用changelog 1、新建项目,在构建环境中勾选Add Changelog Information to Environment ,输入对应的格式 %3$s(datetime-at%4$s via%1$s) %2$s(type%…

聚焦智慧燃气,美格智能亮相第25届中国国际燃气、供热技术与设备展览会

4月25~27日,第25届中国国际燃气、供热技术与设备展览会在深圳会展中心(福田)盛大举办。本次展会由中国城市燃气协会主办,自1994年举办以来已历经24届,是国内燃气行业规模巨大的综合性专业展会。美格智能携4G/5G模组、N…