FPGA实战篇(按键控制LDE实验)

1.按键简介

        按键开关是一种电子开关,属于电子元器件类。我们的开发板上有两种按键开关:第一种是本实验所使用的轻触式按键开关,简称轻触开关。使用时以向开关的操作方向施加压力使内部电路闭合接通,当撤销压力时开关断开,其内部结构是靠金属弹片受力后发生形变来实现通断的;第二种是自锁按键 ,自锁按键第一次按下后保持接通,即自锁,第二次按下后,开关断开,同时开关按钮 弹出来,开发板上的电源键就是这种开关。
2.实验任务
        本节实验任务是使用底板上的 PL_KEY0 PL_KEY1 按键来控制底板上的 PL_LED0 PL_LED1 两个LED 的闪烁方式。没有按键按下时,两个 LED 保持常亮;如果按键 0 按下,则两个 LED 交替闪烁;如果按键 1 按下,则两个 LED 同时闪烁。
3. 硬件设计
        底板上按键的原理图如下图所示:

        PL 端的按键没有按下时,对应的 IO 端口为高电平;当按键按下时,对应的 IO 端口变为低电平。
        本实验的管脚分配如下表所示:
4.程序设计
        按键控制 LED 系统框图如下图所示:
        计数器对 50MHz 时钟进行计数,从而达到计时的目的。计数器在每次计时到 0.5 秒的时候,就改变 LED 的显示状态,然后清零并重新开始计数。
        然后根据两个按键(KEY0 KEY1 )的状态,在不同的 LED 状态下,分别设置 LED 的显示模式(是同时闪烁,或者交替闪烁)。
        顶层模块代码如下:
1 module key_led(
2 input sys_clk ,
3 input sys_rst_n ,
4 
5 input [1:0] key ,
6 output reg [1:0] led
7 );
8 
9 //reg define
10 reg [24:0] cnt;
11 reg led_ctrl;
12 
13 //*****************************************************
14 //** main code
15 //*****************************************************
16 
17 //计数器
18 always @ (posedge sys_clk or negedge sys_rst_n) begin
19 if(!sys_rst_n)
20 cnt <= 25'd0;
21 else if(cnt < 25'd2500_0000) //计数 500ms
22 cnt <= cnt + 1'b1;
23 else
24 cnt <= 25'd0;
25 end
26 
27 //每隔 500ms 就更改 LED 的闪烁状态
28 always @ (posedge sys_clk or negedge sys_rst_n) begin
29 if(!sys_rst_n)
30 led_ctrl <= 1'b0;
31 else if(cnt == 25'd2500_0000)
32 led_ctrl <= ~led_ctrl;
33 end
34 
35 //根据按键的状态以及 LED 的闪烁状态来赋值 LED
36 always @ (posedge sys_clk or negedge sys_rst_n) begin
37 if(!sys_rst_n)
38 led <= 2'b11;
39 else case(key)
40 2'b10 : //如果按键 0 按下,则两个 LED 交替闪烁
41 if(led_ctrl == 1'b0)
42 led <= 2'b01;
43 else
44 led <= 2'b10;
45 2'b01 : //如果按键 1 按下,则两个 LED 同时闪烁
46 if(led_ctrl == 1'b0)
47 led <= 2'b11;
48 else
49 led <= 2'b00;
50 2'b11 : //如果两个按键都未按下,则两个 LED 都保持点亮
51 led <= 2'b11;
52 default: ;
53 endcase
54 end
55 
56 endmodule
        代码的第 18 行的 always 块用于产生计数器,计时 500ms 。代码的第 28 行的 always 块功能是每隔 500ms就给出 led 的闪烁状态控制信号。代码第 36 行的 always 块使用了一个 case 语句,来根据当前按键的输入值和 led 闪烁状态控制信号,来进行两个 led 的赋值。如果按键 1 按下,则两个 LED 交替闪烁;如果按键 0按下,则两个 LED 同时亮灭交替;如果两个按键都未按下,则两个 LED 都保持点亮。
5.下载验证
        连接开发板的电源和下载器,并打开电源开关。在工程编译之后,将生成的 bit 文件下载到开发板中。 下载完成之后,底板上两个 PL LED 处于点亮状态。然后按下 PL_KEY0 ,可以看到两个 PL LED 交替闪烁; 按下 PL_KEY1 ,可以看到两个 PL LED 同时闪烁。如下图所示:
由于上篇文章已经详细的给出了创建工程的步骤,本文章不再重复概述。
注意:
1.代码中,led之所以定义为reg变量,是因为要在时序逻辑中赋值,不然就只能用assign来赋值,比较麻烦
2.指定管脚既可以用图形化界面,如上篇文章,也可以直接编写文件。在该处右键,选择增加新文件,再选择约束文件。创建完文件后,打开该文件,在文件中编写约束代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/485862.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.模块化技术之子程序

总学习目录请点击下面连接 SAP ABAP开发从0到入职&#xff0c;冷冬备战-CSDN博客 目录 ​编辑 1.模块化基础和概述 使用模块化有什么好处 两大类模块化技术 程序局部的模块化 SAP系统内全局模块化 封装有什么好处&#xff1f; 2.子程序模块化 三种传递类型 子程序结构…

策略模式实战 - 猜拳游戏

**可以整体的替换一套算法&#xff0c;这就是策略模式。**这样对于同一个问题&#xff0c;可以有多种解决方案——算法实现的时候&#xff0c;可以通过策略模式来非常方便的进行算法的整体替换&#xff0c;而各种算法是独立封装好的&#xff0c;不用修改其内部逻辑。 具体的实…

新书速览|循序渐进Node.js企业级开发实践

《循序渐进Node.js企业级开发实践》 1 本书内容 《循序渐进Node.js企业级开发实践》结合作者多年一线开发实践&#xff0c;系统地介绍了Node.js技术栈及其在企业级开发中的应用。全书共分5部分&#xff0c;第1部分基础知识&#xff08;第1&#xff5e;3章&#xff09;&#xf…

通过 FRP 实现 P2P 通信:控制端与被控制端配置指南

本文介绍了如何通过 FRP 实现 P2P 通信。FRP&#xff08;Fast Reverse Proxy&#xff09;是一款高效的内网穿透工具&#xff0c;能够帮助用户突破 NAT 和防火墙的限制&#xff0c;将内网服务暴露到公网。通过 P2P 通信方式&#xff0c;FRP 提供了更加高效、低延迟的网络传输方式…

游戏发布AppStore平台

首先&#xff0c;要注册一个开发者账号。这里不多说了&#xff0c;下载官方app“Developer”&#xff0c;然后买个能发布的账号&#xff0c;个人&#x1f4b2;99的就行。&#xff08;其实还有点麻烦&#xff0c;我的好像是人脸识别后出问题了&#xff0c;反正遇到问题找苹果官方…

【Linux系列】AWK 使用指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【算法】模拟

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;替换所有的问号 二&#xff1a;提莫攻击 三&#xff1a;z字形变换 四&#xff1a;外观…

Ubuntu环境安装RabbitMQ

1.安装Erlang RabbitMq需要Erlang语⾔的⽀持&#xff0c;在安装rabbitMq之前需要安装erlang # 更新软件包 sudo apt-get update # 安装 erlang sudo apt-get install erlang 查看erlang版本 : erl 退出命令:halt(). 2. 安装RabbitMQ # 更新软件包 sudo apt-get update # 安装 …

【STM32】定时器 —— 输出比较PWM

使用的单片机机型为STM32F103C8T6 文章目录 PWM输出比较编程实例输出比较呼吸灯舵机转向PWM控制直流电机 PWM 对于5V电路来说&#xff0c;输出只有高电平5V和低电平0V&#xff0c;控制LED灯就是点亮和熄灭&#xff0c;但如果想要控制其亮度呢&#xff1f;这就需要PWM PWM PWM…

Anaconda 下安装OpenCV 4.10.0

大家也可以使用pip安装。 pip install opencv-python4.10.0 这里使用conda安装 conda install opencv4.10.0 import cv2 print(cv2.__version__)

深入探索 C++ 类型转换的奥秘

目录 1. C语言中的类型转换 2.C的类型转换 &#xff08;1&#xff09;static_cast &#xff08;2&#xff09; dynamic_cast &#x1f60a;&#x1f60a;static_cast和dynamic_cast在面对继承和多态的父子类强转的区别&#xff1a; 1.static_cast 和 继承关系中的强转 …

量产小妙招---KdTreeFLANN的使用

1 概念 KDTreeFLANN是一种结合了k-d树&#xff08;k-dimensional tree&#xff09;数据结构和FLANN&#xff08;Fast Library for Approximate Nearest Neighbors&#xff09;算法库的技术&#xff0c;主要用于高效地进行最近邻搜索等操作。 KdTreeFLANN是Point Cloud Library …

62 基于单片机的智能饮水机

所有仿真详情导航&#xff1a; PROTEUS专栏说明-CSDN博客 目录 一、主要功能 二、硬件资源 三、主程序编程 四、资源下载 一、主要功能 基于51单片机&#xff0c;采用DS1302时钟模块读取时间&#xff0c;DS18B20温度传感器检测时间&#xff0c;超声波检测&#xff0c;如果…

制造业数据集成案例分享:3小时内实现MySQL到MySQL数据对接

ZZ刷新生产用料清单四化库存-制造一处-3小时&#xff1a;MySQL到MySQL数据集成案例分享 在现代制造业中&#xff0c;实时、准确的数据流动是确保生产效率和资源优化的关键。本文将分享一个实际运行的系统对接集成案例——“ZZ刷新生产用料清单四化库存-制造一处-3小时”&#…

大数据新视界 -- 大数据大厂之 Hive 临时表与视图:灵活数据处理的技巧(上)(29 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

QT入门看这一篇就够了——超详细讲解(40000多字详细讲解,涵盖qt大量知识)

目录 一、Qt概述 1.1 什么是Qt 1.2 Qt的发展史 1.3 Qt的优势 1.4 Qt版本 1.5 成功案例 二、创建Qt项目 2.1 使用向导创建 2.2 一个最简单的Qt应用程序 2.2.1 main函数中 2.2.2 类头文件 2.3 .pro文件 2.4 命名规范 2.5 QtCreator常用快捷键 三、Qt按钮小程序 …

【k8s】创建基于sa的token的kubeconfig

需求 创建一个基于sa的token的kubeconfig文件&#xff0c;并用这个文件来访问集群。 具体创建sa 和sa的token请参考文章: 【k8s】给ServiceAccount 创建关联的 Secrets-CSDN博客 创建sa apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata:namespace: jtkjdevnam…

STM32F103单片机使用STM32CubeMX新建IAR工程步骤

打开STM32CubeMX软件&#xff0c;选择File 选择新建工程 在打开的窗口输入单片机型号 在右下角选择单片机型号&#xff0c;然后点右上角 start project&#xff0c;开始新建工程。 接下来设置调试接口&#xff0c;在左边System Core中选择 SYS&#xff0c;然后在右右边debu…

MATLAB 最小二乘平面拟合(90)

MATLAB 最小二乘平面拟合(90) 一、算法介绍二、算法实现1.代码2.结果:一、算法介绍 平面方程: ax+by+cz+d = 0 执行任务:读取一组点云(这里用自定义生成的平面模拟点云代替,在其中添加了噪声来模拟真实的数据),使用最小二乘拟合平面,来输出平面参数,并可视化显示拟…

Redis面试专题-持久化

目录 前言 持久化相关知识 1.三种持久化机制 2.RDB持久化 3.深入剖析一下RDB持久化过程 4.AOF持久化 5.RDB和AOF对比​编辑 面试题 1.redis持久化机制有哪些&#xff1f; 2.那仔细讲讲你对他们的理解 3.你刚刚说AOF的文件很大&#xff0c;那AOF文件会越来越大&#xf…