3、FPGA开发环境搭建:Vivado安装与配置、工程创建流程、IP核管理、仿真环境搭建

做FPGA开发,第一步就是把家伙事儿备齐。Vivado这套工具,说白了就是我们和FPGA芯片之间的翻译官。你写的Verilog代码,它帮你翻译成比特流,最后烧进芯片里跑起来。

我个人习惯,每年新版本出来先观望一阵,等第一个补丁包出了再升级。为什么?因为新版本刚发布时,bug往往比功能多。我在项目中就吃过这个亏,Vivado 2019.1刚出时,综合某些IP核会莫名其妙报错,折腾了两天才发现是工具本身的坑。

3.1 Vivado安装与配置

安装Vivado其实不复杂,但有几个关键点你得留意。

硬件要求

  • 内存至少16GB,我建议32GB起步。你想想看,综合一个稍大点的工程,内存占用轻松上10GB。
  • 硬盘留出100GB以上空间。Vivado全家桶装完大概60GB,加上后续工程文件,100GB是底线。
  • 操作系统建议Windows 10 64位或Ubuntu 18.04以上。

安装步骤

  1. 去Xilinx官网下载Vivado安装包。注意选择版本,我一般用WebPACK版,免费且功能够用。
  2. 运行安装程序,选择“Vivado HL WebPACK”。
  3. 安装路径不要有中文和空格。嗯,这里要注意,很多新手在这栽跟头。
  4. 选择安装组件时,至少勾选“Vivado”和“Vivado SDK”。如果你做以太网,建议把“Vivado HLS”也勾上。
  5. 等待安装完成,大概需要30分钟到1小时,取决于你的网速和硬盘速度。
我的小技巧:安装时把杀毒软件关了。Vivado安装过程中会写注册表、装驱动,杀毒软件经常误报,导致安装失败。我曾经因为360拦截了一个驱动文件,重装了三次才找到原因。

3.2 工程创建流程

工程创建这事儿,说简单也简单,说复杂也复杂。我带你走一遍标准流程。

创建新工程

  1. 打开Vivado,点击“Create Project”。
  2. 输入工程名,比如“udp_stack_demo”。注意,工程名不要用中文。
  3. 选择工程类型,选“RTL Project”。
  4. 添加源文件。你可以现在加,也可以后面再加。我习惯先创建空工程,再慢慢加文件。
  5. 选择芯片型号。做千兆以太网,我常用Artix-7系列,比如XC7A35T。性价比高,资源够用。
  6. 点击Finish,工程就建好了。
重要提醒:芯片型号选错了,后面所有工作都白费。选型前一定确认好板子上的芯片具体型号,别只看系列。我见过有人选了XC7A100T,结果板子上是XC7A35T,综合时报错说资源不够,折腾半天才发现是选型问题。

添加设计文件

工程建好后,右键“Sources”窗口,选择“Add Sources”。可以添加Verilog文件、VHDL文件、XDC约束文件等。我个人习惯把所有源文件放在一个“src”文件夹里,方便管理。

设置顶层模块

在“Sources”窗口中,右键你要设为顶层的模块,选择“Set as Top”。Vivado会以这个模块作为综合和仿真的入口。

3.3 IP核管理

IP核,说白了就是Xilinx给你写好的功能模块。你不用从零开始写,直接拿来用就行。做以太网协议栈,我们至少需要这几个IP核:

IP核名称 功能 使用场景
Tri-Mode Ethernet MAC 以太网MAC层控制器 千兆以太网核心
AXI-Stream FIFO 数据缓存 跨时钟域数据传递
Clocking Wizard 时钟管理 生成125MHz等时钟
MII/GMII to RGMII 接口转换 连接PHY芯片

添加IP核的步骤

  1. 点击“IP Catalog”窗口。
  2. 搜索你需要的IP核,比如“Ethernet”。
  3. 双击IP核,配置参数。配置时注意看Datasheet,别乱改参数。
  4. 配置完成后,点击“OK”,Vivado会自动生成IP核文件。
避坑指南:我曾经在配置Tri-Mode Ethernet MAC时,把“Management Interface”选项勾掉了,结果后面调试时发现无法通过MDIO接口配置PHY芯片。查了两天资料才发现是这里的问题。所以,配置IP核时,不确定的参数就保持默认,别乱动。

3.4 仿真环境搭建

仿真,是FPGA开发中最重要的一环。没有仿真,你就是在盲人摸象。我个人习惯,写代码前先搭好仿真环境,边写边仿真,发现问题及时改。

Vivado自带仿真器

Vivado自带了XSim仿真器,够用。但如果你追求速度,可以用ModelSim或QuestaSim。我一般用Vivado自带的,省事。

创建仿真文件

  1. 在“Sources”窗口中,右键选择“Add Sources”。
  2. 选择“Simulation Sources”,添加你的testbench文件。
  3. testbench文件一般以“_tb”结尾,比如“udp_tx_tb.v”。
  4. 设置testbench为仿真顶层。

运行仿真

  1. 点击“Flow Navigator”中的“Run Simulation”。
  2. 选择“Run Behavioral Simulation”。
  3. Vivado会启动仿真窗口,你可以添加波形信号,观察时序。
我的经验:仿真时别只看波形,要学会用$display和$monitor打印关键信息。波形能看出时序问题,但数据流是否正确,打印信息更直观。我调试UDP协议栈时,就是靠打印信息定位到一个字节对齐的bug。

仿真脚本化

如果你经常做仿真,建议写个Tcl脚本。这样每次仿真不用手动点来点去,直接跑脚本就行。下面是个简单的例子:

# 仿真脚本示例
open_project ./udp_stack.xpr
launch_simulation -mode behavioral
add_wave /
run 10 us

把这段脚本保存成“sim.tcl”,然后在Vivado Tcl Console里执行“source sim.tcl”就行。

3.5 知识体系总览

为了让你更直观地理解本章内容,我画了张图。这张图展示了开发环境搭建的完整流程和各个模块之间的关系。

FPGA开发环境搭建知识体系 Vivado安装与配置 工程创建流程 IP核管理 仿真环境搭建 硬件要求 安装步骤 版本选择 新建工程 添加源文件 设置顶层 Ethernet MAC AXI FIFO Clocking Wizard Testbench 波形查看 脚本化仿真

这张图把整个开发环境搭建分成了四个核心模块。你按这个顺序来,基本不会出错。安装→建工程→配IP核→搭仿真,每一步都踩实了,后面写代码才能顺风顺水。

好了,环境搭好了,下一章我们就可以开始写代码了。记住,工欲善其事,必先利其器。环境搭得好,调试少烦恼。

专注资料整理