假设我必须在 std_logic_vector 上测试不同的位。实现一个单一的进程,每个位的for循环或使用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 总是更好,代价是额外的面积和较低的复杂性,还是我必须验证每一个实现可能性的情况之一?