自动售货机 FPGA 设计 Verilog Quartus(2)

📅 2026/7/25 1:26:05 ✍️ 编辑团队 👁️ 阅读次数
自动售货机 FPGA 设计 Verilog Quartus(2)
名称自动售货机 FPGA 设计 Verilog Quartus2软件Quartus语言Verilog功能介绍自动售货机 FPGA 设计 Verilog Quartus2实现了 auto_sell_T060 相关的 FPGA 逻辑功能包含完整 HDL 源码、工程文件、设计说明和付费下载压缩包适合作为数字逻辑课程设计、实验验证或二次开发参考。核心顶层模块为auto_sell可从顶层端口、时钟复位、子模块例化和输出控制关系入手阅读代码。正文整理了设计说明、关键结构和部分代码便于快速了解工程实现方式。运行环境源码语言Verilog开发软件Quartus交付内容HDL 源码、工程文件、设计说明和下载压缩包设计思路该工程可按自顶向下方式理解先查看顶层模块端口定义确认时钟、复位、输入输出接口再顺着子模块例化关系分析控制路径和数据路径。主要模块包括state_ctrl、display_num、auto_sell、key_jitter。调试时可先验证核心控制模块再联调顶层工程。工程中包含管脚约束/分配文件移植到其他板卡时需要重点核对时钟、复位、按键、显示或通信接口等约束。模块结构主要工程/源码文件如下auto_sell_sim/auto_sell.qsfauto_sell_sim/auto_sell.qpfauto_sell_sim/state_ctrl.vauto_sell_sim/display.vauto_sell_sim/auto_sell.vauto_sell_sim/key_jitter.v开发板验证该设计提供FPGA 开发板相关验证内容提供管脚约束/分配文件。实际使用时建议结合约束文件和板卡资源再次核对时钟、复位、按键、显示或通信接口。演示视频下方提供演示视频可直接播放查看运行效果。演示视频请关注公众号后获取对应资料查看。仿真图/仿真说明/设计文档图片设计说明工程文件 程序文件 程序编译 RTL图 Testbench 仿真图 整体仿真图 按键上升沿检测仿真 状态机控制模块 下图为选择1.5元商品依次付款0.50.51.02.0元然后1.5元商品的出货指示灯亮。并找零0.5元。 下图为选择2.0元商品依次付款0.51.01.5元然后按下退币键退币1.5元。 显示模块部分代码以下展示顶层模块auto_sell的部分代码完整代码可关注下方公众号卡片获取。module auto_sell( input clk_in,//时钟 input reset_n,//复位 input coin_10_key,//投币1.0元 input coin_50_key,//投币5.0元 input coin_05_key,//投币0.5元 input price_20_key,//2.0元商品 input price_15_key,//1.5元商品 input price_10_key,//1.0元商品 input price_05_key,//0.5元商品 input confirm_key,//确认 input return_key,//退币 output succeed_ledn_05,//0.5元商品购买成功指示灯 output succeed_ledn_10,//1.0元商品购买成功指示灯 output succeed_ledn_15,//1.5元商品购买成功指示灯 output succeed_ledn_20,//2.0元商品购买成功指示灯 output [3:0] DLA,//数码管位选低电平选择 output [7:0] HEX//数码管段选低亮 ); wire [7:0] input_money_BCD;//投币金额 wire [7:0] change_money_BCD;//找钱 wire coin_10_p;//投币1.0元 wire coin_50_p;//投币5.0元 wire coin_05_p;//投币0.5元 //按键上升沿检测模块 key_jitter i0_key_jitter( . clkin(clk_in), . key_in(coin_10_key),//输入 . key_posedge(coin_10_p)//按键上升沿检测 ); //按键上升沿检测模块 key_jitter i1_key_jitter( . clkin(clk_in), . key_in(coin_50_key),//输入 . key_posedge(coin_50_p)//按键上升沿检测 ); //按键上升沿检测模块 key_jitter i2_key_jitter( . clkin(clk_in), . key_in(coin_05_key),//输入 . key_posedge(coin_05_p)//按键上升沿检测 ); //状态控制模块 state_ctrl i_state_ctrl( . clk_in(clk_in),//时钟100Hz . reset_n(reset_n),//系统复位 . coin_10_p(coin_10_p),//投币1.0元 . coin_50_p(coin_50_p),//投币5.0元 . coin_05_p(coin_05_p),//投币0.5元 . price_20_p(price_20_key),//2.0元商品 . price_15_p(price_15_key),//1.5元商品 . price_10_p(price_10_key),//1.0元商品 . price_05_p(price_05_key),//0.5元商品 . return_p(return_key),//退币键 . confirm_p(confirm_key),//确认 . succeed_ledn_05(succeed_ledn_05),//0.5元商品购买成功指示灯 . succeed_ledn_10(succeed_ledn_10),//1.0元商品购买成功指示灯 . succeed_ledn_15(succeed_ledn_15),//1.5元商品购买成功指示灯 . succeed_ledn_20(succeed_ledn_20),//2.0元商品购买成功指示灯 . input_money_BCD(input_money_BCD),//投币金额 . change_money_BCD(change_money_BCD)//找钱 ); //数码管显示模块 display_num i_display_num( . clk_in(clk_in),//100Hz . input_money_BCD(input_money_BCD),//投币金额 . change_money_BCD(change_money_BCD),//找钱 . DLA(DLA),//数码管位选低电平选择 . HEX(HEX)//数码管段选低亮 ); endmodule代码获取下方公众号“FPGA代码设计学习资料”