基于FPGA的三層電梯_第1頁(yè)
基于FPGA的三層電梯_第2頁(yè)
基于FPGA的三層電梯_第3頁(yè)
基于FPGA的三層電梯_第4頁(yè)
基于FPGA的三層電梯_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 基于FPGA(verilog)編寫(xiě)的三層電梯一、需求分析;1、問(wèn)題描述與要求:用Verilog語(yǔ)言設(shè)計(jì)一個(gè)電梯控制器,通過(guò)實(shí)驗(yàn)板對(duì)設(shè)計(jì)進(jìn)行演示;要求樓層的高度大于等于,并且所設(shè)計(jì)的電梯調(diào)度算法滿足提高服務(wù)質(zhì)量、降低運(yùn)行成本的原則,電梯每2s上升或下降一層,關(guān)門(mén)需要2s,電梯開(kāi)門(mén)維持4s,電梯超載后蜂鳴器會(huì)響,報(bào)警。二、系統(tǒng)描述;1、考慮到板上的資源利用情況,設(shè)定電梯控制器適用的樓層為3層.2、在電梯的內(nèi)部有一個(gè)控制面板,它負(fù)責(zé)按下請(qǐng)求到的樓層,并且顯示當(dāng)前尚未完成的目的地請(qǐng)求,當(dāng)?shù)竭_(dá)該樓層以后自動(dòng)撤銷本樓層的請(qǐng)求,即將面板燈熄滅.3、除1層和3層分別只有上/下按鈕外

2、,每個(gè)樓層(電梯門(mén)口旁)的召喚面板都有兩個(gè)按鈕,分別指示上樓和下樓請(qǐng)求。4、電梯的外部面板會(huì)顯示電梯當(dāng)前所在的樓層,及上行還是下行(暫停顯示剛才運(yùn)行時(shí)的狀態(tài)).當(dāng)電梯在運(yùn)行時(shí),對(duì)應(yīng)的樓層燈間固定顯示一段時(shí)間進(jìn)入下一樓層。 5、電梯調(diào)度方案:電梯向一個(gè)方向運(yùn)行時(shí),只對(duì)本方向前方的請(qǐng)求進(jìn)行應(yīng)答,直到本方向前方無(wú)請(qǐng)求時(shí),才對(duì)反方向的請(qǐng)求進(jìn)行應(yīng)答。當(dāng)前內(nèi)部控制面板上有的請(qǐng)求,只要經(jīng)過(guò)所在樓層均會(huì)立即響應(yīng).在所有內(nèi)部外部請(qǐng)求都已完成后,電梯轉(zhuǎn)入等待。電梯模型:(如下附圖)第層每樓層的召喚按鈕面板,顯示信息有:當(dāng)前電梯所在位置(樓層)和電梯的運(yùn)行方向(上下)控制信息:使用電梯的請(qǐng)求(向上或向下)第層第層電

3、梯電梯內(nèi)部的控制面板,顯示信息有:電梯當(dāng)前的位置和電梯當(dāng)前的運(yùn)行方向(上下),以及請(qǐng)求到達(dá)的樓層控制信息有:請(qǐng)求要到達(dá)的目的樓層三,功能模塊劃分1, 分頻模塊:50Mhz的系統(tǒng)時(shí)鐘輸入,經(jīng)過(guò)分頻后產(chǎn)生1KHZ的時(shí)鐘和0.5hz的時(shí)鐘,1KHZ的時(shí)鐘用于采集按鍵信號(hào),按鍵的消抖和顯示模塊中數(shù)碼管的動(dòng)態(tài)掃描。 0.5hz的時(shí)鐘用于主控制模塊的的工作時(shí)鐘,電梯每2s上升或下降一層,電梯開(kāi)門(mén)維持4s,關(guān)門(mén)需要2s。2, 按鍵消抖模塊:由于按鍵在按下的過(guò)程中有抖動(dòng)的現(xiàn)象,會(huì)影響信號(hào)的采集結(jié)果,所以有必要對(duì)按鍵進(jìn)行消抖,消抖模塊為: 3, 報(bào)警模塊:電梯開(kāi)門(mén)后,如果電梯超載則蜂鳴器響,報(bào)警 報(bào)警模塊為:4

4、, 寄存器模塊:用于對(duì)采集的按鍵信號(hào)進(jìn)行保存,供后面的主控制模塊分析,采樣頻率為1khz,寄存器模塊為: 5, 主控制模塊:該模塊為整個(gè)設(shè)計(jì)的核心,控制電梯的運(yùn)行情況;主控制模塊為:6, 顯示模塊:該模塊用于將主控制的模塊的輸出數(shù)據(jù)進(jìn)行譯碼顯示,顯示模塊為:7, 主控制模塊的功能分析:將主控制模塊分為5個(gè)狀態(tài),idle(等待),ceng1(第一層),ceng2(第二層),ceng3(第三層),kai(開(kāi)門(mén)),主要通過(guò)這幾個(gè)狀態(tài)之間的轉(zhuǎn)變來(lái)實(shí)現(xiàn)電梯的工作情況8, 板上硬件介紹:按鍵:sw1為一層的上升請(qǐng)求,sw2為二層的上升請(qǐng)求,sw3為二層的下降請(qǐng)求,sw4為三層的下降請(qǐng)求,sw5為超載信號(hào)輸

5、入,sw6為選擇第一層,sw7為選擇第二層,sw8為選擇第三層.數(shù)碼管:左邊三個(gè)數(shù)碼管分別顯示各層電梯所處的狀態(tài),為0時(shí)表示空閑等待狀態(tài),為1時(shí)表示下降,為2時(shí)表示上升,第4,5,6個(gè)數(shù)碼管為各層顯示電梯處于的層數(shù),第7個(gè)數(shù)碼管為電梯內(nèi)部顯示電梯所在層數(shù),第8個(gè)數(shù)碼管為內(nèi)部顯示電梯的工作方式,為0時(shí)表示空閑等待狀態(tài),為1時(shí)表示下降,為2時(shí)表示上升。Led燈:最左邊的led指示電梯門(mén)的開(kāi)關(guān)情況,亮?xí)r表示處于開(kāi),滅時(shí)表示處于關(guān);最右邊的led指示超載時(shí)的報(bào)警燈顯示四,整個(gè)設(shè)計(jì)的程序1. 分頻模塊的程序:module fenpin(clk,clk_1khz,clk0_5hz);input clk;o

6、utput clk_1khz,clk0_5hz;reg clk_1khz_r,clk0_5hz_r;reg14:0counter;reg9:0cnt;assign clk_1khz=clk_1khz_r;assign clk0_5hz=clk0_5hz_r; always(posedge clk)beginif(counter=15'd24999)beginclk_1khz_r<=clk_1khz_r;counter<=0;endelsecounter<=+counter+1'b1;endalways(posedge clk_1khz)beginif(cnt=

7、10'd999)beginclk0_5hz_r<=clk0_5hz_r;cnt<=0;endelsecnt<=cnt+1'b1;endendmodule2. 報(bào)警模塊的程序: module beep(clk,load, beep,led); input clk,load; output beep,led; reg beep_r,load_flag,load_reg;reg22:0count,count_end;assign beep=beep_r;assign led=load_reg;initialbeginbeep_r<=1'b0;load_

8、flag<=1'b0;load_reg<=1'b1;endalways(posedge clk)begincount<=count+1'b1;if(count=count_end)begincount<=0;if(load_flag=1'b1)beep_r<=beep_r;elsebeep_r<=1'b0;endendalways(count10:9 or load or load_reg)beginload_reg<=load;if(load_reg!=1'b1)beginload_flag<=1

9、'b1;count_end<=20'd12655;/gaoyinendelsebeginload_flag<=1'b0;count_end<=20'hfffff;endendendmodule3. 寄存器模塊的程序 module register(clk,clr,out1_up,out2_up,out2_down,out3_down,key1,key2,key3,out1_up_r,out2_up_r,out2_down_r,out3_down_r,key1_r,key2_r,key3_r);input clk,clr,out1_up,out2

10、_up,out2_down,out3_down,key1,key2,key3;output out1_up_r,out2_up_r,out2_down_r,out3_down_r,key1_r,key2_r,key3_r;reg out1_up_rr,out2_up_rr,out2_down_rr,out3_down_rr,key1_rr,key2_rr,key3_rr;assign out1_up_r=out1_up_rr;assign out2_up_r=out2_up_rr;assign out2_down_r=out2_down_rr;assign out3_down_r=out3_d

11、own_rr;assign key1_r=key1_rr;assign key2_r=key2_rr;assign key3_r=key3_rr;always(posedge clk)beginif(!clr)beginout1_up_rr<=1'b1;out2_up_rr<=1'b1;out2_down_rr<=1'b1;out3_down_rr<=1'b1;key1_rr<=1'b1;key2_rr<=1'b1;key3_rr<=1'b1;endelsebeginout1_up_rr<=

12、out1_up;out2_up_rr<=out2_up;out2_down_rr<=out2_down;out3_down_rr<=out3_down;key1_rr<=key1;key2_rr<=key2;key3_rr<=key3;endendendmodule4. 主控制模塊的程序 module control(clk,clr,out1_up_r,out2_up_r,out2_down_r,out3_down_r,key1_r,key2_r,key3_r,deng,LED_OUT_1,LED_OUT_2,LED_OUT_3,LED_IN,MODE_IN

13、,MODE_OUT_1,MODE_OUT_2,MODE_OUT_3);input clk,clr,out1_up_r,out2_up_r,out2_down_r,out3_down_r,key1_r,key2_r,key3_r;output deng;output 3:0LED_OUT_1,LED_OUT_2,LED_OUT_3,LED_IN,MODE_IN,MODE_OUT_1,MODE_OUT_2,MODE_OUT_3; reg3:0LED_r; reg3:0 mode;/電梯的工作模式,上升還是下降 reg x,y,led;reg2:0state;reg cnt,clk_05hz_r;r

14、eg 2:0counter4s;/4s計(jì)數(shù)器reg3:1up,down,ting;wire3:0temp;parameter idle=3'b000,ceng1=3'b001,ceng2=3'b010, ceng3=3'b011,kai=3'b100; assign temp=out1_up_r,out2_up_r,out2_down_r,out3_down_r; assign deng=led;/指示門(mén)的開(kāi)關(guān)狀態(tài),亮表示開(kāi),否則關(guān)assign LED_IN=LED_r;/電梯內(nèi)部指示層數(shù)assign LED_OUT_1=LED_r;/電梯外部一層指示層

15、數(shù)assign LED_OUT_2=LED_r;/電梯外部二層指示層數(shù)assign LED_OUT_3=LED_r;/電梯外部三層指示層數(shù)assign MODE_IN=mode;/電梯內(nèi)部電梯狀態(tài)指示assign MODE_OUT_1=mode;/電梯外部一層狀態(tài)指示assign MODE_OUT_2=mode;/電梯外部二層狀態(tài)指示assign MODE_OUT_3=mode;/電梯外部三層狀態(tài)指示initialbeginup<=3'b000;down<=3'b000;ting<=3'b000;endalways(posedge clk or neg

16、edge clr)beginif(!clr)beginstate<=idle;endelsebeginif(out1_up_r=1'b0)up1<=1'b1;if(out2_up_r=1'b0)up2<=1'b1;if(out3_down_r=1'b0)down3<=1'b1;if(out2_down_r=1'b0)down2<=1'b1;if(key1_r=1'b0)ting1<=1'b1;if(key2_r=1'b0)ting2<=1'b1;if(key

17、3_r=1'b0)ting3<=1'b1;case(state)idle:beginLED_r<=4'd1;mode<=4'd0;/空閑led<=1'b0;/處于guanif(temp!=4'b1111)beginmode<=4'd2;/上升state<=ceng1;/任何請(qǐng)求都會(huì)破壞初態(tài)endelsestate<=idle;endceng1:beginLED_r<=4'd1;mode<=4'd2;/上升if(up1=1'b1 | ting1=1'b1

18、)beginstate<=kai;ting1<=1'b0;up1<=1'b0;endelse if(up2=1'b1 | ting2=1'b1)state<=ceng2;else if(down3=1'b1 | ting3=1'b1)beginstate<=ceng2;x<=1'b1;endelse if(down2=1'b1 | ting2=1'b1 )beginstate<=ceng2;mode<=4'd2;endelsestate<=idle;endcen

19、g2: beginLED_r<=4'd2;if(mode=4'd2)/上升beginif(up2=1'b1 | ting2=1'b1)beginstate<=kai;up2<=1'b0;ting2<=1'b0;endelse if(down3=1'b1 | ting3 | x=1'b1)beginstate<=ceng3;x<=1'b0;endelse if(down2=1'b1 | up1=1'b1 | ting1=1'b1)mode<=4'd1;

20、/處于下降elsebeginmode<=4'd0;state<=ceng2;endendelse if(mode=4'd1)/下降beginif(up2=1'b1)|(ting2=1'b1)| (down2=1'b1)beginstate<=kai;ting2<=1'b0;down2<=1'b0;up2<=1'b0;endelse if(up1=1'b1) | (ting1=1'b1) | (y=1'b1)beginstate<=ceng1;y<=1'

21、b0;endelse if(up2=1'b1) | (down3=1'b1) |( ting3=1'b1)beginmode<=4'd2;/上升state<=ceng3;endelsebeginmode<=4'd0;state<=ceng2;endendendceng3:begin/mode<=4'd2;/shangshenLED_r<=4'd3;if(ting3=1'b1)| (down3=1'b1)beginmode<=4'd0;state<=kai;ting3&

22、lt;=1'b0;down3<=1'b0;endelse if(down2=1'b1) | (ting2=1'b1)beginmode<=4'd1;state<=ceng2;endelse if(up1=1'b1) | (ting1=1'b1)beginmode<=4'd1;y<=1'b1;state<=ceng2;endelse if(up2=1'b1)beginmode<=4'd1;/下降state<=ceng2;endelsebeginmode<=

23、4'd0;/下降state<=ceng3;endendkai:beginif(counter4s<3'd2)/開(kāi)4sbeginled<=1'b1;counter4s<=counter4s+1'b1;endelsebeginled<=1'b0;counter4s<=0;if(LED_r=4'd1)state<=ceng1;else if(LED_r=4'd2)state<=ceng2;else if(LED_r=4'd3)state<=ceng3;endenddefault:st

24、ate<=idle;endcaseendendendmodule5. 顯示模塊的程序 module dispaly(clk_1khz,LED_OUT_1,LED_OUT_2,LED_OUT_3,LED_IN,MODE_OUT_1,MODE_OUT_2,MODE_OUT_3,MODE_IN,dout,sel);input clk_1khz;input3:0LED_OUT_1,LED_OUT_2,LED_OUT_3,LED_IN,MODE_OUT_1,MODE_OUT_2,MODE_OUT_3,MODE_IN;output7:0dout,sel;reg7:0dout_r,sel_r;reg3

25、:0data;reg2:0counter;assign dout=dout_r;assign sel=sel_r;always(posedge clk_1khz)beginif(counter=3'd7)counter<=0;elsecounter<=counter+1'b1;endalways(posedge clk_1khz)begincase(counter)3'd0:data<=MODE_IN;3'd1:data<=LED_IN;3'd2:data<=LED_OUT_3;3'd3:data<=LED_OUT_2;3'd4:data<=LED_OUT_1;3'd5:data<=MODE_OUT_3;3'd6:data<=MODE_OUT_2;3'd7:data<=MODE_OUT_1;default:data<=4'b1010;endcaseendalways(posedge clk_1khz)begincase(count

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論