0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

异步复位异步释放会有什么问题?FPGA异步复位为什么要同步释放呢?

FPGA研究院 来源:FPGA开发之路 2024-01-24 09:32 次阅读

一般来说,复位信号有效后会保持比较长一段时间,确保 register 被复位完成。但是复位信号释放时,因为其和时钟是异步的关系,我们不知道它会在什么时刻被释放。

首先看图1,考虑复位信号在两个时钟沿之间被释放的情况。Reset 信号从 Device Pin 到 Flip-Flop 的延迟最大不能超过“Max Time Available”,如果延迟超过了这个限制,那么复位信号的释放会进入 Setup Time 要求的区间,导致 Flip-Flop 进入亚稳态。当时钟频率变高,时钟周期变短,不难发现,要满足这个要求是越来越难的。

1c3763b0-ba48-11ee-8b88-92fbcf53809c.jpg

图1 - Reset timing diagram, deasserted between clock edges

前面我们提到过,因为是异步信号,我们无法确保信号的释放在一个确定的区间。如图2所示,对于 Flip-Flop 来说,异步信号的释放可能在A区间,也可能在B或者C区间。假设现在我们的设计中包含三个 Flip-Flop,分别为FF1,FF2 和 FF3。FF1 的复位释放落在A区间,所以 FF1 会在复位信号释放后的第一个时钟沿有效,FF3 的复位释放落在C区间,那么 FF3 会在复位信号释放后的第二个时钟沿有效,而 FF2 的复位释放落在B区间,所以 FF2 可能会进入亚稳态。

1c40eafc-ba48-11ee-8b88-92fbcf53809c.jpg

图2 - Reset deasserted asynchronously to the clock

不同的 FF 因为复位信号释放的位置不同而在不同的时刻有效,这会对设计造成影响吗?

假如我们的设计是如图3所示的情况,是不会对设计的功能造成影响的。在复位释放之后,任何有问题的数据会被Pipeline排出去,经过4个cycle之后,这个pipeline便会恢复到正常的工作状态。

1c4468ee-ba48-11ee-8b88-92fbcf53809c.jpg

图3 - Reset for a pipeline

但如果我们的设计是如图4所示。被复位的FF是状态机的状态,那么复位释放后很有可能状态机会被复位到一个无效的状态,影响正常的功能。

1c483a96-ba48-11ee-8b88-92fbcf53809c.jpg

图4 - Reset for a one-hot state machine

什么是同步释放 ?

从上一部分的内容我们发现,异步信号的异步释放会导致 FF 在不同的时刻有效,甚至进入亚稳态,从而影响设计的功能运行。如何避免这个问题呢?考虑同步释放。顾名思义,同步释放就是让复位信号的释放过程与时钟同步,从而确保所有 FF 在同一时刻有效。

如图5所示,是异步复位同步释放的电路设计。FDP的个数决定复位信号保持的长度,最少要有两个。当复位信号释放后,FDP chain 会将接地的0逐级pipe到最后一个FDP输出,因为该FDP的输出是和Clock同步的,所以FDR的复位释放便是和Clock 同步的。

1c5e5a4c-ba48-11ee-8b88-92fbcf53809c.jpg

图5 - Async reset with sync dessertion

最后一个FDP不是仍然是异步复位异步释放么,会不会这个FDP因为异步释放进入亚稳态,那么其输出的复位信号也不确定从而导致复位失败?

答案是不会。FDP会进入亚稳态的条件是什么?一是异步释放非常贴近时钟沿,二是 FDP 输入D在时钟沿附近发生跳变。根据这个电路设计,FDP的输入D时不会在异步释放时发生跳变的,所以FDP不会进入亚稳态。

异步复位同步释放的时序约束

异步复位同步释放的电路我们已经设计好了,如何进行时序约束呢?

对于 FDR,我们可以不用考虑的。因为工具会分析复位信号的 Recovery Time 和 Removal Time 来确保时序收敛。如果发现 Recovey Time 或者 Removal Time 的违反,我们可能需要看一下 reset tree 或者 clock skew。一般都是 Recovey Time的违反,类似于 Setup Time,可能是由于 reset path的延迟太长导致。

对于 FDP,D端是同步电路,而CLR输入端是异步信号,通过电路的设计我们已经避免的异步信号带来的问题,所以为了避免 false timing violation,我们可以对 FDP 的 CLR 端设置 false path。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA设计
    +关注

    关注

    9

    文章

    425

    浏览量

    26273
  • 状态机
    +关注

    关注

    2

    文章

    486

    浏览量

    27182
  • FDR
    FDR
    +关注

    关注

    0

    文章

    10

    浏览量

    8637
  • 异步复位
    +关注

    关注

    0

    文章

    45

    浏览量

    13251

原文标题:FPGA复位设计中异步复位为什么要同步释放 ?

文章出处:【微信号:FPGA研究院,微信公众号:FPGA研究院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Xilinx FPGA异步复位同步释放同步后的复位该当作同步复位还是异步复位

    针对异步复位同步释放,一直没搞明白在使用同步化以后的复位信号时,到底是使用
    发表于 06-21 09:59 816次阅读
    Xilinx <b class='flag-5'>FPGA</b><b class='flag-5'>异步</b><b class='flag-5'>复位</b><b class='flag-5'>同步</b><b class='flag-5'>释放</b>—<b class='flag-5'>同步</b>后的<b class='flag-5'>复位</b>该当作<b class='flag-5'>同步</b><b class='flag-5'>复位</b>还是<b class='flag-5'>异步</b><b class='flag-5'>复位</b>?

    异步复位同步释放有多个时钟域时如何处理 异步复位同步释放的策略

    对于从FPGA外部进来的信号,我们通常采用“异步复位同步释放的策略”,具体电路如下图所示。
    的头像 发表于 07-20 09:04 1289次阅读
    <b class='flag-5'>异步</b><b class='flag-5'>复位</b><b class='flag-5'>同步</b><b class='flag-5'>释放</b>有多个时钟域时如何处理 <b class='flag-5'>异步</b><b class='flag-5'>复位</b><b class='flag-5'>同步</b><b class='flag-5'>释放</b>的策略

    FPGA同步复位异步复位的可靠性特点及优缺点

    ,而是在复位信号释放的时候受到时钟信号的同步。通过一个复位信号综合器就可以实现异步复位
    发表于 11-04 14:26

    同步复位sync和异步复位async

    %的同步时序电路,有利于时序分析。1)设计相对简单。2)因为大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。3)
    发表于 11-14 16:03

    verilog 异步复位同步释放

    fpga异步复位同步释放代码如下module asy_rst(clk,rst_n,asy_rst);input clk;input r
    发表于 05-28 13:02

    同步复位异步复位同步释放的对比疑问

    在网上了解到fpga同步复位异步复位都会存在不足,因此有人提出异步
    发表于 04-16 22:17

    同步复位异步复位到底孰优孰劣

    异步复位同步释放的理解目录目录同步复位异步
    发表于 01-17 07:01

    关于异步复位同步释放理解与分析

    是指复位信号是异步有效的,即复位的发生与clk无关。后半句“同步释放”是指复位信号的撤除也与cl
    发表于 11-30 08:58 2.4w次阅读
    关于<b class='flag-5'>异步</b><b class='flag-5'>复位</b><b class='flag-5'>同步</b><b class='flag-5'>释放</b>理解与分析

    FPGA设计中的异步复位同步释放问题

    异步复位同步释放 首先要说一下同步复位异步
    发表于 06-07 02:46 2005次阅读

    异步复位同步释放的基本原理与代码举例

    异步复位同步释放是指复位信号是异步有效的,即复位的发
    的头像 发表于 11-20 07:06 3762次阅读

    详细讲解同步后的复位同步复位还是异步复位

    针对异步复位同步释放,一直没搞明白在使用同步化以后的复位信号时,到底是使用
    的头像 发表于 04-27 18:12 4249次阅读
    详细讲解<b class='flag-5'>同步</b>后的<b class='flag-5'>复位</b>是<b class='flag-5'>同步</b><b class='flag-5'>复位</b>还是<b class='flag-5'>异步</b><b class='flag-5'>复位</b>?

    FPGA异步复位同步释放的理解

    异步复位同步释放的理解目录目录 同步复位异步
    发表于 01-17 12:53 4次下载
    【<b class='flag-5'>FPGA</b>】<b class='flag-5'>异步</b><b class='flag-5'>复位</b>,<b class='flag-5'>同步</b><b class='flag-5'>释放</b>的理解

    同步复位异步复位的区别

    请简述同步复位异步复位的区别,说明两种复位方式的优缺点,并解释“异步
    的头像 发表于 08-14 11:49 4125次阅读

    浅析异步复位同步释放同步复位打拍模块

    异步复位同步释放:rst_synchronizer.v
    的头像 发表于 08-21 09:27 574次阅读
    浅析<b class='flag-5'>异步</b><b class='flag-5'>复位</b><b class='flag-5'>同步</b><b class='flag-5'>释放</b>与<b class='flag-5'>同步</b><b class='flag-5'>复位</b>打拍模块

    FPGA学习-异步复位同步释放

    点击上方 蓝字 关注我们 系统的复位对于系统稳定工作至关重要,最佳的复位方式为:异步复位同步释放
    的头像 发表于 09-09 14:15 305次阅读
    <b class='flag-5'>FPGA</b>学习-<b class='flag-5'>异步</b><b class='flag-5'>复位</b>,<b class='flag-5'>同步</b><b class='flag-5'>释放</b>