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

2010-2-21 16:40 1495 0 分类: FPGA/CPLD

在使用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状态机,我们可以执行下面的步骤:

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

virtual type {
    {2'b00 WAIT_INPUT1}
    {2'b01 DELAY1}
    {2'b10 DELAY2}
    {2'b11 WAIT_INPUT2}
} FSM_TYPE;

(2)然后我们将需要显示的信号(current_state)进行类型转换,转换成一个新的信号(current_state_new);
virtual function {(FSM_TYPE)/current_state} current_state_new;

(3)最后我们将新的信号加入到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的使用手册。
====================


modelsim 6.5b用户手册中关于virtual objects的相关内容



====================


原文出处:http://www.21eic.com/eda/ms_109199.html

文章评论0条评论)

登录后参与讨论
相关推荐阅读
wanglin_512735497 2010-02-21 17:52
电容相关知识
感谢叶同学和高同学的大力奉献。 ...
wanglin_512735497 2010-02-21 14:21
很多PCB封装的网站
http://www.pcbmatrix.com/...
wanglin_512735497 2010-02-09 17:58
EMVA
http://www.emva.org/ ...
wanglin_512735497 2010-02-09 17:49
新发现的一个关于ALTERA PLL 失锁的一个问题
原来的设计是由27M的时钟产生出来100M和75M的两种时钟,75M为系统时钟,100M为Memory时钟,并且用PLL的LOCKED输出作为系统的全局复位信号。在设计比较小的时候没有发现什么异常。而...
wanglin_512735497 2010-02-09 17:47
浮点数的内存结构
所有的C/C++编译器都是按照IEEE(国际电子电器工程师协会)制定的IEEE 浮点数表示法来进行运算的。这种结构是一种科学表示法,用符号(正或负)、指数和尾数来表示,底数被确定为2,也就是说是把一个...
我要评论
0
0
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /2 下一条