【发布时间】: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