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

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

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

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
    下载

相关推荐