標題: fpga模擬一個自動售貨機 源代碼 [打印本頁]
作者: poltawa 時間: 2018-9-3 15:27
標題: fpga模擬一個自動售貨機 源代碼
售貨機賣出的商品價值5元,只能投入1元,2元,5元。因此需要多種狀態(tài),分別代表投入的錢數(shù),直到投夠5元顯示出貨狀態(tài),當超過5元時還要找零。
源代碼如下:
library ieee;
use ieee.std_logic_1164.all;
entity state is
port(
clk,reset:in std_logic;
input : in std_logic_vector(0 to 1);
sel : buffer std_logic_vector(0 to 2); --片選
show : out std_logic_vector(0 to 6); --八位七段
output:out std_logic_vector(0 to 1)
);
end state;
architecture behave of state is
type s_m is (s0,s1,s2,s3,s5,s6);
signal current_state,next_state:s_m;
begin
sel<="000";
process(reset,clk)
begin
if (clk'event and clk='1') then
current_state<=next_state;
if reset='1' then
current_state<=s0;
end if;
end if;
end process;
process(current_state,input)
begin
case current_state is
when s0=>output<="00";
show<="1111110"; --0
if input="00" then next_state<=s0;
elsif input="01" then next_state<=s1;
elsif input="10" then next_state<=s2;
elsif input="11" then next_state<=s5;
end if;
when s1=>output<="00";
show<="0110000"; --1
if input="00" then next_state<=s1;
elsif input="01" then next_state<=s2;
elsif input="10" then next_state<=s3;
elsif input="11" then next_state<=s6;
end if;
when s2=>output<="11";
show<="0110111"; --H
if input="00" then next_state<=s0;
elsif input="01" then next_state<=s1;
elsif input="10" then next_state<=s2;
elsif input="11" then next_state<=s5;
end if;
when s3=>output<="11";
show<="0110000"; --找1
if input="00" then next_state<=s0;
elsif input="01" then next_state<=s1;
elsif input="10" then next_state<=s2;
elsif input="11" then next_state<=s5;
end if;
when s5=>output<="11";
show<="0110000"; --找1
if input="00" then next_state<=s0;
elsif input="01" then next_state<=s1;
elsif input="10" then next_state<=s2;
elsif input="11" then next_state<=s5;
end if;
when s6=>output<="11";
show<="0110111"; --H
if input="00" then next_state<=s0;
elsif input="01" then next_state<=s1;
elsif input="10" then next_state<=s2;
elsif input="11" then next_state<=s5;
end if;
end case;
end process;
end behave;
作者: 15332135378 時間: 2018-12-19 19:38
這個是vhdl
作者: iseesx 時間: 2018-12-24 15:13
復位信號建議寫成:異步復位,同步釋放
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |