我是靠谱客的博主 舒服高山,最近开发中收集的这篇文章主要介绍verilog异步复位jk触发器_[转载]Verilog里的同步复位与异步复位(转),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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里的同步复位与异步复位(转)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部