0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FPGA學習系列:11. 按鍵消抖設計

FPGA學習交流 ? 2018-06-07 13:51 ? 次閱讀

設計背景:

在我們的工程設計中我們會或多或少的用到開關,開關分為好多種,不管是哪一種開關在按下還是抬起都會有輕微的抖動,為了使我們的設計更加準確化,今天我們將學習按鍵消抖。

設計原理:

本次的設計是一個消抖的設計,在我們用的按鍵中,按下時低電平,抬起時高地平,可是在現(xiàn)實中按鍵的瞬間高低電平的變化并不是我們想的那樣,而是下面的情況。

image.png



我們稱按下到s的時候稱為前抖,s到抬起后稱為后抖,在正常的情況下就是上面電平變化波形,那么我們?yōu)榱讼槐匾牟ㄐ危覀兙蛻撛趕區(qū)域來判斷按鍵是否按下也就是低電平,同理我們抬起的時候也要間隔一段時間后來確定按下,一般我們間隔的時間設置為 10ms ---- 20ms之間都可以,所以說消抖就是把現(xiàn)實中按下抬起的抖動消除,生成我們理想的高低高的波形。

設計架構圖:

image.png?

設計狀態(tài)轉移圖image.png?

設計代碼:

設計模塊

0modulekey_xiaodou(clk,rst_n,key,key_x);

1

2 inputclk; //輸入輸出

3 inputrst_n;

4 inputkey;

5

6 outputregkey_x;

7 //parameter T10ms = 500_000; //設計一個10ms的計數(shù)參數(shù)

8 parameterT10ms =50;

9

10 parameters0 =2'b00;//4個狀態(tài)

11 parameters1 =2'b01;

12 parameters2 =2'b10;

13 parameters3 =2'b11;

14 reg[18:0]count;

15 reg[1:0]state;

16 always@(posedgeclk ornegedgerst_n)

17 if(!rst_n)

18 begin

19 count <=19'b0;

20 state <=2'b0;

21 key_x <=1'b1;

22 end

23 else

24 begin

25 case(state)

26 s0:begin

27 if(key)//判斷是否按鍵按下

28 begin

29 count <=1'b0;

30 key_x <=1'b1;

31 end

32 else

33 begin

34 if(count <T10ms -1)//按下就計數(shù)10ms

35 begin

36 count <=count +1'b1;

37 key_x <=1'b1;

38 end

39 else

40 begin//計數(shù)到了后給輸出賦值為 0

41 key_x <=1'b0;

42 state <=s1;

43 end

44 end

45 end

46 s1:begin

47 if(~key)//判斷是否按鍵抬起

48 begin

49 count <=1'b0;

50 key_x <=1'b0;

51 end

52 else

53 begin

54 if(count <T10ms -1)//抬起就計數(shù)10ms

55 begin

56 count <=count +1'b1;

57 key_x <=1'b0;

58 end

59 else

60 begin

61 key_x <=1'b1;//計數(shù)到了后給輸 出賦值為1

62 state <=s0;

63 end

64 end

65 end

66 default:state <=0;

67 endcase

68 end

69endmodule

測試模塊

0`timescale1ns/1ps

1

2 modulexiaodou_tb();

3

4

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21796

    瀏覽量

    605523
收藏 人收藏

    評論

    相關推薦

    米爾-紫光PG2L100H國產(chǎn)FPGA開發(fā)板試用】按鍵功能測試報告

    一、準備工作 硬件準備 PG2L100H FPGA開發(fā)板 USB Type-C數(shù)據(jù)線 12V電源適配器 Windows 10電腦 軟件環(huán)境 PDS開發(fā)環(huán)境 官方按鍵示例工程 按鍵資源說明 用戶
    發(fā)表于 12-06 11:04

    FPGA加速深度學習模型的案例

    FPGA(現(xiàn)場可編程門陣列)加速深度學習模型是當前硬件加速領域的一個熱門研究方向。以下是一些FPGA加速深度學習模型的案例: 一、基于FPGA
    的頭像 發(fā)表于 10-25 09:22 ?334次閱讀

    基于FPGA實現(xiàn)按鍵處理

    引言: 按鍵在電子產(chǎn)品中經(jīng)常用到,由于按鍵的機械特性,按鍵在閉合或松開的瞬間伴隨著一連串的抖動,這樣的抖動將直接影響設計系統(tǒng)的穩(wěn)定性。因此,必須對抖動進行處理。本文介紹如何在FPGA
    的頭像 發(fā)表于 10-24 14:54 ?306次閱讀
    基于<b class='flag-5'>FPGA</b>實現(xiàn)<b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>處理

    兩種常見的硬件實現(xiàn)方式

    由于機械按鍵在操作過程中會產(chǎn)生抖動現(xiàn)象,這種抖動信號如果不加以處理,就可能導致單片機等電子設備誤判按鍵狀態(tài),從而引發(fā)錯誤操作。本文將詳細介紹兩種常見的硬件實現(xiàn)方式:RS觸發(fā)器和電容
    的頭像 發(fā)表于 09-25 16:54 ?1636次閱讀
    兩種常見的硬件<b class='flag-5'>消</b><b class='flag-5'>抖</b>實現(xiàn)方式

    為什么按鍵那么重要

    和錯誤操作。因此,進行按鍵處理顯得尤為重要。 按鍵抖動的產(chǎn)生是由于機械觸點的彈性特性所決定的。當按鍵被按下或釋放時,觸點并不會立即穩(wěn)定地
    的頭像 發(fā)表于 09-25 16:50 ?665次閱讀
    為什么<b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>那么重要

    如何在FPGA中實現(xiàn)按鍵

    FPGA(現(xiàn)場可編程門陣列)中實現(xiàn)按鍵是一個重要的設計環(huán)節(jié),特別是在處理用戶輸入時,由于物理按鍵的機械特性和電氣特性,
    的頭像 發(fā)表于 08-19 18:15 ?2201次閱讀

    【紫光同創(chuàng)盤古PGX-Nano教程】——(盤古PGX-Nano開發(fā)板/PG2L50H_MBG324第三章)鍵控流水燈實驗例程

    信號有:流水燈控制信號; 內部功能處理: &lt;1&gt;內部需要對按鍵信號做處理; &lt;2&gt;按鍵觸發(fā)計數(shù)器(計數(shù)值輸出
    發(fā)表于 04-29 16:06

    【紫光同創(chuàng)盤古PGX-Nano教程】——(盤古PGX-Nano開發(fā)板/PG2L50H_MBG324第二章)按鍵實驗例程

    燈、按鍵、撥碼開關等。 二:實驗目的 對按鍵PB0進行按鍵 三:實驗原理 機械式彈片
    發(fā)表于 04-28 17:57

    怎么做按鍵?

    大家是怎么做按鍵的 我是用一定時器做20ms定時,定時到在中斷里設專門標志(20ms是否到,初始化為0),在主循環(huán)里當按鍵按下時在判斷此標志,為0,就開啟定時中斷,而后返回主流程,
    發(fā)表于 04-28 07:39

    【紫光同創(chuàng)盤古PGX-MINI-4K教程】——(盤古PGX-MINI-4K開發(fā)板/PGC4KD-6ILPG144第三章)鍵控彩燈實驗例程

    ;內部需要對按鍵信號做處理; &lt;2&gt;按鍵觸發(fā)計數(shù)器(計數(shù)值輸出)改變繼而調整彩燈的狀態(tài); 按鍵
    發(fā)表于 04-24 18:15

    stm8觸摸感應按鍵是怎樣掃描的?

    stm8觸摸感應 按鍵是怎樣掃描,和怎樣
    發(fā)表于 04-01 06:17

    【紫光同創(chuàng)盤古PGX-Lite 7K教程】——(盤古PGX-Lite 7K開發(fā)板/PGC7KD-6IMBG256第三章)?鍵控彩燈實驗例程

    ;gt;內部需要對按鍵信號做處理;&lt;2&gt;按鍵觸發(fā)計數(shù)器(計數(shù)值輸出)改變繼而調整彩燈的狀態(tài);按鍵
    發(fā)表于 03-27 17:58

    fpga學習需要具備哪些課程

    FPGA(Field Programmable Gate Array)學習需要具備一系列的課程知識和實踐技能
    的頭像 發(fā)表于 03-14 15:51 ?1286次閱讀

    stm32外部中斷存在自身內部的嗎?

    請問stm32外部中斷存在自身內部的嗎? 若存在請問如何配置
    發(fā)表于 03-11 06:15

    為什么要進行按鍵?按鍵抖動的原理 按鍵的方法

    按鍵通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩(wěn)定地接通,在斷開時也
    的頭像 發(fā)表于 02-17 17:07 ?1.9w次閱讀
    為什么要進行<b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>?<b class='flag-5'>按鍵</b>抖動的原理 <b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>的方法