说明
写计数器代码的时候,实现同步高电平有效复位,复位值为0,发现对于复位模棱两可,由此记录下来!
区别
异步复位
复位信号不受时钟影响,只要复位信号有效,电路就会复位。 例:
always@(posedge Clk or negedge Rst_n)begin
if (!Rst_n) //复位信号低电平有效
xxx;
else (xx) begin
xxx;
end
end
always
块中,敏感量为两个:Clk , Rst_n
。
当复位信号下降沿出现时,不论Clk在什么状态,都执行always块,即复位。
注意: 此处与Rst_n
是上升沿还是下降沿有效无关,不是时钟与复位的有效沿不同就是异步,与此没有关系。
同步复位
复位信号受时钟影响,复位是否有效,前提看时钟信号是否有效。
例:
always@(posedge Clk) begin
if (!Rst_n)
xxx;
else
xxx;
end
此always
块中,敏感量只有一个,即Clk
的上升沿。只有在Clk
的上升沿才能执行always
块,否则不执行。若想要复位信号有效,也只能等到Clk
上升沿才能执行always
块,才能使电路复位!
实例
从0到15计数的4位二进制计数器,周期为16。同步高电平有效复位,复位时值为0。
module top_module (
input Clk,
input reset,
output [3:0] q);
always@(posedge Clk)//同步高电平有效复位
if(reset==1'b1)
q <= 4'b0;
else
q <= q + 1'b1;
endmodule
异步高电平有效复位
module top_module (
input Clk,
input reset,
output [3:0] q);
always@(posedge clk or posedge reset)//敏感信号两个
if(reset==1'b1)
q <= 4'b0;
else
q <= q + 1'b1;
endmodule
特别说明
也可以这样理解:同步电路,异步电路区别
同步电路:在SR
触发器中,S
,R
信号与时钟Clk相配合,
S,R与Clk是同步信号。
异步电路:;S'
,R'
与时钟Clk
配合无关,
S'
,R'
与Clk
是异步信号。
如图