自动售货机设计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


演示视频:

设计文档:

设计文档.doc

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仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

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

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