首页 > 其他分享 >为什么要异步复位,同步释放?

为什么要异步复位,同步释放?

时间:2024-10-29 11:58:18浏览次数:3  
标签:异步 触发器 同步 复位 释放 低电平 rst

结论:

防止复位信号撤除时,因为违反recovery和removal产生亚稳态事件;

接下来是详细解释:

异步复位的弊端:

异步复位中最严重的问题是,如果异步复位信号在触发器时钟有效沿附近“释放”(复位信号从有效变为无效)的话,可能会导致触发器输出的亚稳态。

  • 异步复位信号释放(对低电平有效的复位来说就是上跳沿)与紧跟其后的第一个时钟有效沿之间,有一个必须间隔的最小时间称为Trecovery(recovery time,恢复时间)。
    举例:如果异步复位释放后马上来了一个时钟有效边沿,触发器输出端的值将是不确定的,可能是高电平也可能是低电平,可能处于高低电平之间,也可能处于震荡状态,这就是亚稳态。如下图所示,Q为输出。
  • 时钟有效沿与紧跟其后的异步复位信号释放之间所必须的最小时间称为tremoval(removal time消除时间)。小于这个时间,则触发器的输出端的值将是不确定的,可能是高电平,可能是低电平,可能处于高低电平之间,也可能处于震荡状态,并且在未知的时刻会固定到高电平或低电平。这种状态就称为亚稳态。
    举例:如果时钟有效沿到来后,马上来了异步复位信号的上升沿(复位信号释放)触发器处于亚稳态。如下图所示。

同步复位的弊端:

同步复位唯一的缺点就是复位信号必须大于一个时钟周期才能保证被采到,从而能够复位成功,在保证同步复位信号持续时长的前提下,同步复位是没有问题的。

2、异步复位同步释放。

如图第一个方框内是异步复位和同步释放电路。有两个D触发器构成。第一级D触发器的输入时VCC,第二级触发器输出是可以异步复位,同步释放后的复位信号。

1)电路目的:防止复位信号撤除时产生亚稳态事件。

2)什么是异步复位和同步释放:是指复位信号是异步有效的,即复位的发生与clk无关。后半句“同步释放”是指复位信号的撤除也与clk无关,但是复位信号是在下一个clk来到后起的作用(释放)。

下面说明一下如何实现异步复位和同步释放的。

异步复位:显而易见,rst_async_n异步复位后,rst_sync_n将拉低,即实现异步复位。

同步释放:这个是关键,看如何实现同步释放,即当复位信号rst_async_n撤除时,由于双缓冲电路(双寄存器)的作用,rst_sync_n复位信号不会随着rst_async_n的撤除而撤除。

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

代码:

module reset_gen ( output rst_sync_n, input clk, rst_async_n);
reg rst_s1, rst_s2;
wire rst_sync_n ;

always @ (posedge clk, posedge 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; //注意这里的rst_sync_n才是我们真正对系统输出的复位信号

endmodule

标签:异步,触发器,同步,复位,释放,低电平,rst
From: https://www.cnblogs.com/senyingpengpeng/p/18512682

相关文章

  • 2级同步引发的思考
    1.2级同步的第二拍亚稳态出现概率非常小,但是也有可能出现,这一点对于从慢到快和从快到慢都是一样的;如果认为第二拍亚稳态不会出现的话,从慢到快从功能上,一定可以采到正确的值;从快到慢从功能上,不一定可以采到正确的值;电路如下所示: 时序如下所示:  情况1和情况2都是假定q2......
  • 【项目实战】分布式日志搜索系统之数据同步方案(Logstash-input-jdbc、go-mysql-elast
    在构建分布式日志搜索系统时,数据同步是一个核心环节。以下是针对您提出的五种数据同步方案的详细分析:一、Logstash-input-jdbcLogstash是ElasticStack的一部分,用于从各种来源收集数据,并将其发送到Elasticsearch。Logstash-input-jdbc插件允许Logstash从关系型数据库(如My......
  • H7-TOOL测试凌欧LKS32MC03x的骚操作玩法支持情况,不接硬件复位引脚,SWD上电100ms复用其
    【背景】这个骚操作,骚就骚在SWD接口引脚复用其他功能了,板子还没有把硬件复位引脚接出来,硬件复位引脚是专治这种场景的。虽然客户的程序搞了个上电后延迟100ms才复用,但JLINK,ULINK,STLINK,DAPLINK在MDK下都已经无法控制这个芯片下载,但使用第3方的烧录可以下载,且客户近期不方便提......
  • python——使用线程池实现异步返回数据
    框架flask应用场景当接收到请求,但数据处理比较耗时,希望请求过来时先返回一个响应,再慢慢处理数据,处理完成后再将结果返回给另一个地址。流程:接收到请求,立即返回响应。再处理数据,处理完成后将结果响应给预先定义的URL。importtracebackimportrequestsfromconcurrent.......
  • 异步游戏环境下该如何使用强化学习算法进行训练
    在使用强化学习算法进行训练时默认的都是使用同步的游戏环境,即agent手段environment的一个observation后environment是不继续向下执行的而是等待agent返回执行动作后再继续执行的,这种agent和environment在运行时保持着同步串行方式的运行模式则是同步游戏环境,而如果environment发......
  • FreeRTOS同步互斥与通信(有缺陷的同步示例,有缺陷的互斥示例)
    同步互斥1.同步同步指的是协调多个线程或进程的执行顺序,以确保某些操作按预期的顺序进行。同步主要用于解决依赖关系的问题,确保线程之间的协调。目的:保证操作的顺序,确保某些条件成立前不进行后续操作。实现方式:信号量:控制访问共享资源的数量,可以限制同时访问的线......
  • 同步电机与异步电机的区别
    同步电机和异步电机是电机领域中常见的两种类型,它们在工作原理、性能特点和应用领域上存在显著差异。本文将深入探讨同步电机和异步电机之间的区别,以帮助读者更好地理解它们的运行原理和适用场景。引言电机是现代工业和家庭中不可或缺的设备之一。同步电机和异步电机是两种常......
  • 线程同步(互斥锁条件变量)
     线程同步互斥锁(互斥量)条件变量生产/消费者模型一、互斥锁C++11提供了四种互斥锁:mutex:互斥锁。timed_mutex:带超时机制的互斥锁。recursive_mutex:递归互斥锁。recursive_timed_mutex:带超时机制的递归互斥锁。包含头文件:#include<mutex>1、mutex类1)加锁lock()互斥锁......
  • 节能型后台数据同步器:HarmonyOS Next的智能延迟任务管理
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、项目背景与需求分析后台数据同步......