第二章 工程创建与项目管理
好,咱们正式开始动手了。这一章我带你走一遍 Vivado 工程的完整创建流程。说实话,很多新手一上来就急着写代码,结果工程结构乱七八糟,后面改起来想死的心都有。我当年就吃过这个亏,所以今天咱们把基础打扎实。
2.1 新建RTL工程
打开 Vivado 后,你会看到欢迎界面。点 Create Project,或者从菜单栏选 File → New Project。嗯,这里有个小细节——向导会让你选工程类型,咱们选 RTL Project,别选错了。
关键步骤一览:
- Project name:别用中文,别带空格。我习惯用
project_name_v1.0这种格式 - Project location:路径里不要有中文,不要有空格
- Target language:选 Verilog 或 VHDL,看你们团队习惯
- Part:选你手头开发板对应的芯片型号
选芯片型号这一步,很多人会卡住。其实你只要知道开发板上的 FPGA 型号就行。比如 Xilinx 的 Artix-7 系列,常见的是 xc7a35tcsg324-1。我建议你直接去开发板官网查,或者看板子背面的丝印。
2.2 添加源文件
工程建好后,就该加文件了。Vivado 支持三种添加方式:
- Add Sources:添加设计文件(.v, .vhd, .sv)
- Add Constraints:添加约束文件(.xdc)
- Add IP:添加 IP 核
我个人习惯先把所有源文件放在一个 src/ 目录下,约束文件放 constrs/ 目录。这样工程结构一目了然。你想想看,如果所有文件都堆在根目录,三个月后你自己都找不到哪个是哪个。
小技巧:添加文件时,Vivado 会自动检测文件类型。但有时候它会误判。比如把 .v 文件当成仿真文件。这时候你手动在 Sources 窗口里右键,选 Move to Design Sources 就行。
2.3 工程目录结构解析
Vivado 生成的工程目录,说实话有点乱。但理解了它的逻辑,你就不会慌了。下面这张图是我整理的典型结构:
你看,核心就是 .srcs/ 和 .xpr 文件。其他目录都是运行时生成的,丢了也不怕。我曾经有一次误删了整个工程,还好 .srcs 目录还在,重新建个工程导入就恢复了。
2.4 版本管理建议
版本管理这事儿,我吃过不少亏。刚开始做项目时,我都是手动复制文件夹,叫什么 project_final、project_final_v2、project_final_真的最终版…… 你懂的,最后自己都分不清哪个是哪个。
后来我改用 Git,但发现 Vivado 工程里有很多二进制文件和临时文件,全提交上去的话,仓库会变得巨大无比。所以,我建议你这样做:
Git 管理 Vivado 工程的 .gitignore 配置:
# 忽略运行时生成的文件
*.runs/
*.jou
*.log
*.str
*.backup.log
*.xpr.bak
# 忽略 IP 缓存
*.ip_user_files/
*.cache/
# 忽略综合实现结果
*.runs/
*.impl_1/
*.synth_1/
# 保留源文件和约束文件
!*.srcs/
!*.xdc
!*.v
!*.vhd
说白了,你只需要把 .srcs/ 目录和 .xpr 文件纳入版本管理。其他都是可以重新生成的。我现在的习惯是:
- 每天下班前 commit 一次
- 每次综合通过后打一个 tag
- 大改动前先建分支
避坑指南:我曾经在 .xpr 文件里手动改过路径,结果工程打不开了。后来发现 .xpr 是 XML 格式,里面记录了所有文件的相对路径。如果你移动了工程目录,记得用 Vivado 的 File → Project → Save As 来迁移,别自己手动改。
2.5 实战小练习
光说不练假把式。我建议你现在就动手:
- 新建一个 RTL 工程,芯片选 xc7a35tcsg324-1
- 创建一个
top.v文件,写一个简单的与门:assign led = btn & sw; - 添加一个
top.xdc约束文件,把 led、btn、sw 映射到开发板上的引脚 - 综合一下,看看有没有错误
这个练习虽然简单,但能帮你走通整个流程。嗯,等你做完这个,后面写复杂逻辑时就不会手忙脚乱了。
好了,这一章就到这里。记住:工程结构清晰,版本管理规范,是成为一个合格 FPGA 工程师的第一步。我见过太多人在这上面栽跟头,希望你不是其中之一。
可可精品资料库