赞
踩
名称:基于FPGA的自动售货机控制系统设计Verilog代码Quartus仿真(文末获取)
软件:Quartus
语言:Verilog
代码功能:
设计完成图中FPGA控制核心电路。在外部提供1MHz时钟及Rest信号前提下实现以下功能
(1)商品选择设备在本项目中不做设计,有外部设备自行处理。在用户选择商品后,商品编号会自动以4位数据线按照8421BCD方式向FPGA控制核心电路发送。FPGA控制核心电路选择商品编号进行显示。可以假设按照如下表格进行数据仿真处理
(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
扫描文章末尾的公众号二维码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。