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

名称:基于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手动复位,复位后进入待机状态

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
源代码

 扫描文章末尾的公众号二维码

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值