采用EDA技術(shù)和VHDL語(yǔ)言設(shè)計(jì)電子密碼鎖_第1頁(yè)
采用EDA技術(shù)和VHDL語(yǔ)言設(shè)計(jì)電子密碼鎖_第2頁(yè)
采用EDA技術(shù)和VHDL語(yǔ)言設(shè)計(jì)電子密碼鎖_第3頁(yè)
采用EDA技術(shù)和VHDL語(yǔ)言設(shè)計(jì)電子密碼鎖_第4頁(yè)
采用EDA技術(shù)和VHDL語(yǔ)言設(shè)計(jì)電子密碼鎖_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一、設(shè)計(jì)思想本設(shè)計(jì)采用eda技術(shù)和vhdl語(yǔ)言設(shè)計(jì)了一種按鍵輸入密碼并數(shù)碼管回顯,當(dāng)輸入正確密碼時(shí)轟動(dòng)綠燈亮、紅燈熄滅表示開(kāi)鎖,而當(dāng)輸入錯(cuò)誤密碼時(shí),紅燈亮、綠燈熄滅表示關(guān)鎖。根據(jù)系統(tǒng)設(shè)計(jì)要求,系統(tǒng)設(shè)計(jì)采用自頂向下的設(shè)計(jì)方法。1.基本原理在本實(shí)驗(yàn)中采用的是vhdl編程,通過(guò)文本編輯方式建立模塊,通過(guò)原理圖方式將生成的圖形符號(hào)連接,然后再下載,進(jìn)行硬件的仿真。密碼鎖要達(dá)到的功能為:為達(dá)到密碼鎖的以上功能,可將電子密碼鎖分為以下幾個(gè)模塊:密碼鎖輸入電路、密碼鎖控制電路、led輸出顯示電路。、密碼輸入:每按下一個(gè)數(shù)字鍵,就輸入一個(gè)數(shù)值,并在顯示器上顯示出該數(shù)值。同時(shí)將先前輸入的數(shù)據(jù)依次左移一個(gè)數(shù)字位置

2、。程序下載后系統(tǒng)進(jìn)入原始狀態(tài)(原始密碼000000),按下鍵8發(fā)光二極管8(綠燈)亮、法官二極管7(紅燈)滅。當(dāng)要重新設(shè)置密碼時(shí),直接輸入自己想要設(shè)置的密碼并按下鍵8,持續(xù)5s,數(shù)碼管8由0變?yōu)?,此時(shí)7段數(shù)碼管1、2、3、4、5、6對(duì)應(yīng)顯示新設(shè)置的密碼。當(dāng)要輸入密碼時(shí),按下鍵7,先將密碼清零,再隨機(jī)輸入一組6位密碼,假如密碼正確,發(fā)光二極管8(綠燈)立即亮;反之如不正確,等待5s,發(fā)光二極管7(紅燈)亮并由蜂鳴器發(fā)出20s的報(bào)警信號(hào)。、密碼清除:按下清除鍵可清除前面所有的輸入值,清除成為“0000”。、密碼更改:按下更改鍵可將目前數(shù)據(jù)設(shè)定為新的密碼。、密碼上鎖:按下上鎖鍵可將密碼鎖上鎖。、密

3、碼解除:按下解除鍵首先檢查輸入的密碼是否正確,密碼正確即解鎖。2.設(shè)計(jì)框圖為達(dá)到密碼鎖的以上功能,可將電子密碼鎖分為以下幾個(gè)模塊:密碼鎖輸入電路、密碼鎖控制電路、led輸出顯示電路。和報(bào)警電路等四部分組成頂層設(shè)計(jì)采用原理圖設(shè)計(jì)方式,系統(tǒng)的整體組裝設(shè)計(jì)原理圖如圖1所示。密碼模塊校對(duì)模塊5s延時(shí)脈沖模塊紅燈滅綠燈亮綠燈滅紅燈亮20s報(bào)警20延時(shí)脈沖模塊關(guān)鎖開(kāi)鎖圖1 系統(tǒng)整體組裝設(shè)計(jì)原理圖二、設(shè)計(jì)步驟和調(diào)試過(guò)程1、模塊設(shè)計(jì)和相應(yīng)模塊代碼(1)分頻由于要產(chǎn)生5秒、20秒的計(jì)時(shí)信號(hào),故對(duì)系統(tǒng)時(shí)鐘clk_1k進(jìn)行分頻來(lái)得到1hz的時(shí)鐘clk。其模塊及部分程序如下:圖2 分頻模塊process(clk_1k

4、)variable count:std_logic_vector(9 downto 0);beginif(clk_1kevent and clk_1k=1) thencount:=count+1;end if;clk=count(9);end process;仿真波形如下:圖3 分頻仿真圖(2) 設(shè)置密碼本模塊主要是將設(shè)置的密碼鎖存到中間變量ram中去,同時(shí)控制燈的變化,由于這里的燈并不能作為最終的輸出,所以這里先用led_r_temp1、led_r_temp2代替。其模塊及部分程序如下:圖4 設(shè)置密碼模塊process(enter1,set)beginif(enter1event and e

5、nter1=1) thenif(set=0) thenram=datain;led_r_temp1=1;led_g_temp1=0;else led_r_temp1=0;led_g_temp1=0;end if;end if;end process;仿真波形如下: 圖5 設(shè)置密碼仿真圖(3) 輸入密碼時(shí)第一個(gè)按鍵判斷信號(hào)本模塊主要在密碼輸入下,當(dāng)?shù)谝粋€(gè)按鍵按下時(shí)產(chǎn)生一個(gè)judge信號(hào)(高電平有效),其模塊及部分程序如下:圖6 判斷信號(hào)模塊process(set,clk_1k,datain)beginif(clk_1kevent and clk_1k=1) thenif(set=0) then

6、judge=0;elsif(set=1) thenif(datain(0) or datain(1) or datain(2) or datain(3)=0) then judge=0;els if(datain(0) or datain(1) or datain(2) or datain(3)=1) thenjudge=1;else judge=0;end if;end if;end if;end process;仿真波形如下: 圖7 判斷信號(hào)仿真圖從仿真波形上看,當(dāng)按鍵按下后judge信號(hào)由0變?yōu)?,但是當(dāng)按鍵重新彈回0時(shí),judge信號(hào)又回到0,所以需對(duì)judge高電平信號(hào)進(jìn)行鎖存: 圖

7、8 鎖存模塊signal temp:std_logic:=0;beginprocess(judge)begin if(judgeevent and judge=1) thentemp=1;end if;end process;judge_load=temp;仿真波形如下:圖9 鎖存模塊仿真圖(4) 5秒計(jì)時(shí)信號(hào)該模塊是產(chǎn)生一個(gè)5秒計(jì)時(shí)的信號(hào)state,5秒期間為1,當(dāng)5秒時(shí)間過(guò)去后state變?yōu)?,并作為報(bào)警信號(hào)。其模塊及部分程序如下:圖10 5秒計(jì)時(shí)信號(hào)模塊signal count_5:std_logic_vector(2 downto 0);signal state1:std_logic;

8、beginprocess(clk)beginif(clkevent and clk=1) then if(judge_load=1) then 第一個(gè)按鍵按下if(count_5=101) thencount_5=101;else count_5state1state1state1state1state1state1=0;end case;end process;state=state1 and set;確保在set置為1而第一個(gè)按鍵沒(méi)有按下時(shí),state為高電平,即剛進(jìn)入輸入密碼狀態(tài)而第一個(gè)按鍵沒(méi)有按下時(shí)state為高電平。仿真波形如下:圖11 5秒計(jì)時(shí)模塊仿真圖根據(jù)仿真波形可以看出,set

9、為0時(shí)設(shè)置密碼,當(dāng)set為1時(shí),在judge_load(按鍵識(shí)別信號(hào))為0的情況下,state為1,保證下面將要提及的報(bào)警模塊不會(huì)工作,而只有當(dāng)judge_load為1,且5秒過(guò)后state變?yōu)?時(shí)才有可能發(fā)出報(bào)警信號(hào)(密碼輸錯(cuò)的情況下)。(5) 開(kāi)鎖信號(hào)的產(chǎn)生本模塊主要是對(duì)輸入的密碼進(jìn)行判斷,一旦密碼輸入正確,產(chǎn)生一個(gè)開(kāi)鎖信號(hào)unlock(高電平有效)。其模塊與部分程序如下: 圖12 開(kāi)鎖信號(hào)模塊process(enter2)begin if(enter2event and enter2=1) then輸入密碼確認(rèn)if(set=1) then if(state=1) then5秒期間if(d

10、atain=ram) thenunlock=1;開(kāi)鎖信號(hào)else unlock=0;end if;end if;end if;end if;end process;輸入正確密碼仿真波形:圖13 開(kāi)鎖信號(hào)仿真圖輸入錯(cuò)誤密碼仿真波形: 圖14 開(kāi)鎖信號(hào)仿真圖(6) 報(bào)警模塊本模塊主要是在5秒限制時(shí)間結(jié)束時(shí),如果還沒(méi)有開(kāi)鎖,就產(chǎn)生報(bào)警信號(hào)。即長(zhǎng)達(dá)20秒的聲光信號(hào)。這里的報(bào)警信號(hào)指示燈用led_r_temp3表示,揚(yáng)聲器用speaker_temp2表示。其模塊及部分程序如下: 圖15 報(bào)警模塊signal count_20:std_logic_vector(4 downto 0);signal tem

11、p:std_logic; beginprocess(clk)beginif(clkevent and clk=1) thenif(set=0)thentemp=0;elsif(set=1) thenif(state=0) thenif(count_20=10100) then count_20=10100;temp=0;else count_20=count_20+1;temp=1;speaker_temp2=clk_1k;end if;end if;end if;end if;end process;led_r_temp3=temp and clk and (not unlock);spea

12、ker_temp2=temp and clk_1k and (not unlock);仿真波形如下:圖16 報(bào)警模塊仿真圖可見(jiàn)當(dāng)state由1變?yōu)?且沒(méi)有unlock信號(hào)時(shí),輸出20秒的聲光信號(hào)以示報(bào)警。(7) 開(kāi)鎖信號(hào)控制指示燈變化模塊本模塊是實(shí)現(xiàn)當(dāng)開(kāi)鎖信號(hào)產(chǎn)生時(shí),相應(yīng)的指示燈由紅亮綠滅變成紅滅綠亮。這里同樣先用led_r_temp2、led_g_temp2代表紅燈和綠燈。其模塊及部分程序如下: 圖17 指示燈變化模塊process(clk_1k,state)beginif(clk_1kevent and clk_1k=1) then if(state=1) then if(unlock=1

13、) thenled_r_temp2=0;led_g_temp2=1;else led_r_temp2=1;led_g_temp2=0;end if;end if;end if;end process;仿真波形如下:圖18 指示燈變化仿真圖(8) 開(kāi)鎖信號(hào)產(chǎn)生2秒提示音模塊當(dāng)開(kāi)鎖信號(hào)產(chǎn)生時(shí),揚(yáng)聲器發(fā)出兩秒的提示音。這里用speaker_temp2代替。其模塊及部分程序如下: 圖19 2秒提示音模塊signal count_2:std_logic_vector(1 downto 0);signal temp:std_logic;beginprocess(clk)beginif(clkevent a

14、nd clk=1) then1秒hzif(unlock=1) then if(count_2=10) thencount_2=10;temp=0;else count_2=count_2+1;temp=1;end if;end if;end if;end process;speaker_temp1=clk_1k and temp;仿真波形如下:圖20 2秒提示音仿真圖(9) 指示燈綜合輸出模塊本模塊主要是將led_r_temp1、led_g_temp1、led_r_temp2、led_g_temp2經(jīng)過(guò)條件判斷選擇輸出,設(shè)置密碼(set=0)時(shí)輸出led_r_temp1、led_g_temp1

15、,輸入密碼(set=1)時(shí)輸出led_r_temp2、led_g_temp2。其模塊及部分程序如下: 圖21 指示燈綜合輸出模塊if(set=0) then led_r=led_r_temp1; led_g=led_g_temp1;elseled_r=led_r_temp2;led_g=led_g_temp2;仿真波形如下: 圖22 指示燈綜合輸出仿真圖(10)揚(yáng)聲器綜合輸出模塊本模塊主要是將報(bào)警音speaker_temp1和開(kāi)鎖提示音speaker_temp2經(jīng)過(guò)條件選擇判斷輸出,set=0時(shí),輸出為0;當(dāng)set=1且unlock=0時(shí)輸出speaker_temp1,當(dāng)unlock=1時(shí),輸

16、出speaker_temp2。其模塊及部分程序如下: 圖23 揚(yáng)聲器綜合輸出模塊if(set=0) thenspeaker=0;elsif(unlock=1) then speaker=speaker_temp1;elsespeaker=speaker_temp2;end if;仿真波形如下:圖24 揚(yáng)聲器綜合輸出仿真圖2、仿真及仿真結(jié)果分析將程序下載cyclone系列芯片中,同時(shí)在eda試驗(yàn)箱上進(jìn)行硬件驗(yàn)證。本文提出的電子密碼鎖由于采用vhdl語(yǔ)言設(shè)計(jì),用一片fpga實(shí)現(xiàn),因而體積小,功耗低,稍加修改就可以改變密碼的位數(shù)和輸入密碼的次數(shù),具有較好的應(yīng)用前景。但由于結(jié)構(gòu)還比較簡(jiǎn)單,有待進(jìn)一步完

17、善。輸入錯(cuò)誤密碼:圖25 輸入錯(cuò)誤密碼仿真圖輸入正確密碼:圖26 輸入正確密碼仿真圖3、實(shí)驗(yàn)調(diào)試結(jié)果密碼鎖的控制電路是整個(gè)電路的控制中心,主要完成對(duì)數(shù)字按鍵輸入和功能按鍵輸入的響應(yīng)控制。、數(shù)字按鍵輸入的響應(yīng)控制如果按下數(shù)字鍵,第一個(gè)數(shù)字會(huì)從顯示器的最右端開(kāi)始顯示,此后每新按下一個(gè)數(shù)字時(shí),顯示器上的數(shù)字必須左移一位,一邊將新的數(shù)字顯示出來(lái)。假如要更改輸入的數(shù)字,可以按倒退按鍵來(lái)清除前一個(gè)輸入的數(shù)字,或者按清除鍵清除所有輸入的數(shù)字,再重新輸入四位數(shù)。由于這里設(shè)計(jì)的是一個(gè)四位的電子密碼鎖,所以當(dāng)輸入的數(shù)字鍵超過(guò)四個(gè)時(shí),電路不予理會(huì),而且不再顯示第四個(gè)以后的數(shù)字。、功能按鍵輸入響應(yīng)控制清除鍵:清除所有

18、的輸入數(shù)字,即做歸零動(dòng)作。上鎖鍵:按下此鍵時(shí)可將密碼鎖的門上鎖(上鎖前必須先設(shè)定一個(gè)四位的電子密碼)。電子密碼鎖的整合和驗(yàn)證。三、結(jié)論及心得體會(huì)本課程設(shè)計(jì)主要是基于vhdl文本輸入法設(shè)計(jì)電子密碼鎖,隨著社會(huì)物質(zhì)財(cái)富的日益增長(zhǎng),安全防盜已成為全社會(huì)關(guān)注的問(wèn)題?;趀da技術(shù)設(shè)計(jì)的電子密碼鎖,以其價(jià)格便宜、安全可靠、使用方便,受到了人們的普遍關(guān)注。而以現(xiàn)場(chǎng)可編程邏輯器件(fpga)為設(shè)計(jì)載體,以硬件描述語(yǔ)言(vhde)為主要表達(dá)方式,以quartus開(kāi)發(fā)軟件和gw48eda開(kāi)發(fā)系統(tǒng)為設(shè)計(jì)工具設(shè)計(jì)的電子密碼鎖,由于其能夠?qū)崿F(xiàn)數(shù)碼輸入、數(shù)碼清除、密碼解除、密碼更改、密碼上鎖和密碼解除等功能,因此,能夠

19、滿足社會(huì)對(duì)安全防盜的要求。通過(guò)本次課程設(shè)計(jì)我收獲頗多,剛開(kāi)始拿到題目后,沒(méi)有一個(gè)明確的方案,查了很多資料,大部分都用到了矩陣鍵盤,并且比較復(fù)雜,后來(lái)根據(jù)實(shí)驗(yàn)箱設(shè)計(jì)了該方案。這就要求我們要根據(jù)現(xiàn)實(shí)的條件去設(shè)計(jì)適合自己硬件的程序。在這次課程設(shè)計(jì)中,最頭疼的問(wèn)題就是各個(gè)模塊仿真正確后,最后的頂層文件卻并沒(méi)有達(dá)到預(yù)期的效果,很是令人灰心,并無(wú)從查找。后來(lái)我試著把每一個(gè)模塊逐漸添加到頂層中,每添加一個(gè)就仿真一下,并留意中間信號(hào)量的變化,根據(jù)波形去調(diào)試相應(yīng)的模塊,最終得到了想要的波形。當(dāng)然期間遇到了很多的困難,通過(guò)向老師同學(xué)請(qǐng)教,并積極思考,最終這些難題都得到了解決,這也讓我懂得了團(tuán)隊(duì)的重要性。參考資料:

20、1 潘松著.eda技術(shù)實(shí)用教程(第二版). 北京:科學(xué)出版社,2005.2 康華光主編.電子技術(shù)基礎(chǔ) 模擬部分. 北京:高教出版社,2006.3 閻石主編.數(shù)字電子技術(shù)基礎(chǔ). 北京:高教出版社,2003.4 譚會(huì)生、瞿遂春.eda技術(shù)綜合應(yīng)用實(shí)例與分析.西安電子科技大學(xué)出版社,20045 高有堂.eda技術(shù)及應(yīng)用實(shí)踐.清華大學(xué)出版社,20066候伯亨著.vhdl硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)m.西安:西安電子科技大學(xué)出版社,2009.7張昌凡著.可編程邏輯器件及vhdl設(shè)計(jì)技術(shù)m.廣州:華南理工大學(xué)出版社,2001. 8曹昕燕、周鳳臣等.eda技術(shù)實(shí)驗(yàn)與課程設(shè)計(jì).清華大學(xué)出版社,2006源程序

21、:【1】 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport(clk_1k:in std_logic; clk:out std_logic);end;architecture rtl of fenpin isbeginprocess(clk_1k)variable count:std_logic_vector(9 downto 0);beginif(clk_1kevent and clk_1k=1) thencount:=count+1;end if;clk=

22、count(9);end process;end rtl;【2】library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity code_set isport(set,enter1:in std_logic;datain:in std_logic_vector(3 downto 0);ram:out std_logic_vector(3 downto 0);led_r_temp1,led_g_temp1:out std_logic);end;architecture rtl of code_set

23、isbeginprocess(enter1,set)beginif(enter1event and enter1=1) thenif(set=0) then ram=datain;led_r_temp1=1;led_g_temp1=0;else led_r_temp1=0;led_g_temp1=0;end if;end if;end process;end;【3】library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity judge isport(clk_1k,set:in std_logic

24、;datain:in std_logic_vector(3 downto 0);judge:out std_logic);end;architecture rtl of judge isbeginprocess(set,clk_1k,datain)beginif(clk_1kevent and clk_1k=1) thenif(set=0) then judge=0;elsif(set=1) thenif(datain(0) or datain(1) or datain(2) or datain(3)=0) then judge=0;elsif(datain(0) or datain(1) o

25、r datain(2) or datain(3)=1) thenjudge=1;else judge=0;end if;end if;end if;end process;end;【4】library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity judge_load isport(judge:in std_logic;judge_load:out std_logic);end;architecture rtl of judge_load issignal temp:std_logic:=0;be

26、ginprocess(judge)beginif(judgeevent and judge=1) thentemp=1;end if;end process;judge_load=temp;end;【5】library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity time_5 isport(clk,judge_load,set:in std_logic;state:out std_logic);end;architecture rtl of time_5 issignal count_5:std

27、_logic_vector(2 downto 0);signal state1:std_logic;beginprocess(clk)beginif(clkevent and clk=1) thenif(judge_load=1) then if(count_5=101) thencount_5=101;else count_5state1state1state1state1state1state1=0;end case;end process;state=state1 and set;end;【6】library ieee;use ieee.std_logic_1164.all;use ie

28、ee.std_logic_unsigned.all;entity unlock isport(set,enter2,state:in std_logic;datain,ram:in std_logic_vector(3 downto 0);unlock:out std_logic);end;architecture rtl of unlock isbeginprocess(enter2)beginif(enter2event and enter2=1) thenif(set=1) then if(state=1) thenif(datain=ram) thenunlock=1;else unl

29、ock=0;end if;end if;end if;end if;end process;end rtl;【7】library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity unlock_led isport(state,unlock,clk_1k:in std_logic;led_r_temp2,led_g_temp2:out std_logic);end;architecture rtl of unlock_led isbeginprocess(clk_1k,state)beginif(cl

30、k_1kevent and clk_1k=1) thenif(state=1) then if(unlock=1) thenled_r_temp2=0;led_g_temp2=1;else led_r_temp2=1;led_g_temp2=0;end if;end if;end if;end process;end;【8】library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity unlock_sound isport(clk,unlock,clk_1k:in std_logic;speake

31、r_temp1:out std_logic);end;architecture rtl of unlock_sound issignal count_2:std_logic_vector(1 downto 0);signal temp:std_logic;beginprocess(clk)beginif(clkevent and clk=1) thenif(unlock=1) then if(count_2=10) thencount_2=10;temp=0;else count_2=count_2+1;temp=1;end if;end if;end if;end process;speaker_temp1=clk_1k and temp;end;【9】library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alert isport(state,clk,clk_1k,set,unlock:in std_logic;led_r_temp3,speaker_temp2:out std_logi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論