自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载

名称:自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载

软件:Quartus

语言:Verilog

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

功能介绍

本设计为自动售票机 FPGA 实现,使用 Verilog HDL 编写,工程环境为 Quartus。系统围绕售票流程展开,支持 1 元、5 元、10 元三种投币输入,并提供 1 元、2 元、3 元、4 元四种票价选择。用户完成投币和票价选择后,可通过确认按键触发购买判断,系统根据已投入金额与所选票价进行处理。 设计包含购买成功指示、票价选择 LED 指示、投币金额显示、票价显示和找零金额显示等功能。顶层接口中包含复位、投币按键、票价按键、确认按键、退币按键、成功指示灯、票价 LED 以及数码管位选和段选信号,适合用于 FPGA 课程设计、数字逻辑综合实验和状态机控制类项目参考。 按键输入部分加入消抖处理,将机械按键转换为稳定的按键下降沿脉冲,避免一次按键被多次识别。核心控制部分完成金额累加、票价选择、确认购买、退币和找零等逻辑,显示部分负责将金额相关数据输出到数码管,形成完整的人机交互流程。

运行环境

开发语言:Verilog。 开发软件:Quartus。 仿真相关:工程中包含 Testbench 文件 auto_sell_tb.v,并带有 ModelSim 仿真目录,可用于顶层模块及相关功能模块的仿真参考。

设计思路

系统采用模块化设计思路,将自动售票机的输入处理、状态控制和显示输出分开实现。顶层模块 auto_sell 负责连接各功能模块,对外提供时钟、复位、投币按键、票价选择按键、确认按键、退币按键、LED 指示和数码管显示接口,对内完成按键消抖信号、金额数据和显示数据之间的连接。 投币输入采用 1 元、5 元、10 元三个独立按键,票价选择采用 1 元到 4 元四个独立按键。每个按键先进入 key_jitter 消抖模块,输出稳定的单次按键触发脉冲,再送入状态控制模块。这样可以让状态控制逻辑只处理有效事件,减少机械抖动对金额累加、票价选择和确认购买的影响。 状态控制模块 state_ctrl 是系统核心,负责记录当前投入金额、所需票价和找零金额,并控制购买成功指示灯及票价选择 LED。用户投入金额后选择票价,再按确认键进行购买判断;当金额满足票价要求时,系统给出成功指示并计算找零;当需要退回投入金额时,可通过退币按键触发退币相关逻辑。 显示部分通过数码管位选和段选接口输出金额信息,使投币金额、票价和找零等数据能够直观显示。整体结构清晰,既覆盖自动售票机的典型业务流程,也便于读者拆分学习按键消抖、状态机控制、BCD 金额处理和数码管动态显示等 FPGA 常用设计方法。

模块结构

主要模块包括: auto_sell:顶层模块,连接按键输入、状态控制、LED 指示和数码管显示。 key_jitter:按键消抖模块,用于投币、票价选择、确认和退币等按键输入处理。 state_ctrl:状态控制模块,完成投币金额、票价选择、确认购买、退币找零和指示灯控制。 display_num:数码管显示模块,用于金额相关数据的显示输出。 auto_sell_tb:测试平台文件,用于工程仿真验证参考。

演示视频

包含自动售票机功能演示视频,可用于查看投币、票价选择、确认购买、退币找零、LED 指示和数码管显示等运行效果。

仿真图/仿真说明/设计文档图片

设计文档内容包含工程文件、程序文件、程序编译、RTL 图、仿真图、Testbench、顶层模块仿真、按键消抖模块、状态控制模块和数码管显示模块等说明,便于结合源码理解整体工程结构与仿真流程。

自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image1.png

自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image10.png

自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image11.png

自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image2.png

自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image3.png

自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image4.png

自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image5.png

自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image6.png

自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image7.png

自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image8.png

自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载 设计文档图片 image9.png

部分代码

以下展示顶层模块 auto_sell 的部分代码,完整源码请下载压缩包查看。

module auto_sell(
input clk_in,//50M
input rst_n,//低电平复位
input coin_1_key,//投币1元
input coin_5_key,//投币5元
input coin_10_key,//投币10元
input return_key,//退回所投币(不足面值时)

input price_1_key,//1元商品
input price_2_key,//2元商品
input price_3_key,//3元商品
input price_4_key,//4元商品

input confirm_key,//确认

output succeed_ledn,//购买成功指示灯
output [3:0] led,//选择票价指示灯

output [2:0] DLA,//数码管位选ABC:0~7,8个数码管
output [7:0] HEX//数码管段选
);
wire [7:0] input_money_BCD;//投币金额
wire [3:0] need_money_BCD;//价钱
wire [7:0] change_money_BCD;//找钱

wire coin_1_p;//投币1元
wire coin_5_p;//投币5元
wire coin_10_p;//投币10元
wire price_2_p;//2元商品
wire price_3_p;//3元商品
wire price_4_p;//4元商品
wire price_1_p;//1元商品
wire confirm_p;//确认 
wire return_p;//退币
//按键消抖模块
key_jitter i0_key_jitter(
. clkin(clk_in),     
. key_in(coin_1_key),//输入
. key_negedge(coin_1_p)//消抖后按键下降沿
);

//按键消抖模块
key_jitter i1_key_jitter(
. clkin(clk_in),     
. key_in(coin_5_key),//输入
. key_negedge(coin_5_p)//消抖后按键下降沿
);

//按键消抖模块
key_jitter i10_key_jitter(
. clkin(clk_in),     
. key_in(coin_10_key),//输入
. key_negedge(coin_10_p)//消抖后按键下降沿
);


//按键消抖模块
key_jitter i2_key_jitter(
. clkin(clk_in),     
. key_in(price_2_key),//输入
. key_negedge(price_2_p)//消抖后按键下降沿
);

//按键消抖模块
key_jitter i3_key_jitter(
. clkin(clk_in),     
. key_in(price_3_key),//输入
. key_negedge(price_3_p)//消抖后按键下降沿
);

//按键消抖模块
key_jitter i4_key_jitter(
. clkin(clk_in),     
. key_in(price_4_key),//输入
. key_negedge(price_4_p)//消抖后按键下降沿
);

//按键消抖模块
key_jitter i5_key_jitter(
. clkin(clk_in),     
. key_in(price_1_key),//输入
. key_negedge(price_1_p)//消抖后按键下降沿
);

//按键消抖模块
key_jitter i6_key_jitter(
. clkin(clk_in),     
. key_in(confirm_key),//输入
. key_negedge(confirm_p)//消抖后按键下降沿
);

//按键消抖模块
key_jitter i7_key_jitter(
. clkin(clk_in),     
. key_in(return_key),//输入
. key_negedge(return_p)//消抖后按键下降沿
);

//状态控制模块
state_ctrl i_state_ctrl(
. clk_in(clk_in),//50M
. rst_n(rst_n),//复位

. coin_1_p(coin_1_p),//投币1元
. coin_5_p(coin_5_p),//投币5元
. coin_10_p(coin_10_p),//投币10元

. price_1_p(price_1_p),//1元商品
. price_2_p(price_2_p),//2元商品
. price_3_p(price_3_p),//3元商品
. price_4_p(price_4_p),//4元商品

. confirm_p(confirm_p),//确认
. return_p(return_p),//退币

. succeed_ledn(succeed_ledn),//购买成功指示灯
. led(led),//选择票价指示灯

. input_money_BCD(input_money_BCD),//投币金额
. need_money_BCD(need_money_BCD),//价钱
// ... 以下代码略,完整源码请下载压缩包查看

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 自动售票机 FPGA 设计 Verilog Quartus FPGA代码工程源码下载

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

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