按鍵作為一種機械開關,在進行按鍵操作時,機械接觸點的彈性及電壓突變等原因,在機械開關合閉的時候會出現電壓抖動,因此在實際的應用當中需要做一定的處理。
一般按鍵按下就是低電壓,這種按鍵去抖動的關鍵就是獲取穩定的低電壓電平狀態,因此,對于對于一個按鍵信號,可以用一個脈沖信號對其進行采樣,如果連續三次采樣都為低電平的話,就認為是按鍵被按下。其數字電路原型為下圖
其實,我們在做FPGA設計之前,就應該大概知道自己的coding 在FPGA芯片上面會映射成什么電路,這樣寫的代碼才是可靠的,有了上面的原理圖,那么Verilog代碼就很容易了,如下
input wire Clk ; input wire key_in ; output wire key_out ; reg key_dly1; reg key_dly2; reg key_dly3; always @(posedge Clk) begin if(Rst_n == 1'b0) begin key_dly1 <= 1'b0; key_dly2 <= 1'b0; key_dly3 <= 1'b0; end else begin key_dly1 <= key_in ; key_dly2 <= key_dly1; key_dly3 <= key_dly2; end end assign key_out = key_dly1 | key_dly2 | key_dly3;
對于復雜的電路我們也可以把他分解為每一個觸發器,然后心里有個大概的硬件原理圖,這樣寫代碼才胸有成竹。
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
FPGA設計
+關注
關注
9文章
428瀏覽量
26553 -
觸發器
+關注
關注
14文章
2000瀏覽量
61223 -
FPGA芯片
+關注
關注
3文章
246瀏覽量
39821
原文標題:按鍵抖動消除 verilog
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
關于按鍵抖動問題的解決
電路圖如下,,左側按鈕按下后給74LS192提供脈沖信號,但實物焊接時卻存在按下一次按鈕,192多次計數。是因為選用的按鈕存在按鍵抖動,按下一次按鈕會提供多個脈沖信號,讓192多次計數嗎?如果是,有什么辦法能消除這種
發表于 06-25 02:31
消除按鍵抖動的兩種方法分享
按鍵也是機械裝置,在按下或放開的一瞬間會產生抖動,如下圖: 消除方法有兩種: 軟件除抖和硬件除抖,其中硬件除抖是應用了電容對高頻信號短路的原理。 軟件除抖是檢測出鍵閉合后執行一個延時
發表于 09-02 17:52
如何通過軟件編程實現消除鍵盤的抖動
如何通過軟件編程實現消除鍵盤的抖動?記文本答:由于按鍵是機械開關結構,所以當用手按下其中-一個鍵時,往往會出現所按鍵在閉合位置和斷開位置之間發生跳幾下后才會穩定到閉合狀態的情況。在釋放
發表于 07-22 08:24
運用外部中斷函數消除按鍵抖動
目的實現:按鍵數碼管數字加減,運用外部中斷函數,消除按鍵抖動***仿真c代碼#includecode unsigned char SEG[]={0XC0
發表于 03-02 06:31
按鍵消抖的原理和基于verilog的消抖設計
按鍵開關是各種電子設備不可或缺的人機接口。在實際應用中,很大一部分的按鍵是機械按鍵。在機械按鍵的觸點閉合和斷開時,都會產生抖動,為了保證系統
發表于 02-11 01:14
?2.3w次閱讀
按鍵彈跳消除模塊的程序設計與應用
按鍵開關是電子設備人機交互的主要器件之一。按鍵大多是機械式開關結構,由于機械式開關的核心部件為彈性金屬簧片,因而在開關切換的瞬間會在接觸點出現來回彈跳的現象。對于靈敏度比較高的電路,這種彈跳現象引起的信號抖動會造成誤動作而影響到
外部中斷的按鍵抖動(按鍵消抖)
當我們寫完一個外部中斷程序測試時,例如按鍵計數和按鍵點亮led燈,我們可能會遇到一次按鍵按下松開卻觸發了多次外部中斷,這是因為按鍵抖動的存在
發表于 11-22 15:36
?27次下載
單片機按鍵去抖動的方法
在使用按鍵時,我們想按一次按鍵,但在實際中卻經常發現我們要的”一次“,實際上去并不是”一次“而可能是多次。為什么呢?這是因為,我們使用的機械按鍵,在我們按下時,并非只是接觸一次,因為存在機械抖
FPGA如何消除時鐘抖動
在FPGA(現場可編程門陣列)設計中,消除時鐘抖動是一個關鍵任務,因為時鐘抖動會直接影響系統的時序性能、穩定性和可靠性。以下將詳細闡述FPGA中消除時鐘
評論