ZYNQ-7000嵌入式开发学习笔记(1):开发板基础知识
目录
一、摘要
Zynq-7000是Xilinx(现AMD)推出的All Programmable SoC,它不是简单的"ARM+FPGA"拼接,而是将两者通过高速总线深度融合的单芯片解决方案。好比把大脑和小脑长在了一起,神经直接相连。
它由两大部分组成:
PS (Processing System): 即处理器系统部分——双核ARM Cortex-A9 MPCore处理器子系统,运行软件,处理复杂控制任务
PL (Programmable Logic): 即编程逻辑部分——等价于Artix-7/Kintex-7 FPGA fabric,实现硬件加速、接口扩展
两者通过AXI高性能总线直连,带宽高达数GB/s,延迟仅几十个纳秒,这才是Zynq的灵魂所在。
以黑金AX7020为例

此款开发平台是 XILINX 的 Zynq7000 SOC 芯片的解决方案。它采用 ARM+FPGA SOC 技术将双核 ARM Cortex-A9 和 FPGA 可编程逻辑集成在一颗芯片上。它采用的是 Xilinx 的Zynq7000 系列 XC7Z020-2CLG400I 作为核心处理器,在 ARM 和 FPGA 上分别具有丰富的硬件资源和外围接口。
二、ZYNQ7000-结构示意图
2.1 ZYNQ7020主要结构及功能
在 AX7020 开发板上, ZYNQ7000 的 PS部分和 PL 部分都搭载了丰富的外部接口和设备,方便用户的使用和功能验证。另外开发板上集成了 Xilinx USB Cable 下载器电路,用户只要用一个 USB 线就可以对开发板进行下载和调试。
下图为整个 AX7020 整个系统的结构示意图:

平台所含有的接口和功能
- 电源
- ARM芯片:基于精简指令集(
RISC)的处理器架构,可以理解为电脑CPU,在ZYNQ7000系列中主要型号为ARM Cortex-A9 MPCore双核处理器 - 两片DDR3 SRAM:DDR的全称为Double Data Rate SDRAM(双倍速率的SDRAM),就是我们平时说的内存颗粒,也就是内存芯片。可作为zynq芯片数据的缓存,也可以作为操作系统运行的内存
- 一片QSPI FLASH:Flash存储器,又叫做闪存,可以用于zynq芯片的系统文件、程序代码、用户数据的存储
- 一路以太网RJ-45接口
- 一路HDMI:一路 HDMI 图像视频输入输出接口, 能实现 1080P 的视频图像传输;
- 一路USB HOST接口:开发板作为主设备,可用于开发板连接鼠标、键盘和优盘等USB外设;AX7020还有一个USB SLAVE接口,这里开发板作为从设备,USB接口用于连接电脑
- 一路USB OTG接口:OTG(On-The-Go)是一种USB标准,用于和PC或者USB设备的OTG通信(它允许USB设备在主机模式和设备模式之间切换)
- 一路USB UART接口:UART指的是Universal Asynchronous Receiver/Transmitter
(通用异步收发器),是一种串口协议,使用TTL电平标准,常用于和PC串口通信 - 一片实时时钟:用于提供时钟信号,时钟的作用就是充当各种进程的执行节拍
- 6个LED灯:2个PS LED灯,4个PL LED灯
- 7个按键:1个CPU复位按键,2个PS控制按键,4个PL控制按键
- 一个33.333Mhz的有源晶振:给PS系统提供稳定的时钟源
- 一个50Mhz的有源晶振:为PL逻辑提供额外的时钟
- 2路40阵的扩展口(2.54mm间距):用于扩展zynq的PL部分的IO,可以接7寸TFT模块、摄像头模块和AD/DA模块
- 一个12针的扩展口(2.54mm间距):用于扩展zynq的PS系统的MIO
- 一路USB JTAG口:在 AX7020 开发板上,JTAG 接口的形式是 USB 接口方式的,通过JTAG口对zynq系统进行调试以及程序烧写(支持PS部分+PL部分的程序烧写)
- 一路MICRO SD卡座:用于插卡——存储操作系统镜像和文件系统
需要注意UART一般用于和PC端通信,主要用于输出开发板的启动日志、调试信息的打印,或在PC端通过串口终端向开发板发送shell指令(如控制 uboot 执行烧写命令);如果想要烧写程序或者进行开发板调试请使用JTAG接口,并将开发板跳帽调整为JTAG输入模式。
需要注意的是AX7020 开发板的 JTAG 调试接口, 在电路板上已经集成了 JTAG 的下载调试电路,所以我们无需购买额外的 Xilinx 下载器。只要一根 USB 线就能进行 ZYNQ 的开发和调试了。以下是JTAG实物图。

2.2 ZYNQ 7020启动配置
之前提到我们实际需要通过JTAG接口去对开发版进行调试,同时需要将开发板的调帽调整到JTAG模式用以锁定开发板的启动模式,那么开发板有几种启动模式呢?
AX7020 开发平台支持三种启动模式。这三种启动模式分别是 JTAG 调试模式,QSPI FLASH 和 SD 卡启动模式。ZYNQ702 芯片上电后会检测响应 MIO 口的电平来决定那种启动模式。用户可以通过核心板上的 J13 的跳线来选择不同的启动模式。J13 启动模式配置如下表 所示。
| J13 | 跳帽位置 | 启动模式 |
|
| 连接左边两个引脚 | SD Card |
| 连接中间两个引脚 | QSPI FLASH | |
| 连接右边边两个引脚 | JTAG |
三、ZYNQ7000-组成框架图
已知ZYNQ70007000芯片的主要包含PL以及PS部分,PS系统集成了两个ARM (cortex-A9)处理器,AMBA互连,内部存储器,外部存储器接口和外设。这些外设主要包括USB总线接口,以太网接口,SD/SDIO接口与,I2C总线接口,CAN总线接口,UART接口,GPIO等。PS可以独立运行并在上电或复位下启动。
zynq7000芯片的总体框架如下图所示

3.1 PS系统的主要参数
- ARM 双核 CortexA9 的应用处理器
- 片上 boot ROM 和 256KB 片内 RAM
- 外部存储接口, 支持 16/32 bit DDR2、 DDR3 接口
- 两个千兆网卡支持:发散-聚集 DMA , GMII, RGMII, SGMII 接口
- 两个 USB2.0 OTG 接口,每个最多支持 12 节点
- 两个 CAN2.0B 总线接口
- 两个 SD 卡、 SDIO、 MMC 兼容控制器
- 2 个 SPI, 2 个 UARTs, 2 个 I2C 接口
- 4 组 32bit GPIO, 54( 32+22)作为 PS 系统 IO, 64 连接到 PL
- PS 内和 PS 到 PL 的高带宽连接
PS系统中涉及许多模块,但是最容易让人混淆还是其复杂多样的接口,因此在该部分我决定拓展一下关于PS各种接口的知识点。接口这一部分我主要总结了四种:CAN、SPI、UART、I2C,主要围绕它们各自的特点以及各自应用场景去进行介绍(原帖更为详细,对这一块感兴趣的可以跳转至:https://blog.csdn.net/dsafefvf/article/details/155751347?spm=1001.2014.3001.5506)。
首先我们提到的CAN、SPI、UART、I2C其实都是通信中的“语法”,即串口总线通信协议。那么也许有人疑问在串口通信中我们还总接触到TTL、RS232、RS422、RS485这些名词,那这些又是什么?其实TTL、RS232、RS422、RS485是串口通信中的电平标准,通信协议和电平标准不是一个层级的概念。
以UART与TTL为例:
- UART 是一种 通信规则(协议),规定数据怎么打包、怎么发送。
- TTL 是一种 物理电平标准,规定用多少电压、几根线来传输信号。
我们通常可以这样描述他们:开发板片内的UART接口使用的是TTL电平标准。
3.1.1 UART接口
a.UART 核心特点
| 特点 | 解释 |
|---|---|
| 异步 | 没有时钟线!靠双方提前约定“语速”(波特率) |
| 串行 | 数据一位一位地传(像排队过独木桥) |
| 全双工 | 有两条线:一条发(TX),一条收(RX),能同时说话和听 |
b.UART 一帧数据结构
UART 把每个字节(8 位)包装成一个“数据帧”:
[起始位] [数据位] [校验位] [停止位]
0 D0~D7 (可选) 1
举个例子:发送字母 'A'(ASCII = 65 = 01000001)
- 起始位:0(表示“我要开始说话了!”)
- 数据位:从最低位开始发 → 1 0 0 0 0 0 1 0
- 停止位:1(表示“我说完了!”)
那么如果没有校验位就是我们常说的“8位数据位+NONE校验+1位停止位”=8N1(这个相信大家用过串口调试助手的都配置过)
c.UART 应用场景
UART接口不同的应用场景往往会搭配不同的电平标准
| 名称 | 类型 | 作用 | 电平 | 距离 | 速度 | 线数 |
|---|---|---|---|---|---|---|
| UART | 通信协议 | 规定数据帧格式、波特率等 | 不定义(依赖物理层) | - | - | 2(TX/RX) |
| TTL | 电平标准 | 芯片间短距离通信 | 0V / 3.3V 或 5V | < 0.5m | 高(>1Mbps) | 2 |
| RS232 | 电平标准 | 老式电脑串口 | ±3V~±15V(负逻辑) | ≤15m | ≤115kbps | 3(TX/RX/GND) |
| RS422 | 电平标准 | 工业长距离通信 | 差分 ±2V~±6V | ≤1200m | ≤10Mbps | 4(TX±, RX±)+GND |
3.1.2 SPI接口
SPI全称是Serial Peripheral Interface(串行外设接口),主要用于连接外设
a.SPI 核心特点
| 特性 | 说明 |
|---|---|
| 同步 | 由主设备提供时钟(SCLK),收发双方严格同步 |
| 全双工 | 能同时发送和接收数据(像对讲机) |
| 主从架构 | 1 个主设备(Master),可带多个从设备(Slave) |
| 无地址 | 靠“片选线”(CS)直接选中某个从设备 |
b.SPI 需要几根线?
最少 4 根(标准 SPI):
| 信号线 | 全称 | 方向(从主设备看) | 作用 |
|---|---|---|---|
| SCLK | Serial Clock | 输出 | 时钟信号,由主设备产生 |
| MOSI | Master Out Slave In | 输出 | 主设备 → 从设备 的数据线 |
| MISO | Master In Slave Out | 输入 | 从设备 → 主设备 的数据线 |
| CS/SS | Chip Select / Slave Select | 输出 | 片选信号,低电平有效 |
c.SPI 应用场景
- SD 卡、Flash 存储器(高速读写)
- TFT/OLED 显示屏(快速刷屏)
- 高速 ADC/DAC(模数转换器)
3.1.3 I2C 接口
I2C全称Inter-Integrated Circuit(集成电路间总线),主要用于片间通信
a.I2C 核心特点
| 特性 | 说明 |
|---|---|
| 同步 | 由主设备提供时钟(SCL) |
| 半双工 | 同一时间只能单向传输(像对讲机按住说话) |
| 多主多从 | 支持多个主设备(但通常只用一个) |
| 地址寻址 | 每个从设备有唯一地址(7 位或 10 位) |
b.I2C 需要几根线?
只需要 2 根!
| 信号线 | 全称 | 作用 |
|---|---|---|
| SDA | Serial Data | 双向数据线(所有设备共享) |
| SCL | Serial Clock | 时钟线(由主设备控制) |
c.I2C 应用场景
- 温湿度传感器(DHT20, SHT30)
- 实时时钟(DS1307)
- 小容量 EEPROM(AT24C02)
- IO 扩展芯片(PCF8574)
3.1.4 CAN 接口
a.CAN 核心特点
| 特性 | UART | SPI | I²C | CAN |
|---|---|---|---|---|
| 拓扑 | 点对点 | 星型(主从) | 总线(多从) | 总线(多主) |
| 地址 | 无 | CS 片选 | 7/10 位地址 | ID = 优先级(非地址) |
| 同步 | 异步 | 同步 | 同步 | 异步(但有位同步) |
| 错误处理 | 无 | 无 | ACK/NACK | CRC + 自动重传 + 故障隔离 |
| 物理层 | TTL/RS232 | 单端 | 开漏+上拉 | 差分(CAN_H/CAN_L) |
| 典型速率 | ≤115kbps | ≤100Mbps | ≤3.4Mbps | ≤1Mbps(经典 CAN) |
b.CAN 帧结构(以标准帧为例)
一帧 CAN 数据包含:
[SOF] [ID(11bit)] [RTR] [IDE] [DLC] [Data(0~8字节)] [CRC] [ACK] [EOF]
| 字段 | 说明 |
|---|---|
| SOF | 帧起始(1 位显性) |
| ID | 11 位标识符(决定优先级,数值越小优先级越高) |
| RTR | 远程请求位(0=数据帧,1=请求数据) |
| DLC | 数据长度(0~8 字节) |
| Data | 实际数据(最多 8 字节) |
| CRC | 15 位校验码(硬件自动生成/校验) |
| ACK | 接收方应答(正确接收则拉低) |
c.CAN 的独特机制
1. 非破坏性仲裁
- 多个节点同时发?ID 小的胜出
- 仲裁过程中,输的一方自动停止发送,转为接收
- 无数据冲突,且高优先级消息零延迟
2. 错误检测与恢复
- 每个节点监控总线发现错误(位错误、CRC 错误等)
- 发送错误帧
- 发送方自动重发,直到成功
3. 故障封闭
- 如果某个节点持续出错会被自动离线(Bus Off)不影响其他节点通信
d.CAN 的应用场景
| 场景 | 推荐协议 |
|---|---|
| 调试打印、连电脑 | UART |
| 高速读写 Flash/SD卡 | SPI |
| 连多个传感器(温湿度、RTC) | I²C |
| 汽车电子、工业控制、多节点实时通信 | ✅ CAN |
3.1.5 UART、SPI、I2C、CAN 终极对比表
| 类型 | 名称 | 本质 | 典型用途 | 线数 | 距离 | 速度 | 特点 |
|---|---|---|---|---|---|---|---|
| 串行协议 | UART | 异步串行协议 | 调试打印、连蓝牙/WiFi | 2~3 | <15m (TTL)≤1200m (RS485) | ≤115kbps | 点对点,简单 |
| 串行协议 | SPI | 同步全双工协议 | Flash、SD卡、显示屏 | ≥4 | <0.5m | ≤100Mbps | 高速,引脚多 |
| 串行协议 | I2C | 同步半双工总线 | 传感器、RTC、EEPROM | 2 | <0.5m | ≤3.4Mbps | 引脚少,地址寻址 |
| 串行协议 | CAN | 多主广播总线 | 汽车、工业控制 | 2(差分) | ≤1km | ≤1Mbps | 高可靠,自动仲裁 |
3.2 PL系统的主要参数
- 逻辑单元Logic Cells: 85K
- 查找表 LUTs: 53,200
- 触发器(flip-flops): 106,400
- 乘法器 18x25MACCs: 220
- Block RAM: 4.9 Mb
- 两个 AD 转换器,可以测量片上电压、温度感应和高达 17 外部差分输入通道, 1MBPS
3.3 PS与PL之间的通信
这是Zynq最核心的机制。通信方式有三层:
第一层:PS→PL控制通道
- AXI_GP (General Purpose): 2个主接口+2个从接口,32位数据总线,适合低速寄存器配置
- AXI_HP (High Performance): 4个高速主接口,64位数据总线,支持突发传输,适合大数据搬移
- AXI_ACP (Accelerator Coherency Port): 1个高速从接口,支持硬件一致性缓存,是PL访问PS缓存的"后门"
第二层:中断与事件
- IRQ_F2P[15:0]: PL→PS的16个中断信号,直连GIC中断控制器
- Event信号: 用于唤醒CPU、触发DMA等
第三层:共享资源
- OCM (On-Chip Memory): 256KB SRAM,双方都可访问
- DDR内存: 通过AXI_HP/ACP共享
- MIO/EMIO: 将引脚灵活分配给PS或PL
- 工程经验: AXI_HP是数据传输主力,实测带宽可达1.2GB/s以上;AXI_ACP虽然方便,但会拖慢CPU缓存性能,非必要不用。
四、ZYNQ7000-结构尺寸
尺寸为130mmx90mm,pcb采用8层板设计。板子四周有4个螺丝定位孔(直径为3.5mm)

更多推荐




所有评论(0)