如何将特定数组索引作为输入传递给 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]
我有一个 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]