版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、EDA仿真與實踐實習 學 院: 信息科學與工程學院 課題名稱: 硬件描述語言設計 -基于VHDL的電子密碼鎖的設計 班 級: 學 生:學 號:指導教師:1 引言在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統的機械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學技術的不斷發(fā)展,人們對日常生活中的安全保險器件的要求越來越高.為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應運而生?;贓DA技術設計的電子密碼鎖。以其價格便宜、使用方便、安全性高、成本低、功耗低、易操
2、作等優(yōu)點,受到了人們的普遍關注。而以可編程邏輯器件(FBDA)為設計載體,以硬件描述語言(VHDL)為主要表達方式,以Quartus5。1開發(fā)軟件等為設計工具設計的電子密碼鎖,由于其能夠實現密碼輸入、密碼校驗、密碼設置和更改等功能,因此,能夠滿足社會對安全防盜的需求。本設計的各個模塊由相應的VHDL程序具體實現,并在Quartus5。1環(huán)境下進行了整體電路的模擬仿真,最終實現“密碼鎖控制器設計”的要求。2 設計內容和要求2。1 設計內容:題目:電子密碼鎖內容:設計一個4位串行數字鎖。(1)開鎖代碼為4位二進制,當輸入代碼的位數與鎖內給定的密碼一致,且按規(guī)定程序開鎖時,方可開鎖,并點亮一個指示燈
3、.否則進入“錯誤”狀態(tài),并發(fā)出報警信號.(2)鎖內的密碼可調,且預置方便,保密性好。(3)串行數字鎖的報警由點亮一個燈,直到按下復位開關,報警才停下。此時,數字鎖又自動等待下一個開鎖狀態(tài)。要求:(1)通過查閱相關技術資料,詳細描述電子密碼鎖的基本原理。(2)編寫電子密碼鎖的Verilog HDL或VHDL程序,并仿真編譯下載驗證.(3)給出完整的系統頂層模塊圖與波形仿真圖.3 設計分案密碼鎖控制器是硬件與軟件的結合。根據設計要求,決定以FBDA芯片和VHDL語言設計此電子密碼鎖。用一片FBDA芯片實現,從而大大簡化了系統結構,降低了成本,提高了系統的保密性和可靠性。這種設計不僅簡化了系統結構,
4、降低了成本,更提高了系統的可靠性和保密性。另外,采用可編程邏輯器件開發(fā)的數字系統,方便地升級和改進。3.1 系統總框圖本系統的硬件部分主要由密碼鎖控制電路、密碼鎖顯示電路、LED顯示電路、報警電路、密碼更改與設置電路組成。整體系統框圖如下圖2.1所示.密碼鎖顯示電路密碼鎖顯示電路報警電路密碼鎖控制電路LED顯示電路密碼鎖總框圖3.2密碼鎖的內部結構及主要功能3。2.1密碼鎖的主要功能密碼鎖控制器的主要功能有:(1)密碼輸入:有二個按鍵來控制(分別代表0和1),每按下一個鍵,要求在數碼管上顯示,并依次左移。(2)密碼校驗:如果有按鍵按下,直到松開該按鍵;紅綠燈指示門的狀態(tài),也就是密碼校驗結果,如
5、果密碼校驗正確,綠亮起,否則如果密碼校驗錯誤紅燈亮,并鳳鳴器響,表明密碼錯誤。(3)錯誤報警:密碼輸入錯誤開始報警.(4)密碼修改:輸入密碼正確后4秒內按按鍵輸入要設置和更改的密碼,按按鍵確認密碼設置與更改,則密碼設置成功4 系統硬件電路4.1 密碼鎖的顯示模塊段數碼管是電子開發(fā)過程中常用的輸出顯示設備。在本設計中使用的是8個四位一體、共陰極型七段數碼管。其單個靜態(tài)數碼管如下圖所示。由于七段數碼管公共端連接到GND(共陰極型),當數碼管的中的一個段被輸入高電平,則相應的這一段被點亮.反之則不亮。共陽極性的數碼管與之相反。四位一體的七段數碼管在單個靜態(tài)數碼管的基礎上加入了用于選擇哪一位數碼管的位
6、選信號端口。八個數碼管的a、b、c、d、e、f、g、h、dp都連在了一起,8個數碼管分別由各自的位選信號來控制,被選通的數碼管顯示數據,其余關閉。4.2 密碼鎖控制模塊該模塊的作用是將輸入的密碼(暫時寄存于 ACC中)跟已經存儲的密碼(REG中的密碼信息)進行對比,如果一樣,則密碼鎖開鎖。而在通過密碼驗證后可以按按鍵設定密碼.在這里值得注意的是有一個密碼“0000”為開始密碼,如果改名密碼了但是又忘記了密碼,重新下載之后的初始密碼只要輸入的密碼為“0000”則都可通過密碼鎖.模塊lock是整個設計的核心 ,它實現密碼鎖的邏輯功能.在任何時候按動密碼初始化按鍵內密碼設置為程序初始化密碼值(在本模
7、塊程序中此值為“0000"代碼為4位二進制數 ,當輸入代碼的位數和位值與鎖內給定的密碼一致 ,且按規(guī)定程序開鎖時 ,方可開鎖 ,并點亮開鎖指示燈(緑燈)亮。否則 ,系統進入 “錯誤”狀態(tài) ,并發(fā)出報警信號。串行數字鎖的報警方式是點亮指示燈(紅燈) ,并使喇叭鳴叫 ,直到按下復位開關 ,報警才停止。此時 ,數字鎖又自動進入等待下一次開鎖的狀態(tài)。該4位串行電子密碼鎖設置4位二進制密碼 ,要求鎖內給定的密碼是可調的 ,且設置方便 ,保密性好。其具體操作分為輸入密碼和修改密碼兩部分4。2.1輸入密碼密碼輸入值的比較主要有兩部分 ,密碼位數和內容 ,任何一個條件不滿足 ,都不能打開鎖。若鎖內密
8、碼為 “0000” , key2和key1置低電平 ,分別表示輸入 “1" 和 “0" .輸入密碼前先進行復位操作 ,再按著從密碼最低位到最高位的順序依次正確輸入0000,會在數碼管逐一顯示。經檢驗 ,輸入的密碼等于鎖內預先設置的密碼密碼鎖開啟信號,鎖開啟。同時,密碼修改控制信號rw置低電平.若在輸入密碼的過程中 ,4位二進制密碼出現輸入錯誤 ,那么鎖不能開啟 ,同時 ,指示燈紅燈亮 ,發(fā)出報警信號。直到按下復位開關 ,報警才停止。此時 ,數字鎖又自動進入等待下一次開鎖的狀態(tài)。4。2.2修改密碼為防止任意進行密碼修改 ,必須在正確輸入密碼后 ,才能重新設置密碼。輸入正確密碼
9、后 ,鎖打開 ,同時 ,密碼修改控制信號按鍵rw置低電平 ,就可直接進行修改密碼的操作。修改密碼實質就是用輸入的新密碼去取代原來的舊密碼,按確定按鍵ok,存儲新密碼時。5 VHDL程序設計密碼鎖控制器的各個功能模塊都是通過VHDL語言來完成的.本設計由密碼鎖顯示顯示模塊、分頻模塊、密碼輸入及校驗模塊、報警模塊、密碼更改與設置模塊幾部分組成,各模塊分工合作,最后達到密碼鎖控制器設計的要求。表4-1 程序的管腳分配表端口名對應FBGA管腳說明clkP2時鐘為50HzKey1AC23按下按鍵代表為“0”Key2AB21按下按鍵代表為“1”startY14開始輸入密碼okAA13確定輸入密碼reset
10、AC15復位rwV23該密碼clrU23清零redM19密碼錯誤紅燈亮greenT22密碼正確緑燈亮beepA14蜂鳴器Seg7。0D16,D17,G13,D15,C15,C16,G15,J13代表數碼管的片內顯示Dig7.。0E15,K18,E22,C17,H15,K16,H12,D18代表數碼管的片外顯示VHDL程序總代碼libraryieee;use ieee.std_logic_1164。all;useieee.std_logic_arith。all;useieee。std_logic_unsigned。all;entity lock isport(key1,key2:instd_lo
11、gic;clk,start,ok,reset,rw,clr: in std_logic;red,green,beep:outstd_logic:='1;dig:outstd_logic_vector(7 downto 0);seg:outstd_logic_vector(7 downto 0) );end lock;architecture rt1 of lock issignalkeyin,password:std_logic_vector(3 downto 0):=”0000"signal open1:std_logic:='0;signal beep1:std_
12、logic:=1;signala,shuru:std_logic;signal count: std_logic_vector(2 downto 0):=”000";signal temp: std_logic_vector(1 downto 0):=”00”;beginprocess(clk)variable m:integer range 0 to 10; beginifclk'event and clk=1thenif m=9 thenm:=0; a='1;elsem:=m+1; a<=0'end if;end if;end process;pro
13、cess(clk,start,ok,clr,rw,reset) beginifclk'event and clk='1thenif reset=0 thenred=1';green='1;beep1=1;open1=0'keyin<=”0000";shuru<=0;count="000”; end if;if start='0' thenshuru=1'end if;ifrw=0 and open1=1thenshuru='1;count=”000”;end if;if clr=0 then
14、 keyin<="0000";count=”000”;shuru<=1;elsif a='1' and shuru=1 thenif key1='0' thenkeyin<=keyin(2 downto 0)'0;elsif key2='0 thenkeyin<=keyin(2 downto 0)&'1;end if;if count=”011” thenshuru='0;count=count+1; elsecount<=count+1; end if; end if;i
15、f ok=0and open1='0 then if (keyin=password)thenred='1';green='0';open1=1;elsered<=0';green='1;beep1=0;open1=0;end if;end if;if ok='0and open1='1'thenpassword<=keyin; end if;end if;end process;process(clk,start,ok,clr,rw,reset)variable g:integer range 0 t
16、o 49999999; beginifclk'event and clk='1then if g=49999999 then g:=0;elseg:=g+1;end if;if g<=24999999 and beep1=0 thenbeep=0;elsebeep=1;end if;end if; end process;process(clk)variable n:integer range 0 to 50000;beginifclk'event and clk=1thenif n=49999 thenn:=0;if temp=”11”thentemp<=
17、"00”;elsetemp=temp+1;end if;elsen:=n+1;end if;if count=”001” thencase temp iswhen ”00” = dig="01111111” ; ifkeyin(0)=0then seg<=”11000000”;elseseg<=”11111001”;end if;when others =seg=”11111111” ; end case ; elsif count=”010” thencase temp iswhen ”00" = dig<="01111111” ;
18、ifkeyin(1)=0then seg=”11000000"elseseg<=”11111001";end if; when "01” => dig=”10111111” ; ifkeyin(0)=0then seg="11000000"elseseg<="11111001”;end if;when others =seg<=”11111111" ;end case ;elsif count=”011” thencase temp iswhen ”00” => dig=”01111111&qu
19、ot; ; ifkeyin(2)=0then seg=”11000000”;elseseg="11111001”;end if;when ”01" => dig=”10111111” ; ifkeyin(1)='0then seg=”11000000”;elseseg=”11111001"end if;when "10” = dig=”11011111” ; ifkeyin(0)='0then seg=”11000000”;elseseg=”11111001”;end if;when others =seg<="11
20、111111” ; end case ; elsif count="100" then case temp iswhen ”00” = dig<=”01111111” ;ifkeyin(3)=0'then seg=”11000000”;elseseg=”11111001”;end if; when ”01" => dig=”10111111” ; ifkeyin(2)='0'then seg<="11000000";elseseg=”11111001”;end if; when "10” =&
21、gt; dig=”11011111" ; ifkeyin(1)=0then seg=”11000000"elseseg<=”11111001”;end if;when ”11” = dig="11101111" ; ifkeyin(0)=0'then seg<="11000000”;elseseg="11111001"end if; when others =>null;end case ;elsedig="11111111" ;seg<=”11111111"en
22、d if;end if;end process ;end rt1; 6 系統仿真當各個模塊分別編譯成功后 ,則創(chuàng)建一個個元件符號。再用圖形編輯器將各元件模塊組裝起來 ,這就是本設計中最頂層的圖形設計文件。頂層圖形設計文件 lock。 gdf如圖所示 ,這個結構框圖說明了整個系統的外部輸入和輸出情況.為了獲得與目標器件對應的、精確的時序仿真文件譯了。編譯成功后進行仿真。首先建立波形文件。波形文件 lock. scf建好并存盤后 ,選擇菜單 “new” “Vector Waveform File",啟動仿真操作 ,結束后觀察仿真波形.本設計中 ,仿真波形如圖所示。當給初始密碼輸入信號 LC 一個低電平時 ,就將程序預先設定的密碼( “0000” )裝入 lock 中.按下reset后,系統復位 ,處于輸入密碼狀態(tài)。輸入的開鎖密碼串行順序裝入 ,。密碼輸入完畢后 ,比較輸入的密碼是否等于預先設定的密碼,若相等 ,鎖開啟。如圖所示7 總結這次密碼鎖的設計過程表明,用VHDL可以快速、靈活地設計出符合要求的密碼鎖控制器,而且操作簡單。可以實現
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考數學一輪總復習 必考解答題 模板成形練 理 蘇教版
- 2024年09月安徽2024年徽商銀行宣城分行校園招考筆試歷年參考題庫附帶答案詳解
- 2024年09月北京2024年浦發(fā)銀行北京分行校園招考筆試歷年參考題庫附帶答案詳解
- 2024年09月北京2024年北京順義銀座村鎮(zhèn)銀行秋季校園招考筆試歷年參考題庫附帶答案詳解
- 2024年09月2024中國農業(yè)銀行研發(fā)中心秋季校園招考筆試歷年參考題庫附帶答案詳解
- 2024年08月湖北省有色礦業(yè)集團財務有限公司面向社會招考2名工作人員筆試歷年參考題庫附帶答案詳解
- 2024年08月招商銀行廣州分行2024秋季校園招考筆試歷年參考題庫附帶答案詳解
- 2024年08月恒豐銀行深圳分行社會招考長期筆試歷年參考題庫附帶答案詳解
- 2024年08月貴州2024年中國工商銀行貴州省分行秋季校園招考筆試歷年參考題庫附帶答案詳解
- 2024年08月浙江浦發(fā)銀行杭州分行社會招考(84)筆試歷年參考題庫附帶答案詳解
- NB/T 11536-2024煤礦帶壓開采底板井下注漿加固改造技術規(guī)范
- 2024年九年級上德育工作總結
- 《組織與胚胎學》課程期末考試復習題庫及答案
- (八省聯考)河南省2025年高考綜合改革適應性演練 化學試卷(含答案)
- 2024年儲罐呼吸閥項目可行性研究報告
- 控制特需醫(yī)療服務規(guī)模管理措施
- 部編版三年級上冊道德與法治期末測試卷帶答案(鞏固)
- 教師個人工作業(yè)績總結范文
- 《中華人民共和國政府采購法》專題培訓
- 鄭州大學《高等代數》2023-2024學年第一學期期末試卷
- 對銀行領導班子的評價意見和建議范文(3篇)
評論
0/150
提交評論