新四季網

帶按鍵去反跳功能的按鍵檢測方法和系統的製作方法

2023-09-19 08:46:25 3

專利名稱:帶按鍵去反跳功能的按鍵檢測方法和系統的製作方法
技術領域:
本發明總地涉及電子電路,更具體地涉及一種高性能按鍵去反跳校正方法和系統。
背景技術:
含有機械按鍵的用戶輸入設備經常遇到由於按鍵去反跳引起的錯誤。按鍵去反跳通常由按鍵的機械反跳引起,它會在按鍵信號中產生幹擾,這樣下去可能導致按鍵的錯誤檢測。例如,只按下一次的按鍵可能會產生按鍵去反跳,這可能導致鍵盤控制器以為相同的鍵按了兩次。另一種情況就是,按鍵去反跳可能導致鍵盤控制器以為該鍵根本沒有按下。
按鍵去反跳校正電路能夠阻止鍵盤中按下的按鍵反跳時出現的不希望有的兩次輸入(或者缺少輸入)。但是,傳統的按鍵去反跳系統是在固件中實現的,並且它們依賴於處理器的指令周期。這些系統相對比較慢,並且可能會佔用處理器的執行時間。此外,由於現有的系統依賴於處理器的指令周期,其時限無法統一且不可預測。
因此,就需要一種基於硬體的高性能的按鍵去反跳校正方法和系統。

發明內容
本發明提供一種高性能的按鍵去反跳校正方法和系統。
一個實施例中,本發明提供了一種帶按鍵去反跳功能的按鍵檢測方法,所述方法包括檢測按鍵激活;在用戶可定義數量的時鐘周期內測試所述按鍵激活;若在用戶可定義數量的時鐘周期內所述按鍵激活是有效的,存儲能識別已激活按鍵的按鍵索引至一緩衝器中;在用戶可定義數量的硬體按鍵掃描周期內測試被識別的已激活按鍵;若在用戶可定義數量的硬體按鍵掃描周期內所述按鍵激活是有效的,建立一按鍵激活事件。
一個實施例中,本發明提供了一種帶按鍵去反跳功能的按鍵檢測系統,所述系統包括用於檢測按鍵激活的電路;與所述電路連接的第一記數器和時鐘,用於在第一用戶可定義數量的時鐘周期內測試所述按鍵激活;按鍵去反跳緩衝器,用於在第一用戶可定義數量的時鐘周期內所述按鍵激活為有效時存儲識別已激活按鍵用的按鍵索引;第二記數器,用於在第一用戶可定義數量的硬體按鍵掃描周期內測試被識別的已激活按鍵;按鍵事件緩衝器,用於在第一用戶可定義硬體掃描周期內所述按鍵激活為有效時存儲按鍵激活事件。
一個實施例中,本發明提供了一種檢測按鍵的系統,所述系統包括檢測按鍵激活的裝置;在用戶可定義數量的時鐘周期內測試所述按鍵激活的裝置;在用戶可定義數量的時鐘周期內所述按鍵激活為有效時,在用戶可定義數量的硬體按鍵掃描周期內測試已測試的激活按鍵的裝置;在用戶可定義數量的硬體按鍵掃描周期內所述按鍵激活為有效時建立按鍵激活事件的裝置。
根據本發明的一個方面,提供了一種帶按鍵去反跳功能的按鍵檢測方法,所述方法包括檢測按鍵激活;在用戶可定義數量的時鐘周期內測試所述按鍵激活;若在用戶可定義數量的時鐘周期內所述按鍵激活是有效的,存儲能識別已激活按鍵的按鍵索引至一緩衝器中;在用戶可定義數量的硬體按鍵掃描周期內測試被識別的已激活按鍵;若在用戶可定義數量的硬體按鍵掃描周期內所述按鍵激活是有效的,建立一按鍵激活事件。
優選地,所述方法進一步包括檢測按鍵釋放;在用戶可定義數量的時鐘周期內測試所述按鍵釋放;若在用戶可定義數量的時鐘周期內所述按鍵激活是有效的,在用戶可定義數量的硬體按鍵掃描周期內測試所述按鍵釋放;
若在用戶可定義數量的硬體按鍵掃描周期內所述按鍵釋放是有效的,建立一按鍵釋放事件。
優選地,所述方法進一步包括對每個硬體按鍵掃描周期增加一個用戶可定義時間延遲。
優選地,所述時鐘周期與系統時鐘周期有關。
優選地,所述按鍵激活是鍵盤上按下的按鍵、滑鼠的移動、操縱杆的移動以及感應事件中的一個或者多個。
優選地,所述用於測試按鍵激活的用戶可定義數量的硬體按鍵掃描周期與用於按鍵釋放的用戶可定義數量的硬體按鍵掃描周期相同。
優選地,所述用於測試按鍵激活的用戶可定義數量的硬體按鍵掃描周期與用於按鍵釋放的用戶可定義數量的硬體按鍵掃描周期不同。
根據本發明的一個方面,提供了一種帶按鍵去反跳功能的按鍵檢測系統,所述系統包括用於檢測按鍵激活的電路;與所述電路連接的第一記數器和時鐘,用於在第一用戶可定義數量的時鐘周期內測試所述按鍵激活;按鍵去反跳緩衝器,用於在第一用戶可定義數量的時鐘周期內所述按鍵激活為有效時存儲識別已激活按鍵用的按鍵索引;第二記數器,用於在第一用戶可定義數量的硬體按鍵掃描周期內測試被識別的已激活按鍵;按鍵事件緩衝器,用於在第一用戶可定義硬體掃描周期內所述按鍵激活為有效時存儲按鍵激活事件。
優選地,所述電路檢測按鍵釋放;所述第一計數器在第二用戶可定義數量的時鐘周期內測試所述按鍵釋放;在第二用戶可定義數量的時鐘周期內所述按鍵激活為有效時,所述第二計數器在第二用戶可定義數量的硬體按鍵掃描周期內測試所述按鍵釋放;在第二用戶可定義數量的硬體按鍵掃描周期內所述按鍵釋放為有效時,所述按鍵事件緩衝器存儲按鍵釋放事件。
優選地,所述系統進一步包括加入每個硬體按鍵掃描周期內的用戶可定義時間延遲。
優選地,所述時鐘周期與系統時鐘周期有關。
優選地,所述按鍵激活是鍵盤上按下的按鍵、滑鼠的移動、操縱杆的移動以及感應事件中的一個或者多個。
優選地,所述用於測試按鍵激活的第一和第二用戶可定義數量的硬體按鍵掃描周期與用於按鍵釋放的第一和第二用戶可定義數量的硬體按鍵掃描周期相同。
優選地,所述用於測試按鍵激活的第一和第二用戶可定義數量的硬體按鍵掃描周期與用於按鍵釋放的第一和第二用戶可定義數量的硬體按鍵掃描周期不同。
優選地,所述第一記數器是加/減記數器。
優選地,所述第二記數器是加/減記數器。
根據本發明的一個方面,提供了一種檢測按鍵的系統,所述系統包括檢測按鍵激活的裝置;在用戶可定義數量的時鐘周期內測試所述按鍵激活的裝置;在用戶可定義數量的時鐘周期內所述按鍵激活為有效時,在用戶可定義數量的硬體按鍵掃描周期內測試已測試的激活按鍵的裝置;在用戶可定義數量的硬體按鍵掃描周期內所述按鍵激活為有效時建立按鍵激活事件的裝置。
優選地,所述系統進一步包括檢測按鍵釋放的裝置;在用戶可定義數量的時鐘周期內測試所述按鍵釋放的裝置;在用戶可定義數量的時鐘周期內所述按鍵激活為有效時,在用戶可定義數量的硬體按鍵掃描周期內測試所述按鍵釋放的裝置;在用戶可定義數量的硬體按鍵掃描周期內所述按鍵釋放為有效時建立按鍵釋放事件的裝置。
優選地,所述系統進一步包括對每個硬體按鍵掃描周期增加一個用戶可定義時鐘延遲的裝置。
優選地,所述時鐘周期與系統時鐘周期有關。


圖1是一臺個人計算機和一個輸入設備組成的系統的示意圖;圖2是根據本發明一個實施例的鍵盤矩陣的結構方框示意圖;圖3是根據本發明一個實施例與按鍵矩陣掃描電路相連的鍵盤開關矩陣的示意圖;圖4是根據本發明一個實施例的鍵盤掃描電路的時序示意圖;圖5是分別對應中止屏蔽(break-masking)法、開始屏蔽(make-masking)法和混合方法的時序示意圖;圖6A是根據本發明一個實施例的微去反跳操作的時序示意圖;圖6B是根據本發明一個實施例的微去反跳按鍵檢測的時序示意圖;圖7是根據本發明一個實施例的去反跳緩衝器的示意圖;圖8是根據本發明一個實施例的按鍵事件緩衝器的示意圖。
具體實施例方式
一個實施例中,本發明提供了一種用於硬體實現的開關去反跳電路校正按鍵機械反跳的方法和裝置。所述去反跳電路提供了有效的功率/性能設計,甚至適用於無線輸入設備。一個實施例中,所述按鍵去反跳分為兩個操作微去反跳(micro-debounce)和大規模去反跳(macro-debounce)。微去反跳是按鍵按下事件中的一個初級濾波機制。該操作將按鍵下按過程中可能發生的短期事件濾除。一旦按鍵激活被檢測,在隨後的幾個周期中,基於寄存器中的一個確定值,該按鍵激活被再次測試。一旦符合微去反跳條件,按鍵狀態被移到按鍵緩衝器中,以便進行大規模去反跳操作。大規模去反跳在(用戶可定義的)多個硬體按鍵掃描周期內檢查按鍵是否滿足去反跳的要求。
雖然本說明利用鍵盤和滑鼠作為輸入設備,但下面描述的實施例並不限於鍵盤和滑鼠。包括有機械按鍵的其他輸入設備,比如頭戴式耳機、遊戲控制器、麥克風、傳感器等,都屬於本發明的範圍。本申請中,術語「按鍵」一般用做由用戶激活的輸入設備。例如,如果是滑鼠或者遊戲控制器的話,按鍵激活則是滑鼠或者操縱杆的移動。如果為頭戴式耳機、麥克風或者傳感器,按鍵激活則是聲音或者感應到的事件。
圖1是根據本發明一個實施例的個人計算機(PC)主機106和輸入設備(例如鍵盤108)組成的系統的示意圖,其包括有無線或者有線(或者二者都有)接口和檢測裝置。
圖2是根據本發明一個實施例與一個接口設備(如集成電路202)配合的鍵盤矩陣203的結構示意圖。如圖2所示,接口設備202為按鍵掃描矩陣203服務,提供來自鍵盤的輸入。接口設備202和晶振206、EEPROM 208及天線216相連。指示器205包括有數字、大寫字母和滾動光,顯示在鍵盤上。接口設備202包括一個處理器,通過鍵盤矩陣203檢測和控制按鍵。
圖3是與按鍵矩陣掃描電路302相連的鍵盤開關矩陣1102的示意圖。鍵盤矩陣1102包含多個列1108和多個行1106。在圖3中所示的具體實施例中,多個列1108包含C0-C5六列,多個行1106包含R0-R3四行。為簡便起見,圖3的實施例中僅顯示了實際鍵盤矩陣的很小一部分。本領域的一般技術人員可知,行和列的數目可根據具體的應用而增加或者減少。
當用戶按下相應的按鍵時,多個開關1110連接對應的行和列。在本實施例中,當開關1110按下時,開關1110連接行R0和列C0。雖然沒有為每個開關給出標示數字,應該可以理解圖3中總共有24個開關1110連接彼此相交的行和列。為了便於討論,將圖3中所示的24個開關1110表示為開關1、開關2……和開關24。當某一特定行內對應的開關全部打開時,該行被與Vdd相連的電阻1112拉為「高」。行R0-R3為按鍵矩陣掃描電路302中的行解碼器1120提供輸入,這一點將在下面進行詳細的論述。
按鍵矩陣掃描電路302包括列/行控制邏輯1114和驅動邏輯1115,產生適當的信號以控制相應列和行的狀態。驅動邏輯1115包含一個三態驅動器1116和一個緩衝器1118。列/行控制邏輯1114產生合適的「高」和「低」信號,並將這些信號提供給三態驅動器1116的輸入端。列/行控制邏輯能產生合適的「使能」信號改變特定行或列的狀態,以控制控制邏輯1115中的三態驅動器1116的操作。
例如,如果三態驅動器1116的輸入為「高」,產生的使能信號致使三態驅動器1116輸出「高」信號,以驅動列或者行為「高」。相反的,如果輸入給三態驅動器1116的信號為「低」,產生的使能信號致使三態驅動器將列或者行驅動為「低」。該使能信號可為全局使能信號,為所有行啟動三態驅動器,例如ENB_R,或者為所有列啟動三態驅動器,例如ENB_C。該使能信號還可以為特定的行啟動三態驅動器,例如ENB_R1,或者為特定的列啟動三態驅動器,例如ENB_C3。
按鍵矩陣掃描電路302還包含行解碼器1120和列解碼器1122,對從鍵盤矩陣1102中對應的行和列接收的輸出信號進行解碼。來自行解碼器1120和列解碼器1122中的解碼輸出信號提供給掃描邏輯1124,以生成數據流指示不同開關(按鍵)1110的狀態。
按鍵矩陣掃描電路302還包括一個開關轉換檢測電路1126,接收來自行解碼器1120和列解碼器1122的輸出信號。開關轉換檢測電路1126與如下所述掃描各行和列的掃描邏輯1124通信連接。此外,開關轉換檢測電路1126生成一「輸入/輸出有效(I/O Active)」信號,並提供給輸入/輸出單元306(圖3中所示),以使系統轉換到如上所述的「忙」模式。一個實施例中,開關轉換檢測電路1126包括有一個硬體開關去反跳電路,用於校正按鍵的機械反跳。該去反跳電路提供了有效的功率/性能設計,甚至適用於無線輸入設備。
鍵盤掃描電路的操作可以參照圖4的時序圖來進行理解。參照圖4,所有行和列的初始狀態的分析從「就緒(ready)」參考線開始。處理開始時,提供向「就緒」參考線左方的轉換,以分清行和列的「高」或者「低」狀態。從「準備」參考點開始,ENB)C為高(有效),所有的列都被三態驅動器1116驅動為低,而所有的行都被圖3中所示的電阻1112拉為高。
例如,若開關(按鍵)#9被按下,R0從「高」變為「低」,這一轉換被用作觸發信號以鎖存(存儲)所有列的值。這一轉換還促使ENB_C從「高」轉為「低」。由於ENB_C為「低」,所有的列不再被驅動,因此,R0變回「高」。列C2的線電容和電阻1112的電阻電容乘積(RC)常數使得R0回到「高」的實際轉換被稍微延遲。由於開關#9還仍處於按下狀態,列C2變為「高」。列C2從「低」到「高」的轉換被用作觸發信號以鎖存所有列的值。列的值被鎖存後,ENB_C從「低」變為「高」,列C2從「高」變為「低」。所有其他的列仍保持在「低」狀態,因為ENB_C目前為高(有效)。
在圖4所示的實施例中,有一個高的鎖存列值(C2)和一個低的鎖存行值(R0)。一個鎖存列和一個鎖存行唯一地確定一個按鍵開關(開關#9),因此,沒必要進入對其他的行和列的「掃描」。因而在整個周期中掃描信號一直保持「低」。列/行控制邏輯1114結合驅動器邏輯1115產生控制上述的狀態轉換所需的所有信號。
此外,開關轉換檢測電路1126可根據接收自行解碼器1120和/或列解碼器1122的輸出信號,為輸入/輸出單元(圖中沒有示出)即時生成一個「輸入/輸出有效」信號,指出一個開關被激活。在本實施例中,所述的「輸入/輸入有效」信號由開關轉換檢測電路1126直接根據對因開關行#9被激活而導致的R0從「高」到「低」轉換的檢測即時生成。
一個實施例中,硬體開關去反跳電路校正按鍵的機械反跳。有多種途徑來實現去反跳的性能,包括中止屏蔽(break-masking),開始屏蔽(make-masking)和兩種途徑的混合。圖5描述的是上述各種去反跳方法的時序圖。
圖5中的符號定義如下TDB=去反跳間隔TFPM=第一按鍵按下開始的時間TLPM=最後按鍵按下開始的時間TFRB=第一按鍵釋放中止的時間TLRB=最後按鍵釋放中止的時間如圖所示,採用中止屏蔽方法時,如果按下某個按鍵(即「開始(make)」被檢測),即馬上註冊為一個有效的按鍵按下。如果機械反跳導致短期間內開關是打開的(即「中止(break)」的情況),去反跳算法將繼續報告該開關在與TDB相等的期間內仍然是關閉的,從而「屏蔽」中止。然後,只要有屏蔽的情況出現,測量TDB的計時器(如記數器)都須復位。這種方法類似於很多微控制器的復位線中的電阻-電容方法,其中的TDB相當於電阻電容乘積時間常數。
這種方法中,在儘可能早的時間對按鍵關閉進行報告,報告的按鍵關閉總時長為(TLRB-TFPM)+TDB。
採用開始屏蔽方法時,如果有按鍵被按下,直到檢測到周期大於TDB的一直持續的「開始」,才被註冊為有效的按鍵按下。因此,持續期間內的任何小於TDB的「開始」期間都被屏蔽。按鍵釋放時,第一中止導致該按鍵被報告為被釋放,任何後續的小於TDB的「開始」都將被屏蔽。這種方法中,報告的按鍵關閉總時間為(TFRB-TLPM)-TDB,小於TDB的「開始」期間被完全屏蔽。
採用混合方法時,開始屏蔽方法用於檢測鍵按下的開始。一旦檢測到按鍵確實被按下,將使用中止屏蔽方法來確定按鍵是否被釋放。按鍵壓下檢測和按鍵釋放檢測時將使用不同的TDB。這種方法中,在儘可能早的時間報告按鍵關閉,因而報告的按鍵關閉總時間是(TLRB+TDB2)-(TLPM+TDBI),小於TDB1的「開始」期間被完全屏蔽。
一般來說,中止屏蔽方法同時簡化了去反跳和消重像的實現。由於及時的報告了「開始」,因而無需緩衝按鍵按下,為隨後測定按鍵是否按下提供了足夠的時間。此外,雖然中止屏蔽方法或者混合方法要求對按鍵進行緩衝和做時間標記,直到按鍵被按下足夠長的時間,才進入重像檢測算法,但是在所有行和列的每個完整掃描的末端,都能夠及時地檢測重像。
以下將介紹中止屏蔽方法中各元件的寄存器轉換語言(RTL)描述。本領域的一般技術人員很容易理解並實現用於開始屏蔽方法和混合方法的寄存器轉換語言描述。
注釋+=Logical OR*=Logical ANDSSM[1:0]=Scan State MachineRTC[2:0]=Row terminal count-control registerCTC[4:0]=Column terminal count-control registerMKYVn[7:0]=Nth Modifier Key Value
S0=Idle StateS1=Scan StateS2=De-Ghost StateS3=Store-to-Buffer StateSEFF=Scan Enable Flip-FlopKI=Key Index Counter1)3-bit Row Counter(RC)to count 8 column inputsSync Reset((SSM=S0)+(RC=RTC))Increment(SSM=S1)2)5-bit Column Counter(CC)to count 19 row outputsSync Reset(SSM=S0)Increment(RC=RTC)3)8-bit″Row Hit″register(RH)to record row-hits as oolumnsare scannedFor each Nth bitSync Reset(SSM=S0)-Unnecessary,as each bit isset/cleared as column is scannedLoad(RC=Nth bit)InputsRH[N]+KSI[N]4)8-bit″Single-Hit″register(SH)to record hits in columnswith only 1 key downFor each Nth bitSync Reset(SSM=S0)Load(RC=0)-note 1 cycle pipe-lining-SH takes RH onecycle laterInputsSH[N]+RH[N]5)8-bit″Multi-Hit″register(MH)to record hits in columnswith 2 or more keys downFor each Nth bitSync Reset(SSM=S0)Load(RC=0)-note 1 cycle pipe-lining-MH takes RH onecycle laterInputsMH[N]+RH[N]6)8-bit key-index counter(KI)incremented at each key-scan,for usage code lookupSync Reset(SSM=S0)Increment(SSM=S1)
7)Scanning State Machine(SSM)Async ResetPORInput(next state)S0 if SEFF=0+(SSM=S3*RH!=0)S1 If SSM=S0*SEFF=1S2 if SSM=S1*(CC=CTC)*(RC=RTC)S3 if SSM=S26-byte bufferFor each single-byte key buffer,KB[N]Sync Reset(SSM=S0)(Reset to all 1′s)Load(NewKey!=KB[N]*NewKey!=MDKY[N])for all N(Store NewKey to beginning of buffer if not already inbuffer)InputsKB[N-1] for KB[N] where N>0;NewKey value forKB
For each debounce count value,DBCV[N]Load(NewKey!=KB[N]*NewKey!=MDKY[N])for all N OR8)Scan-clock enable flip-flop-1-bit to enable low-poweroscillatorAsync SetLogical OR of pulse detects on each Wake signalfrom each peripheralAsync ResetPOR+(AND of all~BUSY signals fromperipherals)Sync Reset9)KSOKey scan outputsKSI[N]=1 if SSM=S0+KSI_OE[N]=SSM=S0*N!=RC一個實施例中,本發明採用用於微去反跳按鍵檢測的各種綜合方法的硬體實現。也就是說,本發明的微去反跳方法對按鍵壓下(在預定的時鐘周期數內)和按鍵釋放(在預定的時鐘周期數內)事件均能檢測。一旦微去反跳操作檢測到某個按鍵被按下,就對該按鍵執行大規模去反跳,以確定該按鍵是否應識別為被激活的按鍵。
因此,本發明的按鍵去反跳操作被分為兩步微去反跳操作和大規模去反跳操作。微去反跳按鍵檢測是對基於硬體系統時鐘的按鍵按下(如向下)事件做的基於硬體的初級濾波,用於濾除比如在電子快速轉換(EFT)事件中出現的短期事件。一旦檢測到按鍵按下,在隨後的幾個時鐘周期中,根據在u_debounce[1:0]寄存器中定義的值對按鍵按下再次進行測試。
圖6A是微去反跳步驟的時序示意圖。如圖所示,當按鍵A在時刻td按下時,一個系統時鐘(SCK)周期後將檢測到按鍵的激活,如果u_debounce寄存器編程為具有值1,也就是在時刻t1。類似地,如果u_debounce寄存器編程設置值為2,兩個系統時鐘周期(t2)後,將檢測到按鍵的激活。相反地,當在時刻tu釋放按鍵A,一個(完整的)系統時鐘周期後,也就是如果u_debounce寄存器編程設置值為1,在時刻t3,檢測到按鍵的釋放。可選擇地,如果u_debounce寄存器編程設置值為2,兩個系統時鐘周期後,在時刻t4檢測到按鍵的釋放。一個實施例中,根據系統的要求,可使用兩個u_debounce寄存器,具有不同的值分別用於按鍵按下和釋放時的微去反跳操作。
一個實施例中,u_debounce寄存器被定義為u_debounce[1:0]=0->check key down[up)for 1 cycle.
u_debounce[1:0]=1->check key down[up)for 2 cycle.
u_debounce[1:0]=2->check key down(up)for 3 cycle.
u_debounce[1:0]=3->check key down(up)for 4 cycle.
一旦滿足微去反跳的條件,按鍵狀態被存入按鍵去反跳緩衝器,以便進行基於硬體的大規模去反跳操作。大規模去反跳操作在多個(用戶可定義的)硬體按鍵掃描周期內檢查按鍵是否滿足去反跳的要求。因此,大規模去反跳操作是基於硬體按鍵掃描周期的,而硬體按鍵掃描周期又是基於系統周期的。
一個實施例中,硬體按鍵掃描周期被定義為Time for scanning all(e.g.,8x20)keys+Time duration ofthe scancycle_timer[11:0]+(#of key pressed*u_debounce+1)/SCK掃描所有按鍵(例如8×20)的時間+scancycle_timer[11:0]的持續時間+(按下鍵的號#×u_debounce+1)/SCK。
對高性能鍵盤來說,要求高速的按鍵檢測,掃描周期計時器(scancycle_timer)可以設置為0,這樣的話去反跳時間間隔定義如下u_debounce*total#of keys/128K只有被檢測到「按下」的按鍵才會在進行u_debounce次測試。這樣,如果在該周期內按鍵被按下,則硬體按鍵掃描周期將更長一些。例如,對一個8×20的矩陣來說,u_debounce=2,掃描周期計時器=0,硬體去反跳時間間隔將為(8*20+3)/SCK=1.27ms,基於以上等式,SCK頻率為128KHz。
在某些情況下,根據按鍵開關機械反跳的特性,單個的按鍵按下事件會被誤認為多個按鍵按下事件。掃描周期計時器用於隔開硬體掃描活動,以便上述的錯誤情況將儘可能少發生。操作中,為了更有效地檢測按鍵按下事件,掃描周期計時器可被編程為對每個硬體掃描周期增加一個額外的(用戶可編程的)延時。
圖6B是具有或者不具有掃描周期計時器的大規模去反跳按鍵檢測的時序示意圖。如圖所示,若掃描周期計時器=0,三個硬體按鍵掃描周期(maD_debounce=3)後,大規模去反跳按鍵按下被檢測。大規模去反跳按鍵彈起(釋放)也在三個硬體按鍵掃描周期(maU_debounce=3)後被檢測。maD_debounce和maU_debounce的值可以不同。如果掃描周期計時器=Δt,則在每個硬體按鍵掃描周期的末端都加上一個延時Δt。
圖7是根據本發明一個實施例的去反跳緩衝器的示意圖。已滿足微去反跳按下條件的按鍵狀態存儲在(比如13×10)去反跳緩衝器中,以便進一步檢測大規模去反跳。如圖所示,去反跳緩衝器的每條記錄都包括一個8位的按鍵索引、一個4位的加/減大規模去反跳計數器(macro_debounce_cntr)和一個用於指示存儲在特定按鍵索引欄位內的按鍵上是否在執行彈起和按下去反跳操作的數據位。
一個實施例中,去反跳緩衝器的每個記錄定義如下bit 12」0」key in down detection;」1」key in up detection;bit 11-8key macro-debounce counter;an up/down counter;bit 7-0key index.
無論是否有按鍵按下,在每個按鍵矩陣掃描期間,最好都對u_debounce緩衝器進行去反跳條件檢查。
圖8是根據本發明一個實施例的按鍵事件緩衝器的示意圖。如圖所示,按鍵索引「A」有兩個記錄。當按鍵「A」的大規模去反跳按鍵按下事件被檢測時,存儲在按鍵事件緩衝器內的按鍵索引在UP/DN欄位為「0」。然後檢測該按鍵的「高」轉換,即按鍵釋放檢測。當滿足按鍵釋放的微去反跳檢測條件後,執行微去反跳檢測以檢測按鍵「A」的釋放。一旦滿足按鍵釋放的大規模去反跳檢測後,按鍵索引再次存入按鍵事件緩衝器中,UP/DN欄位值為「1」。
一個實施例中,在逐排硬體掃描周期中,當按鍵不能通過大規模去反跳條件時,大規模去反跳計數器復位為「0」。例如,如果maD_debounce[3:0]=3,檢測到的按鍵操作為按下、按下、彈起、按下、按下、按下,則maD_debounce計數器中的值為1,2,0,1,2,3。在計數到3時,按鍵值被複製到按鍵事件緩衝器。
一個實施例中,按鍵事件緩衝器的每個記錄定義如下bit 8set to 0 for the key down indication;1 for key up indication;bit 7-0key index下面的實施例將說明按鍵去反跳操作是如何進行的。當有按鍵按下時,將執行微去反跳操作。經微去反跳操作限制後,將對按鍵進行由按鍵按下大規模去反跳寄存器(maD_debounce[3:0])所定義的大規模去反跳條件測試。如果在「maD_debounce」個連續的硬體掃描周期內檢測到一個按鍵,則其將被移入(例如12×9)按鍵事件緩衝器中,以便輸入設備固件(運行在如圖2所示的接口設備202的處理器中)進行訪問。如果被激活,還會對該固件產生硬體中斷。
執行按鍵彈起的微去反跳操作時,一旦檢測到按鍵被按下,去反跳緩衝器的第12位將設置為表示去反跳緩衝器中的按鍵準備好進行大規模去反跳按鍵彈起檢測。該位還將去反跳計數器(如圖7中所示)轉換為降值計數的模式。一個實施例中,u_debounce的值也可用於按鍵彈起事件的檢測。無論何時,只要去反跳緩衝器按鍵在「u_debounce」個連續周期內彈起,去反跳計數器計數減1。一個實施例中,可對按鍵彈起事件檢測使用不同的u_debounce值。
執行按鍵彈起大規模去反跳操作時,該按鍵必須在「maU_debounce」個連續的硬體掃描周期內彈起,才會認為該按鍵被釋放。釋放後的按鍵複製到按鍵事件緩衝器中,第8位設置為「1」來表示一個彈起事件。
一個實施例中,本發明的系統包括以下用戶可編程的寄存器,用於微去反跳和大規模去反跳操作中u_debounce[1:0]maD_debounce[3:0]maU_debounce[3:0]scancycle_timer[11:0]一個實施例中,按鍵事件緩衝器被映射到存儲空間中。
本領域的一般技術人員可知,對本發明的上述或者其他實施方案進行的多種改變都沒有超出本發明的範圍。本發明並不僅限於上述公開的具體實施例或者方案,其覆蓋了由本發明權利要求所確定的範圍內的任何替換、修改或改進。
關聯申請參考本專利申請要求美國臨時專利申請號為No.60/613,658、申請日為2004年9月28日、名稱為「高性能按鍵去反跳的方法和裝置」的專利申請的優先權,其全部內容在此作為參考。
權利要求
1.一種帶按鍵去反跳功能的按鍵檢測方法,所述方法包括檢測按鍵激活;在用戶可定義數量的時鐘周期內測試所述按鍵激活;若在用戶可定義數量的時鐘周期內所述按鍵激活是有效的,存儲能識別已激活按鍵的按鍵索引至一緩衝器中;在用戶可定義數量的硬體按鍵掃描周期內測試被識別的已激活按鍵;若在用戶可定義數量的硬體按鍵掃描周期內所述按鍵激活是有效的,建立一按鍵激活事件。
2.如權利要求1所述的按鍵檢測方法,其特徵在於,所述方法進一步包括檢測按鍵釋放;在用戶可定義數量的時鐘周期內測試所述按鍵釋放;若在用戶可定義數量的時鐘周期內所述按鍵激活是有效的,在用戶可定義數量的硬體按鍵掃描周期內測試所述按鍵釋放;若在用戶可定義數量的硬體按鍵掃描周期內所述按鍵釋放是有效的,建立一按鍵釋放事件。
3.如權利要求1所述的按鍵檢測方法,其特徵在於,所述方法進一步包括對每個硬體按鍵掃描周期增加一個用戶可定義時間延遲。
4.如權利要求1所述的按鍵檢測方法,其特徵在於,所述時鐘周期與系統時鐘周期有關。
5.如權利要求1所述的按鍵檢測方法,其特徵在於,所述按鍵激活是鍵盤上按下的按鍵、滑鼠的移動、操縱杆的移動以及感應事件中的一個或者多個。
6.一種帶按鍵去反跳功能的按鍵檢測系統,所述系統包括用於檢測按鍵激活的電路;與所述電路連接的第一記數器和時鐘,用於在第一用戶可定義數量的時鐘周期內測試所述按鍵激活;按鍵去反跳緩衝器,用於在第一用戶可定義數量的時鐘周期內所述按鍵激活為有效時存儲識別已激活按鍵用的按鍵索引;第二記數器,用於在第一用戶可定義數量的硬體按鍵掃描周期內測試被識別的已激活按鍵;按鍵事件緩衝器,用於在第一用戶可定義硬體掃描周期內所述按鍵激活為有效時存儲按鍵激活事件。
7.如權利要求6所述的按鍵檢測系統,其特徵在於,所述電路檢測按鍵釋放;所述第一計數器在第二用戶可定義數量的時鐘周期內測試所述按鍵釋放;在第二用戶可定義數量的時鐘周期內所述按鍵激活為有效時,所述第二計數器在第二用戶可定義數量的硬體按鍵掃描周期內測試所述按鍵釋放;在第二用戶可定義數量的硬體按鍵掃描周期內所述按鍵釋放為有效時,所述按鍵事件緩衝器存儲按鍵釋放事件。
8.如權利要求6所述的按鍵檢測系統,其特徵在於,所述系統進一步包括加入每個硬體按鍵掃描周期內的用戶可定義時間延遲。
9.一種檢測按鍵的系統,所述系統包括檢測按鍵激活的裝置;在用戶可定義數量的時鐘周期內測試所述按鍵激活的裝置;在用戶可定義數量的時鐘周期內所述按鍵激活為有效時,在用戶可定義數量的硬體按鍵掃描周期內測試已測試的激活按鍵的裝置;在用戶可定義數量的硬體按鍵掃描周期內所述按鍵激活為有效時建立按鍵激活事件的裝置。
10.如權利要9所述的檢測按鍵的系統,其特徵在於,所述系統進一步包括檢測按鍵釋放的裝置;在用戶可定義數量的時鐘周期內測試所述按鍵釋放的裝置;在用戶可定義數量的時鐘周期內所述按鍵激活為有效時,在用戶可定義數量的硬體按鍵掃描周期內測試所述按鍵釋放的裝置;在用戶可定義數量的硬體按鍵掃描周期內所述按鍵釋放為有效時建立按鍵釋放事件的裝置。
全文摘要
一種帶按鍵去反跳功能的按鍵檢測系統,包括用於檢測按鍵激活的電路;與所述電路連接的第一記數器和時鐘,用於在第一用戶可定義數量的時鐘周期內測試所述按鍵激活;按鍵去反跳緩衝器,用於在第一用戶可定義數量的時鐘周期數內所述按鍵激活為有效時存儲識別已激活按鍵用的按鍵索引;第二記數器,用於在第一用戶可定義數量的硬體按鍵掃描周期內測試被識別的已激活按鍵;按鍵事件緩衝器,用於在第一用戶可定義硬體掃描周期內所述按鍵激活為有效時存儲按鍵激活事件。
文檔編號G06F11/22GK1770637SQ20051010892
公開日2006年5月10日 申請日期2005年9月27日 優先權日2004年9月28日
發明者溫克韋·羅 申請人:美國博通公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀