ZYNQ的内部结构包含处理器的系统(PS)和一个可编程逻辑(PL)两个部分。应用处理单元(APU)位于PS部分。应用处理单元APU包括两个ARM的Cortex-A9双核处理器和两个Neon协处理器,它们同享512KB二级缓存。每一个处理器有一个高性能,低功耗内核,和单独拥有L1级指令和32KB数据高速缓存。 ARM的Cortex A9双核处理器是基于ARMv7-A架构和虚拟内存的支持,可以执行32位ARM指令,16位和32位Thumb指令以及Jazelle状态下的8位Java字节代码。协处理器NEON的媒体和信号处理结构,添加音频和视频,图像和语音处理,和3D指令优化。ZYNQ-7000 AP SoC架构如图所示。
(这个图整整画了我一下午)
分块介绍
ARM Cortex A9处理器APU的ARMCortex A9双核结构。每个处理器都有独立的SIMD多媒体处理引擎(NEON),内存管理单元(MMU),及L1指令和高速数据缓存。每一个ARM Cortex A9处理器都为SCU提供了2个AXI主接口,分别是64位指令接口和64位数据处理接口。根据地址和属性不同,处理任务将被路由分配到片上内存(OCM),L2高速缓存,DDR内存,或者通过PS端的内部连接到从设备或PL端。该监测信号的每个处理器之间的接口和
单片机为处理器和共享L2高速缓存L1数据缓存一致性。ARM-Cortex A9和其子系统还提供了用户安全所必须的完整的TrustZone功能。ARM-Cortex A9处理器还完成了必需的硬件功能,提供程序调试和跟踪生成支持。该处理器的操作还提供硬件计数器统计处理器和存储器系统。ARM-Cortex A9子模块为中央处理单元(CPU)、L1指令和数据高速缓存、存储器管理单元MMU、用于加速多媒体和信号处理算法NEON协处理器、收集并统计处理器和内存系统的操作信息性能监视单元以及核心接口。
侦听控制单元SCU侦听控制单元模块能够智能地分别统制两个处理器与L2共享高速缓存他们之间的所有数据一致协同性。经过高速缓存一致性总线(CCB)和每一个ARM)Cortex A9处理器举行通讯。SCU拦截控制单元模块支持MESI监测系统,获取需要获得更高的性能和效率。SCU拦截控制也具有重要的功能模块,即地址过滤。
高速缓存L2高速缓存控制器是基于ARM PL310高速缓存控制技能的,两个CPU核中分别包括一个8路组连接的512KB的高速缓存。L2高速缓存是基于物理寻址和标记的,并且支持固定32B的行大小。L2高速缓存而且达成了TrustZone安全拓展,以加强操作系统的安全性。
APU接口Zynq上的APU接口里包含了(ACP)加速一致性接口和(GIC)中断接口。
通用外设 Zynq-7000 AP SoC内部包括很多常见的I/O外设(IOP)和存储器接口,是PS的重要组成部分。这些I/O外设包括GPIO、千兆以太网控制器、USB控制器、SPI控制器、UART控制器等。这些I/O外设除了完成通用的功能之外,还针对Zynq-7000 AP SoC做了一些改动,使其能很好地支持PS+PL的架构,灵活使用PL。Zynq上的存储器接口也很丰富,包括DDR控制器,Quad-SPI控制器、Nand/NOR/SRAM控制器等。
通用IO(GPIO)在Zynq上,我们可以通过MIO引出最多54个GPIO引脚。在PL部分,我们支持依然获得通过的64输入128输出GPIO引脚。这些引脚是可以在程序上可见和可控制的,每个引脚都有库函数和说明手册,在SDK上可以很方便地控制GPIO。所有的GPIO都可以单独配置成输入、输出或者中断的功能,而且可以动态改变。GPIO的可控制和状态寄存器的基地址是0xE000_A000。
SPI接口SPI(Serial Peripheral Interface)接口是一种应用广泛的接口。Zynq里面包含两个SPI控制器,可以工作在主/从模式或者多主机模式。SPI控制器连接到MIO的情况下,支持高达50MHz外部时钟,同时支持128B的读/写FIFO。
UART接口UART是一个全双工异步接收器和收发器的
通信接口,是一种广泛使用的,特别是在通信的嵌入式主机和上位机。Zynq内部有两个UART,和普通的UART一样,提供可编程修改的波特率和数据格式,具有奇偶校验和检错功能,并提供64字节的接收和发送FIFO缓存。
计时器每个ARM-Cortex A9处理器都有私有的32位计时器和32位看门狗,而且两个CPU共享一个全局的64位计时器。这几个计时器的工作时钟频率都是CPU工作时钟频率(CPU_3x2x)的一半。在系统层,有一个24位的看门狗和两个16位的三重计时器/计数器(TTC)。系统看门狗的内部时钟源频率是CPU时钟频率(CPU_1x)的1/4或1/6,也可以使用从MIO或者PL接入的外部时钟源。两个三重计时器/计数器的时钟频率是CPU时钟频率(CPU_1x)的1/4或1/6,常常用来测量MIO或者PL的脉冲信号的脉宽。
USB控制器Zynq上有两个USB控制器,符合的是USB2.0 On-The-Go(OTG)标准。支持USB OTG的标准扩展,实现点对点的通信。使用OTG技术,消费
电子、外设和便携设备可以互连。而且外设也可以充当USB主机的角色。
Zynq上自带的两个USB OTG具有如下关键特性:
(1) USB 2.0高速OTG双重角色模块,同时具有USB主机控制器和设备控制器功能;
(2) USB 2.0高速设备;
(3) USB 2.0 高速主机控制器;
(4) Intel EHCI主机控制器。USB主机控制器寄存器和数据结构兼容Intel EHCI标准。设备控制器寄存器组合数据结构实现为EHCI的编程接口扩展;
(5) 直接支持USB发送器低引脚数接口(USB Low Pin Interface,ULPI),并且ULPI模块支持8位;
(6) 支持多达12个端点。
USB-HS控制器的特性包括:
(1) 能与USB 1.1设备直连[13]。包括没有USB 1.1主机控制器或没有EHCI标准数据结构的主机控制器驱动程序的全速或低速设备;
(2) 集成传输转换器(多端口实现)。支持直连USB1.1设备,包括没有USB1.1主机控制器或没有主机控制器驱动程序的全速或低速设备。
DDR3控制器Zynq里带有同时支持DDR2、DDR3和LPDDR2设备的DDR控制器。控制器由三部分组成:AXI存储器接口(DDRI)、负责调度和传输的核心控制器(DDRC)、数字PHY控制器(DDRP)。4个64位的同步AXI接口,同时从属于多个AXI主设备,并且每个AXI接口都有自己的专用传输FIFO。DDRC使用两个32条目(32-entry)的内容可寻址存储器(CAMs)优化DDR的数据调度,达到最大化DDR存储器效率的目的。DDRC同时为了降低延迟提供了Fly-by通道,这允许我们不经过CAM直接访问DDR存储器。PHY使用控制器的信号通过数字PHY产生连接到引脚上的内部信号。DDR引脚通过
PCB布线直接连接到DDR设备上。系统通过DDRI的4个64位AXI存储器端口访问DDR。其中一个专用AXI端口连接到CPU的L2-cache和ACP,两个专用端口连接到AXI_HP接口,第四个端口由 IE的主设备和AXI接口共享。
可编程逻辑 可编程逻辑(Programmable Logic)的本质就是赛灵思(
Xilinx)的
FPGA的一部分。为了理解,在
Zynq-7000平台,我们将是第一个PL作为另一个PS与配置的功能“外围”,可作为从PS装置部分,受ARM处理器控制。其次,我们可以把它当成是ARM处理器,对等和ARM处理器的主要设备,以完成主动与外部芯片的数据交换接口;甚至还可以作为系统的主要设备,主动从记忆,APU部分获得的数据存储,并能控制ARM处理器。PL部分的加入,为传统的基于ARM的SoC芯片带来的更多的灵活性。FPGA
很适合最并行算法设计,具有吞吐量大,灵活,编程方便,开发周期短等特点。