将时钟延迟一小部分时间

Delaying the clock by a fraction of the period

如果系统时钟的周期为T,那么我们如何在不使用任何模拟设备的情况下将时钟延迟1/4 T?首选可综合的 VHDL 代码。

您不能可靠地使用数字电子设备延迟时钟周期的任何部分。 (无论您是用 VHDL、Verilog、Palasm 还是 Ella 或其他无关紧要的语言编写代码。)

如果您使用时钟的相反边缘,您可以将时钟延迟 大约 1/2T,但即使这样也不可靠。在这样做时,您假设时钟的标记-space 比率接近 50:50,并且无论电源电压、芯片温度(实际硅的温度)或工艺角如何,情况都是如此(FPGA的速度等级)。

延迟小于 1/2T 的唯一方法是利用任何逻辑门都有延迟这一事实。然而,这是一种非常不可靠的方法,因为该延迟会随着电源电压、芯片温度和工艺角的变化而发生很大变化。例如,很容易增加 3 倍。

所以,如果你想延迟 1/4T 可靠地,你需要一个周期为 1/4T 的时钟。

如何以及是否可以做到这一点取决于您的目标技术,以及您想延迟时钟的位置和原因。

在 FPGA 中,输入和输出上的时钟和数据通常需要延迟。特别是对于 Xilinx FPGA,存在称为 IDELAY 和 ODELAY 的强化宏,允许您执行此操作。 documentation可以提供更多的细节。

相位偏移也可以在您的逻辑中使用 PLL/MMCM/DCM(用于从单个输入时钟合成各种时钟的另一个强化宏)来重新生成具有 90 度偏移的相位锁定时钟。同样,documentation 可以让您进一步了解。

我链接的文档专门针对 Xilinx 7 系列 FPGA,但大多数供应商和 FPGA 系列都有类似的文档。如果您希望在 ASIC 中执行此操作,那么您可能不希望避免任何模拟,因为我提到的两个强化宏都在内部依赖于模拟部件,而不是您必须设计的部件。