一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

【教程分享】 FPGA零基礎(chǔ)學(xué)習(xí):按鍵控制LED

電子發(fā)燒友論壇 ? 來源:未知 ? 2023-06-13 08:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本系列將帶來FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開始,最詳細操作步驟,最直白的言語描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學(xué)生、初入職場小白及打算進階提升的職業(yè)開發(fā)者都可以有系統(tǒng)性學(xué)習(xí)的機會。


系統(tǒng)性的掌握技術(shù)開發(fā)以及相關(guān)要求,對個人就業(yè)以及職業(yè)發(fā)展都有著潛在的幫助,希望對大家有所幫助。后續(xù)會陸續(xù)更新 Xilinx 的 Vivado、ISE 及相關(guān)操作軟件的開發(fā)的相關(guān)內(nèi)容,學(xué)習(xí)FPGA設(shè)計方法及設(shè)計思想的同時,實操結(jié)合各類操作軟件,會讓你在技術(shù)學(xué)習(xí)道路上無比的順暢,告別技術(shù)學(xué)習(xí)小BUG卡破腦殼,告別目前忽悠性的培訓(xùn)誘導(dǎo),真正的去學(xué)習(xí)去實戰(zhàn)應(yīng)用,這種快樂試試你就會懂的。話不多說,上貨。


按鍵控制LED


利用按鍵控制LED的要求為:按一下按鍵,改變一下LED的狀態(tài)。按鍵按一次,LED由熄滅變?yōu)辄c亮,按鍵再按一次,LED由點亮變?yōu)橄纭?/p>


硬件介紹



開發(fā)板上面有四個按鍵,當按鍵按下時,將對應(yīng)的網(wǎng)絡(luò)置成低電平;當按鍵釋放時,將對應(yīng)的網(wǎng)絡(luò)置成高電平。


開發(fā)板上面有四個LED發(fā)光二極管,F(xiàn)PGA輸出高電平時,LED點亮;FPGA輸出低電平時,LED熄滅。


設(shè)計原理

通常的按鍵所用開關(guān)為機械彈性開關(guān),當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動。



按鍵抖動會引起一次按鍵被誤讀多次。為確保CPU對鍵的一次閉合僅作一次處理,必須去除鍵抖動。在鍵閉合穩(wěn)定時讀取鍵的狀態(tài),并且必須判別到鍵釋放穩(wěn)定后再作處理。

抖動時間的長短由按鍵的機械特性決定,一般為5ms~10ms。這是一個很重要的時間參數(shù),在很多場合都要用到。按鍵穩(wěn)定閉合時間的長短則是由操作人員的按鍵動作決定的,一般為零點幾秒至數(shù)秒。

我們可以在按鍵和主控設(shè)備之間加入消抖電路(消抖芯片、電容等),此種方法會增大PCB面積和花費一定的物料費用。大多數(shù)的板子直接將按鍵和主控設(shè)備相連接,將帶有抖動的波形輸入到主控設(shè)備內(nèi)部,由內(nèi)部進行消抖處理。

單片機一般采用延遲重采樣的方式進行消抖。當檢測到信號為低時,延遲一段時間(一般為20ms),再次檢測信號是否為低,如果為低,則證明按鍵按下,否則認為按鍵沒有按下,繼續(xù)下一次檢查。

在FPGA設(shè)計時,筆者推薦另外一種方式:持續(xù)采樣。當檢測到信號持續(xù)為低10ms,認為按鍵按下;當檢測到信號持續(xù)為高10ms,認為按鍵釋放。

在設(shè)計時,需要考慮到外部的按鍵信號為異步信號,需要進行同步處理。具體請參考附錄2 FPGA中的同步信號、異步信號和亞穩(wěn)態(tài)。

每次按鍵按下的時間的長短不一,經(jīng)過消抖后,低電平的持續(xù)長度長短也不一樣。此長度遠遠大于一個時鐘周期的長度。要求每次按下只能夠切換一次LED的狀態(tài),所以不能夠直接用此電平當做輸出翻轉(zhuǎn)的使能。

經(jīng)過消抖的波形,每次按下只有一個下降沿(按鍵按下時)、只有一個上升沿(按鍵釋放時)。所以通過檢測下降沿(上升沿)的變化,產(chǎn)生一個新的信號------脈沖(一個時鐘周期的脈沖),利用此脈沖作為翻轉(zhuǎn)的使能即可。利用檢測到下降沿的脈沖翻轉(zhuǎn)時,LED的狀態(tài)會在按下時就會改變;利用檢測到上升沿的脈沖翻轉(zhuǎn)時,LED的狀態(tài)會在釋放時發(fā)生改變。本設(shè)計中采用檢測到下降沿的脈沖進行翻轉(zhuǎn)。


設(shè)計架構(gòu)和信號說明

本設(shè)計模塊命名為key_led。



在設(shè)計中,共分為三個模塊。

  • key_filter(按鍵消抖模塊):將外部輸入的帶有抖動的波形進行消抖。

  • edge_check(邊沿檢測模塊):將消抖后的波形進行下降沿檢測,并產(chǎn)生對應(yīng)的脈沖。

  • led_ctrl(led控制模塊):利用脈沖,翻轉(zhuǎn)led的輸出狀態(tài)。



key_filter設(shè)計實現(xiàn)

本設(shè)計采用狀態(tài)機實現(xiàn),狀態(tài)機的具體原理請參看附錄3。


對key_n信號為異步信號,需要進行同步兩拍,命名為key_n_r和key_n_rr。狀態(tài)機的判斷信號為key_n_rr信號。


本設(shè)計共分為四個狀態(tài),KEY_OFF(按鍵釋放狀態(tài)),SHAKE_ON(按鍵按下時抖動判斷狀態(tài)),KEY_ON(按鍵按下狀態(tài)),SHAKE_OFF(按鍵釋放時抖動判斷狀態(tài))。


按鍵沒有按下時,一直KEY_OFF狀態(tài),當按鍵信號變?yōu)榈碗娖綍r,就轉(zhuǎn)入SHAKE_ON狀態(tài),檢測低電平的持續(xù)時間。如果持續(xù)時間沒有達到T_10ms就變?yōu)楦唠娖剑瑒t清零計數(shù)器并返回KEY_OFF狀態(tài);如果持續(xù)時間沒有達到T_10ms并且也一直為低電平,則繼續(xù)在SHAKE_ON狀態(tài)計數(shù);如果持續(xù)時間達到T_10ms并且為低電平,則清零計數(shù)器并進入KEY_ON狀態(tài)。在KEY_ON狀態(tài),外部輸入為低電平時,則繼續(xù)在KEY_ON狀態(tài);如果外部輸出為高電平,則轉(zhuǎn)入SHAKE_OFF狀態(tài)。在SHAKE_OFF狀態(tài),如果持續(xù)時間沒有到達T_10ms就變?yōu)榈碗娖?,則清零計數(shù)器并返回KEY_ON狀態(tài);如果持續(xù)時間沒有達到T_10ms并且一直為高電平,則繼續(xù)在SHAKE_OFF狀態(tài)計數(shù);如果持續(xù)時間達到T_10ms并且一直為高電平,則清零計數(shù)器并轉(zhuǎn)入KEY_OFF狀態(tài)。


在KEY_OFF和SHAKE_ON狀態(tài),認為按鍵沒有按下;在KEY_ON和SHAKE_OFF狀態(tài),認為按鍵為按下。


狀態(tài)轉(zhuǎn)移圖如下:




設(shè)計代碼為:


localparam可以定義參數(shù),與parameter的區(qū)別在于,parameter定義的參數(shù)可以在例化時進行參數(shù)修改,而localparam定義的參數(shù)在例化時則不能夠修改。定義狀態(tài)機狀態(tài)時,一般采用localparam的定義方式。在不希望別人修改參數(shù)時,也可以定義為localparam。


edge_check設(shè)計實現(xiàn)

在一個波形中,如果當前時刻為低電平,上一個時刻為高電平,則認為波形中有一個下降沿;如果當前時刻為高電平,上一個時刻為低電平,則認為波形中有一個上升沿。


在數(shù)字電路設(shè)計時,可以采用寄存器來存儲上一個時刻的值。



在寄存器電路中,Q的值,永遠是上一個CLK的有效邊沿所采樣的D值。因此Q為上一時刻值,而D為當前時刻的值。


設(shè)計代碼為:


在設(shè)計中,注釋掉的兩行代碼和其下方的一行代碼的功能是相同的。例:對于上升沿脈沖來說,現(xiàn)在為1,過去為0即為上升沿。由于寄存器每個時鐘周期都刷新,滿足這個要求的只會存在一個時鐘周期,所以flag_pos為一個時鐘周期的脈沖。


led_ctrl設(shè)計實現(xiàn)

本模塊中,利用脈沖進行l(wèi)ed狀態(tài)的翻轉(zhuǎn)即可。


設(shè)計代碼為:


key_led設(shè)計實現(xiàn)

本模塊只是負責(zé)將上述的三個模塊按照架構(gòu)圖的方式進行連接,形成最終的設(shè)計。


設(shè)計代碼為:


在設(shè)計中,采用了按鍵按下時的脈沖(檢測到下降沿的脈沖),按鍵按下時led的狀態(tài)即可進行翻轉(zhuǎn)。



功能仿真

在仿真時,將按鍵消抖中的T_10ms的參數(shù)修改為20,即持續(xù)時間不超過400ns都不認為是有效按下或者抬起。


仿真代碼如下:


將okey_n、flag信號添加出來。



通過RTL仿真圖,可以清晰的看到okey_n信號將key_n的抖動濾除掉;flag信號為okey_n信號的下降沿時所產(chǎn)生的脈沖;led在flag信號為高時,反正翻轉(zhuǎn)。


分配管腳、下板測試之前,應(yīng)該將按鍵消抖里面的T_10ms參數(shù)重新改為500_000,否則下板后可能會達不到消抖的效果。


下板成功后,可以修改在設(shè)計中使用上升沿的脈沖,得到的現(xiàn)象應(yīng)該是按鍵釋放時,LED的狀態(tài)發(fā)生反轉(zhuǎn)。


切記:每次修改代碼,一定要進行重新編譯,否則更改將不會生效。






聲明本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請注明以上來源。如需社區(qū)合作及入群交流,請?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。


更多熱點文章閱讀

  • 采用先進成熟工藝和自主產(chǎn)權(quán)體系結(jié)構(gòu),紫光同創(chuàng)FPGA開發(fā)板入門指導(dǎo)

  • 嵌入式Linux開發(fā)秘籍!工程師大佬親歷分享項目樣例

  • RK3568!四核64位ARMv8.2A架構(gòu),匯聚編譯源碼及實戰(zhàn)樣例

  • 尺寸僅有21mm*51mm,板邊采用郵票孔設(shè)計,合宙 Air105 核心板開發(fā)總結(jié)

  • 基于Cortex-M3內(nèi)核的32位微控制器,STM32項目實戰(zhàn)分享!


原文標題:【教程分享】 FPGA零基礎(chǔ)學(xué)習(xí):按鍵控制LED

文章出處:【微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

原文標題:【教程分享】 FPGA零基礎(chǔ)學(xué)習(xí):按鍵控制LED

文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    【教程】零基礎(chǔ)!手把手教你使用STM32F4進行E22-400T22S編程通信

    通過本文帶大家零基礎(chǔ)使用STM32F407VET6單片機進行E22-400T22S模塊編程并進行簡單的通信,當然如果學(xué)會了,也可以舉一反三應(yīng)用于E22、E220、E32所有模塊上。一STM32環(huán)境
    的頭像 發(fā)表于 07-03 19:32 ?70次閱讀
    【教程】<b class='flag-5'>零基</b>礎(chǔ)!手把手教你使用STM32F4進行E22-400T22S編程通信

    零基礎(chǔ)學(xué)習(xí)LuatOS編程:快速上手開發(fā)實戰(zhàn)教程!

    無論你是剛接觸物聯(lián)網(wǎng)編程的新手,還是希望拓展技能的技術(shù)愛好者,本教程將為零基礎(chǔ)的讀者提供一條清晰的LuatOS學(xué)習(xí)路徑。從安裝開發(fā)工具到編寫第一個程序,我們將通過實例講解核心概念,助你快速實現(xiàn)從理論
    的頭像 發(fā)表于 06-13 17:27 ?183次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>學(xué)習(xí)</b>LuatOS編程:快速上手開發(fā)實戰(zhàn)教程!

    如何把 電位器旋鈕控制改為面板或按鍵控制?

    ),所以希望能找到人幫忙把電位器調(diào)速旋鈕改為面板或按鍵控制控制器或調(diào)速器,如下圖。 。這款控制器可以在面板上設(shè)置/控制電機轉(zhuǎn)速,但是這款控制
    發(fā)表于 05-18 07:40

    【「零基礎(chǔ)開發(fā)AI Agent」閱讀體驗】+讀《零基礎(chǔ)開發(fā)AI Agent》掌握扣子平臺開發(fā)智能體方法

    收到發(fā)燒友網(wǎng)站寄來的《零基礎(chǔ)開發(fā)AI Agent》這本書已經(jīng)有好些天了,這段時間有幸拜讀了一下全書,掌握了一個開發(fā)智能體的方法。 該書充分從零基礎(chǔ)入手,先闡述了Agent是什么,它的基本概念和知識
    發(fā)表于 05-14 19:51

    【「零基礎(chǔ)開發(fā)AI Agent」閱讀體驗】+ 入門篇學(xué)習(xí)

    很高興又有機會學(xué)習(xí)ai技術(shù),這次試讀的是「零基礎(chǔ)開發(fā)AI Agent」,作者葉濤、管鍇、張心雨。 大模型的普及是近三年來的一件大事,萬物皆可大模型已成為趨勢。作為大模型開發(fā)應(yīng)用中重要組成部分,提示詞
    發(fā)表于 05-02 09:26

    基于51/32單片機按鍵控制步進電機正反轉(zhuǎn),A4988驅(qū)動

    基于51/32單片機按鍵控制步進電機正反轉(zhuǎn),A4988驅(qū)動
    發(fā)表于 04-14 15:05 ?5次下載

    零基礎(chǔ)學(xué)習(xí)一階RC低通濾波器(從原理到實踐)

    *附件:零基礎(chǔ)學(xué)習(xí)一階RC低通濾波器(從原理到實踐).docx
    發(fā)表于 03-26 14:35

    Vivado Tcl零基礎(chǔ)入門與案例實戰(zhàn)【高亞軍編著】

    Vivado Tcl零基礎(chǔ)入門與案例實戰(zhàn)-高亞軍編寫
    發(fā)表于 01-14 11:13

    告別繁瑣按鍵,雙觸摸LED讓你輕松調(diào)光調(diào)色!

    方案開發(fā)雙觸摸按鍵LED單/雙色溫驅(qū)動控制方案-ZHUOLIANWEIKEJI-定制服務(wù)品質(zhì)保障技術(shù)領(lǐng)先在現(xiàn)代家居與照明設(shè)計中,便捷性、智能化以及個性化需求日益增長。傳統(tǒng)的按鍵控制方式
    的頭像 發(fā)表于 12-07 01:08 ?607次閱讀
    告別繁瑣<b class='flag-5'>按鍵</b>,雙觸摸<b class='flag-5'>LED</b>讓你輕松調(diào)光調(diào)色!

    零基礎(chǔ)入門PCB工程師

    各位前輩大家好,零基礎(chǔ)入門PCB工程師,有什么學(xué)習(xí)資料推薦嗎?
    發(fā)表于 11-27 16:54

    零基礎(chǔ)嵌入式開發(fā)學(xué)習(xí)路線

    “嵌入式開發(fā)”沒有接觸過的同學(xué)可能會不明覺厲,但是只要你了解了,感興趣并且有一個正確的學(xué)習(xí)路線的話,零基礎(chǔ)也能入門。給大家介紹一個簡單易懂的學(xué)習(xí)路線,讓你能夠從開始
    發(fā)表于 10-25 15:55

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

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

    【xG24 Matter開發(fā)套件試用體驗】通過按鍵控制LED

    點完燈了,來玩點花樣,通過按鍵來點燈。 硬件 還是看這個圖 按鍵有 BUTTON0(PB02)和BUTTON1(PB03) 軟件 這里基于blink_baremetal 工程進行修改適配。 這里進行GPIO的配置,配置好兩個led
    發(fā)表于 09-01 17:21

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

    FPGA(現(xiàn)場可編程門陣列)中實現(xiàn)按鍵消抖是一個重要的設(shè)計環(huán)節(jié),特別是在處理用戶輸入時,由于物理按鍵的機械特性和電氣特性,按鍵在按下和釋放的瞬間會產(chǎn)生抖動現(xiàn)象,這種抖動可能導(dǎo)致系統(tǒng)錯
    的頭像 發(fā)表于 08-19 18:15 ?3469次閱讀

    【xG24 Matter開發(fā)套件試用體驗】7-按鍵點亮LED

    1介紹 之前已經(jīng)點亮LED燈,并能通過延時實現(xiàn)LED閃爍,這里實現(xiàn)通過按左鍵控制LED燈,按下按鍵時對應(yīng)的
    發(fā)表于 08-03 14:54