定义
:触发器在时钟上升,数据输入端的数据必须保持不变。 触发器间决定了触发器之间组合逻辑的最大延迟。 :触发器在时钟上升沿到来,数据输入端的数据必须保持不变。 保持时间决定了触发器之间组合逻辑的最小延迟。
为什么要满足建立时间和维护时间
因为触发器内部数据的形成需要一定的时间。 触发器进入亚稳态,进入亚稳态后,触发器的输出将不稳定 0 和 1 它们之间的变化一个恢复时间来稳定其输出,但稳定值不一定是您的输入值。
模型分析
如图所示,需要一个模型来,如图所示。起点是源触发器 D1 目的触发器终点是目的触发器 D2 假设起点已满足设置时间和维护时间的要求,现在分析终点采样时间是否也符合要求。
参数:
- Tco: 数据采样正确后从 D 端到达 Q 触发器的固有属性不能改变端延迟
- TDelay: D1 输出端到 D2 组合逻辑延迟和布线延迟
- Tsu: 触发器的建立时间,触发器的固有属性,不能改变
- Th: 触发器的固有属性不能改变
- Tclk: 时钟周期
- t1: 假设源时钟为 clka,clka 到达 D1 的延时
- t2: 同 t1,是 clka 到达 D2 的延时
假设 clk 无延迟传输:
先假设 clk 如果传输没有延迟,每个时钟的上升沿都会同时到达 D1 和 D2。 时间起点,第一个时钟 D1 采样时间,时间结束,第二个时钟 D2 采样时间。物理起点,D1 输入端,物理终点,D2 的输入端。
满足建立时间(关注数据头):
当第一个时钟到来时,数据 data 的头部从起点①开始传输,通过 Tco 到达②,在经过 TDelay到达③。根据建立时间的要求,数据需要在时钟到达前保持稳定的最小时间 Tsu,假设这里只是满足建立时间的要求,数据 data 到达③后经过 Tsu 时间到了④。计时从第一时钟沿开始,第二时钟沿采样,采样时 data 在位置④,则有 如果不是最极限的情况,第二个时钟就会到达③时,data 头部已超过④,假设超过④的时间为 t,则有 即有 如果这条路径是关键路径(Delay 最长),系统能跑到的最大频率是
保持时间满足(关注数据尾):
当第二个时钟到来时,D2 采集数据 data,同时 D1 在采集数据 new data,所以 data 当第二个时钟到来时,尾巴从第二个时钟开始 D1 的输入端①通过 Tco 和 TDelay 后到达 D2的输入端③,所以第二个时钟到来后 data 稳定时间为;根据维持时间的定义,有
加上 CLK 的传输时延
事实上 Clock 传输也有延迟,如图所示,两个触发器的源时钟是 clka,到达 D1 需要t1 到达的时间 D2 需要 t2 的时间,t2?t1 其实就是我们常说的 clock skew(时钟偏斜)是指同一时钟沿达到 D1 和 D2 如果 D1 和 D2 离得很远,然后相应的 clockskew 就会更大。
建立时间
加上 clk 传输延迟改变了第二个时钟 D2 的时间,从 Tclk 变为 Tclk t2?t1,所以有 ; 因为 t2 大于 t因此,对左边时间的限制实际上是放宽了。
保持时间
与建立时间相反,由于第二个时钟沿着晚来,实际上对维持时间的要求更加严格 ;
从以上分析可以看出,数据运行得越快(TDelay 时钟传输时间越小)越大(clock skew 对建立时间的满足越大,对维持时间的满足就越不利,对维持时间越有利,对建立时间越不利。建立时间也与时钟周期有关。时钟周期越小,建立时间违规的可能性就越大,而保持时间与时钟周期无关。在设计中,我们经常关注建立时间是否满足要求,因为它与我们可以使用的最小时钟周期有多小,是否可以运行到预定的工作频率有关,因为时钟通常是特殊的快速线路,很难延迟时钟传输,所以一般不会保持时间违规。
解决办法
解决建立时间违规的办法
- 减少时钟频率,即增加时钟周期
- 再次在时钟路径上添加缓冲器(buffer),让时钟迟到。
- 更换具有较小器件延迟的触发器。
- 组合逻辑优化或插入装配线,缩短关键路径。
保持时间违规的解决方案
- 插入数据路径 buffer
- 更换具有更大器件延迟的触发器
- 优化时钟路径,使时钟更早到达。
基本相反。但保持时间与时钟周期无关。
以上是文字描述。参考B站某博主的文档,只支持自己学习,侵权必须删除!!!如果你不理解文本部分,这里有另一个视频解释。
补充知识点
时间抖动 jitter/偏移 skew
:时钟频率因晶振本身的稳定性、电源和温度变化而发生变化,即 jitter,指时钟周期的变化,即。平均值为 0 平均变量。指两个时钟周期之间的差异,这是在时钟发生器内部产生的,以及晶体振动或 PLL 内部电路相关,布线对其无影响。由于与晶体振荡器本身的工艺有关,其在设计中的影响是不可避免的,通常只能在设计中留下一定的余量。
:指同一时钟产生的多个子时钟信号之间的延迟差异。。由于时钟源到达不同寄存器所经历的路径驱动和负载不同,时钟边缘的位置也不同,因此带来了 skew。布局布线完成后,物理路径延迟固定,因此考虑到时钟偏移,可以避免偏移的影响。
毛刺 glitch
定义
FPGA 毛刺现象是长期困扰电子设计工程师的设计问题之一, 它是影响工程师设计效率和数字系统设计效率和可靠性的主要因素。。毛刺现象在 FPGA 有时任何毛刺都会导致系统错误,尤其是对尖峰脉冲或脉冲边缘敏感的电路。
如何解决这个问题?
1 使用冗余项法
用冗余项消除毛刺 2 方法:代数法和卡诺图法都是通过增加冗余来消除危险的,但前者是函数表达式,后者是真实值表。以卡诺图为例,如果两个卡诺圆相切,相应的电路可能会产生危险。因此,修改卡诺图,在卡诺图的两个圆相切处加一个圆,以增加多余的项目来消除逻辑冒险。但这种方法不能消除计数器型产生的毛刺。
2 采样法
由于冒险主要发生在信号电平跳变的时刻,即在输出信号的建立时间内产生毛刺,而不是在维护时间内,因此,在输出信号的维护时间内,可以消除毛刺信号的影响,常用的采样方法有 2 种:。这种方法必须保证采样信号在合适的时间产生,并且只适用于对输出信号时序和脉冲宽度要求不严的情况。锁定法,是利用 D 触发器的输入端 D 对毛刺信号不敏感的特点是,在输出信号的维护时间内,用触发器读取组合逻辑的输出信号。 Q=D,当输入信号有毛刺时,只要时钟不上升,输出就不会有毛刺。这种方法类似于将异步电路转化为同步电路,实现简单,但同样会涉及到时序问题。
3 吸收法
由于产生的毛刺实际上是高频窄脉冲,故增加输出滤波,在输出端接上小电容 C 就可以滤除毛刺。但输出波形的前后沿将变坏,在对波形要求较严格时,应再加整形电路,该方法不宜在中间级使用。
4 延迟法
因为毛刺最终是由于延迟造成的,所以可以找出产生延迟的支路。对于相对延迟小的支路,加上毛刺宽度的延迟可以消除毛刺。但有时随着负载增加,毛刺会继续出现,而且,当温度变化,所加的电压变化或要增加逻辑门时,所加的延迟是不同的,必须重新设计延迟线,因而这种方法也是有局限性的。而且采用延迟线的方法产生延迟会由于环境温度的变化而使系统可靠性变差。
5 硬件描述语言法
这种方法是从硬件描述语言入手,找出毛刺产生的根本原因,改变语言设计,产生满足要求的功能模块,来代替原来的逻辑功能块。