<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計(jì)應(yīng)用 > 自動售貨機(jī)控制模塊 VHDL 程序設(shè)計(jì)及 FPGA 實(shí)現(xiàn)

          自動售貨機(jī)控制模塊 VHDL 程序設(shè)計(jì)及 FPGA 實(shí)現(xiàn)

          作者: 時(shí)間:2011-01-02 來源:網(wǎng)絡(luò) 收藏

          1)狀態(tài)定義:S0表示初態(tài),S1表示投入5角硬幣,S2表示投入1元硬幣,S3表示投入1元5角硬幣,S4表示投入2元硬幣。

          本文引用地址:http://www.ex-cimer.com/article/162525.htm


          2)輸入信號:取投幣信號為輸入邏輯變量,用兩位的矢量state_inputs表示。state_inputs(0)表示投入1元硬幣,state_inputs(1)表示投入5角硬幣。輸入信號為1表示投入硬幣,輸入信號為0表示未投入硬幣。


          3)輸出信號:給出礦泉水和找零為兩個(gè)輸出變量,用兩位的矢量comb_outputs表示。comb_outputs(0)表示輸出貨物,comb_outputs(1)表示找5角零錢。輸出信號為1表示輸出貨物或找零,輸出信號為0表示不輸出貨物或不找零。


          根據(jù)圖1所示的狀態(tài)轉(zhuǎn)換圖,用VHDL中的CASE_WHEN結(jié)構(gòu)和IF_THEN_ELSE語句實(shí)現(xiàn)控制功能,源程序如下:
          LIBRARY IEEE; --庫和程序包的使用說明
          USE IEEE.STD_LOGIC_1164.ALL;
          ENTITY sellmachine IS --實(shí)體定義
          PORT(clk,reset: IN std_logic;
          state_inputs:IN std_logic_vector(0 TO 1);
          comb_outputs:OUT std_logic_vector(0 TO 1));
          END sellmachine;
          ARCHITECTURE state OF sellmachine IS --結(jié)構(gòu)體
          TYPE fsm_st IS (S0,S1,S2,S3,S4); --狀態(tài)枚舉類型定義
          SIGNAL current_state,next_state:fsm_st; --狀態(tài)信號的定義
          BEGIN
          reg:PROCESS(reset,clk) --時(shí)序進(jìn)程
          BEGIN
          IF reset='1' THEN current_state=S0; --異步復(fù)位
          ELSIF rising_edge(clk) THEN
          current_state=next_state; --狀態(tài)轉(zhuǎn)換
          END IF;
          END PROCESS;
          corn:PROCESS(current_state,state_inputs) --組合進(jìn)程
          BEGIN
          CASE current_state IS
          WHEN S0=>comb_outputs=00; --現(xiàn)態(tài)S0
          IF state_inputs=00 THEN next_state=S0; --輸入不同,次態(tài)不同
          ELSIF state_inputs=01 THEN next_state=S1;
          ELSIF state_inputs=10 THEN next_state=S2;
          END IF;
          WHEN S1=>comb_outputs=00; --現(xiàn)態(tài)S1
          IF state_inputs=00 THEN next_state=S1; --輸入不同,次態(tài)不同
          ELSIF state_inputs=01 THEN next_state=S2;
          ELSIF state_inputs=10 THEN next_state=S3;
          END IF;
          WHEN S2=>comb_outputs=00; --現(xiàn)態(tài)S2
          IF state_inputs=00 THEN next_state=S2; --輸入不同,次態(tài)不同
          ELSIF state_inputs=01 THEN next_state=S3;
          ELSIF state_inputs=10 THEN next_state=S4;
          END IF;
          WHEN S3=>comb_outputs=10; --現(xiàn)態(tài)S3
          IF state_inputs=00 THEN next_state=S0; --輸入不同,次態(tài)不同
          ELSIF state_inputs=01 THEN next_state=S1;
          ELSIF state_inputs=10 THEN next_state=S2;
          END IF;
          WHEN S4=>comb_outputs=11; --現(xiàn)態(tài)S4
          IF state_inputs=00 THEN next_state=S0; --輸入不同,次態(tài)不同
          ELSIF state_inputs=01 THEN next_state=S1;
          ELSIF state_inputs=10 THEN next_state=S2;
          END IF;
          END CASE;
          END PROCESS;
          END state;



          關(guān)鍵詞: 收發(fā)器

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();