第二章:Vivado开发环境搭建

说实话,很多初学者一上来就急着写代码,结果卡在环境搭建上半天动不了。我见过太多人——装个Vivado装了两天,最后发现版本不对,或者license没搞定。嗯,这一章咱们就把这事彻底捋清楚。

核心要点:Vivado安装、工程创建流程、IP核集成与Block Design。这三步走顺了,后面写代码、做加速、上板验证才能一气呵成。

2.1 Vivado安装——别踩这些坑

先说说安装。Vivado这玩意儿挺大的,完整版大概40-50GB。我个人习惯只装Vivado和Vitis,不装DocNav那些花里胡哨的东西——省空间,也省时间。

安装步骤:

  1. 去Xilinx官网下载Vivado安装包(建议用2020.1或2021.1,这两个版本我实测最稳)
  2. 运行安装程序,选择“Vivado HL WebPACK”或“Vivado HL Design Edition”
  3. 勾选“Vivado”和“Vitis”两个组件
  4. 安装路径不要有中文,不要有空格——我吃过这个亏,编译报错查了半天
  5. 等待...大概1-2小时,去喝杯咖啡

注意:安装过程中如果提示缺少DLL或VC++运行库,别慌。去微软官网装个“Visual C++ Redistributable”就能解决。我曾经在Win10上卡在这步,折腾了半小时。

装完之后,记得申请免费license。Xilinx官网注册个账号,选“Vivado WebPACK License”,免费的。别傻乎乎去买付费版——除非公司报销。

2.2 Vivado工程创建流程

好,装完了。咱们创建一个工程试试。你想想看,一个典型的Zynq图像加速项目,工程结构应该怎么搭?

创建步骤:

  1. 打开Vivado,点击“Create Project”
  2. 输入工程名,比如“zynq_image_accel”
  3. 选择“RTL Project”,勾选“Do not specify sources at this time”
  4. 选择芯片型号:xc7z020clg484-1(这是Zybo Z7-20的型号)
  5. 点击Finish,搞定

嗯,这里要注意。很多人一上来就选错芯片,后面综合报错才发现。我建议你提前查好板子的芯片型号,写在便签上贴显示器旁边。

工程创建完后,你会看到Vivado的界面。左侧是Flow Navigator,右侧是设计窗口。说白了,所有操作都从左边点进去。

小技巧:我个人习惯在工程目录下建三个文件夹:src(源码)、constr(约束)、ip(IP核)。这样管理起来清爽很多。别把所有文件都扔根目录,后面找起来想哭。

2.3 IP核集成与Block Design

这是Zynq开发的核心。Block Design说白了就是图形化搭积木——把PS(处理器系统)和PL(可编程逻辑)的IP核拖进来,连上线,搞定。

为什么用Block Design? 你想想看,如果让你手动写代码例化Zynq的PS配置,那得写几百行。用Block Design,点几下鼠标就完事了。我在项目中用过一次手动例化,后来再也没干过——太累了。

操作步骤:

  1. 在Flow Navigator中点击“Create Block Design”
  2. 输入设计名,比如“system”
  3. 点击“+”号,添加IP核:搜索“Zynq7 Processing System”
  4. 双击Zynq IP核,配置PS参数:
    • DDR配置:选择你的板子对应的DDR型号
    • UART:打开MIO 14和MIO 15(串口用)
    • HP Slave AXI:打开,用于PL访问DDR
  5. 点击“Run Block Automation”——Vivado会自动帮你连线

你看,是不是很简单?但这里有个坑——自动连线不一定全对。我建议你手动检查一下:

  • FCLK_CLK0是否连到了AXI互联的时钟?
  • FCLK_RESET0_N是否连到了复位?
  • M_AXI_GP0是否连到了AXI SmartConnect?

嗯,这些细节决定了你的系统能不能跑起来。

2.4 知识体系总览

为了让你更直观地理解这一章的内容,我画了一张流程图。你看看这个结构,心里就有数了。

Vivado开发环境搭建知识体系 Vivado安装 版本选择 · 组件勾选 · License 工程创建流程 RTL工程 · 芯片选型 · 目录结构 IP核集成与BD Block Design · 自动连线 · 配置 下载安装包 组件选择(Vivado+Vitis) License申请与配置 新建RTL工程 芯片型号选择 目录结构规划 创建Block Design 添加Zynq PS IP核 配置与自动连线 目标:搭建可用的Zynq图像加速开发环境

2.5 实战:第一个Block Design

光说不练假把式。咱们来做一个最简单的Block Design——就一个Zynq PS核,连上DDR和UART。这是所有Zynq项目的起点。

具体操作:

  1. 在Block Design中右键,选择“Add IP”,搜索“Zynq7 Processing System”
  2. 双击IP核,进入配置界面
  3. 在“Peripheral I/O Pins”中,勾选UART 1(MIO 14和MIO 15)
  4. 在“DDR Configuration”中,选择你的DDR型号(比如MT41K256M16RE-15E)
  5. 在“Clock Configuration”中,设置CPU主频为667MHz
  6. 点击OK,退出配置
  7. 点击“Run Block Automation”,Vivado会自动添加AXI互联和复位模块

验证方法:点击“Validate Design”(绿色勾号),如果没有报错,说明你的Block Design没问题。我每次做完都会点一下这个——省得后面综合报错再回头改。

嗯,到这里,你的第一个Block Design就完成了。是不是比想象中简单?说白了,Zynq开发就是搭积木——把PS和PL的IP核拖进来,连上线,然后写点胶水代码。

个人经验:我刚开始做Zynq项目时,总想着把所有功能都塞进Block Design。后来发现,有些简单的逻辑(比如LED闪烁)直接在顶层RTL里写反而更快。Block Design适合复杂的互联,别滥用。

好了,这一章的内容就到这里。环境搭好了,下一章咱们就可以开始写真正的图像加速代码了。


可可精品资料库