名称:自动售货机(饮料)设计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
阅读全文
633