第三章 开发环境搭建:Vivado/Quartus安装、仿真工具配置、版本管理(Git)与项目结构规范
说实话,很多初学者一上来就急着写代码,结果环境没搭好,后面全是坑。我见过太多人花了两周调一个仿真错误,最后发现是工具链没配对。嗯,咱们先把地基打牢。
3.1 Vivado与Quartus:选哪个?怎么装?
这两个工具,说白了就是FPGA界的“苹果”和“安卓”。Vivado是Xilinx家的,Quartus是Intel(原Altera)家的。我个人习惯是:项目用什么芯片,就用什么工具。别想着一个工具通吃,那会把自己搞疯。
Vivado安装要点:
- 版本选择:别追最新版。我建议用2019.1到2022.2之间的稳定版本。2023以后的版本对系统要求太高,老机器跑不动。
- 安装路径:绝对不要有中文和空格!我曾经有个项目,就因为路径里有个“项目”两个字,综合跑了三天报错,最后发现是路径编码问题。
- 组件选择:只勾选你需要的器件系列。全选的话,硬盘直接爆掉。我一般只选7系列和UltraScale+。
Quartus安装要点:
- 版本匹配:Quartus Prime分Pro和Standard版。Pro版只支持高端器件,别装错了。
- License问题:Quartus的license管理比Vivado麻烦。我建议用浮动license,别用节点锁定的,不然换台机器就得重新申请。
- ModelSim集成:Quartus自带ModelSim Starter,但功能有限。我一般单独装ModelSim SE。
3.2 仿真工具配置:Modelsim与Vivado Simulator
仿真工具是FPGA开发的“照妖镜”。代码有没有问题,一跑仿真就知道。我个人偏爱Modelsim,但Vivado自带的XSIM也不错。
Modelsim配置步骤:
- 安装Modelsim SE或DE版本(别用Starter,限制太多)
- 设置环境变量:
MODELSIM_HOME指向安装目录 - 编译库文件:运行
vlib和vmap命令 - 配置仿真脚本:写一个
.do文件,自动加载设计文件和testbench
这里给一个我常用的仿真脚本模板:
# run_sim.do
vlib work
vmap work work
# 编译设计文件
vlog -sv ../src/top.sv
vlog -sv ../src/fifo.sv
vlog -sv ../tb/tb_top.sv
# 启动仿真
vsim -voptargs=+acc work.tb_top
# 添加波形
add wave -r sim:/tb_top/*
# 运行
run 1us
Vivado Simulator配置:
其实Vivado自带的仿真器已经很好用了。你只需要在Project Settings里选好仿真语言和库文件就行。我个人习惯用Vivado Simulator做快速验证,用Modelsim做回归测试。
-voptargs=+acc参数。这个参数能优化仿真性能,但会占用更多内存。我一般在做大型仿真时才用。
3.3 版本管理:Git在FPGA项目中的正确用法
Git不是软件工程师的专利。FPGA项目同样需要版本管理。你想想看,一个项目几十个版本,没有Git怎么回溯?
Git配置要点:
- .gitignore文件:这是最重要的。FPGA工具会生成大量临时文件,比如
.jou、.log、.runs、.cache等。这些文件千万别提交到仓库。 - 分支策略:我建议用
main、develop、feature/*三级分支。主分支只放稳定版本。 - 大文件处理:FPGA的bit文件动不动就几十MB。用Git LFS来管理大文件。
这是我常用的.gitignore模板:
# Vivado
*.jou
*.log
*.str
*.xdc.bak
.runs/
.cache/
.hw/
.ip_user_files/
# Quartus
*.qws
*.db/
*.rpt
*.summary
incremental_db/
output_files/
# 通用
*.o
*.swp
.DS_Store
build/
3.4 项目结构规范:让团队协作不再痛苦
项目结构乱,是团队协作最大的敌人。我见过一个项目,所有文件堆在一个目录里,找顶层文件找了半小时。后来我定了一套规范,效果很好。
推荐的项目目录结构:
project_name/
├── src/ # 源代码
│ ├── rtl/ # 设计文件(.v/.sv)
│ ├── tb/ # 测试文件
│ └── ip/ # IP核文件
├── constr/ # 约束文件
│ ├── timing.xdc # 时序约束
│ └── pin.xdc # 引脚约束
├── sim/ # 仿真相关
│ ├── scripts/ # 仿真脚本
│ └── waves/ # 波形文件
├── synth/ # 综合结果
├── impl/ # 实现结果
├── docs/ # 文档
├── scripts/ # 自动化脚本
├── .gitignore
└── README.md
命名规范:
- 模块名:小写+下划线,如
fifo_controller - 信号名:小写+下划线,如
data_valid - 参数名:大写+下划线,如
DATA_WIDTH - 文件名:与模块名一致,如
fifo_controller.sv
3.5 知识体系总览
下面这张图,是我对本章内容的一个总结。你可以把它当作开发环境搭建的“路线图”。
环境搭建这件事,说白了就是“磨刀不误砍柴工”。你花一天时间把环境配好,后面能省下一周的时间。我刚开始做FPGA时,总觉得环境搭建浪费时间,结果每次都在工具链上栽跟头。后来学乖了,每次新项目都先花半天把环境整利索。
嗯,这一章的内容就到这里。记住:工具是死的,人是活的。别被工具牵着鼻子走,要让工具为你服务。
公众号:蓝海资料掘金营,微信deep3321