基于VHDL-4位電子密碼鎖的設(shè)計.docx_第1頁
基于VHDL-4位電子密碼鎖的設(shè)計.docx_第2頁
基于VHDL-4位電子密碼鎖的設(shè)計.docx_第3頁
基于VHDL-4位電子密碼鎖的設(shè)計.docx_第4頁
基于VHDL-4位電子密碼鎖的設(shè)計.docx_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

大連理工大學(xué)本科實(shí)驗(yàn)報告題目:基于VHDL 4位電子密碼鎖的設(shè)計課程名稱: 數(shù)字電路課程設(shè)計 學(xué)院(系):電子信息與電氣工程專 業(yè): 電子英強(qiáng) 班 級: 學(xué)生姓名: 學(xué) 號: 完成日期: 2013.7.8 成 績: 2013 年 7 月 08 日題目:基于VHDL 4位電子密碼鎖的設(shè)計1 設(shè)計要求電子密碼鎖為4位8421BCD碼,多于4位,密碼只取前4位。在輸入密碼錯誤,給出一個錯誤信號,有三次輸入機(jī)會,若三次密碼都輸入錯誤,則給出一個報警信號,此后只能由密碼管理員取消報警信號。在輸入密碼正確的情況下,可以再次設(shè)定密碼。每次輸入一個密碼,將顯示在7段數(shù)碼管上,并依次左移。每次輸入密碼的時候,按取消(cancel)鍵可以取消這次密碼的輸入,課重新輸入4位密碼。2 設(shè)計分析及系統(tǒng)方案設(shè)計在實(shí)驗(yàn)室DE2開發(fā)板的條件下,考慮到key鍵只有4個,可以用switch開關(guān)來實(shí)現(xiàn)密碼輸入模塊,用switch9switch0 來實(shí)現(xiàn)數(shù)字90的輸入,并通過譯碼模塊將其轉(zhuǎn)化為8421BCD碼,由8421BCD碼來驅(qū)動7段數(shù)碼管作為密碼鎖的顯示模塊。每按一個鍵,產(chǎn)生一個上升沿,給4個數(shù)碼管做時鐘,實(shí)現(xiàn)沒輸入一個數(shù)左移一位的效果。為了實(shí)現(xiàn)密碼輸入多于4位,可以構(gòu)造一個模為4的計數(shù)器來控制只取前4位密碼。共有三次輸入密碼的機(jī)會,可以構(gòu)造一個模為3的計數(shù)器來控制。密碼比較模塊:當(dāng)按下確定鍵(yes)鍵,則將輸入的密碼和內(nèi)置密碼進(jìn)行比較。密碼輸入模塊:當(dāng)輸入密碼正確時,再輸入密碼,利用重置密碼鍵(set_psw)直接將其賦值給內(nèi)置的密碼psw即可實(shí)現(xiàn)。LED顯示模塊,用來顯示密碼輸入的正確與否。若輸入密碼與內(nèi)置密碼一致,則鎖打開,輸出一個高電平給LEDG,綠燈亮,密碼錯誤則輸出一個高電平給LEDR,紅燈亮。綜合上述分析,本系統(tǒng)的硬件部分主要由密碼鎖輸入譯碼模塊、密碼鎖顯示模塊、密碼鎖控制模塊、密碼比較和重置模塊和LED顯示模塊五個部分組成。LED顯示模塊密碼鎖比較和重置密碼鎖顯示模塊密碼鎖輸入譯碼密碼鎖控制模塊3系統(tǒng)以及模塊硬件電路設(shè)計說明:1. 密碼鎖顯示模塊:段數(shù)碼管是電子開發(fā)過程中常用的輸出顯示設(shè)備。在本設(shè)計中使用的是4個四位一體、共陽極型七段數(shù)碼管。其單個靜態(tài)數(shù)碼管如右圖所示。2.密碼輸入和譯碼模塊:用switch90實(shí)現(xiàn)數(shù)字9到0的輸入。resetstart Out0 密碼鎖輸入和譯碼 q(4 downto 0)分頻器Out1 clk Clk_inOut2Num9至Num0CancelOut3yes密碼比較和重置CorrectOut_erroralarmOut_q(15 downto 0)Psw(15 downto 0)Set_pswDE2開發(fā)板上使用的元件的管腳編號如下:端口名FPGA管腳說明alarmpin_af23報警信號,紅燈亮cancelpin_v1取消密碼輸入clkpin_n250MHz時鐘correctpin_ae22密碼正確,綠燈亮num0pin_n25輸入數(shù)字0到9num1pin_n26num2pin_p25num3pin_ae14num4pin_af14num5pin_ad13num6pin_ac13num7pin_c13num8pin_b13num9pin_a13out00pin_af10u0數(shù)碼管out01pin_ab12out02pin_ac12out03pin_ad11out04pin_ae11out05pin_v14out06pin_v13out10pin_v20u1數(shù)碼管out11pin_v21out12pin_w21out13pin_y22out14pin_aa24out15pin_aa23out16pin_ab24out20pin_ab23u2數(shù)碼管out21pin_v22out22pin_ac25out23pin_ac26out24pin_ab26out25pin_ab25out26pin_y24out30pin_y23u3數(shù)碼管out31pin_aa25out32pin_aa26out33pin_y26out34pin_y25out35pin_u22out36pin_w24out_errorpin_ae23密碼錯,紅燈亮resetpin_v2管理員權(quán)限,為0時取消報警信號set_pswpin_n23設(shè)置密碼startpin_u4開始輸入密碼信號yespin_g26確定信號4 系統(tǒng)的VHDL設(shè)計說明1.分頻模塊,即做一個模5000的計數(shù)器,從而將50MHz的時鐘轉(zhuǎn)化為10000Hz的時鐘。2.密碼鎖輸入和譯碼,顯示模塊。switch9switch0模擬數(shù)字90的輸入,例如switch9為高電平,而其他為低電平,則通過程序譯碼為9,同時產(chǎn)生一個clock時鐘上升沿,由于人操作的時間必定大于0.00001s(即10000Hz的時鐘周期),所以在下次按鍵是,clock已經(jīng)回到低電平,此后再按鍵clock又產(chǎn)生一個上升沿。由此構(gòu)造的clock時鐘可以為左移寄存器當(dāng)時鐘。3.密碼顯示模塊:switch改變一次,即每輸入一個數(shù),譯碼產(chǎn)生一個四位的BCD碼,來驅(qū)動數(shù)碼管。并隨著clock上升沿,依次左移顯示。4.密碼比較和重置模塊:在輸入了4位密碼后,16位BCD碼已經(jīng)保存在out_q里,通過與內(nèi)置密碼比較即可。數(shù)碼管的真值表(0代表亮,1代表不亮)q3q2q1q0012345600000000001000110011110010001001000110000110010010011000101010010001100100000011100011111000000000010010000100VHDL源代碼.主程序coded_lock代碼:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity coded_lock isport(clk: in std_logic; start:in std_logic; reset:in std_logic; num:in std_logic_vector(9 downto 0); out3,out2,out1,out0:out std_logic_vector(6 downto 0); correct: buffer std_logic; yes:in std_logic; -admin:in std_logic; set_psw:std_logic; alarm: out std_logic; cancel: in std_logic; out_error: buffer std_logic); end;architecture behave of coded_lock is-*component decoder is -顯示譯碼器的元件例化port(qq:in std_logic_vector(3 downto 0);result: out std_logic_vector(6 downto 0);end component;-*signal out_q: std_logic_vector(15 downto 0):=1111111111111111;-out_q為4位密碼鎖的8421BCD碼signal q:std_logic_vector(3 downto 0);-輸入一個90的數(shù)字,q為其8421BCD碼signal clock : std_logic:=0;-每按一次鍵,clock輸出一個上升沿signal counter: integer range 0 to 2:=0;-模為3的計數(shù)器signal cnt4: integer range 0 to 4:=0;-模為5的計數(shù)器signal enable: std_logic:=1; -當(dāng)輸錯3次密碼,則此使能端為0,使無法譯碼signal psw:std_logic_vector(15 downto 0):=1001100001110110; -默認(rèn)密碼為9876signal clk_in: std_logic; -5000分頻之后的時鐘begin-*process(clk_in,start,reset,enable) beginif reset=0 thenclockq=1001;clockq=1000;clockq=0111;clockq=0110;clockq=0101;clockq=0100;clockq=0011;clockq=0010;clockq=0001;clockq=0000;clockq=1111;clock=0;end case;else null;end if;end if;end process;-*-左移進(jìn)程,按下一個按鍵則clock輸出一個高電平,顯示譯碼器左移process(clock,yes,start,reset,cancel)beginif reset=0 thencorrect=0;out_error=0;counter=0;enable=1;alarm=0;out_q=1111111111111111;elsif cancel=1 thencorrect=0;out_error=0;out_q=0000000000000000;cnt4=0; -使計數(shù)器清零,重新開始譯碼elsif start=0 then cnt4=0;out_q=0000000000000000;elseif rising_edge(clock) thenif cnt4=4 thennull;elseout_q=out_q(11 downto 0) & q;cnt4=cnt4+1;end if;end if;if falling_edge(yes) thenif out_q=psw thencorrect=1;out_error=0;alarm=0;elsif counter=2 thencorrect=0;out_error=1;alarm=1;enable=0;elsecorrect=0;out_error=1;alarm=0;counter=counter+1;end if;end if;end if;end process;-*process(correct,set_psw) -重新設(shè)置密碼的進(jìn)程beginif falling_edge(set_psw) thenif correct=1 then -輸入密碼正確才可以重新設(shè)置密碼psw=out_q;end if;end if;end process;-*-分頻模塊:將50Mz 的時鐘分頻為10000Hzprocess(clk)variable tem:integer range 0 to 4999;beginif rising_edge(clk) thenif tem=4999 then clk_in=1;tem:=0;else tem:=tem+1;clk_inout_q(15 downto 12),result=out3);u2:component decoder port map(qq=out_q(11 downto 8),result=out2);u1:component decoder port map(qq=out_q(7 downto 4),result=out1);u0:component decoder port map(qq=out_q(3 downto 0),result=out0);end behave;.decoder代碼:library ieee;use ieee.std_logic_1164.all;entity decoder isport(qq:in std_logic_vector(3 downto 0);result: out std_logic_vector(6 downto 0);end; architecture reg of decoder isbeginprocess(qq)begincase qq iswhen 0000=resultresultresultresultresultresultresultresultresultresultresult=1111111;end case;end process;end reg;5 結(jié)論以及結(jié)果說明計算機(jī)平臺為window 7 64bit旗艦版,軟件調(diào)試環(huán)境為Quartus6.0.使用的硬件芯片為EP2C35F672C6.下面試各個模塊的仿真圖:圖1圖1顯示了密碼輸入和顯示模塊所實(shí)現(xiàn)的功能。當(dāng)輸入9,8,7,6,5五位密碼時,數(shù)碼管只顯示前4位,即為“1000000”,“1111001”,“0100100”,“0110000”。由仿真圖可知,輸入一個密碼,在4個數(shù)碼管上依次左移。圖2圖2顯示了密碼若輸錯3次,則有個報警信號,即alarm為高電平。此時只有管理員將reset置于低電平,才能解除報警信號,即為是alarm為低電平。(默認(rèn)密碼為9876,上面的仿真圖輸入的密碼依次為8765,9776,5432)圖3圖3顯示了密碼鎖密碼重置模塊實(shí)現(xiàn)的功能。密碼鎖內(nèi)置的密碼為9876,當(dāng)輸入9876并yes給一個下降沿時,correct輸出為高電平,此時在輸入密碼為5432,set_psw給一個下降沿,將5432設(shè)為新的密碼。再輸入9876,out_error為到電平,只

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論