FPGA第 13 篇,使用 Xilinx Vivado 创建项目,点亮 LED 灯,Vivado 的基本使用(点亮ZYNQ-7010开发板的LED灯)

news2024/10/28 17:20:02

前言

在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) begin
        counter <= counter + 1; // 计数器自增
        if (counter == 24'd12499999) begin // 根据需要调整这个值
            led <= ~led; // 取反LED状态
            counter <= 0; // 重置计数器
        end
    end

endmodule

代码说明

  • 输入端口clk:接收系统时钟信号。
  • 输出端口led:控制4个LED灯的状态。
  • 计数器counter:用于实现时钟分频,生成LED闪烁效果。
  • always:在每个时钟上升沿更新计数器,并在计数器达到设定值时切换LED状态。


五. 添加约束

添加约束文件,为确保 Vivado 正确地连接开发板上的引脚,我们需要添加一个约束文件(XDC文件)。请看

  1. 右键单击“Constraints”文件夹,选择“Add Sources”。

  2. 选择“Add or create constraints”,点击“Next”。

  3. 创建一个名为constraints.xdc的约束文件,然后点击“Finish”。

  4. 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。


六. 综合实现

综合与实现,请看

  1. 在Vivado工具栏上,点击“Run Synthesis”以综合设计。

  2. 等待综合完成后,点击“Run Implementation”进行实现。

  3. 实现完成后,点击“Generate Bitstream”生成比特流文件(.bit)。


七. 编程开发

编程开发板,请看

  1. 将ZYNQ-7010开发板连接到计算机,打开Vivado的“Open Hardware Manager”。

  2. 点击“Open Target”,选择“Auto Connect”。

  3. 在“Hardware Manager”中,右键单击“Program Device”,选择刚生成的比特流文件,点击“Program”。

  4. 等待编程完成,您将看到LED灯开始闪烁。


八. 本篇小结

通过以上步骤,我们成功使用Xilinx Vivado软件创建了一个FPGA工程,编写Verilog代码并点亮了ZYNQ-7010开发板上的LED灯。在实际开发中,我们可以根据需要修改LED的闪烁频率和控制逻辑,为其他硬件设计打下基础。希望能帮助到你!

创作不易,感觉有用,就一键三连,感谢(●'◡'●)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Error in eval(family$initialize): y值必需满足0 <= y <= 1解决

今天在使用R语言对Weekly进行交叉验证时&#xff0c;发生如下报错&#xff1a; 错误于eval(family$initialize): y值必需满足0 < y < 1 错误代码为&#xff1a; Weekly<-read.csv("Weekly.csv") set.seed(1) attach(Weekly) glm.fit1 glm(Direction~Lag…

App测试环境部署

一.JDK安装 参考以下AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 二.SDK安装 安装地址&#xff1a;https://www.androiddevtools.cn/ 解压 环境变量配置 变量名&#xff1a;ANDROID_SDK_HOME 参考步骤&#xff1a; A…

图---java---黑马

图 概念 图是由顶点(vertex)和边(edge)组成的数据结构&#xff0c;例如 该图有四个顶点&#xff1a;A&#xff0c;B&#xff0c;C&#xff0c;D以及四条有向边&#xff0c;有向图中&#xff0c;边是单向的。 有向 vs 无向 如果是无向图&#xff0c;那么边是双向的&#x…

汽车电子工厂中的防静电监控系统,你了解多少?

在汽车电子制造领域&#xff0c;静电放电(ESD)带来的危害不容忽视。微小的静电放电都可能导致电子元器件损坏&#xff0c;进而引发昂贵的返工、产品召回甚至安全事故。因此&#xff0c;有效的防静电监控系统成为汽车电子工厂保障产品质量和安全生产的关键。 传统的防静电措施主…

全面解释人工智能LLM模型的真实工作原理(三)

前一篇&#xff1a;《全面解释人工智能LLM模型的真实工作原理&#xff08;二&#xff09;》 序言&#xff1a;前面两节中&#xff0c;我们介绍了大语言模型的设计图和实现了一个能够生成自然语言的神经网络。这正是现代先进人工智能语言模型的雏形。不过&#xff0c;目前市面上…

深入分析梧桐数据库SQL查询之挖掘季度销售冠军

在现代商业环境中&#xff0c;对销售数据的深入分析是企业决策过程中不可或缺的一部分。通过分析销售数据&#xff0c;企业可以识别出表现最佳的员工&#xff0c;从而激励团队&#xff0c;优化销售策略&#xff0c;并提高整体业绩。本文将详细介绍如何使用SQL查询来识别每个季度…

Navicat导入Excel数据时数据被截断问题分析与解决方案

目录 前言1. 问题分析1.1 默认字段类型的影响1.2 MySQL诊断机制的限制 2. 解决方案2.1 修改字段长度2.2 修改Excel数据以影响推断2.3 检查导入工具的设置 3. 其他注意事项3.1 注册表的修改3.2 增加自增ID 4. 结语 前言 在数据库的日常操作中&#xff0c;将Excel数据导入MySQL是…

基于Python和OpenCV的疲劳检测系统设计与实现

项目运行 需要先安装Python的相关依赖&#xff1a;pymysql&#xff0c;Django3.2.8&#xff0c;pillow 使用pip install 安装 第一步&#xff1a;创建数据库 第二步&#xff1a;执行SQL语句&#xff0c;.sql文件&#xff0c;运行该文件中的SQL语句 第三步&#xff1a;修改源…

JVM(HotSpot):GC之G1垃圾回收器

文章目录 一、简介二、工作原理三、Young Collection 跨代引用四、大对象问题 一、简介 1、适用场景 同时注重吞吐量&#xff08;Throughput&#xff09;和低延迟&#xff08;Low latency&#xff09;&#xff0c;默认的暂停目标是 200 ms超大堆内存&#xff0c;会将堆划分为…

Unreal Engine5安装Niagara UI Renderer插件

系列文章目录 文章目录 系列文章目录前言一、如何下载安装Niagara UI Renderer插件 前言 在2024.10.24号的今天发现unreal engine官网已经没有虚幻商城了&#xff0c;取而代之的是FAB ‌虚幻商城已经停止运营&#xff0c;Epic Games推出了新的数字资产商店FAB。‌ Epic Games…

vue mysql 直连

最近又搞了个小项目&#xff0c;单机版本的内部考勤管理系统&#xff0c;直接部署在对方的工作电脑上&#xff0c;不需要在云端部署&#xff0c;因为项目本身就小&#xff0c;我就没配置后端同事进行开发&#xff0c;而是通过VUE直连mysql进行业务开发及保存。后期再通过PM2来守…

灵动AI:艺术与科技的融合

灵动AI视频官网地址&#xff1a;https://aigc.genceai.com/ 灵动AI 科技与艺术的完美融合之作。它代表着当下最前沿的影像技术&#xff0c;为我们带来前所未有的视觉盛宴。 AI 视频以强大的人工智能算法为基石&#xff0c;能够自动分析和理解各种场景与主题。无论是壮丽的自然…

快速搭建SpringBoot3+Prometheus+Grafana

快速搭建SpringBoot3PrometheusGrafana 一、搭建SpringBoot项目 1.1 创建SpringBoot项目 1.2 修改pom文件配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://…

MySQL之数据库设计

前文我们了解了数据库中库、表等的操作&#xff0c;今天我们来学习如何设计数据库&#xff1f;&#xff1f; 在设计数据库前&#xff0c;我们先来了解什么是范式&#xff1f;&#xff1f; 1. 范式 数据库的范式是一组规则&#xff0c;在设计关系数据库时&#xff0c;遵从不同…

Elasticsearch 解析:倒排索引机制/字段类型/语法/常见问题

Elasticsearch 是一个分布式的开源搜索引擎&#xff0c;广泛用于全文搜索、分析和数据存储。它基于 Apache Lucene 构建&#xff0c;支持 RESTful 风格的 API&#xff0c;使得开发者能够高效地存储和检索数据。本文将详细讲解 Elasticsearch 的基本原理&#xff0c;特别是其倒排…

ctfshow(66->70)--RCE/命令执行漏洞--禁用命令执行函数

Web66 源代码&#xff1a; if(isset($_POST[c])){$c $_POST[c];eval($c); }else{highlight_file(__FILE__); }代码审计&#xff1a; POST传参c&#xff0c;eval进行代码执行。 思路&#xff1a; 由于题目过滤了命令执行函数&#xff0c;所以使用其他方法进行RCE。 先使用c…

一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)

1. 背景介绍 如果你拿到了两台8卡A100的机器&#xff08;做梦&#xff09;&#xff0c;你的导师让你学习部署并且训练不同尺寸的大模型&#xff0c;并且写一个说明文档。你意识到&#xff0c;你最需要学习的就是关于分布式训练的知识&#xff0c;因为你可是第一次接触这么多卡…

【ROS概述】概念及环境搭建

学习途径&#xff1a; 教程&#xff1a;Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 课程视频&#xff1a;https://www.bilibili.com/video/BV1Ci4y1L7ZZ 机器人体系 要完全实现一个机器人的系统研发&#xff0c;几乎是“全栈”开发&#xff0c;…

python 爬虫 入门 五、抓取图片、视频

目录 一、图片、音频 二、下载视频&#xff1a; 一、图片、音频 抓取图片的手法在上一篇python 爬虫 入门 四、线程&#xff0c;进程&#xff0c;协程-CSDN博客里面其实有&#xff0c;就是文章中的图片部分&#xff0c;在那一篇文章&#xff0c;初始代码的28&#xff0c;29行…

Python 函数返回值之None类型

什么是None None是类型‘NoneType’字面量&#xff0c;用于表示&#xff1a;空的、无意义的 函数如何返回None 不使用return语句即返回None 主动return None 使用场景 函数返回值if判断变量定义 练习&#xff1a; 练习一&#xff1a;无return语句的函数返回值 # 无ret…