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

【FPGA开发】FPGA点亮LED灯(增加按键暂停恢复/复位操作)

目录

一、VScode下载安装

1.1 官网下载

1.2 安装插件

二、LED流水灯点亮

2.1 任务说明

2.2 新建项目

2.3 创建Verilog文件添加至顶层实体

2.4 引脚分配 

2.5 选择烧录器

2.6 添加烧录文件&下载

2.7 烧录结果

三、增加按键操作

3.1 按键暂停和恢复功能:

3.2 引脚分配:

3.3 完整代码: 

3.4 烧录结果 


一、VScode下载安装

1.1 官网下载

在官网点击进行下载:Visual Studio Code - Code Editing. Redefined

官网速度比较慢,要使用国内镜像,本人之前已经下载安装完成了,所以可以参考博客:

VScode下载安装及使用教程_vscode qq浏览器下载-CSDN博客https://blog.csdn.net/qq_35697978/article/details/120541378?ops_request_misc=%257B%2522request%255Fid%2522%253A%25227296b49de1d5aaed030289223ac2ff33%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=7296b49de1d5aaed030289223ac2ff33&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_positive~default-1-120541378-null-null.nonecase&utm_term=VScode%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85&spm=1018.2226.3001.4450

1.2 安装插件

在扩展处搜索下载安装 Verilog-HDL/SystemVerilog 插件,实现Verilog代码的语法高亮/自动补全

二、LED流水灯点亮

2.1 任务说明

在DE2-115开发板上,用Verilog设计一个LED流水灯实验:用6个LED完成周期为1秒的跑马灯效果

2.2 新建项目

建立项目工程名

然后一直点击NEXT进入开发板选型界面

最后点击finish

这是创建好的界面

2.3 创建Verilog文件添加至顶层实体

编译代码如下:

module LED_Flow #(parameter CLK_FREQ = 50_000_000, parameter LED_NUM = 6)(input               sys_clk,      // 系统时钟 (50 MHz)input               sys_rst_n,    // 复位信号,低电平有效output reg [5:0]    led           // 6 个 LED 输出
);// 定义计数器reg [25:0] cnt;                   // 26 位计数器,用于计时 1/6 秒wire add_cnt;                     // 计数器使能信号wire end_cnt;                     // 计数器结束信号// 定义 LED 状态计数器reg [2:0] led_state;              // 3 位计数器,用于控制 LED 状态wire add_led_state;               // LED 状态计数器使能信号wire end_led_state;               // LED 状态计数器结束信号// 计算 1/6 秒的计数值localparam CNT_MAX = CLK_FREQ / LED_NUM - 1; // 1/6 秒的计数值// 主计数器逻辑always @(posedge sys_clk or negedge sys_rst_n) beginif (!sys_rst_n) begincnt <= 26'b0;            // 复位时清零计数器endelse if (add_cnt) beginif (end_cnt) begincnt <= 26'b0;        // 计数达到最大值时清零endelse begincnt <= cnt + 1'b1;   // 计数器加 1endendend// LED 状态计数器逻辑always @(posedge sys_clk or negedge sys_rst_n) beginif (!sys_rst_n) beginled_state <= 3'b0;       // 复位时清零 LED 状态计数器endelse if (add_led_state) beginif (end_led_state) beginled_state <= 3'b0;   // 计数达到最大值时清零endelse beginled_state <= led_state + 1'b1; // LED 状态计数器加 1endendend// LED 输出逻辑always @(posedge sys_clk or negedge sys_rst_n) beginif (!sys_rst_n) beginled <= 6'b000001;        // 复位时点亮第一个 LEDendelse begincase (led_state)3'b000: led <= 6'b000001; // 第 1 个 LED 点亮3'b001: led <= 6'b000010; // 第 2 个 LED 点亮3'b010: led <= 6'b000100; // 第 3 个 LED 点亮3'b011: led <= 6'b001000; // 第 4 个 LED 点亮3'b100: led <= 6'b010000; // 第 5 个 LED 点亮3'b101: led <= 6'b100000; // 第 6 个 LED 点亮default: led <= 6'b000001; // 默认点亮第 1 个 LEDendcaseendend// 计数器使能信号assign add_cnt = 1'b1;            // 计数器始终使能assign end_cnt = (cnt == CNT_MAX); // 计数达到 1/6 秒时结束// LED 状态计数器使能信号assign add_led_state = end_cnt;  // 主计数器结束时,LED 状态计数器加 1assign end_led_state = (led_state == LED_NUM - 1); // LED 状态计数器达到最大值时结束endmodule

另存为.v文件(名称与工程名一致)

选择Files,显示LED.v文件

右键点击文件,将其设置为顶层实体 

进行编译

2.4 引脚分配 

分配引脚如下: 

2.5 选择烧录器

点击选择烧录器

选择USB-Blaster [USB-0]

PS:如果遇到无法识别USB接口的情况,即只显示No-Hardware,可参考一下博客进行解决:

使用Altera综合工具Quartus II下载到FPGA时无法识别USB-Blaster问题_fpga usb blaster 禁止-CSDN博客https://blog.csdn.net/l2563898960/article/details/80309089

2.6 添加烧录文件&下载

点击LED.sof文件,点击open 

 

点击第一项编程与配置,然后开始下载 

 下载成功

2.7 烧录结果

三、增加按键操作

3.1 按键暂停和恢复功能:

按下按键时流水灯停止工作,松开按键流水灯继续工作

always @(posedge clk or negedge rst_n) beginif (!rst_n) beginrunning <= 1'b1;  // 初始状态为运行end else if (pause) beginrunning <= ~running;  // 按键按下时切换运行状态end
end

3.2 引脚分配:

3.3 完整代码: 

module led_flow (input wire clk,          // 时钟信号input wire rst_n,        // 复位信号,低电平有效input wire pause,        // 暂停按键,高电平有效output reg [5:0] leds    // 6个LED输出
);reg [25:0] counter;      // 计数器,用于生成1秒的时钟周期reg [2:0] state;         // 状态寄存器,用于控制LED流水灯的状态reg running;            // 运行状态标志,1表示运行,0表示暂停// 时钟分频,生成1秒周期always @(posedge clk or negedge rst_n) beginif (!rst_n) begincounter <= 26'd0;end else if (running) beginif (counter == 26'd49_999_999) begincounter <= 26'd0;end else begincounter <= counter + 1;endendend// 状态机控制LED流水灯always @(posedge clk or negedge rst_n) beginif (!rst_n) beginstate <= 3'd0;leds <= 6'b000001;  // 初始状态,第一个LED亮end else if (running && counter == 26'd49_999_999) begincase (state)3'd0: begin leds <= 6'b000010; state <= 3'd1; end3'd1: begin leds <= 6'b000100; state <= 3'd2; end3'd2: begin leds <= 6'b001000; state <= 3'd3; end3'd3: begin leds <= 6'b010000; state <= 3'd4; end3'd4: begin leds <= 6'b100000; state <= 3'd5; end3'd5: begin leds <= 6'b000001; state <= 3'd0; enddefault: begin leds <= 6'b000001; state <= 3'd0; endendcaseendend// 按键暂停和恢复功能always @(posedge clk or negedge rst_n) beginif (!rst_n) beginrunning <= 1'b1;  // 初始状态为运行end else if (pause) beginrunning <= ~running;  // 按键按下时切换运行状态endendendmodule

3.4 烧录结果 

相关文章:

【FPGA开发】FPGA点亮LED灯(增加按键暂停恢复/复位操作)

目录 一、VScode下载安装 1.1 官网下载 1.2 安装插件 二、LED流水灯点亮 2.1 任务说明 2.2 新建项目 2.3 创建Verilog文件添加至顶层实体 2.4 引脚分配 2.5 选择烧录器 2.6 添加烧录文件&#xff06;下载 2.7 烧录结果 三、增加按键操作 3.1 按键暂停和恢复功能&…...

companion object和object 从kotlin转java分析

说明 companion object 中 companion类中的方法是普通的方法 在外部类中生成静态变量&#xff0c;静态companion 对象 object MyClass2 中 类中方法是普通方法 在MyClass2中生成静态变量&#xff0c;静态MyClass2对象&#xff0c; 一 companion object 使用 kotlin转java pa…...

Spring MVC 执行流程:一个请求在 Spring MVC 中是如何执行的?

当用户发送一个 HTTP 向 Spring MVC 应用&#xff0c;该请求在 Spring MVC 的执行流程如下&#xff1a; 当用户向 Spring MVC 发起一个 HTTP 请求&#xff0c;该请求会被 Dispatcher Servlet&#xff08;前端控制器&#xff09;拦截&#xff1b;DispatcherServlet 调用 Handler…...

三主热备架构

1.要求 角色主机名软件IP地址用户client192.168.72.90keepalivedvip192.168.72.100masterserverAkeepalived, nginx192.168.72.30backupserverBkeepalived, nginx192.168.72.31backupserverCkeepalived, nginx192.168.72.32webtomcat1tomcat192.168.72.41webtomcat2tomcat192.1…...

HTML 表单处理进阶:验证与提交机制的学习心得与进度(二)

步步为营&#xff1a;表单提交机制全面解析 提交方式详解 GET 与 POST 对比 在 HTML 表单提交中&#xff0c;GET 和 POST 是最为常用的两种提交方式&#xff0c;它们在诸多方面存在显著差异。 安全性&#xff1a;GET 方式将表单数据附加在 URL 的查询字符串中&#xff0c;数…...

JavaScript | 爬虫逆向 | 语法基础| 01

一、摘要 实践是最好的导师 二、环境配置 在开始之前&#xff0c;需要确保你的计算机上已经安装了 Node.js。Node.js 是一个开源的、跨平台的 JavaScript 运行时环境&#xff0c;它允许你在服务器端运行 JavaScript 代码。 1. 下载 安装地址&#xff1a;https://nodejs.org…...

python解决多个矢量点图层合并为一个点图层

1、解决矢量点图层的合并 2、解决多个点图层分别合并为不同图层&#xff08;一个文件夹下所有点图层合并为一个图层&#xff0c;以下代码为两个文件夹&#xff0c;分别合并为两个总的图层&#xff09; import geopandas as gpd import os import pandas as pddef merge_shapef…...

VL开源模型实现文本生成图片

一、 基础知识 根据描述生成图片的视觉-语言模型&#xff08;Vision-Language Models, VL 模型&#xff09;是近年来多模态生成领域的热点研究方向。这些模型能够根据自然语言描述生成高质量的图像&#xff0c;广泛应用于艺术创作、设计辅助、虚拟场景构建等领域。 1 根据描述…...

字节跳动实习生主导开发强化学习算法,助力大语言模型性能突破

目录 禹棋赢的背景与成就 主要成就 DAPO算法的技术细节 算法优势 禹棋赢的研究历程 关键时间节点 字节跳动的“Top Seed人才计划” 计划特点 小编总结 在大模型时代&#xff0c;经验不再是唯一的衡量标准&#xff0c;好奇心、执行力和对新技术的敏锐洞察力成为推动技术…...

九、JavaScript作用域、预解析

一、JavaScript作用域 1.JavaScript作用域 ①代码名字&#xff08;变量&#xff09;在某个范围内起作用和效果 目的是为了提高程序的可靠性更重要的是减少命名冲突 ②js的作用域&#xff08;es6&#xff09;之前&#xff1a;全局作用域 局部作用域 ③全局作用域&#xff1a;整…...

前后端+数据库的项目实战:hbu迎新网-较复杂(下)javaweb

目录 十一、实现对内容的富文本编辑&#xff08;换行、图片颜色等等样式&#xff09; &#xff08;1&#xff09;下载富文本编辑器&#xff0c;引入资源 &#xff08;2&#xff09;将原项目的内容部分替换为富文本编辑器 1、替换添加页面 2、替换修改页面&#xff08;和添…...

Java-模块二-2

整数类型 byte&#xff1a;在 Java 中占用8位&#xff08;1字节&#xff09;&#xff0c;因此它的取值范围是从 -128 到 127。这是最小的整数类型&#xff0c;适合用于节省空间的情况。 short&#xff1a;这种类型的大小是16位&#xff08;2字节&#xff09;&#xff0c;允许的…...

Redis、Memcached应用场景对比

环境 Redis官方网站&#xff1a; Redis - The Real-time Data Platform Redis社区版本下载地址&#xff1a;Install Redis | Docs Memcached官方网站&#xff1a;memcached - a distributed memory object caching system Memcached下载地址&#xff1a;memcached - a dis…...

【单片机通信技术应用——学习笔记三】液晶屏显示技术,取模软件的应用

一、液晶显示技术简介 1.RGB信号线 RGB是一种色彩模式&#xff0c;是工业界的一种颜色标准&#xff0c;是通过红&#xff08;R&#xff09;、绿&#xff08;G&#xff09;、蓝&#xff08;B&#xff09;三个颜色通道的变化&#xff0c;以及它们相互之间的叠加来得到各式各样的…...

MySQL颠覆版系列————MySQL新特性(开启数据库的新纪元)上篇

文章目录 前言一、窗口函数&#xff08;Window Functions&#xff09;1.1 窗口函数概念1.2 常见的窗口函数 二、公用表表达式&#xff08;Common Table Expressions, CTEs&#xff09;2.1 公用表表达式的概念2.2 常见的公用表表达式 三、JSON增强3.1 JSON增强的概念3.2 常见的J…...

MySQL 调优:查询慢除了索引还能因为什么?

文章目录 情况一&#xff1a;连接数过小情况二&#xff1a;Buffer Pool 太小 MySQL 查询慢除了索引还能因为什么&#xff1f;MySQL 查询慢&#xff0c;我们一般也会想到是因为索引&#xff0c;但除了索引还有哪些原因会导致数据库查询变慢呢&#xff1f; 以下以 MySQL 中一条 S…...

Java实习生面试题(2025.3.23 be)

一、v-if与v-show的区别 v-show 和 v-if 都是 Vue 中的条件渲染指令&#xff0c;它们的主要区别在于渲染策略&#xff1a;v-if 会根据条件决定是否编译元素&#xff0c;而 v-show 则始终编译元素&#xff0c;只是通过改变 CSS 的 display 属性来控制显示与隐藏。 二、mybatis-…...

如何在百度搜索上删除与自己名字相关的资料

个人信息的网络足迹如同一张无形的网&#xff0c;将我们与世界的每一个角落紧密相连。然而&#xff0c;当某些与自己名字相关的资料不再希望被公众轻易检索到时&#xff0c;如何在百度搜索中有效“隐身”&#xff0c;成为了一个亟待解决的问题。面对复杂多变的网络环境&#xf…...

【C语言】C语言使用随机数srand,rand

C语言使用随机数srand,rand 可直接编译使用&#xff1a; #include <stdio.h> #include <time.h> #include <stdlib.h> #include <unistd.h>/* c语言提供的跟随机数有关的函数:int rand(void);返回值:产生的随机数void srand(unsiqned int seed);参数…...

为容器指定固定IP地址

文章目录 为容器指定固定IP地址可以通过以下步骤实现&#xff0c;适用于Docker环境&#xff1a;**方法一&#xff1a;使用Docker自定义桥接网络****方法二&#xff1a;Docker Compose配置****关键注意事项** 为容器指定固定IP地址可以通过以下步骤实现&#xff0c;适用于Docker…...

kube-score K8S Yaml静态代码分析工具详解

kube-score 是一款专注于 Kubernetes 配置文件的静态代码分析工具&#xff0c;旨在通过自动化检查帮助用户识别资源配置中的潜在问题&#xff0c;并遵循最佳实践以提升集群的安全性、稳定性和性能。以下是其核心功能、使用方法和应用场景的详细解析&#xff1a; 一、核心功能与…...

Spring Boot 整合 Elasticsearch 实践:从入门到上手

引言 Elasticsearch 是一个开源的分布式搜索引擎&#xff0c;广泛用于日志分析、搜索引擎、数据分析等场景。本文将带你通过一步步的教程&#xff0c;在 Spring Boot 项目中整合 Elasticsearch&#xff0c;轻松实现数据存储与查询。 1. 创建 Spring Boot 项目 首先&#xff…...

使用外部事件检测接入 CDH 大数据管理平台告警

CDH 大数据管理平台 CDH&#xff08;Cloudera Distribution Hadoop&#xff09;是一个企业级的大数据平台&#xff0c;由 Cloudera 公司提供&#xff0c;它包含了 Apache Hadoop 生态系统中的多种开源组件&#xff0c;并对其进行了优化和集成&#xff0c;以支持大规模数据存储…...

RabbitMQ八股文

RabbitMQ RabbitMQ 核心概念与组件1. RabbitMQ 核心组件及其作用1.1 生产者&#xff08;Producer&#xff09;1.2 交换机&#xff08;Exchange&#xff09;1.3 队列&#xff08;Queue&#xff09;1.4 绑定&#xff08;Binding&#xff09;1.5 消费者&#xff08;Consumer&#…...

MongoDB(五) - Studio 3T 下载与安装教程

文章目录 前言一、Studio 3T 简介二、下载及安装1. 下载2. 安装 三、使用Studio 3T连接MongoDB 前言 本文旨在全面且深入地为你介绍 Studio 3T。从其丰富的功能特性、跨平台使用的便捷性&#xff0c;到详细的下载安装步骤&#xff0c;以及关键的连接 MongoDB 操作&#xff0c;…...

2025高频面试算法总结篇【链表堆栈队列】

文章目录 直接刷题链接直达反转链表环形链表判断一个序列是否为合理的出栈顺序最长有效括号旋转链表复杂链表的复制约瑟夫环问题滑动窗口最大值 直接刷题链接直达 反转链表 206. 反转链表 环形链表 141. 环形链表142. 环形链表 II 判断一个序列是否为合理的出栈顺序 946.…...

Java主流开发框架之请求响应常用注释

1.RestController 标记一个类为 REST 控制器&#xff0c;处理 HTTP 请求并直接返回数据&#xff08;如 JSON/XML&#xff09;&#xff0c;而不是视图&#xff08;如 HTML&#xff09;&#xff0c;一般是放在类的上边 RestController public class UserController {GetMapping…...

汽车制造MES

一、整体生产工序 整车的车间主要分为4个部分&#xff1a;冲压、焊装、涂装、总装、整车入库 系统架构 二、车间概括 1.冲压车间 2.焊装车间 3.涂装车间 4.总装车间 1.整车装配的部件都要可追溯、数据实时性要求高、涉及分装与总装的协调、物流配送的协调、质量批处理的协调、…...

LeetCode 2643.一最多的行:模拟(更新答案)

【LetMeFly】2643.一最多的行&#xff1a;模拟(更新答案) 力扣题目链接&#xff1a;https://leetcode.cn/problems/row-with-maximum-ones/ 给你一个大小为 m x n 的二进制矩阵 mat &#xff0c;请你找出包含最多 1 的行的下标&#xff08;从 0 开始&#xff09;以及这一行中…...

固定翼无人机姿态和自稳模式

固定翼无人机的‌姿态模式&#xff08;Attitude/Angle Mode&#xff09;‌和‌自稳模式&#xff08;Stabilize Mode&#xff09;‌是两种常见的飞行控制模式&#xff0c;它们在飞控系统介入程度、操作逻辑及适用场景上有显著区别。以下是两者的详细对比及使用指南&#xff1a; …...