我正在尝试用VHDL生成一个可合成的缓冲区,用于FPGA中的时间到数字项目。 我一直在环顾四周,但找不到任何设置。 我被推荐stackoverflow有很好的答案。 能不能给我一些关于这门课程的提示,我会非常感谢你能提出的任何方法。
提前多多谢谢你!
此致
答案 0 :(得分:1)
目前正在进行时间延迟电路(TDC) hard 。
基本上,归结为HDL描述了多个读取相同信号的寄存器。然后,您需要应用 keep 指令,例如Xilinx的 equivalent_register_removal 。您可能还需要对正在采样的信号进行时序忽略约束。
然后,您需要仔细检查FPGA的结构,并确保您的触发器位于多个站点的相同切片中,这些站点都可以通过相同类型的线连接(请参阅FPGA编辑器),即将具有同一时间延迟。
您可以在FPGA编辑器中为Xilinx构建最小的测试设计。一旦关闭了路由,就可以为UCF文件制定适当的约束,并构建更大,更复杂的TDC。
我几年前才熟悉Altera。但Altera并没有像Xilinx的FPGA编辑器那样为您提供接口,因此您可以自行确定触发器的位置。我曾经看过一个关于大学工作组与Altera一起做TDC的演讲,并最终通过使用输入激励来检查设计是否按照他们的意愿进行测试。如果不是,他们会调整一些时间参数,从合理的界限,冲洗和重复。
当然,最后一步是在设计的同步部分(计数器所在的位置)对信号进行采样,并在您想要的事件发生时(即上升沿,下降沿)读取计数器和触发器内容。然后你的计数器中的主要时间单位和次要时间单位作为触发器状态的位域。
如果你想在你的触发器延迟中进行扩展,你需要仔细检查触发器之间路径的延迟长度,并根据你的整个时钟周期进行调整。
所以基本上,counter * clock_period + index_of_highest_set_bit_in_flip_flop_state * path_delay就是你的延迟时间。
您还需要检查FPGA数据表,以了解您的最小时序,即输入缓冲区可以实现的最快切换时间,触发器的最小设置和保持时间等。