Modelsim显示状态机名称

该博客介绍了如何在Modelsim仿真环境中通过添加代码将FPGA设计中的状态机名称转换为ASCII码显示,以便于状态机状态的可视化跟踪。通过定义localparam声明状态机的各个状态,并在always块中根据状态机当前状态赋值实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考自——博客园,咸鱼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

这是不添加参数声明所报的错:
未添加参数声明
这是运行成功的截图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值