基于FPGA的電子密碼鎖設(shè)計(能力拓展訓(xùn)練)_第1頁
基于FPGA的電子密碼鎖設(shè)計(能力拓展訓(xùn)練)_第2頁
基于FPGA的電子密碼鎖設(shè)計(能力拓展訓(xùn)練)_第3頁
基于FPGA的電子密碼鎖設(shè)計(能力拓展訓(xùn)練)_第4頁
基于FPGA的電子密碼鎖設(shè)計(能力拓展訓(xùn)練)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學(xué)能力拓展訓(xùn)練學(xué) 號: 能力拓展訓(xùn)練題 目電子密碼鎖設(shè)計學(xué) 院專 業(yè)班 級姓 名指導(dǎo)教師2016年 月 日能力拓展訓(xùn)練任務(wù)書學(xué)生姓名: 專業(yè)班級: 自動化_班 指導(dǎo)教師: 孫曉明 工作單位: 自動化學(xué)院 題 目: 電子密碼鎖設(shè)計 初始條件:計算機(jī)、Max+plus、EDA實驗箱。要求完成的主要任務(wù): (包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)設(shè)計一個電子密碼鎖,在鎖開的狀態(tài)下輸入密碼,設(shè)置的密碼共4位,用數(shù)據(jù)開關(guān)K1K10分別代表數(shù)字1,2,9,0,輸入的密碼用數(shù)碼管顯示,最后輸入的密碼顯示在最右邊的數(shù)碼管上,即每輸入一位數(shù),密碼在數(shù)碼管上的顯示左移一位。可刪除輸入

2、的數(shù)字,刪除的是最后輸入的數(shù)字,每刪除一位,密碼在數(shù)碼管的顯示右移一位,并在左邊空出的位上補(bǔ)充“0”。用一位輸出電平的狀態(tài)代表鎖的開閉狀態(tài)。提高部分:為保證密碼鎖主人能打開密碼鎖,設(shè)置一個萬能密碼,在主人忘記密碼時使用。任務(wù)安排:(1) 設(shè)計任務(wù)及要求分析(2) 方案比較及認(rèn)證說明(3) 系統(tǒng)原理闡述,寫出設(shè)計方案結(jié)構(gòu)圖(4) 軟件設(shè)計課題需要說明:軟件思想,流程圖,源程序及程序注釋(5) 調(diào)試記錄及結(jié)果分析(6) 總結(jié)(7) 參考資料5篇以上(8) 附錄:程序清單時間安排:D1:安排設(shè)計任務(wù);收集資料;方案選擇D2:程序設(shè)計D3:實驗室內(nèi)調(diào)試程序并演示D4:撰寫報告D5:交能力拓展訓(xùn)練報告主

3、要參考資料:1 譚會生,張昌凡EDA 技術(shù)及應(yīng)用西安:西安電子科技大學(xué)出版社20042 孫曉明EDA實驗指導(dǎo)書武漢:武漢理工大學(xué)教材中心,20071指導(dǎo)教師簽名: 孫曉明 2016 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日摘要鎖是保護(hù)人類生命財產(chǎn)安全的重要工具。隨著社會發(fā)展技術(shù)進(jìn)步,人類發(fā)明了保密性能和防盜功能更強(qiáng)的電子密碼鎖,以取代傳統(tǒng)的機(jī)械鎖。電子密碼鎖的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價比較高的產(chǎn)品。應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過編程來實現(xiàn)的。其控制核心一般通過數(shù)字電路,單片機(jī)或FPGA實現(xiàn)。FPGA作為專用集成電路領(lǐng)域中的一種半定制電路,既解決了定制電路的

4、不足,又克服了原有可編程器件門電路數(shù)有限的缺點。相比單片機(jī)開發(fā)需要同時設(shè)計硬件電路與編寫程序,F(xiàn)PGA開發(fā)以硬件描述語言來實現(xiàn),可以更高效地實現(xiàn)電子密碼鎖的功能。本次電子密碼鎖設(shè)計通過使用Verilog HDL硬件描述語言在Max+plus軟件環(huán)境下設(shè)計編譯并仿真,下載至FPGA以實現(xiàn)需要的功能。關(guān)鍵詞:電子密碼鎖;FPGA;Verilog HDL目錄1 設(shè)計任務(wù)及要求分析11.1 設(shè)計任務(wù)11.2 任務(wù)要求分析12 方案設(shè)計及選擇22.1 設(shè)計思路22.2 單片機(jī)設(shè)計方案22.3 FPGA設(shè)計方案22.4 方案選擇33 基于FPGA的電子密碼鎖設(shè)計43.1 按鍵消抖模塊設(shè)計53.2 控制模塊

5、設(shè)計73.3 編碼顯示模塊設(shè)計93.4 各模塊組合設(shè)計104 調(diào)試記錄及仿真結(jié)果分析124.1 調(diào)試記錄124.2 仿真結(jié)果分析124.2.1 按鍵消抖模塊仿真結(jié)果分析124.2.2 控制模塊仿真結(jié)果分析134.2.3 編碼顯示模塊仿真結(jié)果分析155 小結(jié)及體會16參考文獻(xiàn)17附錄18本科生能力拓展訓(xùn)練成績評定表231 設(shè)計任務(wù)及要求分析1.1 設(shè)計任務(wù)設(shè)計一個4位電子密碼鎖:(1)用數(shù)據(jù)開關(guān)K1K10分別代表數(shù)字1,2,9,0,輸入的密碼用數(shù)碼管顯示;(2)最后輸入的密碼顯示在最右邊的數(shù)碼管上,即每輸入一位數(shù),密碼在數(shù)碼管上的顯示左移一位;(3)可刪除輸入的數(shù)字,刪除的是最后輸入的數(shù)字,每刪

6、除一位,密碼在數(shù)碼管的顯示右移一位,并在左邊空出的位上補(bǔ)充“0”;(4)用一位輸出電平的狀態(tài)代表鎖的開閉狀態(tài);(5)在鎖開的狀態(tài)下輸入密碼,可以設(shè)置新密碼;(6)設(shè)置一個萬能密碼,在主人忘記密碼時使用。1.2 任務(wù)要求分析該電子密碼鎖輸入信號來源有開關(guān)K1K10,設(shè)置密碼鍵,密碼核對鍵,退格鍵,關(guān)閉鍵;其輸出信號為開閉狀態(tài),以及4個七段數(shù)碼管顯示。該電子密碼鎖輸入輸出信號與按鍵對應(yīng)關(guān)系描述如下:(1)K1K10分別對應(yīng)數(shù)字1,2,9,0,輸入的密碼用數(shù)碼管顯示;最后輸入的密碼顯示在最右邊的數(shù)碼管上,即每輸入一位數(shù),密碼在數(shù)碼管上的顯示左移一位;(2)按下退格鍵,可刪除輸入的數(shù)字,刪除的是最后輸

7、入的數(shù)字,每刪除一位,密碼在數(shù)碼管的顯示右移一位,并在左邊空出的位上補(bǔ)充“0”;(3)在鎖開的狀態(tài)下輸入密碼,按下設(shè)置密碼鍵后,可以設(shè)置新密碼;(4)輸入密碼后按下密碼核對鍵,用一位輸出電平的狀態(tài)代表鎖的開閉狀態(tài);(5)在鎖開狀態(tài)下,按下關(guān)閉鍵,代表鎖的開閉狀態(tài)的一位輸出電平出現(xiàn)關(guān)閉狀態(tài)。2 方案設(shè)計及選擇2.1 設(shè)計思路該電子密碼鎖的設(shè)計可以分多個模塊進(jìn)行,主要包括如密碼輸入模塊,數(shù)據(jù)寄存模塊,數(shù)碼管編碼顯示模塊,密碼核對模塊等。各個模塊被分別設(shè)計并仿真成功后,再組合起來以構(gòu)成完整的電子密碼鎖。2.2 單片機(jī)設(shè)計方案該電子密碼鎖的設(shè)計可使用80C51單片機(jī)與串行E2PROM實現(xiàn)。各功能模塊主

8、要包括:密碼輸入模塊,單片機(jī)控制模塊,串行E2PROM密碼存儲模塊以及編碼顯示模塊。該方案由硬件電路設(shè)計與單片機(jī)程序編寫兩部分組成。其設(shè)計方案結(jié)構(gòu)圖如圖2.1所示。圖2.1 單片機(jī)設(shè)計方案結(jié)構(gòu)圖2.3 FPGA設(shè)計方案該電子密碼鎖的設(shè)計也可由FPGA現(xiàn)場可編程門陣列實現(xiàn)。各功能模塊主要包括:按鍵輸入消抖模塊,控制模塊以及七段數(shù)碼管編碼顯示模塊。該方案可以在Max+plus軟件案件環(huán)境下經(jīng)過使用Verilog HDL硬件描述語言編寫,編譯,調(diào)試和仿真等步驟后下載到FPGA實現(xiàn)。其設(shè)計方案結(jié)構(gòu)圖如圖2.2所示。圖2.2 FPGA設(shè)計方案結(jié)構(gòu)圖2.4 方案選擇通過比較以上單片機(jī)設(shè)計方案與FPGA設(shè)計

9、方案發(fā)現(xiàn):單片機(jī)設(shè)計方案包含硬件設(shè)計與軟件設(shè)計兩個部分,而FPGA設(shè)計方案只需通過使用硬件描述語言實現(xiàn)。后者設(shè)計時操作方便,僅需在軟件環(huán)境下調(diào)試。因此,該電子密碼鎖設(shè)計選擇上述FPGA設(shè)計方案。3 基于FPGA的電子密碼鎖設(shè)計該FPGA電子密碼鎖設(shè)計方案使用Verilog HDL語言描述,其程序流程圖如圖3.1所示。圖3.1 程序流程圖3.1 按鍵消抖模塊設(shè)計該按鍵消抖模塊源程序如下:/設(shè)置密碼鍵,核對密碼鍵,退格鍵,關(guān)鎖鍵消抖程序module key_jitter_4(clk_in,key_in,set,check,delete,close);input clk_in;input 3:0 k

10、ey_in;output set,check,delete,close;reg 3:0 key_in_a;reg 3:0 key_in_b;wire 9:0 changed;reg 19:0 timer;reg set,check,delete,close;/檢測輸入信號變化always (posedge clk_in)beginkey_in_a <= key_in;key_in_b <= key_in_a;end/輸入信號變化計數(shù)器assign changed = key_in_b&(key_in_a);always (posedge clk_in)if(changed)

11、timer <= 0;elsetimer <= timer + 1'b1;/輸入信號超過20ms不變化即可輸出該信號always (posedge clk_in) if(timer = 20'hfffff)set,check,delete,close <= key_in;endmodule/數(shù)字鍵K1K10消抖程序module key_jitter_10(clk_in,key_in,key_out);input clk_in;input 9:0 key_in;output 9:0 key_out;reg 9:0 key_in_a;reg 9:0 key_in_

12、b;reg 19:0 timer;reg 9:0 key_out;wire 9:0 changed;/檢測輸入信號變化always (posedge clk_in)beginkey_in_a <= key_in;key_in_b <= key_in_a;end/輸入信號變化計數(shù)器assign changed = key_in_b&(key_in_a);always (posedge clk_in) if(changed) timer <= 0; elsetimer <= timer + 1'b1;/輸入信號超過20ms不變化即可輸出該信號always (

13、posedge clk_in)beginif(timer = 20'hfffff)begin key_out <= key_in;endendendmodule該4位與10位按鍵消抖模塊電路圖分別如圖3.2,圖3.3所示。圖3.2 4位按鍵消抖模塊電路圖圖3.3 10位按鍵消抖模塊電路圖3.2 控制模塊設(shè)計該控制模塊源程序如下:module controller_3(in,back,check,set,close,lock,clk,num1,num2,num3,num4);input back,check,set,close;input 9:0in;input clk;outpu

14、t lock;output3:0num1,num2,num3,num4;reg3:0num1,num2,num3,num4;reg15:0code;reg3:0temp;reg lock;always(posedge clk)beginif(in!=10'b0000000000)/檢測數(shù)字鍵輸入,并將數(shù)值移位寄存begincase(in)10'b0000000001:temp=4'd1;10'b0000000010:temp=4'd2;10'b0000000100:temp=4'd3;10'b0000001000:temp=4&#

15、39;d4;10'b0000010000:temp=4'd5;10'b0000100000:temp=4'd6;10'b0001000000:temp=4'd7;10'b0010000000:temp=4'd8;10'b0100000000:temp=4'd9;10'b1000000000:temp=4'd0;endcasenum4<=num3;num3<=num2;num2<=num1;num1<=temp;endelse if(back)/按下退格鍵,移位寄存回上一狀態(tài)b

16、eginnum1<=num2;num2<=num3;num3<=num4;num4<=1'd0;endendalways(posedge clk)beginif(lock=0&&check=1)/鎖關(guān)時,按下核對密碼鍵beginif(code=num4,num3,num2,num1)/與設(shè)置的密碼想同,開鎖lock<=1;else if(16'h0008=num4,num3,num2,num1)/與萬能密碼同,開鎖lock<=1;endelse if(lock=1&&close=1) /鎖開時,檢測關(guān)鎖鍵loc

17、k<=0;endalways(posedge clk)beginif(lock=1&&set=1)/鎖開時,檢測設(shè)置密碼鍵code<=num4,num3,num2,num1;endendmodule該控制模塊電路圖如圖3.4所示。圖3.4 控制模塊電路圖3.3 編碼顯示模塊設(shè)計編碼顯示模塊源程序如下:/共陰極七段數(shù)碼管編碼顯示模塊module encoder(data_in,data_out);input 3:0 data_in ;output data_out ;reg 6:0 data_out ;always (data_in)begincase(data_in

18、)4'd0:data_out=7'b1111110;/04'd1:data_out=7'b0110000;/14'd2:data_out=7'b1101101;/24'd3:data_out=7'b1111001;/34'd4:data_out=7'b0110011;/44'd5:data_out=7'b1011011;/54'd6:data_out=7'b1011111;/64'd7:data_out=7'b1110000;/74'd8:data_out=7

19、'b1111111;/84'd9:data_out=7'b1111011;/9default:data_out=7'b1111110;/0endcase endendmodule該編碼顯示模塊電路圖如圖3.5所示。圖3.5 控制模塊電路圖3.4 各模塊組合設(shè)計將按鍵消抖模塊,控制模塊,編碼顯示模塊組合得到該電子密碼鎖組合后的整體電路圖。該各模塊組合電路圖如圖3.6所示。圖3.6 各模塊組合電路圖4 調(diào)試記錄及仿真結(jié)果分析4.1 調(diào)試記錄Max+plus的設(shè)計輸入、邏輯綜合、布局布線、仿真校驗和編程下載等功能全部集成在統(tǒng)一的開發(fā)環(huán)境下,加快了動態(tài)開發(fā)和調(diào)試,縮短開

20、發(fā)周期。各模塊在Max+plus軟件環(huán)境中,均遵循了新建Text Editor File,編譯成功后建立Symbol Editor File;新建Graphic Editor File,使用已生成的Symbol Editor File作圖,編譯成功后建立Waveform Editor File,保存后使用Simulator仿真器進(jìn)行波形仿真等步驟。各模塊調(diào)試時顯示正常。4.2 仿真結(jié)果分析4.2.1 按鍵消抖模塊仿真結(jié)果分析4位按鍵消抖模塊仿真結(jié)果如圖4.1所示,10位按鍵消抖模塊仿真結(jié)果如圖4.2所示。圖4.1 4位按鍵消抖模塊仿真結(jié)果圖4.1中輸入信號key_in2置1后一段時間,對應(yīng)的輸

21、出信號check去除了出現(xiàn)時間小于20ms的雜波并保留了大于20ms的波形。實現(xiàn)了按鍵消抖功能。圖4.2 10位按鍵消抖模塊仿真結(jié)果圖4.2中輸入信號key_in9置1后一段時間,對應(yīng)的輸出信號key_out9去除了出現(xiàn)時間小于20ms的雜波并保留了大于20ms的波形。實現(xiàn)了按鍵消抖功能。4.2.2 控制模塊仿真結(jié)果分析控制模塊仿真波形如圖4.3,圖4.4,圖4.5,圖4.6所示。圖4.3 輸入萬能密碼解鎖仿真結(jié)果圖4.3中在in9.0輸入萬能密碼后,輸入信號check置1,輸出信號lock置1。實現(xiàn)了輸入萬能密碼解鎖功能。圖4.4 按下關(guān)鎖鍵關(guān)鎖仿真結(jié)果圖4.4中在鎖開狀態(tài)下,輸入信號clo

22、se置1,輸出信號lock置0。實現(xiàn)了關(guān)鎖功能。圖4.5 按下退格鍵刪除一位仿真結(jié)果圖4.5中依次輸入了4位數(shù)字,輸出信號num4num1依次左移一位;輸入信號back三次置1,每次back置1,輸出信號num4num1依次右移一位。實現(xiàn)了刪除一位的功能。圖4.6 設(shè)置密碼仿真結(jié)果圖4.6中在開鎖后輸入新的密碼,輸入信號set置1以設(shè)置密碼,接著輸入信號close置1以關(guān)鎖;關(guān)鎖后,輸入信號back置1將num1num4清零;清零后輸入新密碼,再將輸入信號check置1以核對密碼,輸出信號lock置1表示開鎖成功。實現(xiàn)了設(shè)置密碼的功能。4.2.3 編碼顯示模塊仿真結(jié)果分析編碼顯示模塊仿真波形如

23、圖4.7所示。圖4.7 編碼顯示模塊仿真結(jié)果圖4.7中將輸入信號data_in3.0置為0001,接著輸出信號data_out6.0置為0110000。實現(xiàn)了編碼顯示功能。5 小結(jié)及體會通過本次設(shè)計訓(xùn)練,個人有了很多獲得:一,了解了自身各種理論知識的不足之處,強(qiáng)化了自身知識水平;二,知道了理論必須與實踐結(jié)合,各種技術(shù)才能真正達(dá)到熟練運(yùn)用的程度;三,科學(xué)技術(shù)是嚴(yán)密謹(jǐn)慎的,不能有一絲馬虎;四,本次電子密碼鎖設(shè)計在多種方案設(shè)計與比較時,進(jìn)一步明白了單片機(jī)與FPGA的區(qū)別。FPGA程序可以并行執(zhí)行,單片機(jī)程序是順序執(zhí)行;FPGA更偏向于硬件電路,而單片機(jī)更偏于軟件,兩者的應(yīng)用領(lǐng)域和擅長點大有不同。在具

24、體進(jìn)行FPGA電子密碼鎖設(shè)計時,亦進(jìn)一步了解了硬件描述語言如Verilog HDL語言與程序設(shè)計語言如C語言的不同,使用時前者更像是在搭建硬件電路,需要對數(shù)字電路等學(xué)科知識有一定了解。參考文獻(xiàn)1 徐海軍,葉衛(wèi)東FPGA在高性能數(shù)據(jù)采集系統(tǒng)中的應(yīng)用J計算機(jī)技術(shù)與應(yīng)用,20055:44-612 夏宇聞Verilog數(shù)字系統(tǒng)設(shè)計M北京:北京航空航天大學(xué)出版社,2013:166-210.3 JBhaskerVerilog HDL硬件描述語言M徐振林北京:機(jī)械工業(yè)出版社,2000:49-90.4 MEYERBAESE U數(shù)字信號處理的FPGA實現(xiàn)M劉凌北京:清華大學(xué)出版社,2006:1-495 孫曉明E

25、DA實驗指導(dǎo)書武漢:武漢理工大學(xué)教材中心,20071:1-256 李連華基于FPGA的電子密碼鎖設(shè)計J中國科技信息,2006,2006.1:1-2附錄程序清單:/按鍵消抖模塊/設(shè)置密碼鍵,核對密碼鍵,退格鍵,關(guān)鎖鍵消抖程序module key_jitter_4(clk_in,key_in,set,check,delete,close);input clk_in;input 3:0 key_in;output set,check,delete,close;reg 3:0 key_in_a;reg 3:0 key_in_b;wire 9:0 changed;reg 19:0 timer;reg s

26、et,check,delete,close;/檢測輸入信號變化always (posedge clk_in)beginkey_in_a <= key_in;key_in_b <= key_in_a;end/輸入信號變化計數(shù)器assign changed = key_in_b&(key_in_a);always (posedge clk_in)if(changed)timer <= 0;elsetimer <= timer + 1'b1;/輸入信號超過20ms不變化即可輸出該信號always (posedge clk_in) if(timer = 20&#

27、39;hfffff)set,check,delete,close <= key_in;endmodule/數(shù)字鍵K1K10消抖程序module key_jitter_10(clk_in,key_in,key_out);input clk_in;input 9:0 key_in;output 9:0 key_out;reg 9:0 key_in_a;reg 9:0 key_in_b;reg 19:0 timer;reg 9:0 key_out;wire 9:0 changed;/檢測輸入信號變化always (posedge clk_in)beginkey_in_a <= key_i

28、n;key_in_b <= key_in_a;end/輸入信號變化計數(shù)器assign changed = key_in_b&(key_in_a);always (posedge clk_in) if(changed) timer <= 0; elsetimer <= timer + 1'b1;/輸入信號超過20ms不變化即可輸出該信號always (posedge clk_in)beginif(timer = 20'hfffff)begin key_out <= key_in;endendendmodule/電子密碼鎖控制模塊module con

29、troller_3(in,back,check,set,close,lock,clk,num1,num2,num3,num4);input back,check,set,close;input 9:0in;input clk;output lock;output3:0num1,num2,num3,num4;reg3:0num1,num2,num3,num4;reg15:0code;reg3:0temp;reg lock;always(posedge clk)beginif(in!=10'b0000000000)/檢測數(shù)字鍵輸入,并將數(shù)值移位寄存begincase(in)10'b

30、0000000001:temp=4'd1;10'b0000000010:temp=4'd2;10'b0000000100:temp=4'd3;10'b0000001000:temp=4'd4;10'b0000010000:temp=4'd5;10'b0000100000:temp=4'd6;10'b0001000000:temp=4'd7;10'b0010000000:temp=4'd8;10'b0100000000:temp=4'd9;10'b1000000000:temp=4'd0;endcasenum4<=num3;num3<=num2;num2<=num1;num1<=temp;endelse if(back)/按下退格鍵,移位寄存回上一狀態(tài)beginnum1<=num2;num2<=num3;num3<=num4;num4<=1'd0;endendalways(posedge clk)beginif(lock=0&&check=1)/鎖關(guān)時,按下核對密碼鍵beginif(co

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論