2. 开发环境搭建:Vivado/Vitis安装、板卡驱动安装、JTAG调试器配置、环境验证(Hello World LED)
说实话,很多同学学硬件加速,第一步就卡在环境搭建上。
我见过太多人,板子买回来放了三个月,连个灯都没点亮。不是不会写代码,是环境没配好,驱动没装对,JTAG死活连不上。今天这一章,咱们就把这事儿彻底搞定。
核心目标:装好Vivado和Vitis,连上板子,点亮一个LED。就这么简单。
2.1 版本选择:别追新,追稳
我个人习惯,选Vivado版本有个原则:不选最新,选最稳。
2023.2、2024.1这些版本我都用过。说实话,2023.2是目前最稳的。2024.1有些IP核的兼容性问题,我在项目里踩过坑——编译到一半报错,查了两天才发现是版本bug。
| 版本 | 推荐指数 | 备注 |
|---|---|---|
| Vivado 2023.2 | ⭐⭐⭐⭐⭐ | 最稳定,推荐新手使用 |
| Vivado 2024.1 | ⭐⭐⭐⭐ | 功能新,但有些IP有坑 |
| Vivado 2022.2 | ⭐⭐⭐ | 老项目兼容,新项目不推荐 |
小提示:下载时选“All OS installer Single-File”,别选WebPack。WebPack装到一半断网,你就哭吧。
2.2 Vivado安装:别一路Next
安装Vivado,说白了就是三步:解压、选组件、等。
但这里有个坑——组件选择。
很多人图省事,全选。结果装完硬盘少了100G,很多组件根本用不上。我建议你这样选:
- Design Tools:全选(Vivado、Vitis、DocNav都要)
- Devices:只选你板子对应的系列。比如你用Zynq,就只选Zynq-7000和Zynq UltraScale+。别全选,真的没必要。
- Installation Options:安装路径不要有中文,不要有空格。我习惯用
C:\Xilinx\Vivado2023.2
警告:安装路径有中文?等着报错吧。我曾经帮一个学员远程调试,他路径写了个“开发板”,结果编译时所有路径都乱码了。改了一下午。
安装时间大概30-60分钟,取决于你的电脑。去泡杯咖啡吧。
2.3 板卡驱动安装:最容易翻车的一步
板卡驱动,说白了就是让电脑认识你的FPGA板子。
Windows系统下,插上板子,设备管理器里会看到一个未知设备。这时候别慌。
- 打开设备管理器,找到那个带黄色感叹号的设备
- 右键 → 更新驱动程序 → 浏览我的电脑
- 路径选到
C:\Xilinx\Vivado2023.2\data\xicom\cable_drivers\nt64\ - 安装完成,感叹号消失
嗯,这里要注意:有些板子需要先装驱动再插USB,有些反过来。我建议你先插上,看设备管理器认不认。不认再装驱动。
避坑指南:我曾经遇到过,驱动装好了,但设备管理器里显示“代码10:设备无法启动”。后来发现是USB线的问题——有些USB线只能充电,不能传数据。换根好点的线就好了。
2.4 JTAG调试器配置:连不上?多半是这里
JTAG调试器,说白了就是电脑和FPGA之间的桥梁。
Vivado自带的Hardware Manager就能识别JTAG链。你打开Vivado,点击 Open Hardware Manager → Auto Connect,正常情况下应该能看到你的板子。
如果连不上,别急。我总结了三个最常见的原因:
- 驱动没装好:回2.3节重装
- 板子没上电:这个听起来很蠢,但我真见过有人折腾一小时,最后发现电源没插
- JTAG频率太高:有些板子对JTAG时钟敏感。在Hardware Manager里右键 → Settings → 把JTAG频率降到6MHz试试
核心经验:JTAG连不上,80%是驱动问题,10%是线的问题,10%是板子没上电。按这个顺序排查,基本都能解决。
2.5 环境验证:Hello World LED
好了,环境搭好了,驱动装好了,JTAG也连上了。现在咱们来点亮第一个LED。
说白了,这就是FPGA界的“Hello World”。
新建一个Vivado工程,选对你的板子型号。然后新建一个Verilog文件,写这么几行:
module led_blink(
input clk,
input rst_n,
output reg led
);
reg [24:0] cnt;
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
cnt <= 0;
else
cnt <= cnt + 1;
end
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
led <= 0;
else if (cnt == 25'd24_999_999)
led <= ~led;
end
endmodule
这段代码什么意思?
你想想看,板子上的晶振一般是50MHz,也就是每秒跑5000万次。我们让计数器从0数到24999999,然后翻转LED。这样LED就会以1秒一次的频率闪烁。
然后加约束文件,把clk、rst_n、led对应到板子上的物理引脚。不同板子的引脚不一样,去查你的板子原理图。
综合、实现、生成比特流。然后下载到板子上——Program Device。
如果一切顺利,你会看到板子上的LED开始闪烁。
那一刻的感觉,怎么说呢? 我第一次点亮LED的时候,虽然只是个灯,但那种成就感,比后来调通DDR4还强烈。因为你知道,这条路走通了。
2.6 常见问题速查表
| 问题 | 原因 | 解决方法 |
|---|---|---|
| Vivado安装到一半卡住 | 网络不稳定 | 用离线安装包,别用WebPack |
| 设备管理器有感叹号 | 驱动没装 | 手动指定驱动路径 |
| JTAG连不上 | 频率太高或线有问题 | 降频到6MHz,换USB线 |
| 下载后LED不亮 | 引脚约束不对 | 查原理图,确认引脚号 |
| 编译报错 | 路径有中文 | 全部改成英文路径 |
2.7 本章知识体系
下面这张图,是我画的环境搭建整体流程。你跟着这个走,基本不会迷路。
好了,环境搭建就到这里。LED亮了,说明你的开发环境已经通了。接下来就可以开始真正的硬件加速实战了。
最后说一句:环境搭建是最枯燥的,但也是最值得花时间的。基础打牢了,后面学什么都快。别急着跳过去,一步一步来。