EDA電梯控制器設(shè)計_第1頁
EDA電梯控制器設(shè)計_第2頁
EDA電梯控制器設(shè)計_第3頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、陜渺理N摩俺|EDA技術(shù)綜合課程設(shè)計課程:EDA技術(shù)綜合課程設(shè)計題目:電梯控制器所屬院系:電氣工程學(xué)院專業(yè)班級:白控1304班姓名:王軍學(xué)號:1317014092指導(dǎo)老師:張立眾完成地點:陜西理工學(xué)院目錄7. 設(shè)計任務(wù)2可選器材2設(shè)計框圖2設(shè)計思路4引腳分配56程序活單9主控模塊仿真16問題及改進17總結(jié)及感受18參考文獻19設(shè)計任務(wù)1、設(shè)計一個三層的電梯控制器。2、用數(shù)碼管顯示電梯所在的樓層號,電梯初始化后狀態(tài)在第一層樓。3、每層電梯外都有上下樓請求開關(guān),電梯內(nèi)部有到各樓層的請求開關(guān)及緊急故障開關(guān);用數(shù)碼管顯示上行或下行狀態(tài),用發(fā)光二極管顯示是否有緊急情況。4、電梯每秒升(降)一層,電梯到達

2、有停站請求的樓層后,經(jīng)1秒電梯開門,開門指示燈亮,開門4秒后指示燈滅,關(guān)門,電梯繼續(xù)運行。5、當(dāng)電梯被鎖定或發(fā)生緊急情況后,電梯停止運行,直到解除鎖定或緊急故障后才可以從停止時的狀態(tài)繼續(xù)運行。6、當(dāng)電梯處于上升狀態(tài)時,只響應(yīng)比電梯所在位置高的上樓請求信號,直到最后一個上樓請求執(zhí)行完畢,再進入下降模式;同理,電梯處于下降狀態(tài)時,只響應(yīng)比電梯所在位置低的下樓請求信號,直到最后一個下樓請求執(zhí)行完畢,再進入上升模式。1. 可選器件計算機組成/ISP實驗箱一臺(含電源)電源線一根2. FPGA/CPLD下載板一塊(或多塊,可選)(其中下載版選擇以下型號CycloneEP1C6Q240C8)并行口下載電纜

3、一根電壓表棒一付實驗指導(dǎo)書一份配套集成電路芯片若十設(shè)計框圖系統(tǒng)主要分為:主控制模塊control,包含狀態(tài)機,控制電梯的運行及狀態(tài)轉(zhuǎn)換;消抖模塊unshakq消除開關(guān)電路的抖動現(xiàn)象,確保邏輯的正確性;顯示模塊display,內(nèi)含譯碼功能,配合控制器顯示電梯的工作狀態(tài)模塊框圖見圖1,總體框圖詳見圖2L呻ntitamnuptiwcdcxritokckltghtdodvnthrs!pfl.JDjse1時云叫僵EWClighEd4*n尊.而thTHsrnv«Q¥trkwk*_!Ti!i傾1圖1各模塊框圖“33?篇胃blHI'HLEblEJHR一信:£HTrmFFL

4、FnuX芝一-¥1電r-a"n'ilT-O§苗=1r£-SVE3的=1巖.1膏=(J_$"b£mKS3U:.',:£-.":.!:An_善w專§”,1.Arilll'-1bJ,i住TikDd:idt71XTL|k1MLvl1iE專*i"s9專1-HI,l:»rt碩t*TrliTlnu'rE*1?-.'-A當(dāng)史-豆苫一TU器|一冒室:i擊L|運蘭。阜L'1ftr.1Q蜃芒圖2系統(tǒng)總體框圖孕rr3E一長莒翌一S*京低61«.:_jS

5、耳A1. 設(shè)計思路對于電梯控制邏輯的實現(xiàn),主要是控制模塊control,故下面主要介紹控制模塊control的設(shè)計思想。控制模塊control有一個進程k1,其中乂設(shè)置了一個計數(shù)變量cnt,范圍為1-200000CL計數(shù)變量cnt其實是起到分頻器的作用,產(chǎn)生了一個1HZ勺時鐘,在cnt計數(shù)200000啾的時間內(nèi)(即1s),運行控制電梯升降、停留的程序,這些部分相當(dāng)于以1HZI勺時鐘觸發(fā);而系統(tǒng)主頻時鐘2MH作為觸發(fā)時鐘不斷檢測用戶是否有請求輸入,或者電梯是否有異常情況。對于一、二、三層信號,分別由flag1、flag2、flag3和clear1、clear2、clear3兩套標(biāo)志為來控制輸入請

6、求是否有效,是否應(yīng)該對標(biāo)志位活零。2. 主要規(guī)則是:當(dāng)一層(upone、one)、二層(uptwo、downtwotwo)或三層(downthree、three)的輸入信號有效時,相應(yīng)標(biāo)志位flag1、flag2、flag3置T,表明該層有請求。當(dāng)一層(upone、one)、二層(uptwo、downtwotwo)或三層(downthree、three)的輸入信號無效時,相應(yīng)標(biāo)志位clear1、clear2、clear3置1,表明相應(yīng)得到達樓層請求已經(jīng)在上一個時鐘沿完成;同時對應(yīng)的標(biāo)志位flag1、flag2、flag3置、,表明相應(yīng)樓層無請求。updown信號值為T時表明電梯處于上升狀態(tài),為

7、0'時處于下降狀態(tài)。程序有兩個信號表示電梯的狀態(tài):一是位置狀態(tài),二是運行狀態(tài)。position表明電梯的位置狀態(tài),是一個取值13的整數(shù),分別表示電梯處于第一、二、三層;state表示電梯的運行狀態(tài),使枚舉數(shù)據(jù)類型,共10個值,分別是:-states為電梯所處的各個狀態(tài)-up1表示電梯正在從第1層上升-up2表示電梯正在從第2層上升-down1表示電梯正在向第1層下降-down2表示電梯正在向第2層下降-stop表示電梯停止在某一層上-dw1表示電梯開門的第一秒-dw2表示電梯開門的第二秒-dw3表示電梯開門的第三秒-dw4表示電梯開門的第四秒,判斷電梯的下一個狀態(tài)-dw5表示當(dāng)電梯處于

8、上升或下降狀態(tài)時,如果沒有相應(yīng)的上升或下降請求信號,則轉(zhuǎn)入dw5狀態(tài),使其不再在上升或下降狀態(tài)停留,而響應(yīng)其它信號程序利用case語句實現(xiàn)這10個狀態(tài)間的相互轉(zhuǎn)移。引腳分配詳見下圖狀態(tài)流程圖1、頂層流程圖解否2、以下是較具體的狀態(tài)轉(zhuǎn)化圖程序活單丫肖抖模塊(程序分兩欄排版)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityunshakeisport(clk:instd_logic;-時鐘,10HZ;key:instd_logic;-開關(guān)信號

9、;keyout:outstd_logic);-消抖之后的開關(guān)信號end;architectureaofunshakeissignalcp:std_logic;signaljsp:integerrange0to3;beginprocess(clk)beginif(clk'eventandclk='1')thenifkey='1'thenifjsp=3thenjsp<=jsp;elsejsp<=jsp+1;endif;ifjsp=1thencp<='1'elsecp<='0'endif;elsejsp&

10、lt;=0;endif;endif;keyout<=cp;endprocess;end;顯示模塊(程序分兩欄排版)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitydisplayisport(clk:instd_logic;iflight=1thendisp<="1001111"elsiflight=2thendisp<="0010010"elsiflight=3thendisp&

11、lt;="0000110"endif;endif;endprocess;serout<=disp;end;light:inintegerrange1to3;serout:outstd_logic_vector(6downto0);end;architectureaofdisplayissignaldisp:std_logic_vector(6downto0);beginprocess(clk)beginif(clk'eventandclk='1')then主控模塊libraryieee;useieee.std_logic_1164.all;us

12、eieee.std_logic_unsigned.all;useieee.std_logic_arith.all;_*entitycontrolisport(upone,uptwo,downtwo,downthree:instd_logic;-電梯夕卜乘客的請求信號one,two,three:instd_logic;-電梯內(nèi)乘客的請求上或下至幾層樓的信號reset:instd_logic;-復(fù)位初始化開關(guān)over,emergency,lock:instd_logic;-超重、緊急停運和上鎖信號clk:instd_logic;-時鐘信2MHzalarm,ovelight,locklight:ou

13、tstd_logic;-故障、超重及鎖定提示燈p:outintegerrange1to3;-電梯當(dāng)前位置lightup,lightdown:outstd_logic_vector(6downto0);-lightup顯示'u'則電梯在上升模式,-lightdown顯示'd'則電梯在下降模式;arrive:outstd_logic);-arrive為'1'時表明電梯到達樓層,并在開門狀態(tài)end;*architecturebehaveofcontrolistypestatesis(up1,up2,down1,down2,stop,dw1,dw2,dw

14、3,dw4,dw5);-states為電梯所處的各個狀態(tài)-up1表示電梯正在從第1層上升-up2表示電梯正在從第2層上升-down1表示電梯正在向第1層下降-down2表示電梯正在向第2層下降-stop表示電梯停止在某一層上-dw1表示電梯開門的第一秒-dw2表示電梯開門的第二秒-dw3表示電梯開門的第三秒-dw4表示電梯開門的第四秒,判斷電梯的下一個狀態(tài)-dw5表示當(dāng)電梯處于上升或下降狀態(tài)時,如果沒有相應(yīng)的上升或下降請求信號,則轉(zhuǎn)入-此dw5狀態(tài),使其不再在上升或下降狀態(tài)停留,而響應(yīng)其它信號signalstate:states;signalClear1,clear2,clear3,flag1

15、,flag2,flag3,fl1,fl2,fl3:std_logic;-這些都是標(biāo)志位,控制電梯的狀態(tài)轉(zhuǎn)換-flag1、flag2、flag3代表各層相應(yīng)的請求信號-clear1、clear2、clear3代表相應(yīng)層的請求已經(jīng)完成,可以接收新的任務(wù)signalposition:integerrange1to3;-電梯的當(dāng)前停留位置signallup,ldown:std_logic_vector(6downto0);-與lightup和lightdown功能相同signalarr:std_logic;-與arrive功能相同signalala,ov,loc:std_logic;-與alarm,o

16、vlight,locklight功能相同begink1:process(clk)variablecnt:integerrange1to2000000;variableupdown:std_logic;beginif(clk'eventandclk='1')thenif(upone='1'orone='1')thenflag1<='1'elsifclear1='1'thenflag1<='0'endif;if(uptwo='1'ordowntwo='1fla

17、g2<='1'elsifclear2='1'thenflag2<='0'-此變量表明電梯處于上升或下降狀態(tài)endif;if(downthree='1'orthree='1')then-flag3<='1'elsifclear3='1'thenflag3<='0'endif;-一層有上樓請求-一層的請求已完成-當(dāng)沒有新請求信號則清零ortwo='1')then-二層有請求-二層的請求已完成-當(dāng)沒有新請求信號則二層清零三層有請求-三

18、層的請求已完成-當(dāng)沒有新請求信號則三層清零if(emergency='1')thenala<='1'elsif(over='1')thenov<='1'elsif(lock='1')thenloc<='1'endif;ifcnt<2000000then-通過計數(shù)2000000獲得1s的時鐘信號cnt:=cnt+1;-計數(shù)信號小于20000000則加1elseifreset='1'then-復(fù)位時,電梯初值設(shè)置在一層,狀態(tài)為stopposition<=1;

19、state<=stop;ovelight<='0'-各狀態(tài)指示燈均滅locklight<='0'alarm<='0'lup<="1111111”;ldown<="1111111"elsefl1<=flag1;fl2<=flag2;fl3<=flag3;-fl1、fl2、fl3置'1'表示相應(yīng)樓層有請求信號,并把相應(yīng)的任務(wù)完成信號clear-置'0',表示有新的任務(wù)等待完成if(fl1='1')thenclear1&l

20、t;='0'endif;if(fl2='1')thenclear2<='0'endif;if(fl3='1')thenclear3<='0'endif;casestateis-狀態(tài)機描述whenup1=>up1:正在從一層上升iffl2='0'then-若上升期間二層期間無請求,則直接上三層clear1<='0'clear3<='0'state<=up2;position<=2;elsestate<=stop;posit

21、ion<=2;fl2<='0'-完成了對二層請求的響應(yīng);clear2<='1'endif;whenup2=>up2:正在從二層上升clear1<='0'clear2<='0'state<=stop;position<=3;ifposition=2then-如果電梯在第二層position<=3;-那么下一個位置在第三層fl3<='0'-完成了對第三層請求的相應(yīng)clear3<='1'elsifposition=1then-如果電梯在第一

22、層position<=2;-那么下一個位置在第二層fl2<='0'-二層的請求已經(jīng)完成clear2<='1'endif;whendown1=>-正在向第一層下降clear2<='0'clear3<='0'state<=stop;-下一狀態(tài)是stopifposition=2then-如果電梯在第二層position<=1;-那么下一個位置在第一層fl1<='0'-一層的請求已經(jīng)完成clear1<='1'elsifposition=3thenp

23、osition<=2;fl2<='0'clear2<='1'endif;whendown2=>-正在向第二層下降-如果在下降期間,二層沒有請求,就直接下到一層iffl2='0'thenclear1<='0'clear3<='0'-下一狀態(tài)轉(zhuǎn)至down1,電梯將會再下降一層state<=down1;position<=2;-電梯的下一個位置在第二層elsestate<=stop;-若下降期間二層有請求,則在二層停下position<=2;-位置轉(zhuǎn)至二層fl2

24、<='0'-完成了對二層請求的響應(yīng)clear2<='1'endif;whenstop=>-在停止?fàn)顟B(tài)if(emergency='1'orover='1')thenstate<=stop;elsestate<=dw1;-下一狀態(tài)轉(zhuǎn)至dw1,電梯會進入開門狀態(tài)arr<='1'-arr置'1',表明電梯到達并開門lup<="1111111”;-上升指示燈滅ldown<="1111111"-下降指示燈滅endif;whendw1=

25、>-在dw1狀態(tài)時,等待1sstate<=dw2;-下一狀態(tài)轉(zhuǎn)至dw2whendw2=>state<=dw3;whendw3=>state<=dw4;whendw4=>arr<='0'-開門燈滅ifposition=1then-如果電梯在第一層updown:='1'-則進入上升模式fl1<='0'-一層的任務(wù)完成clear1<='1'iffl2='1'then-如果二層有請求state<=up1;-先響應(yīng)二層的請求,再響應(yīng)上升一層的請求arr<

26、='0'-維持燈熄滅狀態(tài)lup<="1000001"-上升燈亮,顯示字母'U'elsiffl3='1'then-若三層有請求state<=up1;-響應(yīng)完二層請求信號后,再響應(yīng)第三層的請求arr<='0'-開門燈維持熄滅狀態(tài)lup<="1000001"-上升燈亮,顯示字母'U'endif;elsifposition=3thenupdown:='0'-進入下降狀態(tài)fl3<='0'-到達三層的任務(wù)已完成clear3&l

27、t;='1'iffl2='1'then-若二層有請求state<=down2;-先響應(yīng)二層請求,再轉(zhuǎn)入下降一層的狀態(tài)arr<='0'ldown<="1000010"-下降燈亮,顯示d'elsiffl1='1'thenstate<=down2;-響應(yīng)完二層請求信號后再響應(yīng)一層的請求arr<='0'ldown<="1000010”;endif;elsifposition=2thenfl2<='0'-到達二層的任務(wù)已經(jīng)完成cl

28、ear2<='1'ifupdown='1'then-當(dāng)電梯處于上升狀態(tài),不響應(yīng)一層的請求iffl3='1'thenstate<=up2;arr<='0'lup<="1000001”;elsestate<=dw5;-若三層無請求,就轉(zhuǎn)至dw5狀態(tài)endif;endif;ifupdown='0'then-當(dāng)處于下降狀態(tài),不響應(yīng)三層的請求iffl1='1'thenstate<=down1;arr<='0'ldown<="1

29、000010"-下降燈亮,顯示'd'elsestate<=dw5;-若一層無請求,就轉(zhuǎn)至dw5狀態(tài)endif;endif;endif;whendw5=>-只要到了dw5的狀態(tài),無論原來處于上升或下降狀態(tài),對三層和一層的信號都可相響應(yīng)iffl3='1'thenstate<=up2;arr<='0'lup<="1000001"-上升燈亮,顯示字母'U'elsiffl1='1'thenstate<=down1;arr<='0'ldow

30、n<="1000010"-下降燈亮,顯示d'endif;endcase;cnt:=1;-進程完成一次全部的狀態(tài)、條件判斷并執(zhí)行相應(yīng)操作后,計數(shù)信號重endif;alarm<=ala;ovelight<=ov;locklight<=loc;endif;endif;endprocess;p<=position;-給輸出信號賦值lightup<=lup;lightdown<=ldown;1. arrive<=arr;end;主控模塊仿真由于顯示和消抖模塊為通用模塊,在此不再贅述仿真結(jié)果,主要給出主控模塊的仿真分析為便于仿真,

31、將主控模塊control單列為一個工程,并把計數(shù)變量cnt的值由2000000改為2。jjJfoinUr:-15.31nsSt*rt.En4:Value17.7S_ZalarnviarriveIT0gelkT1wdomthr垂V0djovntvoVDIT0W011ehii&tftU6(HligjitupU65IwkITJloflkLigitV1oneroovelijhtLIoverITJ竺pir。IFresetIT0業(yè)thrt«¥0WtwouponeV0ITD至uptwoIT0HamUtlintBir:H.75ni0H_OLSimuktionWaveformsC.0

32、心17.75ns-Juw8010nsI123.0心.300.0nii240C心28C.0heI22D.0tsi復(fù)位后到簽等畿|SSujuuuuuuuiiwwinnmuiiniuwnnmnmMinmu柘空密冗信號百以m睛虹運行亙習(xí)瞠院5512712701門iEL內(nèi)部看二覷三L層芯我:溢甯旨焙配唁號無效扃電梯曰奇止前的搗罐樣運.不序,直羞下降到i房才開說明:用數(shù)碼管顯示上升和下降狀態(tài)時分別顯示的是字母U'和d'。由于是共陽極數(shù)碼管,所以低電平亮。顯示U'時,數(shù)碼管編碼為“1000001”即十進制65;顯示d'時,數(shù)碼管編碼為“1000010”即十進制66;數(shù)碼管熄滅

33、時,編碼為“1111111”,即十進制127;對照以上仿真圖形可以檢驗上行、下行狀態(tài)燈的正確運行。問題及改進以下將討論一下本次實驗中遇到的一些問題,已經(jīng)改進的部分和尚未完善的部分。1、開始設(shè)計時由于未經(jīng)老師指導(dǎo),所以設(shè)置了過多的繁瑣狀態(tài),共計10個,包括dw1、dw2和dw3這幾個空閑狀態(tài),它們唯一的作用就是占用1秒鐘的時間來作為電梯到站開門的等待狀態(tài)。事實上,若用開門、上行、下行、停止等較精簡的幾個狀態(tài)也可以完成設(shè)計任務(wù),而且對于以后擴展更多的樓層也是很有利的。而自己目前的設(shè)計只能用于三層電梯,一旦要求擴展層數(shù),便會遇到很大困難。我會在之后的學(xué)習(xí)中自行學(xué)習(xí)思考如何用老師所建議的狀態(tài)設(shè)置方法來

34、實現(xiàn)4層電梯控制器。2、在老師幫助修改代碼的過程中,發(fā)現(xiàn)了一些不必要的冗余代碼,如:fl1<=flag1;fl2<=flag2;fl3<=flag3;事實上,這種重復(fù)賦值是由于后來改進方案而忘記處理之前的程序造成的。具體如下:開始設(shè)計時,我采用了分頻器,將主頻2MHz的時鐘進行2000000分頻分出一個1Hz的信號。兩個時鐘(主頻2Mhz和1Hz)分別以其上升沿控制兩個進程k1和k2的運行。其中k1由2MHz時鐘觸發(fā),控制各輸入請求信號和改變狀態(tài)機的信號,使電梯無論什么時候都快速響應(yīng)各種操作。k2由1Hz時鐘出發(fā),控制電梯的升降及停留。之后經(jīng)老師建議,我將分頻器模塊去掉,也就

35、是說全部系統(tǒng)只有一個主頻時鐘2MHz來觸發(fā)。而內(nèi)部需要控制的升降、停留、開門等待的時間,就由一個計數(shù)變量cnt來控制,cnt每計數(shù)2000000次,則時間經(jīng)過1s。這樣,原來的兩個進程就壓縮為一個,進程k2就被略去了,而原來的flag信號是在進程k1中被賦值,進程k2中分別又賦值給了相應(yīng)的fl信號,所以刪除進程k2后就多出了下面的這些語句,fl1<=flag1;fl2<=flag2;fl3<=flag3;雖然不妨礙程序的正確運行,但是給代碼的可讀性打了折扣,這是在以后的編程中應(yīng)當(dāng)力圖避免的。3、同樣是因為刪除了k2進程,之后沒有再改變以前的代碼順序,使得reset,即復(fù)位功能

36、被寫在了時序代碼的部分,和緊急故障及超重狀態(tài)的判斷變成了并行關(guān)系。也就是說reset功能的優(yōu)先級降低了,reset功能應(yīng)當(dāng)是異步的,一旦有效,系統(tǒng)立刻停止運行,并所存當(dāng)前狀態(tài)。而現(xiàn)在,reset功能在沒有緊急故障(或故障消除)或無超重狀態(tài)時才會有效,而且為使系統(tǒng)能夠響應(yīng),信號必須至少維持1s的時間。4、在開始的程序設(shè)計中犯了一個小錯誤,就是電梯如果從一層直接上升到三層(即二樓無請求)時,到達二樓是不會停站開門的,而我忘記了這一點,設(shè)計成了每到一層都會有4s的開門等待時間。在之后的修改過程中及時發(fā)現(xiàn)了這個問題,并把狀態(tài)機的轉(zhuǎn)換過程進行了相應(yīng)的修改,順利修正了這個錯誤。5、從仿真波形來看,復(fù)位功能

37、鍵是有效的,即復(fù)位之后電梯會停止在一層,但是在實際電路的運行中,所有功能都可以很完善地實現(xiàn),唯獨復(fù)位鍵無效。在更換了另一套實驗箱之后,發(fā)現(xiàn)reset功能可以實現(xiàn),但是復(fù)位之后系統(tǒng)便無法相應(yīng)其他的請求了,這都是和仿真結(jié)果相悖的。事實上,可能存在以下問題:在代碼編譯的過程中,沒有報告錯誤,即Error;但是會有很多警告,即Warning很多情況下,Warning會給出類似這樣的指示W(wǎng)arning:OutputpinsarestuckatVCCorGNDWarning:Designcontains1inputpin(s)thatdonotdrivelogicWarning:Following7pinshavenothin

溫馨提示

  • 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

提交評論