数字电路依赖于每个时钟边沿的严格时序。设置时间和保持时间定义数据在时钟前后必须保持稳定的时间,使触发器存储正确的值,避免亚稳态。本文详细解释了它们的含义、违规原因、寄存器间路径、PCB布局影响以及解决时序问题的实用方法。

设置与保持时间概述
数字电路运行在时钟上,每个时钟边缘周围的每一小片时间都很重要。在同步系统中,数据是根据该时钟信号进行移动和捕获的。实信号不会瞬间变化,时钟边缘具有有限斜率。线路、逻辑门和内部设备延迟都会增加时序偏移。
为了保证数据采集安全,每个活动时钟边缘周围有一个小时间窗口,输入必须保持稳定。设置时间和保持时间定义了这个窗口,使触发器能够正确采样数据,避免随机错误或不稳定输出。
公共数字电路中的建立与保持时间

• CPU、FPGA、ASIC和微控制器内部的触发器
• 源同步接口,时钟和数据一起传输
• 外设总线,如SPI、I²C和并行内存总线
• ADC(模数转换器)和DAC(数模转换器)接口
• 高速数字通信链路
数字定时中设置时间的含义

建立时间(Tsetup)是输入数据在激活时钟前必须保持稳定的最小时间。在此间隔内,触发器输入端显示的数据不应发生变化,使内部采样电路能够可靠地确定时钟边缘的逻辑电平。
保持时间定义及对数据采集的影响

保持时间(Thold)是输入数据在主动时钟边缘后必须保持稳定的最小时间。虽然数据在时钟转换时采样,但触发器需要一个较短的额外间隔来完成捕获过程。在此期间保持数据稳定性,确保存储值被正确锁定,并在后续逻辑阶段保持有效。
设置时间与保持时间的区别
| 参数 | 设置时间 | 暂停 | |
|---|---|---|---|
| 定义 | 最小时间数据必须在时钟边缘 | 最小时间数据必须在时钟边缘 | |
| 问题方向 | 问题在于数据到达时钟边缘 | 之前太晚。问题发生在数据发生变化过早于时钟边缘 | 之后。 |
| 共同事业 | 数据路径太慢(延迟较长) | 数据路径过快(非常短的延迟) | |
| 典型的解决方案 | 使用较慢的时钟或减少数据路径中的延迟 | 在数据路径上增加额外延迟,使数据在后续发生变化 | |
| 违反风险 | 存储值可能错误或不稳定(亚稳定) | 存储值可能错误或不稳定(亚稳定) |
设置和等待时间违规的常见原因
• 时钟偏斜——时钟信号在电路的不同部分以略有不同的时间到达。
• 时钟抖动——时钟边缘精确时机的微小随机变化。
• 较长的组合逻辑路径——数据在到达触发器前通过逻辑门所需时间过长。
• PCB走线长度不等——信号传播距离不同,因此有些信号到达得更早或更晚。
• 信号振铃和缓慢上升时间——信号质量差或过渡缓慢使得更难检测清晰的逻辑电平。
• 温度和电压变化——温度或电源电压的变化会影响信号速度和时序裕度。
设置和保持时间违规的影响

当设置时间或保持时间未达标时,触发器可能无法判断信号在时钟边缘是高电平还是低电平。它可能进入一种称为亚稳态的不稳定状态,此时输出需要额外时间稳定,并且可能短暂地处于有效逻辑水平之间。这种不稳定行为可能在电路中蔓延,导致严重问题,例如:
• 随机位错误
• 系统崩溃或重置
• 不可预测的电路行为
• 难以追踪的罕见故障
设置时间和保持时间值的定义

在芯片测试过程中,设置和保持时间会被测量并定义。设备在受控条件下检查,以找到仍能正常与时钟正常工作的最小时序余裕。这些时序限制取决于半导体工艺、电源电压、温度范围以及输出负载等因素。由于这些因素会因设备而异,具体的设置和保持时间数值会在数据手册中列出,并且应始终在其中检查。
寄存器到寄存器路径中的设置和保持时间
| 时序组件 | 描述 |
|---|---|
| Tclk | 时钟周期(两个时钟边之间的时间) |
| Tcq | 第一个触发器的时钟到Q的延迟 |
| Tdata | 通过触发器之间的逻辑延迟 |
| Tsetup | 接收触发器的设置时间 |
| 啧 | 两个触发器之间的时钟偏斜 |
PCB走线长度匹配及设置/保持时序限制

PCB走线长度匹配常用于减少时钟信号与数据信号之间的时序差异,尤其是在高速数字设计中。匹配的走线长度有助于最小化偏移,但这并不保证满足建立和保持时间的要求。
PCB走线上的信号传播极快,因此仅通过布线实现有意义的延迟通常需要极长的走线。此外,信号完整性效应如振铃、阻抗不匹配和边缘过渡缓慢,即使跟踪长度紧密匹配,也可能缩小时钟边缘周围的有效采样窗口。
由于这些限制,设置和保持时序必须通过使用器件数据手册的数值和路径延迟进行时序分析来验证,而不能仅依赖PCB长度匹配作为时序修复。
修复数字系统中的设置时间违规
• 减少组合逻辑的深度,使数据能更早到达
• 降低时钟频率以增加每个周期的时间
• 使用更快且内部延迟更短的逻辑器件
• 提升信号完整性,使过渡更干净、更稳定
• 添加流水线阶段,将长逻辑路径拆分为更小的步骤
• 减少电容负载,使信号切换更快
解决数字系统中的等待时间违规
• 添加缓冲区延迟以减慢数据路径
• 调整时钟树以减少不必要的时钟偏移
• 在安全且合适的情况下插入小型RC延迟网络
• 在FPGA中使用可编程延迟块微调数据到达时间
结论
设置和保持时间定义了时钟边缘的有效时序窗口,确保同步数字系统中数据采集的可靠性。这些时序限制受时钟行为、逻辑延迟、信号质量和物理实现的影响。通过将真实数据路径与数据手册规格分析,并针对设置和保持约束施加针对性修正,设计师能够在工艺、电压和温度变化中保持安全的时序裕度。
常见问题解答 [常见问题解答]
设置和按时是如何限制时钟速度的?
时钟频率必须足够慢,使数据离开一个触发器,经过逻辑,并且在下一个触发器时仍能满足设置时间。如果时钟过快,设置时间会被打断,电路就会失效。
什么是时序松弛?
时间松弛是指数据所需到达时间与实际到达时间之间的间隙。正松弛意味着时机安全。负松弛意味着设置或保持违规。
设置或保持时间会是负值吗?
是的。负的设置或保持数来自触发器内部的定时。这意味着安全窗口被移动了,而不是可以跳过时序检查。
静态时序分析如何检查时序?
静态时序分析计算所有路径延迟。它会在下一个时钟边缘检查设置,并在当前边缘之后保持。任何松弛为负的路径都会被报告为违规。
为什么时钟域交叉对时序有风险?
当信号穿越无关时钟时,其边与新时钟不匹配。这常常会打断设置或保持时间,并可能导致亚稳定,除非使用同步器或先进先出。