名稱:電梯請求顯示系統(tǒng)Verilog代碼Quartus實(shí)驗(yàn)箱
軟件:Quartus
語言:Verilog
代碼功能:
電梯請求顯示系統(tǒng)
二、題目要求:
(1)按鍵S1為一樓上行請求按鈕,按鍵S2為二樓上行請求按鈕,按鍵S3為三樓上行請求按鈕,按鍵S4為四樓上行請求按鈕,按鍵S5為五樓上行請求按鈕,按鍵S6為六樓上行請求按鈕;撥動(dòng)開關(guān)K2為二樓下行請求按鈕,撥動(dòng)開關(guān)K3為三樓下行請求按鈕,撥動(dòng)開關(guān)K4為四樓下行請求按鈕,撥動(dòng)開關(guān)K5為五樓下行請求按鈕,撥動(dòng)開關(guān)K6為六樓下行請求按鈕,撥動(dòng)開關(guān)K7為七樓下行請求按鈕;七段數(shù)碼管顯示當(dāng)前電梯所在樓層數(shù)字(初始為4);每次只有一個(gè)有效請求(不用考慮優(yōu)先級);當(dāng)請求發(fā)出后,比較請求樓層和當(dāng)前樓層數(shù)值,數(shù)碼管按照電梯每秒升或降一層(1Hz)進(jìn)行數(shù)值變換,直到顯示樓層與請求樓層相等后停止,同時(shí)綠燈閃爍三次(4Hz)。
(2)外部輸入脈沖信號頻率為1mhz;
三、設(shè)計(jì)原理:
(1)計(jì)數(shù):輸入脈沖信號為1mhz,七段數(shù)碼管顯示改變?yōu)?s,需要計(jì)數(shù)脈沖信號或者設(shè)計(jì)分頻器。
(2)七段數(shù)碼管顯示:七段數(shù)碼管是電子開發(fā)過程中常用的輸出顯示設(shè)備。在實(shí)驗(yàn)系統(tǒng)中使用的是兩個(gè)四位一體、共陰極型七段數(shù)碼管。其單個(gè)靜態(tài)數(shù)碼管如下圖4-1所示。
由于七段數(shù)碼管公共端連接到GND(共陰極型),當(dāng)數(shù)碼管的中的那一個(gè)段被輸入高電平,則相應(yīng)的這一段被點(diǎn)亮。反之則不亮。共陽極性的數(shù)碼管與之相么。四位一體的七段數(shù)碼管在單個(gè)靜態(tài)數(shù)碼管的基礎(chǔ)上加入了用于選擇哪一位數(shù)碼管的位選信號端口。八個(gè)數(shù)碼管的a、b、c、d、e、f、g、h、dp都連在了一起,8個(gè)數(shù)碼管分別由各自的位選信號來控制,被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。
數(shù)碼管顯示模塊的電路原理如圖4-2所示,表4-1是其數(shù)碼管的輸入與FPGA的管腳連接表。
(3)消抖的原理:按鍵默認(rèn)輸入邏輯‘1’,當(dāng)有按鍵按下時(shí)對應(yīng)的輸入為邏輯‘0’(但會(huì)存在抖動(dòng)),當(dāng)FPGA開始檢測到該引腳從‘1’變?yōu)椤?’后開始定時(shí)(按鍵抖動(dòng)時(shí)間大約10ms),定時(shí)時(shí)間結(jié)束后若該引腳仍然為‘0’則表示確實(shí)發(fā)生按鍵按下,否則視為抖動(dòng)而不予以理會(huì);按鍵松開過程的消抖處理和按下時(shí)原理一樣。
基于VerilogHDL語言的電路設(shè)計(jì)、仿真與綜合;主要包括:各個(gè)電路子模塊的Verilog源文件、仿真文件,功能仿真波形;頂層設(shè)計(jì)的Verilog源文件、仿真源文件,功能仿真波形。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在實(shí)驗(yàn)箱驗(yàn)證,實(shí)驗(yàn)箱如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 仿真文件
6. 仿真圖
管腳分配
部分代碼展示:
//電梯 module?lift( input?clk,//1MHz input?S1,S2,S3,S4,S5,S6,//上行請求按鍵 input?K2,K3,K4,K5,K6,K7,//下行請求按鍵 output?LED,//green?led output?[2:0]?HEX_sel,//數(shù)碼管位選 output?[7:0]?HEX//共陰極數(shù)碼管,高電平亮 ); wire?clk_1Hz;//1Hz時(shí)鐘 wire?clk_4Hz;//4Hz時(shí)鐘 wire?[3:0]?floor;//電梯樓層 wire?S1_debounce;//消抖后S1 //按鍵消抖 key_debounce?i_key_debounce( .?clk(clk), .?button_in(S1),//輸入 .?button_posedge(S1_debounce)//消抖后按鍵 ); //分頻模塊 div?i_div( .?clk(clk),//1MHz .?clk_1Hz(clk_1Hz),//1Hz時(shí)鐘 .?clk_4Hz(clk_4Hz)//4Hz時(shí)鐘 ); //電梯控制模塊 lift_ctrl?i_lift_ctrl( //.?clk(clk),//1MHz .?clk_1Hz(clk_1Hz),//1Hz時(shí)鐘 .?clk_4Hz(clk_4Hz),//4Hz時(shí)鐘 .?S1(S1_debounce),//消抖后S1 .?S2(S2), .?S3(S3), .?S4(S4), .?S5(S5), .?S6(S6),//上行請求按鍵 .?K2(K2), .?K3(K3), .?K4(K4), .?K5(K5), .?K6(K6), .?K7(K7),//下行請求按鍵 .?LED(LED), .?floor(floor)//電梯樓層 );
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=580