【正文】
U TM U XS E L [ 4 . . 0 ]D A T A [ 3 1 . . 0 ]O U TM U XD QP R EE N AC L RD QP R EE N AC L R011SELD A T A AD A T A BO U T 0M U X 2 1SELD A T A AD A T A BO U T 0M U X 2 1A d d 06 39。 9 END BLOCK KEY_DECODER。 FN=NOT(N(3)AND N(2)AND N(1)AND N(0))。 END IF。 WHEN OTHERS=F=1000。 THEN CASE Z IS WHEN11011=F=0100。EVENT AND C_QD=39。 END IF。 WHEN OTHERS=N=1111。 WHEN10101=N=1000。 WHEN01110=N=0110。 WHEN01011=N=0100。 WHEN00101=N=0010。) THEN CASE Z IS WHEN11101=N=0000。EVENT AND C_QD=39。C。 KEY_DECODER: BLOCK SIGNAL Z: STD_LOGIC_VECTOR(4 DOWNTO 0)。 SEL=1110 WHEN C_SR=0 ELSE 1101 WHEN C_SR=1 ELSE 1011 WHEN C_SR=2 ELSE 0111 WHEN C_SR=3 ELSE 1111。 C_SR=Q(5 DOWNTO 4)。 END IF。139。 COUNTER: BLOCK IS 8 BEGIN PROCESS(CLK_1K)IS BEGIN IF(CLK_1K39。 C(1)=KEY_IN(1)。 KSEL=SEL。 CQD=C_QD。 FLAG_N=FN。 BEGIN DATA_N=N。 SIGNAL Q: STD_LOGIC_VECTOR(5 DOWNTO 0)。 SIGNAL FN,FF: STD_LOGIC。 SIGNAL C_SR: STD_LOGIC_VECTOR(1 DOWNTO 0)。 END SR。 KSEL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 FLAG_F: OUT STD_LOGIC。 DATA_F: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 KEY_IN: IN STD_LOGIC_VECTOR(2 DOWNTO 0)。 USE 。 USE 。 從編寫程序到完成此次課程設(shè)計(jì),親自操作軟件起來(lái)從生硬到熟練,現(xiàn)在能較嫻熟的運(yùn)用 7 QuartusⅡ。 在 EDA軟件平臺(tái)上,用硬件描述語(yǔ)言 VHDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。 電子密碼鎖整個(gè)系統(tǒng)的仿真如下圖示: 四、設(shè)計(jì)的心得體會(huì) 此次的設(shè)計(jì)是參考了《 EDA技術(shù)實(shí)驗(yàn)與課程設(shè)計(jì)》 里的程序,不過(guò)由于程序里面出現(xiàn)了不少的語(yǔ)法錯(cuò)誤,使得在編譯時(shí)出現(xiàn)了 20 多個(gè)錯(cuò)誤,不過(guò)在看過(guò)書后,細(xì)心地檢查過(guò)程序后方能糾正過(guò)來(lái)。 電子密碼鎖的整合和驗(yàn)證 要完成電子密碼鎖的設(shè)計(jì),還必須將上述三個(gè)功能模塊進(jìn)行整合。 解除鍵:按下此建輝檢查輸入的密碼是否正確,若密碼正確無(wú)誤則解鎖。 b. 功能按鍵輸入響應(yīng)控制 清除鍵:清除所有的輸入數(shù)字,即做歸零動(dòng)作。 假如要更改輸入的數(shù)字,可以按倒退按鍵來(lái)清除前一個(gè)輸入的數(shù)字,或者按清除鍵清除所有輸入的數(shù)字,再重新輸入四位數(shù)。 按鍵位置與數(shù)碼關(guān)系(表) 圖 3 掃描位置 CSR【 1… 0】 00 00 00 01 01 01 10 10 10 11 11 11 鍵盤輸出信號(hào) SEL【 3… 0】 0011 0101 0110 0011 0101 0110 0011 0101 0110 0011 0101 0110 按鍵號(hào) 1 2 3 4 5 6 7 8 9 * 0 圖 4 所示是密碼鎖輸入模塊的仿真波形 時(shí)序產(chǎn)生電路 鍵盤掃描電路 按鍵數(shù)據(jù)緩存器 鍵盤 彈跳消除電路 鍵盤譯碼電路 5 《 2》 密碼鎖控制模塊 密碼鎖的控制電路是整個(gè)電路的控制中心,主要完成對(duì)數(shù)字按鍵輸入和功能按鍵輸入的響應(yīng)控制。 d. 按鍵存儲(chǔ)電路 因?yàn)槊恳淮螔呙钑?huì)產(chǎn)生 新的按鍵數(shù)據(jù),可能會(huì)覆蓋前面的數(shù)據(jù),所以需要一個(gè)按鍵存儲(chǔ)電路。 c.鍵盤譯碼電路 上述鍵盤中的按鍵分為 數(shù)字按鍵和文字按鍵,每一個(gè)按鍵可能負(fù)責(zé)不同的功能,例如清除鍵、上鎖鍵和解鎖鍵等。 如下圖示: 圖 2 a. 時(shí)序產(chǎn)生電路 產(chǎn)生電路中使用的三種不同頻率的工作脈沖波形,即系統(tǒng)時(shí)鐘脈沖、彈跳消除取樣信號(hào)和鍵盤掃描信號(hào)。 電子密碼鎖的整體結(jié)構(gòu) 電子密碼鎖的整體結(jié)構(gòu)如圖 1 所示,它包括密碼鎖輸入模塊、控制模塊和顯示模塊 等。 ( 5) 密碼解除:按下解除鍵首先檢查輸入的密碼是否正確 ,密碼正確即解鎖。 ( 3) 密碼更改:按下更改鍵可將目前數(shù)據(jù)設(shè)定為新的密碼。同時(shí)將先前輸入的數(shù)據(jù)依次左移一個(gè)數(shù)字位置。而以現(xiàn)場(chǎng)可編程邏輯器件 (FPGA)為設(shè)計(jì)載體,以硬件描述語(yǔ)言 (VHDE)為主要表達(dá)方式,以 QuartusⅡ 開發(fā)軟件和 GW48EDA 開發(fā)系統(tǒng)為設(shè)計(jì)工具設(shè)計(jì)的電子密碼鎖,由于其能