12、 三种复位方式

1.同步复位

(1)概念:同步复位是指,复位信号只有在时钟上升沿到来时才有效。

(2)Verilog描述:由同步复位的概念,即可知道其Verilog描述如下

always@(posedge clk)begin
    if(!rst_n)
        ...
    else
        ...
end

(3)同步复位优缺点 

        优点:

        ① 有利于仿真器的仿真;

        ② 可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综

            合出来的fmax一般较高。

        ③ 因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。

        缺点:

        ① 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时

            还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。

        ② 由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步

            复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的

            逻辑资源。

2.异步复位

(1)概念:异步复位是指,只要复位信号有效即进行复位操作,而不管时钟上升沿是否到来。

(2)Verilog描述:由异步复位的概念,即可知道其Verilog描述如下

always@(posedge clk or negedge rst_n)begin
    if(!rst_n)
        ...
    else
        ...
end

(3)异步复位优缺点 

        优点:

        ① 大多数目标器件库的DFF都有异步复位端口,因此采用异步复位可以节省资源。

        ② 设计相对简单。

        ③ 异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。

        缺点:

        ① 在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在

             时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。

        ② 复位信号容易受到毛刺的影响。

3.异步复位,同步释放

(1)概念:所谓异步复位,同步释放就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。

(2)原理分析:

异步复位缺点1:复位信号释放的时候容易出现亚稳态,导致输出异常。

异步复位缺点2复位信号容易受到毛刺的影响。

异步复位电路中,如果rst_n有一短暂有效期(毛刺),这样可能会导致复位不完全,系统出现混乱。

解决思路:

针对毛刺问题,给rst_n_s再添加一级时钟延迟,即可保证rst_n_s的有效时间 > 时钟周期,因而能够避免毛刺带来的复位不完全这一问题。

(3)Verilog描述

module reset
(
    input  clk,
    input  rst_n,
    output rst_syn_n
);
    reg reg1;
    reg reg2;
    always@(posedge clk or negedge rst_n)begin
        if(!rst_n)begin
            reg1 <= 1'b0;
            reg2 <= 1'b0;
        end
        else begin
            reg1 <= 1'b1;
            reg2 <= reg1;            
        end
    end
    assign rst_syn_n = reg2;
endmodule

`timescale 1ns/1ns
module reset
(
	input wire clk  ,
	input wire rst_n,	//系统复位信号
	input wire d    ,
	output reg dout
);
	reg  rst1,rst2;
	wire rst;
	always@(posedge clk or negedge rst_n)begin
		if(!rst_n)begin
			rst1 <= 0;
			rst2 <= 0;
		end
		else begin
			rst1 <= 1;
			rst2 <= rst1;
		end
	end
	
	assign rst = rst2;
	
	always@(posedge clk or negedge rst)begin
		if(!rst)
			dout <= 0;
		else
			dout <= d;
	end
	
endmodule

复位是异步的,但是释放确实同步的;用两级寄存器,是消除复位释放中可能存在的亚稳态。

异步复位,同步释放的好处是:

(1)不要求复位信号必须大于一个时钟周期;

(2)因为释放过程和时钟同步,所以避免了亚稳态。

兼具同步复位和异步复位的优点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值