Pregunta

Estoy utilizando la palabra clave parámetro para definir un estado es decir reset = 5'b00000. Si quiero usar $ pantalla en formato papel el nombre del estado en lugar de la representación binaria, o mostrar el nombre del estado en mi visor de onda de simulación, ¿cómo puedo hacer esto? No funciona para tratar de imprimirlo como una cadena (como era de esperar), por lo que me pregunto si esto se puede hacer.

¿Fue útil?

Solución

No sé de una manera de $display automáticamente el nombre de un parameter. Sin embargo, si no te importa la duplicación de su código, se puede crear un task (o function) para lograr su objetivo:

    task show_name_state;
        case (state)
            5'b00000: $display("RESET");
            5'b00001: $display("WAIT");
        endcase
    endtask

    $display(state); show_name_state();

Sé de al menos un (caro) Verilog depurador que tiene la capacidad de reconocer automáticamente los parámetros y sus nombres aparezcan en su visor de forma de onda:. Verdi (antes Debussy) nWave herramienta puede hacer esto

Otros consejos

Si su objetivo es sólo la pantalla el nombre del estado durante la simulación, yo suelo hacer algo así como

`ifdef SIMULATION
reg [127:0] __state__;
case (state)
  STATE_1 : __state__ = "STATE_1";
  STATE_2 : __state__ = "STATE_2";
  default : __state__ = "error";
endcase
`endif


Donde el estado es el registro de estado que tiene el parámetro en cuestión.

Puede haber varios parámetros con el mismo valor, por lo que no se puede ir en general, de un valor numérico para el nombre de un parámetro con ese valor. Los parámetros son como C #defines; aunque se puede utilizar para definir un conjunto de estados, no existe una asociación formal entre la variable y la lista de parámetros que utiliza para representar los estados posibles. Debido a que no había mejor opción que solía ser común a (des) parámetros de uso de esta manera, pero luego SystemVerilog introdujo un tipo enum que no tiene los problemas del método de parámetros. Usted no ha mencionado qué herramientas que está utilizando, pero asumiendo que sus herramientas soportan tipos de enumeración SystemVerilog entonces eso sería una mejor opción para un valor de estado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top