verilog模块间传递参数

来源:互联网 发布:城市与文明游戏 知乎 编辑:程序博客网 时间:2024/04/30 13:49

在verilog模块化设计中,有时候需要在顶层对底层定义的参数做修改,这就涉及到一个参数在模块间传递的问题,一般方法有2种。

假设: 顶层模块定义:mod_top(rst,clk,data);

底层模块定义:mod(rst,clk,data);

底层参数定义:parameter FREQ = 1000;

模块例化名:U1

目的: 通过顶层传递一个新的参数给底层来改变FREQ的值。

方法1: defparam定义法

顶层参数定义:defparam U1.FREQ = 2000;

顶层模块例化:mod U1(.rst(rst),.clk(clk),.data(data));

方法2: #方法

顶层参数定义:parameter FREQ = 2000;

顶层模块例化:mod #(.FREQ(RREQ)) U1(.rst(rst),.clk(clk),.data(data));

用以上两种方法都可以实现对参数的修改,即实际运行中FREQ=2000。

若在顶层还要对参数做操作则应该用第2种方法。