【文章內(nèi)容簡(jiǎn)介】
01011001 WHEN BIN = 59 ELSE00000000。END Block Binary_BCD。SELECT_BCD : BlockBEGINNUM = BCD(3 DOWNTO 0) WHEN (S=0 OR S=2 OR S=4) ELSEBCD(7 DOWNTO 4)。 End Block SELECT_BCD。SEVEN_SEGMENT : Block Begin gfedcbaSEG = 0111111 WHEN NUM = 0 ELSE0000110 WHEN NUM = 1 ELSE 1011011 WHEN NUM = 2 ELSE1001111 WHEN NUM = 3 ELSE1100110 WHEN NUM = 4 ELSE1101101 WHEN NUM = 5 ELSE1111101 WHEN NUM = 6 ELSE0000111 WHEN NUM = 7 ELSE 1111111 WHEN NUM = 8 ELSE1101111 WHEN NUM = 9 ELSE1110111 WHEN NUM = 10 ELSE1111100 WHEN NUM = 11 ELSE0111001 WHEN NUM = 12 ELSE1011110 WHEN NUM = 13 ELSE1111001 WHEN NUM = 14 ELSE1110001 WHEN NUM = 15 ELSE0000000。End Block SEVEN_SEGMENT。 延遲與微分電路延遲與微分電路用途:用途: 將寬脈沖減小為一個(gè)時(shí)鐘周期的脈將寬脈沖減小為一個(gè)時(shí)鐘周期的脈 沖寬度;消除小于一個(gè)周期的脈沖沖寬度;消除小于一個(gè)周期的脈沖CPIN DCPDCPOUT延遲與微分電路延遲與微分電路時(shí)序圖:CPINQ1Q2OUTCPIN DCPDCPOUT同步計(jì)數(shù)器電路同步計(jì)數(shù)器電路用途:用途: 消除競(jìng)爭(zhēng)冒險(xiǎn);消除延時(shí)誤差消除競(jìng)爭(zhēng)冒險(xiǎn);消除延時(shí)誤差CPIN DCPDCPECCLKQl 機(jī)械開關(guān)的抖動(dòng)存在三種情況:按下時(shí)有抖動(dòng),松開時(shí)也有抖動(dòng);按下時(shí)有抖動(dòng),松開時(shí)無抖動(dòng);按下時(shí)無抖動(dòng),松開時(shí)有抖動(dòng)。機(jī)械開關(guān)的抖動(dòng)波形、抖動(dòng)次數(shù)、抖動(dòng)時(shí)間都是隨機(jī)的,并不是每次都會(huì)產(chǎn)生抖動(dòng)。 l 不同開關(guān)的最長(zhǎng)抖動(dòng)時(shí)間也不同。抖動(dòng)時(shí)間的長(zhǎng)短和機(jī)械開關(guān)特性有關(guān),一般為 5ms到 10ms。但是,某些開關(guān)的抖動(dòng)時(shí)間長(zhǎng)達(dá) 20ms,甚至更長(zhǎng)。所以,在具體設(shè)計(jì)中要具體分析,根據(jù)實(shí)際情況來調(diào)整設(shè)計(jì)。 l 彈跳現(xiàn)象以及彈跳消除如圖 1 所示,雖然只是按下按鍵一次后放掉,結(jié)果在按鍵信號(hào)穩(wěn)定先后竟出現(xiàn)了多個(gè)段脈沖,如果將這樣的信號(hào)直接送到計(jì)數(shù)器之類的時(shí)序電路,結(jié)果將可能發(fā)生計(jì)數(shù)超過一次以上的誤動(dòng)作,從而誤以為鍵盤按了多次。因此,必須加上彈跳消除電路,除去短脈沖,避免誤操作的發(fā)生。 按鍵消抖電路按鍵消抖電路消抖電路消抖電路用途:用途: 消除競(jìng)爭(zhēng)冒險(xiǎn);消除抖動(dòng)消除競(jìng)爭(zhēng)冒險(xiǎn);消除抖動(dòng)消抖電路消抖電路CPIN DCPDCPSR DOUT*************************************************************LIBRARY IEEE。USE 。USE 。USE 。**************************************************************ENTITY Debunce isPORT( test_S : OUT STD_LOGIC。 CP : IN STD_LOGIC。 Key : IN STD_LOGIC。 DLY_OUT : OUT STD_LOGIC。 DIF_OUT : OUT STD_LOGIC)。END Debunce。**************************************************************ARCHITECTURE a OF Debunce ISSIGNAL SAMPLE, DLY, NDLY, DIFF : STD_LOGIC。 Binary BEGINtest_S = SAMPLE。 Free_Counter : Block 計(jì)數(shù)器 amp。 產(chǎn)生掃描信號(hào) Signal Q : STD_LOGIC_VECTOR(14 DOWNTO 0)。Signal D0 : STD_LOGIC。Begin PROCESS (CP) 計(jì)數(shù)器計(jì)數(shù) BeginIF CP39。Event AND CP=39。139。 thenD0 = Q(4)。Q = Q+1。 END IF。END PROCESS。SAMPLE = Q(4) AND NOT D0。 產(chǎn)生 25HZ脈沖SAMPLE = Q(1) AND NOT D0。 END Block Free_Counter。 Debunce : Block DebounceSIGNAL D0, D1, S, R : STD_LOGIC。 Begin Process (CP)BeginIF CP39。EVENT AND CP=39。