資源描述:
《鍵盤消抖電路》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、鍵盤消抖電路對于機械按鍵,雖然只是按下一次然后放掉,結果在按鍵信號穩(wěn)定前后會出現(xiàn)一些不該存在的噪聲,如圖所示。如果將這樣的信號直接輸入給計數(shù)器,結果將可能發(fā)生計數(shù)超過一次以上的錯誤。設計原理:(1)一般人的按鍵速度至多是10次/秒,即一次按鍵時間是100ms,所以按下的時間可估算為50ms。假如采樣信號(Sample)周期為8ms,則可采樣到6次。(2)對于不穩(wěn)定的噪聲在4ms以下,則至多可采樣到一次。(3)對于如圖電路,RS的組態(tài)僅有三種。DQCPKeySamDQCPQ1Q2OPSQR鍵盤消抖電路Q1Q2SROP000100100不變1000不
2、變11101DQCPKeySamDQCPQ1Q2OPSQR結論:對按鍵信號只有采樣到兩次1才會輸出1,兩次0才會輸出0。否則保持原狀態(tài)不變。(4)如果按鍵信號用于計數(shù)器計數(shù),那么消抖以后可能寬度過長,而導致超過計數(shù)1次以上的錯誤發(fā)生,所以最好后面再接一個微分電路。DQCPKeySamDQCPQ1Q2DlyoutSQRDQCPDinclkDQCPD1D2DiffoutECQCP計數(shù)器LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.ALL;ENTITYDebunceisPO
3、RT(Clk:INSTD_LOGIC;Key:INSTD_LOGIC;DLY_OUT:OUTSTD_LOGIC;DIF_OUT:OUTSTD_LOGIC);ENDDebunce;ARCHITECTUREaOFDebunceISSIGNALSAMPLE,DLY,NDLY,DIFF:STD_LOGIC;BEGINDQCPKeyClkDQCPQ1Q2DlyoutSQRDQCPDinclkDQCPD1D2Diffout分頻器Free_Counter:BlockSignalQ:STD_LOGIC_VECTOR(3Downto0);Signaltmp:STD_LO
4、GIC;BeginPROCESS(Clk)BeginIFClk'EventANDClk='1'thentmp<=Q(2);Q<=Q+1;ENDIF;ENDPROCESS;SAMPLE<=Q(2)ANDNOTtmp;--about8msENDBlock;DQCPKeyClkDQCPQ1分頻器Q2Debunce:BlockSIGNALQ0,Q1,S,R:STD_LOGIC;BeginProcess(Clk)BeginIFClk'EVENTANDClk='1'THENIFSAMPLE='1'THENQ1<=Q0;Q0<=KEY;S<=Q0ANDQ1;R<=N
5、OTQ0ANDNOTQ1;ENDIF;ENDIF;EndProcess;DLY<=RNORNDLY;NDLY<=SNORDLY;DLY_OUT<=DLY;EndBlockDebunce;Differential:BlockSignalD1,D2:STD_LOGIC;BEGINProcess(Clk)BeginIFClk'EVENTANDClk='1'THEND2<=D1;D1<=DLY;ENDIF;EndProcess;DIFF<=D1ANDNOTD2;ENDBlockDifferential;DIF_OUT<=DIFF;ENDa;