版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p><b> 摘 要2</b></p><p><b> 正文3</b></p><p> 1設(shè)計(jì)目的及要求3</p><p><b> 2設(shè)計(jì)原理3</b></p>&
2、lt;p> 2.1 設(shè)計(jì)實(shí)現(xiàn)原理3</p><p> 2.2項(xiàng)目分塊及其實(shí)現(xiàn)方案5</p><p> 2.3電梯控制器的流程圖6</p><p><b> 3設(shè)計(jì)內(nèi)容7</b></p><p> 3.1基本狀態(tài)設(shè)計(jì)7</p><p><b> 3.2模塊設(shè)計(jì)
3、8</b></p><p><b> 3.3波形仿真9</b></p><p><b> 總結(jié)與致謝13</b></p><p><b> 參考文獻(xiàn)14</b></p><p><b> 附錄15</b></p>
4、<p><b> 摘 要</b></p><p> 電梯作為垂直方向的交通工具,在高層建筑和公共場所已成為不可或缺的設(shè)備。中國是全球最大的電梯市場,也具有最強(qiáng)的電梯生產(chǎn)能力,但由于缺乏自主知識(shí)產(chǎn)權(quán)和核心技術(shù),自主品牌占市場的份額很少。因此要加大對(duì)電梯技術(shù)的創(chuàng)新和發(fā)展,提升電梯的性能,就需要引進(jìn)更好的技術(shù),電梯控制器就是很好的裝置,大力開發(fā)控制器是很必要的。 </p>
5、;<p> 電梯的微機(jī)化控制主要有以下幾種形式:PLC控制;單片機(jī)控制;單板機(jī)控制;單微機(jī)控制;多微機(jī)控制;人工智能控制。本次課程設(shè)計(jì)采用了EDA技術(shù)進(jìn)行操作EDA技術(shù)打破了軟件和硬件間的壁壘,使計(jì)算機(jī)的軟件技術(shù)與硬件實(shí)現(xiàn)、設(shè)計(jì)效率與產(chǎn)品性能合二為一,它代表了電子設(shè)計(jì)技術(shù)和應(yīng)用技術(shù)的發(fā)展方向。</p><p> 本設(shè)計(jì)采用Verilog HDL語言的編程技術(shù),源程序Altera公司的Quartu
6、s II軟件仿真。</p><p> 關(guān)鍵字:EDA技術(shù); Verilog HDL語言; Quartus II軟件</p><p><b> 正文</b></p><p><b> 1設(shè)計(jì)目的及要求</b></p><p> 1、設(shè)計(jì)一個(gè)6層電梯控制器電路,用數(shù)碼管顯示電梯所在樓層號(hào),電梯初
7、始狀態(tài)為第一樓層;每樓層電梯外都有上、下樓請(qǐng)求開關(guān),電梯內(nèi)設(shè)有乘客到達(dá)樓層的請(qǐng)求開關(guān)、電梯所處樓層、上升模式及下降模式的指示;電梯每2秒升降一層,到達(dá)有停站請(qǐng)求的樓層后,經(jīng)4秒電梯門打開,開門指示燈亮,開門4秒后,指示燈滅,關(guān)門,關(guān)門時(shí)間3秒,電梯繼續(xù)運(yùn)行??梢酝ㄟ^快速關(guān)門和關(guān)門中斷信號(hào)控制;能記憶電梯內(nèi)外的請(qǐng)求信號(hào),當(dāng)電梯處于上升模式時(shí),只響應(yīng)比電梯所在位置高的樓請(qǐng)求信號(hào),直到最后一個(gè)上樓請(qǐng)求執(zhí)行完畢,再進(jìn)入下降模式。</p&g
8、t;<p> 2、進(jìn)一步鞏固理論知識(shí),培養(yǎng)所學(xué)理論知識(shí)的在實(shí)際中的應(yīng)用能力;掌握EDA設(shè)計(jì)的一般方法;熟悉一種EDA軟件,掌握一般EDA系統(tǒng)的調(diào)試方法;利用EDA軟件設(shè)計(jì)一個(gè)電子技術(shù)綜合問題,培養(yǎng)Verilog HDL編程、書寫技術(shù)報(bào)告的能力。為以后進(jìn)行工程實(shí)際問題的研究打下設(shè)計(jì)基礎(chǔ)。</p><p><b> 2設(shè)計(jì)原理</b></p><p>
9、 2.1 設(shè)計(jì)實(shí)現(xiàn)原理</p><p> 根據(jù)系統(tǒng)設(shè)計(jì)要求,并考慮到系統(tǒng)的可檢驗(yàn)性,整個(gè)系統(tǒng)的輸入輸出接口設(shè)計(jì)如圖1所示:系統(tǒng)工作用2Hz基準(zhǔn)時(shí)鐘信號(hào)CLKIN,樓層上升請(qǐng)求鍵UPIN,樓層下降請(qǐng)求鍵DOWNIN,樓層選擇鍵入鍵ST_CH,提前關(guān)門輸入鍵CLOSE,延遲關(guān)門輸入鍵DELAY,電梯運(yùn)行的開關(guān)鍵RUN_STOP,電梯運(yùn)行或停止指示鍵LAMP,電梯運(yùn)行或等待時(shí)間指示鍵RUN_WAIT,電梯所在樓層指
10、示數(shù)碼管ST_OUT,樓層選擇指示數(shù)碼管DIRECT。</p><p> 圖 1. 電梯控制器DTKZQ的輸入輸出接口圖</p><p> 各輸入端口的功能如下:</p><p> CLKIN:基準(zhǔn)時(shí)鐘信號(hào),為系統(tǒng)提供2Hz的時(shí)鐘脈沖,上升沿有效;</p><p> UPIN:電梯上升請(qǐng)求鍵。由用戶向電梯控制器發(fā)出上升請(qǐng)求。高電平有
11、效;</p><p> DOWNIN:電梯下降請(qǐng)求鍵,由用戶向電梯控制器發(fā)出下降請(qǐng)求。高電平有效;</p><p> ST_CH[2..0]:樓層選擇鍵入鍵,結(jié)合DIRECT完成樓層選擇的鍵入,高電平有效;</p><p> CLOSE:提前關(guān)門輸入鍵??蓪?shí)現(xiàn)無等待時(shí)間的提前關(guān)門操作,高電平有效;</p><p> DELAY:延遲
12、關(guān)門輸入鍵。可實(shí)現(xiàn)有等待時(shí)間的延遲關(guān)門操作,高電平有效;</p><p> RUN_STOP:電梯運(yùn)行或停止開關(guān)鍵??蓪?shí)現(xiàn)由管理員控制電梯的運(yùn)行或停止,高電平有效。</p><p><b> 一下為輸出端口:</b></p><p> LAMP:電梯運(yùn)行或等待指示鍵,指示電梯的運(yùn)行或等待狀況。高電平有效;</p><p
13、> RUN_WAIT:電梯運(yùn)行或等待時(shí)間指示鍵,指示電梯運(yùn)行狀況或等待時(shí)間的長短,高電平有效;</p><p> ST_OUT:電梯所在樓層指示數(shù)碼管,只是電梯當(dāng)前所在的樓層數(shù)。即1~6層,高電平有效;</p><p> DIRECT:樓層選擇指示數(shù)碼管,指示用戶所要選擇的樓層數(shù),高電平有效。</p><p> 2.2項(xiàng)目分塊及其實(shí)現(xiàn)方案</p&
14、gt;<p> 電梯的控制狀態(tài)包括運(yùn)行狀態(tài)﹑停止?fàn)顟B(tài)及等待狀態(tài),其中運(yùn)行狀態(tài)又包含向上狀態(tài)和向下狀態(tài)。主要?jiǎng)幼饔虚_、關(guān)門,乘客可通過鍵入開、關(guān)門按鍵,呼喚按鍵,指定樓層按鈕等來控制電梯的行與停。</p><p> 據(jù)此,整個(gè)電梯控制器DTLZQ應(yīng)包括如下幾個(gè)組成部分:①時(shí)序輸出及樓選計(jì)數(shù)器;②電梯服務(wù)請(qǐng)求處理器;③電梯升降控制器;④上升及下降寄存器;⑤電梯次態(tài)生成器。該電梯控制器設(shè)計(jì)的關(guān)鍵是確定
15、上升及下降寄存器的置位與復(fù)位。整個(gè)系統(tǒng)的內(nèi)部組成結(jié)構(gòu)圖2所示。</p><p> 圖2. 電梯控制器的內(nèi)部組成結(jié)構(gòu)圖</p><p> 圖3. 電梯控制器系統(tǒng)框圖</p><p> 2.3電梯控制器的流程圖</p><p><b> 圖4 總流程圖</b></p><p><b&
16、gt; 3設(shè)計(jì)內(nèi)容</b></p><p><b> 3.1基本狀態(tài)設(shè)計(jì)</b></p><p> 1、采用信號(hào)并置處理很多輸入信號(hào)的方式:</p><p> always @(call_up_1 or call_up_2 or call_up_3 or call_up_4 or call_up_5)</p>
17、<p> up_all={1'b0, call_up_5, call_up_4, call_up_3, call_up_2, call_up_1}; </p><p> //將各下降請(qǐng)求信號(hào)實(shí)時(shí)地合并(1樓為底層,無下降請(qǐng)求,考慮到通用性,將第1位填零)</p><p> always @(call_down_2 or call_down_3 or
18、 call_down_4 or call_down_5 or call_down_6)</p><p> down_all={call_down_6, call_down_5, call_down_4, call_down_3, call_down_2, 1'b0};</p><p> //將各停靠請(qǐng)求信號(hào)實(shí)時(shí)地合并 </p><p> alway
19、s @(request_1 or request_2 or request_3 or request_4 or request_5 or request_6)</p><p> request_all={request_6, request_5, request_4, request_3, request_2, request_1};</p><p> 2、通過參數(shù)定義把信號(hào)并置的方法
20、和有限狀態(tài)機(jī)聯(lián)系起來</p><p> parameter WAIT=7'b0000001, UP=7'b0000010, DOWN=7'b0000100, UPSTOP=7'b0001000, DOWNSTOP=7'b0010000, OPENDOOR=7'b0100000, CLOSEDOOR=7'b1000000;</p><p&
21、gt; //定義樓層的符號(hào)常量</p><p> parameterFLOOR1=6'b000001,FLOOR2=6'b000010,FLOOR3=6'b000100, FLOOR4=6'b001000, FLOOR5=6'b010000, FLOOR6=6'b100000;</p><p> parameter TRUE=1
22、'b1, FALSE=1'b0;//定義門打開和門關(guān)閉的符號(hào)常量</p><p> parameter OPEN=1'b1, CLOSED=1'b0;//定義電梯上升,下降和靜止的符號(hào)常量</p><p> parameter UPFLAG=2'b01,DNFLAG=2'b10,STATIC=2'b00;</p>&
23、lt;p> 3、采用了七個(gè)狀態(tài)實(shí)現(xiàn)了有限狀態(tài)機(jī)</p><p><b> 圖6.狀態(tài)轉(zhuǎn)換圖</b></p><p> 黑線:WAIT TO UP TO UPSTOP TO OPENDOOR TO CLOSEDOOR TO WAIT</p><p> 粉紅線:WAIT TO DOWN TO
24、DOWNSTOP TO OPENDOOR TO CLOSEDOOR TO WAIT </p><p><b> 3.2模塊設(shè)計(jì)</b></p><p> 1、電梯主控制器模塊elevator_controller:</p><p> 此段智能電梯控制器由三個(gè)重要部分組成的。</p><p>
25、?。╝)信號(hào)并置部分,完成對(duì)5路向上請(qǐng)求、5路向下請(qǐng)求、6路內(nèi)部請(qǐng)求的信號(hào)并置,化繁為簡。</p><p> ?。╞)三段式有限狀態(tài)機(jī)部分。在有請(qǐng)求的情況下,電梯控制器還要根據(jù)電梯的當(dāng)前狀態(tài)和當(dāng)前的樓層去判斷電梯的下一步該如何運(yùn)作。</p><p> ?。╟)計(jì)數(shù)器部分。完成電梯的開門、關(guān)門的時(shí)間管理。</p><p><b> 圖7.電梯主控模塊<
26、;/b></p><p> 2、分頻模塊frequence_div:</p><p> 這段分頻器完成對(duì)50Mhz的1分頻操作。采用傳統(tǒng)的“一半就翻轉(zhuǎn)”的計(jì)數(shù)技巧。</p><p><b> 圖8.分頻模塊</b></p><p><b> 3、數(shù)碼管譯碼模塊</b></p>
27、;<p><b> 3.3波形仿真</b></p><p> 1、當(dāng)電梯處于初始狀態(tài)時(shí),電梯在高層有向下的請(qǐng)求時(shí):</p><p><b> 圖9</b></p><p> 2、當(dāng)電梯停在6樓處于等待狀態(tài)時(shí),在1樓和2樓同時(shí)有向上的請(qǐng)求時(shí):</p><p><b>
28、 圖10</b></p><p> 3、當(dāng)電梯停在1樓處于等待狀態(tài)時(shí),在6樓和5樓同時(shí)有向下的請(qǐng)求時(shí):</p><p><b> 圖11</b></p><p> 4、當(dāng)電梯停在6樓時(shí),有在5樓的向下的請(qǐng)求時(shí),電梯應(yīng)該先到五樓,電梯內(nèi)部請(qǐng)求到1樓,如果電梯在下降的過程中,有在2樓的向上的請(qǐng)求時(shí),電梯應(yīng)該先相應(yīng)內(nèi)部請(qǐng)求,然后相
29、應(yīng)外部請(qǐng)求:</p><p><b> 圖12</b></p><p> 5、電梯的強(qiáng)制運(yùn)行按鈕forbid:</p><p><b> 圖13</b></p><p><b> 總結(jié)與致謝</b></p><p> 通過本次課程設(shè)計(jì)進(jìn)一步熟悉
30、Quartus II軟件的使用和操作方法,以及硬件實(shí)現(xiàn)時(shí)的下載方法與運(yùn)行方法;對(duì)Verilog HDL語言的自頂向下設(shè)計(jì)方法有了進(jìn)一步的認(rèn)識(shí),對(duì)其中的許多語句也有了新了解,掌握;對(duì)自己獨(dú)立思考和解決問題的能力也有了很大的鍛煉。 </p><p> 本次課程設(shè)計(jì)設(shè)計(jì)的選題、課題調(diào)研與撰寫工作是在和老師的指導(dǎo)下完成的。在我的課程設(shè)計(jì)期間,同課題的同學(xué)都給予了我熱情的幫助和無私的指導(dǎo),在此向這些同學(xué)們表示衷心的感謝。
31、</p><p> 在我的學(xué)習(xí)過程中,**老師也給了我耐心的指導(dǎo)和幫助。我在此對(duì)各位老師表示誠摯的感謝!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 黃仁欣.EDA技術(shù)實(shí)用教程.北京:清華大學(xué)出版社,2006</p><p> [2] 潘松,黃繼業(yè).EDA技術(shù)與VHDL.北京:清華大學(xué)出
32、版社,2009</p><p> [3] 江國強(qiáng)編著.EDA技術(shù)與應(yīng)用(第三版)..北京:電子工業(yè)出版社,2010</p><p> [4] 夏宇聞編著.Verilog HDL數(shù)字系統(tǒng)設(shè)計(jì)教程..北京:北京航空航天大學(xué)出版社,2008</p><p> [5] 周祖成,程曉軍,馬卓釗編著.?dāng)?shù)字電路與系統(tǒng)教學(xué)實(shí)驗(yàn)教程.北京:科學(xué)出版社,2010</p>
33、;<p> [6] 周潤景,蘇良碧.基于Quartus II 的數(shù)字系統(tǒng)Verilog HDL設(shè)計(jì)實(shí)例詳解.北京:電子工業(yè)出版社,2010</p><p> [7] (美國)Sanir Palnitkar 譯者:夏宇聞 胡燕祥 刁嵐松.Verilog HDL數(shù)字設(shè)計(jì)與綜合(第2版).北京:電子工業(yè)出版社,2009</p><p> [8] 云創(chuàng)工作室.Verilog H
34、DL程序設(shè)計(jì)與實(shí)踐.北京:人民郵電出版社,2009</p><p> [9] 劉福奇,劉波.Verilog HDL應(yīng)用程序設(shè)計(jì)實(shí)例精講.北京:電子工業(yè)出版社,2009</p><p> [10] 張延偉,楊金巖,葛愛學(xué).verilog hdl程序設(shè)計(jì)實(shí)例詳解.北京:人民郵電出版社,2008</p><p><b> 附錄</b></
35、p><p><b> 1、分頻模塊</b></p><p> module frequence_div(cp_50M,cp_1);</p><p> input cp_50M;//板子提供的最高時(shí)鐘</p><p> output cp_1;//要求得到的秒脈沖</p><p> reg [
36、27:0] counter_1;//計(jì)數(shù)器</p><p> reg cp_1;//類型聲明</p><p> always@(posedge cp_50M)</p><p><b> begin</b></p><p> if(counter_1==28'h17D7840)//50M的一半到了,秒脈沖翻
37、轉(zhuǎn)</p><p><b> begin </b></p><p> cp_1<=~cp_1;//翻轉(zhuǎn)</p><p> counter_1<=28'h0000000;</p><p><b> end</b></p><p><b>
38、 else </b></p><p> counter_1<=counter_1+1'b1;//否則加1</p><p><b> end</b></p><p><b> endmodule</b></p><p> 2、智能電梯主控制模塊</p>
39、<p> module elevator_controller(//input ports:</p><p> cp_50M,clk,reset,forbid,</p><p> call_up_1, call_up_2, call_up_3, </p><p> call_up_4, call_up_5,</p><p>
40、 call_down_2, call_down_3, call_down_4, </p><p> call_down_5,call_down_6,</p><p> request_1, request_2, request_3, </p><p> request_4, request_5, request_6,</p><p>
41、 //output ports:</p><p> out,LiftState,over_alarm,count_out,count</p><p><b> );</b></p><p> //output ports:</p><p> output [6:0]out;//輸出樓層</p>&
42、lt;p> output [6:0] LiftState;//輸出電梯狀態(tài)</p><p> output over_alarm;//出錯(cuò)</p><p> output [6:0]count_out;//計(jì)數(shù)器輸出,便于我控制開關(guān)門的狀態(tài)顯示</p><p> output [2:0]count;//計(jì)數(shù)器</p><p>
43、 //input ports:</p><p> input cp_50M;</p><p> input clk,reset,call_up_1,call_up_2,call_up_3,call_up_4,call_up_5,call_down_2,call_down_3,call_down_4,call_down_5,call_down_6,request_1,request_2,
44、request_3,request_4,request_5,request_6;</p><p> input forbid;</p><p> //pos與Posout的關(guān)系:當(dāng)前狀態(tài)一改變,pos立即作相應(yīng)改變,而PosOut則是當(dāng)前狀態(tài)在要變到下一狀態(tài)的瞬間</p><p> //,將PosOut作相應(yīng)改變。如從WAIT切換到第一個(gè)UP時(shí),pos立即加一
45、,而PosOut則要等到第一個(gè)UP</p><p> //即將切換到第二個(gè)UP時(shí),才加一。</p><p> //這個(gè)說的簡單一點(diǎn),就是移位寄存器,便于對(duì)電梯狀態(tài)的實(shí)時(shí)的控制</p><p> wire over_alarm;</p><p> wire [6:0]out;</p><p> wire [6:
46、0]count_out;</p><p> reg [5:0]pos,PosOut;</p><p> reg [2:0] count;//門開后要持續(xù)5個(gè)時(shí)鐘周期,用count來計(jì)數(shù)</p><p> reg DoorFlag;</p><p> reg [1:0] UpDnFlag;</p><p> r
47、eg [6:0] LiftState,NextState;//分別表示電梯的當(dāng)前狀態(tài)和下一狀態(tài)</p><p> wire real_clk;</p><p> //up_all,down_all,request_all分別用來合并向上請(qǐng)求的各信號(hào),向下請(qǐng)求的各信號(hào)和??空?qǐng)求的各信號(hào)</p><p> //以便判斷電梯在狀態(tài)間如何轉(zhuǎn)移時(shí)更簡潔</p>
48、;<p> reg [5:0] up_all,down_all,request_all;</p><p> //定義電梯7種狀態(tài)的符號(hào)常量</p><p> parameter WAIT=7'b0000001, UP=7'b0000010, DOWN=7'b0000100, UPSTOP=7'b0001000</p><
49、;p> , DOWNSTOP=7'b0010000, OPENDOOR=7'b0100000, CLOSEDOOR=7'b1000000;</p><p> //定義樓層的符號(hào)常量</p><p> parameter FLOOR1=6'b000001, FLOOR2=6'b000010, FLOOR3=6'b000100, FL
50、OOR4=6'b001000, FLOOR5=6'b010000, FLOOR6=6'b100000;</p><p> parameter TRUE=1'b1, FALSE=1'b0;</p><p> //定義門打開和門關(guān)閉的符號(hào)常量</p><p> parameter OPEN=1'b1, CLOSED=
51、1'b0;</p><p> //定義電梯上升,下降和靜止的符號(hào)常量</p><p> parameter UPFLAG=2'b01,DNFLAG=2'b10,STATIC=2'b00;</p><p> assign real_clk=(clk&(~forbid));</p><p> //采
52、用屏蔽時(shí)鐘的方法來實(shí)現(xiàn)“電梯強(qiáng)制禁止運(yùn)行”。方法雖然違反了“同步電路最好</p><p> //沒有時(shí)鐘門控”的要求,但是在此只要“負(fù)面影響”不是很大還是可以接受的。</p><p> //將各上升請(qǐng)求信號(hào)實(shí)時(shí)地合并(6樓為頂層,無上升請(qǐng)求,考慮到通用性,將第4位填零)</p><p> always @(call_up_1 or call_up_2 or c
53、all_up_3 or call_up_4 or call_up_5)</p><p> up_all={1'b0, call_up_5, call_up_4, call_up_3, call_up_2, call_up_1}; </p><p> //將各下降請(qǐng)求信號(hào)實(shí)時(shí)地合并(1樓為底層,無下降請(qǐng)求,考慮到通用性,將第1位填零)</p>&l
54、t;p> always @(call_down_2 or call_down_3 or call_down_4 or call_down_5 or call_down_6)</p><p> down_all={call_down_6, call_down_5, call_down_4, call_down_3, call_down_2, 1'b0};</p><p>
55、 //將各停靠請(qǐng)求信號(hào)實(shí)時(shí)地合并 </p><p> always @(request_1 or request_2 or request_3 or request_4 or request_5 or request_6)</p><p> request_all={request_6, request_5, request_4, request_3, request_2, req
56、uest_1};</p><p> always @(posedge real_clk or posedge reset)</p><p><b> if(reset)</b></p><p><b> count<=0;</b></p><p> else if((NextState
57、==OPENDOOR)&&(count<5))//or else if(NextState==OPENDOOR)</p><p> count<=count+1;//如果計(jì)數(shù)不到5且下一狀態(tài)為OPENDOOR的話,繼續(xù)計(jì)數(shù)</p><p><b> else</b></p><p> count<=0;/
58、/清零,以備下次計(jì)數(shù)</p><p> //display which floor the elevator is....</p><p> display_decode h1(cp_50M,PosOut,out,over_alarm);</p><p> display_decode_count h2(cp_50M,count,cou
59、nt_out);</p><p> // finite state machine in the style of three segments ,三段式</p><p> //1st StateShift always block,sequential state transition,有限狀態(tài)機(jī)第一段</p><p> always @(posedge r
60、eal_clk or posedge reset)</p><p><b> if(reset)</b></p><p><b> begin</b></p><p> LiftState<=WAIT; </p><p><b> end</b></p&g
61、t;<p><b> else</b></p><p> LiftState<=NextState;</p><p> //2nd StateShift always block,combinational condition judgement,有限狀態(tài)機(jī)第二段</p><p> always @(LiftStat
62、e or up_all or down_all or request_all or pos or count or UpDnFlag)</p><p> case(LiftState)</p><p><b> WAIT:</b></p><p><b> begin</b></p><p>
63、 if(request_all>0)//有??空?qǐng)求否</p><p><b> begin</b></p><p> if((request_all&pos)>0)//停靠請(qǐng)求中有當(dāng)前樓層??空?qǐng)求否</p><p> NextState=OPENDOOR;//有當(dāng)前樓層請(qǐng)求,則下一狀態(tài)轉(zhuǎn)開門</p>&
64、lt;p> else if(request_all>pos)//有當(dāng)前樓層之上的??空?qǐng)求否(優(yōu)先向上的請(qǐng)求) </p><p> NextState=UP;//有則,下一狀態(tài)轉(zhuǎn)上升</p><p><b> else</b></p><p> NextState=DOWN;//只有當(dāng)前樓層之下的??空?qǐng)求,下一狀態(tài)轉(zhuǎn)下降
65、</p><p><b> end</b></p><p> else if((up_all&pos)||(down_all&pos))//上下請(qǐng)求中有當(dāng)前樓層請(qǐng)求否</p><p><b> begin</b></p><p> NextState=OPENDOOR;<
66、;/p><p><b> end</b></p><p> else if((up_all>pos)||(down_all>pos))//上下請(qǐng)求中有當(dāng)前樓層之上的請(qǐng)求否</p><p> NextState=UP;</p><p> else if(up_all||down_all)//上下請(qǐng)求中有當(dāng)前
67、樓層之下的請(qǐng)求否</p><p> NextState=DOWN;</p><p><b> else</b></p><p> NextState=WAIT;//無任何請(qǐng)求,繼續(xù)處于WAIT模式</p><p><b> end</b></p><p><b&
68、gt; UP:</b></p><p><b> begin</b></p><p> if((request_all&pos)||(up_all&pos))//停靠或上升請(qǐng)求中有當(dāng)前樓層的請(qǐng)求否</p><p> NextState=UPSTOP;//有,下一狀態(tài)轉(zhuǎn)為UPSTOP(??亢笠?s才開門,UPS
69、TOP即為這1s的過渡期)</p><p> else if((request_all>pos)||(up_all>pos))//停靠或上升請(qǐng)求中有當(dāng)前樓層之上的請(qǐng)求否</p><p> NextState=UP;</p><p> else if(down_all>0)//有下降請(qǐng)求否</p><p><b&g
70、t; begin</b></p><p> if((down_all>pos)&&((down_all^pos)>pos))//下降請(qǐng)求中有當(dāng)前樓層的請(qǐng)求否</p><p> NextState=UP;</p><p> else if((down_all&pos)||(pos<FLOOR6)) //其實(shí)
71、這樣做意義不大,只是使上下標(biāo)志提前變化</p><p> NextState=UPSTOP;</p><p> else if((down_all&pos)&&(pos==FLOOR6))//事實(shí)上不滿足第一條件的話,電梯根本不會(huì)到達(dá)第四層</p><p> NextState=DOWNSTOP;</p><p>
72、; else//下降請(qǐng)求中只有當(dāng)前樓層之下的請(qǐng)求</p><p> NextState=DOWN;</p><p><b> end</b></p><p> else if(request_all||up_all)//只有當(dāng)前樓層之上的??炕蛏仙?qǐng)求否</p><p> NextState=DOWN;<
73、/p><p><b> else</b></p><p> NextState=WAIT;//無任何請(qǐng)求,轉(zhuǎn)為WAIT模式</p><p><b> end</b></p><p> //DOWN的狀態(tài)轉(zhuǎn)移請(qǐng)參見UP的狀態(tài)轉(zhuǎn)移</p><p><b> DOW
74、N:</b></p><p><b> begin</b></p><p> if((request_all&pos)||(down_all&pos))</p><p> NextState=DOWNSTOP;</p><p> else if(((request_all&FL
75、OOR1)<pos&&(request_all&FLOOR1))||((request_all&FLOOR2)<pos&&(request_all&FLOOR2))||((request_all&FLOOR3)<pos&&(request_all&FLOOR3))||((request_all&FLOOR4)<pos&
76、amp;&(request_all&FLOOR4))||((request_all&FLOOR5)<pos&&(request_all&FLOOR5))||((request_all&FLOOR6)<pos&&(request_all&FLOOR6)))</p><p> NextState=DOWN;</p>
77、;<p> else if(((down_all&FLOOR1)<pos&&(down_all&FLOOR1))||((down_all&FLOOR2)<pos&&(down_all&FLOOR2))||((down_all&FLOOR3)<pos&&(down_all&FLOOR3))||((down_al
78、l&FLOOR4)<pos&&(down_all&FLOOR4))||((down_all&FLOOR5)<pos&&(down_all&FLOOR5))||((down_all&FLOOR6)<pos&&(down_all&FLOOR6)))</p><p> NextState=DOWN;<
79、;/p><p> else if(up_all>0)</p><p><b> begin</b></p><p> if(((up_all&FLOOR1)<pos&&(up_all&FLOOR1))||((up_all&FLOOR2)<pos&&(up_all&
80、;FLOOR2))||((up_all&FLOOR3)<pos&&(up_all&FLOOR3))||((up_all&FLOOR4)<pos&&(up_all&FLOOR4))||((up_all&FLOOR5)<pos&&(up_all&FLOOR5))||((up_all&FLOOR6)<pos&
81、&(up_all&FLOOR6)))</p><p> NextState=DOWN;</p><p> else if((up_all&pos)&&(pos>FLOOR1)) </p><p> NextState=DOWNSTOP;</p><p> else if((up_all&a
82、mp;pos)&&(pos==FLOOR1))</p><p> NextState=UPSTOP;</p><p><b> else</b></p><p> NextState=UP;</p><p><b> end</b></p><p>
83、 else if(request_all||down_all)</p><p> NextState=UP;</p><p><b> else</b></p><p> NextState=WAIT;</p><p><b> end</b></p><p><
84、;b> UPSTOP:</b></p><p><b> begin</b></p><p> NextState=OPENDOOR;//停靠1時(shí)鐘周期后開門</p><p><b> end</b></p><p><b> DOWNSTOP:</b&g
85、t;</p><p><b> begin</b></p><p> NextState=OPENDOOR;//???時(shí)鐘周期后開門</p><p><b> end</b></p><p><b> OPENDOOR:</b></p><p>
86、<b> begin</b></p><p> if(count<5)//開門不足5周期,則繼續(xù)轉(zhuǎn)移到開門狀態(tài)</p><p> NextState=OPENDOOR;</p><p><b> else</b></p><p> NextState=CLOSEDOOR;//開門5周
87、期后,關(guān)門</p><p><b> end</b></p><p> CLOSEDOOR:</p><p><b> begin</b></p><p> if(UpDnFlag==UPFLAG)//開門關(guān)門前電梯是處于上升狀態(tài)嗎</p><p><b>
88、 begin</b></p><p> if((request_all&pos)||(up_all&pos))//上升或??空?qǐng)求中有當(dāng)前樓層的請(qǐng)求否,有可能關(guān)門的瞬間又有新的請(qǐng)求</p><p> NextState=OPENDOOR;</p><p> else if((request_all>pos)||(up_all&
89、gt;pos))//上升或??空?qǐng)求中有當(dāng)前樓層之上的請(qǐng)求否</p><p> NextState=UP;</p><p> else if(down_all>0)//有下降請(qǐng)求否</p><p><b> begin</b></p><p> if((down_all>pos)&&((
90、down_all^pos)>pos))</p><p> NextState=UP;//有當(dāng)前樓層之上的下降請(qǐng)求,則下一狀態(tài)轉(zhuǎn)移上升</p><p> else if((down_all&pos)>0)//有當(dāng)前樓層的下降請(qǐng)求信號(hào),且更上層無下降請(qǐng)求</p><p> NextState=OPENDOOR;</p><p
91、> else//只有低于當(dāng)前層的下降請(qǐng)求</p><p> NextState=DOWN;</p><p><b> end</b></p><p> else if(request_all||up_all)//上升和??空?qǐng)求中有當(dāng)前層的請(qǐng)求且只有當(dāng)前層下的請(qǐng)求</p><p> NextState=DO
92、WN;</p><p><b> else</b></p><p> NextState=WAIT;//無任何請(qǐng)求,轉(zhuǎn)為WAIT模式</p><p><b> end</b></p><p> //請(qǐng)參考UpDnFlag=UPFLAG的注釋</p><p>
93、 else if(UpDnFlag==DNFLAG)</p><p><b> begin</b></p><p> if((request_all&pos)||(down_all&pos))</p><p> NextState=OPENDOOR;</p><p> else if(((req
94、uest_all&FLOOR1)<pos&&(request_all&FLOOR1))||((request_all&FLOOR2)<pos&&(request_all&FLOOR2))||((request_all&FLOOR3)<pos&&(request_all&FLOOR3))||((request_all&
95、FLOOR4)<pos&&(request_all&FLOOR4))||((request_all&FLOOR5)<pos&&(request_all&FLOOR5))||((request_all&FLOOR6)<pos&&(request_all&FLOOR6)))</p><p> NextState
96、=DOWN;</p><p> else if(((down_all&FLOOR1)<pos&&(down_all&FLOOR1))||((down_all&FLOOR2)<pos&&(down_all&FLOOR2))||((down_all&FLOOR3)<pos&&(down_all&FLOO
97、R3))||((down_all&FLOOR4)<pos&&(down_all&FLOOR4))||((down_all&FLOOR5)<pos&&(down_all&FLOOR5))||((down_all&FLOOR6)<pos&&(down_all&FLOOR6)))</p><p> Nex
98、tState=DOWN;</p><p> else if(up_all>0)</p><p><b> begin</b></p><p> if(((up_all&FLOOR1)<pos&&(up_all&FLOOR1))||((up_all&FLOOR2)<pos&&
99、amp;(up_all&FLOOR2))||((up_all&FLOOR3)<pos&&(up_all&FLOOR3))||((up_all&FLOOR4)<pos&&(up_all&FLOOR4))||((up_all&FLOOR5)<pos&&(up_all&FLOOR5))||((up_all&FLOO
100、R6)<pos&&(up_all&FLOOR6)))</p><p> NextState=DOWN;</p><p> else if((up_all&pos)>0)</p><p> NextState=OPENDOOR;</p><p><b> else</b>
101、</p><p> NextState=UP;//</p><p><b> end</b></p><p> else if(request_all||down_all)</p><p> NextState=UP;</p><p><b> else</b>&l
102、t;/p><p> NextState=WAIT;//</p><p><b> end</b></p><p> //請(qǐng)參考WAIT模式的注釋</p><p><b> else</b></p><p><b> begin</b></p&
103、gt;<p> if(request_all>0)</p><p><b> begin</b></p><p> if((request_all&pos)>0)</p><p> NextState=OPENDOOR;</p><p> else if(request_all
104、>pos)</p><p> NextState=UP;</p><p><b> else </b></p><p> NextState=DOWN;</p><p><b> end</b></p><p> else if((up_all&pos
105、)||(down_all&pos))</p><p><b> begin</b></p><p> NextState=OPENDOOR;</p><p><b> end</b></p><p> else if((up_all>pos)||(down_all>pos
106、))</p><p> NextState=UP;</p><p> else if(up_all||down_all)</p><p> NextState=DOWN; </p><p><b> else</b></p><p>&l
107、t;b> begin</b></p><p> NextState=WAIT;</p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p>&l
108、t;b> default:</b></p><p> NextState=WAIT;</p><p><b> endcase</b></p><p> //3rd StateShift always block,the sequential FSM output,有限狀態(tài)機(jī)第三段</p><p&g
109、t; always @(posedge real_clk or posedge reset)//output</p><p><b> if(reset)</b></p><p> //復(fù)位后初始化當(dāng)前樓層為第一層,門是關(guān)閉的,電梯是靜止的</p><p><b> begin</b></p><
110、;p> pos<=FLOOR1;</p><p> DoorFlag<=CLOSED;</p><p> UpDnFlag<=STATIC;</p><p><b> end</b></p><p> else </p><p><b>
111、 begin</b></p><p> PosOut<=pos;//PosOut的輸出慢pos一個(gè)時(shí)鐘周期</p><p> case(NextState)</p><p><b> WAIT:</b></p><p> //狀態(tài)為WAIT時(shí),樓層不變,門是關(guān)閉的,電梯是靜止的,其他模式的情況請(qǐng)
112、大家自己推導(dǎo)</p><p><b> begin</b></p><p><b> pos<=pos;</b></p><p> DoorFlag<=CLOSED;</p><p> UpDnFlag<=STATIC;</p><p><b&
113、gt; end</b></p><p><b> UP:</b></p><p><b> begin</b></p><p> pos<=pos<<1;</p><p> DoorFlag<=CLOSED;</p><p>
114、UpDnFlag<=UPFLAG;</p><p><b> end</b></p><p><b> DOWN:</b></p><p><b> begin</b></p><p> pos<=pos>>1;</p><p
115、> DoorFlag<=CLOSED;</p><p> UpDnFlag<=DNFLAG;</p><p><b> end</b></p><p><b> UPSTOP:</b></p><p><b> begin</b></p>
116、<p><b> pos<=pos;</b></p><p> DoorFlag<=CLOSED;</p><p> UpDnFlag<=UPFLAG;</p><p><b> end</b></p><p><b> DOWNSTOP:<
117、/b></p><p><b> begin</b></p><p><b> pos<=pos;</b></p><p> DoorFlag<=CLOSED;</p><p> UpDnFlag<=DNFLAG;</p><p><b&
118、gt; end</b></p><p><b> OPENDOOR:</b></p><p><b> begin</b></p><p><b> pos<=pos;</b></p><p> DoorFlag<=OPEN;</p>
119、;<p> UpDnFlag<=UpDnFlag;</p><p><b> end</b></p><p> CLOSEDOOR:</p><p><b> begin</b></p><p><b> pos<=pos;</b></
120、p><p> DoorFlag<=CLOSED;</p><p> UpDnFlag<=UpDnFlag;</p><p><b> end</b></p><p><b> default:</b></p><p><b> //默認(rèn)情況<
121、/b></p><p><b> begin</b></p><p> pos<=FLOOR1;</p><p> DoorFlag<=CLOSED;</p><p> UpDnFlag<=STATIC;</p><p><b> end</b&g
122、t;</p><p><b> endcase</b></p><p><b> end</b></p><p><b> endmodule</b></p><p><b> 3、數(shù)碼管譯碼模塊</b></p><p>
123、 module display_decode(cp_50M,in,out,over_alarm);</p><p> input [5:0]in;</p><p> input cp_50M;</p><p> output [6:0]out;</p><p> output over_alarm;</p><p&
124、gt; reg [6:0]out;</p><p> reg over_alarm;</p><p> always@(posedge cp_50M)</p><p><b> begin</b></p><p><b> case(in)</b></p><p>
125、 6'b000000:out<=7'b100_0000;//0</p><p> 6'b000001:out<=7'b111_1001;//1</p><p> 6'b000010:out<=7'b010_0100;//2</p><p> 6'b000100:out<=7
126、9;b011_0000;//3</p><p> 6'b001000:out<=7'b001_1001;//4</p><p> 6'b010000:out<=7'b001_0010;//5</p><p> 6'b100000:out<=7'b000_0010;//6</p>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)--電梯控制器設(shè)計(jì)
- eda課程設(shè)計(jì)--電梯控制器設(shè)計(jì)
- eda電梯控制器課程設(shè)計(jì)報(bào)告
- eda_電梯控制器課程設(shè)計(jì)
- eda技術(shù)課程設(shè)計(jì)交通燈控制器的設(shè)計(jì)
- 彩燈控制器電路設(shè)計(jì)課程設(shè)計(jì)
- 電子技術(shù)課程設(shè)計(jì)-智能電梯控制器設(shè)計(jì)
- 彩條信號(hào)顯示控制器的設(shè)計(jì)eda技術(shù)課程設(shè)計(jì)
- 《eda技術(shù)》課程設(shè)計(jì)報(bào)告----彩燈控制器
- eda課程設(shè)計(jì)---彩燈控制器
- 電梯控制器課程設(shè)計(jì)
- 電梯控制電路-電子技術(shù)課程設(shè)計(jì)
- eda課程設(shè)計(jì)彩燈控制器
- eda課程設(shè)計(jì)-彩燈控制器
- 課程設(shè)計(jì)--- 四路裝飾彩燈控制器電路設(shè)計(jì)
- 洗衣機(jī)控制電路設(shè)計(jì)eda課程設(shè)計(jì)
- 電梯控制電路-電子技術(shù)課程設(shè)計(jì)
- eda課程設(shè)計(jì)---節(jié)日彩燈控制器
- eda課程設(shè)計(jì)--多路彩燈控制器
- 微機(jī)技術(shù)課程設(shè)計(jì)--彩燈控制器設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論