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

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文件)。请看

  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的闪烁频率和控制逻辑,为其他硬件设计打下基础。希望能帮助到你!

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

相关文章:

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

前言 在FPGA设计中&#xff0c;Xilinx Vivado软件是一款功能强大的设计工具&#xff0c;它不仅支持硬件描述语言&#xff08;HDL&#xff09;的开发&#xff0c;还提供了丰富的图形化设计界面&#xff0c;方便用户进行硬件设计、调试和测试。这里我们将详细介绍&#xff0c;如…...

Kafka文档阅读笔记之基本操作

官方资料 官方首页官方文档基本操作topic的配置参数 topic的部分操作 创建新的topic 命令样例&#xff0c;如下&#xff1a; bin/kafka-topics.sh \--bootstrap-server localhost:9092 \--create \--topic my_topic_name \--partitions 20 \--replication-factor 3 \--conf…...

Golang | Leetcode Golang题解之第506题相对名次

题目&#xff1a; 题解&#xff1a; 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)

元学习&#xff08;Meta-learning&#xff09;&#xff1a;学习如何学习的机器学习 元学习&#xff08;Meta-learning&#xff09;&#xff0c;即“学习如何学习”&#xff0c;是机器学习领域中一个令人兴奋且极具潜力的研究方向。它的核心目标是让机器学习系统学会高效地学习…...

【TIMM库】是一个专门为PyTorch用户设计的图像模型库 python库

TIMM库 1、引言&#xff1a;遇见TIMM2、初识TIMM&#xff1a;安装与基本结构3、实战案例一&#xff1a;图像分类4、实战案例二&#xff1a;迁移学习5、实战案例三&#xff1a;模型可视化6、结语&#xff1a;TIMM的无限可能 1、引言&#xff1a;遇见TIMM 大家好&#xff0c;我是…...

【AIGC】从CoT到BoT:AGI推理能力提升24%的技术变革如何驱动ChatGPT未来发展

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;迈向AGI的新跨越&#x1f4af;BoT与CoT的技术对比技术原理差异推理性能提升应用范围和通用性从错误中学习的能力总结 &#x1f4af;BoT的工作流程和机制初始化过程生成推…...

若依部署上线遇到的问题

一、若依部署上线的用户头像模块不能回显&#xff1a; 首先是后端修改部署上线后若依存储图片的本地地址 其次将上线前端配置文件中的图片相关配置给删除 二、若依部署上线后验证码不显示问题 在确保前后端请求打通后还有这个问题就是磁盘缓存问题 三、若依部署上线遇到404页…...

一个vue3的待办列表组件

一个vue3的待办列表组件, 仿企业微信的待办列表 TodoList.vue <template><div><el-input v-model"todoInput" placeholder"写下你的待办事项..." class"el-input" keyup.enter"addTodo"input-style"background-c…...

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

在现代商业环境中&#xff0c;对销售数据的深入分析是企业决策过程中不可或缺的一部分。通过分析销售数据&#xff0c;企业可以识别出表现最佳的员工&#xff0c;从而激励团队&#xff0c;优化销售策略&#xff0c;并提高整体业绩。本文将详细介绍如何使用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&#xff01; ⬇️浙江大学区块链协会秋季迎新见面会预告⬇️ 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项目 首先&#xff0c;你必须要有一个工程(Project),才可以打开项目(Module) 第一步骤&#xff1a;右键项目依次点击 New -> Module 1、工…...

flowable 去掉自带的登录权限

重写Security配置&#xff0c;使所有请求都可以通过Security验证。&#xff08;/**/**&#xff09; 如&#xff1a; 公共的Security配置 package com.central.workflow.config;import org.springframework.context.annotation.Configuration; import org.springframework.se…...

第T8周:猫狗识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** &#x1f37a; 要求&#xff1a; 了解mode…...

第十七周:机器学习

目录 摘要 Abstract 一、MCMC 1、马尔科夫链采样 step1 状态设定 step2 转移矩阵 step3 马尔科夫链的生成 step4 概率分布的估计 2、蒙特卡洛方法 step1 由一个分布产生随机变量 step2 用这些随机变量做实验 3、MCMC算法 4、参考文章 二、flow-based GAN 1、引…...

算法4之链表

概述 链表的题目没有太难的算法&#xff0c;纯看熟练度&#xff0c;是必须会。面试笔试不会是直接挂的&#xff0c;或者给面试官留下不好的印象。 单双链表的反转&#xff0c;单链表实现队列&#xff0c;K个一组反转链表。 单链表反转 链表节点的定义 Data public class Li…...

掌握未来技术:KVM虚拟化安装全攻略,开启高效云端之旅

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#…...

挖矿病毒的处理

前阶段生产服务器又中挖矿病毒了&#xff0c;紧急处理了一波 现象 执行 top命令&#xff0c;查看哪里cpu占用较高 CPU 彪满下不来 解决 1、杀掉进程 kill -9 pid 2、但是&#xff0c;过一会又不行了&#xff0c;说明有定时任务在定时执行这个病毒 3、先找到病毒文件&…...

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

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

appium文本输入的多种形式

目录 一、send_keys方法 二、press_keycode方法 三、subprocess方法直接通过adb命令输入 一、send_keys方法 这个是最常用的方法&#xff0c;不过通常使用时要使用聚焦&#xff0c;也就是先点击后等待&#xff1a; element wait.until(EC.presence_of_element_located((By…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...