如何将特定数组索引作为输入传递给 Verilog 中的模块?

How to pass specific array index as input in a module in Verilog?

我有一个 4:1 MUX 如下:

module mux4_1 (input [31:0]A, input [31:0]B, input [31:0]C, input [31:0]D, input sel[1:0], output [31:0]Y);

wire mux1o, mux2o;
mux2_1 mux1 (A, B, sel[0], mux1o);
mux2_1 mux2 (C, D, sel[0], mux2o);
mux2_1 mux3 (mux1o, mux2o, sel[1], Y);

endmodule

在另一个模块中,我有一个长度为 4 的数组 F 作为输入,并且在该模块中需要一个 4:1 mux 的实例,其中包含元素 F[1]F[3] F 个作为选择器。声明实例时如何指定?当然下面这段代码不起作用,但它应该说明我正在努力实现的目标。

module someModule (inputs... F[3:0], outputs...);
 // some code...
 mux mux4_1 (A, B, C, D, F[1]F[3], Y);
endmodule

要创建您的选择器信号,您可以简单地从您的数组中连接您需要的信号。

wire [1:0] selector;
assign selector = {F[1], F[3]};

// selector is a 2 bit vector where 
// selector[0] == F[3]
// selector[1] == F[1]

在您的情况下,实施速度会更快:

module someModule (inputs... F[3:0], outputs...);
     // some code...
     mux4_1 myInstance (A, B, C, D, {F[1], F[3]} , Y);
endmodule

在这种情况下,选择器的LSB是F[3],它的MSB是F[1]