2. 开发环境搭建:Vivado/Quartus安装、仿真工具配置、版本控制(Git)初始化、项目目录结构设计

好,咱们正式开始动手了。这一章说白了就是「磨刀」——把开发环境搭好,后面写代码才不闹心。我见过太多新手一上来就急着写Verilog,结果装个工具装三天,最后发现版本不对,又重来。嗯,咱们别走这个弯路。

2.1 选哪个工具?Vivado vs Quartus

先说说这两个主流IDE。我个人习惯是:做Xilinx的片子就用Vivado,做Intel(原Altera)的片子就用Quartus。听起来像废话?其实这里有个坑——版本兼容性。

⚠️ 我曾经遇到过:装了个Vivado 2020.1,结果买的开发板是2018年的,器件库不匹配,折腾了两天才发现要装对应版本的补丁包。所以建议你:先确定开发板型号,再下载对应版本的Vivado/Quartus。

两个工具的核心区别,我整理了个表:

对比项 Vivado (Xilinx) Quartus (Intel)
主流器件 Artix-7, Kintex-7, Zynq, Virtex Cyclone V, Arria 10, Stratix 10
仿真器 自带XSim 自带ModelSim (OEM版)
安装包大小 约30-50GB (全功能) 约15-25GB (全功能)
学习曲线 中等偏陡 相对平缓
IP核生态 非常丰富 也很丰富,但部分收费

你想想看,如果你只是做个小实验,用Quartus Lite版(免费)就够了。但要做高速收发器这类东西,我建议还是上Vivado——它的SerDes IP核支持更全。

2.2 安装流程与避坑指南

安装过程其实挺无脑的,但有几个关键点我得提醒你:

  1. 路径不要有中文和空格。我见过有人装到「D:\FPGA工具\Vivado 2022」——结果编译报错,查了半天是空格惹的祸。
  2. 安装时勾选「Device Libraries」。默认只装当前选中的器件,但万一你以后换板子呢?我建议全选,反正硬盘现在也不贵。
  3. 仿真工具单独配。Vivado自带的XSim够用,但如果你习惯用ModelSim或QuestaSim,记得在Tools → Settings → Tool Settings里指定路径。
💡 我的小技巧:装完Vivado后,先跑一遍自带的example project(比如Wavegen),确认仿真和综合都能跑通。这一步能帮你排除90%的环境问题。

2.3 仿真工具配置:让波形说话

仿真,说白了就是「让代码跑一遍,看看波形对不对」。我个人习惯用Vivado自带的XSim + GTKWave的组合——XSim跑仿真,GTKWave看波形,轻量又好用。

配置步骤其实很简单:

  1. 在Vivado里新建一个仿真文件(.v或.sv)
  2. 写好testbench,记得加`timescale 1ns/1ps`
  3. 在Flow Navigator里点「Run Simulation」→「Run Behavioral Simulation」

但如果你用Quartus,默认的ModelSim需要额外配置:

# 在Quartus中设置ModelSim路径
Assignments → Settings → EDA Tool Settings → Simulation
选择 ModelSim-Altera,指定安装路径
⚠️ 我曾经踩过的坑:ModelSim的库编译。如果你用Quartus自带的ModelSim,第一次仿真前必须编译器件库。在Quartus里点「Tools」→「Launch Simulation Library Compiler」,选好器件系列,等它跑完。不然仿真会报「Failed to find library」。

2.4 Git初始化:版本控制不是摆设

做FPGA项目,版本控制太重要了。我见过有人把代码存在「final_v2_真的不改了.v」这种文件里——结果改了三版后自己都分不清哪个是最终版。Git就是来解决这个问题的。

初始化步骤:

# 在项目根目录下
git init
git add .
git commit -m "Initial commit: 项目骨架"

但要注意,Vivado/Quartus生成的文件很多是二进制或临时文件,不需要全部提交。我建议创建.gitignore文件,过滤掉这些:

# Vivado
*.jou
*.log
*.str
*.xpr
*.rpt
*.bit
*.bin
.cache/
.runs/
.hw/

# Quartus
*.qws
*.db/
*.rpt
*.sof
*.pof
incremental_db/
💡 我的习惯:每次提交前,先git status看看哪些文件变了。如果发现不该提交的临时文件,赶紧更新.gitignore。这样仓库保持干净,别人拉下来也能直接跑。

2.5 项目目录结构设计:别让文件乱飞

一个好的目录结构,能让你的项目活得更久。我见过最惨的案例:所有文件堆在桌面,最后找不到源码,只能重写。所以,咱们从一开始就定好规矩。

我推荐的结构是这样的:

project_name/
├── src/                  # 源码
│   ├── rtl/             # 可综合的Verilog/VHDL
│   ├── sim/             # testbench
│   └── ip/              # IP核文件
├── constraints/          # 约束文件 (.xdc / .sdc)
├── scripts/              # Tcl脚本、Makefile
├── docs/                 # 文档、笔记
├── sim/                  # 仿真输出
├── build/                # 综合/实现结果
├── .gitignore
└── README.md

你想想看,这样分好类,找文件是不是一目了然?而且用Git管理时,每个目录的变更历史也清晰。

📌 重点:src/rtl/ 里只放可综合的代码,testbench单独放sim/。这样你综合时直接指定rtl目录,不会把仿真代码也综合进去——我刚开始就犯过这个错,综合报了一堆莫名其妙的错误。

2.6 知识体系总览

为了让你对整个开发环境搭建有个全局认识,我画了张图:

开发环境搭建知识体系 工具选择 Vivado / Quartus 安装配置 路径 / 器件库 / 补丁 仿真工具 XSim / ModelSim 版本控制 Git + .gitignore 确定开发板 → 选对应版本 避免版本不兼容 全选器件库 / 无中文路径 跑example验证 配置仿真器路径 编译器件库 git init + .gitignore 过滤临时文件 最终目标:一个可复现、可协作的开发环境 任何人在任何机器上都能一键跑通

这张图把咱们这章的核心逻辑串起来了:从工具选择开始,到安装配置、仿真工具、版本控制,最后汇聚成一个可复现的开发环境。说白了,就是让你少走弯路,一次搭好,后面安心写代码。

2.7 小结

嗯,这一章内容不少,但都是实打实的经验。你照着做,环境搭好后,记得跑个简单的LED闪烁工程验证一下。如果仿真能出波形,综合能出bit文件,那恭喜你——开发环境搭建成功了。

可可精品资料库