关于异步复位同步释放
一 概念:
异步置位和复位与时钟无关,可以解释为不需要等到时钟沿到来,也能进行置位和复位。
事件控制语法:
@(<沿关键词 时钟信号> or<沿关键词 复位信号> or <沿关键词 置位信号> )
同步置位和复位是指只有在时钟的有效跳变沿时刻置位和复位。
事件控制语法:
1.正沿触发:
@(posedge clk)
2.负沿触发:
@(negedge clk)
二.
异步:
always @(posedge clk or negedge rst_n )
if(!rst_n)
这种方式占用的逻辑资源较小,但是容易产生竞争
同步:always @(posege clk or posedge rst_n)
If(!rst_n)
这种方式占用的逻辑资源较多,但是不容易产生竞争
三:采用波形图进行原理解释
如图第一黄色圆圈:与时钟无关;标记为异步复位效果,只要有复位信号就进行复位。
第二个黄色圆圈:同步释放的效果,当复位按键释放之后,复位信号不是立即消失,而是要等到时钟上升沿到来时才进行复位。
以上为异步复位同步释放,好处:防止复位信号撤除时产生亚稳态事件。
module Sys_Rst(
input clk,
input rst,
output sys_rst
);
reg rst_r0;
reg rst_r1;
always @(posedge clk or posedge rst)begin //异步复位与时钟无关,则无需等时钟沿的到来
if(rst)begin //复位低电平有效
rst_r0 <= 1'b1;
rst_r1 <= 1'b1;
end
else begin //rst=0时,不复位:释放
rst_r0 <= 1'b0; //与时钟同步的逻辑,为了实现同步释放
rst_r1 <= rst_r0;
end
end
assign sys_rst = rst_r1;
endmodule