时钟和复位

一、同步复位

  1. 代码
load_syn_ff (
input clk ,
input rst_n ,
input in,
input out ,
input load,
output out 
);

always @(posedge clk) begin
     if(!rst_n)
          out <= 1'd0 ;
     else if (load)
		  out <= in ;
end
  1. 硬件实现
    在这里插入图片描述
  2. 优缺点
    优点
    1.一般能确保电路是同步的;
    2.同步复位只发生在有效时钟沿,可以过滤到复位产生的毛刺。
    缺点
    1.复位的信号有效时长必须大于时钟周期,才能被时钟采集到
    2.大多数逻辑器件的目标库内的DFF只有异步复位端口,所以如果采用同步复位,那么就要在输入端插入组合逻辑,这样做消耗资源。

二、同步复位

  1. 代码
load_asyn_ff (
input clk ,
input rst_n ,
input in,
input out ,
input load,
output out 
);

always @(posedge clk or negedge rst_n) begin
     if(!rst_n)
          out <= 1'd0 ;
     else if (load)
		  out <= in ;
end
  1. 硬件实现
    在这里插入图片描述
  2. 优缺点
    优点
    1.大多数目标器件库的dff都有异步复位端口,因此采用异步复位 可以节省资源。
    缺点
    1.复位信号释放的时候,容易产生毛刺,导致不满足建立时间或保持时间,出现亚稳态
    2.易出现毛刺。

三、 异步复位同步释放

  1. 代码
always @(posedge clk or negedge rst_async_n)  begin
	if(!rst_async_n)   begin
		rst_n0 <= 1'b0;
		rst_n1 <= 1'b0;
     end
     else   begin                      //同步釋放
     	rst_n0 <= rst_n    ;
     	rst_n1 <= rst_n0 ;
     end
end
assign rst_sync_n = rst_n1;
  1. 波形
    在这里插入图片描述
  2. 优点
    降低了异步复位信号释放导致的亚稳态的可能性;对比同步信号上,也能够识别到同步复位检测不到的复位信号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值