没有合适的资源?快使用搜索试试~ 我知道了~
在modesim中显示状态机变量参数名的两种方法及比较
3 下载量 3 浏览量
2020-08-04
09:43:45
上传
评论
收藏 50KB PDF 举报
温馨提示
试读
2页
对于VHDL,modelsim是直接支持的,对于verilog我们则需要动些小脑筯。我在网上搜罗了一下,主要包括以下两种方法: 1.通过modelsim的virtual type命令来实现。 2.通过条件编译指令来实现。
资源推荐
资源详情
资源评论
在在modesim中显示状态机变量参数名的两种方法及比较中显示状态机变量参数名的两种方法及比较
对于VHDL,modelsim是直接支持的,对于verilog我们则需要动些小脑筯。我在网上搜罗了一下,主要包括以下
两种方法: 1.通过modelsim的virtual type命令来实现。 2.通过条件编译指令来实现。
通过modelsim的virtual type命令实现状态名显示的具体操作
用virtual type命令定义一个新的枚举类型(FSM_TYPE);
在sim.do(或者你自己的.do脚本)中添加以下代码(以下代码都可以直接在modsim的Transcrip窗口中作为命令输入,如果你不
嫌麻烦的话,当然我不建议你这么做 :-):
# 使用ModelSim的virtual type命令定义一个新的枚举类型(FSM_TYPE)
# 注意:状态变量之间需要一个空格,注意4'b0001不能像verilog里面一样写成4'b00_01
virtual type {{4'b0001 STATE1} {4'b00010 STATE2} {4'b0100 STATE3} {4'b1000 STATE4}} FSM_TYPE
注意:状态变量之间需要一个空格,注意4’b0001不能像verilog里面一样写成4’b00_01
然后我们将需要显示的信号state_cur、state_next分别进行类型转换,转换成两个新的信号state_curNew、state_nextNew。
在sim.do(或者你自己的.do脚本)中添加以下代码:
# 将需要显示的信号(/testbench/fsm/state_cur,注意信号在wave窗口中的完整名字)进行类型转换,
#转换成一个新的信号state_curNew
virtual function {(FSM_TYPE)/testbench/fsm/state_cur} state_curNew
#同样处理state_next信号
virtual function {(FSM_TYPE)/testbench/fsm/state_next} state_nextNew
最后我们将新sate_curNew、state_nextNew的信号加入到wave窗口中。
#将新信号加入wave窗口
add wave testbench/fsm/sate_curNew
add wave testbench/fsm/sate_nextNew
或者直接在modsim的Transcrip窗口中输入以上命令。
缺点:
1.在波形窗口中将会同时出现原来以数字显示的状态机变量和以参数名显示新的状态机变量,如下图
(图中的state1即为curr_state转化后的新信号,state2即为next_state转化后的新信号)
当然也可以在脚本中加入命令删除原来的状态变量波形。
2.操作麻烦,当把以上脚本代码应用到新项目中时要修改的地方比较多(如果让你从Transcrip窗口一条条输入命令,那会蛋疼
得生不如死)显得很多不通用也不便于维护,所以我更愿意使用和推荐下面这种方法。
通过条件编译指令实现状态名显示的具体操作
添加条件编译指令,即存在`SIM定义时将每一个状态定义为字符串,这里需要注意stateCur、stateNxt在定义为字符串时需要
给予足够的长充,否则波形显示时字符串将会不完整。
`ifdef SIM
localparam STATE1 = "STATE1";
localparam STATE2 = "STATE2";
localparam STATE3 = "STATE3";
localparam STATE4 = "STATE4";
localparam STATE5 = "STATE5";
localparam STATE6 = "STATE6";
localparam STATE7 = "STATE7";
localparam STATE8 = "STATE8";
localparam STATE9 = "STATE9";
localparam STATE10 = "STATE10";
reg [255:0] stateCur;
reg [255:0] stateNxt;
`else
localparam STATE1 = 10'b00_0000_0001;
localparam STATE2 = 10'b00_0000_0010;
localparam STATE3 = 10'b00_0000_0100;
localparam STATE4 = 10'b00_0000_1000;
localparam STATE5 = 10'b00_0001_0000;
localparam STATE6 = 10'b00_0010_0000;
localparam STATE7 = 10'b00_0100_0000;
localparam STATE8 = 10'b00_1000_0000;
资源评论
发亮日渐稀疏
- 粉丝: 154
- 资源: 914
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功