資源描述:
《基于cpld的數(shù)字鎖》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、基于CPLD設(shè)計(jì)的數(shù)字鎖EDA技術(shù)作為現(xiàn)代電子技術(shù)的核心,它依賴功能強(qiáng)大的計(jì)算機(jī),在EDA工具軟件平臺上,對以硬件描述語言HDL為系統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合、結(jié)構(gòu)綜合,以及邏輯優(yōu)化和仿真測試。一、總體設(shè)計(jì)思路關(guān)于這個(gè)課題,我們把邏輯功能劃分為兩個(gè)大的模塊:控制部分和處理部分??刂颇K是整個(gè)系統(tǒng)的控制核心,負(fù)責(zé)接收其模塊傳來的輸入信號,再根據(jù)系統(tǒng)的功能產(chǎn)生相應(yīng)的控制信號送到相關(guān)的模塊。具體思路如下:密碼預(yù)先存入寄存器中,開鎖時(shí),輸入密碼存入另一寄存器中,當(dāng)按下“確定”鍵時(shí),啟動(dòng)比較器,比較兩個(gè)寄存器中的內(nèi)容
2、,當(dāng)結(jié)果相同時(shí)M=1,LT綠燈亮,并開鎖;當(dāng)結(jié)果不同時(shí)M=0,LF紅燈亮,不開鎖。用戶需要修改密碼時(shí),先開鎖,再按“設(shè)定密碼”,清除預(yù)先存入的密碼,通過鍵盤輸入新的2位十進(jìn)制數(shù),然后再按下確定鍵完成操作??傇O(shè)計(jì)框圖如下:鍵盤譯碼開鎖LED顯示輸入密碼寄存器鍵盤消抖密碼預(yù)存寄存器綠燈亮鍵盤掃描紅燈亮報(bào)警M=1消除密碼輸入兩位十進(jìn)制數(shù)密碼修改YN二、單元模塊設(shè)計(jì)2.1消除抖動(dòng)模塊我們使用的按鍵通常都是機(jī)械彈性開關(guān),當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)按鍵開關(guān)在閉合時(shí)不會馬上穩(wěn)定地接通,在斷開時(shí)也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串
3、的抖動(dòng)(如下圖所示)。然而,抖動(dòng)時(shí)間的長短由按鍵的機(jī)械特性決定,一般為5ms~10ms。這是一個(gè)很重要的時(shí)間參數(shù),在很多場合都要用到。在這里,我們用軟件去除抖動(dòng)。當(dāng)檢測到鍵閉合時(shí),執(zhí)行一個(gè)延時(shí)程序產(chǎn)生數(shù)毫秒的延時(shí),讓前沿彈跳消失后再檢測閉合;當(dāng)發(fā)現(xiàn)鍵松開后,也給數(shù)毫秒的延時(shí),當(dāng)后沿彈跳消失后,再檢測下一個(gè)鍵的輸入。或者當(dāng)前沿彈跳消失后,將檢測到的信號所存,然后再輸出,這樣就不需要后沿延時(shí)了。消除抖動(dòng)的電路封裝圖如下:程序如下:LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_arith.ALL;
4、USEieee.std_logic_unsigned.ALL;LIBRARYaltera;USEaltera.maxplus2.ALL;ENTITYxiaodouISPORT(CLK,B_IN:INSTD_LOGIC;B_OUT:OUTSTD_LOGIC);END;ARCHITECTUREaOFxiaodouISsignalVcc,INV_B:std_logic;signalA0,A1:std_logic;signalB0,B1:std_logic;BEGINVcc<='1';INV_B<=notB_IN;dff1:dffPORTMAP(d=>Vcc,q=>
5、A0,clk=>CLK,prn=>Vcc,clrn=>INV_B);dff2:dffPORTMAP(d=>Vcc,q=>A1,clk=>CLK,prn=>Vcc,clrn=>INV_B);process(CLK)beginifCLK'EVENTandCLK='1'thenB0<=notA1;B1<=B0;endif;endprocess;B_OUT<=not(B1andnotB0);END;消抖電路的仿真波形圖:2.2鍵盤掃描模塊我們在鍵盤的四列輸入口中輸入一個(gè)低電平時(shí)鐘掃描,當(dāng)有按鍵被打下時(shí),對應(yīng)的行被鍵接通也呈現(xiàn)低電平狀態(tài),然后將此輸入輸出信號輸出到鍵盤
6、編碼就可以進(jìn)行鍵盤按鍵識別了。鍵盤掃描封裝圖如下:該模塊程序如下:LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSAOMIAOISPORT(CLK:INSTD_LOGIC;CLK_SAOMIAO:OUTSTD_LOGIC_VECTOR(4downto1));END;ARCHITECTUREaOFSAOMIAOISSignalM:STD_LOGIC_VECTOR(2DOWNTO1);SIGNALN:S
7、TD_LOGIC_VECTOR(4DOWNTO1);BeginPROCESS(CLK)BeginIFCLK'EventANDCLK='1'THENN<=N+1;M<=N(4DOWNTO3);ENDIF;ENDPROCESS;CLK_SAOMIAO<="1110"WHENM=0ELSE"1101"WHENM=1ELSE"1011"WHENM=2ELSE"0111"WHENM=3ELSE"1111";END;鍵盤掃描模塊仿真圖:2.3七段數(shù)碼顯示電路模塊本模塊我們通過串行掃描方式驅(qū)動(dòng)LED數(shù)碼管,可較少地占用可編程器件資源;并利用MAXPLUSⅡ?qū)?dòng)態(tài)掃描LED
8、顯示電路進(jìn)行仿真。顯示電路模塊封裝圖如下:程序如下: