探究仿真仿真-波形状态机名称显示

2021-07-23 16:49 来源:电子说

在通常的仿真波形仿真中,状态机的显示为16进制,如3'h1。如下图所示str_cur为状态跳变信号。

FPGA开源工作室

为了更加直观的以文本形式显示状态机的跳变,如自己定义的闲置的等,我们可以使用

虚拟类型虚拟函数

状态机源文件:

//自动售货机//2元一瓶饮料//只支持2个硬币:5角一元//完成售卖和兑换功能

模块自动售货机_机器(输入clk,输入rstn,输入[1:0]硬币,//01为0.5角,10为一元

输出[1:0]变化,输出出售/输出这饮料);

//机器状态解码参数空闲=3 ' d0参数GET05=3 ' d1参数GET10=3 ' d2参数GET15=3 ' d3

//机器变量reg[2:0]ST _ cur;

//(1)使用一个状态变量描述reg[1:0]change _ r;reg sell _ r;总是@(posedge clk或negedge rstn)开始if(!rstn)开始ST _ cur "=' B0change _ r "=2 ' B0sell _ r "=1 ' B0end else begin case(st_cur)

IDLE:begin change _ r "=2 ' B0;sell _ r "=1 ' B0表壳(硬币)2 ' b01:ST _ cur "=GET05;2 ' b10:ST _ cur "=GET 10;结束案例结束GET05:开始案例(硬币)2 ' b01:ST _ cur "=GET10;2 ' b10:ST _ cur "=GET 15;端盖端

GET 10:case(硬币)2 ' b01:begin ST _ cur "=GET 15;end 2 ' b10:begin ST _ cur "=IDLE;sell _ r "=1 ' B1末端外壳

GET15:case(coin)2 ' b01:begin ST _ cur "=IDLE;sell _ r "=1 ' B1end 2 ' b10:begin ST _ cur "=IDLE;change _ r "=2 ' B1sell _ r "=1 ' B1末端外壳

默认值:begin ST _ cur "=IDLE目标

endcase //case (st_cur) end //else:if(!rstn)结束

赋值sell=sell _ r;分配变更=变更_ r;

末端模块

仿真顶层文件:

`时间刻度1ns/1ps

模块tb _自动售货机;

reg clkreg rstnreg [1:0]硬币;电线[1:0]更换;电汇销售;

//时钟生成参数CYCLE _ 200MHz=10//总是开始clk=0;#(CYCLE _ 200 MhZ/2);clk=1;#(CYCLE _ 200 MhZ/2);目标

//动机生成reg[9:0]buy _ oper;//购买操作的存储状态初始begin buy _ oper=' h0硬币=2 ' h0rstn=1 ' B0 # 8 rstn=1 ' B1 @(neg edge clk);

//case(1)0.5-》0.5-》0.5-》0.5 # 16;buy _ oper=10 ' b00 _ 0101 _ 0101重复(5)begin @(neg edge clk);coin=buy _ oper[1:0];《买入操作=买入操作》2;目标

//案例(2) 1 -》 0.5 -》 1,取变化# 16;buy _ oper=10 ' b00 _ 0010 _ 0110重复(5)begin @(neg edge clk);coin=buy _ oper[1:0];《买入操作=买入操作》2;目标

//case(3)0.5-《1-》0.5 # 16;buy _ oper=10 ' b00 _ 0001 _ 1001重复(5)begin @(neg edge clk);coin=buy _ oper[1:0];《买入操作=买入操作》2;目标

//案例(4)0.5-〉0.5-〉0.5-〉1、取变化# 16;buy _ oper=10 ' b00 _ 1001 _ 0101重复(5)begin @(neg edge clk);coin=buy _ oper[1:0];《买入操作=买入操作》2;结束结束

自动售货机u_mealy(.clk (clk),rstn .硬币。改变(改变),出售(出售));

//模拟完成总是从#100开始;if($ time)=10000)$ finish;目标

endmodule /测试

仿真脚本sim.do文件:

#建立一个新的图书馆

#切换到仿真源文件目录

vlog ACC " TB _ venting _ machine。v“vlog ACC”通风_机器。“五

#开始模拟

vsim-VOP targs=ACC工作。结核病_自动售货机

#把顶层的所有信号加起来波* #做波。做

虚拟类型{ {0x 00 IDLE } {0x 01 GET 05 } {0x 02 GET 10 } {0x 03 GET 15 } } FSM _ TYPe虚拟函数{(FSM _ TYPE)/TB _ autowing _ machine/u _ mealy/ST _ cur }状态1添加wave u _ mealy/ST _ curad wave-color pink/TB _ autowing _ machine/u _ mealy/状态1

视图结构视图信号全部

仿真结果如下

FPGA开源工作室

状态机二进制被文本所替代。

编辑:jq

延伸 · 阅读