• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

Quartus自动售货机VHDL代码

06/10 13:13
836
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-231226104A0R9.doc

共1个文件

名称:Quartus自动售货机VHDL代码

软件:Quartus

语言:VHDL

代码功能:

自动售货机,三种币值、两种商品,注意定义和设计的合理性。

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

演示视频:

设计文档:

1. 代码文件

2. 程序

3. 编译

4. Testbench

5. 仿真图

整体仿真图

分频模块

按键检测模块

状态机控制模块

从仿真图中可以分析得到,购买5元商品,投入10元,找零5元;从控制模块的仿真中可以分析得到,购买10元商品,先投入5元,再投入10元,一共投入15元,找零5元;从仿真结果中可以看出设计的符合要求。

红灯闪烁模块

售卖led控制模块

部分代码展示:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
--顶层模块
entity auto_sell is
    port
(
clk :in  std_logic;--clk
rst_n :in  std_logic;--rst
key_in_0 :in  std_logic;--5元商品
key_in_1 :in  std_logic;--10元商品
key_in_2 :in  std_logic;--投币5元
key_in_3 :in  std_logic;--投币10元
key_in_4 :in  std_logic;--投币20元
key_in_5 :in  std_logic;--商品推出
led_red    :out std_logic;--红灯闪烁
led_5Y     :out std_logic;--售卖5元指示灯
led_10Y     :out std_logic;--售卖10元指示灯
led_charge     :out std_logic_vector(1 downto 0)--5元找零信号,10元找零信号
);
end auto_sell;
architecture Behavioral of auto_sell is
--分频模块
component fengpin is
port
(
clk :in  std_logic;--clk 50MHz
rst :in  std_logic;--rst低有效
clk_1KHz  :out std_logic; --1KHz信号输出
clk_1Hz  :out std_logic --1Hz信号输出
);
end component;
--按键检测模块
component key_detect is
port
(
clk_1KHz   :in  std_logic;--clk_1KHz
key_in     :in  std_logic_vector(5 downto 0);--按键信号输入
key_buf :out std_logic_vector(5 downto 0); --按键值输出
key_n  :out std_logic_vector(5 downto 0) --按键标志信号输出
);
end component;
--状态机控制模块
component state_ctrl is
    port
(
clk_1KHz   :in  std_logic;--clk_1KHz
rst_n   :in  std_logic;--rst低有效
key_n  :in  std_logic_vector(5 downto 0);--key_n(0)5元商品,key_n(1)10元商品,key_n(2)5元,key_n(3)10元,key_n(4)20元,key_n(5)检测商品推出
key_buf :in  std_logic_vector(5 downto 0);--按键值信号输入
    state_o :out std_logic_vector(2 downto 0);--状态输出
led_charge     :out std_logic_vector(1 downto 0)--5元找零信号,10元找零信号
);
end component;
--红灯闪烁控制模块
component red_led_ctrl is
    port
(
clk_1KHz   :in  std_logic;--clk_1KHz
rst_n   :in  std_logic;--rst低有效
key_buf :in  std_logic_vector(5 downto 0);--按键值信号输入
    state_o :in std_logic_vector(2 downto 0);--状态输出
clk_1Hz   :in  std_logic;--1Hz时钟输入
led_red    :out std_logic--红灯闪烁
);
end component;
--售卖led控制
component sell_led is
    port
(
clk_1KHz   :in  std_logic;--clk_1KHz
rst_n   :in  std_logic;--rst低有效
key_n  :in  std_logic_vector(5 downto 0);--key_n(0)5元商品,key_n(1)10元商品,key_n(2)5元,key_n(3)10元,key_n(4)20元,key_n(5)检测商品推出
    state_o :in std_logic_vector(2 downto 0);--状态输入
led_5Y     :out std_logic;--售卖5元指示灯
led_10Y     :out std_logic--售卖10元指示灯
);
end component;
    
    signal clk_1Hz:std_logic;
signal clk_1KHz:std_logic;
signal key_in: std_logic_vector(5 downto 0);
    signal key_n: std_logic_vector(5 downto 0);
signal key_buf: std_logic_vector(5 downto 0);
signal state_o : std_logic_vector(2 downto 0);--状态输出
begin
--输入按键拼接为6bit
key_in<=key_in_5 & key_in_4 & key_in_3 & key_in_2 & key_in_1 & key_in_0;
--分频模块
U_fengpin: fengpin
port map
(
clk => clk,--clk 50MHz
rst => rst_n,--rst低有效
clk_1KHz  => clk_1KHz, --1KHz信号输出
clk_1Hz => clk_1Hz --1Hz信号输出
);
--按键检测模块
U_key_detect:key_detect
port map
(
clk_1KHz  => clk_1KHz, --1KHz信号输出
key_in    =>key_in,--按键信号输入
key_buf =>key_buf, --按键值输出
key_n  =>key_n--按键标志信号输出
);
--状态机控制模块
U_state_ctrl:state_ctrl
    port map
(
clk_1KHz  => clk_1KHz, --1KHz信号输出
rst_n   => rst_n, --rst低有效
key_n  =>key_n,--key_n(0)5元商品,key_n(1)10元商品,key_n(2)5元,key_n(3)10元,key_n(4)20元,key_n(5)检测商品推出
key_buf =>key_buf, --按键值信号输入
state_o  => state_o,--状态输出
led_charge => led_charge--5元找零信号,10元找零信号
);
--红灯闪烁控制模块
U_red_led_ctrl: red_led_ctrl
    port map
(
clk_1KHz   => clk_1KHz, --1KHz信号
rst_n   => rst_n, --rst低有效
key_buf =>key_buf, --按键值信号输入
    state_o  => state_o,--状态
clk_1Hz => clk_1Hz, --1Hz信号输出
led_red =>led_red--红灯闪烁
);
--售卖led控制
U_sell_led: sell_led
    port map
(
clk_1KHz  => clk_1KHz, --1KHz信号
rst_n   => rst_n, --rst低有效
key_n  =>key_n,--key_n(0)5元商品,key_n(1)10元商品,key_n(2)5元,key_n(3)10元,key_n(4)20元,key_n(5)检测商品推出
    state_o  => state_o,--状态
led_5Y   =>led_5Y,--售卖5元指示灯
led_10Y  =>led_10Y--售卖10元指示灯
);
end Behavioral;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=416

  • 2-231226104A0R9.doc
    下载

相关推荐