模块中端口/阵列端口的可变大小和数量,在Verilog系统Verilog中取决于参数
参考以下问题 关于这一点,我还有一个问题模块中端口/阵列端口的可变大小和数量,在Verilog系统Verilog中取决于参数,verilog,system-verilog,Verilog,System Verilog,参考以下问题 关于这一点,我还有一个问题 module my_module #(SIZEOF_LENGTH = 3, LENGTH = {8,8,7})( input clk, input rst_n, input [LENGTH[0]-1:0] data_1, input [LENGTH[1]-1:0] data_2, input [LENGTH[2]-1:0] data_3 ); 我基本上想要这样的东西。大小
module my_module #(SIZEOF_LENGTH = 3,
LENGTH = {8,8,7})(
input clk,
input rst_n,
input [LENGTH[0]-1:0] data_1,
input [LENGTH[1]-1:0] data_2,
input [LENGTH[2]-1:0] data_3
);
我基本上想要这样的东西。大小取决于从顶部传递的参数以及端口数。这可以做到吗?不使用Verilog,但可以使用Ruby或Perl等模板语言 或者,可以在SystemVerilog中使用阵列端口: 注意,这些宽度必须相同
module my_module #(
SIZEOF_LENGTH = 3,
LENGTH = 8)(
input clk,
input rst_n,
input [LENGTH-1:0] data [0:SIZEOF_LENGTH-1]
);
不在Verilog中,但可以使用Ruby或Perl等模板语言 或者,可以在SystemVerilog中使用阵列端口: 注意,这些宽度必须相同
module my_module #(
SIZEOF_LENGTH = 3,
LENGTH = 8)(
input clk,
input rst_n,
input [LENGTH-1:0] data [0:SIZEOF_LENGTH-1]
);
这个简写符号也可以使用
输入[LENGTH-1:0]数据[SIZEOF_LENGTH]
这就是问题所在,我希望数据部分有一个可变的长度。这应该是可能的,因为它是HDL,但我想LRM不支持。这种简写符号也可以input[LENGTH-1:0]data[SIZEOF_LENGTH]
这就是问题所在,我希望数据部分有一个可变的长度。这应该是可能的,因为它是一个HDL,但我想LRM不支持。