chapter2——时钟和复位

news2025/7/6 22:07:15

目录

  • 1.同步设计
  • 2.推荐的设计技术
  • 3.时钟方案
  • 4.门控时钟方法学
  • 5.复位信号的设计策略
  • 6.控制时钟偏移

1.同步设计

在同步设计中由单个主时钟和单个主置位/复位信号驱动设计中所有的时序器件,对于ASIC的时钟域控制最安全的方法就是同步设计。

  • 避免使用行波计数器

由于第一个触发器到q的延迟而使第二个触发器的时钟输入产生偏移,而且不能在每个时钟边沿都激活。所以用触发器来驱动其他触发器的时钟输入端,一般会存在问题。用这种方式连接两个以上的触发器就会形成行波计数器,由于使用了更多的触发器,会使延迟累积增加,所以不推荐使用这种方式。
在这里插入图片描述

  • 门控时钟

时钟线上的门控单元会导致时钟偏移,并会引入尖峰脉冲作用于触发器。在时钟线上存在多路复用器时,这个问题尤为严重。
在这里插入图片描述
含门控时钟的设计在仿真时可能工作正常,但是进行综合时就会出现问题。

  • 双边沿或混合边沿时钟

如下图所示,两个触发器由两个相位相反的时钟信号控制。这会为使用同步复位和使用插入扫描链这样的测试方法带来麻烦,同时也增加确定关键信号的路径的难度。
在这里插入图片描述

  • 用触发器驱动另一个触发器的异步复位端

在下图中,第二级触发器的输出不仅仅只受时钟边沿的影响,这违反了同步设计原理。此外,该电路还包含第二级触发器时钟和复位之间的潜在竞争条件。

在这里插入图片描述

2.推荐的设计技术

  • 避免在设计中出现组合环路

组合环路是数字设计中导致不稳定和不可靠的最常见因素。在同步设计中,所有反馈回路都应包含寄存器。组合环路建立了不含寄存器的直接反馈回路,这违背了同步设计原理。

在HDL语言中,当信号经过若干组合always块产生自身时,或者算术表达式左边的内容也出现在右边时,就会形成组合环路。组合环路对设计是一种冒险,在遇见组合环路时综合工具总是会报错,其是不可综合的。

解决这个问题的简单方法是在组合环路中引入一个触发器或寄存器,以将直接通路打断。如下图,寄存器的输出通过组合逻辑直接控制同一个寄存器的异步输入端。

在这里插入图片描述

  • 避免数字设计中的延迟链

在用两个或多个带有单扇入和单扇出的连续节点产生延迟时,就会形成延迟链。延迟链通常出现在异步设计中以用来解决由其他组合逻辑导致的竞争条件。

延迟链会导致各种各样的设计问题,包括增加设计对操作环境的敏感性,降低设计的可靠度,以及增加将设计移植到不同器件结构上的难度。

  • 避免使用异步脉冲产生器

设计通常要求基于某些事件产生脉冲,设计人员有时使用延迟链产生单个脉冲(脉冲产生器)或一系列脉冲(多振子)。有两种常用的方法可以产生脉冲,但这些技术都是纯异步的,应尽可能避免使用。

异步产生的脉冲宽度常常为综合和布局布线软件带来难题。脉冲宽度可能不适用于所有的PVT环境,并且转移到不同技术节点时脉冲宽度也会变化。除此之外,因为静态时序分析不能用来验证脉冲宽度,所以验证工作会变得困难。

  • 避免使用锁存器

在数字设计中,锁存器用来在新的值到来前保持原来信号的值。避免在所有可能的位置使用锁存器,而应用触发器代替。

锁存器会为设计增加各种各样的问题。虽然锁存器是与寄存器相似的存储器件,但是它们有根本的区别。锁存器是连通模式的,即在数据输入和输出之间存在直接通路。输入端的毛刺能传递到输出端。

如下图所示,如果X和Y信号都变为高,因为锁存器由电平触发,所以将它们同时开启会使电路产生震振荡。

在这里插入图片描述
锁存器常常使得电路不可测,大多数DFT工具和自动测试程序生成器都不能很好的处理锁存器。
在写rtl代码时,忽略if及case中的分句也会形成锁存器,所以应该
1)将条件语句中的分支写全。
2)case语句中记得写default。

  • 避免使用双沿时钟

使用双沿时钟是指在时钟的上升沿和下降沿都传输数据。这种改变使得数据传输在给定的时钟速率下能达到双倍的吞吐率。双沿输出级时钟是一种增加设计最大可能输出速度的有效方法,但是它违反了同步电路的原理并将导致一系列问题。

电路结构如下所示:
在这里插入图片描述

使用双沿时钟会遇到的问题:
1)不对称的时钟占空比会导致违背建立和保持时间。
2)很难确定关键信号的路径。
3)很难使用像插入扫描链这样的设计方法学,因为它要求所有寄存器使用同样的时钟边沿。

在对性能以及速度要求很高的情况下,并且无法承受使用等效同步电路在DFT和验证方面所带来的额外开支时,也可以使用双沿时钟。

3.时钟方案

  • 内部产生的时钟

应尽可能避免在内部产生时钟,其会导致设计功能和时序问题。组合逻辑搭建的时钟产生器会引入毛刺,使得功能出现问题,此外由组合逻辑所导致的延迟也会导致时序方面的问题。

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

  • 分频时钟

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

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

  • 行波计数器

行波计数器使用级联寄存器,即每个寄存器的输出引脚连接到下一级寄存器的时钟引脚上。

在这里插入图片描述

因为计数器在各阶段创建行波时钟,所以这种级联会导致问题。这些行波时钟会对STA和综合工具带来麻烦。所以应该尝试避免使用这种结构以减少验证的工作量。

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

  • 多路时钟

时钟多路器用于使同一个逻辑功能具有不同的时钟。例如,需要处理多个频率标准的通信应用常常使用多个时钟。

如果能满足以下标准,时钟多路操作就是可接受的:
1)在初始化配置后,时钟多路逻辑就不再改变。
2)在测试时,设计会绕过功能时钟多路逻辑而选择普通时钟。
3)在时钟切换时,寄存器始终处于复位状态。
4)在时钟切换时产生的短暂错误响应没有负面影响。

如果不满足以上条件,就必须使用同步设计以确保寄存器没有违背时序,时钟信号上不出现毛刺同时没有竞争条件或其他麻烦。

  • 同步时钟使能和门控时钟

门控时钟使用使能信号开关时钟,实现对某些门控电路的控制。如下图所示,在时钟关闭时,相应的时钟域就会关闭,其功能会无效。
在这里插入图片描述

门控时钟是减少功耗的有力手段。在时钟被门控关闭后,该时钟网络和其中的寄存器都会停止翻转,因此它们的功耗减少。

然而,由于门控时钟并不是同步设计方案的一部分,因此会显著增加设计时间和验证的工作量。同时,门控时钟会增加时钟偏移并对毛刺敏感,所以会导致设计失败。

4.门控时钟方法学

在传统的同步设计风格中,系统时钟连接到每个寄存器的时钟端。这使得功耗主要由三个部分组成。
1)在每个时钟沿变化的组合逻辑所产生的功耗(由于触发器驱动这些组合逻辑)。
2)由触发器产生的功耗(即使在触发器的输入和内部状态未变化,该功耗依然存在)。
3)设计中时钟树产生的功耗。

对时钟路径进行门控能大幅降低触发器的功耗。门控时钟可以存在于时钟树的根部、末端,或两者之间的任何位置。

由于时钟树几乎消耗了整个芯片功耗的50%,因此最好始终在根部产生或关闭时钟,以使
整个时钟树都关闭,而不是沿时钟树在末端才关闭时钟。

  • 不含锁存器的门控时钟电路

不含锁存器的门控时钟使用一个简单的“与”门或“或”门实现(取决于触发器使用哪个边沿),如下图所示:
在这里插入图片描述
为了避免过早截断时钟脉冲或误产生多个时钟脉冲(或时钟上的毛刺),正确的操作强制要求使能信号从时钟上升沿起到时钟下降沿为止一直保持常量。

这种限制使得在基于单时钟触发器的设计中不适合使用不含锁存器的门控时钟。

  • 基于锁存器的门控时钟电路

基于锁存器的门控时钟风格向设计中加入了一个电平敏感的锁存器,以在时钟活跃沿和不活跃沿之间保持使能信号不变,这样就无需依靠门控电路本身来满足这一要求了,如下图所示:
在这里插入图片描述
由于锁存器能捕捉到使能信号并使它保持到产生完整的时钟脉冲,因此使能信号只需要在时钟上升沿附近保持稳定即可。使用这种技术,每次只需要改变门的一个输入端来打开或关闭时钟,就能保证电路的输出不含任何毛刺或尖峰脉冲。

5.复位信号的设计策略

复位最基本的目的是使SOC进入一个能进行稳定操作的正确状态。

有关同步复位级异步复位优缺点:异步复位同步释放

  • 移除异步复位的问题

移除系统中的异步复位会使芯片进入不稳定的未知状态。在释放复位时必须要注意避免这种情况。在使用同步复位时,复位信号的前沿和尾沿必须远离时钟的有效边沿。

在移除异步复位信号时,有两个潜在问题:
1)违背复位恢复时间。
2)复位移除会在不同时序元件的不同时钟周期内发生。

  • 过滤复位毛刺

异步复位对毛刺很敏感,这就意味着任何满足触发器最小复位脉冲宽度的输入都能引起触发器复位。如果复位线受到毛刺的影响,这就会成为问题。可以通过加入一个数字延时的方法来解决。

6.控制时钟偏移

整个芯片中时钟信号到达时间的差异称为时钟偏移。时序必须满足寄存器建立和保持时间的要求是基本的设计原则,而数据传播延迟和时钟偏移都用于与之相关的计算。

  • 短路径问题

时钟偏移中的短路径问题与触发器的保持时间违背很相似。在两个相邻触发器之间的数据传播延迟比时钟偏移还短时,就会出现问题,如下图所示:
在这里插入图片描述
由于同一个时钟沿到达第二个触发器比新数据要慢,因此第二个触发器在与第一个触发器同样的边沿处,切换为与第一个触发器同样的值。这会使U2在与U1同一个边沿处移位同样的数据,最终导致功能错误。

  • 使时钟偏移最小化

将时钟偏移减至最小值是解决短路径问题的最好方式。将设计中的时钟偏移保持在触发器的最小延迟之下能提高设计对所有短路径问题的可靠性。
以下是一些方法:
1)在数据路径上加入延迟
通过在数据路径上增加延迟而最终使整个数据路径的延迟大于时钟偏移,可以消除短路径问题。
2)时钟反转
将时钟相对于数据反转使用,这样就自动消除了时钟偏移。在发送寄存器接收到时钟沿前,时钟会先驱动接收触发器读入发送值。如下图:
在这里插入图片描述
可以看出,在插入足够多的延迟后,接收触发器会比源触发器先接收到有效时钟沿。这是一种以牺牲建立时间为代价提高保持时间的方法。

3)交替相位时钟
交替使用时钟沿、交替使用时钟相位、行波时钟结构

4)平衡线路长度

设计电路时可以使用平衡线路长度的方式保证低时钟驱动器偏移。除了保持所有时钟线长度相等,也应保证各终端负载相同。这样可以保证线路长度恰当地平衡。

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

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

相关文章

Python 实现自动化测试 dubbo 协议接口

前言 在工作或学习过程中,可能会遇到后端服务里有使用 dubbo 协议实现的接口,dubbo 协议接口的测试方法不同于 http/https 类型的接口,不能简单使用request.post的方法来完成自动化测试。 如果需要对 dubbo 协议的接口进行自动化测试&#…

FFmpeg进阶:生成视频的缩略图

文章目录1.读取对应位置的视频帧2.添加时间信息3.对图像进行拼接4.输出拼接图像5.显示效果很多时候为了方便预览视频内容,我们会随机的抽取视频当中的一些帧组成一个图片作为视频的缩略图。这里介绍一下如何通过FFmpeg生成视频的缩略图。其实原理很简单,…

MyBatis association解决多对一和collection解决一对多的映射关系

多对一的映射关系 创建Emp和Dept类 1.处理多对一映射关系方式一:级联属性赋值 2.处理多对一映射关系方式二:association实现 association:处理多对一的映射关系 property:需要处理多对的映射关系的属性名 javaType:该属性的类型 3.处理多对一映射关…

Metabase学习教程:视图-6

表格视图几乎可以来做所有的事情 了解如何设置条件格式、小条形图、值格式等。 表格是数据的自然栖息地,对应关系数据库列和对应的行记录。它们可能不像条形图或者地图,但当你在很多领域工作时,它们往往是你所需要的。Metabase中的表可视化…

运动品牌推荐:2022年最值得入手的一些运动装备

运动是一个比较枯燥的过程,不断的身体重复,会让运动者的注意力过度的关注到自己身体的疲惫感并且放大,这个时候我们就可以通过外在的运动装备来消除这些疲劳感,提高自己的运动积极性。不过哪些运动装备好用并适合自己呢&#xff1…

服务器配置怎么查看

服务器配置怎么查看 在我们找服务器商买服务器时,一般都是根据自己需求来选择需要什么配置的服务器。 选服务器时主要看CPU、内存、硬盘、带宽、这几个主要配置今天艾西就教你怎么查看服务器配置 CPU、内存怎么查看: 方法一:我们远程进入服…

学术Paper写作技巧要点讲解

在国外图书馆阅读他人的学术文章的时候,是否发现他们英文与你的不一样?虽然他们的Paper与你的有相似的结构,即开头、正文、结论,但是你的写作与他们的比起来还是显得简单多了。就是类似于国内毕业Paper的写作,在国外学…

断点续传小解

断点续传的原理 HTTP 协议是互联网上应用最广泛网络传输协议之一,它基于 TCP/IP 通信协议来传递数据。断点续传的奥秘就隐藏在这 HTTP 协议中了。 我们知道HTTP请求会有一个Request header 和 Response header,在请求头里边有个和Range相关的参数 当下…

6种交互式内容创意帮助跨境电商卖家提高独立站商店知名度

关键词:跨境电商卖家、独立站商店 交互式内容是一种允许用户与之交互的内容。一些示例包括在线投票、问答环节、交互式视频和交互式计算器等交互式工具。此内容类型允许查看者通过单击或拖动项目来自定义显示方式和内容。内容还可以引导读者采取您想要的操作&#x…

【网络安全】——sql注入之云锁bypass

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

嵌入式分享合集110

一、功耗,成为芯片设计的头号问题 很明显,热量将成为半导体未来的限制因素。已经有很大一部分芯片在任何时候都是黑暗的,因为如果所有东西同时运行,所产生的热量将超过芯片和封装消散该能量的能力。如果我们现在开始考虑堆叠模具…

智能网卡的网络加速技术

2021年9月25日,由“科创中国”未来网络专业科技服务团指导,江苏省未来网络创新研究院、网络通信与安全紫金山实验室联合主办、SDNLAB社区承办的2021中国智能网卡研讨会中,多家机构谈到了智能网卡的网络加速实现,我们对此进行整理&…

金枪鱼群优化算法(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

跑步需要哪些运动装备?跑步装备选购指南

跑步是一项有氧运动,是富有韵律性的运动,在运动过程中,血液可以供给心肌足够的氧气;氧气能充分酵解体内的糖分,还可消耗体内脂肪,增强和改善心肺功能,预防骨质疏松。 而在跑步的时候选择好自己的运动装备&…

代码随想录训练营第32天|LeetCode 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

参考 代码随想录 题目一:LeetCode 122.买卖股票的最佳时机II 按照自己的想法,无非就是在最低点买入,在最高点卖出,因此只需要找到成对的极小值和极大值,就可以计算利润了。代码实现如下: class Solutio…

使用姿势估计构建 姿势校正器

我们中的许多人大部分时间都在办公桌前弯腰驼背,身体前倾看着电脑屏幕,或者瘫坐在椅子上。如果你像我一样,只有当你的脖子或肩膀在数小时后受伤,或者你有偏头痛时,你才会想起你的不良姿势。如果有人可以提醒您坐直不是…

SpringBoot配置文件(学习笔记)

目录 一、配置文件概述 配置文件的作用 配置文件的格式 二、application.properties 配置文件 基本语法 读取配置文件 三、application.yml 配置文件 基本语法 读取yml中的配置 1、yml配置的简单读取 2、读取yml 配置中不同数据类型及 null​编辑 2、读取yml配置文…

Python基础知识入门(三)

Python基础知识入门(一) Python基础知识入门(二) 一、元组类型 元组是用英文小括号 () 把所有元素包裹起来,元组里面的每一个数据叫作元素。每个元素之间都要用 英文逗号 ( , ) 隔开。例如:(1,2,3)。 注意…

Head First设计模式(阅读笔记)-04.工厂模式

披萨订购 假设要完成披萨订购的功能,披萨的种类很多,比如 GreekPizz、CheesePizz 等,披萨店会根据用户需要的披萨种类制作披萨,制作的流程包括prepare->bake->cut->box 简单实现 下面代码的实现十分简单清晰,…

从0到0.1学习 lambda表达式(Java版)

编码几年时间,有一个东西似乎一直也逃不过去,那就是lambda表达式。 无论是c#,Python还是Java,lambda的思想都是共通的。但以下的语法和实例为java。 现在就来说说这个看似很难的lambda表达式 什么是lambda表达式? l…