大家好,欢迎来到IT知识分享网。
数字电路设计——复位信号(异步复位、同步释放)
概述
在仿真中复位信号的基本作用是将电路强制到一个确定的状态 。在实际设计中是否需要复位,取决于芯片的应用和功能,如果一个芯片不需要一个确定的起始状态,则没有必要使用复位信号;相反,如果芯片的正常工作必须从一个确定状态开始,那么复位信号就是必须的。
复位信号最基本的目的是使硬件电路能够进入一个稳定操作的确定状态
总的来说,认为不论对于系统来说是否需要,一个芯片的所有触发器都应该是可以复位的。(在一些高速应用中,除去一些触发器的复位可以提高设计的性能,例如应用在流水线的寄存器)。
在选择复位实现的策略之前,需要思考一些问题。比如
- 使用同步复位还是异步复位;
- 是否每个触发器都要收到复位信号;
- 复位树的要求;
- 如何验证复位信号的时序;
- 怎样测试复位功能;
- 多时钟域的设计中实现如何复位等等。
本文将主要介绍同步复位、异步复位,复位树。以及异步复位同步释放的处理方法
同步复位
定义:复位信号发生变化时,并不立即生效,需要等到时钟有效沿采样到变化地的复位信号后才对寄存器进行复位 。
优点
- 同步复位通常确保电路是100%同步的,有利于时序分析,综合出来的最高频率一般较高;
- 同步复位会综合成更小的触发器,特别在该复位信号被触发器的输入逻辑门控时;
- 同步复位确保复位只发生在有效时钟沿。时钟可以作为过滤掉复位毛刺的手段;
- 在一些设计中,复位必须由一组内部条件产生。推荐在这样的设计中使用同步复位信号,这样可以将时钟之间的复位毛刺过滤掉。
总结:保证电路同步,利于时序分析;可以滤除高于时钟频率的毛刺
缺点:
- 大多数逻辑器件库中的DFF只有异步复位端口,所以使用同步复位,综合器会在寄存器的数据输入端插入组合逻辑,一是会耗费组合逻辑资源,二是综合器无法分辨复位信号和其他数据信号,需要判断综合出的复位信号是否满足设计需求。详见例1。
- 复位信号的有效时间必须大于时钟周期,才能保证被可靠地识别,完成复位。所以需要考虑到以下因素:clk skew、组合逻辑路径延时、复位延时等因素,详见例二。有时需要脉冲展宽器,以保证复位信号能出现再时钟有效沿处。
- 补充(含门控时钟电路情况):同步复位需要时钟以复位电路。在出于节省功耗的目的而使用门控时钟时,可能出现问题。在复位信号发出时,时钟可能关闭,在这种情况下只能使用异步复位,并在时钟恢复前移除复位信号。
总结:同步复位与时钟相关,需要考虑复位信号能否可靠地被采样,所以需要考虑clk skew、组合逻辑路径延时、复位延时等因素;综合器无法辨别复位信号,会在数据输入端引入组合逻辑,增大逻辑资源,此外需要判断是否满足设计需求。
例1
2.31所示电路功能与图2.30相同。唯一的区别是复位与门在多路复用器之外。现在,考虑门级仿真时发生的情况。通过保持rst_n为低,可以将MUX的两个分支的输入强制为0,但是如果load未知(X),并且MUX模型是悲观的,则触发器将保持未知(X),而不是复位。注意,这只是仿真过程中的一个问题!实际电路将正常工作并将触发器重置为0。
Synopsys提供编译器指令sync_set_reset,它告诉综合工具给定的信号是同步复位(或置位)。综合工具将把这个信号“拉”到尽可能接近触发器的位置,以防止这个初始化问题的发生。在本例中,这个指令通过在模块内的某处添加以下行来使用
推荐的做法使在项目开始时把这些指令接入RTL代码中避免重新综合影响项目进度。
另外,可以在读取RTL之前将综合变量hdlin_ff_always_sync_set_reset设置为true,这将产生相同的结果,而代码本身无需任何指令。
例2
如上图所示,同步复位信号的持续时间需要大于最慢的时钟周期,此外还要考虑,复位树的组合逻辑延时,复位信号的传播延时,以及时钟偏斜。
代码风格
always @ ( posedge clk ) begin if ( ! rst_ ) begin … end else begin … end end
异步复位
异步复位操作与时钟无关,当复位信号有效沿到达时,无论时钟沿是否有效,都会立即对目标进行复位。
异步复位优点
- 大多数器件库的DFF都有异步复位端口,采用异步复位可以节省资源,此外,确保数据路径干净;
- 设计相对简单
- 异步复位识别方便,可以很方便的使用FPGA的全局复位端口GSR
总结:Vendor提供的器件库大多都有带异步复位的触发器,这样能确保数据路径是干净的,不像同步复位会引入组合逻辑。此外,不论是否有时钟,都能对电路进行复位,综合工具也能自动识别。
异步复位缺点
- 在复位信号释放(Release)的时候可能会出现亚稳态问题:复位释放在时钟有效沿附近;
- 容易受到毛刺的影响
移除复位信号的问题
异步复位问题解决——复位同步器、复位毛刺过滤
复位同步器
如图所示,异步复位有效时,复位信号立即生效。但在复位信号撤销时,需要经过时钟的同步的处理。
module async_rst ( output reg rst_n, input clk,asyncrst_n ); reg rff1; always @(posedge clk or negedge asyncrst_n) if (!asyncrst_n) {
rst_n,rff1} <= 2'b0; else {
rst_n,rff1} <= {
rff1,1'b1} endmodule
复位毛刺过滤
总结:通过延时消除毛刺,方法:1、vendor提供的延时单元;2、插入缓冲buffer。
并不是所有系统都需要这种毛刺滤波器。 设计人员必须研究系统要求,以确定是否需要延迟。
复位网络
疑问
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/132943.html