天天看點

ASIC中的同步複位和異步複位

晶片設計中需要複位操作使電路進入穩定狀态。複位操作分為同步複位和異步複位。

同步複位

同步複位指在時鐘上升沿時複位信号才起作用,複位時需要時鐘。

always @(posedge clk) begin
    if(!rst_n) 
		dout <= 0;
	else 
		dout <= din;
end
           

如上,當rst_n為0時,隻有clk上升沿時,dout才為0,dout被同步複位。

同步複位優點:

1.電路都是同步複位;

2.可以過濾毛刺。

同步複位缺點:

1.複位信号的有效時間必須大于時鐘周期,才能完成複位。

2.由于廠商目标庫中隻有異步複位端口,采用同步複位的話,會增加邏輯資源。

3.後端處理時需要區分複位信号和條件清零信号。

異步複位

異步複位不需要時鐘沿,隻要複位信号有效,就可以進行複位。

always @(posedge clk or negedge rst_n) begin
	if(!rst_n) 
		dout <= 0;
	else 
		dout <= din;
end
           

 如上RTL,rst_n信号放在敏感清單中。

異步複位優點:

1.異步複位友善識别,而且可以很友善實作全局複位。

2.廠商目标庫内的觸發器都有異步複位信号端口,可以節省邏輯資源。

異步複位缺點:

1.容易受到毛刺影響。

2.如果異步信号的撤離時刻恰好在亞穩态視窗内,會導緻亞穩态。

異步複位同步釋放

使用異步複位同步釋放可以消除異步複位毛刺和亞穩态問題。實作的方法為,把是實際使用的異步複位信号用目标時鐘做異步複位操作,然後用新的生成的複位信号做資料的複位信号。

reg    reset_n_1d;
reg    reset_n_2d;
reg    reset_n_3d;
wire   rst_n;

always @(posedge clk or negedge reset_n) begin
	if(!reset_n) 
		reset_n_1d <= 1'b0;
		reset_n_2d <= 1'b0;
		reset_n_3d <= 1'b0;
	else 
		reset_n_1d <= 1'b1;
        reset_n_2d <= reset_n_1d;
        reset_n_3d <= reset_n_2d;
end

assign rst_n = reset_n_3d;

always @(posedge clk or negedge rst_n) begin
	if(!rst_n) 
		dout <= 0;
	else 
		dout <= din;
end