• 同步复位

优点:

  • 一般能够确保电路是百分之百同步的。
  • 确保复位只发生在有效时钟沿,可以作为过滤掉毛刺的手段。

缺点:

 

 

 

 

  • 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位。同时还要考虑如:时钟偏移、组合逻辑路径延时、复位延时等因素。 
  • 由于大多数的厂商目标库内的触发器都只有异步复位端口,采用同步复位的话,就会耗费较多的逻辑资源。
  • 异步复位

优点:

  • 异步复位信号识别方便,而且可以很方便的使用全局复位。
  • 由于大多数的厂商目标库内的触发器都有异步复位端口,可以节约逻辑资源。

缺点:

  • 复位信号容易受到毛刺的影响。
  • 复位结束时刻恰在亚稳态窗口内时,无法决定现在的复位状态是1还是0,会导致亚稳态。 

 

  • 异步复位同步释放

        所谓异步复位同步释放(Synchronized Asynchronous Reset),就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。

        异步复位同步释放的原理图和代码如下:

//Synchronized Asynchronous Reset
module sync_async_reset(clock,reset_n,data_a,data_b,out_a,out_b);

    input clock, reset_n;   
    input data_a, data_b;
    output out_a, out_b;

    reg rst_nr, rst_n;
	reg out_a, out_b;

    always @(posedge clock or negedge reset_n) begin
        if(!reset_n) begin
			rst_nr <= 1'b0;
            rst_n <= 1'b0;			//异步复位
        end
        else begin
			rst_nr <= 1'b1;
			rst_n <= rst_nr;		//同步释放
		end
    end
	
    //信号rst_n作为新的总的复位信号,后续可以以“异步”做复位使用
    always @(posedge clock or negedge rst_n) begin
        if(!rst_n) begin
            out_a <= 1'b0;
            out_b <= 1'b0;
        end
        else begin
			out_a <= data_a;
			out_b <= data_b;
        end
    end
	
endmodule  // sync_async_reset

 

异步复位同步释放(Synchronized Asynchronous Reset)

 

相关文章: