【FPGA】建立时间和保持时间

1.建立时间和保持时间概念

建立时间(setup time):触发器在时钟沿到来之前,其数据的输入端的数据必须保持不变的时间。

保持时间(hold time)触发器在时钟沿到来之后,其数据输入端的数据必须保持不变的时间。

2.静态时序分析

对建立时间和保持时间的静态分析主要参考以下电路模型。
在这里插入图片描述电路模型由发起寄存器(rega)、组合逻辑、捕获寄存器(regb)及其中间的走线组成。其中Tsu表示捕获寄存器建立时间要求,Th表示捕获寄存器保持时间要求。源时钟clk到达rega的时钟端口时,会有一定的延迟,从而形成Tclka。同理,时钟延迟到达regb的时钟端口,形成Tclkb。Tco为有效数据出现在发起寄存器Q端口所需时间。Tcomb为数据延迟,包括组合逻辑延迟和走线延迟。

数据保持稳定传输的关键在于建立时间和保持时间需要满足最低指标要求,因此为了表述建立时间和保持时间是否满足要求,引入时间裕量的概念。

时间裕量包括建立时间裕量和保持时间裕量(setup slack和hold slack)。从字面上理解,所谓“裕量”即富余的、多出的。什么意思呢?即保持最低要求的建立时间或保持时间所多出的时间,那么“裕量”越多就意味着时序约束越宽松。如果Times Slack > 0 , 则电路能够正常被采样,否则出现违例。

根据电路模型可以画出静态时序图如下:

在这里插入图片描述建立时间Setup Time公式:Tclka + Tco + Tdata + Tsetupslack + Tsu = Tcycle + Tclkb ,即Tsetupslack = Tcycle + (Tclkb-Tclka) - Tsu - Tco - Tdata

保持时间Hold Time公式:Tclka + Tco + Tdata = Tclkb +Th + Tholdslack,即Tholdslack = Tco + Tdata - (Tclkb - Tclka) - Th.

数据稳定传输要求(Tsetup slack >0 )&&(Tholdslack>0)。

在这里插入图片描述
数据传输分为1、2、3三种情况。1:当延迟时间大于T-Tsu时,Data在建立时间区域内才到达regb,所以不满足建立时间要求,这就是说数据来的**“太晚了”;2:当Data延迟了很小一段时间(<Th),Data在保持时间内就变化了,所以不满足保持时间,这就是说数据来的“太早了”**。3:当Data延迟了Th,Data则满足建立时间要求又刚好满足保持时间要求,这就是说数据来的“正巧”。

综上所述,数据的最大延迟是T-Tsu,最小延迟是Th。

解决方案

1.Setup Time Violation的解决方案

如果出现了Setup Time Violation,也就是说Tsetupslack为负数了,那么可以考虑:
1)增大时钟周期Tcycle,即降低时钟频率
2)减小 D->Q的传输延迟Tco,即更换更快的器件,使用更先进的器件库
3) 减小 Tcomb,即减小组合逻辑延时,主要是关键路径的处理。包括插入寄存器使其流水、重定时等。
4)增大时钟歪斜Tskew=Tclkb-Tclka。如果时钟歪斜 Tskew 为正,对setup是有利的,对hold是有害。

一般工程中选用第三种解决方案解决实际问题。

2.Hold Time Violation的解决方案

如果出现了Hold Time Violation,也就是说Tholdslack为负数了,那么可以考虑:

1)增加 Tcomb 延迟,增大数据的延迟具体表现为插入 Buffer,Xilinx 还提到可以插入 LUT1 增加延迟等方式来修复;

2)增大 Tcomb,即增大组合逻辑延时,主要是关键路径的处理。可以增加Buffer,或者后端布局布线拉长布线以增加延时。

3)减小时钟歪斜Tskew=Tclkb-Tclka。如果时钟歪斜 Tskew 为正,对setup是有利的,对hold是有害。

一般解决方案是在逻辑中加BUFF来解决保持时间不满足的情况。

时序约束

除此之外,解决建立时间保持时间的问题还涉及到时序约束,在同步时钟以及异步时钟之间有着不同的时序约束方案,详情可以参考另一篇博文https://blog.csdn.net/weixin_42370509/article/details/133280206?spm=1001.2014.3001.5501

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA与信号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值