请教: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么?
非常感谢 verilog 的 for 循环应该是用在 Testbench 的模块中的,好像不能直接用作可综合系统的功能模块的 回复【1楼】zlfxia
-----------------------------------------------------------------------
是可以综合的 可以综合,但是很多书上建议,在必不得已的情况下用…… 在顺序复制一堆模块和信号的情况下,可以用For Generate,这是很方便的。
单纯的for,要看具体情况了。 OH。
谢谢各位了。
看来还要另外想办法。
页:
[1]