吴忠躺衫网络科技有限公司

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

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

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

FPGA學(xué)習(xí)系列:26. 矩陣鍵盤(pán)的設(shè)計(jì)

FPGA學(xué)習(xí)交流 ? 2018-08-09 10:47 ? 次閱讀

設(shè)計(jì)背景:

矩陣鍵盤(pán)在工程設(shè)計(jì)越來(lái)越多的被用到,已然成為了我們做開(kāi)發(fā)接觸到的不可缺少的小型項(xiàng)目,利于我們理解設(shè)計(jì)方向的原理為以后的強(qiáng)化學(xué)習(xí)打好了堅(jiān)實(shí)的基礎(chǔ)。

設(shè)計(jì)原理:

在使用按鍵的時(shí)候,如果按鍵不多的話,我們可以直接按鍵與FPGA相連接,但是如果按鍵比較多的時(shí)候,如何還繼續(xù)使用直接按鍵與FPGA相連接的話,所會(huì)大量增加FPGA端口的消耗,為了減少FPGA端口的消

耗,我們可以把按鍵設(shè)計(jì)成矩陣的形式,就如下圖所示:

image.png

由上圖可以知道,矩陣鍵盤(pán)的行row(行)與col(列)的交點(diǎn),都是通過(guò)一個(gè)按鍵來(lái)相連接。傳統(tǒng)的一個(gè)按鍵一個(gè)端口的方法,若要實(shí)現(xiàn)16個(gè)按鍵,則需要16個(gè)端口,而現(xiàn)在這個(gè)矩陣鍵盤(pán)的設(shè)計(jì),16個(gè)按鍵,僅僅需要8個(gè)端口,如果使用16個(gè)端口來(lái)做矩陣鍵盤(pán)的話,可以識(shí)別64個(gè)按鍵,端口的利用率遠(yuǎn)遠(yuǎn)比傳統(tǒng)的設(shè)計(jì)好的多,所以如果需要的按鍵少的話,可以選擇傳統(tǒng)的按鍵設(shè)計(jì),如果需要的按鍵比較多的話,可以采用這種矩陣鍵盤(pán)的設(shè)計(jì)。而我們現(xiàn)在就以掃描法為例來(lái)介紹矩陣鍵盤(pán)的工作原理

首先col(列)是FPGA給矩陣鍵盤(pán)輸出的掃描信號(hào),而row(行)是矩陣鍵盤(pán)反饋給FPGA的輸入信號(hào),用于檢測(cè)哪一個(gè)按鍵被按下來(lái),如下圖所示:

image.png

詳細(xì)如上圖所示,FPGA給出掃描信號(hào)COL[3:0]COL = 4’b0111,等下一個(gè)時(shí)鐘周期COL = 4’b1011,再等下一個(gè)時(shí)鐘周期COL =4’b1101,再等下一個(gè)時(shí)鐘周期COL = 4’b1110,再等下一個(gè)時(shí)鐘周期COL = 4’b0111COL就是這樣不斷循環(huán),給矩陣鍵盤(pán)一個(gè)低電平有效的掃描信號(hào),當(dāng)FPGA給矩陣鍵盤(pán)COL掃描信號(hào)的同時(shí),FPGA也要在檢測(cè)矩陣鍵盤(pán)給FPGA的的反饋信號(hào)ROW,舉個(gè)例子,假若矩陣鍵盤(pán)中的9號(hào)案件被按下了:

當(dāng) COL = 4’b1101ROW =4’b1011 ;

當(dāng)9號(hào)按鍵被按下的時(shí)候,9號(hào)按鍵的電路就會(huì)被導(dǎo)通,掃描電路COL開(kāi)始掃描,當(dāng)掃描到COL[1]的時(shí)候,由于9號(hào)按鍵的電路被導(dǎo)通了,COL[1]的電壓等于ROW[2]的電壓,所以會(huì)出現(xiàn)當(dāng)COL = 4’b1101的時(shí)候ROW = 4’b1011;然后我們就可以利用這一種現(xiàn)象,來(lái)設(shè)計(jì)一個(gè)識(shí)別按鍵的電路。

設(shè)計(jì)架構(gòu)圖:

image.png

設(shè)計(jì)代碼:

設(shè)計(jì)模塊

0modulekey_borad(clk,rst_n,row,col,key_num);

1 inputclk;

2 inputrst_n;

3 input[3:0]row; //輸入反饋信號(hào)

4

5

6 outputreg[3:0]col; //輸出掃描信號(hào)

7 outputreg[3:0]key_num; //按鍵值得輸除

8

9 reg[15:0]count;

10

11 parameterT1ms =50000;//掃描的時(shí)間間隔 50000 * 20ns

12 //parameter T1ms = 5;

13

14 regflag;

15 always@(posedgeclk ornegedgerst_n)

16 if(!rst_n)

17 begin

18 count <=16'd0;

19 flag <=1'b0;

20 end

21 else

22 begin

23 if(count <T1ms -1)//計(jì)數(shù)時(shí)間

24 begin

25 count <=count +1'b1;

26 flag <=0;

27 end

28 else

29 begin

30 flag <=1'b1;//計(jì)數(shù)到了就給一個(gè)標(biāo)志位

31 count <=16'b0;

32 end

33 end

34 always@(posedgeclk ornegedgerst_n)

35 if(!rst_n)

36 begin

37 col <=4'b0111;

38 end

39 else

40 begin

41 if(flag)

42 col <={col[2:0],col[3]};//列掃描

43 else

44 col <=col;

45 end

46

47 //鍵值得翻譯模塊

48 always@(posedgeclk ornegedgerst_n)

49 if(!rst_n)

50 key_num =4'd0;

51 else

52 case({row,col}) //位拼接行和列的信號(hào),翻譯出對(duì)應(yīng)的鍵值

53 8'b0111_0111:key_num =4'hf;

54 8'b0111_1011:key_num =4'he;

55 8'b0111_1101:key_num =4'hd;

56 8'b0111_1110:key_num =4'hc;

57

58 8'b1011_0111:key_num =4'hb;

59 8'b1011_1011:key_num =4'ha;

60 8'b1011_1101:key_num =4'h9;

61 8'b1011_1110:key_num =4'h8;

62

63 8'b1101_0111:key_num =4'h7;

64 8'b1101_1011:key_num =4'h6;

65 8'b1101_1101:key_num =4'h5;

66 8'b1101_1110:key_num =4'h4;

67

68 8'b1110_0111:key_num =4'h3;

69 8'b1110_1011:key_num =4'h2;

70 8'b1110_1101:key_num =4'h1;

71 8'b1110_1110:key_num =4'h0;

72 default:;

73 endcase

74endmodule

測(cè)試模塊

0`timescale1ns/1ps

1

2modulekey_borad_tb();

3 regclk;

4 regrst_n;

5 reg[4:0]pressnum;//按鍵的值

6 wire[3:0]row;

7

8 wire[3:0]col;

9 wire[3:0]key_num;//輸出的值

10

11 initialbegin

12 clk =1'b1;

13 rst_n =1'b0;

14 pressnum =5'd16;

15

16 #200.1

17 rst_n =1'b1;

18 #1000

19 pressnum =5'd16;

20

21 #1000

22 pressnum =5'd8;

23

24 #1000

25 pressnum =5'd16;

26

27 #1000

28 pressnum =5'd15;

29 #1000

30 pressnum =5'd16;

31 #1000

32 $stop;

33

34 end

35 always#10clk =~clk;

36 //例化對(duì)應(yīng)的模塊

37 key_top borad_dut(

38 .clk(clk),

39 .rst_n(rst_n),

40 .row(row),

41 .col(col),

42 .key_num(key_num)

43 );

44 yingjian yingjian_dut(//硬件檢測(cè)電路 //此模塊自己可以設(shè)計(jì)

45 .clk(clk),

46 .rst_n(rst_n),

47 .col(col),

48 .row(row),

49 .pressnum(pressnum)

50 );

51endmodule

仿真:

在仿真圖中可以清晰的看出當(dāng)按鍵按下的時(shí)候?yàn)?/span>8,顯示出來(lái)的鍵值也為8,當(dāng)抬起的時(shí)候?yàn)?6,那么鍵值就保持不變,在設(shè)置的時(shí)候我們?cè)O(shè)置的是按鍵抬起為16,通過(guò)驗(yàn)證我們得到我們的設(shè)計(jì)是正確的。

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

    關(guān)注

    1630

    文章

    21798

    瀏覽量

    606051
  • 仿真
    +關(guān)注

    關(guān)注

    50

    文章

    4124

    瀏覽量

    134002
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    至芯科技昭哥帶你學(xué)FPGAFPGA_100天之旅_矩陣鍵盤(pán)設(shè)計(jì)

    本文屬于本人原創(chuàng),和大家一起學(xué)習(xí)FPGA,交流FPGA,希望大家多多支持。來(lái)源:至芯科技昭哥帶你學(xué)FPGAFPGA_100天之旅_
    發(fā)表于 10-17 10:06

    基于FPGA的4x4鍵盤(pán)矩陣

    基于FPGA的4x4鍵盤(pán)矩陣
    發(fā)表于 12-14 01:26

    獨(dú)立鍵盤(pán)矩陣鍵盤(pán)簡(jiǎn)析

    小白的學(xué)習(xí)筆記參上!!點(diǎn)擊我的藍(lán)色字體去往我的筆記就行了,我來(lái)整合一下目錄,方便大家一起交流準(zhǔn)備*.1藍(lán)橋杯的板子的初始化和蜂鳴器關(guān)閉1.流水燈流水燈學(xué)習(xí)2.獨(dú)立鍵盤(pán)矩陣
    發(fā)表于 01-17 06:14

    基于FPGA開(kāi)發(fā)板的矩陣鍵盤(pán)實(shí)驗(yàn)設(shè)計(jì)與實(shí)現(xiàn)

    1、基于FPGA開(kāi)發(fā)板的矩陣鍵盤(pán)實(shí)驗(yàn)設(shè)計(jì)與實(shí)現(xiàn)在鍵盤(pán)中按鍵數(shù)量較多時(shí),為了減少I(mǎi)/O口的占用,通常將按鍵排列成矩陣形式。在
    發(fā)表于 07-08 17:32

    單片機(jī)入門(mén)教程第26課-矩陣鍵盤(pán)接口技術(shù)及編程

    單片機(jī)入門(mén)教程第26課-矩陣鍵盤(pán)接口技術(shù)及編程 1、矩陣鍵盤(pán)的結(jié)構(gòu)與工作原理  在鍵盤(pán)中按
    發(fā)表于 01-07 15:21 ?2639次閱讀
    單片機(jī)入門(mén)教程第<b class='flag-5'>26</b>課-<b class='flag-5'>矩陣</b>式<b class='flag-5'>鍵盤(pán)</b>接口技術(shù)及編程

    矩陣鍵盤(pán)專題

    將按鍵排列成矩陣形式被稱為矩陣鍵盤(pán)矩陣鍵盤(pán)程序則實(shí)現(xiàn)了矩陣
    發(fā)表于 10-25 15:19
    <b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤(pán)</b>專題

    VNS網(wǎng)絡(luò)控制矩陣鍵盤(pán)

    VNS網(wǎng)絡(luò)控制矩陣鍵盤(pán)是與VNS系列網(wǎng)絡(luò)數(shù)字矩陣配套使用的全功能控制鍵盤(pán),可通過(guò)以太網(wǎng)網(wǎng)絡(luò)控制直接操作帶網(wǎng)絡(luò)控制功能的
    發(fā)表于 10-26 09:16 ?1875次閱讀

    矩陣鍵盤(pán)

    矩陣鍵盤(pán)
    發(fā)表于 12-25 22:47 ?0次下載

    基于FPGA矩陣鍵盤(pán)控制器的設(shè)計(jì)

    為改變采用CPU 控制矩陣鍵盤(pán)導(dǎo)致CPU 資源利用下降及引腳不足的現(xiàn)狀,介紹了一種基于FPGA矩陣鍵盤(pán)控制器的開(kāi)發(fā)。在ISE13.4 開(kāi)
    發(fā)表于 11-18 11:45 ?5068次閱讀

    矩陣鍵盤(pán)有什么用_矩陣鍵盤(pán)有何用途

    本文開(kāi)始介紹了什么是矩陣鍵盤(pán)矩陣鍵盤(pán)的組成結(jié)構(gòu),其次詳細(xì)闡述了矩陣鍵盤(pán)用途,最后介紹了
    發(fā)表于 02-24 14:01 ?1.7w次閱讀

    FPGA學(xué)習(xí)系列26. 計(jì)算器的設(shè)計(jì)

    設(shè)計(jì)背景:計(jì)算器是設(shè)計(jì)中經(jīng)常用到的一個(gè)操作軟件,設(shè)計(jì)和學(xué)習(xí)計(jì)算器使我們親密的聯(lián)系所學(xué)的各模塊, 對(duì)我們的學(xué)習(xí)有很大的幫助和提升。希望大家來(lái)學(xué)習(xí)?設(shè)計(jì)原理:?本次的設(shè)計(jì)主要通過(guò)矩陣
    的頭像 發(fā)表于 08-13 13:45 ?4319次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>系列</b>:<b class='flag-5'>26.</b> 計(jì)算器的設(shè)計(jì)

    矩陣鍵盤(pán)的按鍵識(shí)別方法_矩陣鍵盤(pán)掃描程序

    矩陣鍵盤(pán)的按鍵識(shí)別方法來(lái)自簡(jiǎn)單日記網(wǎng)精選推薦。在學(xué)習(xí)有關(guān)矩陣鍵盤(pán)的時(shí)候,往往要學(xué)會(huì)矩陣
    的頭像 發(fā)表于 04-20 09:39 ?3.4w次閱讀

    單片機(jī)學(xué)習(xí)(五)LCD1602和矩陣鍵盤(pán)的使用

    單片機(jī)學(xué)習(xí)(五)LCD1602和矩陣鍵盤(pán)的使用
    發(fā)表于 12-04 09:06 ?12次下載
    單片機(jī)<b class='flag-5'>學(xué)習(xí)</b>(五)LCD1602和<b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤(pán)</b>的使用

    藍(lán)橋杯單片機(jī)學(xué)習(xí)記錄4矩陣鍵盤(pán)

    藍(lán)橋杯單片機(jī)學(xué)習(xí)記錄4矩陣鍵盤(pán)藍(lán)橋杯的矩陣鍵盤(pán)和一般的51不一樣一般的51矩陣
    發(fā)表于 12-29 19:20 ?0次下載
    藍(lán)橋杯單片機(jī)<b class='flag-5'>學(xué)習(xí)</b>記錄4<b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤(pán)</b>

    stm32矩陣鍵盤(pán)學(xué)習(xí)筆記

    矩陣鍵盤(pán)矩陣鍵盤(pán)簡(jiǎn)介矩陣鍵盤(pán)掃描原理端口的配置相關(guān)函數(shù)的編寫(xiě)主函數(shù)與其他串口的接線與
    發(fā)表于 01-13 16:27 ?36次下載
    stm32<b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤(pán)</b><b class='flag-5'>學(xué)習(xí)</b>筆記
    百家乐免佣台| 金字塔百家乐的玩法技巧和规则 | bet365代理| 百家乐永利娱乐场| 百家乐官网单注打法| 香港六合彩85期开奖结果| 百家乐技巧-澳门百家乐官方网址| 百家乐官网澳门百家乐官网澳门赌场| 博彩e族首页| 百家乐官网游戏教程| 江城足球网| 太阳城洋伞| 百家乐棋牌官网| 劳力士百家乐官网的玩法技巧和规则 | 大发888真钱游戏平台| 百家乐澳门色子| 战神百家乐官网的玩法技巧和规则| 百家乐官网捡揽方法| 太阳城官方网站| 大发888客户端官方下载| 伯爵百家乐的玩法技巧和规则 | 海立方百家乐官网海立方| 注册娱乐城送彩金| 大发888娱乐城怎么样| 新东泰百家乐官网的玩法技巧和规则 | 优博百家乐官网的玩法技巧和规则| 百家乐官网要怎么玩啊| 乐透乐博彩论坛3d| 百家乐博百家乐| 百家乐线上代理网站| 百家乐官网变牌器| 顺昌县| 视频百家乐试玩| 百家乐稳赚秘籍| 百家乐官网博娱乐网赌百家乐官网的玩法技巧和规则 | 狮威百家乐赌场娱乐网规则| 百家乐游戏平台架设| 全迅网百家乐官网的玩法技巧和规则| 缅甸百家乐官网网上投注| 网页百家乐官网| 百家乐开户优惠多的平台是哪家|