版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
獨立按鍵去抖實驗卓越工程師培養(yǎng)系列FPGA開發(fā)實用教程——基于Xilinx和VerilogHDL第四章01實驗內(nèi)容通過學(xué)習(xí)FPGA高級開發(fā)系統(tǒng)上的獨立按鍵電路原理圖、按鍵去抖原理和狀態(tài)機設(shè)計,設(shè)計一個基于FPGA高級開發(fā)系統(tǒng)的按鍵控制LED計數(shù)頂層模塊,當(dāng)按下按鍵KEY1時,控制編號為LED0?LED3的4個發(fā)光二極管按照“0000—0001—0010—…—1111—0000”的順序循環(huán)點亮,這里假設(shè)LED熄滅為0,點亮為1。實驗內(nèi)容02實驗原理獨立按鍵去抖實驗涉及的硬件電路包括4個位于FPGA高級開發(fā)系統(tǒng)上的LED(編號為LED0?LED3)、1個獨立按鍵(編號為KEY1),以及與獨立按鍵串聯(lián)的10kQ限流電阻、與獨立按鍵并聯(lián)的100nF濾波電容。KEY1連接XC6SLX16芯片的G13引腳。另外,硬件電路還包括系統(tǒng)時鐘引腳和系統(tǒng)復(fù)位引腳,如圖4-1所示。當(dāng)按鍵未按下時,G13引腳上的電平為高電平;當(dāng)按鍵按下時,G13引腳上的電平為低電平。實驗原理獨立按鍵電路原理圖市場上絕大多數(shù)按鍵結(jié)構(gòu)都是機械式開關(guān)結(jié)構(gòu),而機械式開關(guān)的核心部件為彈性金屬簧片,因而在開關(guān)切換的瞬間會在接觸點出現(xiàn)來回彈跳的現(xiàn)象。在按鍵松開后,也會出現(xiàn)類似的情況,這種情況被稱為抖動。按鍵按下時產(chǎn)生前沿抖動,按鍵松開后產(chǎn)生后沿抖動,如圖4-2所示。實驗原理按鍵去抖原理獨立按鍵去抖原理圖如圖4-3所示,因為按鍵未按下時為高電平,按鍵按下時為低電平,所以對于理想按鍵,按鍵按下時可以立刻檢測到低電平,按鍵松開后可以立刻檢測到高電平。但是,實際情況是按鍵一旦按下,就會產(chǎn)生前沿抖動,抖動持續(xù)時間為5?10ms。接著,芯片引腳會檢測到穩(wěn)定的低電平。按鍵松開后,會產(chǎn)生后沿抖動,抖動持續(xù)時間依然為5?10ms。實驗原理接著,芯片引腳會檢測到穩(wěn)定的高電平。去抖實際上是每1ms檢測一次連接到按鍵的引腳電平,連續(xù)檢測到20次低電平,即低電平持續(xù)時間超過20ms,表示識別到按鍵按下。同理,按鍵松開后,如果連續(xù)檢測到20次高電平,即高電平持續(xù)時間超過20ms,則表示識別到按鍵松開。根據(jù)前面的分析,要求每1ms檢測一次連接到按鍵的引腳電平,因此,需要通過50MHz的系統(tǒng)時鐘分頻出一個1kHz的時鐘。假設(shè)去抖前的按鍵名為btn_i,去抖后的按鍵名為btn_o,未檢測到按鍵按下時btn_o為低電平,在連續(xù)20次檢測到按鍵按下時,bta_o產(chǎn)生一個脈寬為1ms的脈沖信號。這樣,就實現(xiàn)了按鍵的去抖。獨立按鍵去抖時序圖如圖4-4所示。實驗原理狀態(tài)機的全稱為有限狀態(tài)機(FiniteStateMachine,F(xiàn)SM),由狀態(tài)寄存器和組合邏輯電路構(gòu)成,能夠根據(jù)控制信號按照預(yù)先設(shè)定的狀態(tài)進行狀態(tài)轉(zhuǎn)移,是協(xié)調(diào)相關(guān)信號動作、完成特定操作的控制中心。狀態(tài)機狀態(tài)機由3部分組成,分別為產(chǎn)生下一狀態(tài)的組合邏輯電路、當(dāng)前狀態(tài)的時序邏輯電路和產(chǎn)生輸出的組合邏輯電路。狀態(tài)機組成部分狀態(tài)機的使用可歸納為4個要素:現(xiàn)態(tài)、條件、動作和次態(tài)。狀態(tài)機的使用實驗原理狀態(tài)機工作原理①按鍵未按下時的空閑狀態(tài)IDLE,復(fù)位時進入該狀態(tài)。②檢測到按鍵按下且計數(shù)器小于20的延遲狀態(tài)DELAY。③檢測到按鍵按下且計數(shù)器大于或等于20時產(chǎn)生一個脈寬為1ms脈沖的脈沖狀態(tài)PULSE。④按鍵未松開時的保持狀態(tài)KEEP,獨立按鍵去抖處理的狀態(tài)轉(zhuǎn)換。實驗原理獨立按鍵去抖處理狀態(tài)機
獨立按鍵去抖狀態(tài)轉(zhuǎn)換條件如表所示。實驗原理當(dāng)前狀態(tài)下一狀態(tài)轉(zhuǎn)換條件IDLEIDLE未檢測到按鍵按下IDLEDELAY檢測到按鍵按下,按鍵按下為低電平,從IDLE狀態(tài)跳轉(zhuǎn)至DELAY狀態(tài),同時啟動計數(shù)器DELAYDELAY檢測到按鍵按下且計數(shù)器小于20,計數(shù)器執(zhí)行加1操作。DELAYIDLE計數(shù)器小于20并檢測到按鍵松開DELAYPULSE檢測到按鍵按下且計數(shù)器大于或等于20,即按鍵引腳低電平持續(xù)時間為20ms,說明成功檢測到按鍵己有效按下PULSEKEEP在成功檢測到按鍵己有效按下時,將bta_o置1,由于PULSE狀態(tài)只會保持一個狀態(tài),從PULSE狀態(tài)跳轉(zhuǎn)至KEEP狀態(tài)時,bm_o將被置0,因此,btn_o的高電平只會持續(xù)1ms。KEEPIDLE識別到按鍵松開,跳轉(zhuǎn)至IDLE狀態(tài)KEEPKEEP識別到按鍵依然處于按下狀態(tài)
獨立按鍵去抖實驗電路有7個引腳,引腳名稱、類型、約束及描述如表所示。實驗原理引腳名稱引腳類型引腳約束引腳描述clk_iinV10時鐘輸入,50MHzrst_n_iinN7復(fù)位輸入,低電平復(fù)位btn_iinG13按鍵輸入,按下為低電平led_o[3]outG16通過電阻連接到led3led_o[2]outH15通過電阻連接到led2led_o[1]outF16通過電阻連接到led1led_o[0]outG14通過電阻連接到led0
獨立按鍵去抖實驗內(nèi)部電路圖如圖4-8所示。實驗原理03實驗步驟步驟1:復(fù)制工程文件夾并添加Verilog文件實驗步驟將“D:\Spartan6FPGATest\Material”目錄中的exp03.clrJitter_with_fsm文件夾復(fù)制到“D:\Spartan6FPGATest\Product”目錄中。然后,雙擊運行“D:\Spartan6FPGATesf\Product\exp03.clrJitter_with_fsm\project目錄中的btn_led_cnt.xise文件,打開工程。工程打開后,將“D:\Spartan6FPGATest\Product\exp03.clr_jitter_with_fsm\code”目錄中的.v文件和.ucf文件全部添加到工程中,并將頂層文件設(shè)置為btn_led_cnt.v。步驟2:完善clrJitter_with_fsm.v文件實驗步驟將程序清單4-1中的代碼輸入clrjitter_with_fsm.v文件中,并檢查該文件的語法,下面對關(guān)鍵語句進行解釋。第13至18行代碼:定義參數(shù)BTN_DOWN,值為0,代表按鍵按下為低電平。同時定義4個參數(shù)表示狀態(tài)機的4個狀態(tài),分別為空閑狀態(tài)IDLE、延遲狀態(tài)DELAY、脈沖狀態(tài)PULSE和保持狀態(tài)KEEP。第22至26行代碼:定義當(dāng)前狀態(tài)curr_state和下一狀態(tài)next_state。另外,再定義兩個計數(shù)器,分別為當(dāng)前計數(shù)器s_cnt_curr和下一計數(shù)器s_cnt_next,均賦初值00000。實驗步驟第30至40行代碼:實現(xiàn)兩個時序邏輯電路,分別為產(chǎn)生當(dāng)前狀態(tài)的時序邏輯電路及產(chǎn)生當(dāng)前計數(shù)器值的時序邏輯電路。當(dāng)rst_n_i為0復(fù)位時,狀態(tài)機當(dāng)前狀態(tài)curr_state為IDLE,當(dāng)前計數(shù)器s_cnt_curr清零;在clk_i上升沿,curr_state更新為next_state,s_cnt_curr更新為s_cnt_next。第42至102行代碼:實現(xiàn)產(chǎn)生下一狀態(tài)、產(chǎn)生輸岀的組合邏輯電路。實驗步驟實驗步驟步驟3:仿真工程檢查完clrJitter_with_fsm.v文件的語法之后,對clrJitter_with_fsm模塊進行仿真,本實驗已經(jīng)提供了測試文件模板clrjitter_with_fsm_tf.v,無須再創(chuàng)建,只需要將程序清單4-2中的內(nèi)容輸入模版代碼的相應(yīng)位置,然后參考2.3節(jié)步驟7進行仿真,下面對該文件的部分代碼進行介紹。實驗步驟第1行代碼:因為該模塊的時鐘信號周期為1ms,所以這里要產(chǎn)生周期為1ms的時鐘。第12至22行代碼:模擬按鍵按下時的前沿抖動過程。第24行代碼:模擬按鍵按下時的穩(wěn)定狀態(tài),持續(xù)時間為120ms。實驗步驟第25至27行代碼:模擬按鍵松開后的后沿抖動過程。第28行代碼:模擬按鍵松開后的穩(wěn)定狀態(tài),持續(xù)時間為200ms。第30至37行代碼:模擬按鍵抖動過程。實驗步驟實驗步驟完成測試文件的修改后,檢查測試文件語法對clrjitter_with_fsm模塊進行仿真,查看如圖4-9所示的仿真結(jié)果,btn_i經(jīng)過一段時間的前沿抖動之后,進入穩(wěn)定狀態(tài),并持續(xù)120ms,經(jīng)后沿抖動之后,進入松開狀態(tài)。在抖動過程中,btn_o保持低電平,在按鍵按下持續(xù)20ms低電平之后,btn_o輸出一個脈沖信號,說明檢測到有效按鍵。步驟4:完善btn_led_cnt.v文件將程序清單4-3中的代碼輸入bta_led_cnt.v文件中,下面對關(guān)鍵語句進行解釋。實驗步驟第37至44行代碼:當(dāng)rst_n_i為0復(fù)位時,計數(shù)器s_cnt清零。在s_clk_lkhz時鐘上升沿,若s_btn_after_clr_jitter為1,則s_cnt執(zhí)行一次加1操作,s_cnt按照“0000—0001—0010—0011—???—1111—0000”的順序循環(huán)計數(shù)。第46行代碼:led_o根據(jù)s_cnt輸出不同狀態(tài)值。實驗步驟步驟5:通過Synplify綜合工程通過Synplify對工程進行綜合,生成電路圖后,單擊面按鈕進入clrJitter_with_fsm模塊的綜合電路中,可以看到一個名為statemachine的方框,如圖4-10所示的是Synplify通過代碼生成的狀態(tài)機,使用按鈕便可查看狀態(tài)機內(nèi)的狀態(tài)轉(zhuǎn)換圖。實驗步驟步驟6:完善引腳約束文件將程序清單4-4中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年長春市各縣(市)區(qū)事業(yè)單位公開招聘上半年入伍高校畢業(yè)生第1號備考題庫補充備考題庫及答案詳解1套
- 2026廣東廣州開發(fā)區(qū)統(tǒng)計局(廣州市黃埔區(qū)統(tǒng)計局)招聘市商業(yè)調(diào)查隊隊員1人備考題庫及完整答案詳解一套
- 2026年春季四川省南充精神衛(wèi)生中心護理崗編外招聘18名備考題庫及一套參考答案詳解
- 2026云南迪慶州德欽縣政協(xié)招聘公益性崗位人員2人備考題庫及1套參考答案詳解
- 風(fēng)險事件分類模型
- 商業(yè)辦公樓節(jié)能改造技術(shù)方案
- 建筑項目經(jīng)理崗位職責(zé)清單
- 現(xiàn)代農(nóng)業(yè)機械采購與管理方案
- 教師教學(xué)經(jīng)驗交流會總結(jié)及心得體會
- 連鎖超市庫存管理系統(tǒng)使用方案
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會成熟人才招聘備考題庫完整參考答案詳解
- 供水管網(wǎng)及配套設(shè)施改造工程可行性研究報告
- 2026年及未來5年中國高帶寬存儲器(HBM)行業(yè)市場調(diào)查研究及投資前景展望報告
- 關(guān)于生產(chǎn)部管理制度
- CMA質(zhì)量手冊(2025版)-符合27025、評審準(zhǔn)則
- 大數(shù)據(jù)驅(qū)動下的塵肺病發(fā)病趨勢預(yù)測模型
- 炎德英才大聯(lián)考雅禮中學(xué)2026屆高三月考試卷英語(五)(含答案)
- 【道 法】期末綜合復(fù)習(xí) 課件-2025-2026學(xué)年統(tǒng)編版道德與法治七年級上冊
- VTE防治護理年度專項工作匯報
- 2025-2026學(xué)年仁愛科普版七年級英語上冊(全冊)知識點梳理歸納
- 乙狀結(jié)腸癌教學(xué)課件
評論
0/150
提交評論