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

基于FPGA的饮料售卖机设计VHDL代码VIVADO仿真

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

2-2406120922304F.doc

共1个文件

名称:基于FPGA的饮料售卖机设计VHDL代码VIVADO仿真

软件:VIVADO

语言:VHDL

代码功能:

功能:

1、饮料有5元和10元两种,机器能识别的币有5元、10元、20元三种,钞票识别是由收钞机完成,钞票识别模块通过三个开关量信号反馈识别到的钞票,平时全部为高电平,识别到一种有效钞票时,对应开关量信号会出现一个低电平脉冲,若出现不能识别或者不是三种钞票之一的钞票,三个开关量全输出低电平脉冲,售卖机的一个红灯闪烁,到投入正确的钞票为止。

2、售卖过程是:两种饮料分别有一个按钮,当按下对应按钮,该饮料的指示灯亮,等投入对应数量货币时,启动电机,将对应饮料推出,设置一个开关量能检测到饮料已经成功推出,成功推出后,停止电机推出,同时指示灯熄灭。

3、若投入的币大于了对应的销售金额,需要根据实际情况找零,找零是各通过一个开关量信号给收钞机,平时两个信号为低电平,当需要找零时,对应信号线置高,表示需要吐出一张对应的币。

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

分频模块

按键下降沿模块

控制模块

部分代码展示:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
--顶层模块
entity top is
    port
(
clk :in  std_logic;--clk
rst_n :in  std_logic;--复位
btn_in :in  std_logic_vector(5 downto 0);--btn_n(0)5元饮料,btn_n(1)10元饮料,btn_n(2)5元,btn_n(3)10元,btn_n(4)20元,btn_n(5)饮料推出
LED :out std_logic_vector(4 downto 0) --LED(0)红灯闪烁,LED(1)售卖5元指示灯,LED(2)售卖10元指示灯,LED(3)5元找零信号,LED(4)10元找零信号
);
end top;
architecture Behavioral of top is
--分频模块
component clk_gen is
port
(
clk_in :in  std_logic;--clk_in 50MHz
clk_1Hz  :out std_logic --1Hz信号输出
);
end component;
--按键下降沿检测
component button_jit is
port
(
clk_in   :in  std_logic;--clk_in
btn_in     :in  std_logic;--按键信号输入
btn_keep :out std_logic; --按键值输出
btn_n  :out std_logic --按键标志信号输出
);
end component;
--控制模块
entity control is
    port
(
clk_in   :in  std_logic;--clk_in
rst_n   :in  std_logic;--rst低有效
btn_n  :in  std_logic_vector(5 downto 0);--btn_n(0)5元饮料,btn_n(1)10元饮料,btn_n(2)5元,btn_n(3)10元,btn_n(4)20元,btn_n(5)检测饮料推出
btn_keep :in  std_logic_vector(5 downto 0);--按键值信号输入
clk_1Hz   :in  std_logic;--1Hz时钟输入
LED       :out std_logic_vector(4 downto 0)--LED(0)红灯闪烁,LED(1)售卖5元指示灯,LED(2)售卖10元指示灯,LED(3)5元找零信号,LED(4)10元找零信号
);
end control;
    
    signal clk_1Hz:std_logic;
signal clk_in:std_logic;
    signal btn_n: std_logic_vector(5 downto 0);
signal btn_keep: std_logic_vector(5 downto 0);
begin
--分频模块
U_clk_gen: clk_gen
port map
(
clk_in => clk_in,--clk 50MHz
clk_1Hz => clk_1Hz --1Hz信号输出
);
--按键下降沿检测
U0_button_jit button_jit
port map
(
clk_in=> clk_in,--clk_in
btn_in=> btn_in(0),--按键信号输入
btn_keep=> btn_keep(0), --按键值输出
btn_n=> btn_n(0) --按键标志信号输出
);
--按键下降沿检测
U1_button_jit button_jit
port map
(
clk_in=> clk_in,--clk_in
btn_in=> btn_in(1),--按键信号输入
btn_keep=> btn_keep(1), --按键值输出
btn_n=> btn_n(1) --按键标志信号输出
);
--按键下降沿检测
U2_button_jit button_jit
port map
(
clk_in=> clk_in,--clk_in
btn_in=> btn_in(2),--按键信号输入
btn_keep=> btn_keep(2), --按键值输出
btn_n=> btn_n(2) --按键标志信号输出
);
--按键下降沿检测
U3_button_jit button_jit
port map
(
clk_in=> clk_in,--clk_in
btn_in=> btn_in(3),--按键信号输入
btn_keep=> btn_keep(3), --按键值输出
btn_n=> btn_n(3) --按键标志信号输出
);
--按键下降沿检测
U4_button_jit button_jit
port map
(
clk_in=> clk_in,--clk_in
btn_in=> btn_in(4),--按键信号输入
btn_keep=> btn_keep(4), --按键值输出
btn_n=> btn_n(4) --按键标志信号输出
);

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

  • 2-2406120922304F.doc
    下载

相关推荐