把 Vivado 项目放心交给 Git:一篇 FPGA 工程师必读的实战指南

之前分享过一篇文章《FPGA 版本管理三种方式:你会选哪一种?》,评论区很多人都推荐使用Git进行版本管理,今天这篇文章主题就是使用Git进行备份指南。

在 FPGA 开发中,掌握 Git 等源码管理工具已经是必备技能。

当然,在使用 Vivado 时,我们不仅需要处理源代码控制,还需要处理以 IP 为中心的设计产品。

Vivado 的工程通常是 IP 为中心 的设计,包含:

  • IP Integrator Block Diagram
  • 各类 IP 实例(独立 IP 或 BD 内 IP)
  • 自动生成的包装文件与工程产物

这让很多 FPGA 工程师一开始会觉得:

“Vivado 项目到底该怎么和 Git 一起用?”

好消息是,从 Vivado 2022.1 开始,这一切已经变得非常清晰、也非常容易。

Vivado 2022.1 之后最重要的变化:源文件与生成文件分离

在 Vivado 2022.1 之前:

源文件和生成文件全部混在同一个 .srcs 目录中。

而从 Vivado 2022.1 起,工程目录被明确拆分为:

  • .srcs:源文件
  • .gen:生成文件

这一点非常关键。

👉 这意味着:

只要我们保存 .srcs 目录 + .xpr 工程文件,就可以在任何地方完整重建 Vivado 工程。

示例工程说明

示例使用 Vivado 2024.1 创建了一个新工程,目标板卡为 Avnet ZU Board。

IP Integrator 设计包含:

  • Zynq MPSoC Processing System
  • Smart Interconnect
  • AXI BRAM Controller

此外还加入了 自定义 RTL 文件,通过 UART 提供 AXI 访问,用来演示 自定义 RTL 与 IP 设计共存 的情况。

完成后的 Block Diagram 如下:

Vivado 工程目录结构解析

1️⃣ .srcs 目录

imports/ 下是用户添加的 VHDL / Verilog 源文件

bd/ 下是 IP Integrator 的 Block Diagram

ip/ 下是各个 IP 的 .xci 配置文件

👉 这些都是必须纳入 Git 管理的内容

2️⃣ .gen 目录

.gen 中包含:

自动生成的顶层 wrapper

IP 的生成文件

综合与仿真所需的中间文件

👉 这些文件不需要提交到 Git

将 Vivado 工程加入 Git 仓库

假设你已经在 GitHub 上创建了一个空仓库,下面是核心的步骤。

初始化仓库

git init

添加 Vivado 工程文件

只需要添加两部分:

git add git_demo.srcs/* git add git_demo.xpr

提交到本地仓库

提交这些文件并附带一条消息。

git commit -m "initial issue"

你会看到:

.xpr

RTL / VHDL 文件

IP .xci 文件

都已经被 Git 跟踪。

绑定远程仓库并推送

git remote add origin <url> git push -u origin master

此时在 GitHub 网页上,就可以看到完整的 Vivado 工程源文件了。

从 Git 仓库重建 Vivado 工程

为了验证流程是否正确,我们新建一个文件夹:

git clone <repo_url>

然后直接打开 .xpr 文件。

我们需要重新生成顶层 wrapper,重新生成 IP,正常完成综合与实现即可。

整个流程无需额外脚本,运行非常顺利。

小结

Vivado 2022.1 之后,工程结构已经非常适合 Git 管理

只需管理 .srcs + .xpr

IP、BD、RTL 都能自然融入 Git 流程

Vivado 工程终于可以像软件工程一样被“正常管理”

上面只是简单的使用,后续文章将继续介绍高级点的用法及 Vitis 与源码管理的协同方式。

Read more

五种常用的web加密算法

五种常用的web加密算法

文章目录 * 五种常用Web加密算法实战及原理详解 * 1. AES (高级加密标准) * 原理详解 * 应用场景 * 实战代码(Node.js) * 2. RSA (非对称加密) * 原理详解 * 应用场景 * 实战代码(Node.js) * 3. SHA-256 (安全哈希算法) * 原理详解 * 应用场景 * 实战代码(浏览器环境) * 4. HMAC (基于哈希的消息认证码) * 原理详解 * 应用场景 * 实战代码(Node.js) * 5. PBKDF2 (基于密码的密钥派生函数) * 原理详解 * 应用场景 * 实战代码(Node.js) * 加密算法对比表 * 安全最佳实践 * 进阶主题 五种常用Web加密算法实战及原理详解 在现代Web开发中,数据安全至关重要。以下是五种最常用的Web加密算法,包括它们的原理、应用场景和实战代码示例。

前端部署指南:手把手教你部署 Vue 项目

前端部署指南:手把手教你部署 Vue 项目

🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue-部署项目 前言 嗨喽伙伴们大家好,我是依旧青山。作为一名前端开发工程师,我深知很多刚入门的小白和已经有一定经验的前端开发者在部署项目时可能会遇到各种问题。虽然我们还没有开始学习后端相关的知识,但大家都希望能将自己的 Vue 项目部署到服务器上,展示给更多人看。今天,我将为大家详细介绍如何从零开始部署一个 Vue 项目,让每个人都能轻松上手。 本文将涵盖以下几个方面: 1. 准备工作 2. 服务器重装系统 3. 连接服务器 4. 安装|配置 Nginx 5. 服务器安装node环境 6. 打包|部署vue项目 7. 常见问题及解决方法 目录 前言 1.准备工作 2.服务器重装系统 3.连接服务器 4.

关于前端访问浏览器报错的小坑

以下是前端开发中,浏览器访问页面时经常遇到的报错小坑,以及常见原因和解决办法(2025年视角,基于当前主流浏览器 Chrome / Edge / Firefox / Safari): 1. ERR_CONNECTION_REFUSED / 无法连接到服务器 现象:浏览器显示“无法访问此网站”或“ERR_CONNECTION_REFUSED” 常见原因: * 本地开发服务器没启动(npm run dev、yarn dev、vite、next dev 等没跑) * 端口被占用 * 防火墙拦截了端口 * 访问了错误的地址(比如写成 http://localhost:3000 但服务跑在 5173) 解决: * 确认开发服务器是否在运行 * 检查终端输出端口号(Vite 默认 5173,Create React App

总结前端三年 理想滚烫与现实的冰冷碰撞

总结前端三年 理想滚烫与现实的冰冷碰撞

大家好,我是500佰,技术宅男 目前正在前往独立开发路线,我会在这里分享关于编程技术、独立开发、技术资讯以及编程感悟等内容 6月3日的一篇《一个普通人的30岁 他经历了什么》介绍一篇自己的碎碎念、即回顾自己以前的成长经历,那么再接着说下这3年来的工作经历,2022年1月,我以一名前端新人的身份开始了职业生涯。每当看到浏览器中运行的网站、手机里流畅的APP,或是点击按钮后转动的loading图标,都会想到这些产品背后凝聚着无数开发者的心血。我既期待能成为这个创造数字世界的一员,又难免担心:自己的技术储备是否足够?会不会被身边优秀的同事远远甩在身后? 怀揣着对未来的憧憬与一丝忐忑,我正式踏入了职业生涯的第一站。 不断尝试和调整的前两年(2022 ~ 2024) 我的职业生涯始于一家颇具特色的企业。原本以为会从事移动应用或网站开发,没想到公司专注于打造一款独特产品——我们开发了一系列可复用组件,配合自主研发的拖拽式平台,能够快速搭建Web站点。这种模式与后来流行的低代码平台颇有相似之处。 作为一名Java工程师加入公司后,却发现实际工作内容与预期有较大差异。当时还不了解’前端开发’这个