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

  • 格式:docx
  • 大小:9.37 KB
  • 文档页数:1

下载文档原格式

  / 1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

让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 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;只要在仿真的时候`define SIMULATION 就可以了。一样

用ASCII Radix 查看。

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