2. 开发环境搭建:Vitis统一软件平台安装与配置,Vivado设计套件基础,开发板(如VCK190)准备与验证

好,咱们正式开始动手了。这一章,说白了就是“磨刀”。

我见过太多人,拿到开发板就急着写代码,结果环境没配好,折腾一整天连个灯都点不亮。我个人习惯是,先把工具链理顺,再谈设计。你想想看,一个厨师如果连刀都磨不快,菜能切好吗?

2.1 Vitis统一软件平台:安装与配置

Vitis 这个平台,AMD 把它叫做“统一软件平台”。为什么叫统一?因为它把嵌入式软件开发、AI 推理、还有传统的 RTL 设计流程,全揉到一起了。嗯,这里要注意,Vitis 不是 Vivado 的替代品,而是它的“大哥”。

安装前的准备

我建议你至少准备 200GB 的硬盘空间。别嫌多,我当年装完所有器件库,差点把 256GB 的笔记本撑爆。另外,内存 16GB 起步,32GB 会更舒服。

⚠ 避坑指南
我曾经在 Windows 上装 Vitis,结果死活编译不过。后来发现,AMD 官方推荐的是 Ubuntu 18.04/20.04 LTS。如果你非要用 Windows,记得关掉杀毒软件,路径里不要有中文和空格。

安装步骤(以 Linux 为例)

  1. 从 AMD 官网下载 Xilinx_Unified_2023.2_XXXX.tar.gz(版本号会变,选最新的 LTS 版本)
  2. 解压后运行 ./xsetup
  3. 选择 “Vitis” 安装选项,它会自动包含 Vivado
  4. 器件选择:勾选 “Versal” 系列(VCK190 用的就是 Versal AI Core)
  5. 安装路径:我习惯放在 /tools/Xilinx,避免权限问题

关键点:安装完成后,一定要设置环境变量。把下面这行加到你的 .bashrc 里:

source /tools/Xilinx/Vitis/2023.2/settings64.sh

然后 source ~/.bashrc 让它生效。

2.2 Vivado设计套件基础

Vivado 是咱们做 FPGA 设计的“画板”。但说实话,Vivado 的界面有点“重”,第一次打开可能会懵。别慌,咱们只抓核心。

Vivado 的核心流程

步骤 做什么 我踩过的坑
1. 创建工程 选器件、选语言(Verilog/VHDL) 器件型号别选错,VCK190 是 XCVC1902
2. 添加源文件 写 RTL 代码或添加 IP 文件名不要用中文,Vivado 会报奇怪的错
3. 综合 (Synthesis) 把 RTL 转成网表 综合很慢,我一般先去喝杯咖啡
4. 实现 (Implementation) 布局布线 时序不满足?先检查约束文件
5. 生成比特流 生成 .bit 文件,烧录到板子 记得先接好 JTAG 线

一个小技巧

Vivado 的 Tcl 控制台非常强大。我习惯把常用的操作写成 Tcl 脚本,比如:

# 创建一个简单的工程
create_project -force my_project ./my_project -part xcvc1902-vsva2197-1LP-i-S
add_files -norecurse ./src/top.v
set_property top top [current_fileset]
launch_runs synth_1 -jobs 4
wait_on_run synth_1
launch_runs impl_1 -jobs 4
wait_on_run impl_1
open_run impl_1
write_bitstream -force ./output.bit

你看,这样每次重建工程,一行命令就搞定了,不用点鼠标点到手酸。

2.3 开发板准备与验证:以VCK190为例

VCK190 这块板子,说实话,第一次拿到手我是有点“敬畏”的。它不像那些几百块的入门板,这是真正的“大杀器”。

开箱检查

  • 板子本体(注意静电袋,别直接用手摸芯片)
  • 电源适配器(12V/10A,别用错)
  • USB 线(用于 JTAG 和 UART)
  • SD 卡(预装了启动镜像)
💡 我的经验: 第一次上电前,先用万用表测一下板子的电源对地阻抗,确保没有短路。我曾经有一块板子,出厂时焊锡丝掉在电源引脚上,差点烧了。

板子启动验证

  1. 连接电源和 USB 线
  2. 将 SD 卡插入板子
  3. 拨动启动开关到 SD 卡模式(参考板子丝印)
  4. 上电,观察板子上的 LED

正常情况下,你会看到 DONE LED 亮起,同时 UART 输出启动信息。用串口工具(比如 Putty)连接,波特率 115200,你会看到 Linux 启动的日志。

验证 Vivado 能否识别板子

打开 Vivado,在 Tcl 控制台输入:

open_hw_manager
connect_hw_server
get_hw_targets

如果能看到 xcvc1902 的器件,说明 JTAG 链路正常。如果看不到,检查一下 USB 驱动,或者换个 USB 口。我遇到过 USB 3.0 口不兼容的情况,换成 USB 2.0 就好了。

2.4 第一个“Hello World”:点亮LED

咱们来写个最简单的程序,验证整个工具链是否打通。

Vivado 工程

// top.v
module top (
    input  wire clk,
    output wire led
);
    reg [31:0] counter;
    assign led = counter[25]; // 分频后闪烁

    always @(posedge clk) begin
        counter <= counter + 1;
    end
endmodule

约束文件(.xdc):

set_property PACKAGE_PIN AE14 [get_ports clk]
set_property IOSTANDARD LVCMOS18 [get_ports clk]

set_property PACKAGE_PIN AA1 [get_ports led]
set_property IOSTANDARD LVCMOS18 [get_ports led]

生成比特流,烧录进去。如果 LED 开始闪烁,恭喜你,环境搭建成功了!

总结一下:

  • Vitis 是“大平台”,Vivado 是“画板”,两者配合使用
  • VCK190 是 Versal 架构,和传统的 Zynq 有些区别,但基本流程一致
  • 遇到问题先查 JTAG 连接,再查电源,最后查代码

嗯,这一章就到这里。下一章咱们会深入 Versal 的架构,看看它到底“牛”在哪里。记住,环境搭好了,后面才能跑得快。