随着信息技术的高速发展,各行各业正趋向于通过资源整合、并购的方式来获得更强更稳固的竞争力,芯片架构亦是如此。单“芯“SoC 方案(System on Chip)拥有的低功耗、低成本、低布线面积以及高整合、高性能、高带宽 (内部互联)的优势正推动其引领电子系统设计潮流。
在传统的芯片架构中,处理器、DSP、FPGA 往往都各自独立,互不相干。 当一个系统需要用到处理器、DSP、FPGA 中的多个元件时,则采用板级集成的 方式,在一块电路板上设计复杂的电路,将他们通过 PCB 板走线连接到一起。 此种方式设计的系统,不仅设计生产成本高,而且受限于 PCB 走线和 I/O 管脚 性能的影响,无法实现高带宽的数据通信。设计师们都期待着有那么一种芯片, 能够同时拥有处理器、FPGA、DSP 的特点,各个架构的优势强强联合,提升电 子系统设计的便利性。
顺应时代的需求,亦如当年麻雀虽少,功能俱全的“单”片机出世,各大传统 FPGA 厂家都顺势推出了带有嵌入式硬核处理器的 SoC FPGA。如 Intel FPGA 部门基于不同应用推出的带有 Cortex-A9、Cortex-A53、至强 CPU 等一系列涵盖低、中、高端的 SoC FPGA 器件,Xilinx 推出的带有 Cortex-A9、Cortex- A53 处理器的 Zynq 系列FPGA。
同时集成处理器和 FPGA 的器件具划时代意义。自此 ARM 和 FPGA 的优势共存一体,ARM 的顺序控制、丰富外设,开源驱动、FPGA 的并行运算、高速接口、灵活定制、数字之王的特性交错相融,相得益彰。再加上其内部多条 高速桥接总线,使其数据交互链路畅行无阻。
Xilinx Zynq SoC 系列
针对不同的应用领域,Xilinx 公司设计开发了各种逻辑资源规模和集成各种外设功能的 Zynq SOC 器件,包括专为成本优化的 Zynq-7000 平台,面向高性能实时计算应用领域的 Zynq UltraScale+ MPSoC,面向射频通信的 Zynq UltraScale+ RFSoC,以及具备高度可扩展特性的自适应加速平台 ACAP。
Zynq-7000 SoC
Zynq-7000 SoC 属于成本优化的可扩展 SoC 平台,该系列器件集成了单核 或双核的 Arm Cortex-A9,28nm 7 系列可编程逻辑,以及速率高达 12.5G 的收发器。
Zynq-7000 SoC 系列集成 ARM® 处理器的软件可编程性与 FPGA 的硬件可编程性,不仅可实现重要分析与硬件加速,同时还在单个器件上高度集成 CPU、 DSP、ASSP 以及混合信号功能。
Zynq-7000 系 列 是 赛 灵 思 公 司 推 出 的 一 系 列 全 可 编 程 片 上 系 统 , 基 于 Xilinx SoC 架 构 。 这 些 产 品 在 单 个 设 备 上 集 成 了 功 能 丰 富 的 双 核 ARM CortexTM-A9 MPCore 处理系统(PS)和 Xilinx 可编程逻辑(PL),提供了灵活性, 可配置性和性能的完美结合。双核 ARM Cortex-A9 MPCore 处理器是 PS 的核心, 它还包括片内存储器、外部存储器接口和一组丰富的 I/0 外设。Zynq-7000 系 列通过将 ARM CPU 和外设集成在一个芯片内,使得其兼具处理器和 FPGA 的双重 特性。
Xilinx Zynq-7000 SoC FPGA 是赛灵思官方发布的一款在单一芯片上集成了双核 ARM Cortex-A9 处理器和现场可编程逻辑门阵列(FPGA)的新型 SoC 芯片。 相较于传统的仅有 ARM 处理器或 FPGA 的嵌入式芯片,Xilinx Zynq-7000 SoC FPGA 既拥有 ARM 处理器灵活高效的数据运算和事务处理能力,又拥有 FPGA 的高速并行数据处理优势。同时,基于两者独特的片上互联结构,设计者在使 用时可以将 FPGA 上的通用逻辑资源经过配置,映射为 ARM 处理器的一个或 多个具有特定功能的外设,并通过高性能的 AXI 高速总线进行通信以完成控制 命令和高速数据的交互
SOPC
在 SoC FPGA 技术推出之前,各大 FPGA 厂家已经推广了十多年的 SOPC 技术。从架构角度来说,SOPC 和 SoC FPGA 是统一的,都是使用 FPGA 和 CPU 共同完成系统的设计。但是与 SoC FPGA 不相同的是,SOPC 是在单纯的 FPGA 芯片上使用 FPGA 的可编程逻辑资源和嵌入式存储器资源搭建一个软核 CPU 系统,由该软核 CPU 实现所需处理器的完整功能,该 CPU 是由 FPGA 通用逻辑资源和存储器通过配置实现的,其本质依旧只是一个复杂的 FPGA 设计模块。
得益于 FPGA 的现场可配置特性,使用 FPGA 的通用逻辑资源搭建的 CPU, 在结构资源上具有一定的灵活性。用户可以根据自己的需求对 CPU 进行定制裁剪,增加一些专用功能,例如除法或浮点运算单元,用于提升 CPU 在某些专用运算方面的性能。或者删除一些在系统中使用不到的功能,以节约逻辑资源。 另外用户也可以根据自己的实际需求,为 CPU 添加各种标准或定制的外设,例如 UART,SPI,I2C 等标准接口外设,或者编写各种专用的外设,然后连接到 CPU 总线上,由 CPU 进行控制,以实现软硬件的协同工作。基于该结构的设计 在保证系统性能的同时,增加了系统的灵活性。另外,如果单个软核 CPU 无法 满足用户需求,则可以添加多个 CPU 软核,搭建多核系统,通过多核 CPU 协同工作,让系统拥有更加灵活便捷的控制和运算能力。
但是,由于 CPU 是使用 FPGA 的通用逻辑资源搭建的,所以相较使用经过布局布线优化的硬核处理器来说,软核处理器够运行的最高时钟主频要低一些, 而且搭建软核 CPU 也会消耗较多的 FPGA 逻辑资源以及片上存储器资源。因此 SOPC 方案仅适用于对处理器整体性能要求不高的应用,例如整个系统的初始 化配置、人机交互、多个功能模块间的协调控制等方面。
SoC FPGA 与 SOPC 之间的差异
从架构的角度来说,SOPC 和 SoC FPGA 是统一的,都是由 FPGA 和处理器组成。在 SoC FPGA 中,嵌入的是 ARM 公司 32 位的 Cortex-A9 硬核处理器, 简称 HPS(Hardware Processor System)。而 SOPC 技术中,嵌入的是 Xilinx 自己 开发的 32 位 MicroBlaze 软核处理器,两者指令集与处理器性能均有差异。 Cortex-A9 硬核处理器性能远远高于 MicroBlaze 软核处理器。
Zynq-7000 SoC FPGA 片上的 PS 部分,不仅集成了双核的 Cortex-A9 硬核 处理器,还集成了各种高性能外设,如 MMU、DDR3 控制器、NAND FLASH 控制器等,有这些外设,PS 部分就可以运行成熟的 Linux 操作系统,提供统一 的系统 API,降低开发者的软件开发难度。而 Microblaze 或 NIOS II、Risc-V 软 核 CPU 虽然可以通过配置,用逻辑资源来搭建相应的控制器以支持相应功能, 但是从性能和开发难度上来说,无法与之媲美。因此,采用基于 SoC FPGA 架 构进行设计开发是比较好的选择。
此外,虽然 SoC FPGA 芯片上既包含了有 ARM,又包含了有 FPGA,但是 两者一定程度上是相互独立的,SoC 芯片上的 ARM 处理器核并非是包含于FPGA 逻辑单元内部的,而是与 FPGA 一同封装到同一个芯片中,JTAG 接口、 电源引脚和外设的接口引脚都是独立的。因此,如果使用 SoC FPGA 芯片进行 设计,即使不用片上的 ARM 处理器,ARM 处理器部分占用的芯片资源也无法 释放出来,不能用作通用的 FPGA 资源。而 SOPC 则是使用 FPGA 通用逻辑和 存储器资源搭建的 CPU,当不使用 CPU 时,CPU 占用的资源可以被释放,重 新用作通用 FPGA 资源。
SoC FPGA 架构的优势
嵌入式处理器开发人员面对的一个最大挑战就是如何选择一个满足应用要求的处理器。现在已有数百种嵌入式处理器,每种处理器都具备一组不同的外设、存储器、接口和性能特性,用户很难做出一个合理的选择:要么为了匹配实际应用所需的外设和接口要求而不得不选择在某些性能上多余的处理器;要么为了保持成本的需求而达不到原先预计的理想方案。
在 SoC FPGA 架构出现之前,一般的嵌入式系统通常使用各种处理器或单片机作为系统核心,如基于 ARM 架构的 CPU、基于因特尔 X86 架构的 CPU、 基于 IBM PowerPC 架构的 CPU 等。这些处理器的最大局限在于其芯片上的外设数量是确定的,一旦选定一款特定的处理器,则其本身能够提供的各种功能也就确定了,例如选择 S3C2410 这款处理器,则该芯片本身有且仅有 3 个 UART 串口,当系统所需的串口数量大于 3 个时,不得不采用另外的方法来扩展实现,例如使用各种串口扩展芯片。另外,由于这些处理器芯片片上外设功能都是固定的,仅支持在一定程度上设置其工作模式,所以无法实现非常灵活的个性化定制,例如 S3C2410 处理器的片上 UART 控制器带有 16 个字节的 FIFO 缓冲,但是在某些大数据量的应用中,希望有更大容量的 FIFO 来满足功能开发需求,则片上的 UART 控制器不能完全满足要求,只能通过软件的方式处理。
由于 SoC FPGA 由于芯片上包含现场可编程逻辑门阵列,可以根据实际应用需求设计相应的逻辑电路,(Uart0,uart1)每个都有 64 字节的接/收 FIFO。得益于 SoC FPGA 芯片上 FPGA 和 HPS 部分独特的高速互联架构,FPGA 侧设计的 功能电路可以直接连接到 PS 的总线上,从而映射为 PS 的一个外设,由 PS 对其进行读/写操作,该操作就像处理器操作本身片上含有的外设一样简单方便。
相较于传统的硬件功能固定的处理器,SoC FPGA 能够突破硬件功能的限制,实现定制化的片上系统。
SoC FPGA 架构相较于独立 FPGA 系统的优势
FPGA 作为一种可以随时更改其实现的逻辑电路功能的器件,在高速并行数据处理方面有天然的优势。由于 FPGA 实现的是硬件逻辑功能,其执行效率相较于使用程序指令实现功能的处理器来说要高很多,例如执行 3 个数据的乘加运算,FPGA 可以使用两个乘法器和一个加法器,在一个时钟周期内完成运算并输出结果,而 CPU 则可能需要将将该操作拆分成 1 条乘加指令和 1 条乘法指令,即使高性能的 CPU,也需要 2 个指令周期才能完成该操作。同时, FPGA 也可以利用功能复制的方式,在一个芯片上实现大量相同的功能,例如设计好一个高速数据采集+FIR 数字滤波功能模块,然后可以直接将其例化多次, 实现一个高速多路数据采集处理系统。
然而,单独的 FPGA 设计的系统也有其不足之处,由于 FPGA 实现功能都是通过功能固定的逻辑电路实现的,那么当应用中需要灵活的控制和人机交互或者复杂的以太网协议通信时,使用 FPGA 实现就会有较大的难度,即使使用复杂的状态机能够勉强实现功能,也面临着功能固定、修改难度大的问题。例如在上述多路采集系统之中,当需要将多路采集到的数据在液晶显示屏上绘制为波形,或者使用 TCP/IP 协议传输到远端服务器时,单纯的 FPGA 就难以胜任 了,而 ARM 处理器,尤其是运行了嵌入式操作系统的 ARM 处理器,在图形界面显示和网络传输方面有较大的优势,如果将 FPGA 实现的多路高速数据采集系统的采集结果交给 ARM 处理器来实现波形显示或者网络传输,那么只需要 简单的软件编程即可实现。
SoC FPGA 作为一种在单一芯片上集成了 FPGA 和高性能处理器的新型芯片架构,既拥有 FPGA 高速并行处理和定制灵活的优势,又拥有 ARM 处理器 实现灵活控制、图形界面显示和网络传输方面的优势。而且,这两者在芯片上并不是相互独立的存在,而是通过片上的高速互联架构有机的连接到了一起。
SoC FPGA 架构相较于处理器+FPGA 架构的优势
处理器和 FPGA 协同工作是比较理想的方案,但是由于软核在性能上还是有所欠缺,且实现一些特定的功能不如 MCU或处理器具有性价比,因此,相较于软核实现方案,有相当一部分的技术人员 更倾向于选择使用独立的处理器加 FPGA 的方案。例如低端领域使用 Cortex-M 系列单片机加 FPGA,中端应用使用 Cortex-A 系列处理器加 FPGA,高端领域 使用 X86 CPU 甚至 Xeon 系列处理器加 FPGA。这些架构,从一定程度上来讲 确实有很大的优势,例如性价比,开发的便捷性等。但是,因为使用了独立器件,所以电路板设计相对复杂一点。另外,除了高端 CPU 能够使用 PCIe 这种 高速通信接口以外,常见的 Cortex-M 系列单片机和 FPGA 连接时,相互间的通 信速率会有较大的限制,首先,是两者间的通信数据线受硬件电路板限制,一 般不超过 32 位宽度,其次,就是器件间使用高位宽的并行总线,存在竞争冒险 的情况,因此数据线翻转速率有较大的限制,通信频率无法做到很高。这两方 因素的共同限制了 FPGA 和处理器之间的通信带宽。而 SoC FPGA 使用的是片上集成的方式,在同一个芯片上集成 FPGA 和 HPS 系统,两者间通过一种高性能、高带宽、低延迟的片内总线 AXI 连接,为两者通信提供了较高的数据带宽, 大大提高了两者的通信带宽和通信效率。
SoC FPGA 集成型架构优势
采用 ARM+FPGA 集成架构的 SoC FPGA 芯片,用户将不会局限于预先制 造的处理器技术,而是根据自己的要求定制处理器,按照需要选择合适的外设、 存储器和接口。此外,用户还可以轻松集成自己专有的功能(如 DSP,用户逻 辑),创建一款“完美”的处理器,如图 1-4 所示,使用户的设计具有独特的竞争 优势。
用户所需要的嵌入式设备主控制器应该能够满足当前和今后的设计功能及性能需求。由于发展具有不确定性,因此,设计人员必须能够更改其设计,例如为处理器加入新的功能电路,定制硬件加速器,或者加入协助处理器,以达到新的性能目标,而基于 SoC FPGA 的系统能够满足以上要求。
采用 SoC FPGA 芯片,用户不仅可以使用 ARM Cortex-A9 处理器的高性能运算和事务处理能力,还可以根据需要定制功能。在单个 SoC FPGA 芯片中实现高性能处理器、外设、存储器和 I/O 接口功能,降低用户的系统总体成本。
开发人员希望能快速将产品推向市场并保持一个较长的产品生命周期,避免更新换代。基于 SoC FPGA 的系统在以下几个方面可以帮助用户实现此目标:
- 缩短产品的上市时间,FPGA 可编程的特性使其具有最快的产品上 市速度。许多设计通过简单的修改都可以在 FPGA 上快速实现。ARM Cortex-A9 处理器能够运行成熟的 Linux 操作系统,基于 Linux 操作系 统,用户能够非常简单高效地编写 Linux 应用程序,加快软件开发速度, 缩短软件开发周期。而系统的灵活性和快速上市的特性源于 Intel 提供 的完整的开发套件、众多的参考设计、强大的硬件开发工具(Platform Designer)和软件开发工具(SoC EDS 套件)。用户可以借助厂商提供的 参考设计和易用的开发工具,在几个小时内就完成自己的设计原型。
- 建立有竞争性的优势,维持一个基于通用硬件平台的产品的竞争优 势是非常困难的。而 SoC FPGA 器件,能够充分发挥 FPGA 的可编程 特性,设计独有的硬件加速和协处理逻辑,与 ARM 处理器协同工作。 具备硬件加速,定制的、可裁剪的外设 SoC 系统,将更具竞争优势。
- 延长了产品的生存时间,使用 SoC FPGA 器件的产品的独特优势能 够对硬件进行升级。即使产品已经交付给客户,仍可以定期升级。这 些特性可以解决很多问题,首先是延长产品的生存时间,随着时间的 增加,可以不断将新的特性添加到硬件中。并且可以减小由于标准的 制定和改变而带来的硬件上的风险。简化了硬件缺陷的修复和排除。