




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、EDA仿真與實踐實習(xí) 學(xué) 院: 信息科學(xué)與工程學(xué)院 課題名稱: 硬件描述語言設(shè)計 -基于VHDL的電子密碼鎖的設(shè)計 班 級: 學(xué) 生:學(xué) 號:指導(dǎo)教師:1 引言在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務(wù)報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對日常生活中的安全保險器件的要求越來越高.為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運而生?;贓DA技術(shù)設(shè)計的電子密碼鎖。以其價格便宜、使用方便、安全性高、成本低、功耗低、易操
2、作等優(yōu)點,受到了人們的普遍關(guān)注。而以可編程邏輯器件(FBDA)為設(shè)計載體,以硬件描述語言(VHDL)為主要表達方式,以Quartus5。1開發(fā)軟件等為設(shè)計工具設(shè)計的電子密碼鎖,由于其能夠?qū)崿F(xiàn)密碼輸入、密碼校驗、密碼設(shè)置和更改等功能,因此,能夠滿足社會對安全防盜的需求。本設(shè)計的各個模塊由相應(yīng)的VHDL程序具體實現(xiàn),并在Quartus5。1環(huán)境下進行了整體電路的模擬仿真,最終實現(xiàn)“密碼鎖控制器設(shè)計”的要求。2 設(shè)計內(nèi)容和要求2。1 設(shè)計內(nèi)容:題目:電子密碼鎖內(nèi)容:設(shè)計一個4位串行數(shù)字鎖。(1)開鎖代碼為4位二進制,當(dāng)輸入代碼的位數(shù)與鎖內(nèi)給定的密碼一致,且按規(guī)定程序開鎖時,方可開鎖,并點亮一個指示燈
3、.否則進入“錯誤”狀態(tài),并發(fā)出報警信號.(2)鎖內(nèi)的密碼可調(diào),且預(yù)置方便,保密性好。(3)串行數(shù)字鎖的報警由點亮一個燈,直到按下復(fù)位開關(guān),報警才停下。此時,數(shù)字鎖又自動等待下一個開鎖狀態(tài)。要求:(1)通過查閱相關(guān)技術(shù)資料,詳細描述電子密碼鎖的基本原理。(2)編寫電子密碼鎖的Verilog HDL或VHDL程序,并仿真編譯下載驗證.(3)給出完整的系統(tǒng)頂層模塊圖與波形仿真圖.3 設(shè)計分案密碼鎖控制器是硬件與軟件的結(jié)合。根據(jù)設(shè)計要求,決定以FBDA芯片和VHDL語言設(shè)計此電子密碼鎖。用一片F(xiàn)BDA芯片實現(xiàn),從而大大簡化了系統(tǒng)結(jié)構(gòu),降低了成本,提高了系統(tǒng)的保密性和可靠性。這種設(shè)計不僅簡化了系統(tǒng)結(jié)構(gòu),
4、降低了成本,更提高了系統(tǒng)的可靠性和保密性。另外,采用可編程邏輯器件開發(fā)的數(shù)字系統(tǒng),方便地升級和改進。3.1 系統(tǒng)總框圖本系統(tǒng)的硬件部分主要由密碼鎖控制電路、密碼鎖顯示電路、LED顯示電路、報警電路、密碼更改與設(shè)置電路組成。整體系統(tǒng)框圖如下圖2.1所示.密碼鎖顯示電路密碼鎖顯示電路報警電路密碼鎖控制電路LED顯示電路密碼鎖總框圖3.2密碼鎖的內(nèi)部結(jié)構(gòu)及主要功能3。2.1密碼鎖的主要功能密碼鎖控制器的主要功能有:(1)密碼輸入:有二個按鍵來控制(分別代表0和1),每按下一個鍵,要求在數(shù)碼管上顯示,并依次左移。(2)密碼校驗:如果有按鍵按下,直到松開該按鍵;紅綠燈指示門的狀態(tài),也就是密碼校驗結(jié)果,如
5、果密碼校驗正確,綠亮起,否則如果密碼校驗錯誤紅燈亮,并鳳鳴器響,表明密碼錯誤。(3)錯誤報警:密碼輸入錯誤開始報警.(4)密碼修改:輸入密碼正確后4秒內(nèi)按按鍵輸入要設(shè)置和更改的密碼,按按鍵確認密碼設(shè)置與更改,則密碼設(shè)置成功4 系統(tǒng)硬件電路4.1 密碼鎖的顯示模塊段數(shù)碼管是電子開發(fā)過程中常用的輸出顯示設(shè)備。在本設(shè)計中使用的是8個四位一體、共陰極型七段數(shù)碼管。其單個靜態(tài)數(shù)碼管如下圖所示。由于七段數(shù)碼管公共端連接到GND(共陰極型),當(dāng)數(shù)碼管的中的一個段被輸入高電平,則相應(yīng)的這一段被點亮.反之則不亮。共陽極性的數(shù)碼管與之相反。四位一體的七段數(shù)碼管在單個靜態(tài)數(shù)碼管的基礎(chǔ)上加入了用于選擇哪一位數(shù)碼管的位
6、選信號端口。八個數(shù)碼管的a、b、c、d、e、f、g、h、dp都連在了一起,8個數(shù)碼管分別由各自的位選信號來控制,被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。4.2 密碼鎖控制模塊該模塊的作用是將輸入的密碼(暫時寄存于 ACC中)跟已經(jīng)存儲的密碼(REG中的密碼信息)進行對比,如果一樣,則密碼鎖開鎖。而在通過密碼驗證后可以按按鍵設(shè)定密碼.在這里值得注意的是有一個密碼“0000”為開始密碼,如果改名密碼了但是又忘記了密碼,重新下載之后的初始密碼只要輸入的密碼為“0000”則都可通過密碼鎖.模塊lock是整個設(shè)計的核心 ,它實現(xiàn)密碼鎖的邏輯功能.在任何時候按動密碼初始化按鍵內(nèi)密碼設(shè)置為程序初始化密碼值(在本模
7、塊程序中此值為“0000"代碼為4位二進制數(shù) ,當(dāng)輸入代碼的位數(shù)和位值與鎖內(nèi)給定的密碼一致 ,且按規(guī)定程序開鎖時 ,方可開鎖 ,并點亮開鎖指示燈(緑燈)亮。否則 ,系統(tǒng)進入 “錯誤”狀態(tài) ,并發(fā)出報警信號。串行數(shù)字鎖的報警方式是點亮指示燈(紅燈) ,并使喇叭鳴叫 ,直到按下復(fù)位開關(guān) ,報警才停止。此時 ,數(shù)字鎖又自動進入等待下一次開鎖的狀態(tài)。該4位串行電子密碼鎖設(shè)置4位二進制密碼 ,要求鎖內(nèi)給定的密碼是可調(diào)的 ,且設(shè)置方便 ,保密性好。其具體操作分為輸入密碼和修改密碼兩部分4。2.1輸入密碼密碼輸入值的比較主要有兩部分 ,密碼位數(shù)和內(nèi)容 ,任何一個條件不滿足 ,都不能打開鎖。若鎖內(nèi)密
8、碼為 “0000” , key2和key1置低電平 ,分別表示輸入 “1" 和 “0" .輸入密碼前先進行復(fù)位操作 ,再按著從密碼最低位到最高位的順序依次正確輸入0000,會在數(shù)碼管逐一顯示。經(jīng)檢驗 ,輸入的密碼等于鎖內(nèi)預(yù)先設(shè)置的密碼密碼鎖開啟信號,鎖開啟。同時,密碼修改控制信號rw置低電平.若在輸入密碼的過程中 ,4位二進制密碼出現(xiàn)輸入錯誤 ,那么鎖不能開啟 ,同時 ,指示燈紅燈亮 ,發(fā)出報警信號。直到按下復(fù)位開關(guān) ,報警才停止。此時 ,數(shù)字鎖又自動進入等待下一次開鎖的狀態(tài)。4。2.2修改密碼為防止任意進行密碼修改 ,必須在正確輸入密碼后 ,才能重新設(shè)置密碼。輸入正確密碼
9、后 ,鎖打開 ,同時 ,密碼修改控制信號按鍵rw置低電平 ,就可直接進行修改密碼的操作。修改密碼實質(zhì)就是用輸入的新密碼去取代原來的舊密碼,按確定按鍵ok,存儲新密碼時。5 VHDL程序設(shè)計密碼鎖控制器的各個功能模塊都是通過VHDL語言來完成的.本設(shè)計由密碼鎖顯示顯示模塊、分頻模塊、密碼輸入及校驗?zāi)K、報警模塊、密碼更改與設(shè)置模塊幾部分組成,各模塊分工合作,最后達到密碼鎖控制器設(shè)計的要求。表4-1 程序的管腳分配表端口名對應(yīng)FBGA管腳說明clkP2時鐘為50HzKey1AC23按下按鍵代表為“0”Key2AB21按下按鍵代表為“1”startY14開始輸入密碼okAA13確定輸入密碼reset
10、AC15復(fù)位rwV23該密碼clrU23清零redM19密碼錯誤紅燈亮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程序總代碼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 系統(tǒng)仿真當(dāng)各個模塊分別編譯成功后 ,則創(chuàng)建一個個元件符號。再用圖形編輯器將各元件模塊組裝起來 ,這就是本設(shè)計中最頂層的圖形設(shè)計文件。頂層圖形設(shè)計文件 lock。 gdf如圖所示 ,這個結(jié)構(gòu)框圖說明了整個系統(tǒng)的外部輸入和輸出情況.為了獲得與目標(biāo)器件對應(yīng)的、精確的時序仿真文件譯了。編譯成功后進行仿真。首先建立波形文件。波形文件 lock. scf建好并存盤后 ,選擇菜單 “new” “Vector Waveform File",啟動仿真操作 ,結(jié)束后觀察仿真波形.本設(shè)計中 ,仿真波形如圖所示。當(dāng)給初始密碼輸入信號 LC 一個低電平時 ,就將程序預(yù)先設(shè)定的密碼( “0000” )裝入 lock 中.按下reset后,系統(tǒng)復(fù)位 ,處于輸入密碼狀態(tài)。輸入的開鎖密碼串行順序裝入 ,。密碼輸入完畢后 ,比較輸入的密碼是否等于預(yù)先設(shè)定的密碼,若相等 ,鎖開啟。如圖所示7 總結(jié)這次密碼鎖的設(shè)計過程表明,用VHDL可以快速、靈活地設(shè)計出符合要求的密碼鎖控制器,而且操作簡單??梢詫崿F(xiàn)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CERDS 12-2024基于物理技術(shù)的集中用餐剩余食物就地飼料化利用規(guī)范
- T/CACEM 35-2024交通運輸企業(yè)碳排放管理體系要求
- 溫州房屋租賃合同范本2篇
- 建筑裝飾裝修總承包合同4篇
- 廣告制作合同常用版范本7篇
- 菜園大棚承包合同樣本5篇
- 標(biāo)準(zhǔn)版房屋維修協(xié)議書5篇
- 溴化鋰制冷設(shè)備項目績效評估報告
- 工地急救安全培訓(xùn)
- 2025西安電子科技大學(xué)輔導(dǎo)員考試試題及答案
- DB32/T 4220-2022消防設(shè)施物聯(lián)網(wǎng)系統(tǒng)技術(shù)規(guī)范
- 車位轉(zhuǎn)讓合同協(xié)議書
- 2025年農(nóng)村個人果園承包合同
- 湖北省武漢市2025屆高三年級五月模擬訓(xùn)練試題數(shù)學(xué)試題及答案(武漢五調(diào))
- 醫(yī)師掛證免責(zé)協(xié)議書
- 2025年數(shù)控技術(shù)專業(yè)畢業(yè)考試試題及答案
- 濟南民政離婚協(xié)議書
- 車牌租賃協(xié)議和抵押合同
- 2025年內(nèi)蒙古自治區(qū)初中學(xué)業(yè)水平考試數(shù)學(xué)模擬試題 (一)(含答案)
- 四川?。拼笥嶏w大數(shù)據(jù))2025屆高三第二次教學(xué)質(zhì)量聯(lián)合測評生物試題及答案
評論
0/150
提交評論