我有一个信号,检查数据是否在内存块中可用,并进行一些计算/逻辑处理(这无关紧要)。
我希望一个名为“ START_SIG”的信号在时钟周期的第一个上升沿(频率为10 MHz)之前变高X倍(纳秒)。仅当它检测到有可用数据并根据需要进行进一步计算时,该值才高。
现在,该怎么办?另外,我不能设置延迟,因为它必须是RTL Verilog。因此,它必须在FPGA(Artix7系列)上可以合成。
有什么建议吗?
答案 0 :(得分:0)
我怀疑是XY问题,如果起始信号是由逻辑在与您的处理相同的时钟域中产生的,则可能无需您做任何工作就可以满足时序要求(就FPGA而言10MHz确实很慢),但是如果您确实做这样的事情所需要的方法有几种(但是严重的是,你做错了!)。 FPGA逻辑通常与一个或多个时钟同步,通常需要在一个时钟周期内进行微调控制,这是做错了的迹象。
使用{PLL / MCM / Whatever}生成两个时钟,其中一个以10Mhz的速度缓慢停止,然后以更快的速度产生,然后从10MHz时钟的上一个沿开始计算一个快速的时钟,以获取计时。
使用MCMPLL或诸如此类(取决于平台)来生成两个具有较小相移的10Mhz时钟,然后选通em之一。
使用一长排逆变器对(属性KEEP(VHDL,但verilog会是类似的东西)将是您的朋友),定期针对您已知的时钟进行校准(它将随温度,星期几和十二生肖而漂移),这对于时间到数字转换器的事情很整洁,可能与选项二结合使用以进行微调。环形振荡器的阴影与此有关,但无论如何都有效。