举例说明亚稳态在FPGA中的危害

什么是亚稳态

什么是亚稳态,相信看到这篇文章的同学都已经比较清楚,这里稍微说明一下。在FPGA中最主要的硬件就是D触发器,这里想要彻底搞懂亚稳态需要一点时序概念,即保持时间和建立时间,关于时序约束的知识会在后面的文章中讲,需要的同学可以关注我。假设D触发器的时钟沿与数据沿同时到来,因为不满足触发器的建立时间,有可能会导致D触发器的输出端在0和1中随机选择。然而,这还不是亚稳态最主要的危害,D触发器的输出还有可能是既不是0也不是1的中间态,如果该中间态传输到FPGA的内部,那么就会出现意料之外的情况。

为什么出现亚稳态

同学们从上面应该就可以知道,亚稳态产生的原因是,FPGA的外部输入与时钟沿同时到达了D触发器导致D触发器不能判断输出状态。

举例说明亚稳态的危害

这里我们使用按键输入FPGA为例说明D触发器的危害。如下图:
在这里插入图片描述
从上面的第一个图可以看到,当按键的输入与系统时钟同时到达,D触发器如果把key误判成0,那么按键的下降沿便检测不到,进而会导致FPGA内部的程序发生错误或卡死。

亚稳态的避免方法

首先这里说明亚稳态是电路的特性,我们没法消除,只能尽可能避免亚稳态。最常用的方法就是打拍,也就是对外部输入经过几个D触发器,但是这里需要注意的是,千万不要用到外部输入在D触发的中间信号,否则该方法无效。具体的例子如上图2,我们对按键的输入延迟了一拍,便可以检测到按键的下降沿。

经学者研究,对于变化频率不太高的外部输入信号,一般打两拍便可以尽可能避免亚稳态。这里注意,亚稳态只是对FPGA的外部输入信号来说的,因为FPGA内部的D触发器的设计不会使得D触发器的时钟沿和数据沿同时变化,除非时序不满足,但这是另一个问题,不在这篇文章中讨论。

结束语

创作不易,认为文章有帮助的同学们可以收藏点赞支持。对文章有什么看法或者需要更近一步交流的同学,可以加入下面的群:
在这里插入图片描述

发布了14 篇原创文章 · 获赞 4 · 访问量 592

猜你喜欢

转载自blog.csdn.net/zhangningning1996/article/details/103863950