2、Vivado开发环境搭建:Vivado安装与配置、许可证管理、创建第一个Vivado工程、工程结构解析

好,咱们正式开始动手了。这一章,我带你走一遍Vivado开发环境的搭建流程。说实话,很多初学者卡就卡在安装和配置这一步,不是许可证搞不定,就是工程结构看不懂。别急,我把自己踩过的坑都给你标出来。

2.1 Vivado安装与配置

安装Vivado,说白了就是三步:下载、解压、点下一步。但这里有几个细节,我建议你注意一下。

2.1.1 版本选择

我个人习惯用LTS版本,比如2020.2、2021.1这些。为什么?因为稳定。我在项目中遇到过,用最新版Vivado编译通过的设计,换到老版本就报错。所以,除非你有特殊需求,否则别追新。

版本 特点 推荐场景
2020.2 稳定,资料多 初学者、项目开发
2021.1 支持新器件 使用7系列以上器件
2022.2 最新特性 尝鲜、学习新功能

2.1.2 安装路径

嗯,这里要注意。安装路径不要有中文,不要有空格。我见过有人把Vivado装在“C:\Program Files (x86)\Xilinx\Vivado 2020.2”下面,结果编译的时候各种路径解析错误。你想想看,一个工程里几百个文件,路径但凡有一个空格,工具就懵了。

警告:安装路径必须全英文,且不要包含空格。推荐路径:C:\Xilinx\Vivado\2020.2

2.1.3 安装选项

安装时,你会看到一堆选项。我建议你只勾选自己需要的。比如你只做Verilog开发,那VHDL的库就可以不装。我刚开始学的时候,全选了,结果装了80多G,很多都用不上。

  • Design Tools:必选,包含Vivado IDE、Vivado HLS、Vivado Simulator
  • Devices:按需选择,比如你用的是Zynq-7000,就只勾选这个系列
  • Install Options:建议勾选“Enable WebTalk”,方便调试

2.2 许可证管理

许可证,这是很多人的噩梦。我记得第一次装Vivado,折腾了一整天许可证。其实没那么复杂,分清楚三种情况就行。

2.2.1 免费许可证

Vivado WebPACK版本是免费的,功能也够用。你只需要去Xilinx官网注册一个账号,下载一个.lic文件就行。我建议你把这个文件放在Vivado安装目录下的licenses文件夹里,方便管理。

小技巧:免费许可证每半年更新一次,记得去官网重新下载。我曾经因为许可证过期,项目卡在综合阶段,找了半天原因。

2.2.2 节点锁定许可证

如果你在公司用,一般是节点锁定许可证。这种许可证绑定网卡MAC地址。安装时,Vivado会自动检测,你只需要把.lic文件加载进去就行。

# 加载许可证的命令行方式
source /opt/Xilinx/Vivado/2020.2/settings64.sh
vivado -lic_admin
# 在GUI中:Help -> Manage License -> Load License

2.2.3 浮动许可证

浮动许可证需要配置服务器。说白了,就是一台机器装许可证服务器,其他机器通过网络访问。配置起来稍微麻烦点,但好处是多人共享。

重要:无论哪种许可证,安装后一定要用vivado -license_check命令验证一下。我习惯每次新建工程前都跑一遍,确保许可证有效。

2.3 创建第一个Vivado工程

好,环境搭好了,许可证也搞定了。咱们来创建第一个工程。这个过程,我带你走一遍,你跟着做就行。

2.3.1 新建工程

打开Vivado,点击“Create Project”。你会看到向导,一步步来。

  1. Project Name:命名要规范,比如led_blink,不要用中文
  2. Project Location:选择一个干净的目录,我习惯在D:\FPGA_Projects下建子文件夹
  3. Project Type:选择“RTL Project”,勾选“Do not specify sources at this time”
  4. Target Language:选Verilog,虽然VHDL也很好,但Verilog更通用
  5. Part:选择你的开发板型号,比如xc7z020clg484-1
提示:如果你不知道器件型号,可以在“Parts”里搜索。比如Zynq-7020,就搜“xc7z020”。我建议你把常用器件的型号记下来,省得每次翻手册。

2.3.2 添加源文件

工程建好后,添加源文件。右键“Sources” -> “Add Sources”。我建议你先把顶层模块写好,再添加子模块。

// led_blink.v - 一个简单的LED闪烁模块
module led_blink(
    input  wire       clk,      // 50MHz时钟
    input  wire       rst_n,    // 复位,低有效
    output reg [3:0]  led       // 4个LED
);

reg [31:0] cnt;

always @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin
        cnt <= 32'd0;
        led <= 4'b0000;
    end else begin
        cnt <= cnt + 1'b1;
        if (cnt == 32'd25_000_000) begin
            cnt <= 32'd0;
            led <= ~led;  // 翻转LED
        end
    end
end

endmodule

2.3.3 综合与实现

代码写好了,点击“Run Synthesis”。综合完成后,看有没有错误。我刚开始做的时候,经常忘记定义端口方向,综合报错一堆。别慌,看错误信息,Vivado的提示已经很友好了。

综合通过后,点击“Run Implementation”。这一步会做布局布线。如果时序不满足,Vivado会报红色警告。嗯,这时候就要检查你的约束文件了。

2.4 工程结构解析

工程建好了,咱们来看看Vivado到底生成了什么。很多新手打开工程目录,看到一堆文件夹就懵了。我帮你理一理。

2.4.1 工程目录结构

一个典型的Vivado工程目录长这样:

led_blink/
├── led_blink.xpr          # 工程文件,双击打开
├── led_blink.srcs/        # 源文件目录
│   ├── sources_1/         # 设计源文件
│   │   ├── new/           # 你添加的.v文件
│   │   └── constrs_1/     # 约束文件
│   └── sim_1/             # 仿真文件
├── led_blink.runs/        # 运行结果
│   ├── synth_1/           # 综合结果
│   └── impl_1/            # 实现结果
├── led_blink.ip_user_files/ # IP核文件
└── led_blink.cache/       # 缓存文件,可删除

我个人习惯,每次工程结束后,只保留.xpr、.srcs和.runs三个文件夹。其他都是临时文件,删了也不影响。

2.4.2 关键文件说明

文件/文件夹 作用 注意事项
.xpr 工程配置文件 双击打开工程,不要手动编辑
.srcs/constrs_1 约束文件(.xdc) 管脚约束、时序约束都在这里
.runs/synth_1 综合报告 查看资源使用、时序报告
.runs/impl_1 实现报告 查看布局布线结果、功耗分析
注意:千万不要手动修改.runs目录下的文件。我曾经手欠改了一个.dcp文件,结果整个工程打不开了。血的教训。

2.4.3 工程结构图

为了让你更直观地理解Vivado工程的结构,我画了一张图。你看,整个流程是线性的,但每个环节都有输入输出。

Vivado工程结构流程图 源文件 .v / .vhd / .xdc 综合 (Synthesis) 生成网表 .dcp 实现 (Implementation) 布局布线 .dcp 生成比特流 .bit 文件 IP核 IP Catalog / IP Integrator 约束文件 时序约束 / 管脚约束 图:Vivado工程结构流程图 - 源文件、IP核、约束文件共同驱动综合与实现

你看,源文件、IP核、约束文件是三个输入,经过综合生成网表,再经过实现生成布局布线结果,最后生成比特流。这个流程,你以后做任何工程都逃不开。

2.5 避坑指南

最后,我把自己这些年踩过的坑总结一下,你遇到了直接翻出来看。

  • 安装失败:检查磁盘空间,至少需要30G。我建议留50G,省得后面装IP核不够用。
  • 许可证报错:先检查环境变量XILINXD_LICENSE_FILE是否指向了正确的.lic文件。我习惯在.bashrc里写死。
  • 综合报错:先看语法错误,再看端口匹配。我遇到过最奇葩的错误,是模块例化时端口顺序写反了。
  • 时序不满足:先检查约束文件,再看代码风格。我曾经因为一个组合逻辑环路,时序怎么都过不了。
核心总结:Vivado开发环境搭建,说白了就是装好工具、配好许可证、建好工程、看懂结构。这四步走完,你就可以开始真正的FPGA开发了。记住,工具只是手段,设计才是核心。

好,这一章就到这里。你跟着走一遍,有问题随时翻回来。下一章,咱们开始写真正的代码。

可可精品资料库