参考自——博客园,咸鱼FPGA大佬的示例
设计文件含有状态机时,对应的仿真文件testbench里增加一段参数转ASCII码的代码,即可在Modelsim中显示出状态机名称,如下所示:
//--------------------------------------------------------------------------
//-- 状态机名称查看器
//--------------------------------------------------------------------------
//1个ASSIC码字符宽度是8位,例如“IDLE”有4个字符则需要32位宽
reg [79:0] Min_State_MACHINE ;
localparam //这段参数声明是一定要有的,否则在仿真时会报未声明变量的错误,如下图
IDLE = 7'b000_0001, //空闲状态
GEN_STA = 7'b000_0010, //产生起始信号状态
WR_DATA = 7'b000_0100, //写数据状态
RD_DATA = 7'b000_1000, //读数据状态
CHECK_ACK = 7'b001_0000, //检测应答状态
GEN_ACK = 7'b010_0000, //产生应答状态
GEN_STO = 7'b100_0000; //产生停止信号状态
always @(*) begin
case(i2c_ctrl.i2c_bit_shift.state)
IDLE : Min_State_MACHINE = "IDLE ";
GEN_STA : Min_State_MACHINE = "GEN_STA ";
WR_DATA : Min_State_MACHINE = "WR_DATA ";
RD_DATA : Min_State_MACHINE = "RD_DATA ";
CHECK_ACK : Min_State_MACHINE = "CHECK_ACK";
GEN_ACK : Min_State_MACHINE = "GEN_ACK ";
GEN_STO : Min_State_MACHINE = "GEN_STO ";
default:Min_State_MACHINE = "IDLE ";
endcase
end
这是不添加参数声明所报的错:
这是运行成功的截图