• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

ISE四層電梯控制器Basys2開發(fā)板verilog 4層電梯

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1-23110621052E10.doc

共1個文件

名稱:ISE四層電梯控制Basys2開發(fā)板verilog4層電梯(代碼在文末下載)

軟件:ISE

語言:Verilog

代碼功能:

4層電梯

設(shè)計一個4層樓高的電梯自動控制系統(tǒng),要求實現(xiàn):

(1)電梯運行規(guī)則:當(dāng)電梯處于上升模式時,只響應(yīng)比電梯所在位置高的上樓請求信號,由下而上逐個執(zhí)行,直到最后一個上樓請求執(zhí)行完畢;如果高層有下樓請求,則直接升到由下樓請求的最高層,然后進(jìn)入下降模式。當(dāng)電梯處于下降模式時則與上升模式相反;

(2)電梯初始狀態(tài)為一層狀態(tài)。

(3)每層電梯入口處設(shè)有上下請求開關(guān),電梯內(nèi)設(shè)有顧客到達(dá)層次的停站請求開關(guān);

(4)設(shè)有電梯入口處設(shè)有位置指示裝置及電梯運行模式(上升或下降)指示裝置;

(5)電梯到達(dá)有停站請求的樓層,電梯門打開,開門指示燈亮,開門4秒后,電梯門關(guān)閉(開門指示燈滅)。若按下電梯內(nèi)開門按鈕,則電梯一直處于開門狀態(tài),若按下電梯內(nèi)關(guān)門按鈕,則電梯立即關(guān)門。電梯繼續(xù)進(jìn)行,直至執(zhí)行完最后一個請求信號后停留在當(dāng)前層;

(6)能記憶電梯內(nèi)外所有請求,并按照電梯運行規(guī)則按順序響應(yīng),每個請求信號保留至執(zhí)行后消除。

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

本代碼已在Basys2開發(fā)板驗證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:

basys2.png

演示視頻:

設(shè)計文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. 管腳分配

5. RTL圖

6. Testbench

7. 仿真圖

1. 自帶仿真圖

2. Modelsim仿真圖

部分代碼展示:

`timescale?1ns?/?1ps
//4層電梯
module?elevatorTop(clk,reset,open_btn,close_btn,B1U,B2D,B2U,B3D,B3U,B4D,BF1,BF2,BF3,BF4,door_led,up_led,down_led,HEX0,AN0,AN1,AN2,AN3);
????
?input?clk,reset;
?input?open_btn,close_btn;//開關(guān)門
?input?B1U,B2D,B2U,B3D,B3U,B4D,BF1,BF2,BF3,BF4;//電梯控制按鍵
????output?door_led;//門
?output?up_led;//上
?output?down_led;//下
?output?[7:0]HEX0;//數(shù)碼管顯示
?output?AN0;//數(shù)碼管位選
?output?AN1;//數(shù)碼管位選
?output?AN2;//數(shù)碼管位選
?output?AN3;//數(shù)碼管位選
?
?reg?[7:0]display;
?wire?door,?dir;
????wire?[2:0]?state;
?
????wire?[9:0]?resetButtons;
????wire?openDoor,?closeDoor,?MoveCountDone,?MoveCountEn;
????wire?C1U,C2D,C2U,C3D,C3U,C4D,G1,G2,G3,G4;
????wire?[7:0]?seconds;
????assign?seconds?=?2;
?assign?AN0=0;//數(shù)碼管低電平選選通
?assign?AN1=1;//數(shù)碼管低電平選選通
?assign?AN2=1;//數(shù)碼管低電平選選通
?assign?AN3=1;//數(shù)碼管低電平選選通
?
?assign?door_led=door;
?assign?up_led=(state[0]==1)??dir:0;//運行時候才亮
?assign?down_led=(state[0]==1)??~dir:0;//運行時候才亮
????
?//電梯控制模塊
?floorControl?fc(
?clk,
?reset,
?openDoor,
?closeDoor,
?C1U,C2D,C2U,C3D,C3U,C4D,G1,G2,G3,G4,
?MoveCountDone,MoveCountEn,
?door,dir,
?state,
?resetButtons
?);
????
?//按鍵控制模塊
?buttonControl?bc(
?{B1U,B2D,B2U,B3D,B3U,B4D,BF1,BF2,BF3,BF4},
?reset,resetButtons,
?{C1U,C2D,C2U,C3D,C3U,C4D,G1,G2,G3,G4}
?);
????
?//電梯門控制
?doorControl?dc(
?reset,
?clk,
?open_btn,
?open_btn,
?close_btn,
?door,
?openDoor,
?closeDoor
?);
????
?//秒計時
?counter?moveCount(
?reset,
?clk,
?MoveCountEn,MoveCountDone,
?seconds
?);

?
always?@(posedge?clk)
begin
case?(state)??//數(shù)字顯示碼
3'd0:?display<=?8'b1111_1001;//1
3'd2:?display<=?8'b1010_0100;//2
3'd4:?display<=?8'b1011_0000;//3
3'd6:?display<=?8'b1001_1001;//4
default:;
endcase
end
assign?HEX0=display;
?
endmodule

點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=264

  • 1-23110621052E10.doc
    下載

相關(guān)推薦