让Verilog仿真状态机时可以显示状态名

让 Verilog 仿真状态机时可以显示状态名

Situation:

我们平时使用 Verilog 进行状态机编码时,通常使用 parameter

对状态名进行定义,这样写 Case 语句的时候就不会对这一串 10 摸不着头脑。 可是通常这样做的话,在 Modelsim 里看到的还是一串 10,使排错非常困难, 特别是在用 OneHot 编码的时候,就看到一串 0 中间的一个 1 #_# 简直要疯掉。 Question:

我们可不可以像 VHDL 一样,在仿真的时候看到状态名字,而不仅

仅是状态编码呢?答案当然是可以的拉,事在人为嘛!Solution1:另外定义一个 reg: state_name,长度根据状态名称长度而改变(状态名称字符数 x8);在每个 状态执行的语句中加入 state_name = ‘IDLE’; 类似的一句语句;仿真时添加 state_name 进行观察,使用 ASCII Radix。Solution2:使用如下语句:代码:`ifdef SIMULATION ‘decode’;

parameter S_idle parameter S_start

= ‘idle’;

parameter S_decode parameter S_wait parameter S_idle parameter S_start

=

= ‘start ‘; = ‘wait’; = 4’b0001; = 4’b0100;

parameter state_wid_msb = 47; `else parameter S_decode parameter S_wait

= 4’b0010;

= 4’b1000; parameter state_wid_msb = 3; `endif reg

[state_wid_msb:0] state;只要在仿真的时候`define SIMULATION 就可以了。一样 用 ASCII Radix 查看。

tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4