• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的自动售货机控制系统设计Verilog代码Quartus仿真

07/26 08:07
648
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240515192S4212.doc

共1个文件

名称:基于FPGA的自动售货机控制系统设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

设计完成图中FPGA控制核心电路。在外部提供1MHz时钟及Rest信号前提下实现以下功能:

(1)商品选择设备在本项目中不做设计,有外部设备自行处理。在用户选择商品后,商品编号会自动以4位数据线按照8421BCD方式向FPGA控制核心电路发送。FPGA控制核心电路选择商品编号进行显示。可以假设按照如下表格进行数据仿真处理。

QQ图片20240515191932.png

(2)对来自外界投币设备的金额信号进行处理累加及显示,投币设备不需要学生设计。投币设备可投入1元、2元、5元、10元面值货币,每投入一次货币就会自动向FPGA控制核心电路以4位数据线按照8421BCD方式并行发送一次数据。要求FPGA控制核心对金额进行叠加,并实时对累加值进行显示。

(3)FPGA控制核心向显示部分发送7段共阴LED显示字形码。硬件为4位7段共阴LED显示。静态显示控制。前两位显示商品编号、后两位显示投入金额。

(4)FPGA控制核心可以向出货设备发送出货的商品编号,控制出货设备出货。出货完成后,出货设备给FPGA控制核心反馈出货完成信号。

(5)FPGA控制核心可以向找零设备发送出找零金额,控制找零设备找零。找零完成后,找零设备给FPGA控制核心反馈找零完成信号。

(6)可以通过状态显示LED灯(高电平点亮低电平系熄灭)指示售货机状态。分别为待机、选商品、投币、出货、找零。

(7)蜂鸣器(高电平发声,低电平关闭)对相应自定义状态进行提醒。(可选)

(8)系统课题通过Rest手动复位,复位后进入待机状态。

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

部分代码展示:

//自动售货机
module?auto_sell(
input?clk,//1MHz
input?reset,//复位
//1-1元;2-8元;3-6元;//4-3元
input?[3:0]?goods_num,//商品编号
input?goods_en,//商品选择信号
//投币设备
input?[3:0]?money_in,//1,2,5,10元
input?money_en,//投币信号
//出货设备
output?[3:0]?goods_out,//出货商品编号
input?goods_end,//出货完成
//找零设备
output??[3:0]?change_out,//找零金额
input?change_end,//找零完成
//状态显示led,高亮
output?idle_led,//待机
output?select_led,//选商品
output?money_led,//投币
output?goods_led,//出货
output?change_led,//找零
output?beep,//蜂鸣器,找零结束,高电平响
//数码管显示
output?[6:0]?HEX0,//商品编号
output?[6:0]?HEX1,//商品编号
output?[6:0]?HEX2,//投入金额
output?[6:0]?HEX3//投入金额
);
wire?[7:0]?total_money_out;
//自动售货机控制模块
auto_sell_ctrl?i_auto_sell_ctrl(
.?clk(clk),//1MHz
.?reset(reset),//复位
//1-1元;2-8元;3-6元;//4-3元
.?goods_num(goods_num),//商品编号
.?goods_en(goods_en),//商品选择信号
//投币设备
.?money_in(money_in),//1,2,5,10元
.?money_en(money_en),//投币信号
//出货设备
.?goods_out(goods_out),//出货商品编号
.?goods_end(goods_end),//出货完成
//找零设备
.?change_out(change_out),//找零金额
.?change_end(change_end),//找零完成
.?total_money_out(total_money_out),
//状态显示led,高亮
.?idle_led(idle_led),//待机
.?select_led(select_led),//选商品
.?money_led(money_led),//投币
.?goods_led(goods_led),//出货
.?change_led(change_led),//找零
.?beep(beep)//蜂鸣器,找零结束,高电平响
);
//数码管显示模块
display?i_display(
.?clk(clk),//1MHz
.?goods_num(goods_num),//商品编号
.?total_money_out(total_money_out),//投币金额
//数码管显示
.?HEX0(HEX0),//商品编号
.?HEX1(HEX1),//商品编号
.?HEX2(HEX2),//投入金额
.?HEX3(HEX3)//投入金额
);
endmodule

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=750

  • 2-240515192S4212.doc
    下载

相关推荐