Question

J'utilise le mot-clé de paramètre pour définir un état-à-dire RESET = 5'b00000. Si je veux utiliser comment puis-je faire écran $ à printout le nom de l'Etat au lieu de la représentation binaire, ou afficher le nom de l'état dans mon lecteur d'onde de simulation, cela? Il ne fonctionne pas pour essayer de l'imprimer comme une chaîne (comme on peut s'y attendre), alors je me demande si cela peut se faire.

Était-ce utile?

La solution

Je ne sais pas d'un moyen de $display automatiquement le nom d'un parameter. Toutefois, si vous ne me dérange pas dupliquer votre code, vous pouvez créer un task (ou function) pour atteindre votre objectif:

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

    $display(state); show_name_state();

Je connais au moins un (coûteux) débogueur Verilog qui a la capacité de reconnaître les paramètres et afficher automatiquement leurs noms dans sa visionneuse de forme d'onde. Verdi (anciennement Debussy) outil nWave peut le faire

Autres conseils

Si votre objectif est simplement l'affichage du nom de l'état pendant la simulation, je vais souvent faire quelque chose comme

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


Où est l'état du registre d'état qui a le paramètre en question.

Il peut y avoir plusieurs paramètres avec la même valeur, donc vous ne pouvez pas en général passer d'une valeur numérique au nom d'un paramètre avec cette valeur. Les paramètres sont tels que C #defines; bien que vous pouvez les utiliser pour définir un ensemble d'états, il n'y a pas d'association formelle entre la variable et la liste des paramètres que vous utilisez pour représenter les états possibles. Parce qu'il n'y avait pas de meilleure option qu'elle était commune à (més) paramètres d'utilisation de cette manière, mais introduit SystemVerilog un type de enum qui n'a pas les problèmes de la méthode des paramètres. Vous ne l'avez pas mentionné les outils que vous utilisez, mais en supposant que vos outils prennent en charge les types SystemVerilog enum alors ce serait un meilleur choix pour une valeur d'état.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top