【跨时钟域】跨时钟域基础概念


前言

跨时钟域的内容很多,这一篇先学习一下基础概念,建立时间和保持时间


一、建立时间和保持时间?

在这里插入图片描述

建立时间和保持时间都是对于一个触发器来讲的,
建立时间(setup time) :时钟沿到来前输入信号D1必须保持的最小时间
保持时间(hold time):时钟沿到来之后输入信号D1必须保持稳定的最小时间
clk to q time :建立时间和保持时间满足要求之后,从时钟沿到来时刻到输出Q1变化至稳定的时间。
 如果建立时间或者保持时间不满足要求,或者是Q1输出端的信号在 ck to q的时间之后才保持稳定的话,我们就说这个触发器发生了亚稳态(meta stability)
在这里插入图片描述
重点来了:
建立时间和保持时间,还有亚稳态的定义都很直白,但是为什么需要建立时间还有保持时间呢?
触发器原理图如下:
在这里插入图片描述
触发器由主从两个锁存器构成,在时钟为低的时候,T1传输门打开,主锁存器工作,可以看出来,D输入信号经过了两个门电路的延时才到达4,如下图所示
在这里插入图片描述
为什么会存在这个建立时间的要求呢,问题就出在这两个门电路的延时上面,我们把门电路延时定义为Tg
在这里插入图片描述

假设此时正好处在时钟上升沿的那个时刻T,那么此时2点处的数据是T-Tg时刻的数据,4点处的数据是T-2*Tg处的,如果这两处数据不同,锁存器无法正确锁存,因此setup时间要求在采样前一段时间就保持稳定
在这里插入图片描述
那么为什么会有锁存时间要求呢,因为T1这个传输门,假设传输门在T时刻就立刻关断,那么没有问题,保持时间可以是0,但是传输门关断需要时间,如果在关断这段时间数据发生了变化,同样的主锁存器也没锁存数据。

总结一下:
如果数据不满足建立时间或者保持时间的要求,锁存器可能无法锁存住数据,因此可能发生
1、Q的值不是D的值,数据错误
2、Q变稳定的时间超过了ck to q的shijian
3、Q稳定的值可能是随机的

二、亚稳态

当系统内只有一个时钟的时候,只要保证建立时间和保持时间满足要求,亚稳态就不会发生。
但是如果系统内存在两个时钟,彼此之间没有任何关系
在这里插入图片描述
在这里插入图片描述
adata的数据相对aclk是有可能在任意时间发生变化的。这个时候b触发器,就很有可能发生亚稳态。那么如何解决亚稳态的传递呢?
在这里插入图片描述
在后级电路接上两个触发器,这样的话,就算第一个触发器发生了亚稳态,由于亚稳态最终会稳定,因此第二级的触发器最终能采样到稳定的信号,这样就确保了亚稳态不会向后传递,这里声明一个点,这种方法只能确保数据不发生亚稳态,但是不可以保证数据是正确的

单比特信号同步要求

之前讲过打两拍保证亚稳态不传递下去,那么想让一个脉冲信号同步到另一个时钟域该怎么办呢?

1个fail test

在这里插入图片描述
这是一个单比特信号在进行跨时钟域的同步,但是这个信号有点短,没有碰见目标时钟域的沿,导致信号完全无法被同步。

2 单比特信号同步要求

在这里插入图片描述
要求就是,信号必须稳定不变连续碰见目标时钟域的三个沿(上升或者下降)。
讲到这里,其实还是有问题,如果两个时钟域时钟频率不同,那么在a时钟域拉高1T的信号,到了b时钟域可能会拉高好几T,我们希望是是在a始终域一个单周期的脉冲到了b时钟域也还是单周期的一个脉冲。那么如何做呢,这里借用一种方案,把a时钟域的脉冲信号转换为level信号,使用打两拍同步这个level信号,在b时钟域将这个level信号转换为脉冲信号。

在这里插入图片描述
关键就是 toggle flop,当输入是一个单周期的脉冲时,toggle flop只会翻转一下。
在这里插入图片描述
这里就实现了plus信号向level信号的转换。由于这个level信号要做时钟域的同步,因此要求这个level信号至少持续3个沿,也就是两个plus之间的间隔要求持续三个沿。

总结

到这里,单笔特信号的跨时钟域同步就讲完了。总结一下:
1、使用打两拍的方法进行时钟域的同步,无法保证数据传递的正确性,只能保证亚稳态不继续传递下去
2、使用打两拍的方法进行时钟域的同步,被同步的信号至少要碰见目标时钟域的三个边沿,否则可能信号会被漏掉
3、如果想实现a时钟域产生一个脉冲,b时钟域也产生一个脉冲,可以使用将脉冲信号转换为level信号的办法,并在b时钟域将level信号反变为脉冲信号。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FPGA(可编程逻辑门阵列)上的时钟相位指的是时钟信号的到达时间与其周期的关系,即时钟信号的相对位置。FPGA中包含一个全局时钟网,该时钟网将时钟信号传递到所有逻辑资源。在设计中,时钟信号通常被用作触发器和寄存器的触发源,以确保数据在正确的时机进行处理。 时钟相位对FPGA的稳定性和性能具有重要影响。在设计和布局FPGA时,需要确保不同模块中的时钟相位保持一致,以防止时钟抖动和时序问题。为此,FPGA设计师需要考虑时钟分配和时钟约束,以确保时钟信号在整个芯片中具有一致的相位。如果时钟信号的相位差异过大,可能会导致时钟偏斜或信号搁置,影响系统的稳定性和性能。 在设计中,时钟相位通常使用时钟分频器、锁相环(PLL)或延迟锁定环(DLL)等技术来调整。时钟分频器可以将时钟信号分频为较低频率,从而调整时钟相位。PLL和DLL则可以通过反馈机制自动调整时钟信号的相位,以保持相位一致。 总之,时钟相位是FPGA设计中一个重要的概念,关系到系统的稳定性和性能。合理处理时钟相位可以避免时序问题和时钟抖动,并确保系统正常运行。设计师需要注意时钟分配和时钟约束,并使用相应的技术来调整时钟相位,以满足设计要求。 ### 回答2: FPGA的时钟相位是指在FPGA芯片内部用来驱动各个逻辑元件的时钟信号的相位差。FPGA设计中的时钟相位非常重要,它直接影响到电路的性能和可靠性。 FPGA内部的时钟相位是由时钟网络分配和时钟分频器生成的。时钟网络负责将时钟信号传输到所有逻辑元件中,以确保它们按照统一的时间基准进行操作。时钟分频器则用于将高频的输入时钟信号分频为低频的输出时钟信号,以满足不同逻辑元件的时钟要求。 在FPGA设计中,时钟相位的合理设置可以优化电路的性能和功耗。例如,通过合理设置时钟相位可以实现时序优化,减少设计中的时序违反问题,提高电路的工作速度和稳定性。此外,时钟相位的合理设置也可以有效地减少功耗,提高电路的能效。 在实际应用中,设计者通常需要根据具体的设计需求来调整时钟相位。例如,在需要进行时序控制的电路中,设计者需要控制时钟相位来确保逻辑元件按照正确的顺序进行操作;而在需要减少功耗的电路中,设计者则可以通过调整时钟相位来减少冗余的时钟周期,降低功耗。 总之,FPGA的时钟相位在设计中起着重要的作用。合理设置时钟相位可以优化电路的性能和功耗,提高电路工作的速度和稳定性。因此,在FPGA设计中,对时钟相位的理解和调整是非常重要的。 ### 回答3: FPGA(现场可编程门阵列)是一种电子设备,可以根据需要重新编程,以实现不同的功能。时钟相位是指时钟信号的相对时间,它对FPGA设备的性能和功耗有着重要影响。 当FPGA设备在执行某些操作时,通常需要使用时钟信号来同步各个部件的工作。时钟相位决定了这些部件在每个时钟周期内的工作时机。简单来说,时钟相位可以理解为时钟信号的延迟或提前量。 在FPGA中,时钟相位可以用来控制各个时钟域之间的数据传输。不同的时钟域具有不同的时钟频率,相位误差会造成数据传输错误。因此,正确设置时钟相位对于保证数据传输的准确性非常重要。 为了调整时钟相位,FPGA通常提供了一些时钟管理资源,如时钟分频、时钟缓冲和PLL(锁相环)等。时钟分频可以将时钟信号的频率减小或增大,从而改变时钟周期;时钟缓冲可以调整时钟信号的延迟;PLL可以通过反馈控制,使得输出时钟信号与输入时钟信号的相位差保持在一个合适的范围内。 为了正确理解和使用时钟相位,我们需要考虑时序约束和时序分析。时序约束是指在设计FPGA时给出的一些限制条件,如数据的到达时间和时钟的最大频率等。时序分析则是通过各种工具来验证设计是否满足时序约束,以保证设计的正确性。 总之,对于FPGA设计来说,正确理解和设置时钟相位非常重要。它不仅影响到设计的性能和功耗,还直接关系到数据传输的准确性。通过合理地设置时钟相位,我们可以有效地优化FPGA设计,提高系统的性能和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值