3、Vivado硬件平台创建:创建Vivado工程、添加IP核、配置Zynq/MPSoC处理器系统、生成硬件描述文件(XSA)
好,咱们正式开始动手。这一章是整个Vitis加速核开发流程的基石——搭建Vivado硬件平台。说白了,就是给加速核准备好一个能跑起来的“家”。
我见过不少新手,一上来就急着写代码,结果硬件平台没搭对,后面调试时各种报错,回头再改,反而更浪费时间。所以,咱们一步一个脚印,把基础打牢。
3.1 创建Vivado工程
打开Vivado,版本我建议用2020.1或更新的,太老的版本对Vitis支持不好。我个人习惯用命令行创建工程,但为了照顾大多数同学,咱们还是用GUI方式。
- 启动Vivado,点击Create Project。
- 弹窗里选RTL Project,勾上Do not specify sources at this time。为什么?因为咱们的加速核逻辑是后面由Vitis生成的,现在不需要手动添加。
- 选择器件。如果是Zynq-7000系列,比如XC7Z020;如果是MPSoC,比如XCZU9EG。我建议直接选你开发板对应的型号,省事。
- 点击Finish,工程就建好了。
小技巧: 工程名字别用中文,路径也别有空格。我在项目中吃过这个亏,编译报错找了半天,结果发现是路径里有空格。
3.2 添加IP核
工程建好后,咱们要添加IP核。这里主要添加两类:
- Zynq7 Processing System 或 Zynq UltraScale+ MPSoC:这是处理器系统。
- AXI Interconnect:用于连接处理器和加速核的AXI总线。
操作步骤:
- 点击左侧IP INTEGRATOR → Create Block Design。
- 给Block Design起个名字,比如
system。 - 在Diagram窗口中右键 → Add IP,搜索并添加上述IP核。
嗯,这里要注意:添加Zynq IP后,它会自动弹出配置界面。别急着关,咱们下一步就要配置它。
3.3 配置Zynq/MPSoC处理器系统
这是最核心的一步。配置不对,后面全白搭。
3.3.1 Zynq-7000配置要点
双击Zynq IP核,进入配置界面。我个人习惯按以下顺序配置:
| 配置项 | 推荐设置 | 说明 |
|---|---|---|
| PS-PL Configuration | 勾选AXI HP0/HP1/HP2/HP3 | 加速核需要高带宽接口,HP口是必须的 |
| Clock Configuration | PL Fabric Clocks: 100MHz或150MHz | 加速核的工作频率,别太高,否则时序难收敛 |
| DDR Configuration | 根据板子实际型号选择 | 我建议直接导入板级文件,省得手动配错 |
| MIO Configuration | UART、SD卡等外设按需勾选 | 至少留一个UART用于调试 |
避坑指南: 我曾经在配置DDR时,因为选错了型号,导致系统启动后内存只有一半可用。排查了两天才发现是DDR配置不对。所以,一定要核对板子的DDR颗粒型号。
3.3.2 MPSoC配置要点
MPSoC比Zynq复杂一些,多了RPU和GPU等模块。但核心配置思路一样:
- PS-PL接口:勾选AXI HPC0/FPD和AXI HPC1/FPD。MPSoC的加速器接口叫HPC,性能更强。
- 时钟:PL时钟可以配到200MHz甚至更高,但要看你的加速核能不能跑上去。
- DDR:MPSoC支持DDR4,配置时注意选择正确的速率和位宽。
配置完成后,点击Run Block Automation,Vivado会自动连接一些默认的接口。然后手动连接AXI Interconnect和Zynq的AXI主接口。
3.4 生成硬件描述文件(XSA)
配置完处理器系统后,咱们要生成XSA文件。这个文件是Vitis认识硬件的“身份证”。
- 在Block Design中右键 → Generate Output Products。
- 等待综合完成。这一步可能需要几分钟。
- 然后点击Create HDL Wrapper,选择Let Vivado manage wrapper and auto-update。
- 最后,在Flow Navigator中点击Generate Bitstream。
生成比特流后,导出硬件:
- File → Export → Export Hardware
- 勾选Include bitstream,点击OK。
- 导出的文件就是
.xsa格式,默认保存在工程目录下。
提示: 如果你只是做软件开发,不涉及硬件调试,可以不生成比特流,只导出硬件描述文件。但Vitis加速核需要比特流,所以建议每次都生成。
3.5 知识体系总览
为了让你更直观地理解整个流程,我画了一张图:
这张图把整个流程串起来了。你跟着走一遍,基本不会出错。
3.6 常见问题与经验
- 问题:Block Design中连线报错? 多半是接口没匹配上。检查AXI Interconnect的位宽和时钟是否与Zynq一致。
- 问题:生成比特流失败? 先看时序报告,是不是时钟频率设太高了。我一般先降到100MHz试跑,通了再提频。
- 问题:XSA文件导入Vitis后找不到加速核? 确认导出时勾选了Include bitstream,并且Block Design中预留了AXI接口给加速核。
核心总结:
- Vivado工程是硬件平台的基础,别偷懒用默认配置。
- Zynq/MPSoC配置时,重点关注AXI接口、时钟和DDR。
- XSA文件是连接Vivado和Vitis的桥梁,必须包含比特流。
好了,硬件平台搭建就到这里。你跟着操作一遍,应该能顺利生成XSA文件。下一章咱们就用这个文件,在Vitis里创建加速核工程。