我是靠谱客的博主 香蕉毛衣,最近开发中收集的这篇文章主要介绍同步复位和异步复位同步复位:异步复位:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文内容转载自漫谈–复位reset

复位的作用

(1)在仿真时:使仿真的电路进入规定的初始化状态或者其他预知的状态,基于此状态下,电路进行状态变换。如果仿真中时序元件没有复位电路,从波形图上只能看到时序单元周围逻辑都是X标红的状态。

(2)在IC设计中:复位信号可以让设计的硬件电路进入一个稳定且状态确定的状态,避免因为上电后电路进入到随机的状态而硬件死机。如果用示波器捕捉内部时序单元的信号状态,信号为高低电平之一,只是高低电平的信号可能不符合设计的预期。

PS:对于仿真时候的信号未知X状态和IC设计中的高低电平。可以得出结论:在Verilog语法中,用仿真X状态表示物理时序单元电路当前状态未知,信号可能为高或低电平,这样可以达到更高性能。

PS:由上,是否电路中所有的单元都需要复位信号?

答:不是,首先组合逻辑电路是不需要复位信号的。其次不需要立刻进入明确状态的电路:数据流水线寄存器、数据移位寄存器等也不需要复位信号。

复位电路的分类

对于电路中的时序元件,把复位信号受到时钟的控制和复位信号不受时钟的控制两种电路分别称为同步复位电路和异步复位电路。如下图:
在这里插入图片描述

同步复位:

在同步复位的电路中,只有当时钟到来时才会把复位或者数据信息传输到寄存器内部,影响寄存器内部的状态变换。如上图所示,在同步复位电路中,复位信号本质上其实就是一组数据信号。复位和数据信号都需要在时钟的驱动下进行传输。所以此处的同步复位电路默认就有了优先级(时钟>复位>数据)。、

同步复位的RTL代码

module load_syn_ff(clk,in,out,load,rst_n);
	input clk,in,load,rst_n;
	output out;
	always@(posedge clk)
		if(!rst_n)
			out <= 1'b0;
		else if(load)
			out <=in;
endmodule

该代码综合后的电路
在这里插入图片描述
可以看到综合出来的复位信号与输入信号通过与门相连,但是与门也增大了路径延时
而且使用同步复位会使综合工具无法分辨复位信号和其他数据信号,综合工具可能将上述电路综合成下面的电路结构
在这里插入图片描述
该电路功能与之前的电路功能完全一样,区别仅仅在于复位与门在多路器之外。在门级仿真时,当rst_n信号为低时,能使多路器的两个输入端强制为0,然而如果load是未知状态(x)并且多路器模型是悲观的,这时触发器就会停在未知态(x)而不会复位。注意,这只是仿真过程中出现的问题。实际电路会正常工作。
综合工作经常会提供编译指令,以告知综合工具指定的信号是同步复位信号(或置位信号)。综合工具会将该信号“拉”得尽可能接近触发器,以避免初始化问题的发生。

同步复位的优点

(1)在同步复位电路下,复位和数据信号都受到时钟信号的控制,所以同步复位一般可以确保电路是一个同步电路
(2)在ASIC设计中,同步电路一般可以综合为更小的同步触发器(因为触发器没有包含复位逻辑),但是在FPGA设计中并不如此,一般FPGA的时序元件为带异步复位的触发器(也有同步触发器,视厂家而定)。如果在FPGA设计中使用同步复位,其消耗的资源相对较多。
(3)由于触发器的跳转只在时钟的边沿,所以触发器可以在一定程度上过滤电路毛刺。进而如果复位由电路内部的逻辑控制,在这种情况下可以在设计中使用同步复位:通过可以在一定程度上过滤电路毛刺的特性,过滤掉内部电路逻辑产生的毛刺,使设计更鲁棒。

同步复位的缺点

(1)同步复位需要较长的保持复位状态时间(最小也要大于时钟周期),保证同步复位信号可以到达每一个寄存器并且要在有效时钟沿之前到达(在真正设计使用的时候还需要考虑时钟偏斜、组合逻辑延时、复位延时等,即:同步复位信号时长> 时钟周期 + 时钟偏斜 + 组合逻辑延时)。

(2)在低功耗设计中,同步复位一般不能用于门控时钟控制的电路。因为同步复位电路中,主要靠时钟驱动复位和数据。当复位发出时,有可能时序电路此时并没有时钟驱动,那么此时的复位就不能完成。

(3)在fpga设计中,同步复位会消耗更多的资源

(4)使用同步复位会使综合工具无法分辨复位信号和其他数据信号
在这里插入图片描述

异步复位:

拥有异步复位的寄存器在设计的时候就已经多了一个复位引脚。通过触发该引脚的状态可以在任何时候进行异步复位电路中寄存器。此时异步复位电路的默认优先级为:(复位>时钟>数据)

异步复位的RTL代码:

module load_asyn_ff(clk,in,out,load,rst_n);
	input clk,in,load,rst_n;
	output out;
	always@(posedge clk or negedge rst_n)
		if(!rst_n)
			out <= 1'b0;
		else if(load)
			out <=in;
endmodule

上述代码综合实现
在这里插入图片描述

异步复位

拥有异步复位的寄存器在设计的时候就已经多了一个复位引脚。通过触发该引脚的状态可以在任何时候进行异步复位电路中寄存器。此时异步复位电路的默认优先级为:(复位>时钟>数据)(如上上图)。

异步复位的优点

(1)异步复位的复位逻辑和数据逻辑没有任何关系,所以相比同步复位,能够使数据路径更好地收敛。(上上图对比)

(2)不用在时钟的控制下进行复位,所以对于刚才所提到的低功耗设计中,可以达到无时钟复位的效果[注意:寄存器复位后的正常状态恢复需要时钟参与]。

(3)使用异步复位优势在于只要生产方提供的库中有带异步复位的触发器,就能保证数据路径上是干净的。

异步复位的缺点:

(1)因为异步复位不受时钟的控制,所以当电路复位引脚有毛刺的时候,会引起电路的异常复位。

毛刺过滤电路
在这里插入图片描述

(2)在异步复位的时候,如果释放复位信号在时钟有效边沿周围。那么可能会引起时序单元的输出出现亚稳态,导致电路亚稳态传播。如下图:
在这里插入图片描述
如图所示:

复位信号在时钟有效沿之前Recovery Time时间内释放可能会引起触发器输出亚稳态。

复位信号在时钟有效沿之后Removal Time时间内释放也可能会引起触发器输出亚稳态。

对比set up time & hold time和此处的Recovery time & Removal time,可以发现对于触发器来说,输入信号(Data 和 RST_n)都需要对于时钟信号沿保持稳定的一个时间窗口,否则触发器可能会导致亚稳态的输出。为了避免触发器的亚稳态,就需要保证不要在触发器的这几个时间窗内信号有变化。

异步复位同步释放

结合同步复位和异步复位的优点可以得到:

异步复位同步释放电路:如下图

在这里插入图片描述
RST_n信号同时复位这两个触发器,这一对触发器的输出信号传输并驱动电路中的其他时序元件完成复位,最后使整个相连接的设计进行复位。

很明显可以看出这两个触发器就是所谓的同步器逻辑。在进行数据跨时钟处理的时候可以通过该同步器逻辑将一个时钟域的信号传输到另一个时钟域。

如上图所示:

当复位信号被撤销时:RST_n [0->1],此时数据VCC将在时钟的控制下进入主触发器。如果此时复位信号被撤销时候恰好碰到时钟的有效沿引起主触发器的亚稳态。但是此时从触发器在时钟控制下,输入的是主触发器输出的复位稳定值

如下图:虽然主触发器在T2时刻违背了复位时间窗口,输出了Q1亚稳态的摇摆电平。但是从触发器此时的数据输入接收的还是主触发器输出的Q1稳态的复位状态0。所以从触发器Q2的输出是稳定的复位状态0。在T3时刻主触发器已经从亚稳态状态恢复,输出的是稳定的工作状态电平了(Q1=1)。T3时刻从触发器采样的是稳定的工作状态电平,输出也是稳定的工作状态电平,复位完成。
在这里插入图片描述
PS:有同学可能会问,RST_n既然对主触发器违反复位时间窗口,对从触发器来说,也一样违反了时间窗口。那从触发器为什么就没有进入亚稳态呢?

答:对于从触发器来说,RST_n跳变在其复位时钟窗口内,所以违反了从触发器的复位时间窗口,但是从上图可以观察到,从触发器在T2时刻时钟沿的输入为Q1=0,在T1时刻时钟沿的输出为Q2=0,对于从触发器来说,复位前的状态和复位后的状态是一样的。寄存器内部的锁存器不需要跳变来更新自己的状态。所以也就不会因为内部锁存器的电平跳变从而导致亚稳态的发生。
在这里插入图片描述

一般来说,完整的一颗SOC芯片内部不止有一个时钟,一般会有多个时钟。所以此时对每一个时钟域下的Reset_n信号都有一套异步复位同步释放逻辑。来保证在自己的时钟域下,复位释放和时钟具有同步的关系,来驱动该时钟域下相关的逻辑和状态的变换等操作。如下图:

在这里插入图片描述
结论:

异步复位同步撤离具有异步复位和同步的优点。为了避免在复位释放的时候引起电路亚稳态,通常采用异步复位同步释放的电路。有效的复位信号可以快速复位相关联的逻辑且不用等待时钟的驱动。同时复位信号经过异步复位同步释放的电路之后,复位信号受到时钟信号的控制(复位信号释放不会在时钟沿的任意点),有效避免了因异步复位信号的移除而引起的电路亚稳态情况的出现。
在这里插入图片描述

最后

以上就是香蕉毛衣为你收集整理的同步复位和异步复位同步复位:异步复位:的全部内容,希望文章能够帮你解决同步复位和异步复位同步复位:异步复位:所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部