在使用Verilog编写状态机等逻辑的时候,状态机的各个状态通常以参数表示,但当使用ModelSim仿真的时候,状态机变量在wave窗口中以二进制编码的形式显示,例如:4’h0、4’h1等。这种显示形式不是很直观,不方便直观了解状态机状态之间的转换关系,但我们可以使用ModelSim提供的命令将状态机变量以“文本”形式的参数名显示,从而有利于观察与调试。通常情况下状态机变量显示如下:
修改后状态机显示的波形如下:
步骤:
1.为被测对象编写testbench,创建modelsim仿真项目,开始仿真,将所有信号添加到wave窗口;
2.创建virtual type:在modelsim transcript命令窗口输入命令
virtual type {{4'd0 IDLE} {4'd1 START} {4'd2 W_COM} {4'd3 W_COM_ACK} {4'd4 W_ADDR} {4'd5 W_ADDR_ACK} {4'd6 A_START} {4'd7 R_COM} {4'd8 R_COM_ACK} {4'd9 R_DATA} {4'd10 R_DATA_ACK} {4'd11 STOP}} FSM_TYPE
注意:一整条命令输入,不能有换行,每一项之间都有空格,输入完成后回车,即创建了FSM_TYPE类型的枚举类数据结构;
3.将被测模块中的状态机变量进行类型转换:在modelsim transcript窗口输入命令
virtual function {(FSM_TYPE)test_iic/iic_slave_ins/current_state} my_IIC_State
此命令为将test_iic/iic_slave_ins下的状态机信号current_state强制转换为FSM_TYPE类型。注意:需要指明状态机信号的路径。
4.修改wave.do文件,按照wave.do的信号格式,将信号my_IIC_State加入到波形窗口中。或者步骤3后,直接手动将其添加到wave窗口;
5.重新载入wave.do,运行,即可看到修改后的波形。
保留仿真后的波形,步骤如下:
1.点击file菜单下的save format,保存为.do格式文件
2.下次打开Modelsim后,在控制台输入do wave.do命令后,即可看到上次仿真的波形图
参考:1、modelsim66中将波形图中变量显示的二进制数字命名为特定的名字 http://www.eeskill.com/article/id/36574
2、modelsim如何保存wave窗口波形http://www.eeskill.com/group/topic/id/1288