FPGA第 13 篇,使用 Xilinx Vivado 创建项目,点亮 LED 灯,Vivado 的基本使用(点亮ZYNQ-7010开发板的LED灯)
前言
在FPGA设计中,Xilinx Vivado软件是一款功能强大的设计工具,它不仅支持硬件描述语言(HDL)的开发,还提供了丰富的图形化设计界面,方便用户进行硬件设计、调试和测试。这里我们将详细介绍,如何使用Vivado软件点亮ZYNQ-7010开发板上的LED灯,涵盖从工程创建到代码实现的全过程。
一. 环境准备
在开始之前,请确保您已安装以下软件和工具。请看
- Xilinx Vivado Design Suite
- ZYNQ-7010开发板
- USB JTAG调试器(如Xilinx Platform Cable USB)
二. 创建工程
创建 Vivado 工程,请看
1. 打开和创建
打开Vivado,点击“Create New Project”,点击下一步。


2. 名称和位置
在“Project Name”框中输入项目名称,选择一个合适的存储位置,并点击“Next”。

3. 选择和同意
在“Project Type”中选择“RTL Project”,勾选“Do not specify sources at this time”,然后点击“Next”。

这里众多选项,分别代表不同意思,请看
新项目
项目类型
指定要创建的项目类型。
RTL项目
您将能够添加源文件、在IP集成器中创建模块设计、生成IP、运行RTL分析、综合、实现、设计规划和分析。
☐ 此时不指定源文件后综合项目
您将能够添加源文件、查看设备资源、运行设计分析、规划和实现。
☐ 此时不指定源文件I/O规划项目
不指定设计源文件。您将能够查看部件/封装资源。导入项目
从Synplify、XST或ISE项目文件创建Vivado项目。示例项目
从预定义的模板创建一个新的Vivado项目。
这里我们选择第一项,添加项目源文件。
4. 选择和型号
在“Default Part”页面中,选择您的ZYNQ-7010开发板的型号(如Zynq-7000系列),选择Package 引脚类型,然后选择Speed 速度等级,再选择Part 部件类型,最后点击“Next”。

这里也有很多选项,分别代表不同意思,请看
新项目
默认部件
为您的项目选择一个默认的Xilinx部件或板。
部件 | 板卡
重置所有过滤器
类别:全部 封装:clg400 温度:剩余所有
家族:Zynq-7000 速度:-2 静态功耗:剩余所有
搜索:
根据自己开发板的型号,对号入座,选择对应选项。
5. 点击和完成
最后点击“Finish”,完成项目创建。

正在创建,

完成创建后,来到主页。

三. 添加文件
添加源文件,请看
1. 添加文件
在“Project Manager”中,右键单击“Sources”文件夹,选择“Add Sources”,或者点击加号➕图标,还可以鼠标右击,都可以添加源文件。

2. 选择同意
选择“Add or create design sources”,添加或创建设计源文件,点击“Next”。

分别表示
添加源文件
添加源文件
此向导引导您完成为项目添加和创建源文件的过程。
- 添加或创建约束条件
- 添加或创建设计源文件
- 添加或创建仿真源文件
这里我们选择第二项,添加或创建设计源文件。
3. 创建源文件
点击“Create File”,选择File type语言类型 和 File name文件名称,然后点击“OK”后,点击“Finish”,完成创建。

这里创建的是项目里面的文件,下面图片头部,显示的是我们创建的项目名称和位置,注意区分。


然后这里还会弹出,模块弹框,直接输入模块名称,点击 OK ,点击 Yes ,完成创建。


双击LED.v,打开源文件,可以看到,项目和源文件,创建成功。

四. 编写代码
编写Verilog代码,以下是点亮LED灯的Verilog代码示例。请看
// led_control.v
module led_control (input wire clk, // 时钟信号output reg [3:0] led // 4个LED灯的控制信号
);// 时钟分频器,产生一个较慢的LED闪烁频率reg [23:0] counter; // 计数器,用于时钟分频always @(posedge clk) begincounter <= counter + 1; // 计数器自增if (counter == 24'd12499999) begin // 根据需要调整这个值led <= ~led; // 取反LED状态counter <= 0; // 重置计数器endendendmodule
代码说明
- 输入端口
clk:接收系统时钟信号。- 输出端口
led:控制4个LED灯的状态。- 计数器
counter:用于实现时钟分频,生成LED闪烁效果。always块:在每个时钟上升沿更新计数器,并在计数器达到设定值时切换LED状态。
五. 添加约束
添加约束文件,为确保 Vivado 正确地连接开发板上的引脚,我们需要添加一个约束文件(XDC文件)。请看
右键单击“Constraints”文件夹,选择“Add Sources”。
选择“Add or create constraints”,点击“Next”。
创建一个名为
constraints.xdc的约束文件,然后点击“Finish”。在
constraints.xdc中添加以下内容,确保将引脚与LED连接正确:
# LED引脚连接
set_property PACKAGE_PIN A2 [get_ports led[0]] # LED0
set_property PACKAGE_PIN A3 [get_ports led[1]] # LED1
set_property PACKAGE_PIN A4 [get_ports led[2]] # LED2
set_property PACKAGE_PIN A5 [get_ports led[3]] # LED3
set_property IOSTANDARD LVCMOS33 [get_ports {led[0] led[1] led[2] led[3]}]
引脚配置说明
- PACKAGE_PIN:指定FPGA封装的引脚号。
- IOSTANDARD:指定引脚的输入输出标准,这里使用LVCMOS33。
六. 综合实现
综合与实现,请看
在Vivado工具栏上,点击“Run Synthesis”以综合设计。
等待综合完成后,点击“Run Implementation”进行实现。
实现完成后,点击“Generate Bitstream”生成比特流文件(.bit)。
七. 编程开发
编程开发板,请看
将ZYNQ-7010开发板连接到计算机,打开Vivado的“Open Hardware Manager”。
点击“Open Target”,选择“Auto Connect”。
在“Hardware Manager”中,右键单击“Program Device”,选择刚生成的比特流文件,点击“Program”。
等待编程完成,您将看到LED灯开始闪烁。
八. 本篇小结
通过以上步骤,我们成功使用Xilinx Vivado软件创建了一个FPGA工程,编写Verilog代码并点亮了ZYNQ-7010开发板上的LED灯。在实际开发中,我们可以根据需要修改LED的闪烁频率和控制逻辑,为其他硬件设计打下基础。希望能帮助到你!

创作不易,感觉有用,就一键三连,感谢(●'◡'●)
相关文章:
FPGA第 13 篇,使用 Xilinx Vivado 创建项目,点亮 LED 灯,Vivado 的基本使用(点亮ZYNQ-7010开发板的LED灯)
前言 在FPGA设计中,Xilinx Vivado软件是一款功能强大的设计工具,它不仅支持硬件描述语言(HDL)的开发,还提供了丰富的图形化设计界面,方便用户进行硬件设计、调试和测试。这里我们将详细介绍,如…...
Kafka文档阅读笔记之基本操作
官方资料 官方首页官方文档基本操作topic的配置参数 topic的部分操作 创建新的topic 命令样例,如下: bin/kafka-topics.sh \--bootstrap-server localhost:9092 \--create \--topic my_topic_name \--partitions 20 \--replication-factor 3 \--conf…...
Golang | Leetcode Golang题解之第506题相对名次
题目: 题解: var desc [3]string{"Gold Medal", "Silver Medal", "Bronze Medal"}func findRelativeRanks(score []int) []string {n : len(score)type pair struct{ score, idx int }arr : make([]pair, n)for i, s : …...
机器学习——元学习(Meta-learning)
元学习(Meta-learning):学习如何学习的机器学习 元学习(Meta-learning),即“学习如何学习”,是机器学习领域中一个令人兴奋且极具潜力的研究方向。它的核心目标是让机器学习系统学会高效地学习…...
【TIMM库】是一个专门为PyTorch用户设计的图像模型库 python库
TIMM库 1、引言:遇见TIMM2、初识TIMM:安装与基本结构3、实战案例一:图像分类4、实战案例二:迁移学习5、实战案例三:模型可视化6、结语:TIMM的无限可能 1、引言:遇见TIMM 大家好,我是…...
【AIGC】从CoT到BoT:AGI推理能力提升24%的技术变革如何驱动ChatGPT未来发展
博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯迈向AGI的新跨越💯BoT与CoT的技术对比技术原理差异推理性能提升应用范围和通用性从错误中学习的能力总结 💯BoT的工作流程和机制初始化过程生成推…...
若依部署上线遇到的问题
一、若依部署上线的用户头像模块不能回显: 首先是后端修改部署上线后若依存储图片的本地地址 其次将上线前端配置文件中的图片相关配置给删除 二、若依部署上线后验证码不显示问题 在确保前后端请求打通后还有这个问题就是磁盘缓存问题 三、若依部署上线遇到404页…...
一个vue3的待办列表组件
一个vue3的待办列表组件, 仿企业微信的待办列表 TodoList.vue <template><div><el-input v-model"todoInput" placeholder"写下你的待办事项..." class"el-input" keyup.enter"addTodo"input-style"background-c…...
深入分析梧桐数据库SQL查询之挖掘季度销售冠军
在现代商业环境中,对销售数据的深入分析是企业决策过程中不可或缺的一部分。通过分析销售数据,企业可以识别出表现最佳的员工,从而激励团队,优化销售策略,并提高整体业绩。本文将详细介绍如何使用SQL查询来识别每个季度…...
「ZJUBCA秋季迎新见面会预告」
01 TIME 主席团与各部部长致辞 Presidents and Leads speech 02 TIME Aptos宣讲 Aptos Pitch-Hackathon 03 TIME 破冰小游戏 Icebreaker Games-Mining a Bitcoin 04 TIME 观影 Movie time! ⬇️浙江大学区块链协会秋季迎新见面会预告⬇️ 01 Presidents and Leads s…...
钉钉消息推送工具类
pom.xml <!-- HuTool 工具 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.12</version></dependency><!-- commons-lang3 --><dependency><groupId>…...
Android Studio 导入/删除/新建库的模块(第三方项目) - Module
文章目录 一、导入module项目 Module空项目如何导入Project工程项目二、删除module项目三、新建module项目(不常用) 一、导入module项目 首先,你必须要有一个工程(Project),才可以打开项目(Module) 第一步骤:右键项目依次点击 New -> Module 1、工…...
flowable 去掉自带的登录权限
重写Security配置,使所有请求都可以通过Security验证。(/**/**) 如: 公共的Security配置 package com.central.workflow.config;import org.springframework.context.annotation.Configuration; import org.springframework.se…...
第T8周:猫狗识别
>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)** 🍺 要求: 了解mode…...
第十七周:机器学习
目录 摘要 Abstract 一、MCMC 1、马尔科夫链采样 step1 状态设定 step2 转移矩阵 step3 马尔科夫链的生成 step4 概率分布的估计 2、蒙特卡洛方法 step1 由一个分布产生随机变量 step2 用这些随机变量做实验 3、MCMC算法 4、参考文章 二、flow-based GAN 1、引…...
算法4之链表
概述 链表的题目没有太难的算法,纯看熟练度,是必须会。面试笔试不会是直接挂的,或者给面试官留下不好的印象。 单双链表的反转,单链表实现队列,K个一组反转链表。 单链表反转 链表节点的定义 Data public class Li…...
掌握未来技术:KVM虚拟化安装全攻略,开启高效云端之旅
作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客 目录 前言&#…...
挖矿病毒的处理
前阶段生产服务器又中挖矿病毒了,紧急处理了一波 现象 执行 top命令,查看哪里cpu占用较高 CPU 彪满下不来 解决 1、杀掉进程 kill -9 pid 2、但是,过一会又不行了,说明有定时任务在定时执行这个病毒 3、先找到病毒文件&…...
JVM(HotSpot):GC之G1垃圾回收器
文章目录 一、简介二、工作原理三、Young Collection 跨代引用四、大对象问题 一、简介 1、适用场景 同时注重吞吐量(Throughput)和低延迟(Low latency),默认的暂停目标是 200 ms超大堆内存,会将堆划分为…...
appium文本输入的多种形式
目录 一、send_keys方法 二、press_keycode方法 三、subprocess方法直接通过adb命令输入 一、send_keys方法 这个是最常用的方法,不过通常使用时要使用聚焦,也就是先点击后等待: element wait.until(EC.presence_of_element_located((By…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
