新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于PLD的矩陣鍵盤狀態機控制

        基于PLD的矩陣鍵盤狀態機控制

        作者: 時間:2012-03-12 來源:網絡 收藏

        講講FPGA中的應用了。這個思維和電路在FPGA中有所不同,在此,在此做詳細解釋,Bingo用自己設計的成熟的代碼作為案例,希望對你有用。

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

        一、FPGA電路圖

        在FPGA中的電路,與單片機雷同,如下所示:

        61.jpg

        在上電默認情況下,L[3:0] =4''b1,因為上拉了3.3V,而默認情況下H.[3:0]為低電平;一旦有某一個按鍵被按下,便是是的該路電路流向該按鍵的H,是的L檢測不到電流。因此可以通過對每一行H輸出的控制,來檢索是哪一個按鍵被按下了,這也原理和單片機中一樣,只是寫法不一樣罷了。

        二、FPGAFSM

        1. 代碼

        代碼如下所示,采用了三段式狀態機來描述矩陣鍵盤。本模塊形式與上一張按鍵消抖動雷同,方便移植。

        /*************************************************

        * Module Name : matrix_key_design.v

        * Engineer : Crazy Bingo

        * Target Device : EP2C8Q208C8

        * Tool versions : Quartus II 11.0

        * Create Date : 2011-6-26

        * Revision : v1.0

        * Description :

        **************************************************/

        module matrix_key_design

        (

        input clk,

        input rst_n,

        input [3:0] col_data,

        output reg [3:0] row_data,

        output key_flag, //the mark of key is pressed

        output reg [3:0] key_value

        );

        //generate for 2ms signal

        reg [19:0] cnt; //fffff,≈50Hz 20ms

        always @(posedge clk or negedge rst_n)

        begin

        if(!rst_n)

        cnt = 0;

        else

        cnt = cnt+1'b1;

        end

        /*****************************************************

        * R3 >---0----1----2----3

        * | | | |

        * R2 >---4----5----6----7

        * | | | |

        * R1 >---8----9----A----B

        * | | | |

        * R0 >---C----D----E----F

        * | | | |

        * C3 C2 C1 C0

        *****************************************************/


        上一頁 1 2 3 4 下一頁

        關鍵詞: PLD 矩陣鍵盤

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 屏山县| 中方县| 吉林省| 黔西| 晋城| 宜州市| 铁岭市| 保靖县| 景泰县| 岱山县| 广州市| 松潘县| 绥中县| 鄂伦春自治旗| 阆中市| 张掖市| 手游| 博湖县| 永登县| 新龙县| 珠海市| 景洪市| 齐齐哈尔市| 双峰县| 宁晋县| 兴文县| 方山县| 蒙山县| 高平市| 建水县| 河北省| 太湖县| 通海县| 宁波市| 盐边县| 昭苏县| 金秀| 马鞍山市| 南澳县| 饶平县| 孟州市|