新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于PLD的矩阵键盘状态机控制

基于PLD的矩阵键盘状态机控制

作者:时间:2012-03-12来源:网络收藏

讲讲FPGA中的应用了。这个思维和电路在FPGA中有所不同,在此,在此做详细解释,Bingo用自己设计的成熟的代码作为案例,希望对你有用。

本文引用地址:http://www.amcfsurvey.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 矩阵键盘

评论


相关推荐

技术专区

关闭