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

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

3天內(nèi)不再提示

【紫光同創(chuàng)國產(chǎn)FPGA教程】【第六章】PDS下按鍵消抖實驗

FPGA技術專欄 ? 來源:芯驛電子科技 ? 作者:芯驛電子科技 ? 2021-02-04 13:24 ? 次閱讀

原創(chuàng)聲明:

本原創(chuàng)教程由芯驛電子科技(上海)有限公司(ALINX)創(chuàng)作,版權(quán)歸本公司所有,如需轉(zhuǎn)載,需授權(quán)并注明出處(alinx.com)。

適用于板卡型號:

PGL22G/PGL12G

1. 文檔簡介

本文主要講解按鍵消抖原理及程序編寫,程序?qū)崿F(xiàn)按鍵按下后數(shù)字加1,并在led出來,通過PDS軟件編譯調(diào)試。

2. 實驗環(huán)境

3. 實驗原理

按鍵做為基本的人機輸入接口,在很多電子設計中都能見到,由于機械特性,在按鍵按下或松開的時候,按鍵輸入值是有抖動的,無論按下去是多平穩(wěn),都難以消除抖動,按鍵消抖方式有很多,本實驗主要是通過FPGA計時來消抖。實驗中設計了一個計數(shù)器,當按鍵輸入有變化時,計時器清零,否則就累加,直到加到一個預定值(例如10ms),就認為按鍵穩(wěn)定,輸出按鍵值,這樣就得到以后沒有抖動的按鍵值。由于在很多地方需要用到按鍵下降沿或上升沿的檢測,按鍵消抖模塊直接集成了上升沿和下降沿檢測的功能。

o4YBAGAY4guAEo5jAAAVvrZUY3w009.jpg

4. 程序設計

如下圖所示,通過按鍵消抖后,在按鍵按下時,十進制計數(shù)器加1,通過數(shù)碼管譯碼掃描后顯示出來。

pIYBAGAY4gyABqtsAAAQEYgXsnE414.jpg

按鍵消抖部分的原理在上節(jié)已經(jīng)講過,按鍵消抖部分代碼寫的非常精煉,閱讀起來稍顯費解,建議結(jié)合仿真波形去讀代碼。在提供的例程文件下的src文件夾中同時提供了仿真文件key_debounce_tb.v,可以通過添加仿真文件來進行仿真觀察代碼中信號的變化

信號名稱 方向 說明
clk in 時鐘輸入
rst_n in 異步復位輸入,低復位
button_in in 按鍵輸入
button_posedge out 消抖后按鍵上升沿,高有效,1個時鐘周期
button_negedge out 消抖后按鍵下升沿,高有效,1個時鐘周期
button_out out 消抖后按鍵輸出

按鍵消抖模塊(ax_debounce)端口

LED顯示部分在本章不做說明,就例程中按鍵消抖模塊“ax_debounce”模塊做一些講解,模塊中通過了兩級D觸發(fā)器來寄存鍵值,只有當鍵值穩(wěn)定時才將鍵值輸出。我們可以看到在assign賦值語句中有一條“assign a_reset=(DFF1 ^ DFF2)”,學過數(shù)字電路的應該都知道“ ^ ”是異或運算符,運算符兩邊相同運算結(jié)果為0, 不同運算結(jié)果為1。在程序中DFF1和DFF2比較運算后的值通過“assign”賦給“a_reset”表示比較鎖存鍵值的前后兩級寄存器的值是否一致,只有前后兩級寄存器的值一致,也就是a_reset的值為0時才表示當前鎖存的鍵值沒有變化。當計數(shù)器累加到“TIMER_MAX_VAL”,表示鎖存的鍵值已經(jīng)穩(wěn)定可以輸出。另外在模塊中我們可以看到“{.......}”符號,要注意這可不是大括號,這表示位拼接運算符,其作用是將運算符內(nèi)的兩位,或是多位信號拼接在一起,具體用法請參考例程。

最后,程序中需要說明的是“button_posedge”和“button_negedge”兩個輸出信號,這是一種常用的上升沿和下降沿的采集方法,其描述的RTL視圖如下:

o4YBAGAY4gyATkvyAAAXG_SbSYI531.jpg

當然還有其他的邊沿檢測電路的描述方法,但是其基本原理都是在邏輯時序電路里先將需要檢測的信號作為輸入非阻塞賦值給一個自定義寄存器,通過判斷前后兩級寄存器的值來判斷是上升沿或是下降沿,由0 ->1 變化是上升沿,由1 -> 0變化是下降沿;

5. Modelsim仿真

$random生成隨機數(shù)模擬按鍵抖動,按下按鍵對應輸出二進制數(shù)據(jù)加一。按鍵的按下和釋放經(jīng)消抖后會得到一個穩(wěn)定的下降沿和上升沿。仿真結(jié)果和部分仿真文件如下圖所示:

pIYBAGAY4g2Ad0ZaAAB7a0vLSUo341.jpgo4YBAGAY4g2ADswDAAAnAWTR0EI572.jpg

button_negedge為按鍵經(jīng)過消抖后按鍵的下降沿,button_posedge為按鍵經(jīng)過消抖后按鍵的上升沿。

6. 實驗現(xiàn)象

開發(fā)板上電后下載程序,按下“KEY2”按鍵,可以看到4個LED會變化,對應二進制數(shù)據(jù),按一次加一,如果不經(jīng)過消抖,是無法實現(xiàn)按一次加一的。

開發(fā)板操作

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

    關注

    1620

    文章

    21510

    瀏覽量

    598917
  • RTL
    RTL
    +關注

    關注

    1

    文章

    384

    瀏覽量

    59517
  • 按鍵
    +關注

    關注

    4

    文章

    222

    瀏覽量

    57491
  • PDS
    PDS
    +關注

    關注

    2

    文章

    28

    瀏覽量

    15221
  • 紫光同創(chuàng)

    關注

    5

    文章

    78

    瀏覽量

    27446
收藏 人收藏

    評論

    相關推薦

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

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

    數(shù)據(jù)采集光盤實例第一第六章

    數(shù)據(jù)采集光盤實例第一第六章
    發(fā)表于 06-28 21:02

    數(shù)據(jù)采集光盤實例第六章至第十二

    數(shù)據(jù)采集光盤實例第六章至第十二
    發(fā)表于 06-28 21:17

    【ALIENTEK 戰(zhàn)艦STM32開發(fā)板】STM32開發(fā)指南--第六章 跑馬燈實驗

    第六章 跑馬燈實驗STM32最簡單的外設莫過于IO口的高低電平控制了,本章將通過一個經(jīng)典的跑馬燈程序,帶大家開啟STM32之旅,通過本章的學習,你將了解到STM32的IO口作為輸出使用的方法。在本章
    發(fā)表于 01-10 15:50

    求王慶利《單片機設計標準教程》第六章的一個函數(shù)?。?/a>

    在做一個設計,急需《單片機設計標準教程》里第六章 的I2C總線函數(shù) #include“IIClib.h” 誰有幫忙拍張圖片傳一
    發(fā)表于 05-05 21:20

    《測控電路》習題完整參考答案(第六章

    《測控電路》習題完整參考答案(第六章
    發(fā)表于 05-07 11:36

    三相電路(第六章)

    三相電路(第六章) 一、 三相電源及其連接若三個電壓源的電壓uA,uB,uC的最大值相等,頻率相同,相位互差120°,則此三個電壓源的組合稱為對稱
    發(fā)表于 05-23 15:17 ?38次下載

    高頻電子線路第六章答案

    高頻電子線路第六章答案.
    發(fā)表于 06-05 10:41 ?41次下載

    PCB布線設計經(jīng)驗談附原理圖(第六章)

    PCB布線設計經(jīng)驗談附原理圖(第六章)   對于12位傳感系統(tǒng)的布線,應用的電路是一負載單元電路,該電路可精確測量傳感器上施加的
    發(fā)表于 10-28 09:30 ?976次閱讀
    PCB布線設計經(jīng)驗談附原理圖(<b class='flag-5'>第六章</b>)

    《測控電路》習題完整參考答案(第六章

    《測控電路》習題完整參考答案(第六章
    發(fā)表于 02-07 15:17 ?0次下載

    數(shù)字信號處理 第六章

    數(shù)字信號處理 第六章
    發(fā)表于 10-19 09:34 ?4次下載
    數(shù)字信號處理 <b class='flag-5'>第六章</b>

    靜噪基礎第六章_EMI靜噪濾波器

    靜噪基礎第六章,EMI靜噪濾波器
    發(fā)表于 01-24 16:25 ?4次下載

    STM8S BLDC電機第六章工程的stm8選項字節(jié)配置

    STM8S BLDC電機第六章工程的stm8選項字節(jié)配置
    發(fā)表于 03-05 15:07 ?8次下載

    電力系統(tǒng)繼電保護第六章-變壓器保護(課件)下載.ppt

    繼電保護第六章-變壓器保護(課件)
    發(fā)表于 04-28 09:45 ?0次下載
    電力系統(tǒng)繼電保護<b class='flag-5'>第六章</b>-變壓器保護(課件)下載.ppt

    計算機網(wǎng)絡第六章應用層資源下載

    計算機網(wǎng)絡第六章應用層資源下載
    發(fā)表于 05-17 10:25 ?0次下載