課程設計fpga密碼鎖_第1頁
課程設計fpga密碼鎖_第2頁
課程設計fpga密碼鎖_第3頁
課程設計fpga密碼鎖_第4頁
課程設計fpga密碼鎖_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、FPGA實驗報告FPGA實 驗 報 告實驗名稱:FPGA課程設計實驗日期:2013年6月3日姓 名:學 號:一、實驗目的1設計一個密碼鎖 2加深FPGA電路原理的理解3掌握VHDL語言的使用,學會用VHDL語言來編程解決實際問題4.學會使用EDA開發(fā)軟件設計小型綜合電路,掌握仿真的技巧5.學會應用開發(fā)系統(tǒng)實現(xiàn)硬件電路,檢驗電路的功能二、實驗內(nèi)容題目:電子密碼鎖內(nèi)容:設計一個4位串行數(shù)字鎖1開鎖代碼為4位二進制,當輸入代碼的位數(shù)與鎖內(nèi)給定的密碼一致,且按規(guī)定程序開鎖時,方可開鎖。否則進入“錯誤”狀態(tài),發(fā)出報警信號。2鎖內(nèi)的密碼可調(diào),且預置方便,保密性好。3串行數(shù)字鎖的報警,直到按下復位開關,才停

2、下。此時,數(shù)字鎖又自動等待下一個開鎖狀態(tài)。三、實驗步驟1.系統(tǒng)總框圖本系統(tǒng)的硬件部分主要由密碼鎖按鍵消抖模塊,密碼輸入比較更改模塊,密碼顯示模塊、報警模塊組成。整體系統(tǒng)框圖如下圖所示。2.密碼鎖的主要功能密碼鎖控制器的主要功能有:(1)密碼輸入:有二個按鍵來控制(分別代表0和1),每按下一個鍵,要求在數(shù)碼管上顯示,并依次左移。(2)密碼校驗:如果有按鍵按下,直到松開該按鍵,如果密碼校驗正確,無變化,否則如果密碼校驗錯誤蜂鳴器響,表明密碼錯誤。(3)錯誤報警:密碼輸入錯誤開始報警。(4)密碼修改:輸入密碼正確后按按鍵輸入要設置和更改的密碼,按按鍵確認密碼設置與更改,則密碼設置成功。3.密碼鎖的各

3、個模塊(1)按鍵消抖。每按下一個鍵,僅產(chǎn)生一個信號脈沖,作為按鍵的使能信號,使能信號控制顯示的數(shù)字。(2)密碼輸入比較密碼輸入值的比較主要有兩部分 ,密碼位數(shù)和內(nèi)容 ,任何一個條件不滿足 ,都不能打開鎖。鎖內(nèi)密碼為 “0000” , key2 和 key1 置低電平 ,分別表示輸入 “1” 和 “0” 。輸入密碼前先按start鍵,再依次正確輸入0000,會在數(shù)碼管逐一顯示,按確認鍵,經(jīng)檢驗 ,輸入的密碼 等于鎖內(nèi)預先設置的密碼密碼鎖開啟信號,鎖開啟。同時,可以進行密碼修改。若在輸入密碼的過程中 ,4 位二進制密碼出現(xiàn)輸入錯誤 ,那么鎖不能開啟 ,同時,蜂鳴器發(fā)出報警信號 。直到按下復位開關

4、,報警才停止。此時 ,數(shù)字鎖又自動進入等待下一次開鎖的狀態(tài)。(3)密碼修改為防止任意進行密碼修改 ,必須在正確輸入密碼后 ,才能重新設置密碼。輸入正確密碼后 ,鎖打開 ,就可直接進行修改密碼的操作。修改密碼實質(zhì)就是用輸入的新密碼去取代原來的舊密碼, 按確定按鍵ok, 存儲新密碼。(4)報警 對50M晶振進行分頻,實現(xiàn)對蜂鳴器的控制(5)數(shù)碼顯示八段數(shù)碼管是電子開發(fā)過程中常用的輸出顯示設備。在本設計中使用的是8個四位一體、共陰極型八段數(shù)碼管。其單個靜態(tài)數(shù)碼管如下圖所示。由于八段數(shù)碼管公共端連接到VCC(共陽極型),當數(shù)碼管的中的一個段被輸入低電平,則相應的這一段被點亮。反之則不亮。四位一體的八段

5、數(shù)碼管在單個靜態(tài)數(shù)碼管的基礎上加入了用于選擇哪一位數(shù)碼管的位選信號端口。八個數(shù)碼管的a、b、c、d、e、f、g、h、dp都連在了一起,8個數(shù)碼管分別由各自的位選信號來控制,被選通的數(shù)碼管顯示數(shù)據(jù),其余關閉。 單個數(shù)碼管管腳示意圖 本實驗通過計數(shù)信號count控制數(shù)碼管亮的個數(shù),用temp信號控制數(shù)碼管的動態(tài)掃描顯示,以實現(xiàn)每輸入一位密碼,數(shù)碼管顯示左移一位。4.軟件仿真 (1)密碼輸入正確時,蜂鳴器不響,beep=1。(默認密碼為0000),仿真圖如下:(2)密碼輸入錯誤時(0001),蜂鳴器響,beep=0。(默認密碼為0000),仿真圖如下:四、實驗總結(jié)這次密碼鎖的設計過程表明,用VHDL

6、可以快速、靈活地設計出符合要求的密碼鎖控制器,而且操作簡單??梢詫崿F(xiàn)密碼輸入、密碼校驗、密碼設置和更改等功能。設計過程能夠在設計完成后在Quartus環(huán)境下進行電路的模擬仿真,反饋結(jié)果可以驗證程序設計的可行性與可靠性。本密碼鎖控制器設置的是4位密碼,在系統(tǒng)復位后,輸入一個完整的密碼串,輸入完后,系統(tǒng)會進行比對,如果發(fā)現(xiàn)密碼吻合,則開門,如果輸入的密碼串都是錯誤的,則系統(tǒng)報警。這樣的設計可以很好的滿足人們的日常需求。同時,密碼鎖還具有密碼修改功能,方便操作,使得密碼鎖的使用更加安全、便捷。在軟件、硬件設計和仿真過程中間我們也遇到不少問題,但最終還是把它們解決了,使得設計符合要求。除了自己思考設計

7、之外,這與和同學的同心協(xié)力的合作與討論是分不開的的。相互的探討使得我們的思路更加開闊,解決問題的辦法也更多??傊舜握n程設計讓我收益良多,同時因為有了實踐操作,對EDA技術(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,key2:in std_logic; -按鍵 clk,start,ok: in std_logic; -時鐘,開始,確定,復位

8、 beep:out std_logic:='1' -正確,蜂鳴器信號 dig:out std_logic_vector(7 downto 0); -數(shù)碼管片選信號 seg:out std_logic_vector(7 downto 0) -數(shù)碼管片內(nèi)顯示 );end lock;architecture rt1 of lock issignal keyin,password:std_logic_vector(3 downto 0):="0000" -輸入密碼,密碼signal open1:std_logic:='0' -開鎖信號signal b

9、eep1,keyen1,keyen2:std_logic:='1' -蜂鳴器信號signal shuru:std_logic; -輸入信號signal count: std_logic_vector(2 downto 0):="000" -計數(shù)輸入密碼的位數(shù)signal temp: std_logic_vector(1 downto 0):="00" beginprocess(clk,key1)variable m:integer range 0 to 250000; -按鍵消抖beginif clk'event and clk=

10、'1'then if key1='0' then if m=250000 then m:=m; else m:=m+1;end if;if m=249999 then keyen1<='0'else keyen1<='1'end if;else m:=0; end if; end if;end process;process(clk,key2)variable a:integer range 0 to 250000; -按鍵消抖beginif clk'event and clk='1'then

11、if key2='0' then if a=250000 then a:=a; else a:=a+1;end if;if a=249999 then keyen2<='0'else keyen2<='1'end if;else a:=0; end if; end if;end process; process(clk,start,ok) -密碼輸入,比較,修改模塊 begin if clk'event and clk='1'then if start='0' then shuru<=&#

12、39;1'count<="000"keyin<="0000" open1<='0'beep1<='1' end if; if shuru='1' thenif count="000" thenif keyen1='0' thenkeyin(0)<='0' ; count<=count+1; elsif keyen2='0' then keyin(0)<='1' ; count

13、<=count+1;end if; end if; if count="001" thenif keyen1='0' thenkeyin(1)<='0' ; count<=count+1; elsif keyen2='0' thenkeyin(1)<='1' ; count<=count+1;end if; end if;if count="010" thenif keyen1='0' thenkeyin(2)<='0' ;

14、 count<=count+1; elsif keyen2='0' thenkeyin(2)<='1' ; count<=count+1;end if; end if; if count="011" thenif keyen1='0' thenkeyin(3)<='0' ; count<=count+1; shuru<='0' elsif keyen2='0' thenkeyin(3)<='1' ; count<=c

15、ount+1; shuru<='0'end if; end if; end if; if ok='0'and open1='0' then if (keyin=password) and count="100" then open1<='1' shuru<='1' else beep1<='0'open1<='0' end if; end if; if ok='0'and open1='1'then c

16、ount<="000" password<=keyin; end if; end if; end process;process(clk,start,ok) -報警模塊 variable g:integer range 0 to 25000; begin if clk'event and clk='1'then if g=25000 then g:=0; else g:=g+1; end if; if g<=12500 and beep1='0' then beep<='0' else beep

17、<='1' end if; end if; end process;process(clk)variable n:integer range 0 to 2500; -計數(shù)模塊beginif clk'event and clk='1'then if n=2500 then n:=0; if temp="11"then temp<="00" else temp<=temp+1; end if; else n:=n+1; end if; end if;end process;process(clk) -

18、數(shù)碼管顯示模塊beginif clk'event and clk='1'then if count="001" then case temp is when "00" => dig<="01111111" ; if keyin(0)='0'then seg<="11000000" else seg<="11111001"end if; when others =>seg<="11111111" ; e

19、nd case ; elsif count="010" then case temp is when "00" => dig<="01111111" ; if keyin(1)='0'then seg<="11000000" else seg<="11111001"end if; when "01" => dig<="10111111" ; if keyin(0)='0'then seg&

20、lt;="11000000" else seg<="11111001"end if; when others =>seg<="11111111" ; end case ; elsif count="011" then case temp is when "00" => dig<="01111111" ; if keyin(2)='0'then seg<="11000000" else seg<=&q

21、uot;11111001"end if; when "01" => dig<="10111111" ; if keyin(1)='0'then 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="100" then case temp is when "00" => dig<=&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論