[Xilinx]同步复位与异步复位

1.异步复位:是指复位信号和系统时钟信号的触发可以在任何时刻,二者相互独立。

  异步复位举例:

1 always@(posedge clk or negedge rst_n)
2      if(!rst_n)
3          b<=1'b0;
4      else
5          b<=a;

[Xilinx]同步复位与异步复位_第1张图片

 2.同步复位:和异步复位相比,没有用到寄存器的CLR端口,synthesis出来的实际电路只是把复位信号rst_n作为输入逻辑的使能信号,那么这样同步复位势必会增加FPGA内部资源的消耗。

  同步复位举例:

1 always@(posedge clk)
2     if(!rst_n)
3         b<=1'b0;
4     else
5         b<=a;

[Xilinx]同步复位与异步复位_第2张图片

3.异步复位存在亚稳态问题

[Xilinx]同步复位与异步复位_第3张图片

4.异步复位,同步释放

 1 input clk;
 2 input rst_n;
 3 output rst_nr2;
 4 reg rst_nr1,rst)nr2;
 5 
 6 //两级层叠复位产生,低电平服务
 7 always@(posedge clk or negedge rst_n)
 8     if(!rst_n)
 9         rst_nr1<=1'b0;
10     else
11         rst_nr1<=1'b1;
12 
13 always@(posedge clk or negedge rst_n)
14     if(!rst_n)
15         rst_nr2<=1'b0;
16     else
17         rst_nr2<=rst_nr1;

[Xilinx]同步复位与异步复位_第4张图片

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

你可能感兴趣的:([Xilinx]同步复位与异步复位)