视频字幕
FPGA跨时钟域是指信号从一个时钟域传递到另一个异步时钟域的过程。由于两个时钟之间没有固定的相位关系,直接传递信号可能导致亚稳态,进而引发数据错误或系统故障。因此,在FPGA设计中,处理跨时钟域问题至关重要。
第一个典型场景是外部接口与内部逻辑之间的跨时钟域。这是最常见的场景。FPGA需要与外部设备通信,如DDR存储器、以太网PHY、PCIe控制器、ADC和DAC等。这些外部设备通常有自己的工作时钟,与FPGA内部核心逻辑的时钟是异步的。信号在FPGA内部逻辑时钟域和外部接口时钟域之间传递时,就需要进行跨时钟域处理。
第二个典型场景是不同频率或相位的内部时钟域之间的跨时钟域。即使时钟都由FPGA内部的PLL或MMCM生成,如果它们之间频率不同、相位关系不固定或需要跨越异步边界,信号在这些时钟域之间传递时也需要进行跨时钟域处理。例如,高速数据处理模块可能工作在200兆赫兹的高频时钟下,而控制或配置模块工作在50兆赫兹的较低频率时钟下。
第三个典型场景是异步输入信号的同步。来自外部的异步输入信号,如按键、开关、异步中断等,没有与FPGA内部任何时钟同步。在使用这些信号之前,必须先将其同步到目标时钟域,以避免亚稳态。这通常通过多级触发器构成的同步器来实现,确保异步信号能够安全地进入FPGA的同步逻辑系统。
第四个典型场景是多时钟域设计的模块间通信。在大型复杂设计中,为了优化性能、功耗或资源,设计可能会被划分为多个模块,每个模块工作在不同的时钟域。例如数据处理模块工作在400兆赫兹,控制模块工作在100兆赫兹,接口模块工作在125兆赫兹,存储模块工作在200兆赫兹。模块之间的数据和控制信号传递就需要进行跨时钟域处理,确保信号能够安全可靠地在不同时钟域之间传递。