异步复位和同步释放

文章目录

  • 前言
  • 一、为什么需要复位呢?
  • 二、同步复位
    • 1. 同步复位定义
    • 2. 同步复位的实现
    • 3. 同步复位的优点和缺点
      • 同步复位优点
      • 同步复位缺点
  • 三、异步复位
    • 1. 异步复位定义
    • 2. 异步复位的实现
    • 3. 异步复位的优点和缺点
      • 异步复位优点
      • 异步复位缺点
  • 四、异步复位同步释放
    • 1. recovery time和removal time
    • 2. 异步复位同步释放的含义
    • 3. 异步复位同步释放的实现
    • 4. 异步复位同步释放优点
  • 总结


前言

复位信号在数字电路里面的重要性仅次于时钟信号。对一个芯片来说,复位的主要目的是使芯片电路进入一个已知的,确定的状态,主要是触发器进入确定的状态。在一般情况下,芯片中的每个触发器都应该是可复位的。

一、为什么需要复位呢?

  1. 复位可以使电路从确定的初始状态开始运行
    比如上电复位,上电的时候,为了避免上电后进入随机状态而使电路紊乱,这个时候就需要上电复位。时序电路是一个双稳态电路,上电之后必须要有一个初始态,才可以正常运行。组合逻辑电路,没有存储功能,不需要复位信号。
  2. 复位可以使电路从错误状态回到可以控制的确定状态
    如果电路发生了异常,比如状态不正常,中断异常,firmware程序跑飞,这个时候就可以对电路进行复位,让它从错误的状态回到一个正常的状态。
  3. 电路仿真时需要电路具有已知的初始值
    在仿真的时候,信号在初始状态是未知状态(也就是所谓的x,不过对信号初始化之后的这种情况除外,因为仿真的时候对信号初始化就使信号有了初始值,这就不是x了)。仿真的时候由于初始状态为未知态,控制电路一开始就陷入了未知态。仿真跟实际电路不同,仿真是“串行”的,仿真时控制信号的初始不定态会导致后续的控制信号结果都是不定态,也就是说,初始的不定态对控制通道是致命的。

二、同步复位

1. 同步复位定义

同步复位的前提是,复位信号只会在时钟的有效边沿去影响或者复位flip-flop。Reset可以作为组合逻辑的一部分送给FF的D端。这种情况下,reset只能放在if条件下。

2. 同步复位的实现

一个简单的同步复位的D触发器代码如下(示例):

module sync_reset_dff_module (
    input clk,
    input rst_n,            // Synchronous reset
    input d,
    output reg q);
    always @ (posedge clk)
        if (!rst_n) q <= 1'b0;
    	else 		q <= d;
endmodule

在这里插入图片描述

3. 同步复位的优点和缺点

同步复位优点

1). 同步复位会综合成更小的触发器,特别当reset生成逻辑电路作为触发器D输入,但是这种情况下组合逻辑电路的数量变多,所以总的门电路节省不是那么显著;
2). 同步复位确保电路100%是同步的, 有利于静态时序分析工具的分析;
3). 抗干扰性高,同步复位确保复位只发生在时钟有效边沿,对小的复位毛刺来说,时钟就像滤波器。

同步复位缺点

1). 大多数逻辑器件的目标库内的DFF都只有异步复位端口,使用同步复位时,综合器就会在寄存器的数据输入端插入组合逻辑,占用更多的逻辑资源;
2). 同步复位依赖于时钟,如果电路中的时钟信号出现问题,无法完成复位;
3). 对复位信号的脉冲宽度有要求,必须大于指定的时钟周期,由于线路上的延迟,可能需要多个时钟周期的复位脉冲宽度,且很难保证复位信号到达各个寄存器的时序。

三、异步复位

1. 异步复位定义

异步复位电路即复位信号不随着系统时钟的边沿触发起作用。拥有异步复位的寄存器在设计过程中就多了一个引脚(复位引脚)。

2. 异步复位的实现

一个简单的异步复位的D触发器代码如下(示例):

module async_reset_dff_module (
    input clk,
    input rst_n,            // Synchronous reset
    input d,
    output reg q);
    always @ (posedge clk or negedge rst_n)
        if (!rst_n) q <= 1'b0;
    	else 		q <= d;
endmodule

在这里插入图片描述

3. 异步复位的优点和缺点

异步复位优点

1). 由于大多数的厂商标准单元库内的触发器都有异步复位端口,那么就可以保证数据路径是干净的,不会像同步复位一样插入额外的逻辑,可以节约逻辑资源;
2). 复位信号不依赖于时钟。

异步复位缺点

1). 复位信号容易受到毛刺的影响;
2). 当复位结束时刻恰在亚稳态窗口内时,无法决定现在的复位状态是1还是0,会导致亚稳态。
在这里插入图片描述

四、异步复位同步释放

1. recovery time和removal time

在同步电路中,输入数据需要与时钟满足setup time和hold time才能进行数据的正常传输,防止亚稳态。同样的道理,对于一个异步复位寄存器来说,异步复位信号同样需要和时钟满足recovery time和removal time 才能有效进行复位操作和复位释放操作,防止输出亚稳态。
在这里插入图片描述
recovery time(恢复时间):撤销复位时,恢复到非复位状态的电平必须在时钟有效沿来临之前的一段时间到来,才能保证时钟能有效恢复到非复位状态,此段时间为recovery time即复位释放与下一个时钟有效边沿之间需要间隔的最小时间,类似于同步时钟的setup time。
removal time (去除时间):复位时,在时钟有效沿来临之后复位信号还需要保持复位状态的一段时间为去除时间removal time即复位释放与上一个时钟有效边沿之间需要间隔的最小时间。类似同步时钟hold time。
异步复位信号一般会持续相对较长的时间,保证寄存器能复位完成。但是由于复位信号是异步的,我们不知道它会在什么时刻被释放。如果异步复位信号撤销时,不满足recovery time和removal time时,可能会造成亚稳态,因为复位信号还没完全取消时触发器发现自己该采样了,最终导致输出有可能是复位值0也有可能是采样到的D端的值,输出不确定。
另外,并不是复位信号撤销时才可能出现亚稳态,复位信号一开始出现时,同样可能会存在亚稳态,只不过异步复位信号持续时间长,即使第一个周期出现了亚稳态(即第一个周期复位未成功),下一个时钟周期也不会再出现亚稳态了。如果复位信号的变化只持续刚刚一个时钟周期,那么复位信号开始和撤销时都可能会出现亚稳态。

2. 异步复位同步释放的含义

所谓异步复位同步释放(Synchronized Asynchronous Reset),就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。
电路目的:防止复位信号撤除时产生亚稳态事件。
异步复位:显而易见,reset_n异步复位后,rst_n将拉低,即实现异步复位。
同步释放:这个是关键,看如何实现同步释放,即当复位信号reset_n撤除时,由于双缓冲电路(双寄存器)的作用,rst_n复位信号不会随着reset_n的撤除而撤除。

3. 异步复位同步释放的实现

一个简单的异步信号同步化代码如下(示例):

//Synchronized Asynchronous Reset
module sync_async_reset (
    input      clk,
    input      rst_async_n,
    output reg rst_sync_n
);
reg rst_s1;
always @(posedge clk or negedge rst_async_n) 
begin
   if(!rst_async_n) 
   begin
       rst_s1     <= 1'b0;
       rst_sync_n <= 1'b0;
   end
   else 
   begin
       rst_s1     <= 1'b1;
       rst_sync_n <= rst_s1;
   end
end
endmodule

在这里插入图片描述
当异步复位信号撤销时,用来同步的第二个寄存器输入的数据仍然是0,因此第二个寄存器是不会出现亚稳态的。第一个寄存器虽然可能出现亚稳态,即使其出现了亚稳态,这个亚稳态还需要通过第二个寄存器,这时第二个寄存器就起到了打拍的作用。也就是说,第二级的亚稳态只可能是上一级寄存器传播过来的,但是这个亚稳态经过第二级寄存器后,其大概率已经稳定下来了,就算稳定下来不为1,也就相当与复位信号多持续了一个周期而已。因此我们可以看出,使用异步复位同步释放时,异步复位撤销后需要额外等待一个时钟周期。

4. 异步复位同步释放优点

异步复位同步释放既解决了同步复位的资源消耗问题,又解决了异步复位的亚稳态问题,其根本思想是异步信号同步化。

总结

不同的复位方式有各自的优缺点。但是在工程中,一般都用异步复位的方法,最好是异步复位同步释放的方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Type-C转音频(C/3.5mm接口USB2.0数据传输)带PD充电低成本解决方案

LDR6500&#xff1a;领先市场的USB-C DRP接口USB PD通信芯片 产品介绍 LDR6500&#xff0c;由乐得瑞科技精心研发&#xff0c;是一款针对USB Type-C标准中Bridge设备而优化的USB-C DRP&#xff08;Dual Role Port&#xff0c;双角色端口&#xff09;接口USB PD&#xff08;Po…

Questflow借助MongoDB Atlas以AI重新定义未来工作方式

MongoDB客户案例导读 Questflow借助MongoDB Atlas赋能AI员工&#xff0c;助力中小型初创企业自动化工作流程&#xff0c;简化数据分析&#xff0c;提升客户体验&#xff0c;推动AI与员工的协作&#xff0c;重新定义未来工作方式。 协作式AI自动化平台 无需编码即可拥有自己的…

[word] word表格如何设置外框线和内框线 #媒体#笔记

word表格如何设置外框线和内框线 点击表格的左上角按钮从而选中表格 点击边框按钮边上的下拉箭头&#xff0c;选择边框和底纹 点击颜色边上的下拉箭头&#xff0c;选择红色 点击取消掉中间的边框&#xff0c;只保留外围边框 点击颜色边上的下拉箭头&#xff0c;选择另外一个颜…

使用2个手机文件恢复工具,轻松找回文件

在这个智能手机横行的时代&#xff0c;手机已经成为我们生活中不可或缺的一部分。然而&#xff0c;就像生活中的一切事物一样&#xff0c;手机也有可能出现意外&#xff0c;比如文件丢失。这就像是你在超市购物&#xff0c;结果发现钱包不见了&#xff0c;那种感觉真是让人抓狂…

【Linux】信号(二)

上一章节我们进行了信号产生的讲解。 本节将围绕信号保存展开&#xff0c;并会将处理部分开一个头。 目录 信号保存&#xff1a;信号的一些概念&#xff1a;关于信号保存的接口&#xff1a;sigset_t的解释&#xff1a;对应的操作接口&#xff1a;sigprocmask&#xff1a;sigp…

【Git】Git 的基本操作 -- 详解

一、创建 Git 本地仓库 要提前说的是&#xff0c;仓库是进行版本控制的一个文件目录。我们要想对文件进行版本控制&#xff0c;就必须先创建一个仓库出来。 创建⼀个 Git 本地仓库对应的命令为 git init &#xff0c;注意命令要在文件目录下执行&#xff0c;例如&#xff1a;…

力扣hot100:155. 最小栈(栈,辅助栈存储相关信息)

LeetCode&#xff1a;155. 最小栈 1、尝试单调栈 看到这题说&#xff0c;要常数时间内检索最小元素的栈&#xff0c;想到了单调栈&#xff0c;递增单调栈确实能维护最小值&#xff0c;但是这个最小值是存在一定意义的&#xff0c;即如果后面出现了最小值&#xff0c;那么前面…

MineAdmin 前端打包后,访问速度慢原因及优化

前言&#xff1a;打包mineadmin-vue前端后&#xff0c;访问速度很慢&#xff0c;打开控制台&#xff0c;发现有一个index-xxx.js文件达7M&#xff0c;加载时间太长&#xff1b; 优化&#xff1a; 一&#xff1a;使用文件压缩&#xff08;gzip压缩&#xff09; 1、安装compre…

Elastic Search (ES)Java 入门实操(1)下载安装、概念

实现数据查询代码&#xff1a;Elastic Search&#xff08;ES&#xff09;Java 入门实操&#xff08;2&#xff09;搜索代码-CSDN博客 Elastic Search&#xff08;ES&#xff09;Java 入门实操&#xff08;3&#xff09;数据同步-CSDN博客 Elastic Search 官方描述&#xff0c…

Web前端指南

前言 前端开发员主要负责网站的设计、外观和感觉。他们设计引人入胜的在线用户体验,激发用户兴趣,鼓励用户重复访问。他们与设计师密切合作,使网站美观、实用、快捷。 如果您喜欢创造性思维、打造更好的体验并对视觉设计感兴趣,这将是您的理想职业道路。 探讨前端、后端以…

python数据分析-心脏衰竭分析与预测

研究背景 人的心脏有四个瓣膜&#xff0c;主动脉银、二尖、肺动脉和三尖源 不管是那一个膜发生了病变&#xff0c;都会导致心脏内的血流受到影响&#xff0c;这就是通常所说的心脏期膜病&#xff0c;很多是需要通过手术的方式进行改善的。随着人口老龄化的加剧,&#xff0c;心…

Centos7 安装配置SFTP

Centos7安装配置SFTP 更新源安装 OpenSSH 服务启动服务设置为开机自启动新建一个用户 (sftpuser为你要设置的用户的用户名)编辑配置文件设置sftp用户的根目录重启SSH服务代码实现 由于最近工作中需要实现动态上传文件到帆软服务器&#xff0c;但是帆软没有提供相关API&#xff…

SAP 服务提供者 (Services Provider)接口测试笔记

文章目录 SAP 服务提供者 &#xff08;Services Provider&#xff09;接口测试笔记设置Content-Type授权SAP接口测试-SoapUI参数配置 SAP 服务提供者 &#xff08;Services Provider&#xff09;接口测试笔记 现在我在SAP里面公布了一些查询接口&#xff0c;现在就是要用SoapU…

JVM面试基本问题整理

文章目录 1、说下对JVM内存模型的理解2、运行时常量池的位置3、常量池和运行时常量池的区别4、内存溢出和内存泄漏5、Java 对象大小计算6、GCROOT都有什么7、常用的JVM启动参数有哪些8、TLAB 1、说下对JVM内存模型的理解 1&#xff09;线程私有区域 程序计数器&#xff08;Pro…

转让无区域商业管理公司挺批行业包变更

无区域的名称我们可以直接进行名称的申请核准。 从新规施行之后&#xff0c;国家局核名批准难度更高。新申请的无区域名称已经停批了&#xff0c;进行核名将更难&#xff0c;而需要满足一定条件并在成立一年后才能变更升级名称。而这个过程并非易事&#xff0c;难度非常高。可以…

微信小程序 画布canvas

属性说明 属性类型默认值必填说明最低版本typestring否指定 canvas 类型&#xff0c;支持 2d (2.9.0) 和 webgl (2.7.0)2.7.0canvas-idstring否canvas 组件的唯一标识符&#xff0c;若指定了 type 则无需再指定该属性1.0.0disable-scrollbooleanfalse否当在 canvas 中移动时且…

第二十讲:文件操作

第二十讲&#xff1a;文件操作 1.什么是文件1.1什么是文件1.1.1程序文件1.1.2数据文件 1.2二进制文件和文本文件数据的存储方式 2.流和标准流2.1流2.2标准流 3.文件指针4.文件的打开与关闭5.文件顺序读写5.1顺序读写函数介绍5.2打开和关闭函数5.2.1fopen函数5.2.2fclose函数 5.…

U盘文件系统结构损坏的应对与预防

在数字化时代&#xff0c;U盘作为便携式存储设备&#xff0c;其重要性不言而喻。然而&#xff0c;当U盘文件系统结构损坏时&#xff0c;我们可能会面临数据丢失的风险。本文将深入探讨U盘文件系统结构损坏的问题&#xff0c;分析其产生的原因&#xff0c;并给出相应的数据恢复方…

零基础入门学用Arduino 第一部分(三)

重要的内容写在前面&#xff1a; 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后&#xff0c;整体感觉是很好的&#xff0c;如果有条件的可以先学习一些相关课程&#xff0c;学起来会更加轻松&#xff0c;相关课程有数字电路…

深度学习:如何静悄悄地改变我们的日常生活

深度学习 深度学习&#xff1a;如何静悄悄地改变我们的日常生活一、消费电子产品智能手机与个人助理娱乐与社交媒体 二、医疗健康三、汽车与交通四、公共安全五、总结 深度学习&#xff1a;如何静悄悄地改变我们的日常生活 在近年来&#xff0c;深度学习技术因其强大的数据处理…