1)時序產(chǎn)生電路
本時序產(chǎn)生電路中使用了三種不同頻率的工作脈沖波形:系統(tǒng)時鐘脈沖(它是系統(tǒng)內(nèi)部所有時鐘脈沖的源頭,且其頻率最高)、彈跳消除取樣信號、鍵盤掃描信號。
當一個系統(tǒng)中需使用多種操作頻率的脈沖波形時,最方便的方法之一就是利用一個自由計數(shù)器來產(chǎn)生各種需要的頻率。也就是先建立一個N位計數(shù)器,N的大小根據(jù)電路的需求決定,N的值越大,電路可以分頻的次數(shù)就越多,這樣就可以獲得更大的頻率變化,以便提供多種不同頻率的時鐘信號。若輸入時鐘為CLK,N位計數(shù)器的輸出為Q[N-10],則Q(O)為CLK的2分頻脈沖信號,Q(1)為CLK的4分頻脈沖信號,Q(2)為CLK的8分頻脈沖信號……Q(N-1)為CLK的2N分頻脈沖信號; Q(5 DOWNTO 4)取得的是一個脈沖波形序列,其值依00-01-10-11-00-01周期性變化,其變化頻率為CLK的25分頻,也就是32分頻。我們利用以上規(guī)律即可得到各種我們所需要頻率的信號或信號序列。
2)鍵盤掃描電路
掃描電路的作用是用來提供鍵盤掃描信號(如表中的KY3~KY0)的,掃描信號變化的順序依次為1110-1101-1011-0111-1110……依序地周而復(fù)始。掃描時依序分別掃描四列按鍵,當掃描信號為1110時掃描KY3這一排按鍵;當掃描信號為1101時,掃描KY2這一排按鍵;當掃描信號為1011時,掃描KY1這一排按鍵;當掃描信號為0111時,掃描KY0這一排按鍵。每掃描一排按鍵就檢查一次是否有鍵被按下,如果這排沒有按鍵被按下就忽略,反之,如果出現(xiàn)被按下的鍵則立刻進行按鍵編碼的動作,且將編碼的結(jié)果儲存于寄存器中。
3)彈跳消除電路
由于本設(shè)計中采用的矩陣式鍵盤是機械開關(guān)結(jié)構(gòu),因此在開關(guān)切換的瞬間會在接觸點出現(xiàn)信號來回彈跳的現(xiàn)象,對于電子密碼鎖這種靈敏度較高的電路這種彈跳將很可能會造成誤動作輸入,從而影響到密碼鎖操作的正確性。
從如圖1中可以觀察出彈跳現(xiàn)象產(chǎn)生的原因,雖然只是按下按鍵一次然后放掉,然而實際產(chǎn)生的按鍵信號卻不止跳動一次,經(jīng)過取樣信號的檢查后,將會造成誤判斷,以為鍵盤按了兩次。
如圖1 彈跳現(xiàn)象產(chǎn)生錯誤的抽樣結(jié)果
如果調(diào)整抽樣頻率(如圖2所示),可以發(fā)現(xiàn)彈跳現(xiàn)象獲得了改善。
如圖2 調(diào)整抽樣頻率后得到的抽樣結(jié)果
因此必須加上彈跳消除電路,避免誤操作信號的發(fā)生。特別要注意的是,彈跳消除電路所使用的脈沖信號的頻率必須比其他電路使用的脈沖信號的頻率更高;通常將掃描電路的工作頻率定在24 Hz左右,而將彈跳消除電路的工作頻率定在128 Hz左右,其工作頻率通常是前者的4倍或者更高。
彈跳消除電路的實現(xiàn)原理如圖3所示,先將鍵盤的輸入信號D_IN做為電路的輸入信號,CLK是電路的時鐘脈沖信號,也就是取樣信號,D_IN經(jīng)過兩級D觸發(fā)器延時后再使用ItS觸發(fā)器處理。
如圖3 彈跳消除電路的內(nèi)部實現(xiàn)原理圖
此處RS觸發(fā)器的前端連接和非門的處理原則是:
(1)因為一般人的按鍵速度至多是10次/秒,亦即一次按鍵時間是100 ms,所以按下的時間可估算為50 ms。以取樣信號CLK的周期為8 ms計,則可以取樣到6次。
(2)對于不穩(wěn)定的噪聲,在4 ms以下則至多抽樣一次。
(3)在觸發(fā)器之前,接上AND-NOT之后,SR的組態(tài)如表1所示。
如圖1 RS觸發(fā)器真值表
·DO為1,且D1也為1時,結(jié)果S=1,R=0,D_OUT才會輸出1。這代表被取樣的D_IN信號能被連續(xù)取樣到兩次1,此時認定它己經(jīng)穩(wěn)定地按下按鈕。
·DO為0,且D1也為0時,結(jié)果S=0,R=1,D_OUT才會輸出0。這代表被取樣的D_IN信號能被連續(xù)取樣到兩次O,此時認定它已經(jīng)穩(wěn)定地放掉按鈕。
·DO為1,且D1為0時,則結(jié)果S=O,R=0,D_OUT將維持先前的輸出信號不變。DO=0,D1=1也是如此。
總之,必須取樣到兩次1才會輸出1,兩次O才會輸出0。最后,由于D ̄OUT的信號輸出時間寬度過長,所以輸出必須再接一級微分電路后,才接到譯碼電路。
4)鍵盤譯碼電路
上述鍵盤中的按鍵可分為數(shù)字按鍵和文字按鍵,每一個按鍵可能負責(zé)不同的功能,例如清除數(shù)碼、退位、激活電鎖、開鎖等,詳細功能參見如表2。
數(shù)字按鍵主要是用來輸入數(shù)字的,但是鍵盤所產(chǎn)生的輸出,也就是掃描回復(fù)信號,是無法直接拿來用做密碼鎖控制電路的輸入的;另外,不同的按鍵(數(shù)字按鍵和功能按鍵)具有不同的功能,所以必須由鍵盤譯碼電路來規(guī)劃每個按鍵的輸出形式,以便執(zhí)行相應(yīng)的動作。
如表2 鍵盤參數(shù)表
注:當沒有任何數(shù)字按鍵被按下時,鍵盤譯碼輸出“1111”;當某功能按鍵尚未定義其功能時,鍵
盤譯碼輸出“1000”。
鍵盤譯碼電路主要負責(zé)的工作是:首先判別是否有鍵按下;若被按下的是數(shù)字按鍵,則解碼成相對應(yīng)的BCD碼,若被按下的是功能按鍵,則解碼成四位數(shù)的碼字,由密碼鎖控制電路做相應(yīng)的動作。
5)按鍵存儲電路
因為每次掃描會產(chǎn)生新的按鍵數(shù)據(jù),可能會覆蓋前面的數(shù)據(jù),所以需要一個按鍵存儲電路,將整個鍵盤掃描完畢后的結(jié)果記錄下來。按鍵存儲電路可以使用移位寄存器構(gòu)成。
本設(shè)計將采用串行輸入/串行輸出(Serial In/Seria1 Out)移位寄存器硬件作為按鍵存儲電路。所謂的串行輸入/串行輸出移位寄存器,即數(shù)據(jù)一個接著一個依序進來,輸出時采用先進先出的順序,同樣是一個接著一個依序輸出。
根據(jù)以上設(shè)計思路,密碼鎖輸入電路的VHDL程序見4.3,2節(jié)的KEYBOARD.VHD程序,其中調(diào)用的程序(元件)DEBOUNαNG。VHD為鍵盤輸入去抖電路的VHDL源程序。
來源:ks990次