FPGA知识点---复位

1.亚稳态

在FPGA系统中,如果数据传输不满足触发器的Tsu和Th,或者复位过程中复位信号的释放相对于有效时钟的恢复时间(recovery time)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。这段时间称为决断是阿金(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是稳定到0或1,是随机的,与输入没有必然的关系。
亚稳态主要发生在异步信号检测、跨时钟域信号传输以及复位电路等常用设计中。
亚稳态是可以传播的,例如本该是逻辑0的,却成了1,之后亚稳态又传播下去,导致逻辑错误,因此亚稳态是有害的。
为什么两级触发器可以防止亚稳态的传播?
使用两级触发器来使异步电路同步化的电路其实叫做“一位同步器”,他只能用来对一位异步信号进行同步。两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一级脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。同步器有效的条件:第一级触发器进入亚稳态后的恢复时间+第二级触发器的建立时间<=时钟周期。

2. 恢复时间、撤销时间

异步复位存在恢复时间不满足而导致亚稳态问题。
复位恢复时间是指释放一个复位有效信号时,复位信号的有效状态释放时刻和下一个时钟上升沿之间的时间。
在这里插入图片描述
异步复位的恢复时间要大于这一数值才能避免时序冲突。如果不满足恢复时间,则会导致亚稳态的产生。
在这里插入图片描述
recovery time:恢复时间。撤销复位时,恢复到非复位状态的电平必须在时钟有效沿到来之前的一段时间到来,才能保证时钟能有效恢复到非复位状态,此段时间为recovery time。
removal time :撤销时间。撤销复位时,在时钟有效沿到来之后复位信号还需要保持的时间为撤销时间removal time。

3. 异步复位

异步复位就是复位和时钟无关,电路只要检测到复位信号,就尅立即进入复位状态,而不必考虑时钟问题。
异步复位的优点是复位信号识别方便,复位速度快,且FPGA以及IC内部的触发器集成了异步复位端,所以比较节省资源,方便使用。
缺点就是容易受到毛刺的影响,异步复位必须满足恢复时间,否则会出现亚稳态。

4. 同步复位

同步复位和时钟有效沿有关,上升沿有效时,上升沿到来时监测复位信号的状态
在这里插入图片描述
同步复位可以起到过滤毛刺的作用,但是其复位时间一定要大于一个时钟周期,否则就有可能被当成毛刺滤除掉。
同步复位由于依赖时钟,所以当使用门控时钟时,有可能因为时钟被禁止而导致电路没有复位。

5. 异步复位,同步释放

为了避免亚稳态,让拉高的复位信号打两拍,达到与时钟clk边沿同步的目的。
仍然使用异步复位,复位的时候,触发器都会复位,同步释放,就是复位的撤离依赖于时钟有效沿。
电路设计:

在这里插入图片描述
代码设计:

module Reset_test(
	input			clk,
	input			rst_nin,
	output	reg		rst_nout
);

	reg		rst_mid;
	always @(posedge clk or negedge rst_nin) begin
		if(!rst_nin) begin
			rst_mid <= 0;
			rst_nout <= 0;
		end
		else begin
			rst_mid <= 1;
			rst_nout <= rst_mid;
		end
	end

endmodule

作为一个模块例化使用即可。

猜你喜欢

转载自blog.csdn.net/gemengxia/article/details/108346194