Quiero crear una instancia de un módulo que tenga parámetros usando el bloque de generación. Pero quiero asignar diferentes valores a los parámetros para diferentes instancias del módulo.
Por ejemplo:
Este es mi módulo que quiero instanciar y tiene parámetros DATA_WIDTH & SIZE_WIDTH.
module gen_module (
input clk,
input rst );
parameter [3:0] DATA_WIDTH = 1;
parameter [3:0] SIZE_WIDTH = 2;
endmodule
Este es otro módulo en el que estoy creando una instancia de gen_module utilizando la declaración de generar . ( Pero aquí estoy usando solo un valor de parámetro de D_WIDTH y S_WIDTH para todas las instancias )
[ Está funcionando pero con un solo valor para todos ]
module top_module ();
wire clk;
wire rst;
parameter N = 5;
parameter [3:0] D_WIDTH = 7;
parameter [3:0] S_WIDTH = 4;
genvar j;
generate
for(j = 0; j <= N; j=j+1) begin : GEN_BLOCK
gen_module #(.DATA_WIDTH(D_WIDTH), .SIZE_WIDTH(S_WIDTH)) i_gen_module (
.clk (clk),
.rst (rst)
);
end
endgenerate
endmodule
Pero quiero hacer algo como esta declaración. (Como sé, la matriz de parámetros no es aplicable en Verilog)
gen_module #(.DATA_WIDTH(D_WIDTH[j]), .SIZE_WIDTH(S_WIDTH[j])) i_gen_module (
Aquí quiero dar valores diferentes a D_WIDTH [j] & S_WIDTH [j] y desea usarlos para asignar parámetros ( DATA_WIDTH & SIZE_WIDTH ) en el bloque de generación.
[Aquí J cambiará con para bucle]