题解 | #异步复位同步释放#

异步复位同步释放

https://www.nowcoder.com/practice/9b892b6f75954267b4574b042f8a8d6a

`timescale 1ns/1ns

module ali16(
input clk,
input rst_n,
input d,
output reg dout
 );

//*************code***********//
//异步复位:复位信号不受系统时钟的控制,可以在任何时候使电路的状态复位
//异步复位信号有效时,第一级触发器会立即复位
reg rst0,rst1;
always@(posedge clk or negedge rst_n)
  if(!rst_n) begin
     rst0 <= 0;
     rst1 <= 0;
  end
  else begin
    rst0 <= 1;
    rst1 <= rst0;
  end
  //同步释放:复位信号撤销(有效变无效)时,与系统时钟同步进行。避免复位信号的撤销导致电路出现亚稳态。
  //异步复位信号撤销时,第一级触发器的输出会在时钟的上升沿(假设是上升沿触发的系统)将这个变化同步到第二级触发器。第二级触发器的输出才是最终用于电路复位后的正常工作状态。
wire rst2=rst1;
  always@(posedge clk or negedge rst2)
    if(!rst2)
      dout <= 0;
    else 
      dout <= d;
      

//*************code***********//
endmodule

全部评论

相关推荐

A_SOUL_Off...:疑似加班加出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务