关键词:
fpga , pld
讲过了独立按键检测,理所当然应该讲讲fpga中矩阵键盘的应用了。这个思维和电路在fpga中有所不同,在此,在此做详细解释,bingo用自己设计的成熟的代码作为案例,希望对你有用。
一、fpga矩阵键盘电路图
在fpga中的电路,与单片机雷同,如下所示:
在上电默认情况下,l[3:0] =4''b1,因为上拉了3.3v,而默认情况下h.[3:0]为低电平;一旦有某一个按键被按下,便是是的该路电路流向该按键的h,是的l检测不到电流。因此可以通过对每一行h输出的控制,来检索是哪一个按键被按下了,这也原理和单片机中一样,只是写法不一样罢了。
二、fpga矩阵键盘fsm
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----1----2----3
* | | | |
* r2 >---4----5----6----7
* | | | |
* r1 >---8----9----a----b
* | | | |
* r0 >---c----d----e----f
* | | | |
* c3 c2 c1 c0
*****************************************************/
parameter scan_idle = 3'b000;
parameter scan_jitter= 3'b001;
parameter scan_col0 = 3'b011;
parameter scan_col1 = 3'b010;
parameter scan_col2 = 3'b110;
parameter scan_col3 = 3'b100;
parameter scan_read = 3'b101;
parameter scan_jttter2= 3'b111;
reg [2:0] current_state;
reg [2:0] next_state;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
current_state
(2)模块可分为一下几个状态:
单片机在汽车电控空气悬架系统中的应用
佳能800D:最值得新手入手的入门级单反相机
最新智慧灯杆+智慧公园项目落地案例!
宽频带放大器
Foveon 传感器背后的想法
【从零开始走进FPGA】 基于PLD的矩阵键盘状态机控制
变频器的绝缘测量
(玖一冷水机)风冷式冷水机常见问题解答
福禄克8845A高精度数字万用表怎么测220V电压?
创想焊缝跟踪系统适配安川焊接机器人的应用案例
运放开环增益曲线的秘密:直流闭环,交流开环!
低静态电流对运算放大器很重要的原因
尼康将发布新款70-300mm f/4.5-5.6 ED VR全画幅镜头:约5468元
element14创新型开发工具包
央媒关注 |《“东数西算”发力》专题报道:算力商机
什么是区块链浏览器又能做什么
缺相保护开关是什么?缺相保护怎么解决?
盘点中日美三国在高端制造领域的差距
产生电弧和电火花的原因及预防措施
5G工业路由器车联网应用场景-智联物联ZR9000