FPGA异步复位同步释放的详细解释

来源:互联网 发布:ios 阿里百川的云推送 编辑:程序博客网 时间:2024/05/21 12:02

假设rst_async_n撤除时发生在clk上升沿,如果如下电路则可能发生亚稳态事件。



如图第一个方框内是异步复位和同步释放电路。有两个D触发器构成。第一级D触发器的输入时VCC,第二级触发器输出是可以异步复位,同步释放后的复位信号。

电路目的:方式复位信号撤除时产生亚稳态事件。

所谓异步复位和同步释放,是指复位信号是异步有效的,即复位的发生与clk无关。后半句“同步释放”是指复位信号的撤除(释放)则与clk相关,即同步的。

下面说明一下如何实现异步复位和同步释放的。

异步复位:显而易见,rst_async_n异步复位后,rst_sync_n将拉低,即实现异步复位。


同步释放:这个是关键,看如何实现同步释放,即当复位信号rst_async_n撤除时,由于双缓冲电路的作用,rst_sync_n复位信号不会随着rst_async_n的撤除而撤除。

假设rst_async_n撤除时发生在clk上升沿,如果不加此电路则可能发生亚稳态事件。但是加上此电路以后,假设第一级D触发器clk上升沿时rst_async_n正好撤除,则D触发器1输出高电平“1”,此时第二级触发器也会更新输出,但是输出值为前一级触发器次clk来之前时的Q1输出状态。显然Q1之前为低电平,顾第二级触发器输出保持复位低电平,直到下一个clk来之后,才随着变为高电平。即同步释放。

[cpp] view plaincopy
  1. module ex1 (   
  2. output rst_sync_n,   
  3. input clk, rst_async_n);  
  4.   
  5.   
  6. reg rst_s1, rst_s2;  
  7. always @ (posedge clk, posedge rst_async_n)  
  8. if (rst_async_n) begin   
  9. rst_s1 <= 1'b0;  
  10. rst_s2 <= 1'b0;  
  11. end  
  12. else begin  
  13. rst_s1 <= 1'b1;  
  14. rst_s2 <= rst_s1;  
  15. end  
  16.   
  17. assign rst_sync_n = rst_s2;   
  18. endmodule  
对于实际的实现TECH MAP视图



版权声明:转载请注明出处:http://blog.csdn.net/lg2lh

0 0
原创粉丝点击