FPGA时序分析里tsu、th、tco、tpd、tcd是什么?

前言

TSUTHTCOTPDTCD 是用于描述一个完整的时钟周期中不同的时段:
TSU全称Setup Time:建立时间 ,时钟信号在有效沿到来之前输入信号需要保持的稳定时间
TH全称Hold Time:保持时间 ,在到达时钟有效沿之后输入信号需要保持的时间
TCO全称Clock to Output Time:时钟输出时间 ,指的是当时钟处于有效沿时输入信号的输出时间
TPD全称Propagation Delay Time:传播延迟时间 ,输入信号到输出信号最大延迟
TCD全称Time Clock Delay:无效延迟时间 ,输入信号发生变化到输出信号发生变化时的延迟

这些时间单位主要是用于描述组成时序电路中的触发器在进行信号翻转时的不同时间段,下面我将详细并手画时序图来解释它们在一个时钟周期时所代表的意义。

知识补充

时序信号

时序信号是用来描述时序电路中不同时间段下信号的状态,TSUTHTCOTPDTCD 都是用来描述在时序电路中一个完整的时钟周期中不同时间段下信号处于什么状态的最大持续时间。

简单理解为一个时钟周期里TSUTH分别对应了信号处于什么样的状态。

D触发器

D触发器 是用来构建成为时序电路最基本的单元,它属于RS触发器的一种变体,它是基于RS触发器修改而来的,由于本文核心重点不涉及到D触发器原理,所以不对它原理进行详细的阐述,仅让大家对它有个大概的了解,下图是一张典型的D触发器原理图:

它是由一个非门和四个与门组成,它带有类似锁存器的功能,能够在输入信号断开的情况下保持原有的信号不变,原理就是利用与非信号将D、CLK两根pin给不同电平来与非门结合输出,当CLK为高电平时,会对D进行采样,当CLK为低电平时则停止采样Qa端输出采样时的电平,即使此刻D发生了电平变化,Qa端仍然保持CLK有效时的采样输出,Qb输出的是反向电平,与Qa端相反。

什么是时序电路?

时序电路通俗易懂的来说就是输出状态不光与输入状态有关还与前一刻的自身状态有关,而组合逻辑则只单纯由当前输入状态决定它的输出状态。

组合逻辑电路最经典的就是与门,L输出永远与AB有关

而时序逻辑电路就不一样了,D触发器 就是一个经典的时序逻辑电路,它内部结构的特殊性使其具有锁存 的功能(原理图可以参考D触发器章节)

时钟C1 时,输出Q 会随着输入D输入 而进行翻转输入D0 那么输出Q 就是0输入D1 那么输出Q 就为1 ,当时钟C0 时,无论输入D 怎样变化,输出Q 始终维持时钟C 变为0 之前最后一个有效沿的输入D 的状态,此时当时钟C1 时,若输入D1 且当前输出Q 输出为1 那么状态不会发生任何变化,若输入D 输入为0 时,那么此时内部会产生状态翻转 ,这个翻转 是需要时间的,不是瞬态 完成的,而组合电路比较简单一般是瞬态完成 ,时序电路是需要一定时间才能完成翻转 ,因为时序电路 内部是由多个门逻辑 组成的,所以电平翻转也是需要时间才能完成,而组合逻辑一般只有一个门,所以翻转一般可以理解为是瞬态的。

经过上面的了解,我们在来理解一下我刚刚说的这句话:
输出状态不光与输入状态有关还与前一刻的自身状态有关

这句话是想表达输入状态是动态变化的,它不仅依赖于当前的输入,还要考虑之前的状态,例如:

第一个时刻:当CLK1 时,D1Q 输出等于1

第二个时刻:当CLK0 时,D0Q 输出等于1

第三个时刻:当CLK1 时,D0Q 输出等于0

可以看到当CLK0 也就是无效状态下,Q的输出都是前一刻的状态,无论D怎样变化Q的输出都不受任何影响,而CLK为1时,处于时钟有效状态下,Q的输出就受到D输入信号的影响发生了改变。

所以时序组合逻辑简单来说就是一个带有记忆功能的逻辑电路,当输入无效时它依赖前一刻的状态,当输入有效时它依赖输入信号。

Tips

时序逻辑电路可能会产生空翻现象

空翻现象是指当时钟C有效时,输入D多次进行翻转导致Q输出也进行多次翻转变化,最终当时钟C有效期结束时锁住的电平是错误的,这种情况一般是输入信号发生了抖动不稳定导致的,因为它不是瞬态,当外部信号发生翻转时内部电路也需要逐步进行翻转导致这期间有一定亚稳态期间存在,如果输入信号发生了干扰或者抖动触发器内部进行多次翻转在时钟C结束时有可能会造成锁了错误的电平值

TSU

TSU是指建立时间,在时钟信号稳定之前数据信号需要保持的时间,通过下面一张图可以直观的看出它的意义:

在时钟信号稳定之前可以看到它的波形是跳变的比较厉害

所以这段时间时钟信号是处于不稳定状态,类似亚稳态的情况,这个在时钟信号稳定之前的时间就叫做TSU,在这个时间范围里数据信号需要提前保持稳定状态。

TH

TH是指时钟信号到达有效沿之后输入信号需要保持的时间,前面也说了组成时序逻辑电路的最小逻辑单元一般是RS触发器,而触发器内部是由多个门电路组成的,电流流过门电路也是需要时间才能完成电压的升压与降压,它不是瞬间完成的,所以这段时间外部信号需要保持一个相对稳定的状态,如果电平在此期间发生多次翻转会导致Q的输出是不稳定的。

TCO

时钟输出时间,表示当输入信号处于稳定边沿时在到触发器输出端数据寄存器或触发器发生变化时所需要的时间,下图描述了TCO 所处的时序位置

需要注意TCO不是Q端发生变化的时间,而是到达Q端连接的另外一方例如寄存器或触发器一方发生变化时所需要的时间,通过上面时序图可以看到TCO结束时间在Q的比电平变化端,这意味着进入了下一个数据周期,代表上一个数据周期已经发送完成了。

Tips

有的时序图里会将TCO的起始位置从HOLD结束时间开始计算

TPD

传播延迟时间,输入信号传播到输出信号稳定时的最大延迟,在这个延迟之后输出将不再发生任何改变,可以理解为输入信号输入时经过触发器内部在到触发器稳定输出所需要的时间,它与TCO不同,TCO是建立在TH处于稳定保持时刻的,下图可以直观的看明白它在时序中所代表的意义:

TCD

无效延迟,也就是当输入信号进入到触发器在到Q发生变化所需时间,注意它与TPD最大的区别在TPD是Q稳定时间,而TCD是指Q变化时间,它不包含稳定时间,它仅代表当输入信号来临时经过触发器并在Q端产生变化时所需要的时间,简单来说就是输入信号发生变化在到输出信号发生变化的时间差就是无效延迟,假设输入信号是在时钟周期的23ns开始发生变化,输出信号是在25ns发生变化,25ns-23ns=2ns,2ns就是无效延迟。

TCD比较特殊,之前的画的时序图里除了时钟信号画了毛刺以外D与Q是没有画毛刺的,这里为了更直观的给大家看到TCD的意义,对Q做了一些修改:

电平改变是需要时间的,并且这期间可能会发生毛刺,它一开始是不稳定的状态,可能会收到干扰之类的,但是只要输出端口电平开始发生改变,就是TCD的时间,不考虑稳定因素。

Tips

需要值得注意的是,所有的时序都是在TSU之后也就是时钟信号稳定之后才有意义

总结

TSU:建立时间 ,时钟稳定前D需要保持有效沿的最大延迟
TH:保持时间 ,时钟稳定之后,D需要保持的最大延迟,这个时间段可以用于稳定采样
TCO:时钟输出时间 ,输入信号发生变化时在到Q端输出发生变化并且传播到连接在Q端数据寄存器或触发器发生变化时所需要的最大延迟
TPD:传播最大延迟 ,输入信号发生变化时输出信号稳定所需要的最大延迟
TCD:无效延迟 ,当输入信号发生变化时在到输出信号发生变化时的最大延迟,不考虑稳定

以上所有时间除了TSU以外都是建立在时钟处于有效沿的情况下

上面一直在说最大延迟,其实这个不是固定的,主要还是看电路设计,一般设计了一个芯片或者sensor,在手册里都会画好时序图,方便开发者们采样以及设计对应的电路,并且所有时序它不是固定的,但意思是一样的,比如TCO的开始时间有的是从TH结束之后开始计算,而有的则是TH开始时就计算。

通过这些时序我们可以用来做时序约束,方便我们生成抗干扰可靠的以及能满足我们要求的时序组合电路

Tips

TCD也称TCQ(Time Clock-to-Q Delay,时钟到Q的延迟),即输入发生变化在到Q端发生变化的延迟

相关推荐
fei_sun10 小时前
【Verilog】第一章作业
fpga开发·verilog
深圳市雷龙发展有限公司longsto11 小时前
基于FPGA(现场可编程门阵列)的SD NAND图片显示系统是一个复杂的项目,它涉及硬件设计、FPGA编程、SD卡接口、NAND闪存控制以及图像显示等多个方面
fpga开发
9527华安16 小时前
FPGA实现PCIE3.0视频采集转10G万兆UDP网络输出,基于XDMA+GTH架构,提供工程源码和技术支持
网络·fpga开发·udp·音视频·xdma·pcie3.0·万兆网
able陈16 小时前
为什么verilog中递归函数需要定义为automatic?
fpga开发
fei_sun16 小时前
【Verilog】第二章作业
fpga开发·verilog
碎碎思17 小时前
如何使用 Vivado 从源码构建 Infinite-ISP FPGA 项目
fpga开发·接口隔离原则
江山如画,佳人北望19 小时前
fpga-状态机的设计及应用
fpga开发
晓晓暮雨潇潇21 小时前
Xilinx IP核(3)XADC IP核
fpga开发·vivado·xadc·ip核
CWNULT21 小时前
AMD(Xilinx) FPGA配置Flash大小选择
fpga开发
碎碎思1 天前
很能体现FPGA硬件思维的一道面试题
fpga开发