基于Verilog HDL的電梯控制設(shè)計_第1頁
基于Verilog HDL的電梯控制設(shè)計_第2頁
基于Verilog HDL的電梯控制設(shè)計_第3頁
基于Verilog HDL的電梯控制設(shè)計_第4頁
基于Verilog HDL的電梯控制設(shè)計_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、南京xx大學(xué)xx學(xué)院畢 業(yè) 論 文題 目基于verilog hdl的電梯控制設(shè)計2011 年 4 月基于verilog hdl的電梯控制設(shè)計摘 要 verilog hdl就是在用途最廣泛的c語言的基礎(chǔ)上發(fā)展起來的一種硬件描述語言,verilog hdl用于從算法級、門級到開關(guān)級的多種抽象設(shè)計層次的數(shù)字系統(tǒng)建模。verilog hdl 語言不僅定義了語法,而且對每個語法結(jié)構(gòu)都定義了清晰的模擬、仿真語義,從c 編程語言中繼承了多種操作符和結(jié)構(gòu)。 在學(xué)習(xí)verilog hdl過程中,我也只是掌握了一些基本的知識。但當(dāng)我首先我拿到畢業(yè)課題時,我就準(zhǔn)備用的是有限狀態(tài)機來寫這段程序,一開始時我準(zhǔn)備把電梯的

2、六個樓層作為狀態(tài)的轉(zhuǎn)換,但是我發(fā)現(xiàn)這個不太容易實現(xiàn),因為即使?fàn)顟B(tài)轉(zhuǎn)換好了,我發(fā)現(xiàn)我還需要開門,關(guān)門,還有??浚@樣以六個樓層為狀態(tài)的書寫不是很方便。后來我換了一個思路,我把電梯在整個運行中分為五個狀態(tài).,分別是等待狀態(tài),下降狀態(tài),上升狀態(tài),開門狀態(tài),關(guān)門狀態(tài)。關(guān)于電梯的按鈕選擇,我用了五個按鈕來表是一樓到五樓的電梯外部的上鍵,也用了五個按鈕來表示二樓到六樓的電梯外部的下鍵,我使用了六個按鈕來表示電梯內(nèi)部一樓到六樓的選擇。當(dāng)一切準(zhǔn)備好了時,我準(zhǔn)備用三段式有限狀態(tài)機來描述整個程序。在寫程序過程中,我又增加了,控制開門的計算器和樓層的顯示以及電梯的上下標(biāo)志。但在寫程序的過程中,我又遇到新的問題,我發(fā)

3、現(xiàn)由于我用了十六個按鈕,在程序反復(fù)用到這些按鈕,降低了程序的可閱讀性,使程序看起來十分的復(fù)雜,所以我借鑒了參考書中關(guān)于信號并置的算法。把所有的上樓的信號并置在一起,把所有的下樓的信號并置在一起,也把所有的請求信號也并置在一起。使的程序在書寫過程中簡單,提高了可閱讀性。在解決了一切的問題之后我的書寫也順利的進行,寫完了也能在仿真軟件quartus ii仿真出電梯的基本運行。相對于現(xiàn)實中的電梯還是缺少很多功能的,比如提前關(guān)門,重復(fù)開門等等。關(guān)鍵詞:verilog hdl quartus ii 電梯的自動控制 狀態(tài)轉(zhuǎn)換ibased on the design of verilog hdlabstra

4、ctverilog hdl is in use is the most extensive c language developed on the basis of a hardware description language, verilog hdl used for from algorithm level, door level to switch the design level of abstraction level of digital system modeling. verilog hdl language not only defines the grammar, but

5、 also for every grammatical structure defines clear modeling, simulation semantics, from c programming language inherited various operators and structure. in the study verilog hdl process, i also just learned some basic knowledge. but when i first when i get my graduation topic, i am going to use is

6、 finite state machine to write this program segment, started i plan to take the elevator six floors as state conversion, but i found this not too easy to implement, because even if the state transition ok, i found that i still need to open the door, close the door, and with six floors dock, such as

7、state of writing is not very convenient. later i changed a mentality, i put the elevator in the whole operation of divided into five state., respectively is wait states, descend state, increasing, open, the state. about elevator button options, i spent five button to watch is the first floor to the

8、fifth floor of the elevator external on the bond.keywords: verilog hdl quartus ii elevator control state transition目 錄摘 要iabstractii第一章 引言11.1 課題意義11.2 開發(fā)工具的選擇1第二章 所用開發(fā)工具簡介32.1 verilog hdl簡介32.2 quartus ii簡介32.3 verilog hdl語言在quartus ii中的應(yīng)用4第三章 系統(tǒng)總體設(shè)計63.1 電梯的需求分析63.2 電梯的設(shè)計概要63.2.1 電梯的管腳63.2.2 電梯的狀態(tài)轉(zhuǎn)

9、換7第四章 系統(tǒng)應(yīng)用程序設(shè)計94.1 程序各個模塊詳解94.1.1 有限狀態(tài)表機的三段式94.1.2 信號的并置144.1.3 開門狀態(tài)的實現(xiàn)144.2 程序仿真的實現(xiàn)144.3 程序在硬件的實現(xiàn)16結(jié)束語20參考文獻21致 謝22iii南京師范大學(xué)泰州學(xué)院本科生畢業(yè)設(shè)計(論文)第一章 引言1.1 課題意義隨著經(jīng)濟的快速發(fā)展,城市建設(shè)的不斷深入,高層建筑如雨后春筍拔地而起?,F(xiàn)在的樓房越來越高,與此相應(yīng),作為一種可以垂直升降運輸?shù)墓ぞ唠娞菀驳玫窖该偷陌l(fā)展。電梯在人們生活中有著廣泛的應(yīng)用。它拓展了人們的生存空間,為高層建筑事業(yè)的發(fā)展做出了不可磨滅的貢獻?,F(xiàn)在,電梯已經(jīng)完全融入我們的生活、工作及學(xué)習(xí)

10、中,人們越來越離不開它。為了讓電梯更好的服務(wù)人們,各種電梯新技術(shù)不斷地發(fā)展起來。電梯關(guān)乎著人們的生命,它的安全可靠性、迅速準(zhǔn)確性、舒適性,對人們來說都是非常重要的。為了確保電梯正常運行、安全使用,一般電梯都有專業(yè)的維修管理人員。目前,我國已經(jīng)成為世界最大的新裝電梯市場和最大的電梯生產(chǎn)國。并且還有著巨大市場和發(fā)展?jié)摿臻g。2002年,中國電梯行業(yè)電梯年產(chǎn)量首次突破6萬臺。今后幾年,我國將年建住宅3.5億平方米,公建項目1.2億平方米。隨著城市向大型化、高層化的發(fā)展,我國每年將需要電梯在40000臺以上。如此大的市場需求,將是電梯業(yè)再創(chuàng)輝煌的最好契機。電梯控制系統(tǒng)是一個相當(dāng)復(fù)雜的邏輯控制系統(tǒng)。系統(tǒng)

11、要同時對幾百個信號進行接收、處理。由于用戶對電梯功能的要求不斷提高其相應(yīng)控制方式也在不斷發(fā)生變化。隨著eda技術(shù)的快速發(fā)展?;趂pga的微機化控制已廣泛應(yīng)用于電梯電路設(shè)計與控制的各個方面。電梯控制是屬于機電一體化研究領(lǐng)域,它涉及到多個方面,包括:機械工程、電子技術(shù)、電力電子技術(shù)、電機與拖動理論、自動控制理論、電力拖動自動控制系統(tǒng)、微機技術(shù)和土建工程等多個科學(xué)領(lǐng)域。1.2 開發(fā)工具的選擇verilog hdl語言不僅定義了語法,而且對每個語法結(jié)構(gòu)都定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用verilog仿真器進行驗證。語言從c 編程語言中繼承了多種操作符和結(jié)構(gòu)。verilo

12、g hdl 提供了擴展的建模能力,其中許多擴展最初很難理解。但是,verilog hdl 語言的核心子集非常易于學(xué)習(xí)和使用,這對大多數(shù)建模應(yīng)用來說已經(jīng)足夠。當(dāng)然,完整的硬件描述語言足以對從最復(fù)雜的芯片到完整的電子系統(tǒng)進行描述。對于硬件設(shè)計,它具有許多有點:(1)verilog hdl是一種通用的硬件描述語言,易學(xué)易用。由于它的語法與c語言類似,因此對于具有c語言編程經(jīng)驗的設(shè)計者來說,很容易學(xué)習(xí)和掌握。(2)verilog hdl允許在同一個電路模型內(nèi)進行不同抽象層次的描述。(3)絕大數(shù)流行的綜合工具都支持verilog hdl,這是verilog hdl成為設(shè)計者的首選語言的重要原因之一(4)

13、所有的制造廠商都提供用于verilog hdl綜合之后的邏輯仿真的元件庫,因此使用verilog hdl進行設(shè)計,即可在更廣泛的范圍內(nèi)選擇委托制造的廠商。(5)編程語言接口是verilog 語言最重要的特性之一,它使得設(shè)計者通過自己編寫的c代碼來訪問verilog 內(nèi)部的數(shù)據(jù)結(jié)構(gòu)。 quartus ii具有完全集成且與電路結(jié)構(gòu)無關(guān)的開發(fā)包環(huán)境,功能的邏輯綜合工具,完備的電路仿真與時序邏輯仿真的工具,能進行的時序分析與關(guān)鍵路徑延時分析。其內(nèi)部嵌有verilog hdl、ahdl和vhdl等邏輯綜合器,另外還具有編譯器和下載功能,并可利用第三方仿真工具modelsim進行仿真,利用綜合工具synp

14、lify進行綜合,來完成數(shù)字電路系統(tǒng)設(shè)計。其內(nèi)部還有嵌入式的signaltap ii邏輯分析工具,可用來進行系統(tǒng)的邏輯測試和分析。另外,它還支持軟件源文件的添加和創(chuàng)建,能自動定位編譯錯誤,帶有高效的編程與驗證工具,可讀入標(biāo)準(zhǔn)的edif網(wǎng)表文件,vhdl網(wǎng)表文件和verilog網(wǎng)表文件,能生成可供第三方eda軟件使用的vhdl網(wǎng)表文件和verilog網(wǎng)表文件。 21第二章 所用開發(fā)工具簡介2.1 verilog hdl簡介我選擇了用verilog hdl語言來寫電梯的自動控制。verilog hdl是一種硬件描述語言(hdl:hardware discription language),是一種以

15、文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)果和行為的語言。verilog hdl就是在用途最廣泛的c語言的基礎(chǔ)上發(fā)展起來的一種描述語言。verilog hdl的最大特點就是易學(xué)易用。verilog hdl既是一種行為描述語言,也是一種結(jié)構(gòu)描述語言。如果按照一定的規(guī)則和風(fēng)格編寫代碼,就可以將功能行為模塊通過工具自動轉(zhuǎn)化為門級互連的結(jié)構(gòu)模塊。這意味著利用verilog語言所提供的功能,就可以構(gòu)造一個模塊間的清晰結(jié)構(gòu)來描述語言在電子設(shè)計自動化中扮演重要的角色。 下面列出的是verilog語言的主要功能: (1)可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu) (2)用延遲表示式或事件表達式來明確地控制過程的啟動時間 (3)通

16、過命名的事件來觸發(fā)其他過程里的激活行為或停止行為 (4)提供了條件和循環(huán)等程序結(jié)構(gòu) (5)提供了可帶參數(shù)且非零延續(xù)時間的任務(wù)程序結(jié)構(gòu) (6)提供了可定義新的操作符的函數(shù)結(jié)構(gòu) (7)提供了用于建立表達式的算術(shù)運算符、邏輯運算符和位運算符 (8)提供了一套完整的表示組合邏輯基本元件的原語 (9)提供了雙向通路和電阻器件的描述 (10)可建立mos器件的電荷分享和衰減模型 (11)可以通過構(gòu)造性語句精確地建立信號模型2.2 quartus ii簡介 這次我用了 quartus ii 作為仿真軟件。quartus ii 是altera公司的綜合性pld開發(fā)軟件,支持原理圖、vhdl、veriloghd

17、l以及ahdl(altera hardware description language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整pld設(shè)計流程。quartus ii可以在xp、linux以及unix上使用,除了可以使用tcl腳本完成設(shè)計流程外,提供了完善的用戶圖形界面設(shè)計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點。quartus ii支持altera的ip核,包含了lpm/megafunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。對第三方eda工具的良好支持也使用戶可以在設(shè)計流程的各個階段使

18、用熟悉的第三方eda工具。quartus ii 通過和dsp builder工具matlab/simulink相結(jié)合,可以方便地實現(xiàn)各種dsp應(yīng)用系統(tǒng);支持altera的片上可編程系統(tǒng)(sopc)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、可編程邏輯設(shè)計于一體,是一種綜合性的開發(fā)平臺。maxplus ii 作為altera的上一代pld設(shè)計軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前altera已經(jīng)停止了對maxplus ii 的更新支持,quartus ii 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。altera 在quartus ii 中包含了許多諸如signaltap ii、chi

19、p editor和rtl viewer的設(shè)計輔助工具,集成了sopc和hardcopy設(shè)計流程,并且繼承了maxplus ii 友好的圖形界面及簡便的使用方法。altera quartus ii 作為一種可編程邏輯的設(shè)計環(huán)境, 由于其強大的設(shè)計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的歡迎。2.3 verilog hdl語言在quartus ii中的應(yīng)用verilog hdl在quartus ii的應(yīng)用流程如圖2-1 綜合 功能仿真原理圖/文本編輯 編程下載 時序仿真 適配 器件圖2-1 應(yīng)用流程圖quartus ii的設(shè)計輸入主要包括:原理圖設(shè)計輸入,文本輸入,層次化設(shè)計輸入。 圖2-

20、2 quartus ii的主窗口界面 圖2-3編寫源代碼第三章 系統(tǒng)總體設(shè)計3.1 電梯的需求分析 平時我們坐電梯,對它的基本工作原理我們有知道多少了,我這次設(shè)計的電梯控制應(yīng)該可以實現(xiàn)接受各樓層的上下請求信號及電梯內(nèi)部的??空埱螅缓蟾鶕?jù)這些請求實現(xiàn)對電梯正確的控制: (1)除了頂層和底層外,各樓層均設(shè)有上下請求開關(guān),頂層和底層分別設(shè)有下降和上升請求開關(guān),這一點應(yīng)該不難理解,電梯內(nèi)設(shè)有乘客到達層次的請求開關(guān)。 (2)電梯可以接受各樓層的上下請求,電梯到達有停站請求的樓層后,電梯門打開,開門五個周期后電梯關(guān)門,電梯繼續(xù)運行,直至運行完最后一個請求后??吭诋?dāng)前層。以上是我們所應(yīng)實現(xiàn)的基本功能。電梯

21、正常運行的五個狀態(tài):上升、下降、開門、關(guān)門、等待狀態(tài)。電梯在上述五個狀態(tài)間的轉(zhuǎn)移是通過三段式狀態(tài)機來實現(xiàn)的,各狀態(tài)間的轉(zhuǎn)移大體與生活中的電梯運轉(zhuǎn)一致 電梯在運行時基本原則: (1)方向為第一優(yōu)先準(zhǔn)則,這就是老師給我們的技術(shù)指標(biāo)。電梯在運轉(zhuǎn)時先響應(yīng)同方向上的請求,只有當(dāng)同方向上的請求響應(yīng)完后,才能轉(zhuǎn)而響應(yīng)不同方向上的請求。 (2)初始化狀態(tài)為1樓等待門是關(guān)閉的。這個就不用多解釋了。除了我對電梯的運行規(guī)律做出如上的分析外,我的另一個選擇開發(fā)智能電梯控制器的原因是我想鍛煉一下自己的邏輯思維和分析復(fù)雜問題的能力。3.2 電梯的設(shè)計概要3.2.1 電梯的管腳 圖3-1是電梯自動控制的元器件模塊符號。 圖

22、中左邊的是電梯中輸入輸出的管腳。其中:clk時鐘信號;reset清零信號,高電平清零,led用于樓層的靜態(tài)數(shù)碼管的顯示,ud_f電梯的上下標(biāo)志,count用于開門狀態(tài)是的計數(shù)器;up1,up2,up3,up4,up5電梯外部的除六樓以外的其他樓層的上請求按鈕;dn2,dn3,dn4,dn5,dn6電梯外部的除一樓以外的其他樓層的下請求按鈕;d1,d2,d3,d4,d5,d6電梯內(nèi)部的一樓到樓的請求按鈕。圖中右邊的圖是,程序應(yīng)用中設(shè)置的一些變量和一些狀態(tài)的參量。其中:up_f=2b01,dn_f=2b10,idle=2b00,設(shè)置上下標(biāo)志的參數(shù) idle_state=3b001, up_stat

23、e=3b010,down_state=3b011,open_state=7b100,close_state=7b10設(shè)置電梯的各種運行狀態(tài)的參 f1=6b000001,f2=6b000010;f3=6b000100;f4=6b001000,f5=6b010000, f6=6b100000,設(shè)置各個樓層的參數(shù)。 圖 3-1 元器件模塊符號圖3.2.2 電梯的狀態(tài)轉(zhuǎn)換 電梯的狀態(tài)有idle_state,open_state,close_state,up_state,down_state具體的狀態(tài)轉(zhuǎn)換如下:(1)當(dāng)reset是高電平是,清零。電梯的初始狀態(tài)為idle_state。當(dāng)當(dāng)前樓層有人請求上

24、下是,電梯有idle_state轉(zhuǎn)換為open_sate。當(dāng)有比當(dāng)前樓層高的樓層有請求時,電梯有idle_state轉(zhuǎn)換為up_state。當(dāng)有比當(dāng)前樓層低的樓層有請求時,電梯有idle_state轉(zhuǎn)換為down_state。當(dāng)內(nèi)部有請求時即d不等于0,當(dāng)?shù)扔诋?dāng)前樓層,電梯有idle_state轉(zhuǎn)換為open_sate,當(dāng)大于當(dāng)前樓層,電梯有idle_state轉(zhuǎn)換為up_state,當(dāng)小于當(dāng)前樓層,電梯有idle_state轉(zhuǎn)換為down_state。(2)當(dāng)電梯處于up_state,當(dāng)請求樓層等于當(dāng)前樓層或者外部上請求等于當(dāng)前樓層,電梯有up_state轉(zhuǎn)換為open_state。當(dāng)請求樓

25、層大于當(dāng)前樓層或者外部上請求大于當(dāng)前樓層,電梯有up_state轉(zhuǎn)換up_state。當(dāng)請求樓層小于當(dāng)前樓層或者外部上請求小于當(dāng)前樓層,電梯有up_state轉(zhuǎn)換為down_state。當(dāng)外部有下請求即dn不等于0,當(dāng)?shù)扔诋?dāng)前樓層,電梯有up_state轉(zhuǎn)換為open_sate,當(dāng)大于當(dāng)前樓層,電梯有up_state轉(zhuǎn)換為up_state,當(dāng)小于當(dāng)前樓層,電梯有up_state轉(zhuǎn)換為down_state。(3)當(dāng)電梯處于down_state,當(dāng)請求樓層等于當(dāng)前樓層或者外部下請求等于當(dāng)前樓層,電梯有down_state轉(zhuǎn)換為open_state。當(dāng)請求樓層大于當(dāng)前樓層或者外部下請求大于當(dāng)前樓層,

26、電梯有down_state轉(zhuǎn)換up_state。當(dāng)請求樓層小于當(dāng)前樓層或者外部上請求小于當(dāng)前樓層,電梯有down_state轉(zhuǎn)換為down_state。當(dāng)外部有下請求即up不等于0,當(dāng)?shù)扔诋?dāng)前樓層,電梯有down_state轉(zhuǎn)換為open_sate,當(dāng)大于當(dāng)前樓層,電梯有down_state轉(zhuǎn)換為up_state,當(dāng)小于當(dāng)前樓層,電梯有down_state轉(zhuǎn)換為down_state。(4)當(dāng)電梯處于open_state,當(dāng)count5時,電梯有open_state轉(zhuǎn)換open_state,count=5時,電梯有open_state轉(zhuǎn)換close_state;(5)當(dāng)電梯處于close_sta

27、te,根據(jù)上下標(biāo)志轉(zhuǎn)換,進入其他狀態(tài)。idle_stateup_statedown_state close_stateopen_state 圖3-2 狀態(tài)轉(zhuǎn)換圖南京師范大學(xué)泰州學(xué)院本科生畢業(yè)設(shè)計(論文)第四章 系統(tǒng)應(yīng)用程序設(shè)計4.1 程序各個模塊詳解4.1.1 有限狀態(tài)表機的三段式時序電路的狀態(tài)是一個狀態(tài)變量集合,這些狀態(tài)變量在任意時刻的值都包含了為確定電路的未來行為而必需考慮的所有歷史信息。狀態(tài)機采用veriloghdl語言編碼,建議分為三個always段完成。三段式建模描述fsm的狀態(tài)機輸出時,只需指定case敏感表為次態(tài)寄存器, 然后直接在每個次態(tài)的case分支中描述該狀態(tài)的輸出即可,不

28、用考慮狀態(tài)轉(zhuǎn)移條件。三段式描述方法雖然代碼結(jié)構(gòu)復(fù)雜了一些,但是換來的優(yōu)勢是:使fsm做到了同步寄存器輸出,消除了組合邏輯輸出的不穩(wěn)定與毛刺的隱患,而且更利于時序路徑分組,一般來說在fpga/cpld等可編程邏輯器件上的綜合與布局布線效果更佳。always (posedge clk or posedge reset) if(reset) begin state=idle_state; end else state=next_state; 這是三段式有限狀態(tài)機的第一段,當(dāng)reset為高電平時, state=idle_state其他 state=next_statealways (state or

29、up or dn or d or now_f or count or ud_f) case(state) open_state: beginif(count0) begin if(d&now_f)0) next_state=open_state; else if(dnow_f) next_state=up_state; else next_state=down_state; end else if(up&now_f)|(dn&now_f) next_state=open_state; else if(upnow_f)|(dnnow_f) next_state=up_state; else if

30、(up|dn) next_state=down_state; else next_state=idle_state; end up_state: begin if(d&now_f)|(up&now_f)next_state=open_state; else if(dnow_f)|(upnow_f) next_state=up_state; else if(d|up) next_state=down_state; else if(dn0) begin if(dnnow_f) next_state=up_state; else if(dn&now_f)|(now_ff6) next_state=o

31、pen_state; else if(dn&now_f)&(now_f=f6) next_state=open_state; else next_state=down_state; end else next_state=idle_state; end down_state: begin if(d&now_f)|(dn&now_f) next_state=open_state; else if(dnow_f)&(d!=6b000001)|(dnnow_f)|(dnnow_f) next_state=up_state else if(up0) begin if(upf1) next_state=

32、down_state; else if(up&now_f)&(now_f=f1) next_state=open_state; else next_state=up_state; end else next_state=idle_state; end close_state: begin if(ud_f=up_f) begin if(d&now_f)|(up&now_f) next_state=open_state; else if(dnow_f)|(upnow_f) next_state=up_state; else if(d|up) next_state=down_state; else

33、if(dn0) begin if(dnnow_f) next_state=up_state; else if(dn&now_f)0) next_state=open_state; else next_state=down_state; end else next_state=idle_state; end else if(ud_f=dn_f) begin if(d&now_f)|(dn&now_f) next_state=open_state; else if(dnow_f)&(d!=6b000000)|(dn0) begin if(up0) ext_state=open_state; els

34、e next_state=up_state; end else next_state=idle_state; end else begin if(d0) begin if(d&now_f)0) next_state=open_state; else if(dnow_f) next_state=up_state; else next_state=down_state; end else if(up&now_f)|(dn&now_f) next_state=open_state; else if(upnow_f)|(dnnow_f) next_state=up_state; else if(up|

35、dn) next_state=down_state; else next_state=idle_state; end end default: next_state=idle_state;endcase 這是三段式有限狀態(tài)機的第二段,狀態(tài)的轉(zhuǎn)換 always (posedge clk or posedge reset) if(reset) begin now_f=f1; ud_f=idle; led=1; end else begin now_f=now_f; case(next_state) idle_state: begin now_f=now_f; ud_f=idle; led=led;

36、 end up_state: begin now_f=now_f1; ud_f=up_f; led=led+1; end down_state: begin now_f1; ud_f=dn_f; led=led-1; end open_state: begin now_f=now_f; ud_f=ud_f; led=led; end close_state: begin now_f=now_f; ud_f=ud_f; led=led; end default: begin now_f=f1; ud_f=idle; led=led; end endcaseend這是有限狀態(tài)機的第三段,變量賦值4

37、.1.2 信號的并置 always (up1 or up2 or up3 or up4 or up5) up=1b0, up5, up4, up3, up2, up1; 上請求信號的并置,由于一樓無上請求,所以第一位用零替代 always (dn2 or dn3 or dn4 or dn5 or dn6) dn=dn6, dn5, dn4, dn3, dn2, 1b0; 下請求信號的并置,由于六樓無下請求,所以最后一位用零替代 always (d1 or d2 or d3 or d4 or d5 or d6) d=d6, d5, d4, d3, d2, d1; 內(nèi)部請求信號的并置4.1.3 開

38、門狀態(tài)的實現(xiàn) always (posedge clk or posedge reset) if(reset) count=0; else if(next_state=open_state)&(count5) count=count+1;else count=0; /本段程序是用于對開門狀態(tài)的控制,當(dāng)reset為高電平是,count為0,當(dāng)next_state=open_state且count5 則count加一,其他都為0。4.2 程序仿真的實現(xiàn) 在仿真中我選了一些實例: (1)當(dāng)清零鍵reset等于1時,上下標(biāo)志為0,樓層顯示為1,如圖4-1顯示。圖4-1 清零的仿真圖 (2)當(dāng)一樓和四樓都

39、有人要到六樓,如圖4-2顯示,led從一樓顯示到六樓,ud_f的標(biāo)志顯是為上,但在一樓和四樓分別停留了五個周期,這就是我程序中的開門。電梯在到達六樓的時候一直沒有請求,所以停在了六樓。圖4-2 電梯上運行的仿真圖 (3)六樓有人要下,如圖4-3顯示,led從一樓顯示到六樓,ud_f的標(biāo)志顯是為上,然后再六樓停留了五個周期,之后開始下降而且ud_f的標(biāo)志顯是為下,而人們要到達的樓層分別是三樓和一樓,所以在三樓和一樓分別停留了五個周期,之后因為沒有請求所以停留在一樓。圖4-3 電梯下運行的仿真圖(4)六樓有人要下,如圖4-4顯示,四樓有人要上要下,按照方向為第一優(yōu)先準(zhǔn)則,由于電梯處于上升狀態(tài),所以電梯先要運行到四樓直接是上升的狀態(tài),把四樓的乘客送到六樓后,電梯開始下降,把原來要下降的乘客在送到要到的樓層,送到目的樓層一樓后,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論