【问题标题】:Synthesizable delayed buffer in VHDLVHDL 中的可合成延迟缓冲器
【发布时间】:2014-11-21 20:44:00
【问题描述】:

我正在尝试在 VHDL 中为 FPGA 中的时间到数字项目生成一个可合成的缓冲区。 我一直在环顾四周,但找不到任何设置。 有人建议我 stackoverflow 有很好的答案。 您能否给我一些关于本课程工作的提示,我将非常感谢您提出的任何方法。

提前非常感谢您!

问候

【问题讨论】:

  • 对于可综合的多周期延迟,您通常只需将样本输入移位寄存器即可。如果您需要非常长/宽的延迟线并且不需要并行访问,您还可以使用 BRAM FIFO 来节省资源。您需要向我们提供有关该问题的更具体细节,以便任何人给您提供比这更具体的答案。
  • 您好,谢谢您的回答,我想做的是一个数字转换器的时间,其中需要一个缓冲器,并且信号被锁存器分接的延迟最小。 link 我已经建模了一个一位计数器,其中延迟是 ILO 的内部时钟频率。

标签: vhdl counter


【解决方案1】:

现在做延时电路 (TDC) 有点困难

基本上,归结为拥有描述多个寄存器的 HDL 都读取相同的信号。然后您需要应用 keep 指令,例如equivalent_register_removal 适用于 Xilinx。您可能还需要对正在采样的信号进行时序忽略约束。

然后,您需要仔细检查 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 数据表以了解您的最小时序,即输入缓冲区可以实现的最快切换时间、触发器的最小设置和保持时间等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多