1. 系统概述与开发环境搭建
大家好,我是你们的FPGA讲师。今天咱们正式开始《Zynq图像采集与显示系统实战》的第一章。
说实话,每次带新人入门Zynq,我都能看到大家被那个「ARM+FPGA」的架构搞得一头雾水。别急,咱们慢慢来。这一章,我带你先把地基打牢。
1.1 Zynq-7000系列架构简介
Zynq-7000 是什么?说白了,它是一颗芯片里同时塞了一个 ARM 处理器和一个 FPGA 逻辑阵列。这不是简单的「拼在一起」,而是通过高速总线紧密耦合。
我个人习惯把 Zynq 的架构分成两大部分:
- PS(Processing System):也就是 ARM Cortex-A9 双核处理器那部分。它跑 Linux 或者裸机程序,负责控制、通信、算法调度。
- PL(Programmable Logic):也就是 FPGA 逻辑部分。它负责高速数据流处理、接口协议、实时控制。
这两者之间通过 AXI 总线互联。我在项目中遇到过不少新手,以为 PS 和 PL 是各自独立的,结果写代码时才发现数据交互没打通,整个项目推倒重来。嗯,这里要注意:PS 和 PL 的通信设计,必须在项目一开始就规划好。
核心知识点:Zynq 的 PS 部分包含:
- 双核 ARM Cortex-A9,主频最高 1GHz
- DDR 控制器、DMA 控制器
- 千兆以太网、USB、UART、I2C、SPI 等外设
- 片上存储器(OCM)256KB
PL 部分则是传统的 FPGA 架构,包含 LUT、FF、BRAM、DSP Slice 等资源。
你想想看,为什么我们要用 Zynq 做图像采集?因为图像传感器输出的数据是高速并行的,ARM 软件处理不过来。FPGA 可以流水线处理,ARM 负责高层控制。各取所长,这才是 Zynq 的精髓。
1.2 图像采集系统组成
一个完整的图像采集与显示系统,通常包含以下几个环节:
- 图像传感器:比如 OV5640 摄像头,输出 MIPI 或 DVP 接口的数据。
- FPGA 采集模块:负责接收传感器数据,进行格式转换、缓存。
- DDR 缓存:图像数据量大,必须用 DDR 做帧缓存。
- 显示驱动:从 DDR 读取数据,驱动 HDMI 或 LCD 屏幕。
- ARM 控制:配置摄像头参数、控制采集流程、处理用户交互。
我曾经做过一个项目,摄像头采集的图像老是出现花屏。排查了三天,最后发现是传感器配置的时钟频率不对。所以啊,时序问题永远是图像采集的第一道坎。
避坑指南:图像采集系统的数据流,建议用 AXI4-Stream 接口。它简单、高效,Vivado 里的 IP 核基本都支持。我曾经用自定义接口,结果调试时差点崩溃。
1.3 Vivado 与 Vitis 开发环境安装
工欲善其事,必先利其器。咱们先搞定开发环境。
Vivado 是 Xilinx 的 FPGA 设计套件,负责 PL 部分的开发:写 Verilog、综合、布局布线、生成比特流。
Vitis 是 Xilinx 的嵌入式软件开发环境,负责 PS 部分的开发:写 C/C++ 代码、编译、调试、运行。
安装步骤其实不复杂,但有几个坑我得提前告诉你:
- 版本匹配:Vivado 和 Vitis 必须同一版本。我用 2020.2 配 2020.2,千万别混搭。
- 磁盘空间:完整安装需要 100GB 以上。我建议只安装你需要的器件支持包,比如 Zynq-7000 系列。
- 安装路径:不要有中文和空格。我见过有人装在「D:\程序\Vivado」下,结果编译报错,查了半天。
- License:申请免费的 WebPACK 许可证就够了,Zynq-7000 全系列都支持。
警告:安装过程中会提示安装驱动,务必勾选。否则下载器连不上开发板,你会怀疑人生的。
1.4 开发板资源介绍
咱们课程用的是 Zynq-7020 开发板,具体型号是黑金 AX7020 或者米联客的 MA7035,资源基本一致。
这块板子上的核心资源,我列个表给你看:
| 资源 | 规格 | 用途 |
|---|---|---|
| FPGA 芯片 | XC7Z020-1CLG400C | PS + PL 一体 |
| DDR3 | 512MB / 1GB | 图像帧缓存 |
| QSPI Flash | 128Mb | 存储启动镜像 |
| HDMI 输出 | ADV7511 芯片 | 显示图像 |
| 摄像头接口 | DVP 或 MIPI | 连接图像传感器 |
| UART 串口 | USB 转串口 | 调试信息输出 |
| 按键 / LED | 4 个按键 + 4 个 LED | 用户交互 |
我个人建议,拿到开发板后先做两件事:
- 上电测试:看看板子自带的 Demo 能不能跑起来,确认硬件没问题。
- 连接串口:用 Putty 或者 MobaXterm 连上 UART,波特率 115200。这样你才能看到 ARM 打印的信息。
1.5 本章知识体系
为了让你更直观地理解本章内容,我画了一张结构图:
这张图把本章的四个核心模块串起来了。你仔细看看,每个模块之间其实是有依赖关系的——先懂架构,才能理解系统组成;环境搭好了,才能操作开发板。
好了,第一章的内容就到这里。环境安装这块,如果你遇到问题,别硬扛。我当年装 Vivado 装了三遍才成功,第一遍缺文件,第二遍 License 没配好。很正常,慢慢来。