数字电路之复位

1.复位概述

复位最基本的作用是使得电路进入一个我们预知的状态。主要使用有:

  • 电路上电复位
    电路在上电前处于一个未知的不确定的状态,所以我们需要进行一次复位,使得进入我们可以确定的状态后进行后续的工作;
  • 电路错误状态复位
    电路进入错误状态后(如状态机跑飞了,系统供电炸了等),我们需要电路可以回到可以控制的状态,这时候我们就会进复位;

复位信号在数字电路里面的重要性仅次于时钟,对电路的复位,就是针对于寄存器的复位,毕竟电路中的值都是由寄存器提供。大部分的寄存器需要复位信号,但也有少数寄存器没有复位信号。

2.同步复位与异步复位

1.同步复位

同步复位指的时,复位肯定发生在时钟的上升沿,也就是复位是与时钟同步的,如下代码:

module DFFsync(q,ck,r,d);
	input ck,d,rst;
	output q;
	reg q;
	always @(posedge ck)begin	//这里没有复位的下降沿触发
		if(~r) q <= 0;
		else q <= d;
	end
endmodule

2.异步复位

异步复位:只要复位信号进行相应的跳变则进行复位,即触发信号加入时钟的相应跳变,复位不在需要时钟边沿进行触发;
如下异步复位代码:

module DFFsync(q,ck,r,d);
	input ck,d,rst;
	output q;
	reg q;
	always @(posedge ck or negedge r)begin	//这里加入了or选项
		if(~r) q <= 0;
		else q <= d;
	end
endmodule

3.同步复位优缺点

优点如下:

  • 抗干扰能力强,可以剔除复位信号毛刺;
  • 有利于静态时序分析工具;
  • 有利于基于周期的仿真工具的仿真;

缺点如下:

  • 占用更多的逻辑资源;
  • 对复位信号脉宽有要求,太窄的脉宽识别不到,必须大于时钟周期;
  • 依赖于时钟,若时钟出问题,则也复位不了;

4.异步复位优缺点

优点如下:

  • 无需额外的逻辑资源,实现简单;
  • 有特定的布线资源,保证复位管脚到寄存器的时钟偏差最小;
  • 复位不依赖时钟,时钟出问题了还是可以复位;

缺点如下:

  • 复位信号 敏感,若出现毛刺,则会误复位;
  • 复位信号的释放随机,可能导致时序违规(复位释放处于时钟沿附近,导致建立时间/保持时间不满足),使得电路进入亚稳态

5.异步复位、同步释放

异步复位、同步释放整个的思路是,但复位信号有效是是立刻生效的,但复位信号的撤销需要遵从时钟沿;
在这里插入图片描述
如上图(参考别处的)我们进行一些分析;

  • rst_async_n 生效 即(rst_async_n==1 -> rst_async_n==0)
    此时1框内的寄存器是马上更新的,所以输出的rst_sync_n也是马上可以体现出来的,实现对2框内的电路进行异步复位;
  • rst_async_n 无效 即(rst_async_n==0 -> rst_async_n==1
    此时由于电路设计时,图上寄存器只对复位信号的下降沿敏感,所以当失效模式下,并不会马上更新,所以就算你的复位信号在1框中第一个寄存器的时钟沿进行变化,但是由于中间加了一个寄存器不会立马传到框2中去(这个寄存器就是拿来同步的);实现了同步释放;

此上就实现了异步复位,同步释放。简单代码实现如下;

...
always @(posedge clk or negedge rstn_in)begin
	if(~rstn_in)begin					//实现异步复位
		rstn_in_d1 <= 1'b0;
		rstn_in_d2<= 1'b0;
	end
	else begin						//实现同步释放
		rstn_in_d1 <= rstn_in;
		rstn_in_d2 <= rstn_in_d1;	
	end
end

assign rstn_out = rstn_in_d2;
...

异步复位、同步释放一般使用在不同时钟域复位信号传递,需要将复位信号同步到另一时钟域,使得复位在释放时确保满足寄存器时序要求;

6.关于异步复位、同步释放的思考

  1. 如果没有前面两级触发器的处理,异步信号直接驱动system模块,会出现什么情况?
    答:可能出现时序违规,即复位信号的释放在时钟的跳变沿附近,导致建立时间/保持时间得不到满足;
  2. 复位信号存在亚稳态,有危险么?
    答:任何信号存在亚稳态都是有危险的,我们只能减小这个危险出现的概率,所以我们用了两级的触发器进行同步,就是为了减小这个亚稳态传播下去的概率,两级已经足够了,当然要三级也可以,但没必要,可以这么理解:一级不够,二级刚好,三级浪费
  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汶.z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值