




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1、 概述1.1 電子密碼鎖的現狀隨著我國對外開放的不斷深入,高檔建筑發展很快,高檔密碼鎖具市場的前景樂觀。我國密碼鎖具行業對密碼鎖具高新技術的投入正逐年增大,高檔密碼鎖的市場需求也逐年增加。在安防工程中,鎖具產品是關系到整個系統安全性的重要設備,所以鎖具產品的優劣也關系了整個安防工程的質量和驗收。目前,市場上比較先進的智能電子密碼鎖分別有:IC卡電子密碼鎖、射頻卡式電子密碼鎖、紅外遙控電子密碼鎖、指紋識別電子密碼鎖和瞳孔識別電子密碼鎖等。IC卡電子密碼鎖成本低,體積小,卡片本身無須電源等優點占領了一定的市場份額,但是由于有機械接觸,會產生接觸磨損,而且使用不太方便,在一定程度上限制了它的應用
2、;射頻卡式電子密碼鎖是非接觸式電子密碼鎖,成本也不太高,體積跟IC卡密碼鎖相當,卡片使用感應電源,重量很輕,技術成熟,受到了廣泛的歡迎,但是與IC卡電子密碼鎖相比,成本偏高;指紋識別電子密碼鎖和瞳孔識別電子密碼鎖可靠性很高,安全性是目前應用系統中最高的,但是成本高昂,還沒進入大眾化使用階段。在國外,美國、日本、德國的電子密碼鎖保密性較好,并結合感應卡技術,生物識別技術,使電子密碼鎖系統得到了飛躍式的發展。這幾個國家的密碼鎖識別的密碼更復雜,并且綜合性比較好,已經進入了成熟期,出現了感應卡式密碼鎖,指紋式密碼鎖,虹膜密碼鎖,面部識別密碼鎖,序列混亂的鍵盤密碼鎖等各種技術的系統,它們在安全性,方便
3、性,易管理性等方面都各有特長,新型的電子密碼鎖系統的應用也越來越廣。基于FPGA的電子密碼鎖是新型現代化安全管理系統,它集微機自動識別技術和現代安全管理措施為一體,它涉及電子,機械,計算機技術,通訊技術,生物技術等諸多新技術。它是解決重要部門出入口實現安全防范管理的有效措施,適用各種場合,如銀行、賓館、機房、軍械庫、機要室、辦公間、智能化小區、工廠、家庭等。在數字技術網絡技術飛速發展的今天,電子密碼鎖技術得到了迅猛的發展。它早已超越了單純的門道及鑰匙管理,逐漸發展成為一套完整的出入管理系統。它在工作環境安全、人事考勤管理等行政管理工作中發揮著巨大的作用。在該系統的基礎上增加相應的輔助設備可以進
4、行電梯控制、車輛進出控制,物業消防監控、餐飲收費、私家車庫管理等,真正實現區域內一卡智能管理。 目前使用的電子密碼鎖大部分是基于單片機技術, 以單片機為主要器件, 其編碼器與解碼器的生成為軟件方式。在實際應用中, 由于程序容易跑飛, 系統的可靠性能較差。基于FPGA的電子密碼鎖已經是現代生活中經常用到的工具之一,用于各類保險柜、房門、防盜門等等。用電子密碼鎖代替傳統的機械式密碼鎖,克服了機械式密碼鎖密碼量少、安全性能差的缺點。由于采用的是可編程邏輯器件FPGA,使得系統有相當大的靈活性,隨時可以進行硬件升級、擴展,而且系統設計完善以后還可以將主控的FPGA固化成一片ASIC,那么這塊ASIC就
5、可以作為專用的數字密碼鎖芯片。而且由于硬件可升級,還可隨時增加密碼位數或增加新的功能,使得密碼鎖有更高的安全性、可靠性和方便性。1.2 論文主要完成的工作課題主要解決系統硬件和軟件兩方面的問題。硬件方面要解決FPGA可編程器件與其外圍電路的接口設計的問題;軟件方面主要問題是利用Verilog HDL語言完成基于FPGA的電子密碼鎖的編程問題。除此之外,程序還要完成基本的密碼開鎖功能,并通過揚聲器長時間鳴叫報警。本設計是由FPGA可編程邏輯器件編程實現的控制電路,具體有按鍵指示、輸入錯誤提示、密碼有效指示、控制開鎖、控制報警等功能。它具有安全可靠、連接方便、簡單易用、結構緊湊、系統可擴展性好等特
6、點。2、 系統硬件設計2.1 系統設計方案2.1.1 系統功能需求分析本系統主要集中在以FPGA以核心外圍擴展設計,整個電路主要電子鎖具的組成框圖是以可編程邏輯器件(FPGA)為核心,配以相應硬件電路,設計一個密碼鎖,密碼為一個4位的十進制數,密碼固化在鎖內,用戶輸入密碼正確,則開鎖(綠燈亮);若不正確,則報警(紅燈亮)若用戶輸入密碼不正確,可以按復位鍵重新輸入密碼。 2.1.2 系統實現方案的論證比較方案一 :采樣臺灣凌陽科技有限公司推出的以凌陽自主研發的SPCE061A芯片為主控芯片,用一條下載線連接到計算機就可以實現在線仿真、在線調試、在線下載,低廉的價格保證了系統可靠開發;此外,61板
7、具有SOC概念、DSP功能和語音特色,為電子密碼鎖的語音報警提供了方便,但是基于單片機設計的密碼鎖外圍電路比較復雜,系統可靠性差,密碼的數量少,尤其是系統的程序不夠穩定,功率較大,需要專門的電源供電,所以不采用這個方案。 方案二:設計一種基于FPGA的電子密碼鎖的設計,用FPGA設計的系統已經是現代生活中經常用到的工具之一,通過鍵盤輸入密碼,用FPGA作為主控芯片,用數碼管顯示輸入的數字,如果出現錯誤便通過報警電路發出報警,主控芯片又可分為按鍵處理部分、控制部分和譯碼顯示部分用電子密碼鎖代替傳統的機械式密碼鎖。由于采用的是可編程邏輯器件FPGA,使得系統有相當大的靈活性,隨時可以進行硬件升級、
8、擴展。而且系統設計完善以后還可以將主控的FPGA固化成一片ASIC,那么這塊ASIC就可以作為專用的數字密碼鎖芯片。方案的論證比較 在實際應用中, 由于程序容易跑飛, 系統的可靠性能較差,而基于FPGA設計的電子密碼鎖克服了基于單片機設計密碼鎖的缺點。基于上述比較以上兩種方案,根據系統設計要求,采用方案二。2.1.3 系統方案的總體設計系統原理框圖本系統由主控芯片(FPGA),鍵盤,顯示電路,報警電路和開/關門電路組成,而主控芯片又可分為按鍵處理部分,控制部分和譯碼顯示部分。系統原理框系統原理框圖如圖2.1.3所示:圖2.1.3 系統總體框架總體設計原理本系統有8個按鍵,K0,K1,K2,K3
9、,K4,K5代表數字0-9共10個數字和1個確認鍵,1個復位鍵。密碼長度為四位,并且固化在鎖內,輸入正確密碼后,按確認鍵即可開門,本系統設置為綠燈亮。在輸入密碼的過程中,當用戶鍵入錯誤密碼時,報警燈紅燈亮。按下復位鍵,可使報警停止,同時清除所有密碼顯示。每輸入一位數字,密碼在數碼管上的顯示左移一位。即上電后,按確認鍵即可開門。門開后可通過鎖門按鈕關門,門關上后要再次輸入密碼才能開門。在輸入密碼的過程中,當用戶鍵入錯誤密碼時,系統就會報警,由揚聲器發出報警聲,當連續三次出現密碼錯誤時,則系統會長時間報警不止,這時必須按警報復位鍵方可停止。2.2 主控模塊2.2.1 主控芯片EP4CE6E22C8
10、的介紹主控芯片采用ACEX1K 系列的EP4CE6E22C8。Cyclone IV系列是當今Altera CPLD 中應 用前景最好的器件系列之一,該系列的FPGA 由邏輯陣列塊LAB(Logic array block)、 嵌入式陣列塊EAB(embedded array block)、快速互聯以及IO 單元構成,每個邏輯陣列塊 包含8 個邏輯單元LE(logic element)和一個局部互聯。每個邏輯單元則由一個4 輸入查找 表(LUT)、一個可編程觸發器、快速進位鏈、級連鏈組成,多個LAB 和多個EAB 則可通過快速通道互相連接3。EAB 是Cyclone IV系列器件在結構設計上的一
11、個重要部件,他是輸入 端口和輸出端口都帶有觸發器的一種靈活的RAM 塊,其主要功能是實現一些規模不太大的 FIFO、ROM、RAM 和雙端口RAM 等。2.3 鍵盤模塊按鍵方式分為8個獨立按鍵,K0,K1,K2,K3,K4,K5代表數字0-9共10個數字和1個確認鍵,1個復位鍵。考慮到按鍵數目不夠,采用了一位按鍵作為功能轉換按鍵;即前5位按鍵輸入04,同時按下功能轉換按鍵時,按鍵04即轉換為按鍵59,這就彌補了按鍵數目的不足。最后兩位按鍵設定為確認輸入按鍵和復位按鍵。密碼輸入完成后可以按確認鍵檢驗密碼的正誤,報警、輸入錯誤或者其他情況可以按復位按鍵重新輸入。按鍵上拉,當IO口被拉高電平,當IO
12、口檢測到高電平時,表示按鍵按下。部分按鍵控制電路如圖2.3所示:圖2.3 2.4 顯示模塊LED顯示塊是由發光二極管顯示字段的顯示器件。在單片機應用系統中通常使用的是7段LED,本設計將采用共陽極。共陽極LED顯示塊的發光二極管與陽極并接。數碼管顯示塊中共有8個發光二極管,其中7個發光二極管構成七筆字形“8”,1個發光二極管構成小數點。7段顯示塊與FPGA接口非常容易。只要將一個8位并行輸出與顯示塊的發光二極管引腳相連即可。8位并行輸出口輸出不同的字節數據即可獲得不同的數字或字符,如表5.1所示。通常將控制發光二極管的8位字節數據稱為段選碼。共陽極與共陰極的段選碼互為補數。顯示字符共陰極段選碼
13、共陽極段選碼顯示字符共陰極段選碼共陽極段選碼 0 3FH C0H C 39H C6H 1 06H F9H D 5EH A1H 2 5BH A4H E 79H 86H 3 4FH B0H B 7CH 83H 4 66H 99H F 71H 8EH 5 6DH 92H P 73H 8CH 6 7DH 82H U 3EH C1H 7 07H F8H L 31H CEH 8 7FH 80H Y 6EH 91H 9 6FH 90H A 77H 88H表2.4 LED顯示塊功能表三、芯片主控設計3.1 FPGA有限狀態機本設計是通過FPGA有限狀態機來實現,設計有限狀態機最開始的工作時要確定電路,包括哪些
14、狀態,比如某個電路包括四個狀態,S0,S1,S2,S3。然后對所有狀態給出一個狀態編碼,比如為狀態S0賦予編碼00,為狀態S1賦予編碼01,為狀態S2賦予編碼10,為狀態S3賦予編碼11。狀態編碼是狀態的標識,保存在寄存器當中,對于此編碼形式,只需一個2位的寄存器就可以了。FSM Encoding Style 主要有: Binary Encoding One Hot Encoding Gray Encoding 二進制與一位熱碼的特性比較: 表3.1 二進制與一位熱碼的特性比較 狀態機可以認為是組合邏輯和寄存器邏輯的特殊租戶,它一般包括兩個部分:組合邏輯部分和寄存器邏輯部分。寄存器用于存儲狀態
15、,組合電路用于狀態譯碼和產生輸出信號。狀態機的下一個狀態及輸出,不僅與輸入信號有關,而且還有寄存器當前所處的狀態有關。 根據輸出信號產生方法的不同,狀態機可以分成兩類:Mealy型和Moore型。Moore型狀態機的輸出只是當前狀態的函數,而Moore型狀態機的輸出只是當前狀態的函數,而Mealy型狀態機的輸出則是當前狀態和當前輸入狀態的函數。其原理如下兩圖:3.2 設計流程本次密碼鎖的設計,有限狀態機應該包括以下狀態:密碼為輸入前的等待狀態、輸入密碼時的等待狀態、輸入密碼正確時的通過狀態、輸入密碼錯誤時的警報狀態。圖3.3 主有效狀態機的狀態轉換圖其中當密碼輸入時又可包括以下狀態,正常輸入狀
16、態、異常輸入狀態(包括命令狀態)、輸入確認狀態。下面的圖(圖是在程序編譯后,tools->Netlist_Vewers->RTL Vewer得到的)表示了密碼輸入的時候的次狀態機,表示了4個密碼輸入的順序狀態,以及輸入完成后的等待確認狀態。圖3.4次有效狀態機的狀態轉換3.3 系統軟件設計總RTC級圖3.4 狀態編碼狀態編碼主要有二進制編碼、格雷編碼和一位獨熱編碼等方式。格雷編碼時,相鄰狀態每次只有一個比特位產生變化,這樣減少了瞬變的次數,也減少了產生毛刺和一些狀態的可能。采用一位獨熱編碼,雖然多用了觸發器,當可以有效節省和簡化組合電路。 對于寄存器數量多而邏輯相對缺乏的FPGA器
17、件來說,采用一位獨熱編碼可以有效提高電路的速度和可靠性,也有利于提高器件資源的利用率。將產生狀態的組合邏輯電路和用于保存狀態的寄存器分別寫在不同的always塊中。其中主要包括:輸出控制部分、警報計時部分、鎖打開后的計時部分、比較密碼部分、記錄密碼部分和記錄錯誤次數的部分3.5 密碼的輸入本次密碼鎖的密碼輸入采用FPGA芯片上的8位單個按鍵,考慮到按鍵數目不夠,采用了一位按鍵作為功能轉換按鍵;即前5位按鍵輸入04,同時按下功能轉換按鍵時,按鍵04即轉換為按鍵59,這就彌補了按鍵數目的不足。最后兩位按鍵設定為確認輸入按鍵和復位按鍵。密碼輸入完成后可以按確認鍵檢驗密碼的正誤,報警、輸入錯誤或者其他
18、情況可以按復位按鍵重新輸入。另外由于按鍵的時候同時會引起狀態機的轉換,所以如果按鍵的時候對按鍵判斷次數過多會產生狀態的過快轉換,記錄的密碼和數碼管的顯示就同時會出現錯誤,因此在按鍵部分加入了消除多重按鍵的程序,只檢測一次按鍵的下降沿,解決了這個問題。3.6 密碼的記錄與比較程序設定了一個寄存器用來記錄輸入的密碼。當次有效狀態機(即密碼輸入的狀態機)發生轉換并且有密碼輸入時,程序會記錄下輸入的密碼在寄存器的其中4位里面,最后次有效狀態轉換到確認密碼的狀態時,會將記錄下的密碼與固化在鎖內的密碼進行對比,正確即將主狀態機轉換到通過階段,錯誤則將狀態機轉換到報警階段。其中正確錯誤的狀態轉換是通過控制相
19、應的標志位實現的。 3.7 密碼的顯示密碼顯示采用數碼管動態掃描顯示,初始時顯示密碼為4位0,當輸入密碼后數碼管的第一位、第二位、第三位、第四位會依次顯示輸入的密碼,錯誤后復位可以重新輸入。密碼顯示采用的是記錄密碼的寄存器的數據,顯示掃描的掃描時間設置為1ms左右,這樣顯示不會出現閃爍或者殘影。4、 程序仿真下前面的輸入cmd的編碼: /輸入的數字編碼 09,enter,cancel one=4'b0001, two=4b0010,three=4'b0011,four=4'b0100,five=4'b0101, six=4'b0110,seven=4
20、39;b0111,eight=4'b1000,nine=4'b1001, zero=4'b1000,enter=4'b1010,cancel=4'b1011; 可以看到,在復位以后,輸入第1,2,3,4個密碼(依次為1111)后,passed變成高電平 當過了一定的時間后,passed變成低電平,重新計入鍵盤讀入值,進行下一輪的密碼辨別。 5、 結論本次課題設計完成的是基于FPGA的密碼鎖設計,通過一個多星期的不斷努力、克服各種困難,最終實現了任務目標。本次設計解決的主要問題是是利用verilog HDL語言完成基于FPGA的電子密碼鎖的編程問題。設計是
21、理論知識與實踐的完美結合,對于現代大學生的實踐能力是個很好的培養。短短的一個星期的時間的設計雖然短暫,但是它給我的收獲確實難忘,不僅僅在智能儀器方面有了很大的進步,而且在FPGA、Quartus軟件等方面也學到了不少在上課學不到的知識。這段時間我查閱到很多關于課程設計的書籍,對我幫助也很大。我覺得自己以前的盲目,現在明白了很多。也對我們專業動手實踐的興趣提高了很多。有了這些經歷對于我日后工作一定會有很大幫助。相信這次設計中學到的種種東西一定會存在我的腦海里,令我終身受益。在課程設計的過程中也可以看到我的不足,如原理知識掌握不實,曾經學過的知識如今卻不會應用,軟件的應用也不熟練,希望日后提供給我
22、們更多的鍛煉機會來培養我們的實踐能力。參考文獻1 高移南.遙控變號電子鎖J.電子世界,1994,07:152 許琦.基于FPGA 的電子密碼鎖設計J . 中國科技信息, 2007 (1) : 240-2413 劉韜,樓興華.FPGA數字電子系統設計與開發實例導航M.人民郵電出版社,2005.4 王金明.數字系統設計與Verilog HDL附 錄程序清單:module passwd_lock( clk0, /時鐘 pin_23 passed, /開鎖燈與警報燈 zero1, /按鍵0 pin_84 one1, /按鍵1 pin_85 two1, /按鍵2 pin_86 three1, /按鍵3
23、pin_87 four1, /按鍵4 pin_88 change, /功能選擇鍵pin_89 yes, /確認按鍵pin_90 resetb, /重輸按鍵pin_91 seg, /數碼管段選【7:0】 dig /數碼管位選【3:0】); input one1,two1,three1,four1,zero1,change; reg zero,one,two,three,four; input yes; input resetb; input clk0; /輸入時鐘信號 output 7:0 passed; /輸出信號 /為何要是8位?實際只用了2位/output 1:0 passed; /輸出信
24、號 output 7:0 seg;/段選 output 3:0 dig;/位選 reg 3:0 key; /按鍵存儲器reg RXBuf0,RXBuf1,RXBuf2,RXBuf3,RXBuf4; /緩存器,可用于按鍵消抖/display reg clk0_div; reg 2:0 digyi;/哪一位亮,用于數碼管數字移位reg 3:0 dig;/位選reg 3:0 seg0;/存儲按鍵按下的數字reg 7:0 seg; /段選reg 12:0 CNT_R0; reg 18:0 CNT_R1; reg clk1; reg 21:0 CNT_R2;reg clk2; reg 7:0 passe
25、d; /pass 8b'1000 0000 alarm 8b'0000 0001 waits 8b'0000 0000/*輸入與輸出的聲明部分,其中,clk0為輸入的時鐘信號,resetb為密碼復位的輸入信號,key為輸入命令, 需注意的時,key并不是總在表示密碼,也表示密碼的間隔,如當輸入4位密碼后需要一個確認“enter”信號, 當密碼輸入錯誤時,需要取消“cancel”信號,這些信號之間在設計中通過有限狀態轉換機實現。*/ parameter PASSWORD=16'b0001001100010100;/盛放密碼的參數 reg 15:0 password
26、;/輸入數值盛放寄存器 /輸入的數字編碼 always ( posedge clk1 ) begin /檢測線路的下降沿 RXBuf1 <= one1; one <= (RXBuf1 & ( one1 ); / RXFall1<=RXFall; end /消除多重按鍵 always ( posedge clk1 ) begin /檢測線路的下降沿 RXBuf0 <= zero1; zero <= (RXBuf0 & ( zero1 ); / RXFall1<=RXFall; end /消除多重按鍵 always ( posedge clk1
27、) 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 /檢測線路的下降沿 RXBuf4 <= four1; fou
28、r <= (RXBuf4 & ( four1 ); / RXFall1<=RXFall; end /消除多重按鍵 reg 2:0 main_state;/主狀態 reg 2:0 next_state;/下一個狀態 /主有限狀態轉換機的三個狀態:waits、pass、alarm parameter waits=3'b001, pass=3'b010, alarm=3'b100; /3個狀態編碼reg 2:0 sub_state; /從狀態機現狀態reg 2:0 next_sub_state; /從狀態機下一個狀態 /從有限狀態轉換機的五個狀態:firs
29、t、second、third、fourth、finishparameter first=3'b000,second=3'b001,third=3'b010,fourth=3'b011,finish=3'b100; /通過計時寄存器 reg 7:0 pass_count; /pass計時完后回到wait狀態/警報計時寄存器 reg 10:0 alarm_count; /alarm計時完后回到wait狀態/嘗試次數寄存器 reg 1:0 try_count; /輸入狀態寄存器:error和correct reg error; reg correct; reg
30、key_pressed_flag; / 鍵盤按下標志 /以上為中間狀態的一些寄存器和一些所用到的參數 /主機狀態機部分 always (posedge clk0) begin CNT_R2 <= CNT_R2 + 1'b1; if(CNT_R2 < 4000000) begin clk1 <= 1; end else begin clk1 <= 0; end end always(main_state or correct or error) /3位主狀態寄存器,1位輸入狀態寄存器correct,errorbegin case(main_state) /判斷主狀
31、態寄存器 waits: /3b'001 if(correct=1) begin/由waits轉換到pass的條件 next_state=pass; end/3位next_state寄存器寫入等待狀態 else if(error=1&&try_count=1) beginnext_state=alarm; end/由waits轉換到alarm的條件 else beginnext_state=waits; end pass: if(pass_count7=1) begin/由pass轉換到waits的條件 計時器時間到,由通過狀態變成等待狀態 next_state=wait
32、s; end else begin next_state=pass; end alarm: if(alarm_count10=1) begin/ 由alarm轉換到waits的條件 警告時間到達時變成等待狀態next_state=waits; end else beginnext_state=alarm;end/否則繼續警告 default:/默認狀態:waits next_state=waits; endcase end /狀態轉換 always(posedge clk1 or negedge resetb) begin if(!resetb) main_state<=waits; e
33、lse main_state<=next_state; end /輸出控制部分 always(posedge clk1 or negedge resetb) begin if(!resetb)/復位時,開鎖輸出與警報輸出都為零 begin passed<=8'b10000001; /passed<=2b'11; end else if(main_state=pass)/當主機狀態為pass時,開鎖 begin passed<=8'b00000001; /passed<=2'b01; end else if(main_state=al
34、arm)/當主機狀態為alarm時,警報 begin passed<=8'b10000000; /passed<=2'b10; end else/其它狀態復位 begin passed<=8'b10000001; /passed<=2b'11; end end /alarm一段時間后,自動進入waits狀態 /alarm定時器 always(posedge clk1 or negedge resetb) begin if(!resetb) alarm_count<=0; else if(main_state=alarm)/alarm
35、狀態計時器alarm定時器加1 alarm_count<=alarm_count+1; else alarm_count<=0; end /鎖pass以后計數開始,當規定的時間到達后自動上鎖,并進入waits狀態 /pass定時器 always(posedge clk1 or negedge resetb) begin if(!resetb) pass_count<=0; else if(main_state=pass) /pass狀態計時器pass定時器加1 pass_count<=pass_count+1; else pass_count<=0; end /從
36、狀態機,用于輸入4位密碼 always(posedge clk1 or negedge resetb) begin if(!resetb) sub_state<=first; else sub_state<=next_sub_state; end always(!zero|!one|!two|!three|!four|!yes or sub_state) /always(key or sub_state) begin if(key_pressed_flag|!yes) if(!yes)/4個密碼輸完時,進行確認 next_sub_state=first; /default為輸入了某
37、位密碼,輸入完自動將狀態轉入下一位 else if (!zero|!one|!two|!three|!four) /zero1,one1,two1,three1,four1case(sub_state) first: next_sub_state=second; second: next_sub_state=third; third: next_sub_state=fourth; fourth: next_sub_state=finish; /當輸入完4位密碼以后狀態保持不變,等待輸入enter命令 finish: next_sub_state=finish; default: next_su
38、b_state=sub_state; endcase else next_sub_state=sub_state; end /比較密碼,產生正確或者錯誤信息 always(posedge clk1 or negedge resetb) begin if(!resetb) begin correct<=0; error<=0; end else if(!key_pressed_flag&&!yes) if(password=PASSWORD)/密碼正確時begin correct<=1; error<=0; end else/密碼錯誤時 begin err
39、or<=1; correct<=0; end else begin correct<=0; error<=0; end end /記錄密碼 always(posedge clk1 or negedge resetb) begin if(!resetb) begin password<=0; endelse if(!zero|!one|!two|!three|!four) begincase(sub_state) first: password15:12<=key; second: password11:8<=key; third: password7:
40、4<=key; fourth: password3:0<=key; default: password<=password; endcase endelse beginpassword<=password; endend /記錄錯誤次數 always(posedge clk1 or negedge resetb) begin if(!resetb) begintry_count<=0; endelse if(error=1) begintry_count<=try_count+1; endelse if(main_state=pass|main_state=
41、alarm) begintry_count<=0; endend /reg key_pressed_flag; / 鍵盤按下標志 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;key<=4'b0000; end else if(!one&&change) begin key
42、_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&&change) begin key_pressed_flag<=1;key<=4'b0100; end
43、else if(!zero&&!change) 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(!y
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DBJ04-T488-2025 《綠道建設標準》
- 人教版(2019) 必修第一冊 Unit 5 Languages Around the World Reading and thinking 課件
- Brand KPIs for neobanking Aspiration in the United States-英文培訓課件2025.4
- 汽車傳感器與檢測技術電子教案:萬用表檢測傳感器故障的方法
- 兩大主流資本結構理論概述
- 梅州市房地產市場專題調研報告
- 單位人員怎樣管理制度
- 培訓學校規則管理制度
- 中考地理復習教案專題三 自然地理要素之間的相互聯系-綜合思維
- 從化夏天拓展活動方案
- SA8000:2014社會責任-中文
- 化工企業安全管理評估手冊 依據化工過程安全管理導則AQ3034-2022
- 四年級如何進行有效期末復習課件
- 北京開放大學《集裝箱班輪運輸業務與法律》終結性考試復習題庫(附答案)
- DB32/T 4700-2024 蓄熱式焚燒爐系統安全技術要求
- 腫瘤醫院推廣方案
- 公路混凝土橋梁火災后安全性能評定技術規程
- 公路工程安全風險辨識與防控手冊
- 藥品共線生產質量風險管理指南
- 海南大學本科畢業論文正文范文
- XX跨境電商公司運營人員晉升及淘汰制度方案
評論
0/150
提交評論