《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > EDA與制造 > 設(shè)計(jì)應(yīng)用 > 基于VHDL 的矩陣鍵盤及顯示電路設(shè)計(jì)
基于VHDL 的矩陣鍵盤及顯示電路設(shè)計(jì)
維庫(kù)開(kāi)發(fā)網(wǎng)
摘要: 摘要:為了有效防止機(jī)械式鍵盤按鍵抖動(dòng)帶來(lái)的數(shù)據(jù)錯(cuò)誤,這里在QuartusⅡ開(kāi)發(fā)環(huán)境下,采用VHDL語(yǔ)言設(shè)計(jì)...
關(guān)鍵詞: VHDL 矩陣鍵盤 Quartus Ⅱ
Abstract:
Key words :

     摘 要:為了有效防止機(jī)械式鍵盤按鍵抖動(dòng)帶來(lái)的數(shù)據(jù)錯(cuò)誤,這里在Quartus Ⅱ開(kāi)發(fā)環(huán)境下,采用VHDL 語(yǔ)言設(shè)計(jì)了一種能夠?qū)C(jī)械式4 ×4 矩陣鍵盤的按鍵值依次顯示到8 個(gè)7 段數(shù)碼管上的矩陣鍵盤及顯示電路。仿真結(jié)果表明,所設(shè)計(jì)的矩陣鍵盤及顯示電路成功地實(shí)現(xiàn)了按鍵防抖和按鍵數(shù)據(jù)的準(zhǔn)確顯示。以ACEX1K系列EP1K30QC208 芯片為硬件環(huán)境,驗(yàn)證了各項(xiàng)設(shè)計(jì)功能的正確性。

  FPGA/ CPLD 在數(shù)字系統(tǒng)設(shè)計(jì)中的廣泛應(yīng)用,影響到了生產(chǎn)生活的各個(gè)方面。在FPGA/ CPLD 的設(shè)計(jì)開(kāi)發(fā)中,V HDL 語(yǔ)言作為一種主流的硬件描述語(yǔ)言,具有設(shè)計(jì)效率高, 可靠性好, 易讀易懂等諸多優(yōu)點(diǎn) 。作為一種功能強(qiáng)大的FPGA/ CPLD 數(shù)字系統(tǒng)開(kāi)發(fā)環(huán)境,Altera 公司推出的Quart us Ⅱ,為設(shè)計(jì)者提供了一種與結(jié)構(gòu)無(wú)關(guān)的設(shè)計(jì)環(huán)境,使設(shè)計(jì)者能方便地進(jìn)行設(shè)計(jì)輸入、快速處理和器件編程,為使用V HDL 語(yǔ)言進(jìn)行FPGA/ CPLD 設(shè)計(jì)提供了極大的便利 。矩陣鍵盤作為一種常用的數(shù)據(jù)輸入設(shè)備,在各種電子設(shè)備上有著廣泛的應(yīng)用,通過(guò)7 段數(shù)碼管將按鍵數(shù)值進(jìn)行顯示也是一種常用的數(shù)據(jù)顯示方式。在設(shè)計(jì)機(jī)械式矩陣鍵盤控制電路時(shí),按鍵防抖和按鍵數(shù)據(jù)的譯碼顯示是兩個(gè)重要方面。本文在Quart us Ⅱ開(kāi)發(fā)環(huán)境下,采用V HDL語(yǔ)言設(shè)計(jì)了一種按鍵防抖并能連續(xù)記錄并顯示8 次按鍵數(shù)值的矩陣鍵盤及顯示電路。

  1  矩陣鍵盤及顯示電路設(shè)計(jì)思路

  矩陣鍵盤及顯示電路能夠?qū)C(jī)械式4 ×4矩陣鍵盤的按鍵值依次顯示到8 個(gè)7段數(shù)碼管上,每次新的按鍵值顯示在最右端的第0 號(hào)數(shù)碼管上,原有第0~6號(hào)數(shù)碼管顯示的數(shù)值整體左移到第1~7號(hào)數(shù)碼管上顯示,見(jiàn)圖1 。總體而言,矩陣鍵盤及顯示電路的設(shè)計(jì)可分為4 個(gè)部分:

  (1) 矩陣鍵盤的行及列的掃描控制和譯碼。該設(shè)計(jì)所使用的鍵盤是通過(guò)將列掃描信號(hào)作為輸入信號(hào),控制行掃描信號(hào)輸出,然后根據(jù)行及列的掃描結(jié)果進(jìn)行譯碼。

  (2) 機(jī)械式按鍵的防抖設(shè)計(jì)。由于機(jī)械式按鍵在按下和彈起的過(guò)程中均有5~10 ms 的信號(hào)抖動(dòng)時(shí)間,在信號(hào)抖動(dòng)時(shí)間內(nèi)無(wú)法有效判斷按鍵值,因此按鍵的防抖設(shè)計(jì)是非常關(guān)鍵的,也是該設(shè)計(jì)的一個(gè)重點(diǎn)。

  (3) 按鍵數(shù)值的移位寄存。由于該設(shè)計(jì)需要在8 個(gè)數(shù)碼管上依次顯示前后共8 次按鍵的數(shù)值,因此對(duì)已有數(shù)據(jù)的存儲(chǔ)和調(diào)用也是該設(shè)計(jì)的重點(diǎn)所在。

  (4) 數(shù)碼管的掃描和譯碼顯示。由于該設(shè)計(jì)使用了8 個(gè)數(shù)碼管,因此需要對(duì)每個(gè)數(shù)碼管進(jìn)行掃描控制,并根據(jù)按鍵值對(duì)每個(gè)數(shù)碼管進(jìn)行7 段數(shù)碼管的譯碼顯示。

  2  矩陣鍵盤及顯示電路的實(shí)現(xiàn)

  本文所設(shè)計(jì)的矩陣鍵盤及顯示電圖2 所示。其中, clk 為時(shí)鐘信號(hào)輸入端(頻率可為1 024~32 768 Hz) ; start 為清零控制端;kbrow 為列掃描信號(hào)輸入端; kbcol 為行掃描信號(hào)輸出端; scan 為數(shù)碼管地址掃描信號(hào)輸出端; seg7 為數(shù)碼管顯示信號(hào)輸出端。

圖1  矩陣鍵盤及顯示電路原理圖

圖2  矩陣鍵盤及顯示電路的電路符號(hào)

  限于篇幅,在此不詳述所設(shè)計(jì)矩陣鍵盤及顯示電路的全部V HDL 代碼,只對(duì)部分重要代碼段落進(jìn)行詳細(xì)說(shuō)明。

  如圖1 所示,全部代碼由7 個(gè)進(jìn)程(process) 組成。其中,進(jìn)程P1 和P2 用于對(duì)列掃描輸入信號(hào)kbrow 進(jìn)行讀取,并通過(guò)或非運(yùn)算產(chǎn)生行掃描使能控制信號(hào)en 對(duì)行掃描輸出信號(hào)kbcol 進(jìn)行控制,并生成一個(gè)與kbcol 對(duì)應(yīng)的狀態(tài)信號(hào)state。若沒(méi)有按鍵被按下( 即kbrow =“0000”) ,則en =‘1’,行掃描輸出信號(hào)kbcol 不斷循環(huán)掃描各行;若有按鍵被按下,en =‘0’,則行掃描停止,并鎖存當(dāng)前kbcol 的值。進(jìn)程P1 和P2 的代碼如下:



  進(jìn)程P3 使用“case ?when”語(yǔ)句,根據(jù)狀態(tài)信號(hào)state 的值(即kbcol 的值) 和列掃描輸入信號(hào)kbrow 的值進(jìn)行按鍵值譯碼, 生成一個(gè)4 位二進(jìn)制按鍵數(shù)值信號(hào)dat ,用以記錄當(dāng)前按鍵值。例如,當(dāng)kbcol =“0010”,kbrow =“0001 ”時(shí)“B”鍵按下, dat =“1011”。進(jìn)程P3 的代碼在此不再贅述。進(jìn)程P4 和P5 用于按鍵的防抖和按鍵值的移位寄存。通過(guò)將行掃描使能控制信號(hào)en 不斷賦給一個(gè)8 位二進(jìn)制變量reg8 ,再將reg8 賦給8 位二進(jìn)制信號(hào)key ,實(shí)現(xiàn)對(duì)按鍵狀態(tài)的記錄,然后通過(guò)對(duì)key的各位數(shù)值進(jìn)行與運(yùn)算,生成防抖控制信號(hào)f nq。一旦有按鍵按下,en =‘0’,則即便是按鍵在抖動(dòng),key 中至少也有1 位數(shù)值為‘0’,從而使f nq =‘0’。只有當(dāng)按鍵再次彈起,并且在連續(xù)8 個(gè)時(shí)鐘周期內(nèi)不再有新的按鍵按下,key 的數(shù)值全為‘1’,則f nq =‘1’,f nq產(chǎn)生一個(gè)上升沿,從而觸發(fā)按鍵數(shù)值信號(hào)dat 進(jìn)入數(shù)值寄存信號(hào)temp (32 位二進(jìn)制數(shù)) 的第0 ~ 3 位, 并將temp 原來(lái)的第0~27 位左移到第4~31 位,實(shí)現(xiàn)1 次按鍵按下的數(shù)值存儲(chǔ)。進(jìn)程P4 和P5 的代碼如下:



 

  進(jìn)程P6 用于將數(shù)值寄存信號(hào)temp 的32 位二進(jìn)制數(shù)分配給8 個(gè)數(shù)碼管,從而生成數(shù)碼管地址掃描輸出scan ,以及數(shù)碼管數(shù)值信號(hào)data (4 位2 進(jìn)制數(shù)) 。進(jìn)程P6 代碼如下:




 

  進(jìn)程P7 用于將數(shù)碼管數(shù)值信號(hào)data 譯碼成為7 段數(shù)碼管顯示輸出seg7 ,進(jìn)程P7 的代碼在此不再贅述。值得注意的是,本文設(shè)計(jì)的矩陣鍵盤及顯示電路在按鍵防抖和數(shù)據(jù)寄存部分設(shè)計(jì)得更加簡(jiǎn)潔可靠,實(shí)現(xiàn)的功能更加強(qiáng)大,其具有如下特點(diǎn):

  (1) 為了實(shí)現(xiàn)按鍵防抖,本文采用對(duì)按鍵狀態(tài)連續(xù)記錄的方式,即在按鍵彈起后連續(xù)8 個(gè)時(shí)鐘周期均無(wú)按鍵信號(hào)才確認(rèn)1 次按鍵有效,從而避免了按鍵按下和彈起過(guò)程中的數(shù)據(jù)抖動(dòng),相比于使用計(jì)數(shù)器從按鍵按下開(kāi)始計(jì)數(shù), 直到5 ~ 10 ms 后才讓按鍵有效的防抖方式 ,這里設(shè)計(jì)的按鍵防抖更加可靠,且可有效避免長(zhǎng)時(shí)間按下按鍵產(chǎn)生的重復(fù)數(shù)據(jù)輸出,使每次按鍵無(wú)論時(shí)間長(zhǎng)短均可且只會(huì)產(chǎn)生1 次數(shù)據(jù)輸出。另外,當(dāng)電路采用32 768 Hz 以上的時(shí)鐘作為系統(tǒng)時(shí)鐘時(shí),可以通過(guò)增加按鍵狀態(tài)連續(xù)記錄的時(shí)鐘周期數(shù),實(shí)現(xiàn)可靠的防抖。

  (2) 該設(shè)計(jì)采用一個(gè)32 位一維數(shù)組temp 作為數(shù)據(jù)寄存器,使用移位寄存方式,實(shí)現(xiàn)了對(duì)連續(xù)8 次按鍵數(shù)據(jù)的存儲(chǔ)和調(diào)用,從而可以在8 個(gè)數(shù)碼管上連續(xù)顯示數(shù)據(jù)。

  3  仿真結(jié)果分析

  本文設(shè)計(jì)的矩陣鍵盤及顯示電路在Quartus Ⅱ開(kāi)發(fā)環(huán)境下進(jìn)行了仿真驗(yàn)證。其中,按鍵防抖功能的仿真波形如圖3 所示。仿真結(jié)果分析如下:

  (1) clk 為時(shí)鐘輸入信號(hào),作為系統(tǒng)時(shí)鐘;

  (2) start 為清零控制端,當(dāng)其為高電平時(shí),按鍵有效;

  (3) kbrow 為列掃輸入信號(hào),kbcol 為行掃輸出信號(hào),圖3 中對(duì)kbrow[ 1 ]的輸入波形進(jìn)行設(shè)置,模擬了“A”鍵按下和彈起的過(guò)程;

  (4) f nq 為防抖控制信號(hào), scan 為數(shù)碼管地址掃描輸出,seg7 為數(shù)碼管顯示輸出。由圖3 可知,只有在按鍵彈起后,才有數(shù)據(jù)輸出,從而實(shí)現(xiàn)防抖功能。

圖3  矩陣鍵盤及顯示電路按鍵防抖仿真波形

  該設(shè)計(jì)的其他功能也可以通過(guò)仿真驗(yàn)證, 不再贅述。

  4  結(jié) 語(yǔ)

  本文設(shè)計(jì)矩陣鍵盤及顯示電路在Quartus Ⅱ開(kāi)發(fā)環(huán)境下進(jìn)行仿真驗(yàn)證后,下載到湖北眾友科技實(shí)業(yè)股份有限公司的ZY11EDA13BE 實(shí)驗(yàn)箱中進(jìn)行了硬件驗(yàn)證。該實(shí)驗(yàn)箱使用ACEX1K系列EP1K30QC208 芯片作為核心芯片。實(shí)驗(yàn)證明,當(dāng)電路的系統(tǒng)時(shí)鐘頻率在1 024~32 768 Hz范圍內(nèi)時(shí),電路均可穩(wěn)定運(yùn)行,按鍵防抖可靠、功能完整。當(dāng)系統(tǒng)時(shí)鐘頻率低于1 024 Hz 時(shí),需要減少防抖記錄時(shí)鐘周期的個(gè)數(shù),否則容易錯(cuò)過(guò)短時(shí)按鍵動(dòng)作;當(dāng)系統(tǒng)時(shí)鐘頻率高于32 768 Hz 時(shí),需要增加防抖記錄時(shí)鐘周期的個(gè)數(shù),以確保可靠的按鍵防抖。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产区在线观看成人精品| 亚洲人久久久| 欧美激情第1页| 欧美在线亚洲一区| 亚洲欧美一区二区精品久久久| 日韩一区二区精品| 亚洲精品国久久99热| 久久精品系列| 久久精品国产清自在天天线| 亚洲欧美日本国产专区一区| 中日韩男男gay无套| 99精品视频免费观看| 亚洲乱码国产乱码精品精98午夜| 一区精品久久| 伊人精品久久久久7777| 黄色精品一区二区| 好看的日韩视频| 精品二区视频| 亚洲第一毛片| 91久久久久久| 亚洲精品日韩久久| 99热精品在线| 亚洲与欧洲av电影| 欧美一级午夜免费电影| 久久成年人视频| 亚洲激情影院| 99热在这里有精品免费| 一区二区三区.www| 亚洲一区二区免费| 午夜精品久久久久久久白皮肤| 性欧美办公室18xxxxhd| 久久精品夜色噜噜亚洲a∨| 久久久久久9| 农村妇女精品| 欧美日韩一区二区视频在线观看| 欧美日韩亚洲不卡| 国产精品视频久久| 激情成人综合网| 亚洲激情电影中文字幕| 一区二区三区视频观看| 亚洲欧美在线免费观看| 亚洲成人在线视频播放| 亚洲国产mv| 一本大道久久精品懂色aⅴ| 亚洲午夜性刺激影院| 欧美一级在线亚洲天堂| 另类天堂av| 欧美日韩精品福利| 国产精品最新自拍| 激情小说亚洲一区| 亚洲精品一区二区三区婷婷月| 亚洲一区二区三区高清不卡| 亚洲欧美综合v| 亚洲欧洲在线一区| 亚洲欧美大片| 久久夜色精品一区| 欧美日韩亚洲国产精品| 国产农村妇女精品一区二区| 在线成人激情视频| 一区二区三区|亚洲午夜| 欧美在线www| 99视频精品免费观看| 性一交一乱一区二区洋洋av| 久久久久免费| 欧美啪啪成人vr| 国产日韩一区二区三区在线播放| 亚洲国产岛国毛片在线| 亚洲伊人网站| 亚洲精品在线观看视频| 性色av香蕉一区二区| 欧美经典一区二区三区| 国产欧美一区二区精品婷婷| 在线免费观看日本欧美| 亚洲在线免费视频| 99精品视频免费在线观看| 久久精品道一区二区三区| 欧美精品久久一区二区| 国产在线不卡精品| 亚洲午夜激情网页| 亚洲精品一区二区三区四区高清| 欧美在线日韩精品| 欧美日韩亚洲一区二区三区四区| 国产亚洲福利社区一区| 一区二区高清| 亚洲精品欧美激情| 久久精品99国产精品日本| 欧美三级网址| 亚洲国产精品电影| 欧美在线日韩精品| 先锋资源久久| 欧美日韩一区在线| 亚洲国产91色在线| 久久不射中文字幕| 久久成人免费网| 欧美色欧美亚洲另类二区| 亚洲高清在线播放| 久久精品三级| 久久精品国内一区二区三区| 国产精品播放| 亚洲美女淫视频| 亚洲精品在线观看免费| 蜜桃av一区二区| 韩国三级电影久久久久久| 亚洲欧美国产精品va在线观看| 一本色道婷婷久久欧美| 嫩草成人www欧美| 国语自产精品视频在线看抢先版结局 | 美女日韩在线中文字幕| 国产日产欧美a一级在线| 日韩亚洲不卡在线| 一本色道久久加勒比88综合| 免费中文字幕日韩欧美| 在线播放日韩欧美| 亚洲国产精品成人综合| 久久综合999| 黄色国产精品| 久久av二区| 久久久av水蜜桃| 国产一区二区欧美| 午夜精品国产更新| 欧美一级免费视频| 国产欧美一区二区精品忘忧草| 亚洲在线视频观看| 午夜日韩av| 国产精品永久| 午夜精品久久久久久久久久久久| 香蕉成人啪国产精品视频综合网| 国产精品久久久久婷婷| 亚洲一区免费观看| 欧美一区国产二区| 国产亚洲精品aa| 久久精品国产亚洲一区二区三区 | 国产伊人精品| 亚洲大胆女人| 欧美77777| 亚洲欧洲三级| 亚洲天堂免费在线观看视频| 欧美日韩一区不卡| 亚洲深夜福利在线| 欧美一级淫片aaaaaaa视频| 国产日本欧洲亚洲| 欧美一区二区在线看| 久久久噜噜噜久噜久久| 尤物99国产成人精品视频| 亚洲国产美女精品久久久久∴| 毛片基地黄久久久久久天堂| 亚洲激情六月丁香| 亚洲视频免费| 国产农村妇女毛片精品久久麻豆| 性做久久久久久| 麻豆精品91| 亚洲人成小说网站色在线| 亚洲一区二区三区四区中文| 国产精品亚洲一区二区三区在线| 先锋影音网一区二区| 另类酷文…触手系列精品集v1小说| 亚洲国产精品成人综合色在线婷婷 | 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美一级一区| 伊人久久亚洲影院| 一本到高清视频免费精品| 国产精品美女久久| 亚洲高清色综合| 欧美精品色综合| 亚洲欧美成人综合| 免费视频一区二区三区在线观看| 99成人精品| 久久久久久久久久久成人| 91久久精品国产91性色tv| 午夜亚洲激情| 亚洲成人在线视频播放| 亚洲一区二区影院| 狠狠色狠狠色综合| 一区二区三区高清在线| 国产日韩一区| 一区二区三区 在线观看视| 国产日韩欧美成人| 亚洲精品视频二区| 国产精品影片在线观看| 亚洲精品人人| 国产欧美日韩在线| 亚洲毛片播放| 国产一区二区精品丝袜| 久久精品日产第一区二区| 在线日韩欧美视频| 99综合视频| 国产视频一区免费看| 亚洲精品永久免费| 国产午夜精品一区理论片飘花 | 制服丝袜亚洲播放| 鲁鲁狠狠狠7777一区二区| 亚洲色图自拍| 暖暖成人免费视频| 午夜综合激情| 欧美日韩在线三区| 亚洲国产婷婷香蕉久久久久久99| 国产精品美女在线| 亚洲狼人综合| 国产在线不卡精品| 亚洲永久免费|