Verilog里的同步复位与异步复位(转)

标签:
杂谈 |
分类: school~ |
1.同步复位(Synchronous Reset)
来看一个简单的同步复位的D触发器,Verilog代码如下:
module d_ff (
endmodule
综合后的RTL图表如下:
http://byfiles.storage.msn.com/y1pZnzkV7bhn4ta7qmakDQbNdjbHHV8v-L9SxbDaTq4ExbKNlet9-UTFnmmnOd4bA7tD_IUKPeXd6VozQfl-dt4Ig?PARTNER=WRITER
Altera的MAXII系列的CPLD中,register没有同步复位资源,所以同步复位信号需要通过额外的逻辑电路实现,
同步复位的优点:
1). 抗干扰性高,可以剔除复位信号中周期短于时钟周期的毛刺;
2). 有利于静态时序分析工具的分析;
3). 有利于基于周期的仿真工具的仿真。
同步复位缺点:
1). 占用更多的逻辑资源;
2). 对复位信号的脉冲宽度有要求,必须大于指定的时钟周期,由于线路上的延迟,可能需要多个时钟周期的复位脉冲宽度,且很难保证复位信号到达各个寄存器的时序;
3). 同步复位依赖于时钟,如果电路中的时钟信号出现问题,无法完成复位。
2. 异步复位(Asynchronous Reset)
来看一个简单的异步复位的D触发器,Verilog代码如下:
module prac (
endmodule
综合后的RTL图表如下:
http://byfiles.storage.msn.com/y1p9s9Pgoj5ONdv4qyKOhoHWS0ILsZOzbOvVB2wkDpoMnsri1Nsssz4JZeeu5pGp1DpsK2_p7-_IGfxP7v3D5L3ZA?PARTNER=WRITER
异步复位的优点:
1). 无需额外的逻辑资源,实现简单,而且CPLD有针对复位信号的全局不限资源,可以保证复位管脚到各个寄存器的clock skew最小(注意不是到各个寄存器的延迟最小);
2). 复位信号不依赖于时钟。
同步复位缺点:
1). 复位信号容易受到外界的干扰;
2). 复位信号释放的随机性,可能导致时序违规,使电路处于亚稳态,如下图。
http://byfiles.storage.msn.com/y1poHgBsXQ4HfSRtGPkRNSxPDXcVHAg10R4M7UgEu7EFTwtsL4UtmjB1xjUc4htdPM2ApUAbKSx6acPo-vxP3VHbg?PARTNER=WRITER
3. 异步复位同步释放(Asynchronous Reset Synchronous Release)
这种复位方式在文献中还有一种称谓:Synchronized Asynchronous Reset,这种称谓应该在国外的技术人员中比较流行,与Altera的工程师交流过程中,他们一直使用Synchronized Asynchronous Reset这种称谓(当然也可能是个人的习惯)。
来看一个Synchronized Asynchronous Reset例子,Verilog代码如下:
module prac (