当前位置: 首页 > news >正文

ZYNQ-按键消抖

文章目录

  • 基础知识
  • 管脚约束
  • 代码

基础知识

  • 数值表示:位宽进制值,如 2d0 表示 2 位宽十进制 0,这里的位宽是 bit, 1 bit = 8 byte
  • input 和 output 默认是 wire 类型
  • 关于 管脚约束中 I/O std 的选择:在这里插入图片描述

管脚约束

在这里插入图片描述

代码

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: LWX 
// 
// Create Date: 2025/08/03 17:38:28
// Design Name: 
// Module Name: key
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////module key_module(input clk,   output reg LED,input key );reg [1:0] mode = 2'd0;       // 2bit 十进制 0reg [19:0] cnt = 20'd0;reg [1:0] key_r = 2'b11;       // 接收按键状态的 2 位 regreg key_value = 0;      // 按键值always@(posedge clk) begin      // 按键信号同步时钟key_r[1] <= key_r[0];key_r[0] <= key;endwire key_negedge = key_r[1] & ~key_r[0];    // 按下为 1,弹起为 0,标志按键状态的检测,只有前一刻为 1,这一刻为 0 才是 按下always@(posedge clk) begincase (mode)2'd0 : begin            // 初始状态cnt <= 20'd0;if (key_negedge)   mode <= 2'd1;end 2'd1: beginif (cnt < 20'd1000000) begin        // 计数中cnt <= cnt + 1'b1;endelse beginif (key == 0) begin             // 如果按键按下且 20s 之内还是按下key_value <= ~key_value;mode <= 2'd2;endelsemode <= 2'd0;                            // 如果按键松开,回到初始状态endend2'd2: begin                             // 等待按键松开if (key == 1)mode <= 2'd0;enddefault: mode <= 2'd0;endcaseendalways@(posedge clk) beginLED <= key_value;endendmodule
http://www.dtcms.com/a/313840.html

相关文章:

  • labview解析S7协议
  • Neo4j 社区版 Mac 安装教程
  • Django集成图片验证码功能:基于django-simple-captcha实现
  • 数据结构----排序
  • EdgeView for macOS:解决图像管理痛点的利器
  • c# 属性操作(2)
  • PyCharm代码规范与代码格式化插件安装与使用:pylint和autopep8
  • javacc学习笔记 01、JavaCC本地安装与测试
  • C++-异常
  • Go语言实战案例:编写一个简易聊天室服务端
  • 从零开始的云计算生活——项目实战
  • 【Pytorch✨】LSTM04 l理解长期记忆和短期记忆
  • 计算机视觉(1)-图像采集设备选型全景表(工业 + 医疗 + 车载)
  • 编程算法:技术创新与业务增长的核心驱动力
  • 【Spring AI快速上手 (一)】ChatModel与ChatCilent构建对话
  • Rust:如何开发32位的DLL动态库
  • 单向链表(补充)与linux虚拟机网络配置
  • JS--获取事件的子元素与父元素
  • ZooKeeper 深度实践:从原理到 Spring Boot 全栈落地
  • 【unitrix】 7.1 二进制位加法(bit_add.rs)
  • 哪些第三方 Crate 可以直接用?
  • Mac桌面仿制项目--让ai一句话生成的
  • Qt 使用QtXlsx库处理Excel文件
  • Druid学习笔记 01、快速了解Druid中SqlParser实现
  • 赛灵思ZYNQ官方文档UG585自学翻译笔记:General Purpose I/O (GPIO)通用输入 / 输出
  • Linux文件权限管理全解
  • Java Getter 与 C# Getter 比较
  • WPF中引用其他元素各种方法
  • AUTOSAR AR-Explorer正式发布
  • C语言的数组与字符串