跨时钟域问题
FPGA设计中跨时钟域的问题与方法
图2 :反馈方式设计电路
f
— — —— — —— —驯
f
T l x l 一 一
M L _ _
+ l — — — 衄 l
+ .
n^ ^ ¨
【 关键词 】F P G A跨 时钟域 亚稳 态
3 . 2多结构 同步设计
对 于多位信 号在不 同的时钟域之 问传输 , 多路复用设计可 以保持跨 时钟 域传 输时的正确 Ar r a y), 即 现 场 可 编 程 门 阵 列 , 它 是 在 性 ,如下 图所示 。多路 复用 设计可以适用于如 P A L、GAL、C P L D 等可编 程期 间的基 础上进 下的设计 中,一组数据 需要 从一个 时钟域传输 步发展起 来的一种可编程 门阵列 。它是作 为 到另外一个时钟域 ;当断言时,有标 记的表明 专用 集成 电路 ( A S I c)领 用 中的一 种 半定制 数据信号稳定的一组信号 。 电路而 出现 的,既解决 了定制 电路 的不足 ,又 . 3握 手设 计 克服 了原 有可 编程 期 间 门 电路 数 目有 限的缺 3
误。
亚 稳态 现象 :数 字信 号通 过异 步 时钟域 时,如果时钟信号 不能满 足触发器的建立时 间 或保持时间 ,此时很可 能产生亚 稳态现象。 毛刺 现 象: 同步逻 辑 电路 中产 生毛 刺现 象主要取决 于数字 信号传播时延 ,这些毛刺有
可能会被成功锁存 ,也有可能导致错误脉冲在 同步装置 中输 出。 多扇 出现象 :在 同步 逻辑 电路 中,由于
握 手 设计 是基 于 以下协 议进 行 设计 的: 源 时钟域 向目的时钟域发 出请求 ,而且该请 求 信 号一直保持着,直到源时钟域接受到 目的时 钟 域的返回信号 ;目的时钟域接收到请求信 号 之 后,连 续不断地发送确认信号 ,直到其接 收 到源 时钟域是重复断言 的。握手机制可 以设计 为 简单 的反馈 同步器,也可 以设计为全握手机 制或者 半握手机 制。 3 . 3 . 1 反馈 同步 设计 对于图 2 所示 ,使 用 的是反 馈 同步 设计 实 现 的逻辑 电路。对 于 该 电路来 讲 ,时钟 A 和 时钟 B之间的频率差值是没有极 限要求 的, 时 钟 A 的频率 可 以比时钟 B的频 率低 ,也可 以 比时 钟 B 的频率 高。然 而该 电路 使用 的是 信 号 A 由一个 时钟 周期 组成 ,而且从 当 前脉 冲到下一个脉冲 的时 间间隔要 大于两倍的时钟 A和 两倍的时钟 B的时 间之和 。 3 - 3 . 2请求 . 应答 设计 请求和 回答 传输方式在 发送信 号 T x和 接 收信号 R x之间需要双 重 同步 ,而且数据 的保 持时间必 须保持 到发送信 号 T x收到确认无 效 之后,如图 3所示。
关于FPGA设计中多时钟域和异步信号处理有关的问题
有一个有趣的现象,众多数字设计特别是与FPGA设计相关的教科书都特别强调整个设计最好采用唯一的时钟域。
换句话说,只有一个独立的网络可以驱动一个设计中所有触发器的时钟端口。
虽然这样可以简化时序分析以及减少很多与多时钟域有关的问题,但是由于FPGA外各种系统限制,只使用一个时钟常常又不现实。
FPGA时常需要在两个不同时钟频率系统之间交换数据,在系统之间通过多I/O接口接收和发送数据,处理异步信号,以及为带门控时钟的低功耗ASIC进行原型验证。
本章讨论一下在FPGA设计中多时钟域和异步信号处理有关的问题和解决方案,并提供实践指导。
这里以及后面章节提到的时钟域,是指一组逻辑,这组逻辑中的所有同步单元(触发器、同步RAM块以及流水乘法器等)都使用同一个网络作为时钟。
假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域。
假如设计有两个输入时钟,如图1所示,一个时钟给接口1使用,另一给接口2使用,那么我们说这个设计中有两个时钟域。
图1:双时钟域设计平时我们在设计中遇到的门控时钟、衍生时钟以及事件驱动的触发器都可归为时钟域类别。
如图2所示,通过一个简单门控时钟创建了一个新的时钟域。
我们知道,这类时钟控制在FPGA设计中并不被推崇(可以使用时钟使能替代时钟门控),然而它却非常有利于我们理解时钟域这一概念。
本章我们将着重详细讨论以下主题:•两个不同时钟域之间传输信号。
•亚稳态的产生以及对设计的可靠性的影响•通过相位控制避免亚稳态•在时钟域之间传输单个信号,将信号打两拍•使用FIFO在时钟域之间传输多位数据•使用分区同步器模块提高设计的组织架构•处理ASIC验证原型里的门控时钟•建立一个单时钟模块•自动门控移除图2:通过门控时钟创建的时钟域一、跨时钟域设计中包含多时钟域,首先要解决的是在不同时钟域之间传输信号的问题。
信号跨时钟域传输将会是一个大问题,原因如下:1、信号跨时钟域传输产生的故障总是不太容易复现。
单比特跨时钟域处理方法
单比特跨时钟域处理方法在数字电路中,时钟信号是起到同步作用的关键因素之一,即所有电路的状态变化都必须在时钟信号的周期内完成。
时钟信号的不同会导致电路之间的时间差异,从而产生跨时钟域。
跨时钟域的问题会导致电路中可能存在的同步和异步的问题,在设计中需要特别注意。
单比特跨时钟域处理方法是一种实现跨时钟域处理的方法,主要应用在组合逻辑电路设计中。
它的原理是将跨时钟域的数据进行缓存,使其数据符合同步时钟的工作要求,并采用同步后的数据继续执行。
1. 缓存跨时钟域的数据。
数据在跨时钟域之间传输时,必须先将数据进行缓存,并存储到一个内部缓存区中。
2. 同步跨时钟域的数据。
将存储在内部缓存区中的数据采用同步时钟进行同步,从而使其数据符合同步时钟的工作要求。
3. 执行跨时钟域的操作。
采用同步后的数据,继续执行组合逻辑电路的操作。
单比特跨时钟域处理方法虽然在实现跨时钟域处理方面有很大的优势,但同时也存在一些技术难点:1. 数据不一致问题。
由于不同时钟域之间的时钟信号存在不同步,可能会导致时序数据在不同时间上的不一致性,从而出现数据不一致的问题。
2. 异常操作问题。
由于同步后的数据仍然存在时序数据的延迟,可能会导致电路的异常操作,从而对电路的稳定性产生影响。
3. 滞后时间问题。
采用单比特跨时钟域处理方法会增加电路的滞后时间,从而导致电路的工作速度下降。
单比特跨时钟域处理方法在数字电路设计中有广泛的应用。
具体应用包括以下方面:1. 数据通信方面。
在芯片设计中,由于单片集成电路与外部设备之间的时钟可能不同步,因此需要采用跨时钟域处理方法对数据进行缓存和同步,从而实现与外部设备之间的数据通信。
2. 处理器设计方面。
在处理器设计中,由于不同模块的时钟信号可能存在不同步的问题,因此需要采用跨时钟域处理方法,使得所有模块的操作在同步的时钟周期内完成。
3. 高速信号上升方面。
在高速信号上升方面,跨时钟域处理方法也可以用于信号的缓存和同步,以避免信号传输时产生的延迟。
fpga跨时钟域处理方法
fpga跨时钟域处理方法fpga 跨时钟域处理方法1.什么是FPGA跨时钟域处理?FPGA跨时钟域处理是指在FPGA中处理不同的时钟域的信号,把不同的时钟域的信号转换成成某种特定的格式或者特定算法,以便FPGA 能够处理这些不同的时钟域的信号。
2. FPGA跨时钟域处理的优势(1)更低的功耗,由于时钟频率较低,其功耗比信号时钟频率高的系统低得多。
(2)更高的可靠性,由于时钟频率较低,其硬件的可靠性比信号时钟频率更高。
(3)更快的切换和转换速度,在跨时钟域中,由于只需要处理少量的信号,因而切换和转换的速度会更快。
(4)更小的面积,由于少量的信号需要被转换,相应的FPAG占用的面积也会更少。
3. FPGA跨时钟域处理的实现(1)时间轴划分:第一步是将FPGA转换时钟域中需要处理的信号根据频率分类,并将其根据实际应用场景放置在不同的时间轴上,以便进行后续的处理。
(2)位转换和跨域转换:第二步是将这些处理过的信号转换为不同时钟频率域的信号,这种转换可以采用位级或字节级转换等,以便这些信号能够更好的处理。
(3)中转处理:第三步是将不同时钟频率域的信号做一个中转处理,将其转换成FPGA能够处理的信号,再对每个时钟域上的信号进行处理,完成跨时钟域处理。
4. FPGA跨时钟域处理的应用(1)通信领域:一些通信应用中会存在部分接收信号的处理只能在低频率的时钟域上完成,比如协议及协议解析。
采用FPGA跨时钟域处理,可以有效的提高系统的处理能力。
(2)信号处理领域:有不少信号处理应用一般要求高速处理,这就需要高频率的时钟域;而有些信号处理应用却完全不需要,而FPGA跨时钟域处理可以有效解决这个问题,同时又能提高系统的可靠性。
5.总结FPGA跨时钟域处理是将不同时钟域的信号转换为特定类型或特定算法,以便FPGA能够处理这些不同的时钟域的信号。
它具有更低的功耗、更高的可靠性、更快的切换和转换速度以及更小的面积等优势。
FPGA跨时钟域处理的具体步骤包括时间轴划分、位转换和跨域转换、中转处理等。
快时钟到慢时钟跨时钟域处理
快时钟到慢时钟跨时钟域处理随着现代电子技术的不断发展,各种智能设备越来越普及,而这些设备中都包含了各种不同的时钟。
面对不同的时钟,如何进行跨时钟域处理成为了一个重要的问题。
本文将围绕这个问题展开讨论。
一、时钟域时钟域是指在一个系统中,由于时钟信号的不同而形成的不同的时钟区域。
在一个系统中,可能会有多个时钟域,每个时钟域都由一个时钟信号驱动。
例如,一个处理器的时钟域和一个外设的时钟域就是两个不同的时钟域。
二、时钟域的跨越在一个系统中,不同的时钟域之间需要进行数据的传输和交互。
但是,由于不同的时钟域具有不同的时钟频率和时钟相位,因此在传输和交互数据时会遇到一些问题。
例如,如果一个时钟域的时钟频率是100MHz,而另一个时钟域的时钟频率是50MHz,那么在传输数据时就需要进行频率的转换。
又例如,如果一个时钟域的时钟相位发生了变化,那么在传输数据时就需要进行时钟相位的校准。
三、跨时钟域处理的方法为了解决跨时钟域处理的问题,有以下几种方法。
1.同步方法同步方法是指在不同的时钟域之间建立同步信号,使得数据能够在同步信号的边沿进行传输。
这种方法需要在两个时钟域之间建立同步电路,并且需要在同步电路中添加缓存器来保证数据的正确传输。
同步方法的优点是能够保证数据的正确性,缺点是需要额外的硬件开销。
2.异步方法异步方法是指在不同的时钟域之间使用异步传输协议进行数据的传输。
这种方法不需要建立同步电路,只需要使用异步传输协议即可。
异步方法的优点是不需要额外的硬件开销,缺点是在数据传输过程中可能会出现误码。
3.频率转换方法频率转换方法是指将一个时钟域的时钟频率转换成另一个时钟域的时钟频率。
这种方法需要使用时钟控制电路来实现,可以通过倍频或分频的方式实现。
频率转换方法的优点是不需要建立同步电路,缺点是会引入一定的时钟抖动。
4.时钟域转换方法时钟域转换方法是指将一个时钟域的时钟信号转换成另一个时钟域的时钟信号。
这种方法需要使用时钟域转换电路来实现。
跨时钟域信号处理
跨时钟域信号处理跨时钟域信号处理是指在不同时钟域中传输的信号之间进行处理的技术。
在现代电子系统中,不同的模块或芯片可能使用不同的时钟频率,这就需要进行跨时钟域信号处理。
跨时钟域信号处理的主要问题是时序不同步。
由于不同的时钟频率,不同的模块或芯片在不同的时间点进行操作,这就导致了时序不同步的问题。
如果不进行处理,就会出现数据丢失、数据错误等问题。
为了解决这个问题,跨时钟域信号处理需要进行时序转换。
时序转换是指将一个时钟域中的信号转换成另一个时钟域中的信号。
在时序转换过程中,需要进行时钟同步、时钟域转换、数据缓存等操作。
时钟同步是指将不同时钟域中的时钟信号进行同步。
在时钟同步过程中,需要进行时钟频率的转换,使得不同时钟域中的时钟信号同步。
时钟域转换是指将一个时钟域中的信号转换成另一个时钟域中的信号。
在时钟域转换过程中,需要进行时序转换,使得不同时钟域中的信号同步。
数据缓存是指将不同时钟域中的数据进行缓存,以便进行时序转换。
跨时钟域信号处理的应用非常广泛。
在数字信号处理、通信系统、计算机网络等领域中,都需要进行跨时钟域信号处理。
例如,在通信系统中,不同的通信模块可能使用不同的时钟频率,这就需要进行跨时钟域信号处理。
在计算机网络中,不同的计算机可能使用不同的时钟频率,这就需要进行跨时钟域信号处理。
总之,跨时钟域信号处理是一项非常重要的技术。
它可以解决不同时钟域中的信号处理问题,保证数据的正确性和可靠性。
随着电子系统的不断发展,跨时钟域信号处理技术将会得到更加广泛的应用。
CDC跨时钟域处理
单信号:慢时钟域快时钟域
• 如果我们仍然使用同样的参数,则第2级触发器 的MTBF为9.57 *10^9(years) 。这个值已经足以 使系统长期稳定。
总结
• 问题1:为何直接对异步信号进行采样会不稳 定? • 问题2:要使用几级寄存器进行同步最合适? • 问题3:同步寄存器电路可以防止亚稳态产生 吗?
单信号:快时钟域慢时钟域
• 当快时钟域的信号跳变太快,导致目标时 钟域无法采样时,应如何处理? • 1.拉伸快时钟域信号的脉冲宽度使其足以被 正确采样 • 2.结绳法(脉冲同步器)
① 脉冲拉伸法
脉冲拉伸同步电路
② 结绳法 • 信号从快时钟域向慢时钟域过渡时,慢时钟 将可能无法对变化太快的信号实现正确采样。
• “结绳法”原理:将快时钟信号的脉冲周期 延长,等到慢时钟同步采样后再“解绳”还 原为原来的脉冲周期宽度。
单信号:快时钟域慢时钟域 结绳同步电路
Synopsys DW库内的推荐电路
脉冲同步器使用规则 • 1. 总线数据不能对每个信号单独使用同步 器,会导致数据无法同时有效。 • 2.输入的信号必须是单周期脉宽,否则无法 成功进行“结绳”操作 • 3.输入脉冲之间的最小间隔必须等于两个同 步器时钟周期。如果输入脉冲相邻太近, 则同步器就不能检测到每个脉冲。
主要内容
• • • • 1.单一信号跨时钟域处理 2.总线数据的跨时钟域处理 3.数据流的跨时钟域处理 4.相关时钟系统数据同步
相关时钟系统
• 如果两个时钟分别为同一个源时钟的分频或倍 频时钟,则称为相关时钟 • 相关时钟的相位是可以通过工具进行对齐的 • 跨越的时钟域为相关时钟,这时可以用更简便 的处理方式,简化同步电路
工艺器件映射
• 在DC将两个触发器映射到一个目标库上时,综 合工具会选择能够满足时序限制条件的最小面 积的单元,而不是对同步最好的触发器 • 因此通常想要通过手动方式或通过脚本方式用 已知的“亚稳态强化”触发器来替代这些触发 器 • 自DC2009版本开始,可以指定一个或多个“亚 稳态强化”触发器用在上述DW库中的CDC组件。 • 方法:通过将相关器件赋给 “synlib_preferred_ffs”变量实现特定寄存器的 调用
快时钟到慢时钟跨时钟域verilog处理
快时钟到慢时钟跨时钟域verilog处理一、前言时钟在数字电路中扮演着至关重要的角色,它是同步电路的基础。
而时钟域则是指在不同的时钟频率下,电路中的寄存器和逻辑单元所处的不同时钟区域。
跨越不同时钟域的数据传输需要进行特殊处理,否则会导致数据错误。
本文将介绍如何使用Verilog语言处理快时钟到慢时钟跨时钟域问题。
二、什么是时钟域1. 时钟在数字电路中,为了保证各个模块之间能够协调工作而不会发生冲突,需要引入一个基准信号来进行同步。
这个基准信号就是我们常说的“时钟”。
2. 时钟域由于数字电路中可能存在多个时钟信号,每个时钟信号都有自己的频率和相位。
因此,在数字电路中会形成多个互相独立的“时间区域”,也就是我们所说的“时钟域”。
三、快慢时钟之间数据传输问题当两个模块处于不同的时钟域中,并且这两个模块需要进行数据传输或共享一个寄存器/内存单元等操作,就会出现跨越不同时间区域(时钟域)的数据传输问题。
在不同的时钟域之间进行数据传输,需要考虑以下问题:1. 时序关系由于不同的时钟信号具有不同的频率和相位,因此在进行跨时钟域数据传输时,需要考虑这两个模块之间的时序关系。
通常情况下,我们会使用一些特殊技术来解决这个问题,例如手动插入缓冲器或者FIFO 等。
2. 数据同步由于不同的时钟信号具有不同的频率和相位,因此在进行跨时钟域数据传输时,可能会出现数据丢失、错误或者抖动等问题。
为了解决这个问题,我们通常会使用一些特殊技术来进行数据同步。
例如手动插入缓冲器、FIFO、双缓存技术等。
四、Verilog语言如何处理跨越不同时钟域的问题在Verilog语言中,我们可以使用$setup()和$hold()函数来解决跨越不同时间区域(时钟域)的数据传输问题。
1. $setup()$setup()函数用于检查从一个寄存器到另一个寄存器之间是否存在时间上危险(setup time violation)。
如果存在,则该函数返回1;否则返回0。
同步跨时钟域的约束处理
同步跨时钟域的约束处理同步跨时钟域的约束处理是数字设计中一个非常重要的问题,涉及到两个或多个时钟域之间的数据传输。
由于不同的时钟域有各自的时钟频率和相位,因此在从一个时钟域向另一个时钟域传输数据时,可能会出现数据丢失、数据冲突或者不确定状态等问题。
为了解决这些问题,需要进行同步处理。
以下是一些同步跨时钟域的约束处理方法:1. 建立时钟域之间的同步关系:在两个时钟域之间建立同步关系,使得它们之间的数据传输能够有序进行。
常用的同步方法有使用FIFO(先进先出)队列、使用双缓冲区、使用握手协议等。
2. 避免数据冲突:在跨时钟域的数据传输中,如果接收端无法及时接收数据,可能会导致数据冲突。
为了避免这种情况,可以采用以下方法:* 使用具有足够缓冲区的FIFO队列,以容纳接收端暂时无法处理的数据。
* 使用双缓冲区技术,将接收端的数据存储在两个缓冲区中,以避免在一个缓冲区中积累过多的数据。
* 在数据传输前进行握手协议,确保接收端准备好接收数据。
3. 消除不确定状态:在跨时钟域的数据传输中,由于时钟域之间的时钟频率和相位可能不同,可能会导致数据状态不确定。
为了消除这种不确定状态,可以采用以下方法:* 使用分频或倍频技术,使得发送端和接收端的时钟频率相同或相近。
* 使用同步器或去抖动器,将接收端的数据同步到发送端的时钟域中。
4. 考虑时序约束:在数字设计中,时序约束是非常重要的。
在进行跨时钟域的约束处理时,需要考虑时序约束,以确保数据传输的正确性。
例如,在建立FIFO队列时,需要考虑读写时序的约束;在使用同步器或去抖动器时,需要考虑信号传输的时序约束等。
综上所述,同步跨时钟域的约束处理是数字设计中一个非常重要的问题,需要进行综合考虑和处理。
跨时钟域信号如何处理
跨时钟域信号如何处理处理跨时钟域信号是一个复杂的问题,因为不同时钟频率下的信号在时间上是不对齐的。
这意味着在接收到一个跨时钟域信号后,需要确保在正确的时间窗口中捕获和解析该信号,以确保正确的数据传输。
处理跨时钟域信号的一种常见方法是使用握手协议。
在握手协议中,发送方和接收方之间进行多轮的交互,以确保数据的正确传输。
发送方首先发送一个同步信号,表明它开始传输数据。
接收方在接收到同步信号后,等待一段时间,然后发送一个确认信号,表示它已准备好接收数据。
发送方在接收到确认信号后,开始发送数据。
接收方在接收到数据后,发送一个确认信号,表示它已接收到数据。
发送方在接收到确认信号后,停止发送数据。
另一种处理跨时钟域信号的方法是使用FIFO(First-In-First-Out)缓冲区。
发送方将数据写入FIFO缓冲区,而接收方从FIFO缓冲区读取数据。
由于FIFO缓冲区可以在不同的时钟域中工作,因此可以用于在不同的时钟频率下传输数据。
但是,由于FIFO缓冲区的大小有限,可能会发生溢出或丢失数据的情况。
因此,需要合适的策略和算法来处理这些情况,以确保数据的正确传输。
此外,还可以使用专门的芯片或器件来处理跨时钟域信号,如时钟转换器或时钟域交叉。
时钟转换器可以将一个时钟转换为另一个时钟,以便在不同的时钟域中进行通信。
时钟域交叉器可以将两个时钟域之间的信号进行交叉,以实现跨时钟域通信。
总的来说,处理跨时钟域信号是一个复杂且需要精确和可靠的过程。
需要根据具体应用和系统要求选择合适的方法和技术来处理跨时钟域信号,以确保数据的正确传输和处理。
跨时钟域信号同步解决方案
跨时钟域信号同步解决⽅案为了确保拥有多个异步时钟域的系统级芯⽚(SoC)能够可靠运⾏,设计⼈员必须使这些跨越了多个域的时钟和数据信号保持同步。
尽管这并不属于新提出的要求,但随着多时钟域越来越常见和复杂化,使得这⼀要求具备了新的重要意义。
⼤规模集成加上对性能的严格要求以及频率调节都导致在许多不同频率下发⽣了很多时钟域跨越现象-就像⼀场数字化的“完美风暴”。
跨时钟域(CDC)问题会以许多种形式出现,其评估难度相当⾼。
幸好,Synopsys DesignWare库产品提供了许多卓越的CDC解决⽅案,这些⽅案应⽤简便,设计⼈员只需掌握在何时以及何处应⽤它们即可。
本⽂解释了在时钟和数据信号从⼀个时钟域跨越到另⼀个时钟域时所发⽣的许多类型的同步问题。
在任何情况下,本⽂所包含的问题都涉及到相互异步的时钟域。
随着每⼀个问题的提出,本⽂将概述⼀个或多个DesignWare解决⽅案。
这些主题和解决⽅案包括:●基本同步—DW_sync●临时事件同步—DW_pulse_sync, DW_pulseack_sync●简单数据传输同步—DW_data_sync, DW_data_sync_na,DW_data_sync_1c●数据流同步—DW_fifo_s2_sf, DW_fifo_2c_df,DW_stream_sync●复位排序—DW_reset_sync●相关时钟系统数据同步—DW_data_qsync_hl,DW_data_qsync_lh1基本同步问题当来⾃⼀个时钟系统的信号将⽤作另⼀个与其不同步的时钟系统的输⼊时,就需要对信号进⾏同步以达成。
⽽不进⾏同步就⽆法达成时序收敛。
图1所⽰为采⽤⼀个单寄存器来同步⾄⽬的时钟域的异步输⼊。
伴随这种⽅法会出现的⼀个问题是,当⼀个触发器的数据输⼊处于逻辑0⾄逻辑1之间的过渡过程当中时,发给这个触发器时钟信号时有可能产⽣亚稳态现象。
亚稳态现象也有可能发⽣在触发器的建⽴时间或保持时间出现违反现象时。
多比特信号的跨时钟域处理
多比特信号的跨时钟域处理是数字系统设计中一个复杂且关键的问题。
在数字电路中,不同的时钟域可能具有不同的频率、相位和占空比,这导致在多比特信号从一个时钟域传递到另一个时钟域时,可能会出现数据丢失、亚稳态和时序违规等问题。
因此,为了确保信号的完整性和可靠性,需要采取一系列的策略和技巧。
首先,了解亚稳态的概念对于理解跨时钟域问题至关重要。
当信号的建立时间和保持时间不满足接收端的时序要求时,接收端可能会在一段不确定的时间内处于一个不稳定的状态,这就是亚稳态。
亚稳态可能导致数据错误或系统崩溃,因此需要尽量避免。
为了避免亚稳态,最常用的方法是使用双寄存器同步。
这种方法的基本思想是在接收端使用两个或更多的触发器来采样信号。
第一个触发器可能会进入亚稳态,但是通过第二个触发器的再次采样,可以极大地降低亚稳态传播到后续逻辑的概率。
然而,对于多比特信号,仅使用双寄存器同步可能不足以确保数据的完整性,因为不同的比特可能在不同的时间点发生变化,导致接收端采样到不一致的数据。
为了解决多比特信号的问题,可以使用格雷码。
格雷码是一种二进制编码方式,其特点是任意两个相邻的数只有一位不同。
在跨时钟域传输中,使用格雷码可以将多位数据的同时变化转化为单一位的变化,从而降低亚稳态的风险。
在发送端,将原始数据转换为格雷码,然后在接收端再将格雷码转换回原始数据。
除了格雷码,还可以使用握手协议来处理多比特信号的跨时钟域传输。
握手协议是一种同步机制,通过发送请求和确认信号来确保数据的正确传输。
在发送端,当数据准备好后,发送一个请求信号。
接收端在检测到请求信号后,等待一段足够长的时间以确保数据稳定,然后采样数据并发送一个确认信号。
发送端在接收到确认信号后,继续发送下一个数据。
通过这种方式,可以确保每个数据都被正确接收,并且避免了数据的丢失和重复。
最后,还可以使用异步FIFO(First In First Out)来处理多比特信号的跨时钟域传输。
异步FIFO 是一种特殊的缓冲区,可以在不同的时钟域之间传递数据。
信号跨时钟域的几种方法
在数字电路中,信号跨越不同时钟域时可能会引起时序问题。
以下是处理信号跨时钟域的几种常见方法:1. **双同步FIFO(First-In-First-Out):**- 使用双口RAM实现的FIFO,一个端口用于每个时钟域,允许数据在两个时钟域之间进行安全的同步传输。
- 数据从一个时钟域写入FIFO,在另一个时钟域被读取。
这样可以避免直接跨越时钟域传输信号,减少时序问题。
2. **同步器(Synchronizer):**- 使用两个触发器(寄存器)级联,将信号从一个时钟域同步到另一个时钟域。
第一个触发器使用源时钟域的时钟,第二个触发器使用目标时钟域的时钟。
- 这种方法可以帮助减少时序问题,但需要注意,过多的级联同步器可能会引入潜在的冒险条件和时序不确定性。
3. **双触发器同步器(Dual-Flip-Flop Synchronizer):**- 这种同步器使用两个同步器,但其中一个同步器的时钟源于目标时钟域的时钟。
- 这种方法可以提供更好的稳定性和抖动抑制。
4. **手动握手协议(Handshaking Protocols):**- 在两个时钟域之间建立一种通信协议,通过在数据传输前后进行握手来确保数据的正确性和同步性。
- 这种方式可以通过协议规定好的状态转换确保数据在不同时钟域之间的有效传输。
5. **异步FIFO:**- 异步FIFO允许在不同时钟域之间传输数据,不过需要特殊的异步FIFO设计,通常会引入更复杂的电路结构。
在处理信号跨时钟域时,确保采用合适的方法并考虑到不同时钟域之间的时序关系至关重要。
同时,最好在设计中尽量减少跨时钟域的信号传输,以减少潜在的时序问题。
【精品博文】高级FPGA设计——第四章:跨时钟域问题
【精品博文】高级FPGA设计——第四章:跨时钟域问题在FPGA设计中,不太可能只用到一个时钟。
因此跨时钟域的信号处理问题是我们需要经常面对的。
跨时钟域信号如果不处理的话会导致2个问题:(1) 若高频率时钟区域输出一个脉冲信号给低频率时钟区域,则该脉冲很有可能无法被采样到,示意图如下,clk2根本采样不到pulse(2) 亚稳态问题在说明亚稳态之前,我们需要先了解什么是建立时间和保持时间建立时间:在时钟沿到来前,被采样信号应该提前一段时间就进入稳定状态,这个时间称为建立时间保持时间:在时钟沿到来后,被采样的信号应该保持稳定一段时间,这个时间称为保持时间而亚稳态就是建立时间和保持时间不满足导致的。
如下图所示,就是建立时间不满足,造成dout是个不确定值,即亚稳态。
亚稳态会造成严重的后果。
就像将军发命令一样,若其发出的是一个亚稳态的命令,士兵A可能判定这个命令为进攻,士兵B可能判定这个命令为撤退,这将引起极大的混乱。
解决方案:1,握手操作针对问题1中所描述的情况,即快时钟域传递一个脉冲信号到慢时钟域,慢时钟域很有可能采样不到该脉冲。
这时就需要采用握手操作来解决了。
首先,快时钟域应该将脉冲信号转换为一个持续信号,慢时钟域采样到该持续信号后,返回一个反馈信号,告知块时钟域将持续信号拉低。
2,相位控制:考虑下面2种情况,情况1:情况2:上面2种情况中,数据是随着慢时钟所变化的,现将该数据发送到快时钟模块。
两种情况唯一的区别在于时钟相位的不同,但这就导致情况1满足建立与保持时间,但情况2不满足建立时间。
因此,跨时钟域的时钟相位控制是决定跨时钟域功能正常的关键因素。
这种情况一般出现在我们使用DCM模块时,这时候才能控制输入与输出的相位关系。
建议无特殊要求下,相位选择0,从而避免因相位问题导致的跨时钟域问题。
3,双跳技术(打两拍)在很多情况下,设计者是无法控制两个时钟间的相位关系的,因此方案1并不太适用。
若跨时钟信号为单比特信号,我们可以采用双跳技术来解决。
跨时钟域问题(Clock Domain Crossing)
跨时钟域问题(Clock Domain Crossing) –同两个时钟域打交道!引言:设计者有时候需要将处于两个不同时钟域的系统对接,由于接口处是异步(会产生setuptime 和holdtime violation,亚稳态以及不可靠的数据传输)的,因此处理起来较同步逻辑更棘手,需要寻求特殊处理来进行接口界面的设计。
任意的两个系统如果满足以下条件之一,就可称其为异步的:(1)工作在不同的时钟频率上;(2)工作频率相同,但是相位不相同;处理跨时钟域的数据传输,有两种实现方案:(1)采用握手信号来交互(2)以异步FIFO来实现1.1、以握手信号交互:假设系统A以这种方式向系统B传递数据,握手信号分别为req和ack。
握手协议:Transmitter asserts the req (request) signal, asking the receiver to accept the data on the data bus.Receiver asserts the ack (acknowledge) signal, asserting that it has accepted the data.这种处理跨时钟域的方式很直接,但是也最容易产生亚稳态,由于系统A发送的req信号需要系统B中的时钟去sample,而系统B发出的ack信号又需要系统A中的时钟去sample,这样两边都存在着setup time和hold time violation的问题。
为了避免由于setup time和hold time vilation所造成的亚稳态,通常我们可以将异步时钟域交互的信号用local system的时钟打两级甚至三级寄存器,以此来消除亚稳态的影响。
下图以系统A发送到系统B的req信号示例消除亚稳态的方法:当然,这种处理方式是以损失传输速率为代价的,加入两到三级寄存器同步异步时钟域的信号,会有许多时钟周期浪费在了系统的“握手”。
跨时钟域信号处理方法
跨时钟域信号处理方法跨时钟域信号处理方法是在多个时钟域之间进行数据传输和处理的技术。
由于不同的时钟域可能存在时钟频率不同、时钟相位不同或是时钟源不同等问题,因此在进行跨时钟域信号处理时需要采取一些方法来解决时钟不一致性所带来的问题。
一种常见的跨时钟域信号处理方法是采用异步通信协议。
在异步通信中,发送方和接收方的时钟是相互独立的,它们之间并没有直接的时钟连接。
发送方会在数据中插入同步标志符号来指示数据的开始和结束。
接收方会通过检测这些标志符号来进行数据的同步和处理。
异步通信协议的优势是简单、灵活,能够适应不同时钟频率的情况。
然而,由于异步通信协议中不同时钟域之间没有严格的时钟同步,可能存在数据传输不可靠的问题,因此需要采取一些措施来保证数据的可靠性。
另一种跨时钟域信号处理方法是采用同步通信协议。
在同步通信中,发送方和接收方的时钟是相同的或有严格的时钟同步。
发送方会按照时钟周期发送数据,在接收方的时钟周期内进行数据采样和处理。
同步通信协议的优势是能够提供更高的数据传输可靠性,但是对于时钟频率差距较大的情况可能需要额外的时钟域转换电路来进行同步。
除了采用异步通信和同步通信协议外,还可以采用一些时钟域转换的方法来解决跨时钟域信号处理的问题。
一种常见的时钟域转换方法是使用FPGA(现场可编程门阵列)来进行时钟域转换。
FPGA可以实现多个时钟域之间的数据传输和处理,并且可以根据需要进行时钟频率转换和时钟域切换。
此外,还可以采用缓冲器、锁相环等电路来解决时钟不一致性所带来的问题。
总之,跨时钟域信号处理是一个复杂的问题,涉及到时钟频率、时钟相位和时钟源等多个方面的考虑。
通过采用异步通信协议、同步通信协议以及时钟域转换等方法,可以有效地解决跨时钟域信号处理的问题,提高数据传输的可靠性和性能。
xilinx 跨时钟域设计 概述及解释说明
xilinx 跨时钟域设计概述及解释说明1. 引言:1.1 概述跨时钟域设计是现代电路设计中一个重要且复杂的问题。
在集成电路中,不同的模块可能会使用不同频率的时钟信号进行操作,这就导致了时钟信号之间存在着不同的域。
在进行数据传输或者协同工作时,跨越不同时钟域之间的数据传输问题变得非常重要。
1.2 文章结构本文将首先介绍跨时钟域设计的概念和相关背景知识。
接下来,我们将详细讨论为什么需要对时钟域进行划分以及Xilinx跨时钟域设计的意义。
然后,我们将介绍跨时钟域设计的原理与方法,包括同步与异步信号传输方式、锁存器与触发器的使用注意事项以及时序约束设置与优化策略。
此外,我们还会提供一些实际案例来演示Xilinx跨时钟域设计的实践应用和效果展示。
最后,我们将总结文章,并提出对于跨时钟域设计在Xilinx器件中应用前景的展望。
1.3 目的本文的目标是为读者提供关于Xilinx跨时钟域设计相关知识和技术方案,并通过实例和案例展示,帮助读者更好地理解并应用这些技术。
同时,我们也希望引起读者对跨时钟域设计的重视,并认识到其在现代电路设计中的重要性和必要性。
通过本文的阅读,读者将能够掌握Xilinx跨时钟域设计的基本原理与方法,并应用于实际工程项目中,提高电路的可靠性和性能。
2. 跨时钟域设计概述:2.1 什么是时钟域:时钟域是指由一个主时钟信号驱动的一组逻辑电路。
在数字电路设计中,系统通常包含多个时钟域,每个时钟域都有独立的主时钟信号。
由于不同时钟域之间存在着频率和相位差异,因此跨越不同时钟域的信号传输需要特殊的设计策略和技术支持。
2.2 时钟域划分的必要性:在复杂的数字系统中,为了提高系统性能和可靠性,常常需要将整个系统划分为多个独立的时钟域。
这种划分可以使各模块按照不同的时间精度进行操作,并且能够减少信号互联、功耗消耗以及故障引入等问题。
同时,通过合理地划分和管理时钟域,能够降低系统开发复杂度,并确保数据在稳定状态下进行正确传输。
跨时钟域处理方法fifo
跨时钟域处理方法fifo跨时钟域处理方法FIFO是用于在不同时钟域之间传输数据的一种常见技术。
在数字系统设计中,由于不同的模块可能使用不同的时钟信号,因此需要一种方法来处理这些不同时钟域之间的数据传输。
FIFO(First-In-First-Out)是一种常见的数据缓冲器,用于在不同时钟域之间进行数据传输和同步。
首先,让我们来看看FIFO是如何工作的。
FIFO包含一个读指针和一个写指针,它可以在不同时钟域之间缓存数据。
当数据被写入FIFO时,它被存储在FIFO的存储单元中,并且可以在另一个时钟域中被读取。
这样,FIFO提供了一种机制,可以在不同时钟域之间进行数据传输,同时保持数据的顺序。
在实际应用中,跨时钟域处理方法FIFO可以通过一些技术来实现。
例如,可以使用双口RAM来实现FIFO,其中一个端口用于写入数据,另一个端口用于读取数据。
此外,可以使用专门设计的同步电路来确保在不同时钟域之间进行数据传输时的正确同步。
另一种常见的方法是使用双缓冲区FIFO,其中一个缓冲区用于接收数据,另一个缓冲区用于发送数据。
这种方法可以确保在不同时钟域之间进行数据传输时的可靠性和稳定性。
除了硬件实现,还可以使用一些设计技巧来处理跨时钟域的数据传输。
例如,可以使用手动握手协议来确保在不同时钟域之间进行数据传输时的正确性,或者可以使用一些同步技术来确保数据在不同时钟域之间的正确传输。
总之,跨时钟域处理方法FIFO是一种常见的用于在不同时钟域之间进行数据传输的技术。
它可以通过硬件实现或者一些设计技巧来确保数据在不同时钟域之间的正确传输和同步。
在数字系统设计中,了解并掌握这种技术对于确保系统的可靠性和稳定性非常重要。
格雷码跨时钟域频率相差
格雷码跨时钟域频率相差格雷码是一种二进制数字编码系统,其特点在于相邻的两个数值之间只有一位不同。
格雷码是一种很常见的编码方式,常用于数字信号的传输、通信系统以及数字电路中。
然而,由于格雷码跨时钟域频率相差的问题,它在实际应用中也存在一些挑战。
本文将一步一步回答,解释格雷码跨时钟域频率相差的现象及其解决方法。
首先,我们需要了解格雷码的基本原理。
格雷码采用一种特殊的编码方式,使得相邻数值之间仅有一位二进制位发生变化。
这样设计的目的是减少数字电路传输过程中的错误率,提高传输效率和可靠性。
格雷码常用于数字通信系统中,如调制解调器、信号传输或通信协议等。
然而,当格雷码跨越不同的时钟域时,由于时钟频率不同,可能会导致格雷码的传输错误或数据丢失。
这是因为在接收端,时钟信号的频率可能与发送端不一致,导致接收到的信号在时钟边沿处产生误判,从而产生错误的格雷码。
为了解决这个问题,我们可以采用以下几个方法:1. 时钟域同步技术:通过在发送方和接收方之间插入时钟域同步信号,使得发送和接收时钟信号保持一致。
这样可以确保接收端在正确的时钟边沿采样格雷码,减少错误的发生。
2. 时钟频率转换器:当发送端和接收端的时钟频率不一致时,可以使用时钟频率转换器将时钟信号转换为相同的频率。
这样可以保证接收端在正确的时刻读取格雷码,减少误判和数据丢失的问题。
3. 编码/解码器设计:在设计数字电路时,可以添加编码和解码器模块,将不同时钟域之间的格雷码进行转换。
这样可以实现不同时钟域之间的数据传输,并保证数据的准确性和可靠性。
4. 错误检测与纠正:为了提高传输的可靠性,可以在格雷码的传输过程中添加错误检测和纠正的机制。
例如,可以采用循环冗余校验(CRC)或海明码等方法进行错误检测和纠正,减少传输错误的发生。
总结起来,格雷码跨时钟域频率相差是一个在实际应用中需要考虑的问题。
通过应用时钟域同步技术、时钟频率转换器、编码/解码器设计以及错误检测与纠正等方法,我们可以解决这个问题,提高格雷码的传输可靠性和效率。
跨时钟域信号同步方法6种
跨时钟域信号同步方法6种ASIC中心1 引言基于FPGA的数字系统设计中大都推荐采用同步时序的设计,也就是单时钟系统。
但是实际的工程中,纯粹单时钟系统设计的情况很少,特别是设计模块与外围芯片的通信中,跨时钟域的情况经常不可避免。
如果对跨时钟域带来的亚稳态、采样丢失、潜在逻辑错误等等一系列问题处理不当,将导致系统无法运行。
本文总结出了几种同步策略来解决跨时钟域问题。
2 异步设计中的亚稳态触发器是FPGA设计中最常用的基本器件。
触发器工作过程中存在数据的建立(setup)和保持(hold)时间。
对于使用上升沿触发的触发器来说,建立时间就是在时钟上升沿到来之前,触发器数据端数据保持稳定的最小时间。
而保持时间是时钟上升沿到来之后,触发器数据端数据还应该继续保持稳定的最小时间。
我们把这段时间成为setup-hold时间(如图1所示)。
在这个时间参数内,输入信号在时钟的上升沿是不允许发生变化的。
如果输入信号在这段时间内发生了变化,输出结果将是不可知的,即亚稳态 (Metastability)图1一个信号在过渡到另一个时钟域时,如果仅仅用一个触发器将其锁存,那么采样的结果将可能是亚稳态。
这也就是信号在跨时钟域时应该注意的问题。
如图2所示。
信号dat经过一个锁存器的输出数据为a_dat。
用时钟b_clk进行采样的时候,如果a_dat正好在b_clk的setup-hold时间内发生变化,此时b_ dat 就既不是逻辑"1",也不是逻辑"0",而是处于中间状态。
经过一段时间之后,有可能回升到高电平,也有可能降低到低电平。
输出信号处于中间状态到恢复为逻辑"1"或逻辑"0"的这段时间,我们称之为亚稳态时间。
触发器进入亚稳态的时间可以用参数MTBF(Mean Time Between Failures)来描述,MTBF即触发器采样失败的时间间隔,表示为:其中fclock表示系统时钟频率,fdata代表异步输入信号的频率,tmet代表不会引起故障的最长亚稳态时间,C1和C2分别为与器件特性相关的常数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Metastability in the asynchronous clocks and Synchronizer
摘要:相较纯粹的单一时钟的同步电路设计,设计人员更多遇到的是多时钟域的异步电路设计。
因此,异步电路设计在数字电路设计中的重要性不言而喻。
本文主要就异步设计中涉及到的亚稳态问题,作简要介绍,并提出常用的解决办法——即同步器的使用。
关键词:异步电路设计、亚稳态、同步器。
Abstract: Compared with the pure one-clock synchronous designs,the designers more often deal with the multi-clock asychronous designs. Therefore, asynchronous circuit design is very important in the field of digital circuit design. This paper briefly describes the problematic metastability in the asynchronous designs and presents a regular solution——synchronizer.
Key words: Asynchronous circuit design, Metastability, Synchronizer.
毫无疑问,单一时钟域的电路设计是数字电路中最基本的技能,其时序分析(Timing Analysis)也是最简单的。
与之相对,在多时钟域中跨时钟域传输信号易出现亚稳态,加上自动时序分析工具对异步信号处理的力不从心,这些都使得多时钟域的异步设计和分析较为困难。
不幸的是,现实世界是异步的。
如我们常常看见的键盘输入、磁盘文件传输、UART(通用异步收发器)等等,都是异步时序的事例。
1 亚稳态(metastability)
时序电路采用触发器和锁存器作为存储单元,这两种器件都易进入亚稳态[1]。
所谓亚稳态是指触发器无法在某个规定的时间段内达到一个可确认的状态。
如图1所示,对任何一种触发器,在时钟触发沿前后存在一个小的时间窗口(称为判决窗口,decision window),输入信号在判决窗口内必须保持稳定,否则,触发器就会进入亚稳态,既无法预测该单元的的输出电平,也无法预测何时输出才能稳定在某个电平上。
这个判决窗口由建立时间(setup time)和保持时间(hold time)两部分组成。
并且时间窗口也是多种因素的函数,包括触发器设计、实现技术、运行环境以及无缓冲输出的负载等。
输入信号陡峭的边沿可以将此窗口减至最小,随着时钟频
率的升高,会出现更多有问题的时间窗口,而随着数据频率的提升,这种窗口的命中概率会增加,即进入亚稳态的概率会增加。
亚稳态不能从根本上消除,但可以通过采取一定的措施使其对电路造成的影响降低。
[2]通常我们用故障间隔平均时间(MTBF,mean time between failures)来衡量亚稳态的影响。
MTBF越大则说明亚稳态对电路产生地影响越小,反之亦然。
如当MTBF等于几十年或者上百年时,我们就认为它对电路的影响基本上可以忽略。
实验结果表明:对于输入为异步信号的电路,其MTBF与从亚稳态状态下恢复的时间长度(如图1所示的)有着指数的关系[3]。
2 同步器(synchronizer)
在实际中,我们常用的是采用两级触发器串联的同步器(如图1)[4]。
这种用两级触发器串联的同步器亦称为电平同步器(the level synchronizer),它是其他同步器的基础。
对于电平同步器,它能将输入第一级触发器的异步电平信号(保险起见,电平信号应保持大于两个同步时钟周期),转换成第二级触发器输出的同步电平信号。
第一级触发器对输入的判决时间有整个同步时钟周期的长度。
因此,它的MTBF比单触发器的同步器更大,即亚稳态所产生的影响更小,通常是在我们的可以容忍的范围之内。
因此,对于高速率数字电路的同步器,通常采取的策略是用触发器级联来实现时间缓冲,为电路从亚稳态下恢复过来提供时间,即以时间延迟为代价,降低亚稳态的发生对电路的影响。
下面再分别介绍另外两种常用的同步器。
2.1 边沿检测同步器(the edge synchronizer)
如图2所示,边沿检测同步器在电平同步器的输出端增加了一个触发器。
新增触发器的输出经反相后和电平同步器的输出进行与操作。
这一电路会检测同步器输入信号的上升沿,产生一个与同步时钟周期等宽、高电平有效的脉冲。
如果将与门的两个输入端交换使用,就可以构成一个检测输入信号下降沿的同步器。
将与门改为与非门,可以构建一个产生低电平有效脉冲的电路。
当一个脉冲进入更快的时钟域中时,边沿检测同步器可以工作得很好。
这一电路会产生一个脉冲,用来指示输入信号上升或下降沿。
这种同步器有一个限制,即输入脉冲的宽度必须大于同步时钟周期与第一个同步触发器所需保持时间之和。
最保险的脉冲宽度是同步器时钟周期的两倍。
如果输入是一个单时钟宽度脉冲进入一个较慢的时钟域,则这种同步器没有作用,在这种情况下,就要采用脉冲同步器[5]。
2.2 脉冲同步器(the pulse synchronizer)
如图3 所示,脉冲同步器的输入信号是一个单时钟宽度脉冲,它触发原时钟域中的一个翻转电路。
每当翻转电路接收到一个脉冲时,它就会在高、低电平间进行转换,然后通过电平同步器到达异或门的一个输入端,而另一个信号经一个时钟周期的延迟进入异或门的另一端,翻转电路每转换一次状态,这个同步器的输出端就产生一个单时钟宽度的脉冲。
脉冲同步器的基本功能是从某个时钟域取出一个单时钟宽度脉冲,然后在新的时钟域中建立另一个单时钟宽度的脉冲。
脉冲同步器也有一个限制,即输入脉冲之间的最小间隔必须等于两个同步器时钟周期。
如果输入脉冲相互过近,则新时钟域中的输出脉冲也紧密相邻,结果是输出脉冲宽度比一个时钟周期宽。
当输入脉冲时钟周期大于两个同步器时钟周期时,这个问题更加严重。
这种情况下,如果输入脉冲相邻太近,则同步器就不能检测到每个脉冲。
3 仿真结果
如图4、5所示,在Modelsim下分别跑了两组边沿检测同步器和脉冲同步器的仿真。
下面作简单的介绍。
clk1为原电路时钟;clk2为同步时钟;pulse_din为脉冲同步器的输入,pulse_dout为其输出;edge_din为边沿检测同步器的输入,edge_dout为其输出。
在图4中,显示了正常条件下的边沿检测同步器和脉冲同步器的输入和输出。
在图5中,由于脉冲同步器的输入(pulse_din)的脉冲间隔太小,同步器无法分辨出两个输入脉冲,只能输出(pulse_dout)一个有两个同步时钟周期宽度的脉冲。
4 总结
同步器还有许多种设计方法,因为一种同步器不能满足所有应用的需求。
其类型也有多种,常用的基本的类型就是上述介绍的三种类型:电平、边沿检测和脉冲同步器。
这三种类型的同步器可以解决设计者遇到的多数应用问题。
在使用同步器时还有一条重要的规则,那就是不应当在设计中的多个地方对同一信号进行同步,即单个信号不能扇出至多个同步器。
否则,就会出现竞争状况 [6]。
这种竞争状况在需要跨越时钟域传输的多组信号间也会发生,例如数据总线、地址总线和控制总线等。
因此,不能对组中的每个信号单独使用同步器,因为在
新的时钟域中,要求每个信号同时有效。
本文作者创新点:论证了基本的处理异步时钟域的同步器,并在此基础上归纳提出三种常用的同步器类型。