【更新中】《硬件架构的艺术》笔记(二):时钟与复位

本章主要针对ASIC设计给出建议,独立于CAD工具以及工艺,主要针对模块设计和存储器接口。

同步设计

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

避免使用行波计数器

行波计数器:用触发器的输出来驱动其他触发器的时钟输入,一般会存在问题。此时触发器的时钟并不是同步的,存在相位偏移,若该触发器链很长,延迟累积,会导致采样到错误的数据。

门控时钟

门控单元会导致时钟偏移,并会引入尖峰脉冲单元作用于触发器。可能仿真正常,综合出问题。

门控时钟作为低功耗设计的常用方法,通常由DC工具插入,在RTL除auto_clock_gating控制外,不要对时钟做任何处理 

双边沿或混合边沿时钟

缺点:

  • 复杂性增加:使用双边沿时钟会导致设计的复杂性增加。电路设计师必须确保在两个边沿上对信号的处理是同步的,并且要处理好时序问题。
  • 同步复位问题:在使用同步复位的电路中,复位信号必须在时钟的某一边沿有效。双边沿时钟可能导致复位信号在不同边沿上产生不同的行为,从而增加了调试和验证的复杂性。
  • 插入扫描链的困难:在测试过程中,插入扫描链时,双边沿时钟可能会导致信号路径的确认变得更加困难。因为在一个时钟周期内,信号在不同边沿上可能会有不同的状态,这使得测试和验证变得更加复杂。
  • 信号路径的时序问题:由于信号在两个边沿上都可能被采样,设计者需要更加小心地确认信号路径的时序,确保在时钟的每个边沿上,所有相关信号都能在正确的时序下稳定。

不过有时候为了追求性能还是会使用双边沿,如DDR。

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

第二级输出同时受时钟边沿和复位信号影响,违反了同步设计原理,第二级触发器的时钟和复位之间存在潜在的竞争条件。

 

 推荐的设计技术

要理解综合工具如何对不同的HDL编码风格和结果进行解释(硬件思维),其会影响设计门数和时序性

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

在同步设计中,所有反馈回路都应包含寄存器,组合环路违背了同步设计原理。组合环路是不可综合的。

解决方法:引入一个触发器或者寄存器。

许多设计工具中,组合环路都会导致无休止的循环计算,所以EDA可能以不同的方式把组合环路打断,导致于原始设计意图不一致。

避免数字设计中的延迟链

延迟链:两个或多个单扇入单扇出的连续节点产生延迟。通常使用反相器链在一起。

使用场景:异步设计中,解决其他组合逻辑导致的竞争条件。

缺点:增加设计对操作环境的敏感性,降低设计的可靠度,增加移植到不同器件结构上的难度。

避免使用延时链,需要在设计中使用同步技术取代异步技术。

避免使用异步脉冲产生器

两种脉冲产生的方法(纯异步):

  • 同一个信号接两输入与门或者或门,其中一个取反或者加延迟链,脉宽取决于两个信号相对延迟。(相当于人为增加毛刺宽度)
  • 寄存器输出延迟后驱动同一个寄存器的异步复位端。

异步产生的脉冲宽度常常为综合和布局布线软件带来困难,实际脉宽只有在布局布线之后,布线和传播延迟已知时才能确定。所以在创建HDL时很难得到可靠的延迟值,且PVT(压力、体积、温度)环境,工艺脉宽都会变。除此之外,STA不能验证脉宽,验证工作会变得困难。

由于涉及对脉冲数量的控制,所以多脉冲结构会比脉冲产生器引起更多问题。多脉冲也增加了设计的频率。

推荐使用的同步脉冲产生器:

 这个结构脉宽总是于时钟周期宽度相等,可以用时序分析验证,易于移植,独立于工艺。

always@(posedge clk)
beginq2<=q1;q1<=d;
end
assign Pulse=q1&~q2;

这里有点问题,经过触发器后触发信号延后了一个周期,脉冲应该也延后一个周期

类似的,可以在触发输入末端产生脉冲的脉冲产生器。

避免使用锁存器

图中电路X和Y同时拉高,形成了一个类似组合环路的结构,会使电路振荡。

原因:Latch的触发信号高电平时,输出对于输入来说是“透明的”。

  • STA分析器通常会做出与锁存器透明有关的错误假设:要么发现伪路径,要么丢失真正的关键路径。
  • 寄存器本身时序也是模糊的。这样的代码很难移植或者复用。
  • 锁存器常常使电路不可测。
  • FPGA是寄存器密集型电路,所以使用latch会占用更多资源。
  • 不完整的if或者case会导致意料外的的latch的生成(因为组合电路要保持之前的值就得用latch)。
  • 对于某些不支持Latch的FPGA,就会综合出组合环路代替Latch。

 图中电路有锁存数据的能力,但是可能违背建立时间和保持时间的要求,而且很难发现。

Latch也并不是完全没用,事实上可以用Latch挪用周且或者借用时间来满足关键路径的要求。

避免使用双沿时钟

双沿时钟使得数据传输在给定的时钟速率下能达到双倍的吞吐率,但违背了同步电路原理,会引发以下问题:

等效同步电路:

 

 上述等价是在时钟占空比为50%时成立的,如果时钟非对称占空比可能导致违背建立和保持时间,扫描路径也不能容易地通过触发器。

使用条件:对性能/速度要求很高、且无法承受使用等效同步电路在DFT和验证方面带来的额外开支。

优点

1、提升性能。

2、降低功耗。

时钟方案

内部产生的时钟

应尽量避免內部产生时钟。组合逻辑产生时钟会引入毛刺,也会引起时序方面的问题。同步时序电路数据的毛刺不会引起任何问题,而毛刺出现在时钟输入端或异步输入端就会产生明显的影响。

毛刺到达时钟输入端如果数据变化,会违背建立和保持时间。即使没有违背时序要求,寄存器也可能输出意料外的值。毛刺可能导致计数器增加额外的计数值,如图。

 解决方法:组合逻辑输出增加一个寄存器输出,这个寄存器可以阻止组合逻辑产生的毛刺。

组合逻辑时钟也会增加时钟延迟,可能导致违背时序要求。

图中由于时钟偏移导致违背了建立时间。

一种减少时钟偏移的方法:将产生的时钟放到SoC中高扇出且低偏移值的时钟树上。

分频时钟

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

保证总是由寄存器直接产生分频时钟信号,不要使用组合逻辑避免毛刺和尖峰脉冲。

行波技术器

使用行波计数器对时钟进行幂为2的分频。

优点:使用的门更少。

缺点:对STA和综合工具带来麻烦,应尽量避免。

功耗较高的系统中很适合使用这种计数器,可以大量降低由逻辑或SoC所引起的峰值功耗。

需要处理多个频率标准的通信应用常常使用多个时钟。

使用多路时钟的前提:

同步时钟使能和门控时钟

优点:减少功耗。

缺点:不是同步设计,显著增加设计时间和验证的工作量。增加时钟偏移并对毛刺敏感,所以能导致设计失败。

可以使用同步的时钟使能,用纯同步的方法关闭时钟域,但这样时钟树一直保持反转,触发器保持内部活跃,无法降低功耗。

 这里通过选通信号选择触发器输入,但是并没有真正意义上关闭触发器,只是使其值保持。

门控时钟方法学

同步设计中,功耗主要有三个部分:

对时钟门控能够大幅降低触发器的功耗,门控可以在时钟数的根部、末端或者两者之间的任何位置。

时钟数几乎消耗了整个芯片功耗的50%,所以最好在根部产生或者关闭时钟。

 

 

不带锁存器的门控时钟电路

 使用与门、或门实现。为避免过早截断或产生多个时钟脉冲、应强制要求使能在时钟上升沿到下降沿一直保持常量。该限制使得基于单时钟触发器的设计中不适合使用不含锁存器的门控时钟。(因为对使能信号有较高的要求)

图中为过早截断的情况。

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

使用锁存器就可以使门控时钟电路不需要满足上面的条件了。

使用与门控制上升沿有效的时钟,反之使用或门控制。

 这个电路在使能关闭时为低电平,当打开时便不会漏掉下降沿。

使用这项技术时,使能信号必须在半时钟周期内产生。(锁存器只在半个时钟周期内具有锁存功能)

 要保证设计中所有时钟能同时使能以便DFT,可以再加一个或门。

门控信号

特殊部分使用门控信号提高能效。(感觉这里的意思就是减少组合逻辑的功耗)

 重组数据路径以减少转换传播

把容易产生毛刺或者会经常翻转电平的电路放在电路后级,可以减少转换传播从而降低功耗。

 

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

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

相关文章

Spring Boot编程训练系统:架构设计与技术选型

3系统分析 3.1可行性分析 通过对本编程训练系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本编程训练系统采用SSM框架&#xff0c;JAVA作为开发语言&#…

DAY111PHP开发框架THIKNPHP反序列化POP利用链RCE执行文件删除

一、文件删除利用链分析 1、__destruct发现调用$this->removeFiles(); 2、removeFiles();函数方法file_exists&#xff0c;unlink($filename);文件删除功能 3、unserialize(base64_decode($_GET[id])); 有可控变量 4、pop文件删除利用链的使用 只有在这个类中调用 Files可…

如何使用亿图脑图MindMaster大纲功能

亿图脑图MindMaster作为一款出色的思维导图软件&#xff0c;具备丰富的编辑和展示功能。就拿大纲模式而言&#xff0c;用户可以清晰地浏览思维导图上的内容。因为大纲功能可以将思维导图上的内容以文档归纳的形式呈现出来&#xff0c;便于用户分类记忆。 自由切换思维导图模式…

Python的Eval函数执行结果和Lua脚本中LuaFunction的执行结果有何异同

最近在维护一个项目的时候&#xff0c;同时用到了Python和Lua两种脚本语言&#xff0c;发现很多有意思的东西&#xff0c;比如Python的Eval函数和Lua的LuaFunction函数&#xff0c;他们都是返回目标函数的句柄&#xff0c;那么在用法和机制上又有什么不同呢&#xff1f;为了全面…

DQN强化训练agent玩是男人就下xx层小游戏

游戏代码参考Python是男人就下一百层小游戏源代码_是男人就下一百层完整代码python-CSDN博客 在游戏作者代码基础上修改了下使该游戏在失败后能自动重新开始&#xff0c;方便后续能不间断训练 def reset_game(self):self.score 0self.end Falseself.last 6 * SIDEself.dire …

2024最新版JavaScript逆向爬虫教程-------基础篇之面向对象

目录 一、概念二、对象的创建和操作 2.1 JavaScript创建对象的方式2.2 对象属性操作的控制2.3 理解JavaScript创建对象 2.3.1 工厂模式2.3.2 构造函数2.3.3 原型构造函数 三、继承 3.1 通过原型链实现继承3.2 借用构造函数实现继承3.3 寄生组合式继承 3.3.1 对象的原型式继承…

网络编程示例之网络socket程序编程

注意&#xff1a;学习资料可在ElfBoard官方网站“资料”专区获取。 本节用到的源码路径&#xff1a;ELF 1开发板资料包->03-例程源码->03-1 命令行例程源码->05_elf1_cmd_net tcp协议程序 tcp_server.c 服务端仍然是按照如下顺序进行编写&#xff1a; socket()//创…

标准的渠道治理方法

在当今竞争激烈的市场环境中&#xff0c;品牌的渠道管理犹如一座大厦的基石&#xff0c;至关重要。而其中&#xff0c;对渠道价格的治理更是关键环节&#xff0c;直接关系到品牌的生死存亡与长远发展。 当品牌渠道中不幸出现低价、窜货链接时&#xff0c;一场关乎品牌未来走向…

双指针算法的妙用:提高代码效率的秘密(3)

双指针算法的妙用&#xff1a;提高代码效率的秘密&#xff08;3&#xff09; 前言&#xff1a; 小编在昨日讲述了关于双指针算法的两个题目&#xff0c;今日继续分享两个题目的解析&#xff0c;我相信&#xff0c;我只要坚持每天啥刷题&#xff0c;算法能力终究会提高的&…

动力商城-03 Idea集成apifox Mybatis-Plus字段策略

1.Idea下载apifox插件 2.新建令牌放入Idea 3.右键上传到对应接口 4.设置前置url 插件能够自动识别swagger注解 Mybatis-Plus字段策略 1、FieldStrategy作用 Mybatis-Plus字段策略FieldStrategy的作用主要是在进行新增、更新时&#xff0c;根据配置的策略判断是否对实体对…

11.11--final关键字和抽象类

一 java 1.final 关键字-----放在 访问修饰符后面 1&#xff09;防止被继承 2&#xff09;防止 父类方法 被重写 3&#xff09;防止 类中的 属性 被修改 4&#xff09;防止 局部属性 被修改 1.2.细节 1&#xff09;final 修饰属性 必须赋初值 ------------------------------…

IntelliJ+SpringBoot项目实战(三)---基于源代码直接生成漂亮的接口文档

在SpringBoot中可以集成代码插件自动生成接口文档&#xff0c;而且生成的文档很漂亮&#xff0c;除了接口功能介绍、传入参数、响应参数&#xff0c;还具体类似postman的功能&#xff0c;可调用接口进行测试&#xff0c;另外还可以下单WORD版、.md,html格式的文档。下面我们先看…

TemplatesImpl 在Shiro中的利用链学习1

一、前言 在前面的学习中&#xff0c;我们学习了CC1、CC6链&#xff0c;其中CC1链受限于Java8u71版本&#xff0c;而CC6则是通杀的利用链&#xff1b;后来又将 TemplateImpl 融入到 CommonsCollections 利用链中&#xff0c;绕过了 InvokerTransformer 不能使用的限制&#xf…

中仕公考:2025年省考请注意!

打算参加25年省考的考生们注意啦!如果打算参加2025年公务员省考&#xff0c;从这个时间点开始备考刚刚好&#xff0c;如果还不知道怎么备考的&#xff0c;看这篇就够了! 省考流程&#xff1a; 网上报名——资格审查——确认缴费——查看报名序号——准考证打印——笔试——成…

开发RAG应用,你必须知道的7个Embedding模型

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;Embedding模型是将文本数据转化为数值向量的核心技术&#xff0c;从而让计算机能够便捷地衡量文本间的语义关联&#xff0c;这种表示法已成为多种基础NLP任务的核心&#xff0c;如文本相似度判定、语义搜索、信息检索…

基于Java+SpringBoot学生成绩管理系统

一、作品包含 源码数据库设计文档全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据库&…

Kong API网关,微服务架构中,你看到就不想错过的选型

今天&#xff0c;很多公司都采用微服务架构来处理复杂业务&#xff0c;但随着服务数量增加&#xff0c;API管理成了一项繁重任务。Kong API网关&#xff0c;作为一款高性能的开源API网关&#xff0c;给开发者带来了极大便利。它不仅可以简化API的调用和管理&#xff0c;还拥有丰…

计算机毕业设计 | springboot+vue汽车修理管理系统 汽修厂系统(附源码)

1&#xff0c;项目背景 在如今这个信息时代&#xff0c;“汽车维修管理系统” 这种维修方式已经为越来越多的人所接受。在这种背景之下&#xff0c;一个安全稳定并且强大的网络预约平台不可或缺&#xff0c;在这种成熟的市场需求的推动下&#xff0c;在先进的信息技术的支持下…

使用京东API接口进行支付结算有哪些注意事项?

用京东API接口进行支付结算时&#xff0c;需要注意以下几个事项&#xff1a; 遵守京东开放平台规定&#xff1a;在使用京东API接口时&#xff0c;必须遵守京东开放平台的相关规定&#xff0c;不得滥用接口或进行非法操作。 保护用户隐私&#xff1a;为了保护用户隐私&#xff…

全国宪法宣传周答题活动怎么做

在12月4日全国宪法宣传周即将到来之际&#xff0c;越来越多的企业单位开始举办线上知识竞赛答题活动&#xff0c;以下是一个知识竞赛答题小程序的基本功能&#xff1a; 一、了解活动信息&#xff1a;确定答题活动的开始时间、结束时间以及是否分阶段进行等。不同的答题活动时…