Modelsim中改变模块参数

引用一个模块的时候,上层模块可以改变下层模块中parameter的值,方法一般有两种:

1、用defparam重新定义。

       形式:defparam inst_name.para = value;

       例如:

       module sub(…);

           parameter   param1 = 1;

           …

       endmodule

       module top(…);

          defparam sub_inst.param1 = 2;///////

          sub sub_inst(…);

       endmodule

2、实例化时重新传递。

       实例化时把参数传递过去,有多个参数时有逗号隔开。例如:

       …

       sub #(2) sub_inst(…);

       …

               有多个参数时,用逗号隔开。例如:#(1,2,3,…)

         注意事项:

         1、上述两种方法都是可综合的;

         2、传递参数时可使用表达式,但是使用表达式时,要确保FPGA中有可用的逻辑

              单元与该表达式对应。例如,假若当前乘法器是8位的,不要在表达式中使

              用位数超过8位的乘法。笔者曾经在表达式中使用过多位的乘法,最后被优

              化掉了,原因猜测是乘法器位数超了。事实上,出现乘法或除法的运算时,

              建议使用左移或右移的运算。

原文地址:https://www.cnblogs.com/freshair_cnblog/p/1992271.html