【文章內(nèi)容簡介】
到達二層( position=2)后停止并開門,待二層使用者進入后再完成第一個使用者的請求到達三層。 當(dāng)有超載信號時警報指示等亮起,即 q 置 1,電梯將一直在一樓。當(dāng)警告信號結(jié)束時電梯才正常運行。 圖 4 3 一樓到三樓在二樓時接另 一人 圖 4 4 有警告信號存在時 課程設(shè)計說 明書 10 5 總結(jié) 這次 EDA 課程設(shè)計雖然時間較短但是收獲普豐,使得我對 VHDL 語言的理解與應(yīng)用能力得到了較大的提升,讓我認識到只要深入學(xué)習(xí),提升的空間永遠是存在的。在本次課程設(shè)計中凸顯了我的不足之處,比如軟件運用不太熟練,對VHDL 語 言語法有諸多不清楚的認識,使在課程設(shè)計中遇到諸多困難。但是好在通過查閱資料和老師同學(xué)的幫助得以解決,使課程設(shè)計順利完成。 用 VHDL硬件描述語言的形式進行數(shù)字系統(tǒng)的設(shè)計方便靈活,利用 EDA 軟件進行編譯優(yōu)化仿真極大地減少了電路設(shè)計時間和可能發(fā)生的錯誤。降低了開發(fā)成本,這中設(shè)計方法必將在未來的數(shù)字系統(tǒng)設(shè)計中發(fā)揮越來越重的作用。 動手實踐是理論知識得以靈活運用的必要前提,也是今后走上工作崗位之后能夠很好的完成設(shè)計工作的技術(shù)保證。只有遇到實際問題并根據(jù)自己對課堂上獲得的專業(yè)知識的理解來解決才能真正的提高自己的能力。這 也提醒我在平時的學(xué)習(xí)生活中不能一味埋頭于課本知識,當(dāng)今社會競爭越來越激烈,社會對人才的要求越來越全面,只有理論知識是遠遠不夠的,必須靠實踐作支撐。時間是檢驗真理的唯一標準這句話在這里同樣適用。想要更加了解 EDA 技術(shù)這一領(lǐng)域必然還要經(jīng)過更多的實踐與努力,了解更多的這方面的知識,與時代共同進步,達到學(xué)以致用的效果。 再次感謝在本次課程設(shè)計中幫助我完成設(shè)計的老師與同學(xué)們,沒有你們的幫助我不能順利的完成此次課程設(shè)計,在這里提前祝老師與同學(xué)新年快樂。 課程設(shè)計說 明書 11 參考文獻 [1].Voknei .《 VHDL 數(shù)字電路設(shè)計教程》 [M].電子工業(yè)出版社, [2].潘松,黃繼業(yè) .《 EDA 技術(shù)實用教程》(第二版) [M].科學(xué)出版社, [3].焦素敏 .《 EDA 應(yīng)用技術(shù)》 [M].清華大學(xué)出版社, [4]梁延?xùn)|主編。電梯控制技術(shù) [M]。中國建筑工業(yè)出版社, 1997 [5]李鼎培,當(dāng)前電梯研制開發(fā)技術(shù)動態(tài) [J],中國電梯, 1995 課程設(shè)計說 明書 12 附錄 程序代碼 LIBRARY IEEE。 USE 。 USE 。 ENTITY li IS PORT( CLK: IN STD_LOGIC。 reset,warm: IN STD_LOGIC。 Button : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 button(0)為一層外上升請求, button(1)為二層外上升請求 button(2)為二樓外下降請求, Button(3)為三層外下降請求; floor : IN STD_LOGIC_VECTOR(2 DOWNTO 0)。 floor(0)為電梯內(nèi)一層請求按鈕, floor(1)為電梯內(nèi)二層請求按鈕, floor(2)為電梯內(nèi)三層請求按鈕; position : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 position表示電梯當(dāng)前位置信息 。 door : OUT STD_LOGIC。 39。139。為開門, 39。039。為關(guān)門; up_down,q: OUT STD_LOGIC 39。139。為上樓, 39。039。為下樓; )。 END li。 ARCHITECTURE happen OF li IS TYPE State IS (S0,S1U,S1D,S2)。 S1U為二樓上狀態(tài), S1D為二樓下狀態(tài); SIGNAL current_state : State。 中間變量:當(dāng)前狀態(tài) SIGNAL next_state : State。 中間變量:下一狀態(tài) SIGNAL up : STD_LOGIC。 中間變量:上升下降狀態(tài) SIGNAL dor : STD_LOGIC。 中間變量:開門關(guān)門狀態(tài) BEGIN P1:PROCESS(CLK) 狀態(tài)轉(zhuǎn)換進程; 課程設(shè)計說 明書 13 BEGIN IF CLK39。EVENT AND CLK=39。139。 THEN 檢測時鐘上升沿 if warm=39。039。then current_state = next_state。 END IF。 end if。 END PROCESS。 P2:PROCESS(reset,clk,current_state,up,button,floor) VARIABLE button_var: STD_LOGIC_VECTOR( 3 DOWNTO 0)。 VARIABLE floor_var : STD_LOGIC_VECTOR( 2 DOWNTO 0)。 VARIABLE cat : STD_LOGIC。 VARIABLE ca_time : STD_LOGIC_VECTOR(3 DOWNTO 0)。 BEGIN IF reset = 39。139。 THEN 復(fù)位處理,初始狀態(tài)為一層 next_state = S0。 position = 0001。 cat:=39。039。 ca_time:=0000。 up=39。Z39。 dor=39。039。 button_var( 3 DOWNTO 0):=0000。 floor_var(2 DOWNTO 0):=000。 ELSIF clk39。event and clk=39。139。 THEN 若無復(fù)位信號,則將外部按鈕信號存儲到 7個變量之中; IF button(0) =39。139。 THEN button_var(0):=39。139。 ELSE NULL。 END IF。 IF button(1) =39。139。 THEN button_var(1):=39。139。 ELSE NULL。 END IF。 IF button(2) =39。139。 THEN button_var(2):=39。139。 ELSE NULL。 END IF。 IF button(3) =39。139。 THEN button_var(3):=39。139。 ELSE NULL。 END IF。 IF floor(0)=39。139。 THEN floor_var(0):=39。139。 ELSE NULL。 END IF。 IF floor(1)=39。139。 THEN floor_var(1):=39。139。 ELSE NULL。 END IF。 課程設(shè)計說 明書 14 IF floor(2)=39。139。 THEN floor_var(2):=39。139。 ELSE NULL。 END IF。 IF cat=39。039。 THEN ca_time:=ca_time+1。 END IF。 開門,關(guān)門計時; CASE current_state IS WHEN S0 = 一樓狀態(tài)處理 。 position = 0001。 cat:=39。039。 IF (button_var(0) or floor_var(0))=39。139。 THEN CASE ca_time IS WHEN 0011 = dor=39。139。 WHEN 1101 = dor=39。039。 button_var(0):=39。039。 floor_var(0):=39。039。 IF (floor_var(1) or floor_var(2))=39。139。 THEN next_state=S1U。 ca_time:=0000。 up=39。139。 ELSE next