新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA和VHDL語言的多按鍵狀態(tài)識(shí)別系統(tǒng)

        基于FPGA和VHDL語言的多按鍵狀態(tài)識(shí)別系統(tǒng)

        作者: 時(shí)間:2010-09-03 來源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.104case.com/article/151597.htm

          2.2 電路

          圖3為一路電路,共60個(gè)(i=1~60)。由于外界環(huán)境復(fù)雜,按鍵引線長(zhǎng)達(dá)6 m,保護(hù)二極管VDi:在外界干擾信號(hào)大于VCC時(shí)導(dǎo)通起到保護(hù)的作用。電阻Ri上拉限流,按鍵未閉合輸入引腳始終處于高電平。

          3 內(nèi)部邏輯設(shè)計(jì)

          FPGA內(nèi)部功能分為掃描模塊、編碼模塊、控制模塊以及同步FIFO RAM模塊,如圖4所示。

          

          圖4中,K1~K60為60個(gè)按鍵的輸入端,Scan為工作模式選擇信號(hào),Ready為讀準(zhǔn)備好信號(hào),RdClk為讀時(shí)鐘信號(hào),Data[7:0]為數(shù)據(jù)輸出,ModCtr為編碼模式控制信號(hào),F(xiàn)IFOWEn為FIFO RAM寫使能信號(hào),F(xiàn)IFOIn為FIFO RAM數(shù)據(jù)輸入,State為按鍵掃描信號(hào)。其工作原理為:掃描模塊周期掃描按鍵,其結(jié)果送入編碼模塊;編碼模塊根據(jù)模式控制信號(hào)ModCtr選擇編碼方式編碼,將其結(jié)果送入FIFO RAM;控制模塊產(chǎn)生對(duì)FIFO RAM的讀取控制信號(hào);MCU可通過Readv、RdClk控制信號(hào)讀取Data[7:0]數(shù)據(jù)線上的按鍵編號(hào)和狀態(tài)數(shù)據(jù)。

          3.1 掃描模塊

          掃描模塊主要完成掃描按鍵狀態(tài)輸入和按鍵的軟件去抖動(dòng)。掃描按鍵狀態(tài)輸入是以5 m8為周期掃描60個(gè)輸入引腳,將其結(jié)果存入60個(gè)兩位狀態(tài)移位寄存器。其代碼為:

          

          按鍵去抖有硬件和軟件2種實(shí)現(xiàn)方式。為了節(jié)省成本,充分發(fā)揮FPGA器件的功能,該設(shè)計(jì)采用軟件去抖。圖5為軟件去抖動(dòng)流程。圖中State為2位狀態(tài)移位寄存器,初始值為0,TimeDelay為延時(shí)計(jì)數(shù)器。

          



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 赣州市| 凭祥市| 交口县| 临沧市| 陵川县| 准格尔旗| 光泽县| 铁岭市| 讷河市| 迁安市| 航空| 仲巴县| 新野县| 沙田区| 若尔盖县| 永修县| 嘉义市| 许昌市| 天气| 阿城市| 定日县| 寿阳县| 宣城市| 德庆县| 营口市| 丰城市| 丹江口市| 绥德县| 达日县| 漳浦县| 南城县| 奉节县| 隆化县| 徐水县| 耿马| 芦山县| 分宜县| 呼和浩特市| 利辛县| 伊通| 汕尾市|