同步复位和异步复位有什么联系与区别,优缺点!

电子常识

2651人已加入

描述

  针对数字系统的设计,我们经常会遇到复位电路的设计,对初学者来说不知道同步复位与异步复位的区别与联系,今天我对这个问题简要的阐述下。

        同步复位与异步复位原理

  同步复位原理:同步复位只有在时钟沿到来时复位信号才起作用,则复位信号持续的时间应该超过一个时钟周期才能保证系统复位。

  异步复位原理:异步复位只要有复位信号系统马上复位,因此异步复位抗干扰能力差,有些噪声也能使系统复位,因此有时候显得不够稳定,要想设计一个好的复位最好使用异步复位同步释放。

  同步复位与异步复位的区别主要看是否有时钟信号参与。异步复位不需要时钟参与,一旦信号有效立即执行复位操作;同步信号需要时钟参与,只有有效的时钟信号出现,复位信号才有效。

  一、同步复位与异步复位的特点:

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

  always @ (posedge clk) begin

  if (!Rst_n)

  。。。

  end

  异步复位:它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。用Verilog描述如下:

  always @ (posedge clk or negedge Rst_n) begin

  if (!Rst_n)

  ​

  。。。

  end

  二、同步复位和异步复位的优缺点分析:

  1、总的来说,同步复位的优点大概有3条:

  a、有利于仿真器的仿真。

  b、可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。

  c、因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。他的缺点也有不少,主要有以下几条:

  a、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。

  b、由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。

  2、对于异步复位来说,他的优点也有三条,都是相对应的

  a、大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。

  b、设计相对简单。

  c、异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。

  缺点:

  a、在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。

  b、复位信号容易受到毛刺的影响。

  下面我用verilog来演示下同步复位与异步复位。同步复位的verilog程序如下:

  moduleD_FF

  (

  //Inputports

  SYSCLK,

  RST_B,

  A,

  //Outputports

  B

  );

  //=========================================

  //Inputandoutputdeclaration

  //=========================================

  inputSYSCLK;

  inputRST_B;

  input A;

  outputB;

  //=========================================

  //Wireandregdeclaration

  //=========================================

  wireSYSCLK;

  wireRST_B;

  wireA;

  regB;

  //=========================================

  //Logic

  //=========================================

  always@(posedgeSYSCLK)

  begin

  if(!RST_B)

  B《=1‘b0;

  else

  B《=A;

  end

  endmodule

  综合后的RTL级电路图如下:

 同步复位

  异步复位的verilog程序如下

  moduleD_FF

  (

  //Inputports

  SYSCLK

  ,RST_B,

  A,

  //Outputports

  B

  );

  //=========================================

  //Inputandoutputdeclaration

  //=========================================

  inputSYSCLK;

  input RST_B;

  inputA;

  outputB;

  //=========================================

  //Wireandregdeclaration

  //=========================================

  wireSYSCLK;

  wireRST_B;

  wireA;

  regB;

  //=========================================

  //Logic

  //=========================================

  always@(posedgeSYSCLKornegedgeRST_B)

  begin

  if(!RST_B)

  B《=1‘b0;

  else

  B《=A;

  end

  endmodule

  综合后的RTL级电路图如下:

  同步复位

  通过比较显然异步复位消耗的逻辑资源要少些,因此通常的设计中都采用异步复位的方式,需要进一步的学习的话,可以再研究下其它的资料。

  三、总结:

  所以说,一般都推荐使用异步复位,同步释放的方式,而且复位信号低电平有效。这样就可以两全其美了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分