Как передать указанный индекс массива c в качестве входных данных в модуль в Verilog? - PullRequest
0 голосов
/ 06 апреля 2020

У меня 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

В другом модуле у меня есть массив F длины 4 в качестве входных данных и мне нужен экземпляр 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

1 Ответ

1 голос
/ 08 апреля 2020

Чтобы создать ваш селекторный сигнал, вы можете просто объединить нужный вам сигнал из вашего массива.

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

В этом В этом случае младший бит селектора равен F [3], а его старший бит - F [1]

.
...