如何在时钟周期上升沿之前将信号设置为高 X 时间?

How to set a signal high X-time before rising edge of clock cycle?

我有一个信号来检查内存块中的数据是否可用并执行一些 computation/logic(这是无关紧要的)。

我想要一个名为 "START_SIG" 的信号在 10 MHz 频率的时钟周期的第一个上升沿之前变高 X 时间(纳秒)。只有当它检测到有可用数据并根据需要进行进一步计算时,它才会变高。

现在,如何做到这一点?此外,我无法设置延迟,因为这必须是 RTL Verilog。因此,它必须可以在 FPGA(Artix7 系列)上综合。

有什么建议吗?

我怀疑是 XY 问题,如果起始信号是由与您的处理在同一时钟域中的逻辑产生的,那么您无需做任何工作就可以满足时序要求(10MHz 在 FPGA 术语中非常慢),但是如果你真的需要做这样的事情有几种方法(但说真的你做错了!)。 FPGA逻辑通常与一个或多个时钟同步,一般在一个时钟周期内需要游标控制是做错的标志。

使用 {PLL/MCM/Whatever} 生成两个时钟,一个在 10Mhz 时非常慢,另一个快得多,然后从 10MHz 时钟的前一个边沿数出快的时钟以获得您的计时。

使用 MCMPLL 或类似的(取决于平台)生成两个具有小相移的 10Mhz 时钟,然后选通 em 之一。

使用一长串逆变器对(属性 KEEP(VHDL 但 verilog 会有类似的东西)将是你的朋友),定期校准你已知的时钟(它会随着温度、星期几和符号漂移)黄道十二宫),这对于时间到数字转换器之类的东西非常有用,可能与选项二结合使用以进行微调。戒指的阴影关于这个,但不管怎样。