第一章:赛灵思(Xilinx)的Zynq的多处理器片上系统(MPSoC)入门综述

引言

本专栏对赛灵思(Xilinx)的Zynq的多处理器片上系统(MPSoC,Multi-Processor System on Chip)器件进行介绍。它是一个集成片上系统器件,其前身正是Zynq-7000。
Zynq多处理器片上系统MPSoC由多个不同的处理器元件组成,每个处理器原件针对特定的目的进行了优化。比如,MPSoC通常包含一组应用处理器、实时处理器、图形处理器以及现场可编程门阵列(Field Programmable Gate Array, FPGA)的可编程逻辑。
除了Zynq MPSoC架构之外,设计方法和软件工具也非常重要。适当的设计方法使得我们能够利用Zynq MPSoC设备来解决实际设计问题。与以前的设备相比,通过一系列扩展的处理单元,设计人员可充分利用Zynq MPSoC的功能,以达到在系统性能、可靠性、成本、功耗、安全性、上市时间等方面上的预期结果。出于这个原因,本专栏也重点概述了系统开发设置,包括可以部署在处理核心上的设计工具和操作系统。在Xilinx SDx工具中包含了一个特定功能,它允许用户完全使用软件代码来描述系统,然后在各种可用的处理单元之间进行分区。SDx中的SD表示软件定义(Software Defined, SD
Zynq MPSoC器件的应用多种多样,在Zynq-7000研发经验和MPSoC扩展设备的基础上,我们可以开展一些前沿领域研究。比如,先进自动驾驶系统(ADAS,Advanced Driver Assistance Systems)、计算机视觉(CV,Computer Vision)、软件无线电(SDR,Software Defined Radio)、工业物联网(IIoT,Industrial Internet of Things)。

Zynq的多处理器片上系统(MPSoC)简介

近年来,系统集成已成为一个热门领域。对于像Zynq和Zynq MPSoC这样的片上系统(SoC,System-on-Chip),它们包括可编程逻辑,微处理器和存储器——一个嵌入式系统通常需要的主要部件。实际上,这些设备还包括一些模拟电路,以及支持数字信号处理(DSP,Digital Signal Processing)应用的算术引擎,类似于DSP处理器器提供的功能。如图1所示,Zynq MPSoC器件的基本构成包括处理系统(PS,Processing System)与FPGA可编程逻辑(FPGA Programmable Logic)。这两个部分通过许多高级可扩展接口(AXI,Advanced eXtensible Interface)连接。这种高级结构与Zynq-7000芯片非常相似。
在这里插入图片描述

图1 Zynq MPSoC架构的简化图
与Zynq相比,Zynq MPSoC的主要区别在于更进一步的集成化,后者通过扩展处理系统中处理器的选择和数量,并扩展了FPGA的可编程逻辑部分的大小,以及增加了PS和PL之间AXI连接的数量和带宽。另外,后续还会进一步介绍更过的增强项。 在快速发展的应用领域,为了实现快速上市的目的驱使了对片上系统(SoC)的需求;另外,为了减少系统中集成组件开发所需要的工程量、最小化物理尺寸以及降低功耗,也驱使了对SoC的需求。由于软件设计工具和方法的发展,这些相对复杂的SoC器件必须易于进行系统设计,并且易于不断地升级。Xilinx和合作伙伴支持多种设计输入方法和语言,并继续引入新功能以实现快速开发,包括快速评估不同实现选项地功能。

Xilinx 片上系统(SoCs)发展简介

Xilinx传统上是一家可编程逻辑公司,专注于FPGA技术和复杂编程逻辑器件(CPLDs,Complex Programmable Logic Devices)。自2011年推出Zynq-7000以来,随着它向SoC地转变,其他构建模块也开始集成进来,因此Xilinx现在生产的设备不仅由可编程逻辑组成,而且还包括与处理器、内存、接口等相结合的可编程逻辑。
自从三十多年前Xilinx发明了FPGA以来,尤其是最近,人们对基于FPGA的灵活嵌入式系统产生了兴趣。这是因为“软”处理器的可用性,它可以借由FPGA的通用可编程逻辑进行搭建(而不是使用专用处理芯片)。以上述方式实现嵌入式系统仍然有效,并且具有相当大的灵活性,相反的,基于处理器的嵌入式开发则受到一定的局限性。
在某些应用场景,应用程序需要将单独的处理器芯片整合到系统中,并于FPGA建立适当的接口。这促使了Zynq-7000芯片在2010年初的出现,该芯片将FPGA的可编程逻辑于内置芯片中的专用“硬”处理器相结合,并在两个部件之间提供快速互联。Zynq-7000系列芯片的结构示意图如图2所示。本例中的处理器是双核Arm Cortex-A(“A” 表示应用处理器),与只能收集中的处理器类型相同。与之前采用的“软”处理器方法相比,该设备具有增强处理器能力的优势,这意味着一个完整的系统可以在单个芯片上实现。

在这里插入图片描述

图2 Zynq-7000芯片结构示意图
现在,Zynq MPSoC通过扩展处理系统中的处理器类型与功能,进一步拓展了SoC的概念。这里以Zynq Ultrascale + MPSoC处理系统为例(如图3所示),其与双核应用处理器(Zynq-7000系列)不同,现在可以选择32位或64位的双核或四核(而A9则是32位的双核处理器)。Zynq Ultrascale + MPSoC处理系统还包括基于两个Arm Cortex-R5内核的实时处理系统、一个图形处理单元(Graphics Processing Unit,GPU)等单元。添加这些额外类型处理单元的理由是,通过使用针对特定任务进行优化的处理器,可以获得更高的性能。

在这里插入图片描述

图3 Zynq Ultrascale + MPSoC处理系统示意图

设计方法

下面我们简介一个非常重要的问题!当我们具有了这些复杂的片上系统芯片后,我们如何利用它开发想要的智能系统?也就是我们的设计方法是什么?
简单来说,赛灵思(Xilinx)的Zynq的多处理器片上系统(MPSoC)的设计方法包括:(1)硬件设计、(2)软件设计。硬件设计主要负责SoC设备上可用物理资源的映射,而软件则运行在一个或者多个部署在芯片上的处理器。因此如图4所示,考虑到硬件设计与软件设计的根本性不同,在设计中分别使用不同的专用工具设计硬件和软件系统。

在这里插入图片描述

图4 基于Zynq MPSoC的简化设计流程(左:传统的“硬件/软件”设计流程; 右:“软件定义”设计工具,使用SDx)

在这个设计流程中,硬件和软件开发基本上可以独立进行,然后是集成阶段,而不是一个依赖于另一个的完成。设计人员使用他们选择的工具生成硬件系统的单元,使用Xilinx Vivado开发环境进行系统集成,并在目标设备上实现。软件开发人员可以使用Xilinx软件开发工具包(SDK,Software Development Kit)。最近,出现了向面向软件、硬件/软件协同设计的重大转变。简单地说,这些工具允许使用软件代码或基于块的设计方法,以高抽象级别描述整个系统的功能。然后在设计人员的指导下,考虑可用资源的能力,在SoC的硬件和软件组件之间划分功能。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐