gpt4 book ai didi

verilog - 如何使用 Verilog 和 FPGA 通过一系列组合电路计算传播延迟?

转载 作者:行者123 更新时间:2023-12-04 22:15:17 27 4
gpt4 key购买 nike

我是 FPGA 和 HDL 的新手,但我正在努力学习并且无法解决这个问题。如何通过多个级别的组合逻辑来计算或估计传播延迟。我只能凭经验确定这一点,还是可以在设计时弄清楚。在这种情况下,我使用 FPGA 来实现奇偶校验设置和检查电路。该电路看起来像示例图片一样的异或门树网络,除了我打算异或 16 个寄存器,因此会有更多级别或异或运算。我希望能够通过每个“级别”异或逻辑计算传播延迟,以便我可以确定整个奇偶校验和设置操作需要多少个时钟周期或多少纳秒。希望我说的有道理。



非常感谢您的帮助。

最佳答案

您需要“知识”,正如我在“高性能 FPGA 设计的艺术”中所解释的那样。 http://www.fpgacpu.org/log/aug02.html#art “你必须......启动你的工具并设计一些测试电路,然后打开时序分析器和 FPGA 编辑器并倾倒结果,延迟(逻辑和路由)往往是什么,等等。 ”

在你这样做一段时间后,你会看到这种问题,并且知道(或有一个很好的主意)。

在这种情况下,例如,我知道在 FPGA 中,16 输入 XOR 将建立在 4 或 6 输入查找表(4-LUT 或 6-LUT)两个深的树中,并且不能在电路中仅实现一个 LUT 深度。因此,流水线实现中此类电路的最小延迟将是(在 Xilinx 时序命名法中):

  • tCKO -- 任何 16 触发器的时钟输出延迟
  • tILO -- 通过第一级 LUT 的延迟
  • tAS——假设在同一切片中实现,延迟到第 2 级 LUTS + 触发器设置时间
  • 加上网络布线延迟

  • 对于 Virtex-6 速度 -1,我希望这是 ~1.5 ns。

    正如其他人所说,组件切换延迟数据在您相关设备的数据表中,但网络布线延迟不在。事实上,随着时间的推移,您甚至可能会开始记住关键延迟,并了解您可以使用多少 FPGA 原语(如 LUT),并且仍然可以实现特定的时钟周期/时钟频率目标。

    无论如何,我只是用我编码的一些一次性 Verilog 尝试了这个:
    module t(clk, i, o);
    input clk;
    input [15:0] i;
    output reg o;

    reg [15:0] d;
    always @(posedge clk) begin
    d <= i;
    o <= ^d;
    end
    endmodule

    和一个简单的 UCF 文件:
    net clk period = 1.5 ns;

    我的设备的总延迟约为 1.4 ns。自己试试看吧!

    这是静态时序分析器输出的一条路径:
    Paths for end point o (SLICE_X3Y68.A5), 6 paths
    --------------------------------------------------------------------------------
    Slack (setup path): 0.198ns (requirement - (data path - clock path skew + uncertainty))
    Source: d_13 (FF)
    Destination: o (FF)
    Requirement: 1.500ns
    Data Path Delay: 1.248ns (Levels of Logic = 2)
    Clock Path Skew: -0.019ns (0.089 - 0.108)
    Source Clock: clk_BUFGP rising at 0.000ns
    Destination Clock: clk_BUFGP rising at 1.500ns
    Clock Uncertainty: 0.035ns

    Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
    Total System Jitter (TSJ): 0.070ns
    Total Input Jitter (TIJ): 0.000ns
    Discrete Jitter (DJ): 0.000ns
    Phase Error (PE): 0.000ns

    Maximum Data Path at Slow Process Corner: d_13 to o
    Location Delay type Delay(ns) Physical Resource
    Logical Resource(s)
    ------------------------------------------------- -------------------
    SLICE_X3Y67.BQ Tcko 0.337 d<15>
    d_13
    SLICE_X2Y68.A2 net (fanout=1) 0.590 d<13>
    SLICE_X2Y68.A Tilo 0.068 d<11>
    d[15]_reduce_xor_21_xo<0>1
    SLICE_X3Y68.A5 net (fanout=1) 0.180 d[15]_reduce_xor_21_xo<0>
    SLICE_X3Y68.CLK Tas 0.073 d<10>
    d[15]_reduce_xor_21_xo<0>3
    o
    ------------------------------------------------- ---------------------------
    Total 1.248ns (0.478ns logic, 0.770ns route)
    (38.3% logic, 61.7% route)

    如您所见,数据表中的逻辑延迟仅为 480 ps 左右,而网络布线延迟为 770 ns,时钟偏差等稍多一些,总计​​不到 1.3 ns。这实际上比 700 MHz/1.43 ns 全局时钟树上的组件切换限制/Fmax 快...

    总而言之,当您尝试一些测试电路并尝试对其进行调整时,您将获得经验,帮助您估计在诸如 LUT 之类的 FPGA 原语中实现电路时的运行速度。

    如果真的很重要,那么通过综合、布局布线和静态时序分析来实现设计是无可替代的。不要忘记添加时序约束来为工具提供一些目标,然后反复试验降低最小时钟周期,直到收敛到最小周期。

    快乐黑客!

    关于verilog - 如何使用 Verilog 和 FPGA 通过一系列组合电路计算传播延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874705/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com