0

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

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

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

有什么建议么?

4

1 回答 1

0

我怀疑一个 XY 问题,如果 start sig 是由与您的处理相同的时钟域中的逻辑产生的,那么您可能无需任何工作就可以满足时序(10MHz 在 FPGA 方面非常慢),但如果您真的需要这样做像这样的事情有几种方法(但严重的是你做错了!)。FPGA逻辑通常与一个或多个时钟同步,通常需要在一个时钟周期内进行微调控制是做错的标志。

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

使用 MCMPLL 等(取决于平台)生成两个具有小相移的 10Mhz 时钟,然后选通其中一个。

使用一长串逆变器对(属性 KEEP(VHDL 但verilog 会有类似的东西)将成为你的朋友),定期校准你已知的时钟(它会随着温度、星期几和黄道带的标志而漂移),这个对于诸如时间到数字转换器之类的东西来说很整洁,可能与选项二结合使用以进行微调。关于这个的环形振荡器的阴影,但不管怎样。

于 2018-07-30T19:57:56.627 回答