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

 

 

参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

re_call

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值