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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值