|
这是在王金明:《verilog HDL程序设计教程》中的一个计算阶乘的例子
module funct(clk,n,result,reset);
output[31:0] result;
input [3:0] n;
input reset,clk;
reg[31:0] result;
always @(posedge clk)
begin
if(!reset) result <= 0;
else begin
result <= 2 * factorial(n);
end
end
function[31:0] factorial;
input[3:0] opa;
reg[3:0] 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么?
非常感谢 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|