
在用VHDL描述复位信号时,在系统时钟有效边沿到达之后才判断同步复位是否有效;而对异步复位的判断则与系统时钟无关。
同步复位:
IF clock'event AND clock='1' THEN
IF reset='1' THEN
-- 复位系统
ELSE
-- 正常运作
END IF
END IF
异步复位:
IF reset='1' THEN
-- 复位系统
ELSIF clock'event AND clock='1' THEN
-- 正常运作
END IF
您好,很高兴能帮助您一、同步复位与异步复位特点:
同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。
异步复位是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。
异步复位的优点有三条:
a、大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
b、设计相对简单。
c、异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。
异步复位的缺点:
a、在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
b、复位信号容易受到毛刺的影响。
所以,一般都推荐使用异步复位同步释放的方式,而且复位信号低电平有效。这样就可以两全其美了
你的采纳是我前进的动力,
记得好评和采纳,答题不易,互相帮助,
module test_cnt5(clk,reset,car,out)input clk,reset//reset为异步复位信号
output car,out//car为进位信号
reg[2:0]cnt//cnt为计数器
reg car
wire[2:0]out
assign out=cnt
always@(posedge clk or negedge reset)
begin
if(!reset)begin
cnt<=3'b000
car<=0
end
else begin
if(cnt==3'b100)begin
car<=3'b001
cnt<=3'b000
end
else begin
cnt<=cnt+3'b001
car<=3'b000
end
end
end
endmodule
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)