【问题标题】:VHDL for loop limit on clock cycle用于时钟周期循环限制的 VHDL
【发布时间】:2015-05-16 11:39:55
【问题描述】:

我的代码中有以下 for 循环:

for index in 0 to a'length-1 loop
  result(index) := a(index) xor bb(index) xor carry_in;
  carry_in := (carry_in and (a(index) or bb(index))) or
              (a(index) and bb(index));
    end loop;

它接受 32 位的信号 a。所以循环有 32 次迭代。我想知道在 FPGA 无法再运行此代码之前,可以运行多少次迭代的瓶颈在哪里。我能够合成代码,但是当我将时钟频率提高到高于 48MHz 时,FPGA 无法再读取 .bit 流文件。任何低于 48 MHz 的频率都可以。

for循环中的迭代量是否存在某种瓶颈,时钟周期可能有多长?

【问题讨论】:

  • 如何提高时钟频率?增加时钟频率会导致计时错误(在报告中,如果在硬件中也有)。
  • 你是否限制了你的时钟?您应该在静态时序分析 (STA) 中看到时序松弛,并了解瓶颈在哪里。您使用的是什么 fpga/综合工具?
  • @JonathanDrolet FPGA 有一个 100 MHz 的晶体振荡器,并且有一个时钟分频器,可以创建一个较低频率的时钟信号。据我所知,时钟还没有被控制住。我必须更好地调查时间报告。我想我确实在那里看到了一些关于关键路径的东西。我正在使用 xilinx ise 工具。
  • @Paebbels 在时钟分频器组件中,有一个乘数和除数变量,时钟输出基于 (multiplier/divider)*systemclock。
  • 您是否使用 PLL 来分频时钟?你用的是什么FPGA?

标签: loops for-loop vhdl clock cycle


【解决方案1】:

循环迭代次数、FPGA 大小及其最大值。时钟频率并没有真正连接......

综合将您的循环转换为几个阶段(您的示例有 32 个阶段)。 您生成的阶段越多,使用的 FPGA 资源就越多。所以你可以用一个循环填满整个 FPGA。

最大。时钟频率取决于两个触发器之间的最长路径(也称为关键路径)。例如,18 ns 的关键路径等于大约 50 MHz 的 Fmax(有关此主题的更多详细信息,请参见关键路径、建立/保持时间、静态时序分析)。当您的循环产生较长的关键路径并且不插入流水线触发器时,Fmax 将减小。您还可以查看综合报告以进行 Fmax 分析或其他指标,例如:逻辑水平。

如果 FPGA 不接受位文件,则说明您上传了错误的位文件。 这是我自己触发的。我为 Spartan-3E 选择了错误的 FPGA 尺寸和引脚排列。这导致 USB/JTAG 加载程序崩溃并挂断了我的 USB 端口,然后挂断了我的 PC :(.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    相关资源
    最近更新 更多