cdyy777 发表于 2010-7-28 11:05:24

请教:verilog for循环问题

这是在王金明:《verilog HDL程序设计教程》中的一个计算阶乘的例子

module funct(clk,n,result,reset);
output result;
input n;
input reset,clk;
reg result;
always @(posedge clk)
begin
if(!reset) result <= 0;
elsebegin
   result <= 2 * factorial(n);
   end
end

function factorial;
input opa;
reg i;
begin
factorial = opa ? 1 : 0;
for(i = 2; i <= opa; i = i + 1)
factorial = i * factorial;
end
endfunction
endmodule
综合时提示错误
For loop stop condition should depend on loop variable or be static.

原因应该是opa不是静态的导致的

有人知道怎么解决么??能用什么代替FOR么?

非常感谢

zlfxia 发表于 2010-7-28 22:16:46

verilog 的 for 循环应该是用在 Testbench 的模块中的,好像不能直接用作可综合系统的功能模块的

leafing 发表于 2010-7-28 22:32:43

回复【1楼】zlfxia
-----------------------------------------------------------------------

是可以综合的

justsun 发表于 2010-7-29 09:26:51

可以综合,但是很多书上建议,在必不得已的情况下用……

dr2001 发表于 2010-7-29 09:27:58

在顺序复制一堆模块和信号的情况下,可以用For Generate,这是很方便的。
单纯的for,要看具体情况了。

cdyy777 发表于 2010-7-29 13:28:38

OH。
谢谢各位了。
看来还要另外想办法。
页: [1]
查看完整版本: 请教:verilog for循环问题