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

超市自动售货机VHDL代码vivado ego1开发板

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

2-240103103943b7.doc

共1个文件

名称:超市自动售货机VHDL代码vivado  ego1开发板

软件:vivado

语言:VHDL

代码功能:

超市自动售货机

所有蔬菜以1斤为一份进行包装销售,其中土豆1元,西红柿2元,黄瓜3元,芹菜4元,大葱5元。一次购买一种蔬菜,可一次性购买一份或两份,只能插入1元或5元两种面值的钞票。

功能:①选择蔬菜种类及份数。②插入钞票。当插入的钞票总金额=菜价时,输出相应蔬菜;当钞票总金额<菜价时,等待继续插入钞票;当钞票总金额>菜价时,在输出相应蔬菜的同时找零。③完成交易,等待下一次交易。

拨码开关选择蔬菜的种类及份数,用按钮代表插入5元或10元钞票,用LED灯作为输出蔬菜和找零的指示灯,用数码管显示插入的总金额和找零金额。

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

本代码已在ego1开发板验证,ego1开发板如下,其他开发板可以修改管脚适配:

ego1开发板.png

演示视频:

设计文档:

功能描述:

自动售货机,售卖蔬菜。所有蔬菜以1斤为一份进行包装销售,其中土豆1元,西红柿2元,黄瓜3元,芹菜4元,大葱5元。一次购买一种蔬菜,可一次性购买一份或两份,只能插入1元或5元两种面值的钞票。

功能:①选择蔬菜种类及份数。②插入钞票。当插入的钞票总金额=菜价时,输出相应蔬菜;当钞票总金额<菜价时,等待继续插入钞票;当钞票总金额>菜价时,在输出相应蔬菜的同时找零。③完成交易,等待下一次交易。

用拨码开关选择蔬菜的种类及份数,用按钮代表插入5元或10元钞票,用LED灯作为输出蔬菜和找零的指示灯,用数码管显示插入的总金额和找零金额。

1. 工程文件

1. 程序文件

2. 程序编译

3. RTL图

4. 管脚分配

5. Testbench

6. 仿真图

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
ENTITY auto_sell IS
   PORT (
      clk          : IN STD_LOGIC;--100M
      reset_p      : IN STD_LOGIC;--复位
      vegetables   : IN STD_LOGIC_VECTOR(2 DOWNTO 0);--蔬菜选择--SW0~2
      number       : IN STD_LOGIC;--份数--SW4
      coin_10_key  : IN STD_LOGIC;--投币1元--S0
      coin_50_key  : IN STD_LOGIC;--投币5元--S1
      start        : IN STD_LOGIC;--启动--S2
      confirm      : IN STD_LOGIC;--确认--S3
      succeed_led  : OUT STD_LOGIC;--购买成功输出蔬菜--LED0
      charge_led   : OUT STD_LOGIC;--找零指示灯--LED3
      bit_sel      : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--数码管位选
      seg_sel      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选        
   );
END auto_sell;
ARCHITECTURE behave OF auto_sell IS
   COMPONENT control IS
      PORT (
         clk          : IN STD_LOGIC;
         reset_p      : IN STD_LOGIC;
         vegetables   : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
         number       : IN STD_LOGIC;
         coin_10      : IN STD_LOGIC;
         coin_50      : IN STD_LOGIC;
         start        : IN STD_LOGIC;
         confirm      : IN STD_LOGIC;
         total_money  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         charge_money : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         succeed_led  : OUT STD_LOGIC;
         charge_led   : OUT STD_LOGIC
      );
   END COMPONENT;
COMPONENT key_jitter IS
   PORT (
      clkin        : IN STD_LOGIC;--100M
      key_in       : IN STD_LOGIC;--按键输入
      key_negedge  : OUT STD_LOGIC--按键下降沿输出
   );
END COMPONENT;
--显示模块
COMPONENT display IS
   PORT (
      clk            : IN STD_LOGIC;
      
      total_money     : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--输入钱币
      charge_money    : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--找零钱币
      
      bit_sel     : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--数码管位选
      seg_sel     : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选  
   );
END COMPONENT;
   
   
   SIGNAL total_money       : STD_LOGIC_VECTOR(7 DOWNTO 0);
   SIGNAL charge_money      : STD_LOGIC_VECTOR(7 DOWNTO 0);
   SIGNAL coin_10           : STD_LOGIC;
   SIGNAL coin_50           : STD_LOGIC;
   
BEGIN
   
   --调用按键消抖
   i0_key_jitter : key_jitter
      PORT MAP (
         clkin        => clk,
         key_in       => coin_10_key,
         key_negedge  => coin_10
      );
   
   
   --调用按键消抖
   i1_key_jitter : key_jitter
      PORT MAP (
         clkin        => clk,
         key_in       => coin_50_key,
         key_negedge  => coin_50
      );
   
   
   --调用控制模块
   i_control : control
      PORT MAP (
         clk           => clk,
         reset_p       => reset_p,
         vegetables    => vegetables,
         number        => number,
         coin_10       => coin_10,
         coin_50       => coin_50,
         start         => start,
         confirm       => confirm,
         total_money   => total_money,
         charge_money  => charge_money,
         succeed_led   => succeed_led,
         charge_led    => charge_led
      );
   
   
   --调用数码管显示模块
   i_display : display
      PORT MAP (
         clk           => clk,
         total_money   => total_money,
         charge_money  => charge_money,
         bit_sel       => bit_sel,
         seg_sel       => seg_sel
      );
   
END behave;

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

  • 2-240103103943b7.doc
    下载

相关推荐