自动售货机设计VHDL代码Quartus仿真
名称:自动售货机设计VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
主要研究内容
1、饮料自动售货机能出售2元矿泉水、3元雪碧、5元可口可乐、6元的红牛饮料、10元奶茶。
2、游客投入纸币1元、5元、10元、20元、50元、100元,并且每次只能投入一种纸币,投入后,能用数码管将投币额显示出来
3、投币额足够时,自动售出货物,同时找回多余的钱,找回的钱用数码管显示出来。
4、游客一次能购买多瓶同种饮料,如果要购买多种饮料,需要重新操作。
5、游客可多次选择购买商品的类型,商品选定后等待投币,如等待时间超过,则认为游客自动放弃选购,售货机回到等待状态,等待新的交易。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1.工程文件

2.程序文件

3.程序编译

4.RTL图

5.管脚分配

6.仿真图


上图中,先选了2元商品,后修改为5元商品,(total_need_money信号依次显示了2,5);然后通过购买数量按键设置数量为4(select_num依次显示了1,2,3,4),同时,数量变化也导致了total_need_money信号的变化,最终变为20元(4*5=20),然后投币依次投入1,10,50元,共61元,total_throw_money显示61。按下确认键后找零,total_refund_money表示找零金额,等于41(61-20)。
分模块仿真
1.延迟30s模块


2.延迟4s模块


3.售货模块


4.下降沿检测模块


5.显示模块


部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY auto_sell IS PORT ( clk_50M : IN STD_LOGIC;--50M rst_button : IN STD_LOGIC;--复位,低电平有效 Selection_of_02_key : IN STD_LOGIC;--商品选择按键 Selection_of_03_key : IN STD_LOGIC;--商品选择按键 Selection_of_05_key : IN STD_LOGIC;--商品选择按键 Selection_of_06_key : IN STD_LOGIC;--商品选择按键 Selection_of_10_key : IN STD_LOGIC;--商品选择按键 throw_into_01_key : IN STD_LOGIC;--投币按键 throw_into_05_key : IN STD_LOGIC;--投币按键 throw_into_10_key : IN STD_LOGIC;--投币按键 throw_into_20_key : IN STD_LOGIC;--投币按键 throw_into_50_key : IN STD_LOGIC;--投币按键 throw_into_100_key : IN STD_LOGIC;--投币按键 confirm_button_key : IN STD_LOGIC;--确认按键 num_select_key : IN STD_LOGIC;--个数选择按键 HEX0 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示 HEX1 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示 HEX2 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示 HEX3 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示 HEX4 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示 HEX5 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示 HEX6 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管显示 ); END auto_sell; ARCHITECTURE trans OF auto_sell IS --超时计时模块30s COMPONENT wait_for_30s IS PORT ( clk_50M : IN STD_LOGIC; rst_button : IN STD_LOGIC; state : IN STD_LOGIC_VECTOR(3 DOWNTO 0); wait_30s_time : OUT STD_LOGIC ); END COMPONENT; --显示模块 COMPONENT display IS PORT ( clk : IN STD_LOGIC; number_out : IN STD_LOGIC_VECTOR(3 DOWNTO 0); total_throw_inmoney : IN STD_LOGIC_VECTOR(7 DOWNTO 0); total_need_money : IN STD_LOGIC_VECTOR(7 DOWNTO 0); total_refund_money : IN STD_LOGIC_VECTOR(7 DOWNTO 0); HEX0 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); HEX1 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); HEX2 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); HEX3 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); HEX4 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); HEX5 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); HEX6 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END COMPONENT; --自动售货模块 COMPONENT Vending_machine IS PORT ( clk_50M : IN STD_LOGIC;--50M时钟 rst_button : IN STD_LOGIC;--复位按键,低有效 Selection_of_02 : IN STD_LOGIC;--2元矿泉水 Selection_of_03 : IN STD_LOGIC;--3元雪碧 Selection_of_05 : IN STD_LOGIC;--5元可乐 Selection_of_06 : IN STD_LOGIC;--6元红牛 Selection_of_10 : IN STD_LOGIC;--10元奶茶 throw_into_01_down : IN STD_LOGIC;--投币1元 throw_into_05_down : IN STD_LOGIC;--投币5元 throw_into_10_down : IN STD_LOGIC;--投币10元 throw_into_20_down : IN STD_LOGIC;--投币20元 throw_into_50_down : IN STD_LOGIC;--投币50元 throw_into_100_down : IN STD_LOGIC;--投币100元 num_select_down : IN STD_LOGIC;--购买瓶数按键 confirm_button_down : IN STD_LOGIC;--确认键 time_over : IN STD_LOGIC;--超时 wait_second_time : IN STD_LOGIC;--延迟 state_out : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--输出状态 number_out : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--购买瓶数 total_throw_inmoney_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--总投入钱币 total_need_money_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--需要钱数 total_refund_money_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--找零 ); END COMPONENT; --下降沿检测模块 COMPONENT down_detect IS PORT ( clk : IN STD_LOGIC; in_signal : IN STD_LOGIC; negedge_signal : OUT STD_LOGIC ); END COMPONENT; --延迟4s模块 COMPONENT wait_for_4s IS PORT ( clk_50M : IN STD_LOGIC; rst_button : IN STD_LOGIC; state : IN STD_LOGIC_VECTOR(3 DOWNTO 0); wait_second_time : OUT STD_LOGIC ); END COMPONENT; SIGNAL Selection_of_02 : STD_LOGIC; SIGNAL Selection_of_03 : STD_LOGIC; SIGNAL Selection_of_05 : STD_LOGIC; SIGNAL Selection_of_06 : STD_LOGIC; SIGNAL Selection_of_10 : STD_LOGIC; SIGNAL throw_into_01_down : STD_LOGIC; SIGNAL throw_into_05_down : STD_LOGIC; SIGNAL throw_into_10_down : STD_LOGIC; SIGNAL throw_into_20_down : STD_LOGIC; SIGNAL throw_into_50_down : STD_LOGIC; SIGNAL throw_into_100_down : STD_LOGIC;
代码文件(付费下载):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 自动售货机设计VHDL代码Quartus仿真
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 自动售货机设计VHDL代码Quartus仿真
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm