• 在ModelSim波形图中以参数名显示变量


    ModelSim波形图中以参数名显示变量

    在使用Verilog HDL编写有限状态机等逻辑的时候,状态机的各个状态通常以参数表示,但当使用ModelSim仿真的时候,状态机变量在wave窗口中以二进制编码的形式显示,例如:4’h0、4’h1等。这种显示形式不是很直观,但我们可以使用ModelSim提供的命令将状态机变量以“文本”形式的参数名显示,从而有利于调试。

    假如一个状态机有如下的编码:

    parameter  WAIT_INPUT1 = 2'b00,  // 状态机参数定义,表示4个状态

              DELAY1      = 2'b01,

              DELAY2      = 2'b10,

              WAIT_INPUT2 = 2'b11;

    reg     [1:0]   current_state;

    缺省情况下,状态机current_state在ModelSim的View窗口中以二进制编码的形式显示,如下图所示:

    为了在View窗口中以参数名的形式显示current_state状态机,我们可以执行下面的步骤:

             首先使用ModelSim的virtual type命令定义一个新的枚举类型(FSM_TYPE):

    virtual type {

        {2'b00 WAIT_INPUT1}

        {2'b01 DELAY1}

        {2'b10 DELAY2}

        {2'b11 WAIT_INPUT2}

    } FSM_TYPE;

             然后我们将需要显示的信号(current_state)进行类型转换,转换成一个新的信号(current_state_new);

    virtual function {(FSM_TYPE)/current_state} current_state_new;

             最后我们将新的信号加入到wave窗口中。

    add wave -hex -color pink current_state_new;

    对设计进行仿真,得到如下的波形:

    可以看到,新的信号已经用参数名的形式显示了!

    在上面的描述中,我们采用状态机为例,实际对任何一个信号均可以使用这种方法显示。例如有一个3位的计数器,那么它的可能的变化范围为3’h0、3’h1、…、3’h7。按上述的步骤,我们执行下面的命令:

    virtual type {

        {3'b000 ZERO}

        {3'b001 ONE}

        {3'b010 TWO}

        {3'b011 THREE}

        {3'b100 FOUR}

        {3'b101 FIVE}

        {3'b110 SIX}

        {3'b111 SEVEN}

    } COUNT_TYPE;

    virtual function {(COUNT_TYPE)/count_out} count_count_new;

    add wave -hex count_out;

    add wave -hex -color yellow count_count_new;

    我们可以在ModelSim的wave窗口中得到如下的波形:

    至此,在ModelSim波形图中以参数名显示变量的基本步骤就介绍完了,有关各个命令的细节可以参考ModelSim的使用手册。

  • 相关阅读:
    MIPS——分支语句
    MIPS简单入门
    迷宫问题——最短路
    用dfs遍历联通块(优化)
    用protractor測试canvas绘制(二)
    android 用java代码设置布局、视图View的宽度/高度或自适应
    HBase编程实例
    Top10Servlet
    Delete Node in a Linked List
    atitit.html5动画特效----打水漂 ducks_and_drakes
  • 原文地址:https://www.cnblogs.com/hfyfpga/p/4285250.html
Copyright © 2020-2023  润新知