Generar sentencia if-for

1

¿Podemos declarar Generar declaración if-for?

module prac#(parameter m=3)
(input x, input[2:0]a,b,output[2:0]c);
wire [2:0]f[0:3];
genvar i;
generate
if(!x) begin : d2
    for(i=0;i<=m;i=i+1) begin:dd
    assign f[i]=(a & b);  end
end
endgenerate
endmodule

Está diciendo que 'x' no es una constante. Quiero crear una instancia de un módulo varias veces según la señal de control. Aquí x es mi señal de control. ¿Es posible?

Gracias de antemano.

    
pregunta Sandeep I

3 respuestas

2

Lo que has escrito es:

"Si la señal X es verdadera, no necesito ningún hardware.
  Si la señal X es falsa, quiero tener algún hardware que tenga ..... "

El hardware ya existe o no existe. No puede simplemente desaparecer en nada o aparecer de la nada.

Todo lo que puedes hacer es tener el hardware (siempre) presente, final y luego Se puede usar o no.

    
respondido por el Oldfart
1

No, no puede controlar la creación de instancias de los módulos en tiempo de ejecución. No confunda un lenguaje de descripción de hardware con un lenguaje de programación convencional. Debe crear una instancia, de una vez por todas, de cada módulo que necesitará. Su código HDL luego especifica las formas de controlar el flujo de datos y el acceso condicional a los módulos.

    
respondido por el Elliot Alderson
0

Haz de X un parámetro en lugar de una entrada. Las entradas pueden cambiar con el tiempo, los parámetros se fijan por instanciación.

También debes asignar algo a F en una rama "else".

    
respondido por el Matt

Lea otras preguntas en las etiquetas