将时钟延迟一段时间

时间:2017-03-10 19:50:08

标签: vhdl electronics digital-logic

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

2 个答案:

答案 0 :(得分:2)

您无法使用数字电子设备可靠地延迟一段时间。 (无论是用VHDL还是Verilog或Palasm或Ella编写代码,还是无关紧要。)

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

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

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

答案 1 :(得分:1)

如何以及是否可以这样做取决于您的目标技术,以及您希望延迟时钟的地点和原因。

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

相位偏移也可以在您的逻辑中使用PLL / MMCM / DCM(另一个硬化宏来合成来自单个输入时钟的各种时钟)来重新生成锁相90度偏移的时钟。同样,documentation可以为您提供进一步的见解。

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