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

自动售货机(饮料)设计VHDL代码vivado仿真

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

2-231230114246192.doc

共1个文件

名称:自动售货机(饮料)设计VHDL代码vivado仿真

软件:vivado

语言:VHDL

代码功能:

自动售货机(饮料)设计

1、具有5元、10元饮料;

2、可以投币5元、10元、20元;

3、投币后按键控制饮料推出;

4、具有出货指示灯;

5、可以找零5元、10元,使用led表示。

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

6. Testbench

7. 仿真图

部分代码展示:

  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 COMPONENT;
    
   --Inputs
   signal clk :  std_logic;--clk
   signal rst_n :  std_logic;--rst
   signal key_in_0 :  std_logic;--5元饮料
   signal key_in_1 :  std_logic;--10元饮料
   signal key_in_2 :  std_logic;--投币5元
   signal key_in_3 :  std_logic;--投币10元
   signal key_in_4 :  std_logic;--投币20元
   signal key_in_5 :  std_logic;--饮料推出
   
   --outputs
   signal led_red    : std_logic;--红灯闪烁
   signal led_5Y     : std_logic;--售卖5元指示灯
   signal led_10Y     : std_logic;--售卖10元指示灯
   signal led_charge     : std_logic_vector(1 downto 0);--5元找零信号,10元找零信号
   -- Clock period definitions
   constant clk_period : time := 10 ns;
   signal key:  std_logic_vector(5 downto 0);
BEGIN
        
    U_auto_sell:auto_sell
            port map
            (
                clk => clk,--clk
                rst_n =>rst_n,--rst
                key_in_0 =>key_in_0,--5元饮料
                key_in_1 =>key_in_1,--10元饮料
                key_in_2 =>key_in_2,--投币5元
                key_in_3 =>key_in_3,--投币10元
                key_in_4 =>key_in_4,--投币20元
                key_in_5 =>key_in_5,--饮料推出
                led_red  =>led_red,--红灯闪烁
                led_5Y   =>led_5Y,--售卖5元指示灯
                led_10Y  =>led_10Y,--售卖10元指示灯
                led_charge=>led_charge--5元找零信号,10元找零信号
            );
   -- Clock process definitions
   clk_process :process
   begin
clk <= '0';
wait for clk_period/2;
clk <= '1';
wait for clk_period/2;
   end process;
   
   key_in_0 <=key(0);--5元饮料
   key_in_1 <=key(1);--10元饮料
   key_in_2 <=key(2);--投币5元
   key_in_3 <=key(3);--投币10元
   key_in_4 <=key(4);--投币20元
   key_in_5 <=key(5);--饮料推出
   
   -- Stimulus process
   stim_proc: process
   begin
      -- hold reset state for 100 ns.
    rst_n <= '0';
    key <= "111111";
        wait for 5000 ns;
rst_n <= '1';
wait for 10000 ns;
--购买5元饮料
key <= "111110";
wait for 5000 ns;
key <= "111111";
wait for 10000 ns;
key <= "110111";--投币10元
        wait for 5000 ns;    
        key <= "111111";
        wait for clk_period*2000;
        key <= "011111";--推出饮料
        wait for 5000 ns;    
        key <= "111111";
        wait for 10000 ns;
        --找零后进入空闲状态
        wait for clk_period*2000;
        --购买10元饮料
        key <= "111101";
        wait for 5000 ns;    
        key <= "111111";
        wait for 10000 ns;    
        key <= "111011";--投币5元
        wait for 5000 ns;    
        key <= "111111";
        wait for 10000 ns;    
        key <= "110111";--投币10元
        wait for 5000 ns;    
        key <= "111111";
        wait for clk_period*2000;
        key <= "011111";--推出饮料
        wait for 5000 ns;    
        key <= "111111";
        wait for 10000 ns;    
        --找零后进入空闲状态
        wait for clk_period*2000;
        --购买5元饮料
        key <= "111110";
        wait for 5000 ns;    
        key <= "111111";
        wait for 10000 ns;  
        key <= "100011";--投币错误
        wait for 50000 ns;    
        key <= "111111";
        wait for 10000 ns;    
        key <= "101111";--投币20元
        wait for 5000 ns;    
        key <= "111111";
        wait for clk_period*2000;
        key <= "011111";--推出饮料
        wait for 5000 ns;    
        key <= "111111";
        wait for 10000 ns;    
        --找零后进入空闲状态
        wait for clk_period*20;
        wait;
   end process;
END;

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

  • 2-231230114246192.doc
    下载

相关推荐