用于时钟周期的循环限制的VHDL

时间:2015-05-16 11:39:55

标签: loops for-loop vhdl clock cycle

我的代码中有以下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循环中的迭代次数在时钟周期可能有多长时间内是否存在瓶颈?

1 个答案:

答案 0 :(得分:1)

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

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

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

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