深度揭秘异步复位同步释放原理

文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点。点击进去后出现任何损失与社区无关。

明天就放端午小长假了,提前祝大家节日快乐。腾讯官网已经给小编公众号开通了赞赏功能(在文章末尾),这个赞赏是针对原创作者的,目的是鼓励原创作者不断进行内容分享。

所以,各位粉丝可以给本公众号投稿,赞赏所得归文章作者所有。截止目前,本公众号已经发表原创 48 篇,皆为小编一个个字敲出来的。所以希望各位也来投个稿。好了,下面直接进入今天的主题。

Removal timing check

Removal time 是指在时钟有效沿来临之后,异步复位信号需要继续保持有效的最短时间。满足这个最短时间才能确保对寄存器进行正常的复位。Removal time check 的波形图如下图所示。Removal timing check 与 hold time check 类似。

Recovery timing check

Recovery time 是指在时钟有效沿到来之前,复位信号保持高电平的最短时间。即复位信号变到非复位状态的电平必须在 clk 之前一定的时间到达。满足这个 Recovery time,可以确保在时钟有效沿来临时,异步复位信号处于无效状态,从而确保正常的数据采样。Recovery time 的检查波形如下图所示。它的检查和 setup 检查类似。

从 Removal 和 Recovery time 的定义知道,只要 DFF 的复位信号不在时钟有效沿附近变化(复位信号远离时钟有效沿),就可以保证电路的正常复位和撤销。

在实际的设计中,比如有的模块是先复位再给模块供应时钟,即保证了复位信号与时钟在时间上是错开的,这种流程可以保证不会出现 recovery 和 removal 的问题,因为复位置起撤销时都没有时钟。即使操作流程保证不了,出现 recovery 和 removal 违例,由于模块此时都不会工作,也没什么问题。

同步复位

复位信号可以理解为一个普通的数据信号,它只有在时钟的跳变沿才会其作用,一般只要复位信号持续时间大于一个时钟周期,就可以保证正确复位。

异步复位

复位可以在任何时候发生,表面上看跟时钟没有关系,但真实情况是异步复位也需考虑时钟跳变沿,因为时钟沿变化和异步复位都可以引起 Q 端数据变化。如果异步复位信号跟时钟在一定时间间隔内发生变化,Q 值将无法确定,即亚稳态现象。这个时候既是异步复位信号持续时间再长都没有办法,因为不定态已经传递下去。

同步复位虽然解决了当时钟的有效沿来临的时候 rst_n 的边沿也正好来临所出现的冒险与竞争。 但是从综合的电路上可以看出,多了一个组合逻辑 MUX。

如果设计中所有的复位都是这样的,那会增加很多的资源,导致芯片面积很大。那么有没有更好的解决办法呢?答案是有,那就是异步复位同步释放机制。

异步复位,同步释放

异步复位,同步释放就是指在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。

如上图,单独看方框 2 的复位策略,是一个异步复位电路,即复位信号有效时不管时钟信号是否处于有效沿,输出都会被复位。但是如果复位信号在时钟信号的上升沿撤销时,这时候的输出就是亚稳态。

方框 1 中电路图是实现异步复位同步释放的关键。

异步复位

当 rst_async_n 有效时,第一个 D 触发器的输出是低电平,第二个 D 触发器的输出 rst_sync_n 也是低电平,方框 2 中的异步复位端口有效,输出被复位。

同步释放

假设 rst_async_n 撤除时发生在 clk 上升沿,如果不加此电路则可能发生亚稳态事件(有的时候会打三拍)。但是加上此电路以后,假设第一级 D 触发器 clk 上升沿时 rst_async_n 正好撤除,则 D 触发器 1 可能输出高电平 “1”,也可能输出亚稳态,也可能输出低电平。但此时第二级触发器不会立刻更新输出,第二级触发器输出值为前一级触发器 Q1 的输出状态。显然 Q1 之前为低电平,故第二级触发器输出保持复位低电平。直到下一个时钟有效沿到来之后,才随着变为高电平。即实现同步释放

在数字后端实现时,如果发现第一级寄存器的异步复位端存在 removal 和 recovery 的 timing violation,我们可以不用管。因为这一级只是作为过渡,我们不 care timing。

异步复位同步释放电路 Verilog 代码实现:

always @ (posedge clk, negedge rst_async_n)

if (!rst_async_n) begin

rst_s1 <= 1’b0;

rst_s2 <= 1’b0;

end

else begin

rst_s1 <= 1’b1;

rst_s2 <= rst_s1;

end

assign rst_sync_n = rst_s2;

endmodule

小编知识星球简介:

在这里,目前已经规划并正着手做的事情:

  • ICC/ICC2 lab 的编写

  • 基于 ARM CPU 的后端实现流程(已经发布

  • 利用 ICC 中 CCD(Concurrent Clock Data)实现高性能模块的设计实现(已经发布

  • 其他内容待定

在这里,各位可以就公众号推文的内容或者实际项目中遇到的难题提问,小编会在 24 小时内给予解答(也可以发表你对数字后端设计实现中某个知识点的看法,项目中遇到的难点,困惑或者职业发展规划等)。

星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有二十九星球成员,感谢这二十九位童鞋的支持!欢迎各位铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标。 (星球的门槛将会越来越高,有需求的朋友趁早上车)****

【粉丝福利】

小编的知识星球目前已经开通分享有赏金功能,只要分享星球上任意一个主题到朋友圈或者给好友后,每成功邀请一个好友,即可获得现金奖励

好了,今天的码字就到这里了,原创不容易,喜欢的可以帮忙转发和赞赏,你的转发和赞赏是我不断更新文章的动力。小编在此先谢过!与此同时,吾爱 IC 社区(52-ic.com)也正式上线了。吾爱 IC 社区(52-ic.com)是一个专业交流和分享数字 IC 设计与实现技术与经验的 IC 社区。如果大家在学习和工作中有碰到技术问题,欢迎在微信公众号给小编留言或者添加以下几种联系方式进行提问交流。

https://mp.weixin.qq.com/s/yL5de2hTWg7F5vrcilQRFA

异步复位同步释放原理相关推荐

  1. verilog异步复位jk触发器_异步复位同步释放原理

    关键词:同步释放,recovery,removal 在数字IC设计中肯定会涉及到异步复位的问题,因为需要对电路进行复位操作.这种复位设计主要依靠前端设计以及工具来检查,从数字IC后端的角度上讲,只要在 ...

  2. (47)FPGA同步复位与异步复位(异步复位同步释放)

    (47)FPGA同步复位与异步复位(异步复位同步释放) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA同步复位与异步复位(异步复位同步释放) 5)技术交流 ...

  3. (61)FPGA面试题-使用Verilog语言编写异步复位同步释放代码

    1.1 FPGA面试题-使用Verilog语言编写异步复位同步释放代码 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-使用Verilog语言编写异步复位 ...

  4. (10)Verilog HDL异步复位同步释放

    (10)Verilog HDL异步复位同步释放 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL异步复位同步释放 5)结语 1.2 FPGA简介 F ...

  5. 异步复位同步释放机制-系统完美稳定

    原文地址:FPGA之家 首选我们来聊聊时序逻辑中最基础的部分D触发器的同步异步,同步复位即复位信号随系统时钟的边沿触发起作用,异步复位即复位信号不随系统时钟的边沿触发起作用,置数同理,rst_n表示低 ...

  6. 异步复位同步释放 打两拍

    同步复位问题:复位信号持续时间太短,在clk下没采集到就没了. 异步复位问题:释放时可能会出现亚稳态(见最后两张图). 文章目录 1. 异步复位 2. 同步复位 3. 异步复位同步释放 今天好好理一理 ...

  7. 同步复位和异步复位同步释放

    目录 同步和异步时序电路 同步复位 1.原理图 2.Verilog实现 3.TB代码 4.波形 5.PS 异步复位 1.原理图 2.Verilog实现 异步复位同步释放 1.原理图 2.Verilog ...

  8. 关于“异步复位,同步复位,异步复位同步释放”的理解

    文章目录 1. 异步复位 2. 同步复位 3. 异步复位同步释放 今天好好理一理异步复位,同步复位,以及亚稳态中的异步复位同步释放. 1. 异步复位 一般让复位信号低电平有效 复位信号不受时钟的控制, ...

  9. 三种复位方式: 同步复位、异步复位、异步复位同步释放

    一.特点:    同步复位:顾名思义,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效.否则,无法完成对系统的复位工作.用Verilog描述如下:             always @ (p ...

最新文章

  1. VR不仅用于游戏!HTC Vive显示美国市长VR用于城市规划
  2. tvpvar模型的建模步骤_3D游戏建模入门须知:次世代建模软件有哪些?零基础你都知道吗...
  3. JavaScript怎么安装_几句话说清楚JavaScript、V8引擎、NodeJS、NMP,到底是什么东东...
  4. QT的QDtlsClientVerifier类的使用
  5. TCP三次握手、四次挥手、socket,tcp,http三者之间的区别和原理
  6. cordova 人脸识别_html5与EmguCV前后端实现——人脸识别篇(一)
  7. linux windows变色龙,体验开源变色龙SUSE Linux Enterprise Server 11
  8. 网络编程之 字节序和深入理解bind()函数
  9. 浅谈Vue中的虚拟DOM
  10. jzoj 6301. 普及组
  11. 【2020牛客寒假基础算法训练营】第六场总结
  12. xencenter服务器不显示,XenCenter 不能连接 XenServer 解决方法
  13. 测控计算机三级有用吗,计算机等级考试教程(三级A 微机在测控领域的应用)...
  14. ASP连接Oracle数据库简易DEMO完全案例
  15. 张爱玲 《烬余录》 阅感
  16. 【Python数据分析之pandas01】两个常用的数据结构
  17. 【UML】UML建模
  18. 解决caffe2最新编译问题,亲测有效!
  19. 这6部韩国电影你都看过吗?
  20. 命运被转折改变--掌握java高性能分布式服务和海量大数据技术体系(第二期)

热门文章

  1. Web 函数自定义镜像实战:构建图象处理函数
  2. Linux命令curl详解(一)
  3. vs2019测试sizeof(string)的长度是28
  4. 类 SimpleDateFormat
  5. 浪漫主义时期交响曲 聆听记录
  6. [转]MinGW与MSYS
  7. C++Primer第五版——习题答案详解(六)
  8. 【HBase】HBase入门详解(二)
  9. RIPv1 RIPv2
  10. 跑团中看到的组织关系