概述
1.同步复位(Synchronous Reset)
来看一个简单的同步复位的D触发器,Verilog代码如下:
module d_ff (
clk,
rst_n,
datain,
dataout
);
input clk;
input rst_n;
input datain;
ouput dataout;
reg dataout;
always @
(posedge clk)
begin
if (!rst_n)
dataout <= 1'b0;
else
dataout <= datain;
end
endmodule
综合后的RTL图表如下:
Altera的MAXII系列的CPLD中,register没有同步复位资源,所以同步复位信号需要通过额外的逻辑电路实现,
同步复位的优点:
1). 抗干扰性高,可以剔除复位信号中周期短于时钟周期的毛刺;
2). 有利于静态时序分析工具的分析;
3). 有利于基于周期的仿真工具的仿真。
同步复位缺点:
1). 占用更多的逻辑资源;
2).
对复位信号的脉冲宽度有要求,必须大于指定的时钟周期,由于线路上的延迟,可能需要多个时钟周期的复位脉冲宽度,且很难保证复位信号到达各个寄存器的时序;
3). 同步复位依赖于时钟,如果电路中的时钟信号出现问题,无法完成复位。
2. 异步复位(Asynchronous Reset)
来看一个简单的异步复位的D触发器,Verilog代码如下:
module prac (
clk,
rst_n,
datain,
dataout
);
input clk;
input rst_n;
input datain;
output dataout;
reg dataout;
always @
(posedge clk or negedge rst_n)
begin
if (!rst_n)
dataout <= 1'b0;
else
dataout <= datain;
end
endmodule
综合后的RTL图表如下:
异步复位的优点:
1). 无需额外的逻辑资源,实现简单,而且CPLD有针对复位信号的全局不限资源,可以保证复位管脚到各个寄存器的clock
skew最小(注意不是到各个寄存器的延迟最小);
2). 复位信号不依赖于时钟。
同步复位缺点:
1). 复位信号容易受到外界的干扰;
2). 复位信号释放的随机性,可能导致时序违规,使电路处于亚稳态,如下图。
3. 异步复位同步释放(Asynchronous Reset Synchronous Release)
这种复位方式在文献中还有一种称谓:Synchronized Asynchronous
Reset,这种称谓应该在国外的技术人员中比较流行,与Altera的工程师交流过程中,他们一直使用Synchronized
Asynchronous Reset这种称谓(当然也可能是个人的习惯)。
来看一个Synchronized Asynchronous Reset例子,Verilog代码如下:
module prac (
clk,
reset_n,
dataa,
datab,
outa,
outb
);
input clk;
input reset_n;
input dataa;
input datab;
output outa;
output outb;
reg reg1;
reg reg2;
reg reg3;
reg reg4;
assign outa =
reg1;
assign outb =
reg2;
assign rst_n =
reg4;
always @
(posedge clk or negedge reset_n)
begin
if (!reset_n)
begin
reg3 <= 1'b0;
最后
以上就是舒服高山为你收集整理的verilog异步复位jk触发器_[转载]Verilog里的同步复位与异步复位(转)的全部内容,希望文章能够帮你解决verilog异步复位jk触发器_[转载]Verilog里的同步复位与异步复位(转)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复