電梯控制器Verilog語言_第1頁
電梯控制器Verilog語言_第2頁
電梯控制器Verilog語言_第3頁
電梯控制器Verilog語言_第4頁
電梯控制器Verilog語言_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 數字系統設計大作業 題目:電梯控制器 姓名:溫慶 學號:031241214 班級:0312412 指導老師:黃雙林目錄摘 要2正文31設計目的及要求32設計原理32.1 設計實現原理32.2項目分塊及其實現方案52.3電梯控制器的流程圖63設計內容73.1基本狀態設計73.2模塊設計83.3波形仿真9總結與致謝13參考文獻14附錄15摘 要電梯作為垂直方向的交通工具,在高層建筑和公共場所已成為不可或缺的設備。中國是全球最大的電梯市場,也具有最強的電梯生產能力,但由于缺乏自主知識產權和核心技術,自主品牌占市場的份額很少。因此要加大對電梯技術的創新和發展,提升電梯的性能,就需要引進更好的技術,電

2、梯控制器就是很好的裝置,大力開發控制器是很必要的。 電梯的微機化控制主要有以下幾種形式:PLC控制;單片機控制;單板機控制;單微機控制;多微機控制;人工智能控制。本次課程設計采用了EDA技術進行操作EDA技術打破了軟件和硬件間的壁壘,使計算機的軟件技術與硬件實現、設計效率與產品性能合二為一,它代表了電子設計技術和應用技術的發展方向。本設計采用Verilog HDL語言的編程技術,源程序Altera公司的Quartus II軟件仿真。關鍵字:EDA技術; Verilog HDL語言; Quartus II軟件正文1設計目的及要求1、進一步鞏固理論知識,培養所學理論知識的在實際中的應用能力;掌握E

3、DA設計的一般方法;熟悉一種EDA軟件,掌握一般EDA系統的調試方法;利用EDA軟件設計一個電子技術綜合問題,培養Verilog HDL編程、書寫技術報告的能力。為以后進行工程實際問題的研究打下設計基礎。2、設計一個6層電梯控制器電路,用數碼管顯示電梯所在樓層號,電梯初始狀態為第一樓層;每樓層電梯外都有上、下樓請求開關,電梯內設有乘客到達樓層的請求開關、電梯所處樓層、上升模式及下降模式的指示;電梯每2秒升降一層,到達有停站請求的樓層后,經4秒電梯門打開,開門指示燈亮,開門4秒后,指示燈滅,關門,關門時間3秒,電梯繼續運行。可以通過快速關門和關門中斷信號控制;能記憶電梯內外的請求信號,當電梯處于

4、上升模式時,只響應比電梯所在位置高的樓請求信號,直到最后一個上樓請求執行完畢,再進入下降模式。2設計原理2.1 設計實現原理根據系統設計要求,并考慮到系統的可檢驗性,整個系統的輸入輸出接口設計如圖1所示:系統工作用2Hz基準時鐘信號CLKIN,樓層上升請求鍵UPIN,樓層下降請求鍵DOWNIN,樓層選擇鍵入鍵ST_CH,提前關門輸入鍵CLOSE,延遲關門輸入鍵DELAY,電梯運行的開關鍵RUN_STOP,電梯運行或停止指示鍵LAMP,電梯運行或等待時間指示鍵RUN_WAIT,電梯所在樓層指示數碼管ST_OUT,樓層選擇指示數碼管DIRECT。 DTKZQCLKIN LAMPUPIN DOWNI

5、NST_CH1 RU_WAITCLOSE ST_OUTDELAY DIRECTRUN_STOP圖 1. 電梯控制器DTKZQ的輸入輸出接口圖各輸入端口的功能如下:CLKIN:基準時鐘信號,為系統提供2Hz的時鐘脈沖,上升沿有效;UPIN:電梯上升請求鍵。由用戶向電梯控制器發出上升請求。高電平有效;DOWNIN:電梯下降請求鍵,由用戶向電梯控制器發出下降請求。高電平有效;ST_CH2.0:樓層選擇鍵入鍵,結合DIRECT完成樓層選擇的鍵入,高電平有效;CLOSE:提前關門輸入鍵。可實現無等待時間的提前關門操作,高電平有效;DELAY:延遲關門輸入鍵。可實現有等待時間的延遲關門操作,高電平有效;R

6、UN_STOP:電梯運行或停止開關鍵。可實現由管理員控制電梯的運行或停止,高電平有效。一下為輸出端口:LAMP:電梯運行或等待指示鍵,指示電梯的運行或等待狀況。高電平有效;RUN_WAIT:電梯運行或等待時間指示鍵,指示電梯運行狀況或等待時間的長短,高電平有效;ST_OUT:電梯所在樓層指示數碼管,只是電梯當前所在的樓層數。即16層,高電平有效;DIRECT:樓層選擇指示數碼管,指示用戶所要選擇的樓層數,高電平有效。2.2項目分塊及其實現方案電梯的控制狀態包括運行狀態停止狀態及等待狀態,其中運行狀態又包含向上狀態和向下狀態。主要動作有開、關門,乘客可通過鍵入開、關門按鍵,呼喚按鍵,指定樓層按鈕

7、等來控制電梯的行與停。據此,整個電梯控制器DTLZQ應包括如下幾個組成部分:時序輸出及樓選計數器;電梯服務請求處理器;電梯升降控制器;上升及下降寄存器;電梯次態生成器。該電梯控制器設計的關鍵是確定上升及下降寄存器的置位與復位。整個系統的內部組成結構圖2所示。電梯服務請求處理器時序輸出及樓選計數器(DIR)DRECTCLKINUOINDOWNINST_CH電梯升降 控制器(LIFTOR)DELAY電梯次態生成器(LADD)上升請求寄存器(UR)下降請求寄存器(DR)CLOSERUN_STOPLAMPRUN_WAITST_OUT圖2. 電梯控制器的內部組成結構圖時鐘CLK請求信號輸入模塊樓層請求超

8、 載超 載關門中斷提前關門清楚報警控制模塊 輸出顯示模塊請求信號顯示運行狀態顯示所在樓層顯示門控制信號超載報警 圖3. 電梯控制器系統框圖2.3電梯控制器的流程圖初始化外部按鍵否請求信號寄存器是否有請求?樓層檢測電梯運行等待判定電梯運行方向是目標層與本層是否同層?狀態寄存器是內部軟件執行機構否外部硬件執行機構圖4 總流程圖是否目標層?否是電梯停止開門關門否是否停止運行?是停止 圖5 電梯控制主流程圖3設計內容3.1基本狀態設計1、采用信號并置處理很多輸入信號的方式:always (call_up_1 or call_up_2 or call_up_3 or call_up_4 or call_

9、up_5) up_all=1'b0, call_up_5, call_up_4, call_up_3, call_up_2, call_up_1; /將各下降請求信號實時地合并(1樓為底層,無下降請求,考慮到通用性,將第1位填零) always (call_down_2 or call_down_3 or call_down_4 or call_down_5 or call_down_6) down_all=call_down_6, call_down_5, call_down_4, call_down_3, call_down_2, 1'b0;/將各停靠請求信號實時地合并 a

10、lways (request_1 or request_2 or request_3 or request_4 or request_5 or request_6) request_all=request_6, request_5, request_4, request_3, request_2, request_1;2、通過參數定義把信號并置的方法和有限狀態機聯系起來parameter WAIT=7'b0000001, UP=7'b0000010, DOWN=7'b0000100, UPSTOP=7'b0001000, DOWNSTOP=7'b0010

11、000, OPENDOOR=7'b0100000, CLOSEDOOR=7'b1000000;/定義樓層的符號常量 parameterFLOOR1=6'b000001,FLOOR2=6'b000010,FLOOR3=6'b000100, FLOOR4=6'b001000, FLOOR5=6'b010000, FLOOR6=6'b100000; parameter TRUE=1'b1, FALSE=1'b0;/定義門打開和門關閉的符號常量 parameter OPEN=1'b1, CLOSED=1'b

12、0;/定義電梯上升,下降和靜止的符號常量 parameter UPFLAG=2'b01,DNFLAG=2'b10,STATIC=2'b00;3、采用了七個狀態實現了有限狀態機WAITUPUPSTOPDOWNOPENDOORDOWNSTOPCLOSEDOOR圖6.狀態轉換圖黑線:WAIT TO UP TO UPSTOP TO OPENDOOR TO CLOSEDOOR TO WAIT粉紅線:WAIT TO DOWN TO DOWNSTOP TO OPENDOOR TO CLOSEDOOR TO WAIT 3.2模塊設計1、電梯主控制器模塊elevator_controll

13、er:此段智能電梯控制器由三個重要部分組成的。(a)信號并置部分,完成對5路向上請求、5路向下請求、6路內部請求的信號并置,化繁為簡。(b)三段式有限狀態機部分。在有請求的情況下,電梯控制器還要根據電梯的當前狀態和當前的樓層去判斷電梯的下一步該如何運作。(c)計數器部分。完成電梯的開門、關門的時間管理。 圖7.電梯主控模塊2、分頻模塊frequence_div:這段分頻器完成對50Mhz的1分頻操作。采用傳統的“一半就翻轉”的計數技巧。 圖8.分頻模塊3、數碼管譯碼模塊3.3波形仿真1、當電梯處于初始狀態時,電梯在高層有向下的請求時:圖92、當電梯停在6樓處于等待狀態時,在1樓和2樓同時有向上

14、的請求時:圖103、當電梯停在1樓處于等待狀態時,在6樓和5樓同時有向下的請求時:圖114、當電梯停在6樓時,有在5樓的向下的請求時,電梯應該先到五樓,電梯內部請求到1樓,如果電梯在下降的過程中,有在2樓的向上的請求時,電梯應該先相應內部請求,然后相應外部請求:圖125、電梯的強制運行按鈕forbid:圖13總結與致謝通過本次課程設計進一步熟悉Quartus II軟件的使用和操作方法,以及硬件實現時的下載方法與運行方法;對Verilog HDL語言的自頂向下設計方法有了進一步的認識,對其中的許多語句也有了新了解,掌握;對自己獨立思考和解決問題的能力也有了很大的鍛煉。短暫的課程設計就要結束了,在

15、此,感謝所有在學習和生活中給予我關心和幫助的人們。首先我要感謝楊紅娟、王濤兩位位老師,本次課程設計設計的選題、課題調研與撰寫工作實在和老師的指導下完成的。和老師淵博的知識、嚴謹的治學態度、一絲不茍的工作作風、和不厭其煩的精神對我影響至深,使我受益終生,在此我向和老師表示崇高的敬意和衷心的感謝。其次,在我的課程設計期間,同課題的同學都給予了我熱情的幫助和無私的指導,在此向這些同學們表示衷心的感謝。最后,向所有曾給予我關心和幫助的老師和同學們再次致以最衷心的感謝,向參加報告評審、答辯的老師表示衷心的感謝和崇高的敬意。參考文獻1 黃仁欣EDA技術實用教程北京:清華大學出版社,20062 潘松,黃繼業

16、EDA技術與VHDL北京:清華大學出版社,20093 江國強編著EDA技術與應用(第三版).北京:電子工業出版社,20104 夏宇聞編著Verilog HDL數字系統設計教程.北京:北京航空航天大學出版社,20085 周祖成,程曉軍,馬卓釗編著數字電路與系統教學實驗教程北京:科學出版社,20106 周潤景,蘇良碧基于Quartus II 的數字系統Verilog HDL設計實例詳解北京:電子工業出版社,20107 (美國)Sanir Palnitkar 譯者:夏宇聞 胡燕祥 刁嵐松Verilog HDL數字設計與綜合(第2版)北京:電子工業出版社,20098 云創工作室Verilog HDL程

17、序設計與實踐北京:人民郵電出版社,20099 劉福奇,劉波Verilog HDL應用程序設計實例精講北京:電子工業出版社,200910 張延偉,楊金巖,葛愛學verilog hdl程序設計實例詳解北京:人民郵電出版社,2008附錄1、分頻模塊module frequence_div(cp_50M,cp_1); input cp_50M;/板子提供的最高時鐘 output cp_1;/要求得到的秒脈沖 reg 27:0 counter_1;/計數器 reg cp_1;/類型聲明 always(posedge cp_50M) begin if(counter_1=28'h17D7840)/

18、50M的一半到了,秒脈沖翻轉 begin cp_1<=cp_1;/翻轉 counter_1<=28'h0000000; end else counter_1<=counter_1+1'b1;/否則加1 endendmodule2、智能電梯主控制模塊module elevator_controller(/input ports: cp_50M,clk,reset,forbid,call_up_1, call_up_2, call_up_3, call_up_4, call_up_5,call_down_2, call_down_3, call_down_4, c

19、all_down_5,call_down_6,request_1, request_2, request_3, request_4, request_5, request_6, /output ports:out,LiftState,over_alarm,count_out,count); /output ports: output 6:0out;/輸出樓層 output 6:0 LiftState;/輸出電梯狀態 output over_alarm;/出錯 output 6:0count_out;/計數器輸出,便于我控制開關門的狀態顯示 output 2:0count;/計數器 /input

20、 ports: input cp_50M; 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,request_3,request_4,request_5,request_6;input forbid;/pos與Posout的關系:當前狀態一改變,pos立即作相應改變,而PosOut則是當前狀態在要變到下一狀態的瞬間/,將PosOut作相應改變。如從WAIT

21、切換到第一個UP時,pos立即加一,而PosOut則要等到第一個UP/即將切換到第二個UP時,才加一。/這個說的簡單一點,就是移位寄存器,便于對電梯狀態的實時的控制wire over_alarm;wire 6:0out;wire 6:0count_out; reg 5:0pos,PosOut; reg 2:0 count;/門開后要持續5個時鐘周期,用count來計數 reg DoorFlag; reg 1:0 UpDnFlag; reg 6:0 LiftState,NextState;/分別表示電梯的當前狀態和下一狀態 wire real_clk;/up_all,down_all,reque

22、st_all分別用來合并向上請求的各信號,向下請求的各信號和停靠請求的各信號/以便判斷電梯在狀態間如何轉移時更簡潔 reg 5:0 up_all,down_all,request_all;/定義電梯7種狀態的符號常量 parameter WAIT=7'b0000001, UP=7'b0000010, DOWN=7'b0000100, UPSTOP=7'b0001000 , DOWNSTOP=7'b0010000, OPENDOOR=7'b0100000, CLOSEDOOR=7'b1000000;/定義樓層的符號常量 parameter

23、FLOOR1=6'b000001, FLOOR2=6'b000010, FLOOR3=6'b000100, FLOOR4=6'b001000, FLOOR5=6'b010000, FLOOR6=6'b100000; parameter TRUE=1'b1, FALSE=1'b0;/定義門打開和門關閉的符號常量 parameter OPEN=1'b1, CLOSED=1'b0;/定義電梯上升,下降和靜止的符號常量 parameter UPFLAG=2'b01,DNFLAG=2'b10,STATIC=2

24、'b00; assign real_clk=(clk&(forbid); /采用屏蔽時鐘的方法來實現“電梯強制禁止運行”。方法雖然違反了“同步電路最好/沒有時鐘門控”的要求,但是在此只要“負面影響”不是很大還是可以接受的。/將各上升請求信號實時地合并(6樓為頂層,無上升請求,考慮到通用性,將第4位填零) always (call_up_1 or call_up_2 or call_up_3 or call_up_4 or call_up_5) up_all=1'b0, call_up_5, call_up_4, call_up_3, call_up_2, call_up

25、_1; /將各下降請求信號實時地合并(1樓為底層,無下降請求,考慮到通用性,將第1位填零) always (call_down_2 or call_down_3 or call_down_4 or call_down_5 or call_down_6) down_all=call_down_6, call_down_5, call_down_4, call_down_3, call_down_2, 1'b0;/將各停靠請求信號實時地合并 always (request_1 or request_2 or request_3 or request_4 or request_5 or re

26、quest_6) request_all=request_6, request_5, request_4, request_3, request_2, request_1; always (posedge real_clk or posedge reset) if(reset) count<=0; else if(NextState=OPENDOOR)&&(count<5)/or else if(NextState=OPENDOOR) count<=count+1;/如果計數不到5且下一狀態為OPENDOOR的話,繼續計數 else count<=0;/

27、清零,以備下次計數 /display which floor the elevator is. display_decode h1(cp_50M,PosOut,out,over_alarm); display_decode_count h2(cp_50M,count,count_out); / finite state machine in the style of three segments ,三段式/1st StateShift always block,sequential state transition,有限狀態機第一段 always (posedge real_clk or po

28、sedge reset) if(reset) begin LiftState<=WAIT; end else LiftState<=NextState;/2nd StateShift always block,combinational condition judgement,有限狀態機第二段 always (LiftState or up_all or down_all or request_all or pos or count or UpDnFlag) case(LiftState) WAIT: begin if(request_all>0)/有停靠請求否 begin

29、if(request_all&pos)>0)/停靠請求中有當前樓層停靠請求否 NextState=OPENDOOR;/有當前樓層請求,則下一狀態轉開門 else if(request_all>pos)/有當前樓層之上的停靠請求否(優先向上的請求) NextState=UP;/有則,下一狀態轉上升 else NextState=DOWN;/只有當前樓層之下的停靠請求,下一狀態轉下降 end else if(up_all&pos)|(down_all&pos)/上下請求中有當前樓層請求否 begin NextState=OPENDOOR; end else if

30、(up_all>pos)|(down_all>pos)/上下請求中有當前樓層之上的請求否 NextState=UP; else if(up_all|down_all)/上下請求中有當前樓層之下的請求否 NextState=DOWN; else NextState=WAIT;/無任何請求,繼續處于WAIT模式 end UP: begin if(request_all&pos)|(up_all&pos)/停靠或上升請求中有當前樓層的請求否 NextState=UPSTOP;/有,下一狀態轉為UPSTOP(停靠后要1s才開門,UPSTOP即為這1s的過渡期) else i

31、f(request_all>pos)|(up_all>pos)/停靠或上升請求中有當前樓層之上的請求否 NextState=UP; else if(down_all>0)/有下降請求否 begin if(down_all>pos)&&(down_allpos)>pos)/下降請求中有當前樓層的請求否 NextState=UP; else if(down_all&pos)|(pos<FLOOR6) /其實這樣做意義不大,只是使上下標志提前變化 NextState=UPSTOP; else if(down_all&pos)&

32、;&(pos=FLOOR6)/事實上不滿足第一條件的話,電梯根本不會到達第四層 NextState=DOWNSTOP; else/下降請求中只有當前樓層之下的請求 NextState=DOWN; end else if(request_all|up_all)/只有當前樓層之上的停靠或上升請求否 NextState=DOWN; else NextState=WAIT;/無任何請求,轉為WAIT模式 end/DOWN的狀態轉移請參見UP的狀態轉移 DOWN: begin if(request_all&pos)|(down_all&pos) NextState=DOWNSTO

33、P; else if(request_all&FLOOR1)<pos&&(request_all&FLOOR1)|(request_all&FLOOR2)<pos&&(request_all&FLOOR2)|(request_all&FLOOR3)<pos&&(request_all&FLOOR3)|(request_all&FLOOR4)<pos&&(request_all&FLOOR4)|(request_all&FLOOR5)&l

34、t;pos&&(request_all&FLOOR5)|(request_all&FLOOR6)<pos&&(request_all&FLOOR6) NextState=DOWN; else if(down_all&FLOOR1)<pos&&(down_all&FLOOR1)|(down_all&FLOOR2)<pos&&(down_all&FLOOR2)|(down_all&FLOOR3)<pos&&(down_all&

35、;FLOOR3)|(down_all&FLOOR4)<pos&&(down_all&FLOOR4)|(down_all&FLOOR5)<pos&&(down_all&FLOOR5)|(down_all&FLOOR6)<pos&&(down_all&FLOOR6) NextState=DOWN; else if(up_all>0) begin if(up_all&FLOOR1)<pos&&(up_all&FLOOR1)|(up_all&am

36、p;FLOOR2)<pos&&(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&FLOOR6)<pos&&(up_all&FLOOR6) NextState=DOWN; else if(up_all

37、&pos)&&(pos>FLOOR1) NextState=DOWNSTOP; else if(up_all&pos)&&(pos=FLOOR1) NextState=UPSTOP; else NextState=UP; end else if(request_all|down_all) NextState=UP; else NextState=WAIT; end UPSTOP: begin NextState=OPENDOOR;/停靠1時鐘周期后開門 end DOWNSTOP: begin NextState=OPENDOOR;/停靠1時

38、鐘周期后開門 end OPENDOOR: begin if(count<5)/開門不足5周期,則繼續轉移到開門狀態 NextState=OPENDOOR; else NextState=CLOSEDOOR;/開門5周期后,關門 end CLOSEDOOR: begin if(UpDnFlag=UPFLAG)/開門關門前電梯是處于上升狀態嗎 begin if(request_all&pos)|(up_all&pos)/上升或停靠請求中有當前樓層的請求否,有可能關門的瞬間又有新的請求 NextState=OPENDOOR; else if(request_all>pos

39、)|(up_all>pos)/上升或停靠請求中有當前樓層之上的請求否 NextState=UP; else if(down_all>0)/有下降請求否 begin if(down_all>pos)&&(down_allpos)>pos) NextState=UP;/有當前樓層之上的下降請求,則下一狀態轉移上升 else if(down_all&pos)>0)/有當前樓層的下降請求信號,且更上層無下降請求 NextState=OPENDOOR; else/只有低于當前層的下降請求 NextState=DOWN; end else if(req

40、uest_all|up_all)/上升和停靠請求中有當前層的請求且只有當前層下的請求 NextState=DOWN; else NextState=WAIT;/無任何請求,轉為WAIT模式 end/請參考UpDnFlag=UPFLAG的注釋 else if(UpDnFlag=DNFLAG) begin if(request_all&pos)|(down_all&pos) NextState=OPENDOOR; else if(request_all&FLOOR1)<pos&&(request_all&FLOOR1)|(request_all

41、&FLOOR2)<pos&&(request_all&FLOOR2)|(request_all&FLOOR3)<pos&&(request_all&FLOOR3)|(request_all&FLOOR4)<pos&&(request_all&FLOOR4)|(request_all&FLOOR5)<pos&&(request_all&FLOOR5)|(request_all&FLOOR6)<pos&&(reques

42、t_all&FLOOR6) NextState=DOWN; else if(down_all&FLOOR1)<pos&&(down_all&FLOOR1)|(down_all&FLOOR2)<pos&&(down_all&FLOOR2)|(down_all&FLOOR3)<pos&&(down_all&FLOOR3)|(down_all&FLOOR4)<pos&&(down_all&FLOOR4)|(down_all&FLOOR5)<pos&&(down_all&FLOOR5)|(down_all&FLOOR6)<pos&&(down_all&FLOOR6) NextState=DOWN; else if(up_all>0) begin if(up_all&FLOOR1)<pos&

溫馨提示

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

評論

0/150

提交評論