自动售货机设计Verilog代码Quartus仿真

名称:自动售货机设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

四种商品

2元,4元,8元,10元货币1,2,5,10,20具备找零,出商品功能

代码要注释,激励也要,要状态转换图,要仿真结果图,结果图也要说明分析

要求.jpg

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1. 代码文件

2. Testbench


3. 状态图

4. 仿真图


上图仿真了选择8元商品,先后投币1元,2元,10元共13元,后购买成功,并找零5元。




部分代码展示:

//自动售货机控制模块
module auto_sell_ctrl(
input clk,//1MHz
input reset,//复位
//1号商品-2元;2号商品-4元;3号商品-8元;//4号商品-10元
input [3:0] goods_num,//商品编号
input goods_en,//商品选择信号
//投币设备
input [4:0] money_in,//1,2,5,10,20元
input money_en,//投币信号
//出货设备
output reg [3:0] goods_out,//出货商品编号
input goods_end,//出货完成
//找零设备
output reg [3:0] change_out,//找零金额
input change_end,//找零完成
//状态显示led,高亮
output reg idle_led,//待机
output reg select_led,//选商品
output reg money_led,//投币
output reg goods_led,//出货
output reg change_led,//找零
output [7:0] total_money_out,//输出投币金额
output beep//蜂鸣器,找零结束,高电平响
);
reg [2:0] state=3'd0;
parameter s_idle=3'd0;
parameter s_select=3'd1;
parameter s_money=3'd2;
parameter s_goods=3'd3;
parameter s_change=3'd4;
reg [7:0] total_money=8'd0;//总投币
reg [3:0] need_money=4'd0;//价格
assign total_money_out=total_money;
always@(posedge clk or posedge reset)
if(reset)
need_money<=4'd0;
else if(goods_en)//商品选择信号
case(goods_num)//1号商品-2元;2号商品-4元;3号商品-8元;//4号商品-10元
4'd1:need_money<=4'd2;
4'd2:need_money<=4'd4;
4'd3:need_money<=4'd8;
4'd4:need_money<=4'd10;
default:;
endcase
//总投币
always@(posedge clk or posedge reset)
if(reset)
total_money<=8'd0;
else if(state==s_idle)
total_money<=8'd0;
else if(money_en)//投币信号
total_money<=total_money+money_in;//投币累加

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 自动售货机设计Verilog代码Quartus仿真

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员