首页 > 其他分享 >(6)同步复位异步释放电路

(6)同步复位异步释放电路

时间:2024-06-11 12:44:06浏览次数:21  
标签:异步 复位 电路 信号 rst reg 时钟

一、复位电路

  时序电路为双稳态电路,因此必须要有复位信号,而组合电路没有存储功能,因此不需要复位信号

  电路中的复位有两种形式:

  1.同步复位

  敏感列表中只有时钟信号没有复位信号

  2.异步复位

  敏感列表中不仅有时钟而且有复位信号

  为避免在释放时产生亚稳态问题,一般采用同步复位,异步释放的电路

二、同步复位,异步释放电路

  verilog代码如下:

module Rst_gen (
    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

  电路图如下:

  异步复位:复位信号不受时钟信号影响,在任意时刻只要低电平就可以复位。在图中第一个方框中,当rst_async_n有效时,第一个D触发器输出的为低电平,第二个D触发器输出的rst_sync_n也是低电平,第二个方框中的异步复位端口有效,输出被复位

  同步释放:让复位信号取消时必须和时钟同步,即和时钟同沿。在上图中假如rst_async_n信号撤销时发生在时钟上升沿,那么不加第一个框中的电路可能发生亚稳态事件,但加上此电路后,假如rst_async_n在时钟上升沿撤销,那么第一个D触发器的输出可能为高电平,可能为亚稳态,也可能为低电平,但此时第二级D触发器不会立刻更新输出的值,保持在之前第一级的输出(即低电平),在下一个时钟上升沿到来时,才随之变为高电平(因为此时第一级的输出已经恢复)

  Q:为什么图中第一级的输入是连接的电源而不是rst_async_n?

  A:如果连接的是rst_async_n,则综合出的电路图如下:

  如果链接的是电源,则电路图如下:

  显然第二种方法好,因为复位信号本身是高扇出信号,采用第二种设计可以减少复位信号的扇出数,同时直接连接电源也可以节省资源,保证电路性能良好

  注意:即使复位信号的脉冲小于一个时钟周期,且在一个时钟周期内完成了异步复位,这种电路还是能正确捕捉复位信号,并且输出一个比时钟周期长的复位信号(图中考虑了触发器的延时)

  如果第一级触发器的复位时钟偏移比第二级大,并且在时钟上升沿附近才释放复位信号(这里感觉图画的有问题),那么在T1时刻第一级的输出可能出现亚稳态、高电平或者低电平,但此时第二级的输出已经复位,为第一级输出复位时的信号(低电平),在T2时刻由于前一级寄存器输出不确定,因此第二级的输出rst_o可能保持有效,也可能撤离,如果T2时刻rst_o还是为复位电平,那么在T3时刻电路输出的复位电平就一定会撤离

  因此,这也就意味着该电路输出的复位信号在撤离时可能会有一个时钟周期的偏差,可能造成时序混乱

  解决:首先用两级寄存器对复位信号进行同步,得到根复位信号后再用复位同步电路进行分发由于同步后的根复位信号不会产生亚稳态问题,因此在分发根同步复位信号后再次分发两级寄存器,这样分发后的子复位网络是相互独立的,且扇出输出比跟复位网络要小很多,

  扩展:多时钟域下的异步复位同步释放电路

  1.非协调的复位撤销

  即使用每个时钟搭建自己的复位同步器

  代码如下:

module CLOCK_RESET(
       input rst_n,
     input aclk,
     input bclk,
     input cclk,
     output reg  arst_n,
     output reg  brst_n,
     output reg  crst_n
       );


reg arst_n0,arst_n1;
reg brst_n0,brst_n1;
reg crst_n0,crst_n1;


always @(posedge aclk or negedge rst_n) 
  if(rst_n==0) begin
    arst_n0<=1'b1;
   arst_n1<=1'b0;
   arst_n<=1'b0;
  end
  else begin
    arst_n<=arst_n1;
    arst_n1<=arst_n0;
  end  
  
always @(posedge bclk or negedge rst_n) 
  if(rst_n==0) begin
    brst_n0<=1'b1;
   brst_n1<=1'b0;
   brst_n<=1'b0;
  end
  else begin
    brst_n<=brst_n1;
    brst_n1<=brst_n0;
  end  
     
    
always @(posedge cclk or negedge rst_n) 
  if(rst_n==0) begin
    crst_n0<=1'b1;
   crst_n1<=1'b0;
   crst_n<=1'b0;
  end
  else begin
    crst_n<=crst_n1;
    crst_n1<=crst_n0;
  end  
   
endmodule

  2.顺序协调的复位撤销

  当多个时钟域对复位释放有顺序要求时,将复位同步器级联起来就可以构成多个时钟域按顺序进行同步释放

  代码如下:

module CLOCK_RESET(
       input rst_n,
     input aclk,
     input bclk,
     input cclk,
     output reg  arst_n,
     output reg  brst_n,
     output reg  crst_n
       );


reg arst_n0,arst_n1;
reg brst_n0,brst_n1;
reg crst_n0,crst_n1;


always @(posedge aclk or negedge rst_n) 
  if(rst_n==0) begin
    arst_n0<=1'b1;
   arst_n1<=1'b0;
   arst_n<=1'b0;
  end
  else begin
    arst_n<=arst_n1;
    arst_n1<=arst_n0;
  end  
  
always @(posedge bclk or negedge rst_n) 
  if(rst_n==0) begin
   brst_n1<=1'b0;
   brst_n<=1'b0;
  end
  else begin
    brst_n<=brst_n1;
    brst_n1<=arst_n;
  end  
     
    
always @(posedge cclk or negedge rst_n) 
  if(rst_n==0) begin
   crst_n1<=1'b0;
   crst_n<=1'b0;
  end
  else begin
    crst_n<=crst_n1;
    crst_n1<=brst_n;
  end  
     
     
endmodule

Reference:

深入理解复位---同步复位,异步复位,异步复位同步释放(含多时钟域)_画出支持异步复位dff的电路图-CSDN博客

数字电路复位信号设计(异步复位、同步释放)笔记详解_异步复位同步释放的高有效原理-CSDN博客

标签:异步,复位,电路,信号,rst,reg,时钟
From: https://www.cnblogs.com/liwilling/p/18241851

相关文章

  • 硬件开发笔记(十七):RK3568底板电路串口、485、usb原理图详解
    前言  原理图有一些常用电路。  本篇就将集中常用电路分析完,如uart口,涉及usart串口、rs485、usb口。 串口  串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口(SerialInterface)是指数据一位一位地顺序传送。......
  • 论述MySQL的同异步复制
    MySQL的复制功能是数据库系统中一个重要的特性,它可以实现数据的冗余备份和分布式读写,提高系统的可靠性和性能。MySQL的复制主要分为异步复制、半同步复制和同步复制,这三种复制方式在机制和使用场景上有显著的不同。异步复制特点主从模式:在异步复制中,主库(Master)将数据的变更......
  • 计算机简史第四章 电子时代之集成电路与摩尔定律
    大规模集成电路的到来集成电路:芯片时代的到来1952年,实用的晶体管问世不久,电子行业还盛行电子管之时,一家为石油行业提供地震勘探服务的公司以极其长远的眼光向贝尔实验室买下了专利许可,并斥资数百万美元押注晶体管市场,而它当时的年利润仅有90万,这无疑是一场没有后路的跨界豪赌......
  • 按键中断驱动程序-异步通知
    在前面的休眠-唤醒、POLL机制中,都是通过休眠等待某一个事件的发生,而程序一旦陷入休眠,就没法再执行其它任务,相当于整个程序卡死了。在很多的场景中,如果发生了某一个事件我们就去处理它,没有发生事件那就可以做其它的事情。这种正常执行程序,当中断发生时才去执行的方式就叫做异步通知......
  • 2024-6-10 石群电路-28
    2024-6-10,星期一,14:15,天气:晴,心情:晴。今天又是阳光明媚的一天,自从减肥成功and道家养生后,越来越感觉夏热冬冷,夏长冬藏这一自然规律了,虽然外面艳阳高照的,但是确实不吹空调,不吃冰棍,自然而然出出汗,洗洗澡,吃吃西瓜真的很舒服,空调的冯确实不是什么好风,希望大家都身体健康,快快乐乐的,端......
  • 搭建RocketMQ主从异步集群
    搭建RocketMQ主从异步集群1、RocketMQ集群模式  为了追求更好的性能,RocketMQ的最佳实践方式都是在集群模式下完成的。RocketMQ官方提供了三种集群搭建方式:2主2从异步通信方式:使用异步方式进行主从之间的数据复制。吞吐量大,但可能会丢消息。使用conf/2m-2s-async文件夹......
  • Multisim555定时器电路设计仿真
       最近在完成数电课设,需要用到555定时器产生一个秒脉冲,虽然网上有很多关于555的资料,但是按照他们的进行仿真波形一直不对。自己设计的占空比有不太准确,但是其实Multisim有提供555定时器电路设计向导,填好参数会自动生成电路。下面是仿真步骤:电路的R1和R2有参数要求,需要......
  • ♻️同步和异步;并行和并发;阻塞和非阻塞
    概念辨析同步(Synchronous)和异步(Asynchronous)同步和异步关注的是任务完成的顺序和时间:同步操作意味着在执行某个任务时,必须等待这个任务完成后才能继续执行下一个任务。这通常会导致执行线程在等待任务完成时处于阻塞状态。异步操作允许执行线程在发起一个任务后,不需要等待......
  • 2024-6-9 石群电路-27
    2024-6-9,星期日,12:49,天气:晴,心情:晴。Hello,大家,我回来啦,昨天断更了一天,是为什么捏,是因为,我通过毕业答辩啦!!!!!!果然,虽然是小小硕士,但是听到那句,“经答辩委员会决议,xx同学通过毕业论文答辩,建议授予工学硕士学位”,也是很爽的,至于博士大佬听到这句话什么感想,小子就先不想啦,哈哈哈哈哈,加油......
  • 计算机简史第三章 机电时代之数字电路
    电路的发明,使得计算机的速度大幅提高布尔代数、二进制与电路的关系20世纪,随着继电器电路的发展,许多科学家开始将二进制、布尔代数和电路联系到一起,最终,由美国一位名为克劳德·香农(ClaudeShannon)的数学家做出了完整阐释。1938年,就读于麻省理工学院的香农发表了他那篇著名的硕......