新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的按鍵彈跳消除模塊的研究與應用

        基于FPGA的按鍵彈跳消除模塊的研究與應用

        作者: 時間:2012-10-17 來源:網絡 收藏

        2.2 程序設計

        設計一個高脈沖計數器count1和一個低脈沖計數器conut0。引入一個采樣脈沖信號clk,對輸入信號button_in進行采樣,并對clk進行計數。若button_in為高電平,count1做加法計數,直到count1各位全為1,停止計數,歸零,使消抖后的輸出信號button_out輸出1。若button_in為低電平,count0做加法計數,直到count0各位全為1,停止計數歸零,并使消抖后的輸出信號button_out輸出0。

        部分程序如下:

        module filter(clk,

        reset,

        button_in,

        button_out);

        input clk;

        input reset;

        input button_in;

        output button_out;

        wire buttong_out1;

        reg [20:0] count0;

        reg [20:0] count1;

        reg button_out1_reg;

        ……

        assign button_out=button_out1_reg;

        //對輸入進行采樣,計數

        always@(posedge clk or negedge reset)

        begin

        if(!reset) count1=21'h000000;

        else if(button_out1==1'b1) count1=count1+1;//對高電平計數

        else count1=21'h000000;

        end

        always@(posedge clk or negedge reset)

        begin

        if(!reset) count0=21'h000000;

        else if(button_out1==1'b0) count0=count0+1;//對低電平計數

        else count0=21’h000000;

        end

        //輸出

        always@(posedge clk or negedge reset

        begin

        if(!reset) button_out1_reg=1'b1;

        else if(count0==21'h1312D0) //判斷低電平信號是否符合輸出條件

        button_out1_reg=1'b0; //如果符合條件,則輸出低電平

        else if(count1==21'h1312D0) //判斷低電平信號是否符合輸出條件

        button_out1_reg=1'b1; //如果符合條件,則輸出高電平

        else button_out1_reg=button_out1_reg;

        end

        endmodule

        基于FPGA的按鍵彈跳消除電路的研究與應用



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 营山县| 平定县| 东乌珠穆沁旗| 交口县| 敖汉旗| 吴旗县| 宁津县| 平罗县| 枣强县| 琼海市| 乌苏市| 遂川县| 寿宁县| 岗巴县| 松潘县| 福贡县| 宣威市| 哈巴河县| 丰台区| 彭水| 榕江县| 嘉祥县| 柳林县| 孟村| 姚安县| 开化县| 桃园市| 沙田区| 龙门县| 大丰市| 油尖旺区| 息烽县| 丽水市| 蒲城县| 桦川县| 那坡县| 垣曲县| 芜湖县| 上犹县| 茶陵县| 德阳市|