关于Zynq的理论部分,参考http://www.zynqbook.com/
本文大部分截图摘抄自《zynqbook》
ZYNQ架构
- 双核ARM Cortex-A9 处理器:ARM Cortex-A9 是一个应用级的处理器,能运行完整的像Linux 这样的操作系统
- 传统的现场可编程门阵列(Field Programmable Gate Array,FPGA)逻辑部件:基于Xilinx 7 系列的FPGA 架构
这个架构实现了工业标准的AXI 接口,在芯片的两个部分之间实现了高带宽、低延迟的连接。
这意味着处理器和逻辑部分各自都可以发挥最佳的用途,而不会有在两个分立的芯片之间的那种接口开销。
外设是处理器之外的功能部件,一般从事三种功能之一:(一)协处理器—— 辅助主处理器的单元,往往是被优化用于特定任务;(二)与外部接口交互的核心,如连接到LED 和开关、编解码器等等;(三)额外的存储器单元。
PS 具有固定的架构,承载了处理器和系统存储区
而PL 完全是灵活的,给了设计者一面“ 空白画布” 来创建定制的外设,或重用标准外设。
设计重用
IP——Intellectual Property(知识产权)
HLS——High Level Synthesis(高级合成)
RTL——Register Transfer Level(寄存器传输级)
ZYNQ的设计重用——PS硬件的性能特性时熟知的,并且集成进了软件里封装好了,因此可以从Xilinx或者第三方或开源库中获得IP,集成起来形成系统的设计。
ZYNQ的SoC设计流基本模型
ZYNQ芯片
处理器系统(PS)
ARM是一颗“硬”处理器,硬件处理器以外的另一种方案,就像Xilinx 的MicroBlaze这样的“软”处理器,这是由可编程逻辑部分的单元组合而成的。也就是说,一个软处理器的实现和部署在FPGA 的逻辑结构里的任何其他IP 包是等价的。要求不高的任务可以从主的ARM Cortex-A9 处理器上脱离出来,分配给软处理器,软处理器与ARM协同工作,提升整体性能
PS里并非只有ARM 处理器,还有一组相关的处理资源,形成了一个应用处理器单元(Application Processing Unit,APU),另外还有扩展外设接口、cache 存储器、存储器接口、互联接口和时钟发生电路
处理器系统外部接口——PS 和外部接口之间的通信主要是通过复用的输入/ 输出(Multiplexed Input/Output,MIO)实现的。这样的连接也可以通过扩展EMIO (ExtendedMIO,EMIO)来实现,EMIO 并不是PS 和外部连接之间的直接通路,而是通过共用了PL 的I/O 资源来实现的。
可用的I/O 包括标准通信接口(SPI,I2C,USB,SD,CAN,UART,GigE)和通用输入/ 输出(General Purpose Input/Output,GPIO)
可编程逻辑(PL)
LUT-查找表(https://www.cnblogs.com/lbf-19940424/p/6564885.html)
FF-触发器,一个实现1 位寄存的时序电路,带有复位功能。FF 的一种用处是实现锁存。
CLB-可配置编程逻辑块
IOB-输入/ 输出块(Input/Output Blocks,IOB)-实现了PL 逻辑资源之间的对接,并且提供物理设备“ 焊盘” 来连接外部电路。每个IOB 可以处理一位的输入或输出信号。IOB 通常位于芯片的周边。
除了通用的部分,还有两个特殊用途的部件:满足密集存储需要的块RAM 和用于高速算术的DSP48E1 片
通用输入输出IOB
通信接口--包括PCIExpress、串行RapidIO、SCSI 和SATA
其他可编程逻辑扩展接口--XADC,时钟,编程与调试
处理器系统与可编程逻辑的接口
1、AXI标准--Advanced eXtensible Interface
有三类AXI4总线协议
• AXI4 [2] — 用于存储映射链接,它支持最高的性能:通过一簇高达256 个数据字(或“ 数据拍(data beats)”)的数据传输来给定一个地址。 • AXI4-Lite [2] — 一种简化了的链接,只支持每次连接传输一个数据(非批量)。AXI4-Lite也是存储映射的:这种协议下每次传输一个地址和单个数据。
• AXI4-Stream [1] — 用于高速流数据,支持批量传输无限大小的数据。没有地址机制,这种总线类型最适合源和目的地之间的直接数据流(非存储器映射)
互联(Interconnect) — 互联实际上是一个开关,管理并直接传递所连接的AXI 接口之间的通信。在PS 内有几个互联,其中有些还直接连接到PL (如图2.9),而另一些是只用于内部连接的。这些互联之间的连接也是用AXI 接口所构成的。 接口(Interface) — 用于在系统内的主机和从机之间传递数据、地址和握手信号的点对点连接。(M-主机,S-从机)
• 通用AXI(General Purpose AXI) — 一条32 位数据总线,适合PL 和PS 之间的中低速通信。接口是透传的不带缓冲。总共有四个通用接口:两个PS 做主机,另两个PL 做主机。 • 加速器一致性端口(Accelerator Coherency Port) — 在PL 和APU 内的SCU之间的单个异步连接,总线宽度为64 位。这个端口用来实现APU cache 和PL的单元之间的一致性。PL 是做主机的。 • 高性能端口(High Performance Ports) — 四个高性能AXI 接口,带有FIFO缓冲来提供“ 批量” 读写操作,并支持PL 和PS 中的存储器单元的高速率通信。数据宽度是32 或64 位,在所有四个接口中PL 都是做主机的。
2、EMIO接口
3、其他PL-PS信号
跨越PS-PL 边界的其他信号包括看门狗定时器、重启信号、中断和DMA 接口信号。
总结