新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于PLD的矩陣鍵盤狀態(tài)機(jī)控制

基于PLD的矩陣鍵盤狀態(tài)機(jī)控制

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

講講FPGA中的應(yīng)用了。這個(gè)思維和電路在FPGA中有所不同,在此,在此做詳細(xì)解釋,Bingo用自己設(shè)計(jì)的成熟的代碼作為案例,希望對(duì)你有用。

本文引用地址:http://butianyuan.cn/article/190666.htm

一、FPGA電路圖

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

61.jpg

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

二、FPGAFSM

1. 代碼

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

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

* 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

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


上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: PLD 矩陣鍵盤

評(píng)論


相關(guān)推薦

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

關(guān)閉