总体架构图为:
- PS (Processing System)中对外通信管脚::
- MIO (Multiplexed Input/Output,MIO): 利用复用的输入 / 输出,和外部接口之间通信,一共54 个引脚。MIO在zynq上的管脚是固定的,占用IO号为0-53。
- EMIO (Extended MIO,EMIO): 是通过PL部分扩展的,所以使用EMIO时候需要在约束文件中分配管脚,占用IO号为54-117。EMIO 并不是 PS 和外部连接之间的直接通路,而是通过共用了 PL 的 I/O 资源来实现的。
当需要扩展超过 54 个引脚的时候可以用 EMIO,而当 PL 中实现了一个 IP 包的时候,这也是 PS 和 PL 中的IP 包接口的一种方法(即PS可以利用EMIO和PL进行通信)
-
**PL (Programmable Logic) 和 PS的通信接口 **
- 通用AXI(General Purpose AXI): 一共有四个,对应图中主机互联和从机互联。32 位数据总线,适合PL 和PS 之间的中低速通信。接口是透传的不带缓冲。
- 加速器一致性端口(Accelerator Coherency Port): 在PL 和APU 内的SCU之间的单个异步连接,总线宽度为64 位。这个端口用来实现APU cache 和PL的单元之间的一致性(直接和PS中的APU相连)
- 高性能端口(High Performance Ports): 带有FIFO缓冲来提供“ 批量” 读写操作,并支持PL 和PS 中的存储器单元的高速率通信。数据宽度是32 或64 位,在所有四个接口中PL 都是做主机的。(PL直接从DDR中获取数据)
- EMIO: 原本是用来连接I2C等协议的外设,也可以给PS使用。
PYNQ中python类对应:
- GPIO: 对应MIO, EMIO。(类似于单片机中的GPIO)
- MMIO: 对应GP AXI,即通用AXI端口。(调用IP核,PS给PL数据时候用)
- Xlnk: 对应HP AXI,访问DDR内存,即高性能AXI端口。(访问PS 的 DRAM, 用以PL需要内存时候,PS分配内存给PL)
- DMA: 对应HP AXI,访问DMA,即高性能AXI端口
AXI 协议
- AXI4: 通过一簇高达256 个数据字(或“ 数据拍(data beats)”)的数据传输来给定一个地址。
- AXI4_LITE: 只支持每次连接传输一个数据(非批量)。
- AXI4-Stream: 用于高速流数据,支持批量传输无限大小的数据。没有地址机制,这种总线类型最适合源和目的地之间的直接数据流。