概述
文章目录
- 什么情况下,复位信号需要做“异步复位,同步释放”处理?
- 异步复位同步释放原理
- 利用前面两级触发器实现。特点:
- 问题1. 如果没有前面两级触发器的处理。异步信号直接驱动系统的触发器。会出现什么情况?
- 问题2. 复位信号存在亚稳态,有危险吗?
- 问题3. 如果只做一级触发器同步,如何?
- 问题4. 两级触发器同步,就能消除亚稳态吗?
- 问题5. 复位同步器,第2个dff是否存在亚稳态?摘自Clifford E. Cummings《Asynchronous & Synchronous Reset Design Techniques - Part Deux》
- 问题6. 第一级触发器的数据端口为什么是1'b1?
什么情况下,复位信号需要做“异步复位,同步释放”处理?
回答:一般来说,同步系统,都使用异步复位。这是因为同步复位的电路实现,比异步复位的电路实现,要浪费更多电路资源。
未在本模块时钟域做过“异步复位,同步释放”处理的复位信号,提供给本模块做异步复位使用时,都需要做“异步复位,同步释放”处理。常见于系统内两部件不在同一时钟域的情况下。
工程实践中,确实见过由于未做异步复位的同步处理,而出现大概率系统死机现象(复位的作用域是很大的)。
异步复位同步释放原理
代码实现:
always @ (posedge clk, negedge rst_async_n)
if (!rst_async_n) begin
rst_s1 <= 1'b0;
rst_s2 <= 1'b0;
end
else begin
rst_s1 <= 1'b1;
rst_s2 <= rst_s1;
end
assign rst_sync_n = rst_s2;
endmodule
利用前面两级触发器实现。特点:
- 第一级触发器的数据端口是接电源,即高电平1’b1。
- 第一级触发器的输出,不能使用,因为仍存在亚稳态的危险。两级触发器做同步,是非总线信号的最常见异步处理方法。总线信号的异步处理方法,最常见的是异步fifo实现。
下面讲述理解点。
问题1. 如果没有前面两级触发器的处理。异步信号直接驱动系统的触发器。会出现什么情况?
回答:很多人只知道触发器D端口来源是异步的话,会因为建立保持时间的时序违反而在触发器Q端口产生亚稳态。
但是不清楚,异步复位信号为什么会导致亚稳态的产生。
首先,回顾理论教材里介绍的建立保持时间违反分析,教材一般都是拿没有复位端口的D触发器举例。
然后,画出带有异步复位端口的D触发器,下图带异步复位Rd,并带有异步置位端口Sd。
由此得知,异步复位信号或者异步置位信号,跟数据端口D信号,没有什么区别,都会存在建立保持时间的违反,从而时序冲突,引发输出亚稳态。
问题2. 复位信号存在亚稳态,有危险吗?
回答:
亚稳态,出现的问题或者麻烦,是在信号变化的时候,不能保证第一拍采样的值是固定的。
如果信号稳定,不会出现亚稳态的。就是采样后的跳变,时刻不确定,也许早,也许晚。
系统不希望这样的未知状态发生,系统希望知道在某一个时刻,后续逻辑需要的输入信号,是稳定值。
二级触发器同步后,第二季触发器的输出基本上是稳定值。后续逻辑根据稳定值,会有稳定的行为。这就是追求的系统稳定性。
最好是系统一起复位释放,但是时钟域不同,不可能保证系统一起复位释放。一般来说,系统复位释放的顺序,是需要保证的。否则系统就是不安全的。
举个例子,系统启动时,内核读取启动指令,要powerdown某外设;但是powerdown的逻辑要求外设和内核没有通信请求正在发生。此时,外设比内核先释放复位的情况(复位释放的时刻,外设有可能已经开始与内核发生请求),与内核比外设先释放复位的情况(复位释放的时刻,外设肯定与内核没有发生请求),是不一样的,powerdown也许不能处理成功。
这也是异步复位信号需要同步释放的原因,目的都是为了避免亚稳态的产生。
问题3. 如果只做一级触发器同步,如何?
回答:不可以。第一级触发器的输出,永远存在亚稳态的可能。亚稳态,导致系统不会复位初始化到已知状态。
当第一级触发器采样异步输入之后,允许输出出现的亚稳态可以长达一个周期,在这个周期内,亚稳态特性减弱。在第二个时钟沿到来时,第二级同步器采样,之后才把该信号传递到内部逻辑中去。第二级输出是稳定且已被同步了的。如果在第二级采样时保持时间不够,第一级的输出仍然处于很强的亚稳态,将会导致第二级同步器也进入亚稳态,但这种故障出现的概率比较小。
一般情况下,两级同步器总体的故障概率是一级同步器故障概率的平方。在大部分的同步化设计中,两级同步器足以消除所有可能的亚稳态了。28nm或者更新工艺,建议三级同步器。
问题4. 两级触发器同步,就能消除亚稳态吗?
回答:不能。大大降低概率,如果几十年出现一次,也无所谓了。毕竟芯片不会用几十年,早就老化严重淘汰了。
问题5. 复位同步器,第2个dff是否存在亚稳态?摘自Clifford E. Cummings《Asynchronous & Synchronous Reset Design Techniques - Part Deux》
Ever since the publication of our first resets paper[4], we have received numerous email
messages asking if the reset synchronizer has potential metastability problems on the second
flip-flop when reset is removed. The answer is that the reset synchronizer DOES NOT have reset
metastability problems. The analysis and discussion of related issues follows.
The first flip-flop of the reset synchronizer does have potential metastability problems because
the input is tied high, the output has been asynchronously reset to a 0 and the reset could be
removed within the specified reset recovery time of the flip-flop (the reset may go high too close
to the rising edge of the clock input to the same flip-flop). This is why the second flip-flop is
required.
The second flip-flop of the reset synchronizer is not subject to recovery time metastability
because the input and output of the flip-flop are both low when reset is removed. There is no
logic differential between the input and output of the flip-flop so there is no chance that the
output would oscillate between two different logic values.
总结:
- 复位同步器,第二个触发器当复位释放的时候,是否会带来亚稳态,比如reset释放和时钟之间存在recovery和removal timing违反怎么办?结论是:没有亚稳态,无需担心。
- 只有当DFF的数据输入端口和数据输出端口,存在值不同的情况下,才会有recovery timing/removal timing问题。
- 第1个dff的数据输入端口和数据输出端口,在异步复位释放的时刻,是1和0,所以会有竞争冒险,有概率产生亚稳态;
- 第2个dff的数据输入端口和数据输出端口,在异步复位释放的时刻,是0和0,所以不存在竞争冒险,不会产生亚稳态。
- 因为第1个dff有概率产生亚稳态,为了防止传播,所以,多加几级dff,降低亚稳态的传播概率是有益处的。
问题6. 第一级触发器的数据端口为什么是1’b1?
回答:
- 如果第一级触发器的数据端口,使用rst_async_n。综合后的第一级触发器电路图如下
(下图为转载图片,来自http://www.cnblogs.com/qiweiwang/archive/2010/11/25/1887888.html):
- 如果第一级触发器的数据端口,使用1’b1。综合后的第一级触发器电路图如下:
考虑到电路实现的资源,还是第2种方案最节省,为最佳设计。
#综上所述,异步复位同步释放的电路结构是稳定可靠最省资源的,是最优的方案。请按套路出牌即可。
#存在不同时钟域的系统环境中,请检查并正确处理“异步复位,同步释放”。
- 也不知道上述说法,有没有误区,请指点。纯属个人理解,仅供参考。
最后
以上就是大胆水杯为你收集整理的异步复位,同步释放的理解什么情况下,复位信号需要做“异步复位,同步释放”处理?异步复位同步释放原理问题1. 如果没有前面两级触发器的处理。异步信号直接驱动系统的触发器。会出现什么情况?问题2. 复位信号存在亚稳态,有危险吗?问题3. 如果只做一级触发器同步,如何?问题4. 两级触发器同步,就能消除亚稳态吗?问题5. 复位同步器,第2个dff是否存在亚稳态?摘自Clifford E. Cummings《Asynchronous & Synchronous Reset Design Techniqu的全部内容,希望文章能够帮你解决异步复位,同步释放的理解什么情况下,复位信号需要做“异步复位,同步释放”处理?异步复位同步释放原理问题1. 如果没有前面两级触发器的处理。异步信号直接驱动系统的触发器。会出现什么情况?问题2. 复位信号存在亚稳态,有危险吗?问题3. 如果只做一级触发器同步,如何?问题4. 两级触发器同步,就能消除亚稳态吗?问题5. 复位同步器,第2个dff是否存在亚稳态?摘自Clifford E. Cummings《Asynchronous & Synchronous Reset Design Techniqu所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复