open_prj20_MPSOC概述

本系列摘录正点原子《MPSoC-P4之FPGA开发指南》,仅供学习。

MPSOC概述

a)SelectIO

1)Zynq UltraScale+ MPSoC上的通用输入/输出功能IOB合起来被称作SelectIO资源,每个I/O都是可配置的,可以遵循多种I/O标准。I/O分为高范围(high-range)、高性能(HP)和高密度(HD)三种类型。其中HR类型提供最广泛的电压支持,从1.2V到3.3V。HP类型支持1.0V到1.8V它对性能操作进行了优化。HD类型的IO一般一个BANK上由24个IO组成,能提供从1.2V到3.3V的电压支持。

2)所有的I/O引脚都封装在BANK中,每个BANK上可以封装52个HP引脚,或者52个HR引脚,或者24个HD引脚。每个BANK有一个公共的VCCO输出缓冲器电源,除了给输出缓冲器供电外也可以为输入缓冲器供电。此外,HR BANK可以一分为二,这两部分各自都有自己的VCCO供电。一些单端输入缓冲器需要一个内部产生的或外部应用的参考电压VREF。VREF引脚可以直接连接PCB,或者从FPGA内部产生。

3)所有输入和输出IO均支持DDR (Double data rate)。任何输入或输出都可以单独延迟高达1250ps,分辨率为5-15ps,这种延迟被称为IDELAY和ODELAY。我们可以通过增减IODELAY的延迟步进进而调整IODELAY的延迟时间,也可以将IODELAY级联在一起,使单个方向上的延迟量增加一倍。

b)BRAM

1)每个基于UltraScale架构的设备都包含大量的36Kb块RAM(BlockRAM,简称BRAM),可以配置为一个36Kb RAM或两个独立的18Kb RAM;每个块RAM都有两个完全独立的端口,且每个端口都可以读写数据,读写数据由时钟进行控制。每个块RAM列中有一个使能信号,这个信号能够让垂直相邻的块RAM之间级联,这样就可以创建大型、快速的存储阵列或者创建FIFO,而且大大降低了功耗。对于RAM来说,所有输入的数据、地址、时钟使能信号和写入使能都会被寄存。比如说输入一个地址数据,这个地址数据就会被锁定(除非地址锁关闭)寄存,在下一次操作来临之前,地址寄存器的值是不会发生改变的。在写操作期间,也可以输出数据,输出的数据可以是先前存储的数据也可以是新写入的数据,当然在写操作期间也可以不输出数据。对于在设计中未使用的块RAM会自动关闭,以减少总功耗。在每个块RAM上还具有额外的引脚来控制动态功率的门控特性。

2)对于Xilinx UltraScale系列FPGA来说,除了具有BRAM资源外,还有一种UltraRAM资源。UltraRAM是一种高密度、双端口、同步内存块,用于一些UltraScale+系列器件。这两个端口共用同一个时钟,可以处理4K x 72位的数据,每个端口都可以独立地对内存数组进行读写操作。UltraRAM支持两种类型的写操作方案,第一种模式与块RAM写操作模式一致;第二种模式允许控制数据的奇偶字节写入。多个UltraRAM

块可以级联在一起创建更大的内存阵列。UltraRAM可以用专用的路径使整个列的存储区域连接在一起,这使得UltraRAM成为替代SRAM等外部存储器的理想解决方案,它可以灵活的支持级联从288Kb到36Mb的存储空间,用以满足许多不同的内存需求。

c)布线资源

1)布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,这些布线资源根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别:①全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;②长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;③短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;④分布式的布线资源,用于专有时钟、复位等控制信号线。在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有直接的关系。

d)PS概述

1)APU(ApplicationProcessingUnit)

APU主要是由两个或者四个ARM处理器核组成的,Cortex-A53核心是基于Arm-v8A架构的32位/64位应用程序处理器,拥有极佳的性能/功率比,每一个Cortex-A53核心拥有32KB指令和数据L1缓存,具有奇偶校验、ECC保护、NEON SIMD引擎、单精度和双精度浮点单元。除了这些模块,APU还有一个snoop控制单元以及一个带ECC保护的1MB L2缓存,这样的设计可以更好的提高系统级的性能。该APU还具有内置的中断控制器支持虚拟中断。它的结构框图如下所示:

2)RPU(Real-TimeProcessingUnit)

PS中的RPU包含一个双核Arm Cortex-R5F处理器,Cortex-R5F是32位实时处理器,它是基于Arm-v7R架构的处理器内核。每个Cortex-R5F核都有32KB的指令和数据缓存L1,除了L1缓存,每个Cortex-R5F核心还具有128KB的紧耦合内存TCM接口,用于实时单周期访问。RPU还有一个专用的中断控制器。两个RPU既可工作在独立模式,也可以工作在同步模式。在独立模式中两个处理器都是独立运行的;在同步模式下,它们彼此并行运行,逻辑资源也会综合到一起,并且TCM资源也整合成256KB。RPU还可以通过AXI-4端口与PS端的LPD区域进行通信或者与PL端进行低延迟通信。支持实时DEBUG和信号跟踪,每个内核还具有一个嵌入式跟踪宏单元ETM方便Arm内核调试。

Cortex-R5处理器是用于深度嵌入式实时系统的CPU,它采用了Thumb-2技术以获得最佳的代码密度和处理吞吐量,它还具有一个算术逻辑单元ALU,为了更加有效地利用其他资源(例如寄存器资源),算术逻辑单元会执行有限的双重指令。Cortex-R5处理器会通过重新启动和加载多个指令来保持较低的中断延迟,并且还会使用一个专用的外围端口来实现对中断控制器的低延迟访问。处理器具有紧密耦合内存TCM端口,用于低延迟和确定性地访问本地RAM。错误检查和纠正功能ECC是用于Cortex-R5处理器端口和Level 1存储器的,这样可以提高系统的可靠性和准确性。Cortex-R5处理器的结构框图如下所示:

3)GPU(GraphicsProcessingUnit)

GPU是基于Arm Mali-400 MP2硬件加速器的2D和3D图形子系统。它由一个几何图形处理器(GP)、两个像素处理器(PP)、64KB L2缓存控制器(L2)、针对GP和每个PP的独立内存管理单元(MMU)以及128位AXI总线接口构成。Arm Mali-400 MP2作为PS专用的图形处理器它可以支持2D和3D图形加速,最高分辨率为1080p,对于3D图形它能够支持OpenGL ES 1.1 and 2.0规范而对于2D的矢量图形它只能支持Open VG 1.1标准。它的几何处理器(GP)和2个像素处理器会并行地执行贴图渲染操作。它为GP和像素处理器提供了专用的内存管理单元,支持4 KB的页面大小。GPU还有64KB的二级(L2)只读缓存,它支持4X和16X全场景抗锯齿(FSAA)功能。它有内置的硬件纹理解压缩,允许纹理在图形硬件中保持压缩(ETC格式),并在运行中解压所需的样本。它还支持在不消耗额外带宽的情况下有效地混合多个硬件层,它的像素填充率为200万像素/秒/MHz,三角形填充率为0.1Mvertex/秒/MHz。GPU支持广泛的纹理格式为RGBA 8888、565、1556以及YUV格式,对于功率敏感的应用,GPU支持对每个GP、像素处理器和L2缓存的时钟和功率进行门控。在功率门控过程中,GPU不消耗任何静态或动态功率;在时钟门控过程中,它只消耗静态电源。

4)DDR MemoryController

DDR存储控制器通过六个AXI数据接口和一个AXI控制接口连接到MPSoC的其余部分,其中一条数据路径连接到实时处理单元(RPU),两条数据路径连接到缓存相干互连(CCI-400),其他的在DisplayPort控制器、FPD、DMA和编程逻辑PL上多路复用。在6个接口中,5个是128位宽,而第6个接口(绑定到RPU)是64位宽。DDR子系统支持DDR3、DDR3L、LPDDR3、DDR4和LPDDR4,它可以通过AXI总线接口接收来自6个应用主机端口的读写请求,这些请求在内部排队访问DRAM设备。存储器控制器在DDR PHY接口上向PHY模块发出命令,PHY模块从DRAM中读取和写入数据。DDR MemoryController的结构如下图所示:

5)PMU(PlatformManagementUnit)

Zynq UltraScale+ MPSoC包括一个专用的用户可编程处理器,用于电源、错误管理的平台管理单元PMU处理器,以及用于功能安全应用的可选软件测试库STL。由于PMU的结构和配置相当复杂这里我们只简要列出他的功能,更加详细的介绍大家可以参考Xilinx官方文档ug1085。PMU的功能如下:使用系统监视器检查电源水平,以确保CSU和LP域的其余部分正常运行;初始化pll的默认配置和他们潜在的旁路;触发和排序必要的扫描和MBIST;捕获并发出错误信号,错误ID可以通过JTAG读取;释放复位到CSU;在应用程序和实时处理器处于睡眠状态时充当它们的委托,并在接收到它们的唤醒请求之后对他们进行开机和重启;在任何时候维护系统电源状态;处理不同块的上电、下电、复位、内存内置自修复MBISR、MBIST和扫描归零所需的低级事件序列;在休眠模式下管理系统,并基于各种触发机制唤醒系统;PS-level错误捕获。

6)High-SpeedConnect

Zynq UltraScale+ MPSoC的PS端集成了5个高速外设,分别是DP控制器、USB3.0控制器、SATA3.1控制器、PCIE 1.0/2.0控制器以及PS-GTR收发器。下面我们来分别介绍一下这几个高速控制器。

①DP接口(DisplayPort控制器):Zynq UltraScale+ MPSoC的PS端集成了DisplayPort控制器,它可以从内存(非实时输入)或(实时输入)可编程逻辑(PL)中获取数据,并将这些数据处理过后通过DisplayPort源控制器块输出到外部显示设备或PL(实时输出)上。DisplayPort控制器由DMA、缓冲区管理器、显示渲染块、音频混音块、DisplayPort源控制器以及PS-GTR模块组成,它可以支持超高清(UHD)视频,因此DP接口常用来做视频图像传输的接口。

②USB3.0:USB 3.0控制器由两个独立的DRD (dual-role device)控制器组成,两者都可以单独配置为在任何给定时间作为主机或从机设备工作的模式。USB 3.0 DRD控制器通过高级的可扩展AXI从接口,可以为系统软件提供一个可扩展的主控制器接口(xHCI)。控制器中有一个内部的DMA引擎,它利用AXI主接口来传输数据。三个双端口RAM的配置可以实现RX数据FIFO、TX数据FIFO和描述符/寄存器缓存功能传输的功能,AXI主端口与协议层可以通过缓冲区管理单元访问不同的RAM。

③SATA3.1:SATA控制器是一种高性能双端口主机控制器,具有AHCI兼容的命令层,该命令层对使用端口乘法器的系统来说,具有支持基于本地命令队列和帧信息结构(FIS)交换的高级功能。SATA使用ATA/ATAPI命令集,但是通过不同的导线可以实现与SATA第1代、第2代或第3代相对应的1.5、3.0或6.0 Gb/sec的速率进行串行通信。串行数据采用8B/10B编码,确保数据模式中有足够的转换以确保直流平衡(这里的转换指数据的0/1转换,关于直流平衡的知识大家可以自行了解或者看我们HDMI相关的视频,其中有涉及),并使时钟数据恢复电路能够从输入数据模式中提取时钟。

④PCIe1.0/2.0控制器:MPSoC集成了一个PCIe通信控制器,用于实现PCIe的通信,它包含AXI-PCIe桥和DMA组件,AXI-PCIe桥主要是为PCIe和AXI提供高性能桥接。模块示意图如下所示:

⑤PS-GTR收发器:千兆GTR收发器为串行输入输出单元(SIOU)的外围设备、媒体访问控制器(mac)以及它们的高速通信链路提供专用的I/O。Zynq UltraScale+ MPSoC共有四个可编程高速收发器,可以支持数据速率高达6gb/s的子层协议。

7)PS-PLAXI接口

①AXI协议是一种高性能、高带宽、低延迟的片内总线,具有如下特点:总线的地址/控制和数据通道是分离的;支持不对齐的数据传输;支持突发传输,突发传输过程中只需要首地址;具有分离的读/写数据通道;支持显著传输访问和乱序访问;更加容易进行时序收敛。

②AXI4协议支持突发传输,主要用于处理器访问存储器等需要指定地址的高速数据传输场景。AXI-Lite为外设提供单个数据传输,主要用于访问一些低速外设中的寄存器。而AXI-Stream接口则像FIFO一样,数据传输时不需要地址,在主从设备之间直接连续读写数据,主要用于如视频、高速AD、PCIe、DMA接口等需要高速数据传输的场合。

③在PS和PL之间的主要连接是通过一组12个AXI接口,每个接口有多个通道组成。这些形成了PS内部的互联以及与PL的连接,如下图所示:

其中:

i)S_AXI_HP{0:3}_FPD/S_AXI_HPC{0,1}_FPD:六个PL侧高性能(High Performance)AXI主接口连接到PS侧的FPD(Full-power domain),主要用于访问DDR内存,进行大量数据的传输,如摄像头图像数据等。所有的六个高性能AXI主接口都经过了PS中的SMMU(System Memory Management Unit),SMMU能够使用物理和虚拟地址转换。其中一致性S_AXI_HPC接口连接到了CCI(Cache-coherent interconnect),可以访问L1和L2 Cache,也正是连接到了CCI,所以在访问DDR控制器时,相比于S_AXI_HP接口来说,延时会较大。

ii)S_AXI_LPD:主机PL连接至从机PS侧LPD(Low-power domain)的高性能AXI接口,它能够低延时地访问OCM(On-chip Memory)和TCM(Tightly-coupled Memory)。

iii)S_AXI_ACE_FPD:主机PL与从机PS中的CCI相连接,它能够支持PS和PL中的硬件块之间的完全一致性(双向)。该接口使用的是ACE(AXI coherency extension)协议,与AXI接口相比,ACE协议使用了五个额外的通道,三个通道用于监听,两个用于应答。

iv)S_AXI_ACP_FPD:该接口实现了PL和PS之间的低延时访问,PL端可以直接访问APU的L1和L2Cache以及DDR内存。

v)M_AXI_HPM{0,1}_FPD:该高性能接口由主机PS侧FPD连接至从机PL,可以用于CPU、DMA、PCIe等传输大量数据到PL。

vi)M_AXI_HPM0_LPD:该高性能接口由主机PS侧LPD连接至从机PL,该接口适合于为PS中的LPD主机(例如LP-DMA)提供对PL中的存储器的访问,也经常用于配置PL端的寄存器。上面的每条总线都是由一组信号组成的,这些总线上的会话是根据AXI4总线协议进行通信的。有关

AXI4协议更详细的内容,我们将在后续的章节进行介绍。

e)XCZU2EG/XCZU2CG芯片包含13个Banks,上图左边的Bank505、Bank504、Bank503、Bank502、Bank501和Bank500属于PS端,上图右边的Bank24、Bank25、Bank26、Bank44、Bank64、Bank65和Bank66属于PL端。Bank24、Bank25、Bank26和Bank44是HDBank,HD(High Density)表示支持高密度的IO标准,其支持的IO电平标准为1.2V、1.35V、1.5V、1.8V、2.5V和3.3V,应用于低速I/O的场景,最高速率限制在250Mb/s以内,除此之外,还支持LVDS电平标准等;Bank64、Bank65和Bank66是HPBank,HP(High Performance)表示支持高性能的IO标准,其支持的IO电平标准为1.0V(POD)、1.2V、1.35V、1.5V、1.8V,应用于高速I/O的场景,电压最高也只能到1.8V,除此之外,也支持LVDS电平标准等。Bank503(PSCONFIG 503)用于启动PS端并配置PL端,支持安全和非安全启动模式;Bank504(PS DDR504)连接DDR4、DDR3、DDR3L或LPDDR3内存的32位或64位接口,以及连接LPDDR4内存的32位接口;Bank505(PSGTR505)集成了四个专用PS-GTR收发器,支持高达6.0Gb/s的数据传输速率,支持SGMII三速以太网、PCI Express® Gen2、串行-ATA(SATA)、USB3.0和DisplayPort。

相关推荐
nature_forest2 小时前
DSP与FPGA之间EMIF接口之DSP参数配置下板测试问题总结
fpga开发
小麦嵌入式3 小时前
FPGA入门(三):3-8 译码器 仿真波形解读
stm32·单片机·嵌入式硬件·mcu·fpga开发·硬件工程
upper20201 天前
从零开始动手做Verilog实验--04--11阶FIR滤波器
fpga开发
Quinn271 天前
正点原子 RK3562 Android14 Ubuntu 编译 SDK 环境准备:依赖、repo 与 Swap 配置一次搞定
linux·运维·ubuntu·mpu·正点原子·rk3562·arm linux
nuoxin1141 天前
SSD201-富利威
arm开发·驱动开发·fpga开发·ffmpeg·射频工程
哄娃睡觉1 天前
FPGA、ARM、MCU、DSP的区别
fpga开发
Quinn272 天前
正点原子 RK3562 Android14 集成 GStreamer 1.24.13(CLI + V4L2 插件)完整移植方案
mpu·正点原子·rk3562·arm linux
nature_forest2 天前
vivado2018.2固化程序方法之.bin文件固化法
windows·fpga开发
m0_46644103詹湛2 天前
FPGA时序优化与高速接口实战手册
笔记·学习·fpga开发·硬件架构·verilog