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