|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
学习Verilog过程中碰见一个阶乘函数定义和调用的模块。后面测试部分怎么都看不懂测试了个啥。
关键句:result = n *factorial(n)/((n*2)+1); //为什么结果会用这样的表达输出,那么最先两个结果分别是4/5和18/7?
完整模块如下:
module tryfact;
//函数的定义————————
function[31:0]factorial;
input[3:0]operand;
reg[3:0]index;
begin
factorial = 1; //0的阶乘为1,1的阶乘也为1
for(index=2; index<=operand; index=index+1)
factorial = index*factorial;
end
endfunction
//函数的测试————————
reg[31:0]result;
reg[3:0]n;
initial
begin
result=1;
for(n=2; n<=9; n=n+1)
begin
$display("Partial result n= %d result= %d", n, result);
result = n * factorial(n)/((n*2)+1);
end
$display("Finalresult= %d", result);
end
endmodule //模块结束 |
|