• 正文
  • 相关推荐
申请入驻 产业图谱

自动售票机FPGA设计Verilog Quartus

06/01 16:33
225
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

名称:自动售票机 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、顶层模块仿真、按键消抖模块、状态控制模块和数码管显示模块等说明,便于结合源码理解整体工程结构与仿真流程。

部分代码

以下展示顶层模块 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),//价钱 // ... 以下代码略,完整源码请下载压缩包查看

代码文件:查看原文

【来源:www.hdlcode.com

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录