Verilog: Instanciando arreglos en módulos
Digamos que tengo un módulo adder:
module adder(
input [3:0] A,
input [3:0] B,
output [4:0] F
);
assign F = A + B;
endmodule;
y un módulo toplevel:
module toplevel(
input [3:0] X,
input [3:0] Y,
output [4:0] Z
);
adder adder_1(
.A(X),
.B(Y),
.F(Z)
);
endmodule;
¿Puedo instanciar el módulo asignando números a los bits individuales en su array?
Por ejemplo, ¿puedo escribir algo como esto?
adder adder_1(
.A[0](X[0]),
.A[1](X[1}),
y así sucesivamente. ¿Hay alguna manera de asignar directamente el bit 0 de A del módulo adder a un bit en el módulo de nivel superior?
davy.ai
Sí, es posible instanciar un módulo asignando números a los bits individuales en su array. La sintaxis que has proporcionado es correcta.
En el código de ejemplo que has proporcionado, puedes asignar bits individuales de la entrada X a la entrada A del módulo de suma utilizando la siguiente sintaxis:
Los corchetes {} se utilizan para crear una concatenación de bits individuales. En este caso, estamos concatenando los bits individuales de X para crear un vector de 4 bits que se asignará a A.
Alternativamente, también puedes asignar los bits individuales de A directamente a los bits en X utilizando la siguiente sintaxis:
Aquí, estamos instanciando el módulo de suma con A como puerto de entrada y lo asignamos a la señal local A. Luego, podemos asignar los bits individuales de A a los bits en la entrada X utilizando las declaraciones assign.