【Easy CPLD570】Verilog实现4x4矩阵按键检测.pdf

【Easy CPLD570】Verilog实现4x4矩阵按键检测.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Verilog实现4x4矩阵按键检测 1 原理图 4x4 的矩阵按键,8个IO ,检测原理是IO63 、66、67、68作为输出信号,轮流赋值高电 平,IO59、60、61、62作为输入信号,检测对应的按键按下。比如,在IO68赋值高电平时, 检测到IO59信号为高电平,则表示按键K1被按下。拨码开关用于测试。 2 CPLD 代码 module key_array ( clk_24m, reset_n, Hline, //输出4bit按键赋高电平信号。 Vline, //输入4bit按键检测信号。 ledline, //测试使用LED点灯信号 switch //测试使用按键表现选择信号,因只有8个LED ,而按键有16个,通过此信号来选 择是表现K1-K8 ,还是K9-K16 。 ); input wire clk_24m; 第1 页, 共6 页 input wire reset_n; output wire [3:0] Hline; input wire [3:0] Vline; output reg [7:0] ledline; input wire switch; /****************************************************************************** 24M 时钟分频,用于内部控制及计数等。 ******************************************************************************/ reg [14:0] count_div1; wire condition_732; //732 Hz 时钟信号。 always @ (posedge clk_24m or negedge reset_n) begin if(reset_n == 1b0) count_div1 = 15h0000; else count_div1 = count_div1 + 15h0001; end /****************************************************************************** condition_732: 732Hz时钟信号,高电平持续一个24MHz 时钟周期,其余时间为低电平。 ******************************************************************************/ assign condition_732 = count_div1[14:0]; //24MHz/2^15=732Hz 。 /****************************************************************************** 对输出IO轮流赋值,相当于分时,轮转速度要快。 ******************************************************************************/ reg [3:0] Hshift; always @ (posedge clk_24m or negedge reset_n) begin if(reset_n == 1b0) Hshift = 4h1; //初值为1,时刻都只有一个bit为高。 else if (condition_732 == 1b1) //采用732Hz时钟, 对IO赋值进行轮转。 Hshift = { Hshift[2:0],Hshift[3] }; //通过移位实现输出IO轮流赋值。 else; end assign Hline = Hshift; //赋值状态输出到按键信号线上。 /****************************************************************************** 按键输入的延迟去抖,每个按键输入检测8个24M时钟周期,都为高则表示有按键按下。 *********************************************************

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档