第二章:Vivado开发环境搭建
说实话,很多初学者一上来就急着写代码,结果卡在环境搭建上半天动不了。我见过太多人——装个Vivado装了两天,最后发现版本不对,或者license没搞定。嗯,这一章咱们就把这事彻底捋清楚。
核心要点:Vivado安装、工程创建流程、IP核集成与Block Design。这三步走顺了,后面写代码、做加速、上板验证才能一气呵成。
2.1 Vivado安装——别踩这些坑
先说说安装。Vivado这玩意儿挺大的,完整版大概40-50GB。我个人习惯只装Vivado和Vitis,不装DocNav那些花里胡哨的东西——省空间,也省时间。
安装步骤:
- 去Xilinx官网下载Vivado安装包(建议用2020.1或2021.1,这两个版本我实测最稳)
- 运行安装程序,选择“Vivado HL WebPACK”或“Vivado HL Design Edition”
- 勾选“Vivado”和“Vitis”两个组件
- 安装路径不要有中文,不要有空格——我吃过这个亏,编译报错查了半天
- 等待...大概1-2小时,去喝杯咖啡
注意:安装过程中如果提示缺少DLL或VC++运行库,别慌。去微软官网装个“Visual C++ Redistributable”就能解决。我曾经在Win10上卡在这步,折腾了半小时。
装完之后,记得申请免费license。Xilinx官网注册个账号,选“Vivado WebPACK License”,免费的。别傻乎乎去买付费版——除非公司报销。
2.2 Vivado工程创建流程
好,装完了。咱们创建一个工程试试。你想想看,一个典型的Zynq图像加速项目,工程结构应该怎么搭?
创建步骤:
- 打开Vivado,点击“Create Project”
- 输入工程名,比如“zynq_image_accel”
- 选择“RTL Project”,勾选“Do not specify sources at this time”
- 选择芯片型号:xc7z020clg484-1(这是Zybo Z7-20的型号)
- 点击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,点几下鼠标就完事了。我在项目中用过一次手动例化,后来再也没干过——太累了。
操作步骤:
- 在Flow Navigator中点击“Create Block Design”
- 输入设计名,比如“system”
- 点击“+”号,添加IP核:搜索“Zynq7 Processing System”
- 双击Zynq IP核,配置PS参数:
- DDR配置:选择你的板子对应的DDR型号
- UART:打开MIO 14和MIO 15(串口用)
- HP Slave AXI:打开,用于PL访问DDR
- 点击“Run Block Automation”——Vivado会自动帮你连线
你看,是不是很简单?但这里有个坑——自动连线不一定全对。我建议你手动检查一下:
- FCLK_CLK0是否连到了AXI互联的时钟?
- FCLK_RESET0_N是否连到了复位?
- M_AXI_GP0是否连到了AXI SmartConnect?
嗯,这些细节决定了你的系统能不能跑起来。
2.4 知识体系总览
为了让你更直观地理解这一章的内容,我画了一张流程图。你看看这个结构,心里就有数了。
2.5 实战:第一个Block Design
光说不练假把式。咱们来做一个最简单的Block Design——就一个Zynq PS核,连上DDR和UART。这是所有Zynq项目的起点。
具体操作:
- 在Block Design中右键,选择“Add IP”,搜索“Zynq7 Processing System”
- 双击IP核,进入配置界面
- 在“Peripheral I/O Pins”中,勾选UART 1(MIO 14和MIO 15)
- 在“DDR Configuration”中,选择你的DDR型号(比如MT41K256M16RE-15E)
- 在“Clock Configuration”中,设置CPU主频为667MHz
- 点击OK,退出配置
- 点击“Run Block Automation”,Vivado会自动添加AXI互联和复位模块
验证方法:点击“Validate Design”(绿色勾号),如果没有报错,说明你的Block Design没问题。我每次做完都会点一下这个——省得后面综合报错再回头改。
嗯,到这里,你的第一个Block Design就完成了。是不是比想象中简单?说白了,Zynq开发就是搭积木——把PS和PL的IP核拖进来,连上线,然后写点胶水代码。
个人经验:我刚开始做Zynq项目时,总想着把所有功能都塞进Block Design。后来发现,有些简单的逻辑(比如LED闪烁)直接在顶层RTL里写反而更快。Block Design适合复杂的互联,别滥用。
好了,这一章的内容就到这里。环境搭好了,下一章咱们就可以开始写真正的图像加速代码了。
可可精品资料库