欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。
本篇主要讨论FPGA中时钟之间的关系
通常我们将这些关系分为相关时钟(同步时钟)和非相关时钟(异步时钟)两大类.
相关时钟 (Related Clocks) —— 也称为同步时钟
核心定义:两个时钟具有可预测的相位关系和固定频率比,源头来自同一个时钟根(如同一晶振、同一PLL),且时序可以被静态时序分析(STA)工具准确计算。
1. 同频同相时钟(零偏斜)
关系:频率、相位完全相同,实际上就是同一个时钟经过时钟树到达不同寄存器,偏斜极小且可预测。
例子:同一时钟通过全局缓冲(BUFG)驱动多个负载。
CDC 策略:不需要同步器,正常单周期或多周期路径分析即可。
2. 同频不同相时钟(固定相位差)
关系:频率相同,但相位差恒定且已知(例如 MMCM/PLL 的移相输出)。
例子:CLK0 与 CLK90(相位差 90°)、CLK180。源同步接口中,中心对齐或边沿对齐的时钟与数据也是这种关系。
CDC 策略:可通过调整时钟相位来实现时序收敛,或者用该相位差做源同步捕获,仍属于同步电路范畴,STA 能完全覆盖建立/保持时间。
3. 整数倍时钟
关系:一个时钟是另一个时钟的整数倍(xN)或分数倍(÷N),且相位关系完全锁定。
倍频:CLK2X(200MHz) 与 CLK1X(100MHz)同源,每 2 个快时钟沿严格对应 1 个慢时钟沿。
分频:CLKDIV 由同一 MMCM 产生,相位对齐或固定偏移。
例子:FPGA 内由同一个 PLL 输出的 100MHz 和 200MHz,或逻辑生成的使能信号分频(不推荐,但逻辑分频产生时钟视为生成时钟,与源时钟相关)。
CDC 策略:快时钟域到慢时钟域,只要慢时钟域寄存器的建立/保持满足,可直接使用同步电路;慢到快常配合“使能脉冲”(多周期路径约束)或简单同步器(需保证慢信号足够长)。STA 能分析。
4. 有理数倍时钟(非整数倍但可公约)
关系:频率比为非整数的有理数(如 3:2,5:3),且来自同一锁相环,相位关系由 PLL 锁定,有确定的周期重复模式。
例子:同一个 MMCM 输出 150MHz 和 100MHz(3:2 关系),其最小公倍周期 20ns 内,两个时钟的相对相位序列固定重复。
CDC 策略:多周期路径约束 + 使能信号设计,或者使用异步 FIFO(此时虽相位固定,但为简化设计也可用 FIFO)。严格上讲 STA 可以分析这类路径(需设置多周期、生成时钟等约束),设计中视为相关时钟。
共同特征:
来源于同一时钟根(同一个晶振 → 同一个 PLL/MMCM 输出)。
相位差恒定,可被 STA 工具精确计算。
跨域数据传输可用“周期约束+使能”方式或直接处理,不必引入全握手的异步机制(但为了设计简洁,有时也会用异步 FIFO)。
非相关时钟 (Unrelated Clocks) —— 即异步时钟
核心定义:两个时钟的相位关系不可预测,或者相位随时间漂移,无法用 STA 工具对一个域到另一个域的建立/保持进行确定性分析。任何声称的异步时钟,都需要使用 CDC 电路(如双寄存器同步器、握手、异步 FIFO)。
1. 完全异源时钟
关系:来自不同的晶振、不同的外部时钟源,或 FPGA 内部的不同 PLL 使用独立参考源。
例子:一个外部 25MHz 晶振和另一个 27MHz 晶振同时输入 FPGA,经过不同 PLL 后,其相位差完全随机且会由于频率微小差异而连续滑动。
CDC 策略:必须使用双/多级同步器,异步 FIFO,或边沿检测+握手,决不能直接采样对方数据。
2. 同源但异步的时钟
这是一种容易混淆的情况。即使源于同一个晶振,如果满足以下条件,也被视为非相关:
经过不同的 PLL/MMCM,且它们之间的初始相位未被明确对齐(例如两个独立的 MMCM 由同一参考时钟驱动,但去歪斜模式不同或复位时间不同,输出相位关系未知)。
同一 PLL 的输出,但时钟经过了组合逻辑、门控时钟等导致相位紊乱(设计中应避免此类时钟)。
非有理数倍频率:即使同源,如果频率之比是无理数(如 100MHz 和 3.579MHz),STA 没有可重复的周期关系,只能当作异步处理。
设计约束强制异步:有时设计师会将已知相位关系的时钟通过 set_clock_groups -asynchronous 声明为异步,主动放弃分析其间路径,以获得时序收敛简化,这时在约束层面视作非相关,但硬件实际上是相关的,需手动确保 CDC 安全。
异步的一个特例
关系:名义频率相同(或非常接近),但实际来源于不同时钟源,频率存在微小差异(如 ±100 ppm),导致相位缓慢持续漂移。
例子:以太网恢复时钟与本地时钟,两个独立晶振但都标称 125MHz。
CDC 策略:严格是异步时钟,必须用异步 FIFO,并在 FIFO 中处理因频率差产生的空满标志,通常带弹性缓冲。
本篇内容中有部分资源来源于网络,如有侵权,请联系作者。
140