"); //-->
在使用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的相关内容
====================
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
二进制到十进制的转换
DSM-872典型应用电路(二)
DSM-872典型应用电路(一)
全球最精悍的军用ARM,X86嵌入式计算机!
中南民族大学第三届飞思卡尔智能车竞赛预赛(第一名)
Intel、台积电、三星激战2nm!三巨头先进工艺制程进度一览
电感的失效分析
吞吐量30倍提升!NVIDIA秀Blackwell性能:打破MLPerf记录居第一
【CyberSmart】2009年第四届智能车竞赛创意组冠军
ASML计划在日本扩增五倍EUV芯片工具员工
世界晶体管手册-3
世界晶体管手册-4
【长春大学】飞思卡尔智能车
请问怎样看到vxworks上的文件系统,能像dos一样显示它的文件和目录吗
数据中心市场的冰与火:大幅亏损的同时加倍采购GPU
采用CMOS运放的LED驱动电路
[求助]触摸屏求助!
全球最精悍的ARM,X86军用嵌入式计算机!
部署成本显著降低!英特尔助阵高效AI算力一体机方案
联电赴美合并格罗方德?英特尔也许是更好的选择
李想呼吁别让自动驾驶变成文字游戏:建议统一中文名
示波器原理及使用
收信放大管
全球最精悍的ARM,X86军用嵌入式计算机!
【功能扩展】ASURO智能车玩“警察抓小偷”游戏
很好理解的三极管和MOS管基础知识
视频镜头时域分割方法的研究
TTL LED驱动电路
利用三极管的直流LED驱动电路
【CyberSmart】2009年第四届智能车竞赛创意组预赛