?/p>
Verilog
仿真状态机时可以显示状态名
Situation:
我们平时使用
Verilog
进行状态机编码时,通常使用
parameter
对状态名进行定义,这样写
Case
语句的时候就不会对这一?/p>
10
摸不着头脑?/p>
可是通常这样做的话,?/p>
Modelsim
里看到的还是一?/p>
10
,使排错非常困难?/p>
特别是在?/p>
OneHot
编码的时候,就看到一?/p>
0
中间的一?/p>
1 #_#
简直要疯掉?/p>
Question:
我们可不可以?/p>
VHDL
一样,在仿真的时候看到状态名字,而不?/p>
仅是状态编码呢?答案当然是可以的拉,事在人为嘛?/p>
Solution1:
另外定义一?/p>
reg:
state_name
,长度根据状态名称长度而改变(状态名称字符数
x8
);在每?/p>
状态执行的语句中加?/p>
state_name
=
‘IDLE?
类似的一句语句;仿真时添?/p>
state_name
进行观察,使?/p>
ASCII
Radix
?/p>
Solution2:
使用如下语句:代?/p>
:`ifdef
SIMULATION
parameter
S_idle
=
‘idle?
parameter
S_decode
=
‘decode?
parameter
S_start
=
‘start
?
parameter
S_wait
=
‘wait?
parameter
state_wid_msb
=
47;
`else
parameter
S_idle
=
4’b0001;
parameter
S_decode
=
4’b0010;
parameter
S_start
=
4’b0100;
parameter
S_wait
=
4’b1000;
parameter
state_wid_msb
=
3;
`endif
reg
[state_wid_msb:0] state;
只要在仿真的时?/p>
`define SIMULATION
就可以了。一?/p>
?/p>
ASCII Radix
查看?/p>
tips:
感谢大家的阅读,本文由我司收集整编。仅供参阅!