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

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于PLD的矩阵键盘状态机控制.

FPGA设计技术课程报告课程报告题目:基于PLD的矩阵键盘状态机控制专业:电路与系统学 号:2016080904姓名:熊文杰日 期: 2015 年 12月15 日一、FPGA矩阵键盘电路图在FPGA中的电路,与单片机电路基本相同,图如下:在上电默认情况下,L[3:0] =4b1,因为上拉了3.3V,而默认情况下H.[3:0]为低电平;一旦有某一个按键被按下,便是是的该路电路流向该按键的H,是的L检测不到电流。因此可以通过对每一行H输出的控制,来检索是哪一个按键被按下了,这也原理和单片机中一样,只是写法不一样罢了。了。二、FPGA矩阵键盘FSM1. 代码代码如下所示,采用了三段式状态机来描述矩阵键盘。本模块形式与上一张按键消抖动雷同,方便移植。/************************************************** 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, output reg [3:0] key_value );reg [19:0] cnt; always @(posedge clk or negedge rst_n)beginif(!rst_n)cnt = 0;elsecnt = cnt+1b1;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*****************************************************/parameter SCAN_IDLE = 3b000;parameter SCAN_JITTER= 3b001;parameter SCAN_COL0 = 3b011;parameter SCAN_COL1 = 3b010;parameter SCAN_COL2 = 3b110;parameter SCAN_COL3 = 3b100;parameter SCAN_READ = 3b101;parameter SCAN_JTTTER2= 3b111;reg [2:0] current_state;reg [2:0] next_state;always@(posedge clk or negedge rst_n)beginif(!rst_n)current_state = SCAN_IDLE;else if(cnt == 20hfffff)current_state = next_state;endalways@*begincase(current_state)SCAN_IDLE : if(col_data != 4b1111) next_state = SCAN_JITTER;else next_state = SCAN_IDLE;SCAN_JITTER: if(col_data != 4b1111) next_state = SCAN_COL0;else next_state = SCAN_IDLE;SCAN_COL0 : if(col_data != 4b1111) next_state = SCAN_READ;else next_state = SCAN_COL1;SCAN_COL1 : if(col_data != 4b1111) next_state = SC

文档评论(0)

wuyuetian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档