微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 菜鸟问一个verilog中function模块的问题。

菜鸟问一个verilog中function模块的问题。

时间:10-02 整理:3721RD 点击:
学习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  //模块结束

确定后面的语句是用来验证的吗?

后面是计算result的一个表达式,如果用这个式子来检验结果太没必要了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top