




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、EDA仿真與實(shí)踐實(shí)習(xí) 學(xué) 院: 信息科學(xué)與工程學(xué)院 課題名稱(chēng): 硬件描述語(yǔ)言設(shè)計(jì) 基于VHDL的電子密碼鎖的設(shè)計(jì) 班 級(jí): 學(xué) 生: 學(xué) 號(hào): 指導(dǎo)教師: 1 引言在日常的生活和工作中, 住宅與部門(mén)的安全防范、單位的文件檔案、財(cái)務(wù)報(bào)表以及一些個(gè)人資料的保存多以加鎖的辦法來(lái)解決。若使用傳統(tǒng)的機(jī)械式鑰匙開(kāi)鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對(duì)日常生活中的安全保險(xiǎn)器件的要求越來(lái)越高。為滿(mǎn)足人們對(duì)鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運(yùn)而生?;贓DA技術(shù)設(shè)計(jì)的電子密碼鎖。以其價(jià)格便宜、使用方便、安全性高、成本低、功耗低、
2、易操作等優(yōu)點(diǎn),受到了人們的普遍關(guān)注。而以可編程邏輯器件(FBDA)為設(shè)計(jì)載體,以硬件描述語(yǔ)言(VHDL)為主要表達(dá)方式,以Quartus5.1開(kāi)發(fā)軟件等為設(shè)計(jì)工具設(shè)計(jì)的電子密碼鎖,由于其能夠?qū)崿F(xiàn)密碼輸入、密碼校驗(yàn)、密碼設(shè)置和更改等功能,因此,能夠滿(mǎn)足社會(huì)對(duì)安全防盜的需求。本設(shè)計(jì)的各個(gè)模塊由相應(yīng)的VHDL程序具體實(shí)現(xiàn),并在Quartus5.1環(huán)境下進(jìn)行了整體電路的模擬仿真,最終實(shí)現(xiàn)“密碼鎖控制器設(shè)計(jì)”的要求。2 設(shè)計(jì)內(nèi)容和要求2.1 設(shè)計(jì)內(nèi)容:題目:電子密碼鎖內(nèi)容:設(shè)計(jì)一個(gè)4位串行數(shù)字鎖。(1)開(kāi)鎖代碼為4位二進(jìn)制,當(dāng)輸入代碼的位數(shù)與鎖內(nèi)給定的密碼一致,且按規(guī)定程序開(kāi)鎖時(shí),方可開(kāi)鎖,并點(diǎn)亮一個(gè)指
3、示燈。否則進(jìn)入“錯(cuò)誤”狀態(tài),并發(fā)出報(bào)警信號(hào)。(2)鎖內(nèi)的密碼可調(diào),且預(yù)置方便,保密性好。(3)串行數(shù)字鎖的報(bào)警由點(diǎn)亮一個(gè)燈,直到按下復(fù)位開(kāi)關(guān),報(bào)警才停下。此時(shí),數(shù)字鎖又自動(dòng)等待下一個(gè)開(kāi)鎖狀態(tài)。要求:(1)通過(guò)查閱相關(guān)技術(shù)資料,詳細(xì)描述電子密碼鎖的基本原理。(2)編寫(xiě)電子密碼鎖的Verilog HDL或VHDL程序,并仿真編譯下載驗(yàn)證。(3)給出完整的系統(tǒng)頂層模塊圖與波形仿真圖。3 設(shè)計(jì)分案 密碼鎖控制器是硬件與軟件的結(jié)合。根據(jù)設(shè)計(jì)要求,決定以FBDA芯片和VHDL語(yǔ)言設(shè)計(jì)此電子密碼鎖。用一片F(xiàn)BDA芯片實(shí)現(xiàn),從而大大簡(jiǎn)化了系統(tǒng)結(jié)構(gòu),降低了成本,提高了系統(tǒng)的保密性和可靠性。這種設(shè)計(jì)不僅簡(jiǎn)化了系統(tǒng)
4、結(jié)構(gòu),降低了成本,更提高了系統(tǒng)的可靠性和保密性。另外,采用可編程邏輯器件開(kāi)發(fā)的數(shù)字系統(tǒng),方便地升級(jí)和改進(jìn)。3.1 系統(tǒng)總框圖本系統(tǒng)的硬件部分主要由密碼鎖控制電路、密碼鎖顯示電路、LED顯示電路、報(bào)警電路、密碼更改與設(shè)置電路組成。整體系統(tǒng)框圖如下圖2.1所示。密碼鎖顯示電路密碼鎖顯示電路報(bào)警電路密碼鎖控制電路LED顯示電路密碼鎖總框圖3.2 密碼鎖的內(nèi)部結(jié)構(gòu)及主要功能3.2.1密碼鎖的主要功能密碼鎖控制器的主要功能有:(1)密碼輸入:有二個(gè)按鍵來(lái)控制(分別代表0和1),每按下一個(gè)鍵,要求在數(shù)碼管上顯示,并依次左移。(2)密碼校驗(yàn):如果有按鍵按下,直到松開(kāi)該按鍵;紅綠燈指示門(mén)的狀態(tài),也就是密碼校驗(yàn)
5、結(jié)果,如果密碼校驗(yàn)正確,綠亮起,否則如果密碼校驗(yàn)錯(cuò)誤紅燈亮,并鳳鳴器響,表明密碼錯(cuò)誤。(3)錯(cuò)誤報(bào)警:密碼輸入錯(cuò)誤開(kāi)始報(bào)警。(4)密碼修改:輸入密碼正確后4秒內(nèi)按按鍵輸入要設(shè)置和更改的密碼,按按鍵確認(rèn)密碼設(shè)置與更改,則密碼設(shè)置成功4 系統(tǒng)硬件電路4.1 密碼鎖的顯示模塊段數(shù)碼管是電子開(kāi)發(fā)過(guò)程中常用的輸出顯示設(shè)備。在本設(shè)計(jì)中使用的是8個(gè)四位一體、共陰極型七段數(shù)碼管。其單個(gè)靜態(tài)數(shù)碼管如下圖所示。由于七段數(shù)碼管公共端連接到GND(共陰極型),當(dāng)數(shù)碼管的中的一個(gè)段被輸入高電平,則相應(yīng)的這一段被點(diǎn)亮。反之則不亮。共陽(yáng)極性的數(shù)碼管與之相反。四位一體的七段數(shù)碼管在單個(gè)靜態(tài)數(shù)碼管的基礎(chǔ)上加入了用于選擇哪一位數(shù)
6、碼管的位選信號(hào)端口。八個(gè)數(shù)碼管的a、b、c、d、e、f、g、h、dp都連在了一起,8個(gè)數(shù)碼管分別由各自的位選信號(hào)來(lái)控制,被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。4.2 密碼鎖控制模塊 該模塊的作用是將輸入的密碼 (暫時(shí)寄存于 ACC中)跟已經(jīng)存儲(chǔ)的密碼(REG中的密碼信息)進(jìn)行對(duì)比,如果一樣,則密碼鎖開(kāi)鎖。而在通過(guò)密碼驗(yàn)證后可以按按鍵設(shè)定密碼。在這里值得注意的是有一個(gè)密碼“0000”為開(kāi)始密碼,如果改名密碼了但是又忘記了密碼,重新下載之后的初始密碼只要輸入的密碼為“0000”則都可通過(guò)密碼鎖。模塊lock是整個(gè)設(shè)計(jì)的核心 ,它實(shí)現(xiàn)密碼鎖的邏輯功能。在任何時(shí)候按動(dòng)密碼初始化按鍵內(nèi)密碼設(shè)置為程序初始化密
7、碼值(在本模塊程序中此值為 “0000”代碼為 4 位二進(jìn)制數(shù) ,當(dāng)輸入代碼的位數(shù)和位值與鎖內(nèi)給定的密碼一致 ,且按規(guī)定程序開(kāi)鎖時(shí) ,方可開(kāi)鎖 ,并點(diǎn)亮開(kāi)鎖指示燈(緑燈)亮。否則 ,系統(tǒng)進(jìn)入 “錯(cuò)誤”狀態(tài) ,并發(fā)出報(bào)警信號(hào)。串行數(shù)字鎖的報(bào)警方式是點(diǎn)亮指示燈(紅燈) ,并使喇叭鳴叫 ,直到按下復(fù)位開(kāi)關(guān) ,報(bào)警才停止。此時(shí) ,數(shù)字鎖又自動(dòng)進(jìn)入等待下一次開(kāi)鎖的狀態(tài)。該 4 位串行電子密碼鎖設(shè)置 4 位二進(jìn)制密碼 ,要求鎖內(nèi)給定的密碼是可調(diào)的 ,且設(shè)置方便 ,保密性好。其具體操作分為輸入密碼和修改密碼兩部分4.2.1輸入密碼密碼輸入值的比較主要有兩部分 ,密碼位數(shù)和內(nèi)容 ,任何一個(gè)條件不滿(mǎn)足 ,都不能
8、打開(kāi)鎖。若鎖內(nèi)密碼為 “0000” , key2 和 key1 置低電平 ,分別表示輸入 “1” 和 “0” 。輸入密碼前先進(jìn)行復(fù)位操作 ,再按著從密碼最低位到最高位的順序依次正確輸入0000,會(huì)在數(shù)碼管逐一顯示。經(jīng)檢驗(yàn) ,輸入的密碼 等于鎖內(nèi)預(yù)先設(shè)置的密碼密碼鎖開(kāi)啟信號(hào),鎖開(kāi)啟。同時(shí),密碼修改控制信號(hào)rw置低電平。若在輸入密碼的過(guò)程中 ,4 位二進(jìn)制密碼出現(xiàn)輸入錯(cuò)誤 ,那么鎖不能開(kāi)啟 ,同時(shí) ,指示燈紅燈 亮 ,發(fā)出報(bào)警信號(hào) 。直到按下復(fù)位開(kāi)關(guān) ,報(bào)警才停止。此時(shí) ,數(shù)字鎖又自動(dòng)進(jìn)入等待下一次開(kāi)鎖的狀態(tài)。4.2.2修改密碼為防止任意進(jìn)行密碼修改 ,必須在正確輸入密碼后 ,才能重新設(shè)置密碼。輸
9、入正確密碼后 ,鎖打開(kāi) ,同時(shí) ,密碼修改控制信號(hào)按鍵rw 置低電平 ,就可直接進(jìn)行修改密碼的操作。修改密碼實(shí)質(zhì)就是用輸入的新密碼去取代原來(lái)的舊密碼, 按確定按鍵ok, 存儲(chǔ)新密碼時(shí).5 VHDL程序設(shè)計(jì)密碼鎖控制器的各個(gè)功能模塊都是通過(guò)VHDL語(yǔ)言來(lái)完成的。本設(shè)計(jì)由密碼鎖顯示顯示模塊、分頻模塊、密碼輸入及校驗(yàn)?zāi)K、報(bào)警模塊、密碼更改與設(shè)置模塊幾部分組成,各模塊分工合作,最后達(dá)到密碼鎖控制器設(shè)計(jì)的要求。表4-1 程序的管腳分配表端口名對(duì)應(yīng)FBGA管腳說(shuō)明clkP2時(shí)鐘為50HzKey1AC23按下按鍵代表為“0”Key2AB21按下按鍵代表為“1”startY14開(kāi)始輸入密碼okAA13確定輸
10、入密碼resetAC15復(fù)位rwV23該密碼clrU23清零redM19密碼錯(cuò)誤紅燈亮greenT22密碼正確緑燈亮beepA14蜂鳴器Seg7.0D16,D17,G13,D15,C15,C16,G15,J13代表數(shù)碼管的片內(nèi)顯示Dig7.0E15,K18,E22,C17,H15,K16,H12,D18代表數(shù)碼管的片外顯示VHDL程序總代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity lock isport(key1,key
11、2:in std_logic; clk,start,ok,reset,rw,clr: in std_logic; red,green,beep:out std_logic:='1' dig:out std_logic_vector(7 downto 0); seg:out std_logic_vector(7 downto 0) );end lock;architecture rt1 of lock issignal keyin,password:std_logic_vector(3 downto 0):="0000"signal open1:std_log
12、ic:='0'signal beep1:std_logic:='1'signal a,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; begin if clk'event and clk='1'then if m=9 then
13、 m:=0; a<='1' else m:=m+1; a<='0' end if; end if;end process;process(clk,start,ok,clr,rw,reset) begin if clk'event and clk='1'then if reset='0' then red<='1'green<='1'beep1<='1'open1<='0'keyin<="0000"s
14、huru<='0'count<="000" end if; if start='0' then shuru<='1' end if; if rw='0' and open1='1'then shuru<='1'count<="000" end if; if clr='0' then keyin<="0000"count<="000"shuru<='1
15、' elsif a='1' and shuru='1' then if key1='0' then keyin<=keyin(2 downto 0)&'0' elsif key2='0' then keyin<=keyin(2 downto 0)&'1' end if; if count="011" then shuru<='0' count<=count+1; else count<=count+1; end
16、 if; end if; if ok='0'and open1='0' then if (keyin=password)then red<='1'green<='0'open1<='1' else red<='0'green<='1'beep1<='0'open1<='0' end if; end if; if ok='0'and open1='1'then password&l
17、t;=keyin; end if; end if;end process;process(clk,start,ok,clr,rw,reset)variable g:integer range 0 to 49999999; begin if clk'event and clk='1'then if g=49999999 then g:=0; else g:=g+1; end if; if g<=24999999 and beep1='0' then beep<='0' else beep<='1' end
18、if; end if; end process;process(clk)variable n:integer range 0 to 50000; beginif clk'event and clk='1'then if n=49999 then n:=0; if temp="11"then temp<="00" else temp<=temp+1; end if; else n:=n+1; end if; if count="001" then case temp is when "00&
19、quot; => dig<="01111111" ; if keyin(0)='0'then seg<="11000000" else seg<="11111001"end if; when others =>seg<="11111111" ; end case ; elsif count="010" then case temp is when "00" => dig<="01111111"
20、 ; if keyin(1)='0'then seg<="11000000" else seg<="11111001"end if; when "01" => dig<="10111111" ; if keyin(0)='0'then seg<="11000000" else seg<="11111001"end if; when others =>seg<="11111111"
21、; ; end case ; elsif count="011" then case temp is when "00" => dig<="01111111" ; if keyin(2)='0'then seg<="11000000" else seg<="11111001"end if; when "01" => dig<="10111111" ; if keyin(1)='0'then
22、 seg<="11000000" else seg<="11111001"end if; when "10" => dig<="11011111" ; if keyin(0)='0'then seg<="11000000" else seg<="11111001"end if; when others =>seg<="11111111" ; end case ; elsif count=&qu
23、ot;100" then case temp is when "00" => dig<="01111111" ; if keyin(3)='0'then seg<="11000000" else seg<="11111001"end if; when "01" => dig<="10111111" ; if keyin(2)='0'then seg<="11000000"
24、else seg<="11111001"end if; when "10" => dig<="11011111" ; if keyin(1)='0'then seg<="11000000" else seg<="11111001"end if; when "11" => dig<="11101111" ; if keyin(0)='0'then seg<="11000
25、000" else seg<="11111001"end if; when others =>null; end case ; else dig<="11111111" ;seg<="11111111" end if;end if;end process ;end rt1; 6 系統(tǒng)仿真當(dāng)各個(gè)模塊分別編譯成功后 ,則創(chuàng)建一個(gè)個(gè)元件符號(hào)。再用圖形編輯器將各元件模塊組裝起來(lái) ,這就是本設(shè)計(jì)中最頂層的圖形設(shè)計(jì)文件。頂層圖形設(shè)計(jì)文件 lock. gdf 如圖所示 ,這個(gè)結(jié)構(gòu)框圖說(shuō)明了整個(gè)系統(tǒng)的外部輸入和輸出情況。為了獲得與目標(biāo)器件對(duì)應(yīng)的、 精確的時(shí)序仿真文件譯了。編譯成功后進(jìn)行仿真。首先建立波形文件。波形文件 lock. scf 建好并存盤(pán)后 ,選擇菜單 “new” “Vector Waveform File”,啟動(dòng)仿真操作 ,結(jié)束后觀察仿真波形。本設(shè)計(jì)中 ,仿真波形如圖所示。當(dāng)給初始密碼輸入信號(hào) LC 一個(gè)低電平時(shí) ,就將程序預(yù)先設(shè)定的密碼( “0000” )裝入 lock 中 。按下 reset 后,系統(tǒng)復(fù)位 ,處于輸入密碼狀態(tài)。輸入的開(kāi)鎖密碼串行順
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能家居網(wǎng)絡(luò)連接故障排查考核試卷
- 隧道工程的生態(tài)智慧城市技術(shù)發(fā)展考核試卷
- 金屬玩具的智能制造系統(tǒng)優(yōu)化考核試卷
- 新生兒呼吸窘迫綜合征影像學(xué)
- 慢性阻塞性肺疾病膳食管理要點(diǎn)
- 學(xué)前教育畢業(yè)設(shè)計(jì)
- 自主呼吸誘發(fā)的肺損傷
- 電子行業(yè)點(diǎn)評(píng)報(bào)告:大廠自研三兩事系列從哲庫(kù)到玄戒手機(jī)APSoC自研的啟示
- 2025年環(huán)保型家居產(chǎn)品研發(fā)申請(qǐng)報(bào)告
- 2025年功能性飲料在健身房會(huì)員活動(dòng)中的市場(chǎng)推廣策略研究報(bào)告
- 人教部編版三年級(jí)下冊(cè)語(yǔ)文各單元【習(xí)作范文】
- 2025高考全國(guó)一卷語(yǔ)文真題
- 教師普法考試題及答案
- 水冷空調(diào)項(xiàng)目可行性研究報(bào)告
- 2025年小產(chǎn)權(quán)房的買(mǎi)賣(mài)合同5篇
- 清運(yùn)垃圾污水合同范本
- 夫妻婚內(nèi)財(cái)產(chǎn)財(cái)產(chǎn)協(xié)議書(shū)
- 醫(yī)學(xué)裝備質(zhì)量管理體系構(gòu)建與實(shí)施
- 青少年新概念1b期末試卷及答案
- 天津2025年中國(guó)醫(yī)學(xué)科學(xué)院放射醫(yī)學(xué)研究所第一批招聘筆試歷年參考題庫(kù)附帶答案詳解析
- 合伙地?cái)偦疱亝f(xié)議書(shū)
評(píng)論
0/150
提交評(píng)論