1. 课程导论与实验环境搭建:Zynq架构概览、AXI总线协议基础、Vivado与Vitis开发环境安装与配置
各位同学,欢迎来到这门实战课。我是你们的老朋友,一个在Zynq上摸爬滚打了好几年的工程师。今天咱们先不急着写代码,把地基打牢了,后面才能盖高楼。
说实话,我刚开始接触Zynq的时候,也被PS和PL之间那套复杂的通信机制搞得头大。后来踩的坑多了,才慢慢摸清门道。这门课,就是要把我这些年总结的经验,尤其是那些调试和定位故障的“土办法”,都分享给你们。
1.1 Zynq架构概览:一个芯片,两个世界
Zynq是什么?说白了,它就是一个芯片里住了两个“人”。
- PS(Processing System):双核ARM Cortex-A9处理器,跑Linux或者裸机程序。它负责控制、运算、网络通信这些“动脑子”的活儿。
- PL(Programmable Logic):也就是FPGA部分。它负责高速数据采集、信号处理、自定义接口这些“力气活”。
这两个世界怎么沟通?靠的就是AXI总线。你可以把AXI想象成一条高速公路,PS和PL就是高速公路两端的城市。数据、控制信号、中断,都在这条路上跑。
核心观点: Zynq设计的精髓,就是把ARM的软件灵活性和FPGA的硬件加速能力结合起来。但结合不好,就是灾难。我见过太多项目,PS和PL各干各的,最后联调时发现数据对不上,那叫一个痛苦。
下面这张图,是我自己画的Zynq内部结构简图,帮你快速建立整体印象。
1.2 AXI总线协议基础:握手的艺术
AXI(Advanced eXtensible Interface)是ARM公司推出的高性能总线协议。在Zynq里,我们主要跟三种AXI打交道:
| 接口类型 | 特点 | 典型应用场景 | 我踩过的坑 |
|---|---|---|---|
| AXI4-Full | 高性能,支持突发传输,地址/数据分离 | DMA传输、大块数据搬运 | 突发长度没对齐,导致数据错位 |
| AXI4-Lite | 轻量级,单次传输,不支持突发 | 配置寄存器、读取状态 | 地址偏移算错,写错寄存器 |
| AXI4-Stream | 无地址,连续数据流 | 高速数据采集、视频流 | TLAST信号没处理好,丢帧 |
我的小建议: 刚开始做Zynq开发,优先用AXI4-Lite来调试。它简单,容易理解。等把通信链路调通了,再换成AXI4-Full或者Stream来跑性能。别一上来就搞复杂的,容易把自己绕进去。
AXI的握手信号,说白了就是五个通道:读地址、读数据、写地址、写数据、写响应。每个通道都有一套VALID/READY握手协议。
- VALID:发送方说“我准备好了,数据/地址有效”。
- READY:接收方说“我准备好了,可以接收”。
- 当VALID和READY同时为高时,传输发生。
为什么会这样设计?你想想看,如果发送方和接收方速度不一样,没有握手信号,数据就会丢。这个机制保证了不管两边跑多快,数据都不会丢。
1.3 Vivado与Vitis开发环境安装与配置
工欲善其事,必先利其器。咱们先把开发环境搭好。我个人习惯用Vivado 2020.1以上的版本,对Zynq-7000系列支持比较稳定。
1.3.1 安装前的准备
安装之前,先检查你的电脑配置。别装到一半发现硬盘不够,那就尴尬了。
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 10 64位 / Ubuntu 18.04 | Windows 11 / Ubuntu 20.04 |
| CPU | Intel Core i5 或 AMD 同等 | Intel Core i7 或 AMD Ryzen 7 |
| 内存 | 8 GB | 32 GB 或以上 |
| 硬盘 | 100 GB 空闲空间 | SSD 500 GB 或以上 |
注意: 安装路径不要有中文和空格!我曾经因为路径里有个空格,编译了一整天都报错,最后发现是路径问题。血的教训啊。
1.3.2 安装步骤
- 下载安装包:从Xilinx官网下载Vivado HLx WebPACK或Design Edition。建议下载包含Vitis的All-in-One安装包。
- 运行安装程序:以管理员身份运行。选择安装Vivado和Vitis。
- 选择产品:勾选“Vivado”和“Vitis”。如果你用的是Zynq-7000系列,不需要勾选Versal或UltraScale+。
- 选择器件:在“Design Tools”里,确保勾选了“Zynq-7000”器件支持。
- 等待安装:这个过程比较长,大概需要1-2小时。可以去喝杯咖啡,或者看看我后面的课程笔记。
- 配置License:安装完成后,配置License文件。可以用免费的WebPACK License,或者购买Node-Locked License。
1.3.3 验证安装
安装完成后,咱们验证一下环境是否正常。
# 打开终端(Linux)或命令提示符(Windows)
# 检查Vivado版本
vivado -version
# 检查Vitis版本
vitis -version
# 如果能看到版本信息,说明安装成功
验证小技巧: 创建一个最简单的Vivado工程,添加一个Zynq Processing System IP,然后生成Bitstream。如果能成功生成,说明你的环境完全OK。这一步虽然简单,但能帮你排除90%的环境问题。
1.4 本章小结
这一章,我们聊了Zynq的架构、AXI总线的基础,以及开发环境的搭建。这些东西看起来基础,但非常重要。我见过太多人,一上来就写代码,结果连PS和PL怎么通信都没搞清楚,最后调试到崩溃。
记住一句话:理解架构,比会写代码更重要。 后面的课程,我们会一步步深入,从最简单的AXI-Lite通信开始,一直到复杂的DMA和中断调试。每一步,我都会把我在项目中踩过的坑、总结的经验,毫无保留地分享给你们。