IC 理论篇(03-06)建立时间以及保持时间

本文详细介绍了芯片设计中的关键时序参数——建立时间和保持时间,以及它们在D触发器中的作用。同时讨论了相关术语如SDC约束、恢复时间、移除时间和不同类型的延时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

芯片原厂必学课程 - 第三篇章 - IC 理论篇

03-06 建立时间以及保持时间

新芯设计:专注,积累,探索,挑战

引言

  本文主要介绍了建立时间和保持时间

  NOTES:本文来自《芯片原厂必学课程 - 第三篇章 - IC 理论篇》技术专栏


🌏 一、建立时间(Setup Time)

  建立时间是指 D 触发器的时钟信号上升沿到来之前,数据保持稳定不变的时间。

  输入信号应该提前时钟上升沿(如上升沿有效)Tsu 时间到达芯片,这个 Tsu 就是建立时间。如果不满足建立时间要求,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器,或者说,该数据就会被永久 “跳过” 而未被 “采样”。举个例子,坐火车时需要提前到站检票安检,而不是一到火车站就可以乘坐,必须的提前到站的时间就是建立时间。

  如果数据信号在时钟沿触发前的持续时间超过了建立时间 Tsu,那么这个时间间隔就叫做建立时间裕量。

  SDC 约束命令为 set_max_delay。


🌏 二、保持时间(Hold Time)

  保持时间是指 D 触发器的时钟信号上升沿到来之后,数据保持稳定不变的时间。

  数据保持不变以便能够稳定读取,如果保持时间不满足的话,那么数据便不能被有效读取并转换为输出。

  如果数据信号在时钟沿触发后的持续时间超过了保持时间 Th,那么这个时间间隔就叫做保持时间裕量。

  SDC 约束命令为 set_min_delay。


总结(Summary)

  建立时间和保持时间这两个时序参数是测试芯片对输入信号和时钟信号之间的时间要求,也就是它们表征了时钟边沿触发前后数据需要在触发器的输入持续时间,是芯片本身的特性;其实,这期间其实还涉及到竞争 - 冒险的问题,也就是毛刺,建立保持时间的存在既是触发器内部的特性又在屏蔽毛刺方面起到了一定的作用;


延伸(Extend)

  • 恢复时间(Recovery Time)是指 D 触发器的时钟信号上升沿到来之前,低电平复位信号或者高电平清零信号保持稳定不变的时间。

  • 移除时间(Removal Time)是指 D 触发器的时钟信号上升沿到来之后,低电平复位信号或者高电平清零信号保持稳定不变的时间。

  • 传播延时(Propagation Delay)是指一个数字信号从器件(一般是 DFF,符号表示为 Tcq)的输入端到输出端所需的时间。通常在 FPGA 中是指时钟上升沿之后延时 Tcq 的时间,数据才到达寄存器 Q 端。区别于门传播延时,表示为信号通过该门所经历的时间,定义为输入信号和输出信号波形在 50% 翻转点之间的时间;

  • 组合逻辑延时(Combinational Logic Delay)是指两级寄存器之间的输出端 Q 到输入端 D 之间的组合逻辑延时,符号表示为 Tlogic。

  • 传播延时是同一个寄存器的输入到输出的延时,组合逻辑延时是不同寄存器的输出到输入的延时。

  主从式上升沿触发寄存器的案例分析(Case Analysis),如下:

  • 从电路分析可知,在时钟上升沿到来之前数据必须要被送到第一级电路的锁存器里面,即 M 端。

  • 为什么呢?因为如果时钟上升沿到来时,数据没有被送到 M 端,而当时钟上升沿一来,此时 T2 右端与 M 端的信号就会不一致,M 端为旧数据,T2 右端为新数据,那么旧数据可能会将新数据冲刷替代掉(这种情况是不确定的,处于亚稳态)。

03-06-01 主从式上升沿触发寄存器

  • 对于建立时间 Tsu,在 clk 上升沿到来时,数据要被传到 M 端,需经过 I1,T1,I3,I2。故在时钟上升沿到来前 Tsu =  TI1 + TT1 + TI3 + TI2 时间数据 D 就必须送到寄存器输入端,这个时间就是三个反相器加一个传输门的延时;

  • 对于保持时间 Th,从电路可以看到,当时钟上升沿一来,T1 就关闭了,就算关闭具有延迟,上升沿一到,数据立即就变化了,还是要经过一个反相器 I1 才能传到 T1,故不担心数据会被送进去,因此保持时间可以为零,Th = 0;当然这是对于这个主从式结构的寄存器而言,其他的寄存器的保持时间不一定为零;

  • 对于传输延时 Tcq,从电路分析,当时钟上升沿来了之后,数据还需要经过 T3,I6 才能传到 Q 端,故这个寄存器的传输延时 Tcq = TI6 + TT3。

### IIC Protocol Setup Time and Hold Time Explanation I²C (Inter-Integrated Circuit) 是一种广泛使用的串行通信协议,用于短距离通信。在设计调试基于 I²C 的系统时,理解建立时间(Setup Time)保持时间(Hold Time)对于确保数据传输的可靠性至关重要。 #### 建立时间(Setup Time) 建立时间是指在时钟信号变为有效状态之前,数据信号必须稳定的时间间隔。具体来说,在 I²C 协议中,当 SCL(Serial Clock Line)线从低电平转变为高电平时,SDA(Serial Data Line)上的数据必须在此之前已经稳定并准备好被读取[^1]。如果数据未在此时间内准备就绪,则可能导致接收器接收到错误的数据。 #### 保持时间(Hold Time) 保持时间则是指在时钟信号变为无效状态之后,数据信号仍需维持不变的一段时间。对于 I²C 而言,这意味着即使 SCL 线再次切换到低电平,SDA 上的数据也需要继续保留一段时间以便于接收设备能够正确采样该位值。不足的保持时间同样会引起误码率增加或者完全无法正常工作的情况发生。 #### 应用场景分析 为了满足上述两个参数的要求,硬件工程师通常会考虑以下几个方面来优化实际电路性能: 1. **选择合适的器件**:不同型号芯片可能具有不同的输入寄存延迟特性,因此选用符合目标频率下所需最小/最大setup & hold times规格的产品非常重要。 2. **布板布局技巧**:通过减少PCB走线长度降低信号反射效应以及匹配阻抗等方式改善信噪比(SNR),从而间接提升timing margin。 3. **软件层面补偿机制**:某些情况下可以通过调整驱动程序内部算法实现动态适应变化中的环境条件比如温度漂移等因素引起的变化。 以下是简单的伪代码展示如何模拟设置SCL周期以保证足够的setuptime holdtime: ```c void iic_start() { sda_high(); // release data line first delay_us(SETUP_TIME); // wait for setup time before pulling clock low scl_low(); } void iic_stop() { scl_high(); // ensure clock is high during stop condition creation delay_us(HOLD_TIME); // maintain this state as per required hold period after releasing data again. sda_high(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

新芯设计

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

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

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

打赏作者

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

抵扣说明:

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

余额充值