版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于FPGA的電子密碼鎖的設(shè)計(jì)報(bào)告摘要:基于FPGA設(shè)計(jì)的電子密碼鎖是一個(gè)小型的數(shù)字系統(tǒng),與普通機(jī)械鎖相比,具有許多獨(dú)特的優(yōu)點(diǎn):保密性好,防盜性強(qiáng),可以不用鑰匙,記住密碼即可開鎖等。目前使用的電子密碼鎖大部分是基于單片機(jī)技術(shù),以單片機(jī)為主要器件。在實(shí)際應(yīng)用中,程序容易跑飛,系統(tǒng)的可靠性較差。本文介紹的一種基于現(xiàn)場可編輯門陣列FPGA器件的電子密碼鎖的設(shè)計(jì)方法,采用VHDL語言對系統(tǒng)進(jìn)行描述,并在EP3C10E144C8上實(shí)現(xiàn)。 通過仿真調(diào)試,利用可編程邏輯器件FPGA的電子密碼鎖的設(shè)計(jì)基本達(dá)到了預(yù)期目的。當(dāng)然,該系統(tǒng)在一些細(xì)節(jié)的設(shè)計(jì)上還需要不斷地完善和改進(jìn),特別是對系統(tǒng)的擴(kuò)展有很好的使用系統(tǒng)和
2、設(shè)計(jì)的價(jià)值。關(guān)鍵詞:現(xiàn)場可編程門陣列;VHDL語言;電子密碼鎖The Report Of Electronic Code Lock DesignAbstract:FPGA-based design of the electronic code lock is a small digital system. It has many unique advantages:good privacy and security , it do not need the key but remember password to unlock, and so on while it compare to or
3、dinary mechanical locks. At present, the electronic code lock is most used of SCM technology .In practice, however, the process easy run to fly. So the reliability of this system is poor. The paper introduced a field programmable gate arrays FPGA devices to design electronic password lock. The VHDL
4、language is used to describe the system and achieved in EP3C10E144C8. Though the simulation tests, using FPGA-based design of the electronic code lock can achieve the expected goal. Of course, some of the details of the system in the design of the need to constantly refined and improved, in particul
5、ar the expansion of the system have a good design and practical value.Keyword: FPGA; VHDL language; electronic password lock一、設(shè)計(jì)內(nèi)容與要求1 設(shè)計(jì)一個(gè)密碼鎖,密碼為一個(gè)4位的十進(jìn)制數(shù),密碼固化在鎖內(nèi) 2 用戶輸入密碼正確,則開鎖(試驗(yàn)箱D7 LED燈亮);若不正確,則報(bào)警(試驗(yàn)箱D0 LED燈亮) 3 若用戶輸入密碼不正確,可以按復(fù)位鍵重新輸入密碼。 二、設(shè)計(jì)思想2.1 系統(tǒng)原理框圖本系統(tǒng)由主控芯片(FPGA),鍵盤,顯示電路,報(bào)警電路和開/關(guān)門電路組成,而主控芯片又
6、可分為按鍵處理部分,控制部分和譯碼顯示部分。系統(tǒng)原理框圖如圖2.1所示:鍵盤按鍵處理主控部分譯碼顯示顯示開/關(guān)門電路報(bào)警電路FPGA圖2.1 系統(tǒng)框圖2.2 總體實(shí)現(xiàn)原理本系統(tǒng)有8個(gè)按鍵,K0,K1,K2,K3,K4,K5代表數(shù)字0-9共10個(gè)數(shù)字和1個(gè)確認(rèn)鍵,1個(gè)復(fù)位鍵。密碼長度為四位,并且固化在鎖內(nèi),輸入正確密碼后,按確認(rèn)鍵即可開門,本系統(tǒng)設(shè)置為LED D7燈亮。在輸入密碼的過程中,當(dāng)用戶鍵入錯(cuò)誤密碼時(shí),報(bào)警燈LED D0燈亮。按下復(fù)位鍵,可使報(bào)警停止,同時(shí)清除所有密碼顯示。三、芯片主控設(shè)計(jì)3.1 FPGA有限狀態(tài)機(jī)本設(shè)計(jì)是通過FPGA有限狀態(tài)機(jī)來實(shí)現(xiàn),設(shè)計(jì)有限狀態(tài)機(jī)最開始的工作時(shí)要確定電
7、路,包括哪些狀態(tài),比如某個(gè)電路包括四個(gè)狀態(tài),S0,S1,S2,S3。然后對所有狀態(tài)給出一個(gè)狀態(tài)編碼,比如為狀態(tài)S0賦予編碼00,為狀態(tài)S1賦予編碼01,為狀態(tài)S2賦予編碼10,為狀態(tài)S3賦予編碼11。狀態(tài)編碼是狀態(tài)的標(biāo)識,保存在寄存器當(dāng)中,對于此編碼形式,只需一個(gè)2位的寄存器就可以了。FSM Encoding Style 主要有:Binary Encoding One Hot Encoding Gray Encoding 二進(jìn)制與一位熱碼的特性比較:表3.1 二進(jìn)制與一位熱碼的特性比較狀態(tài)機(jī)可以認(rèn)為是組合邏輯和寄存器邏輯的特殊租戶,它一般包括兩個(gè)部分:組合邏輯部分和寄存器邏輯部分。寄存器用于存
8、儲狀態(tài),組合電路用于狀態(tài)譯碼和產(chǎn)生輸出信號。狀態(tài)機(jī)的下一個(gè)狀態(tài)及輸出,不僅與輸入信號有關(guān),而且還有寄存器當(dāng)前所處的狀態(tài)有關(guān)。根據(jù)輸出信號產(chǎn)生方法的不同,狀態(tài)機(jī)可以分成兩類:Mealy型和Moore型。Moore型狀態(tài)機(jī)的輸出只是當(dāng)前狀態(tài)的函數(shù),而Moore型狀態(tài)機(jī)的輸出只是當(dāng)前狀態(tài)的函數(shù),而Mealy型狀態(tài)機(jī)的輸出則是當(dāng)前狀態(tài)和當(dāng)前輸入狀態(tài)的函數(shù)。其原理如下兩圖:圖3.1Mealy型狀態(tài)機(jī)輸出原理圖3.2 Moore型狀態(tài)機(jī)輸出原理3.2設(shè)計(jì)流程本次密碼鎖的設(shè)計(jì),有限狀態(tài)機(jī)應(yīng)該包括以下狀態(tài):密碼為輸入前的等待狀態(tài)、輸入密碼時(shí)的等待狀態(tài)、輸入密碼正確時(shí)的通過狀態(tài)、輸入密碼錯(cuò)誤時(shí)的警報(bào)狀態(tài)。圖3.
9、3 主有效狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖其中當(dāng)密碼輸入時(shí)又可包括以下狀態(tài),正常輸入狀態(tài)、異常輸入狀態(tài)(包括命令狀態(tài))、輸入確認(rèn)狀態(tài)。下面的圖(圖是在程序編譯后,tools->Netlist_Vewers->RTL Vewer得到的)表示了密碼輸入的時(shí)候的次狀態(tài)機(jī),表示了4個(gè)密碼輸入的順序狀態(tài),以及輸入完成后的等待確認(rèn)狀態(tài)。圖3.4次有效狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換3.3狀態(tài)編碼狀態(tài)編碼主要有二進(jìn)制編碼、格雷編碼和一位獨(dú)熱編碼等方式。格雷編碼時(shí),相鄰狀態(tài)每次只有一個(gè)比特位產(chǎn)生變化,這樣減少了瞬變的次數(shù),也減少了產(chǎn)生毛刺和一些狀態(tài)的可能。采用一位獨(dú)熱編碼,雖然多用了觸發(fā)器,當(dāng)可以有效節(jié)省和簡化組合電路。對于寄
10、存器數(shù)量多而邏輯相對缺乏的FPGA器件來說,采用一位獨(dú)熱編碼可以有效提高電路的速度和可靠性,也有利于提高器件資源的利用率。將產(chǎn)生狀態(tài)的組合邏輯電路和用于保存狀態(tài)的寄存器分別寫在不同的always塊中。其中主要包括:輸出控制部分、警報(bào)計(jì)時(shí)部分、鎖打開后的計(jì)時(shí)部分、比較密碼部分、記錄密碼部分和記錄錯(cuò)誤次數(shù)的部分3.4密碼的輸入本次密碼鎖的密碼輸入采用FPGA芯片上的8位單個(gè)按鍵,考慮到按鍵數(shù)目不夠,采用了一位按鍵作為功能轉(zhuǎn)換按鍵;即前5位按鍵輸入04,同時(shí)按下功能轉(zhuǎn)換按鍵時(shí),按鍵04即轉(zhuǎn)換為按鍵59,這就彌補(bǔ)了按鍵數(shù)目的不足。最后兩位按鍵設(shè)定為確認(rèn)輸入按鍵和復(fù)位按鍵。密碼輸入完成后可以按確認(rèn)鍵檢驗(yàn)
11、密碼的正誤,報(bào)警、輸入錯(cuò)誤或者其他情況可以按復(fù)位按鍵重新輸入。另外由于按鍵的時(shí)候同時(shí)會引起狀態(tài)機(jī)的轉(zhuǎn)換,所以如果按鍵的時(shí)候?qū)Π存I判斷次數(shù)過多會產(chǎn)生狀態(tài)的過快轉(zhuǎn)換,記錄的密碼和數(shù)碼管的顯示就同時(shí)會出現(xiàn)錯(cuò)誤,因此在按鍵部分加入了消除多重按鍵的程序,只檢測一次按鍵的下降沿,解決了這個(gè)問題。3.5 密碼記錄與比較程序設(shè)定了一個(gè)寄存器用來記錄輸入的密碼。當(dāng)次有效狀態(tài)機(jī)(即密碼輸入的狀態(tài)機(jī))發(fā)生轉(zhuǎn)換并且有密碼輸入時(shí),程序會記錄下輸入的密碼在寄存器的其中4位里面,最后次有效狀態(tài)轉(zhuǎn)換到確認(rèn)密碼的狀態(tài)時(shí),會將記錄下的密碼與固化在鎖內(nèi)的密碼進(jìn)行對比,正確即將主狀態(tài)機(jī)轉(zhuǎn)換到通過階段,錯(cuò)誤則將狀態(tài)機(jī)轉(zhuǎn)換到報(bào)警階段。其
12、中正確錯(cuò)誤的狀態(tài)轉(zhuǎn)換是通過控制相應(yīng)的標(biāo)志位實(shí)現(xiàn)的。3.6密碼的顯示密碼顯示采用數(shù)碼管動態(tài)掃描顯示,初始時(shí)顯示密碼為4位0,當(dāng)輸入密碼后數(shù)碼管的第一位、第二位、第三位、第四位會依次顯示輸入的密碼,錯(cuò)誤后復(fù)位可以重新輸入。密碼顯示采用的是記錄密碼的寄存器的數(shù)據(jù),顯示掃描的掃描時(shí)間設(shè)置為1ms左右,這樣顯示不會出現(xiàn)閃爍或者殘影。四、程序仿真下前面的輸入cmd的編碼:/輸入的數(shù)字編碼 09,enter,cancelone=4'b0001, two=4b0010,three=4'b0011,four=4'b0100,five=4'b0101,six=4'b0110
13、,seven=4'b0111,eight=4'b1000,nine=4'b1001,zero=4'b1000,enter=4'b1010,cancel=4'b1011; 可以看到,在復(fù)位以后,輸入第1,2,3,4個(gè)密碼(依次為1111)后,passed變成高電平當(dāng)過了一定的時(shí)間后,passed變成低電平,重新計(jì)入鍵盤讀入值,進(jìn)行下一輪的密碼辨別。五、程序清單module passwd_lock(clk0,passed,one1,two1,three1,four1,zero1,change,yes, resetb, seg, dig);input
14、one1,two1,three1,four1,zero1,change;reg zero,one,two,three,four;input yes; inputresetb;/輸入復(fù)位信號inputclk0;/輸入時(shí)鐘信號output7:0passed;/輸出信號output 7:0 seg;/段選output 7:0 dig;/位選 reg key_pressed_flag; / 鍵盤按下標(biāo)志reg 3:0 key;reg RXBuf0,RXBuf1,RXBuf2,RXBuf3,RXBuf4;/displayreg clk0_div;reg 2:0 digyi;/yiwei/reg 7:0
15、dig;/weixuanreg 3:0 seg0;/duanxuanreg 7:0 seg;reg 12:0 CNT_R0;reg 18:0 CNT_R1;reg clk1;reg 21:0 CNT_R2;reg clk2;reg7:0passed;reg7:0alarmed;/*輸入與輸出的聲明部分,其中,clk0為輸入的時(shí)鐘信號,resetb為密碼舒服的輸入信號,key為輸入命令,需注意的時(shí),key并不是總在表示密碼,也表示密碼的間隔,如當(dāng)輸入4位密碼后需要一個(gè)確認(rèn)“enter”信號,當(dāng)密碼輸入錯(cuò)誤時(shí),需要取消“cancel”信號,這些信號之間在設(shè)計(jì)中通過有限狀態(tài)轉(zhuǎn)換機(jī)實(shí)現(xiàn)。*/param
16、eterPASSWORD=16'b0001000100010001;/盛放密碼的參數(shù)reg15:0password;/輸入數(shù)值盛放寄存器/輸入的數(shù)字編碼always ( posedge clk1 ) begin/檢測線路的下降沿RXBuf1 <= one1;one <= (RXBuf1 & ( one1 );/RXFall1<=RXFall;end/消除多重按鍵always ( posedge clk1 ) begin/檢測線路的下降沿RXBuf0 <= zero1;zero <= (RXBuf0 & ( zero1 );/RXFall1&
17、lt;=RXFall;end/消除多重按鍵always ( posedge clk1 ) begin/檢測線路的下降沿RXBuf2 <= two1;two <= (RXBuf2 & ( two1 );/RXFall1<=RXFall;end/消除多重按always ( posedge clk1 ) begin/檢測線路的下降沿RXBuf3 <= three1;three <= (RXBuf3 & ( three1 );/RXFall1<=RXFall;end/消除多重按鍵always ( posedge clk1 ) begin/檢測線路的下
18、降沿RXBuf4 <= four1;four <= (RXBuf4 & ( four1 );/RXFall1<=RXFall;end/消除多重按鍵reg2:0main_state;/主狀態(tài)reg2:0next_state;/下一個(gè)狀態(tài)/主有限狀態(tài)轉(zhuǎn)換機(jī)的三個(gè)狀態(tài):waits、pass、alarmparameterwaits=3'b001,pass=3'b010,alarm=3'b100;reg2:0sub_state;reg2:0next_sub_state; /主有限狀態(tài)轉(zhuǎn)換機(jī)的三個(gè)狀態(tài):first、second、third、fourth、f
19、inish。parameterfirst=3'b000,second=3'b001,third=3'b010,fourth=3'b011,finish=3'b100;/通過計(jì)時(shí)寄存器reg7:0pass_count;/警報(bào)計(jì)時(shí)寄存器reg10:0alarm_count;/嘗試次數(shù)寄存器reg1:0try_count;/輸入狀態(tài)寄存器:error和correctregerror;regcorrect;/以上為中間狀態(tài)的一些寄存器和一些所用到的參數(shù)/主機(jī)狀態(tài)機(jī)部分always (posedge clk0)begin CNT_R2 <= CNT_R2 +
20、 1'b1; if(CNT_R2 < 4000000) begin clk1 <= 1; end else begin clk1 <= 0; endendalways(main_state or correct or error)begincase(main_state)waits:if(correct=1) /由waits轉(zhuǎn)換到pass的條件next_state=pass;else if(error=1&&try_count=1)next_state=alarm; /由waits轉(zhuǎn)換到alarm的條件elsenext_state=waits;pass
21、:if(pass_count7=1)/由pass轉(zhuǎn)換到waits的條件next_state=waits;elsenext_state=pass;alarm:if(alarm_count10=1)/ 由alarm轉(zhuǎn)換到waits的條件next_state=waits;elsenext_state=alarm;default:/默認(rèn)狀態(tài):waitsnext_state=waits;endcaseend/狀態(tài)轉(zhuǎn)換always(posedge clk1 or negedge resetb)beginif(!resetb)main_state<=waits;elsemain_state<=n
22、ext_state;end/輸出控制部分always(posedge clk1 or negedge resetb)beginif(!resetb)/復(fù)位時(shí),開鎖輸出與警報(bào)輸出都為零beginpassed<=8'b00000000; alarmed<=8'b00000000; endelse if(main_state=pass)/當(dāng)主機(jī)狀態(tài)為pass時(shí),開鎖beginpassed<=8'b00000001; alarmed<=8'b00000000;endelse if(main_state=alarm)/當(dāng)主機(jī)狀態(tài)為alarm時(shí),警報(bào)
23、beginpassed<=8'b00000000; alarmed<=8'b00000001;endelse/其它狀態(tài)復(fù)位beginpassed<=8'b00000000; alarmed<=8'b00000000;endend/alarm一段時(shí)間后,自動進(jìn)入waits狀態(tài)/alarm定時(shí)器always(posedge clk1 or negedge resetb)beginif(!resetb)alarm_count<=0;else if(main_state=alarm)/alarm狀態(tài)計(jì)時(shí)器alarm定時(shí)器加1alarm_co
24、unt<=alarm_count+1;elsealarm_count<=0;end/鎖pass以后計(jì)數(shù)開始,當(dāng)規(guī)定的時(shí)間到達(dá)后自動上鎖,并進(jìn)入waits狀態(tài)/pass定時(shí)器always(posedge clk1 or negedge resetb)beginif(!resetb)pass_count<=0;else if(main_state=pass) /pass狀態(tài)計(jì)時(shí)器pass定時(shí)器加1pass_count<=pass_count+1;elsepass_count<=0;end/從狀態(tài)機(jī),用于輸入4位密碼always(posedge clk1 or nege
25、dge resetb)beginif(!resetb)sub_state<=first;elsesub_state<=next_sub_state;endalways(!zero|!one|!two|!three|!four|!yes or sub_state)/always(key or sub_state)beginif(key_pressed_flag|!yes)if(!yes)/4個(gè)密碼輸完時(shí),進(jìn)行確認(rèn)next_sub_state=first;/default為輸入了某位密碼,輸入完自動將狀態(tài)轉(zhuǎn)入下一位elseif(!zero|!one|!two|!three|!four)
26、case(sub_state)first:next_sub_state=second;second:next_sub_state=third;third:next_sub_state=fourth;fourth:next_sub_state=finish;/當(dāng)輸入完4位密碼以后狀態(tài)保持不變,等待輸入enter命/令finish:next_sub_state=finish;default: next_sub_state=sub_state;endcaseelsenext_sub_state=sub_state;end/比較密碼,產(chǎn)生正確或者錯(cuò)誤信息always(posedge clk1 or n
27、egedge resetb)beginif(!resetb)begincorrect<=0;error<=0;endelse if(!key_pressed_flag&&!yes)if(password=PASSWORD)/密碼正確時(shí)begincorrect<=1;error<=0;endelse/密碼錯(cuò)誤時(shí)beginerror<=1;correct<=0;endelsebegincorrect<=0;error<=0;endend/記錄密碼always(posedge clk1 or negedge resetb)beginif
28、(!resetb)password<=0;else if(!zero|!one|!two|!three|!four)case(sub_state)first:password15:12<=key;second:password11:8<=key;third:password7:4<=key;fourth:password3:0<=key;default:password<=password;endcaseelsepassword<=password;end/記錄錯(cuò)誤次數(shù)always(posedge clk1 or negedge resetb)begi
29、nif(!resetb)try_count<=0;else if(error=1)try_count<=try_count+1;else if(main_state=pass|main_state=alarm)try_count<=0;end always(posedge clk1 or negedge resetb) begin if(!resetb) begin key_pressed_flag<=0; key=4'b0000; end else if(!zero&&change) begin key_pressed_flag<=1;k
30、ey<=4'b0000; end else if(!one&&change) begin key_pressed_flag<=1;key<=4'b0001; end else if(!two&&change) begin key_pressed_flag<=1;key<=4'b0010; end else if(!three&&change) begin key_pressed_flag<=1;key<=4'b0011; end else if(!four&&
31、;change) begin key_pressed_flag<=1;key<=4'b0100; end else if(!zero&&!change) /按下change切換輸入數(shù)的范圍 begin key_pressed_flag<=1;key<=4'b0101; end else if(!one&&!change) begin key_pressed_flag<=1;key<=4'b0110; end else if(!two&&!change) begin key_pressed_flag<=1;key<=4'b0111; end else if(!three&&!change) begin key_pressed_flag<=1;key<=4'b1000; end else if(!four&&!change) begin key_pressed_flag<=1;key<=4'b1001; end else if(!yes)begin key_pressed_flag<=0;key<=4'b1010; end
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版門窗行業(yè)品牌推廣與宣傳合同4篇
- 二零二五年度文化產(chǎn)業(yè)發(fā)展基金擔(dān)保貸款合同樣本3篇
- 二零二五年度建設(shè)工程施工合同擔(dān)保服務(wù)協(xié)議2篇
- 2025年離婚補(bǔ)充協(xié)議辦理及情感咨詢合同2篇
- 2025年度銅棒生產(chǎn)安全防護(hù)與應(yīng)急救援合同
- 二零二五年度智能快遞柜租賃及配送服務(wù)合同3篇
- 2025年度大宗貨物物流運(yùn)輸責(zé)任與保險(xiǎn)合同范本
- 2025年度個(gè)人住宅租賃合同范本7篇
- 課題申報(bào)參考:民族交融視域下唐代四夷樂舞伎服飾形象研究
- 課題申報(bào)參考:媒介創(chuàng)新視角下中華傳統(tǒng)文化傳播的“數(shù)字新考”研究
- 湖北省黃石市陽新縣2024-2025學(xué)年八年級上學(xué)期數(shù)學(xué)期末考試題 含答案
- 硝化棉是天然纖維素硝化棉制造行業(yè)分析報(bào)告
- 央視網(wǎng)2025亞冬會營銷方案
- 《00541語言學(xué)概論》自考復(fù)習(xí)題庫(含答案)
- 《無砟軌道施工與組織》 課件 第十講雙塊式無砟軌道施工工藝
- 江蘇省南京市、鹽城市2023-2024學(xué)年高三上學(xué)期期末調(diào)研測試+英語+ 含答案
- 2024新版《藥品管理法》培訓(xùn)課件
- 《阻燃材料與技術(shù)》課件 第7講 阻燃橡膠材料
- 爆炸物運(yùn)輸安全保障方案
- 借名買車的協(xié)議書范文范本
- 江蘇省南京市2025屆高三學(xué)業(yè)水平調(diào)研考試數(shù)學(xué)試卷(解析版)
評論
0/150
提交評論