8 verilog const hdl system-verilog
而不是使用
module ... ( .. ) ;
#15
endmodule
Run Code Online (Sandbox Code Playgroud)
我想用
module ... ( ... ) ;
// GateDelay is a const, like in c language const int GateDelay = 15 ;
# GateDelay
endmodule
Run Code Online (Sandbox Code Playgroud)
或者同样的事情
module ... ( ... ) ;
// assume Wordsize is defined at " define Wordsize 15 "
reg [ Wordsize -1 : 0 ] mem ;
endmodule
Run Code Online (Sandbox Code Playgroud)
我能用verilog做那个愿望吗?
Mar*_*rty 19
你有几个选择:
`defines的宏parameter小号 localparam小号这是一个小例子.
`define CONSTANT_MACRO 1 /* important: no ';' here */
module mymodule
#( parameter WIDTH = 5 )
(
input wire [WIDTH-1:0] in_a,
output wire [WIDTH-1:0] out_a
);
localparam CONSTANT_LOCAL = 2;
assign out_a = in_a + `CONSTANT_MACRO - CONSTANT_LOCAL;
endmodule
Run Code Online (Sandbox Code Playgroud)
小智 5
对于您列出的情况,我会推荐参数。
与 C 编译器指令一样,`define 对于编译是全局的。如果您的代码将与您无法控制的代码一起使用,则在此处需要小心。
参数始终是模块范围的局部参数,因此不同设计元素中的相同命名参数不会相互冲突。它们还有一个优势,即可以在每个实例的基础上覆盖它们。
module #(parameter DATA_WIDTH = 1) busSlave(
input [DATA_WIDTH-1:0] bus_data,
input bus_wr,
...
);
endmodule
module top;
//DATA_WIDTH is 32 in this instance
busSlave #(.DATA_WIDTH(32)) slave32(
.bus_data(data_0),
.bus_wr(wr_0),
...
);
//DATA_WIDTH is 64 in this instance
busSlave #(.DATA_WIDTH(64)) slave64(
.bus_data(data_1),
.bus_wr(wr_1),
...
);
endmodule
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34456 次 |
| 最近记录: |