目录

一、摘要

二、ZYNQ7000-结构示意图

2.1 ZYNQ7020主要结构及功能

2.2 ZYNQ 7020启动配置

三、ZYNQ7000-组成框架图

3.1 PS系统的主要参数

3.1.1 UART接口

a.UART 核心特点

b.UART 一帧数据结构

c.UART 应用场景

3.1.2 SPI接口

a.SPI 核心特点

b.SPI 需要几根线?

c.SPI 应用场景

3.1.3 I2C 接口

a.I2C 核心特点

b.I2C 需要几根线?

3.1.4 CAN 接口

a.CAN 核心特点

b.CAN 帧结构(以标准帧为例)

c.CAN 的独特机制

d.CAN 的应用场景

3.1.5 UART、SPI、I2C、CAN 终极对比表

3.2 PL系统的主要参数

3.3 PS与PL之间的通信

第一层:PS→PL控制通道

第二层:中断与事件

第三层:共享资源

四、ZYNQ7000-结构尺寸


一、摘要

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≤115kbps3(TX/RX/GND)
RS422电平标准工业长距离通信差分 ±2V~±6V≤1200m≤10Mbps4(TX±, RX±)+GND

3.1.2 SPI接口

SPI全称是Serial Peripheral Interface(串行外设接口),主要用于连接外设

a.SPI 核心特点
特性说明
同步由主设备提供时钟(SCLK),收发双方严格同步
全双工能同时发送和接收数据(像对讲机)
主从架构1 个主设备(Master),可带多个从设备(Slave)
无地址靠“片选线”(CS)直接选中某个从设备

b.SPI 需要几根线?

最少 4 根(标准 SPI):

信号线全称方向(从主设备看)作用
SCLKSerial Clock输出时钟信号,由主设备产生
MOSIMaster Out Slave In输出主设备 → 从设备 的数据线
MISOMaster In Slave Out输入从设备 → 主设备 的数据线
CS/SSChip 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 根!

信号线全称作用
SDASerial Data双向数据线(所有设备共享)
SCLSerial Clock时钟线(由主设备控制)

c.I2C 应用场景

  • 温湿度传感器(DHT20, SHT30)
  • 实时时钟(DS1307)
  • 小容量 EEPROM(AT24C02)
  • IO 扩展芯片(PCF8574)

3.1.4 CAN 接口

a.CAN 核心特点
特性UARTSPII²CCAN
拓扑点对点星型(主从)总线(多从)总线(多主)
地址无CS 片选7/10 位地址ID = 优先级(非地址)
同步异步同步同步异步(但有位同步)
错误处理无无ACK/NACKCRC + 自动重传 + 故障隔离
物理层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 位显性)
ID11 位标识符(决定优先级,数值越小优先级越高)
RTR远程请求位(0=数据帧,1=请求数据)
DLC数据长度(0~8 字节)
Data实际数据(最多 8 字节)
CRC15 位校验码(硬件自动生成/校验)
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异步串行协议调试打印、连蓝牙/WiFi2~3<15m (TTL)≤1200m (RS485)≤115kbps点对点,简单
串行协议SPI同步全双工协议Flash、SD卡、显示屏≥4<0.5m≤100Mbps高速,引脚多
串行协议I2C同步半双工总线传感器、RTC、EEPROM2<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)

更多推荐