【发布时间】:2015-10-02 07:47:18
【问题描述】:
假设我必须在 std_logic_vector 上测试不同的位。实现一个单独的进程,为每个位循环或使用 for-generate 实例化“n”个进程,每个进程测试一位会更好吗?
FOR循环
my_process: process(clk, reset) begin
if rising_edge (clk) then
if reset = '1' then
--init stuff
else
for_loop: for i in 0 to n loop
test_array_bit(i);
end loop;
end if;
end if;
end process;
生成
for_generate: for i in 0 to n generate begin
my_process: process(clk, reset) begin
if rising_edge (clk) then
if reset = '1' then
--init stuff
else
test_array_bit(i);
end if;
end if;
end process;
end generate;
在这种情况下,对 FPGA 和 ASIC 实施有何影响? CAD工具容易处理什么?
编辑: 只需添加我给一位帮助者的回复,以使我的问题更清楚:
例如,当我在 ISE 上使用 for 循环运行一段代码时,综合摘要给了我一个公平的结果,需要很长时间来计算所有内容。当我重新编码我的设计时,这次使用 for-generate 和几个进程,我使用了更多的区域,但是该工具能够更快地计算所有内容,并且我的计时结果也更好。那么,它是否暗示了一条规则,即使用 for-generates 总是更好,但需要额外的面积和较低的复杂性,还是我必须验证每一种实现可能性的情况之一?
【问题讨论】:
标签: for-loop vhdl fpga hardware-programming asic