帮我看一下这个函数!出了什么问题~
function factorial;input opa;
reg i;
begin
factorial = opa ? 1 : 0;
for(i= 2; i <= opa; i = i+1)
factorial = i* factorial;
end
endfunction
这是一个表示阶乘的函数~不知道为什么编译时通不过~应该是for语句出问题,还不清楚~愿赐教~ 没有办法,循环次数必须是整形变量或常量,只能写成:
module fun(ope,fac);
function factorial;
input opa;
reg i;
begin
factorial = opa ? 1 : 0;
i=2;
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
if(i<=opa)
begin
factorial = i* factorial;
i=i+1;
end
end
endfunction
input ope;
output fac;
reg fac;
always @(ope)
begin
fac=factorial(ope);
end
endmodule 嗯,我也认为是循环次数有问题,不能是变量!
大家再想想能不能设计得简单点,像上面这个程序好像有点大动干戈了,不过实在想不出来也只能是那样了!! 用组合来做这个太费逻辑了,看看时序上有没有问题,编译的时候出现什么问题?
页:
[1]