我最近开始尝试使用 FPGA。在研究网络上的东西时,我注意到在几个地方设计可能会使用多个速度完全相同的独立 PLL 时钟。这是为什么?
我将举一个例子是这个站点:Parallella Linux Quick Start
它们的 FCLK_CLK1 和 FCLK_CLK2 都在 200MHz。为什么建议这样做,而不是两者都使用 200MHz 的单个时钟?是否只是习惯性地给每个主要组件自己的时钟,即使它是相同的?还是我错过了什么?
我最近开始尝试使用 FPGA。在研究网络上的东西时,我注意到在几个地方设计可能会使用多个速度完全相同的独立 PLL 时钟。这是为什么?
我将举一个例子是这个站点:Parallella Linux Quick Start
它们的 FCLK_CLK1 和 FCLK_CLK2 都在 200MHz。为什么建议这样做,而不是两者都使用 200MHz 的单个时钟?是否只是习惯性地给每个主要组件自己的时钟,即使它是相同的?还是我错过了什么?
除了已经提到的原因之外,还有多个其他原因导致可能存在两个相同速度的 PLL 时钟。
即使频率完全相同,时钟相位或抖动也可能存在差异。使用一个具有固定时钟相位的 PLL 和另一个具有可调节时钟相位的 PLL 可用于正确采样外部输入信号或保持时钟和输出数据之间的正确相位差。在 IDELAY 和 ODELAY 等组件广泛使用之前,此类技术特别流行。
晶体振荡器也将与它们的标记值有小的偏差。如果两块板之间有通信链路并且两块板都有自己的振荡器,那么一块板的主时钟可能运行在 200.01 Mhz,而另一块板可能运行在 199.99 Mhz。在许多情况下,两个 FPGA 都将本地生成的低抖动时钟作为主时钟,但也将使用远程时钟对输入数据进行采样。您可以在以太网 PHY 中看到这一点:100 Mbit PHY 通常具有从输入信号恢复的 25 Mhz 接收时钟和本地生成的 25 mhz 发送时钟。
使用多个速度完全相同的时钟的原因有很多。所以我只说几个。但是,我对您的示例没有任何深入的了解。
如评论中所述,FPGA 是一种高度复杂的设备。只有供应商确切地知道那里发生了什么,所以他们可能会给你一些建议,这可能很奇怪。
如果您的设计只有一个时钟源,正确布线时钟至关重要。时钟必须同时在任何地方触发,这对于 PnR 工具来说很难管理。今天的 FPGA 通常不存在这个问题。
如果您在一个 FPGA 上融合了不同的 IP/设计,则这些 IP 可以使用不同的时钟。如果您想稍后再次拆分它,无论如何您都需要多个时钟源。此外,如果您切换时钟域并且在合并您的IP期间,您将不得不实现一些寄存器,您不会混淆所有东西,这是一种很好的设计风格。这也可能是您的示例的情况。
HDMI 支持由 Analog Devices 的 IP 内核提供...
也许附加时钟仅用作某些 I/O 端口的输出。
在当今的 CMOS 技术中,大部分功率浪费在转换(晶体管开关)和静态功率泄漏(该死的东西是如此之小,它只是泄漏电流)。使用多时钟域,您有机会减少每秒的转换。或者您可以完全关闭设备的某些部分。