<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

【紫光同創國產FPGA教程】【第六章】PDS下按鍵消抖實驗

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

原創聲明:

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

適用于板卡型號:

PGL22G/PGL12G

1. 文檔簡介

本文主要講解按鍵消抖原理及程序編寫,程序實現按鍵按下后數字加1,并在led出來,通過PDS軟件編譯調試。

2. 實驗環境

3. 實驗原理

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

o4YBAGAY4guAEo5jAAAVvrZUY3w009.jpg

4. 程序設計

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

pIYBAGAY4gyABqtsAAAQEYgXsnE414.jpg

按鍵消抖部分的原理在上節已經講過,按鍵消抖部分代碼寫的非常精煉,閱讀起來稍顯費解,建議結合仿真波形去讀代碼。在提供的例程文件下的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觸發器來寄存鍵值,只有當鍵值穩定時才將鍵值輸出。我們可以看到在assign賦值語句中有一條“assign a_reset=(DFF1 ^ DFF2)”,學過數字電路的應該都知道“ ^ ”是異或運算符,運算符兩邊相同運算結果為0, 不同運算結果為1。在程序中DFF1和DFF2比較運算后的值通過“assign”賦給“a_reset”表示比較鎖存鍵值的前后兩級寄存器的值是否一致,只有前后兩級寄存器的值一致,也就是a_reset的值為0時才表示當前鎖存的鍵值沒有變化。當計數器累加到“TIMER_MAX_VAL”,表示鎖存的鍵值已經穩定可以輸出。另外在模塊中我們可以看到“{.......}”符號,要注意這可不是大括號,這表示位拼接運算符,其作用是將運算符內的兩位,或是多位信號拼接在一起,具體用法請參考例程。

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

o4YBAGAY4gyATkvyAAAXG_SbSYI531.jpg

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

5. Modelsim仿真

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

pIYBAGAY4g2Ad0ZaAAB7a0vLSUo341.jpgo4YBAGAY4g2ADswDAAAnAWTR0EI572.jpg

button_negedge為按鍵經過消抖后按鍵的下降沿,button_posedge為按鍵經過消抖后按鍵的上升沿。

6. 實驗現象

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

開發板操作

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

    關注

    1608

    文章

    21358

    瀏覽量

    594369
  • RTL
    RTL
    +關注

    關注

    1

    文章

    382

    瀏覽量

    59162
  • 按鍵
    +關注

    關注

    4

    文章

    221

    瀏覽量

    57385
  • PDS
    PDS
    +關注

    關注

    2

    文章

    28

    瀏覽量

    15175
  • 紫光同創
    +關注

    關注

    5

    文章

    72

    瀏覽量

    27309
收藏 人收藏

    評論

    相關推薦

    紫光同創國產FPGA教程】【第三章】按鍵檢測實驗

    通過按鍵檢測實驗,檢測開發板的按鍵功能是否正常,了解硬件描述語言和FPGA的具體關系,學習PDS View RTL Schematic的使用
    的頭像 發表于 02-02 13:22 ?4151次閱讀
    【<b class='flag-5'>紫光</b><b class='flag-5'>同創</b><b class='flag-5'>國產</b><b class='flag-5'>FPGA</b>教程】【第三章】<b class='flag-5'>按鍵</b>檢測<b class='flag-5'>實驗</b>

    國產FPGA介紹-紫光同創

    紫光同創紫光集團旗下紫光國微的子公司,成立于2013年,有十余年可編程邏輯器件研發經歷,布局覆蓋高中低端FPGA產品。 早在2015年,
    發表于 01-24 10:45

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

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

    fpga教程之——按鍵

    電平,這次對按鍵進行操作則是對FPGA進行輸入了?! ?. 按鍵  2.1 按鍵輸入原理  
    發表于 02-27 11:49

    數據采集光盤實例第一第六章

    數據采集光盤實例第一第六章
    發表于 06-28 21:02

    數據采集光盤實例第六章至第十二

    數據采集光盤實例第六章至第十二
    發表于 06-28 21:17

    【ALIENTEK 戰艦STM32開發板】STM32開發指南--第六章 跑馬燈實驗

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

    求王慶利《單片機設計標準教程》第六章的一個函數??!

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

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

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

    【視頻教程】紫光同創FPGA教程@PDS軟件使用流程

    【視頻教程】紫光同創FPGA教程@PDS軟件使用流程#本視頻從新建工程、添加源文件、物理約束、下載配置文件介紹了Pango Design Suite快速入門及基本操作流程,展示Synt
    發表于 06-12 16:58

    從零開始學習紫光同創FPGA——PGL22G開發板之按鍵(二)

    一、按鍵 1、實驗目的 機械式彈片按鍵,在按或松開時會有機械抖動,導致在按
    發表于 06-15 14:38

    紫光同創國產FPGA教程】【PGC1/2KG第二】LED 流水燈實驗例程

    適用于板卡型號: 紫光同創PGC1/2KG開發平臺(盤古1K/2K) 一:盤古1K/2K開發板(紫光同創PGC2KG開發平臺)簡介 盤古1/2K 開發板是一套基于
    發表于 08-09 11:58

    紫光同創國產FPGA教程】【PGC1/2KG第三】鍵控彩燈實驗例程

    demo源文件) 頂層文件源碼 按鍵控制模塊 按鍵 LED控制模塊 實驗現象
    發表于 08-09 17:15

    數字信號處理 第六章

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

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

    靜噪基礎第六章,EMI靜噪濾波器
    發表于 01-24 16:25 ?4次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>