Verilog如何从外部更改模块内参数

例如有一个模块

1 module x(a,b,c);
2    input a,b; 
3    output c; 

4    parameter t=4'd0, h=9'd3;
5  
6    ......
7  
8 endmodule

 

两种解决方法:

  • 1、使用带有参数值的模块实例语句
 1 module x_top(d,e,f,g);
 2   input d,e,f;
 3   output g;
 4 
 5   x #(1,4) xx(
 6       .a(a),
 7       .b(b),
 8       .c(c)
 9       );
10 endmodule

 

  • 2、使用参数重定义语句deparam

 

 1 module x_top(d,e,f,g);
 2   input d,e,f;
 3   output g;
 4 
 5   deparam   xx.t = 4'd1, xx.h = 9'd4;
 6 
 7   x  xx(
 8       .a(a),
 9       .b(b),
10       .c(c)
11       );
12 
13 endmodule

 

 

注意:对于下面这个模块

module exam_prj
2     #(parameter WIDTH=8)     //parameter 1
3     //端口内的参数只能在这使用 
4     (
5         input [WIDTH-1:0] dataa,//[WIDTH-1:0]
6         input [WIDTH-1:0] datab,
7 
8         output reg [WIDTH:0] result
9     );
 parameter Conuter_Top = 4'd9;//用于代码部分的参数  parameter 2
//代码部分省略
endmodule

这里出现的两个参数 parameter,第一个表示只在端口设置时使用,第二个是对于模块内部的使用。

 

2018-04-18  17:26:34

posted @ 2018-04-18 17:39  愣娃娃  Views(3914)  Comments(0Edit  收藏  举报