关注、星标公众号,精彩内容每日送达
来源:网络素材
Zynq 系列的亮点在于 FPGA 里包含了完整的 ARM 处理子系统(PS),每一颗 Zynq 系列的处理器都包含了Cortex-A9处理器,整个处理器的搭建都以处理器为中心, 而且处理器子系统中集成了内存控制器和大量的外设,使Cortex-A9的核在Zynq-7000中完全独立于可编程逻辑单元,也就是说如果暂时没有用到可编程逻辑单元部分(PL),ARM处理器的子系统也可以独立工作,这与以前的FPGA有本质区别,其是以处理器为中心的。Zynq就是两大功能块,PS部分和PL部分,说白了,就是 ARM 的 SOC 部分和 FPGA部分。其中,PS 集成了两个ARM Cortex™-A9 处理器, AMBA®互连,内部存储器,外部存储器接口和外设。这些外设主要包括USB总线接口,以太网接口,SD/SDIO 接口,I2C总线接口,CAN总线接口,UART接口,GPIO 等,下图是ZYNQ芯片总体框图。
在ZYNQ芯片内部用硬件实现了AXI总线协议,包括9个物理接口,分别为AXI-GP0~AXI-GP3,AXI-HP0~AXI-HP3,AXI-ACP接口。
AXI_ACP接口:ARM多核架构下定义的一种接口,中文翻译为加速器一致性端口,用来管理 DMA之类的不带缓存的 AXI 外设,PS 端是 Slave 接口。
AXI_HP接口:高性能/带宽的AXI3.0标准的接口,总共有四个,PL模块作为主设备连接。主要用于 PL 访问 PS 上的存储器(DDR 和 On-Chip RAM)。
AXI_GP 接口:通用的 AXI 接口,总共有四个,包括两个 32 位主设备接口和两个 32 位从设备接口。
ZYNQ 作为首款将高性能 ARM Cortex-A9 系列处理器与高性能 FPGA 在单芯片内紧密结合的产品,为了实现 ARM 处理器和 FPGA 之间的高速通信和数据交互,发挥 ARM 处理器和 FPGA的性能优势,需要设计高效的片内高性能处理器与 FPGA 之间的互联通路。因此,如何设计高效的 PL 和 PS数据交互通路是 ZYNQ 芯片设计的重中之重,也是产品设计的成败关键之一。其实,在具体设计中我们往往不需要在连接这个地方做太多工作,我们加入 IP 核以后,系统会自动使用 AXI 接口将我们的 IP 核与处理器连接起来,我们只需要再做一点补充就可以了。AXI 就是 ARM 公司提出的AMBA(Advanced Microcontroller Bus Architecture)的一个部分,是一种高性能、高带宽、低延迟的片内总线,也用来替代以前的 AHB 和 APB 总线。第一个版本的 AXI(AXI3)包含在 2003年发布的 AMBA3.0 中,AXI的第二个版本 AXI(AXI4)包含在 2010 年发布的 AMBA 4.0 之中。
在 ZYNQ 中,支持 AXI-Lite, AXI4 和 AXI-Stream 三种总线:
AXI4-Lite:具有轻量级,结构简单的特点,适合小批量数据、简单控制场合。不支持批量传输,读写时一次只能读写一个字(32bit)。主要用于访问一些低速外设和外设的控制。
AXI4:接口和 AXI-Lite 差不多,只是增加了一项功能就是批量传输,可以连续对一片地址进行一次性读写。也就是说具有数据读写的 burst 功能。
上面两种均采用内存映射控制方式,即 ARM 将用户自定义 IP 编入某一地址进行访问,读写时就像在读写自己的片内RAM,编程也很方便,开发难度较低。代价就是资源占用过多,需要额外的读地址线、写地址线、读数据线、写数据线、写应答线这些信号线。
AXI4-Stream:这是一种连续流接口,不需要地址线(很像FIFO,一直读或一直写就行)。对于这类 IP,ARM 不能通过上面的内存映射方式控制(FIFO 根本没有地址的概念),必须有一个转换装置,例如 AXI-DMA 模块来实现内存映射到流式接口的转换。AXI-Stream 适用的场合有很多:视频流处理;通信协议转换;数字信号处理;无线通信等。其本质都是针对数值流构建的数据通路,从信源(例如 ARM 内存、 DMA、无线接收前端等)到信宿(例如 HDMI 显示器、高速 AD 音频输出,等)构建起连续的数据流。这种接口适合做实时信号处理。
在上图中可以看到PS与PL的交互还可以通过DMA和EMIO,实际上DMA是从HP口进行PS和PL的交互,当不想浪费AXI总线的时候,可以通过EMIO进行PS和PL的交互。搞清楚MIO,EMIO,GPIO可以通过下面三个点灯操作有一个比较形象的理解(1)PS通过MIO点亮PS端LED(2)PS通过EMIO点亮PL端LED(3)PS通过AXI点亮PL端LED。