¿Cómo usar el parámetro para comparar la variable y el valor constante?

1

Aprendí que usar un parámetro para definir un módulo es un buen hábito, como tener un valor predeterminado para el parámetro en C ++ u otros idiomas.

Por lo tanto, he usado mucho el valor de un parámetro, pero enfrenté un problema cuando quiero comparar una variable de registro con un valor constante que tiene el mismo tamaño que el parámetro.

Por ejemplo, declaro un tamaño variable cuyo valor es el parámetro y me gustaría compararlo con un valor constante de 8 bits, como 8'b0.

module top_module #(parameter SIZE = 8) (output out_top);
  reg [(SIZE-1):0] temp_var;
  assign out_top = (temp_var == 8'b0) ? 1'b0 : 1'b1;
endmodule   

Si uso el valor constante con el tamaño específico, en este caso, 8'b , sería problemático cuando quiero crear una instancia del módulo con el #SIZE = 16 como abajo.

  

top_module # (SIZE = 16) top_module_inst;

¿Hay alguna forma de usar el parámetro en una declaración del parámetro?

¿O debería cambiar el tamaño del valor constante al instanciar el módulo con un tamaño diferente cada vez?

¿Alguien puede explicar las diferencias entre el uso de valores y parámetros codificados durante la síntesis y simulación?

    
pregunta JaeHyuk Lee

1 respuesta

2

El operador de replicación de Verilog funcionará aquí.

La sintaxis general es: {n{m}} ( m se replicará n veces).

El recuento de replicación, n , debe ser un valor constante y puede ser un valor de parámetro.

En su caso, el código sería:

assign out_top = (temp_var == { SIZE {1'b0} } ) ? 1b'0 : 1'b1;
    
respondido por el B Pete

Lea otras preguntas en las etiquetas