FPGA按键检测
来源:互联网 发布:淘宝联盟如何一店多购 编辑:程序博客网 时间:2024/05/16 19:36
开发板:黑金AX301
AX301/AX4010 开发板上共有 4 个白色按键,分别为 Reset 和 KEY1~KEY3,我们这里
要实验的就是这四个用户按键。 按键的电路设计如下
实现原理:
四个按键 KEY1~KEY4 分别对应的 FPGA 管脚情况如下:
Reset 键------PIN:N13
KEY1 键------PIN:M15
KEY2 键------PIN:M16
KEY3 键------PIN:E16
按键没有按下的时候,连接到 FPGA 管脚的按键信号的电平为高,当有按键按下的时候,连接到 FPGA 管脚的此按键信号的电平被拉低。
`timescale 1ns / 1psmodule key(clk, //rst_n,key_in, led_out);input clk;//input rst_n;input [3:0]key_in;output [3:0]led_out;wire rst_n = 1'b1;//寄存器定义reg [19:0]count;reg [3:0] key_scan;//核心程序always@(posedge clk or negedge rst_n)beginif(~rst_n)count <=20'd0;else//20ms为去抖时间beginif(count == 20'd999_999)begincount <= 20'd0;key_scan <= key_in;end else count <= count + 20'd1;endendreg[3:0]key_scan_r;always@(posedge clk)key_scan_r <= key_scan;wire [3:0]flag_key = key_scan_r[3:0]&(~key_scan[3:0]);reg [3:0]temp_led;always @ (posedge clk or negedge rst_n) //检测时钟的上升沿和复位的下降沿beginif (!rst_n) //复位信号低有效temp_led <= 4'b1111; //LED 灯控制信号输出为低, LED 灯全灭elsebeginif ( flag_key[0] ) temp_led[0] <= ~temp_led[0]; //按键 KEY1 值变化时,LED1 将做亮灭翻转if ( flag_key[1] ) temp_led[1] <= ~temp_led[1]; //按键 KEY2 值变化时,LED2 将做亮灭翻转if ( flag_key[2] ) temp_led[2] <= ~temp_led[2]; //按键 KEY3 值变化时,LED3 将做亮灭翻转if ( flag_key[3] ) temp_led[3] <= ~temp_led[3]; //按键 KEY4 值变化时,LED4 将做亮灭翻转endendassign led_out[0] = temp_led[0];assign led_out[1] = temp_led[1];assign led_out[2] = temp_led[2];assign led_out[3] = temp_led[3];endmodule
操作结果:
每 20ms 程序会检查一下按键的状态,如果这次检测为低电平而且上次检测为高电平的话,说明有按键按下,相对应的 LED 灯反转。一般按键按下时的按键抖动为低于 20ms 的脉冲信号,这些高频脉冲信号会被滤除。提高了按键的可靠性。
按一下按键 Reset,LED0 变亮, 再按一下按键 Reset,LED0 熄灭。实验结果是否跟我们
的设计的思路一样。
阅读全文
0 0
- FPGA按键检测
- FPGA 按键去抖
- FPGA 按键控制数码管
- 检测按键
- 检测按键
- 按键检测
- 按键检测
- 按键检测
- FPGA按键消抖代码
- FPGA按键消抖模块
- FPGA 独立按键消抖
- FPGA Verilog按键消抖
- FPGA的边沿检测
- FPGA的边沿检测
- fpga检测上升沿
- FPGA的边沿检测
- FPGA的边沿检测
- STM32 按键检测
- 单例模式
- jdbc中的class.forName详解
- java分页的写法
- LeetCode(35)--Search Insert Position
- java 8 Hashmap深入解析 —— put get 方法源码
- FPGA按键检测
- 旋转数组的最小数字java实现
- 蓝桥杯 未名湖的烦恼
- Java知识点记录
- 子节对齐
- 研究apache出品的DBUtilsResultSetHandler的子类 附带c3p0连接池
- Asp.Net Core-项目结构
- 一步一步看清动态规划----背包问题(java解)
- A