按鍵作為一種機(jī)械開關(guān),在進(jìn)行按鍵操作時,機(jī)械接觸點(diǎn)的彈性及電壓突變等原因,在機(jī)械開關(guān)合閉的時候會出現(xiàn)電壓抖動,因此在實(shí)際的應(yīng)用當(dāng)中需要做一定的處理。
一般按鍵按下就是低電壓,這種按鍵去抖動的關(guān)鍵就是獲取穩(wěn)定的低電壓電平狀態(tài),因此,對于對于一個按鍵信號,可以用一個脈沖信號對其進(jìn)行采樣,如果連續(xù)三次采樣都為低電平的話,就認(rèn)為是按鍵被按下。其數(shù)字電路原型為下圖
其實(shí),我們在做FPGA設(shè)計(jì)之前,就應(yīng)該大概知道自己的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;
對于復(fù)雜的電路我們也可以把他分解為每一個觸發(fā)器,然后心里有個大概的硬件原理圖,這樣寫代碼才胸有成竹。
審核編輯:劉清
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
FPGA設(shè)計(jì)
-
觸發(fā)器
-
FPGA芯片
原文標(biāo)題:按鍵抖動消除 verilog
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
相關(guān)推薦
verilog寫cpld的程序如何消除按鍵的抖動?
發(fā)表于 04-02 09:22
電路圖如下,,左側(cè)按鈕按下后給74LS192提供脈沖信號,但實(shí)物焊接時卻存在按下一次按鈕,192多次計(jì)數(shù)。是因?yàn)檫x用的按鈕存在按鍵抖動,按下一次按鈕會提供多個脈沖信號,讓192多次計(jì)數(shù)嗎?如果是,有什么辦法能消除這種
發(fā)表于 06-25 02:31
按鍵也是機(jī)械裝置,在按下或放開的一瞬間會產(chǎn)生抖動,如下圖: 消除方法有兩種: 軟件除抖和硬件除抖,其中硬件除抖是應(yīng)用了電容對高頻信號短路的原理。 軟件除抖是檢測出鍵閉合后執(zhí)行一個延時
發(fā)表于 09-02 17:52
如何通過軟件編程實(shí)現(xiàn)消除鍵盤的抖動?記文本答:由于按鍵是機(jī)械開關(guān)結(jié)構(gòu),所以當(dāng)用手按下其中-一個鍵時,往往會出現(xiàn)所按鍵在閉合位置和斷開位置之間發(fā)生跳幾下后才會穩(wěn)定到閉合狀態(tài)的情況。在釋放
發(fā)表于 07-22 08:24
單片機(jī)如何消除按鍵抖動?
發(fā)表于 10-21 09:29
,從而引起誤處理。因此,為了確保單片機(jī)對一次按鍵動作只作—次響應(yīng),就必須考慮如何消除按鍵抖動的影響。按鍵讀取識
發(fā)表于 01-17 07:46
目的實(shí)現(xiàn):按鍵數(shù)碼管數(shù)字加減,運(yùn)用外部中斷函數(shù),消除按鍵抖動***仿真c代碼#includecode unsigned char SEG[]={0XC0
發(fā)表于 03-02 06:31
按鍵開關(guān)是各種電子設(shè)備不可或缺的人機(jī)接口。在實(shí)際應(yīng)用中,很大一部分的按鍵是機(jī)械按鍵。在機(jī)械按鍵的觸點(diǎn)閉合和斷開時,都會產(chǎn)生抖動,為了保證系統(tǒng)
發(fā)表于 02-11 01:14
?2.3w次閱讀
按鍵開關(guān)是電子設(shè)備人機(jī)交互的主要器件之一。按鍵大多是機(jī)械式開關(guān)結(jié)構(gòu),由于機(jī)械式開關(guān)的核心部件為彈性金屬簧片,因而在開關(guān)切換的瞬間會在接觸點(diǎn)出現(xiàn)來回彈跳的現(xiàn)象。對于靈敏度比較高的電路,這種彈跳現(xiàn)象引起的信號抖動會造成誤動作而影響到
發(fā)表于 01-07 08:45
?2697次閱讀
當(dāng)我們寫完一個外部中斷程序測試時,例如按鍵計(jì)數(shù)和按鍵點(diǎn)亮led燈,我們可能會遇到一次按鍵按下松開卻觸發(fā)了多次外部中斷,這是因?yàn)?b class='flag-5'>按鍵抖動的存在
發(fā)表于 11-22 15:36
?27次下載
,從而引起誤處理。因此,為了確保單片機(jī)對一次按鍵動作只作—次響應(yīng),就必須考慮如何消除按鍵抖動的影響。按鍵讀取識
發(fā)表于 01-18 10:30
?4次下載
當(dāng)按下和釋放微動按鍵時,會由短時間的抖動現(xiàn)象才會到達(dá)想要的狀態(tài)。
發(fā)表于 12-26 16:25
?2521次閱讀
在使用按鍵時,我們想按一次按鍵,但在實(shí)際中卻經(jīng)常發(fā)現(xiàn)我們要的”一次“,實(shí)際上去并不是”一次“而可能是多次。為什么呢?這是因?yàn)?,我們使用的機(jī)械按鍵,在我們按下時,并非只是接觸一次,因?yàn)榇嬖跈C(jī)械抖
發(fā)表于 11-02 15:16
?4809次閱讀
按鍵抖動是指由于按鍵接點(diǎn)的不完美接觸而導(dǎo)致的按鍵信號在短時間內(nèi)多次跳變的現(xiàn)象。在電子設(shè)備的設(shè)計(jì)與制造中,消除
發(fā)表于 11-17 15:53
?1899次閱讀
在FPGA(現(xiàn)場可編程門陣列)設(shè)計(jì)中,消除時鐘抖動是一個關(guān)鍵任務(wù),因?yàn)闀r鐘抖動會直接影響系統(tǒng)的時序性能、穩(wěn)定性和可靠性。以下將詳細(xì)闡述FPGA中消除時鐘
發(fā)表于 08-19 17:58
?906次閱讀
評論