购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 全可编程SoC基础知识

以传统的现场可编程门阵列(Field Programmable Gate Array,FPGA)结构为基础,将专用的中央处理器单元(Central Processing Unit,CPU)和可编程逻辑资源集成在单个芯片中,产生了一种全新的设计平台,将其称为全可编程SoC(All Programmable System on Chip,All Programmable SoC)。这个全新的设计平台的诞生对全球信息技术的发展起到了巨大的推动作用。一方面,它使得嵌入式系统的设计结构更加灵活,体积显著缩小,可靠性和系统整体性能明显提高;另一方面,它使得FPGA进入了嵌入式系统应用领域,极大地扩展了FPGA的应用范围。

1.1.1 全可编程SoC的演进

在二三十年前,构建一个嵌入式系统需要使用大量的元器件。例如,对一台个人计算机来说,其主板由大量的电子元器件、散热装置及连接器组成,如图1.1所示。

图1.1 传统个人计算机的主板结构

从图1.1中可以看出,实现一个嵌入式系统的基本结构需要使用大量的机械连接装置,以及大量的专用集成电路(Application Specific Integrated Circuit,ASIC)。这种传统的设计结构会带来以下4方面的问题。

(1)系统的整体功耗变高。

(2)系统的总成本变高。

(3)系统的可靠性和安全性较差。

(4)系统维护成本较高。

随着半导体技术的不断发展,可以将构成计算机基本结构的大量元器件集成到单个芯片中,如CPU内核、总线结构、功能丰富的外设控制器,以及模数混合元器件。例如,Arm公司向其合作伙伴提供了以Arm CPU体系结构为基础的嵌入式处理器物理知识产权(Intellectual Property,IP)核,以这个嵌入式处理器结构为核心,可以在单个芯片内搭载功能丰富的外设资源,如图1.2所示。这种将一个计算机系统集成到单个芯片中的结构称为SoC。在这种结构中,集成了Arm CPU、高级微控制器总线架构(Advanced Microcontroller Bus Architecture,AMBA)总线,以及用于和不同外设进行连接的物理IP核。

图1.2 以Arm CPU体系结构为核心的SoC

通过比较图1.1和图1.2可以发现,采用SoC结构的优势体现在以下5方面。

1)改善性能

(1)由于将构成计算机结构的绝大部分功能元器件集成在单个芯片中,显著地缩短了它们之间的连线长度,因此大大降低了CPU和外设之间信号的传输延迟。

(2)在SoC内,由于构成计算机功能元器件的晶体管具有更低的阻抗,因此降低了逻辑门的翻转延迟。

2)降低功耗

(1)随着半导体技术的不断发展,要求给SoC器件供电的电压在不断降低。例如,SoC器件的供电电压可以降低到2V以下。

(2)在SoC内,由于减小了晶体管的电容值,因此在相同的CPU工作频率下,显著降低了系统的整体功耗。

3)减小体积

由于将整个计算机系统的绝大部分功能元器件集成在一个芯片中,因此大大减小了整个系统的体积。

4)提高可靠性

将整个计算机系统的绝大部分功能元器件集成在一个芯片中,减少了使用外部元器件的数量,与外设连接所需的接口数量也相应减少。因此,提高了系统的可靠性。

5)降低总成本

由于减少了使用外部元器件的数量,构成系统所使用印制电路板(PCB)的面积也相应地缩小。更进一步,缩小了整个系统的封装体积。因此,显著地降低了构成系统的总成本。

正如任何事物总不是十全十美的,SoC也有其局限性,主要体现在以下3方面。

1)灵活性差

传统计算机可以允许用户更新某个外部芯片/元器件,如DDR RAM、显卡。但是,一旦SoC量产后,更新其内部功能元器件的可能性基本没有。

2)专用性强

由于绝大部分SoC器件都用于某个专门的领域(用途),因此很难将其应用到其他领域,或者作为其他用途。

3)设计复杂

在通常情况下,对于基于SoC的系统设计,要求相关人员具备软件和硬件相关的系统级设计知识,这个要求比传统基于PCB的系统设计高很多。

因此,一种更灵活的SoC结构应运而生,这就是全球知名的可编程逻辑芯片厂商——Xilinx公司提出的全可编程SoC结构。与SoC相比,全可编程SoC充分利用了FPGA内部结构的灵活性,克服了传统SoC器件灵活性差、专用性强及设计复杂的缺点;同时,具备了传统SoC器件的所有优势。

1.1.2 SoC与MCU和CPU的比较

本节对SoC、CPU和MCU进行比较,以帮助读者清楚地区分它们并且能将它们正确地应用到不同的领域中。

1.SoC的特点

SoC的特点主要体现在以下5方面。

(1)在SoC器件内,可以集成多个功能强大的CPU。

(2)在SoC器件内,可以集成容量更大的存储器块、不同的I/O资源,以及其他外设。

(3)随着半导体工艺的不断发展,在SoC器件内也集成了功能更强大的图形处理器单元(Graphics Processing Unit,GPU)、数字信号处理器(Digital Signal Processor,DSP),以及视频和音频解码器等。

(4)在基于SoC构成的系统上,可以运行不同的操作系统,如微软公司的Windows操作系统、Linux操作系统和谷歌公司的Android操作系统。

(5)由于SoC具有强大的功能,因此它可以用于更高级的应用,如数字设备的主芯片(智能手机、平板电脑)。

2.CPU的特点

CPU的特点主要体现在以下2方面。

(1)CPU是单个CPU。当然,对Intel公司量产的包含多个CPU的芯片来说,它已经不是传统意义上的CPU了,已经有了SoC的影子。

(2)CPU可以用在绝大多数应用场合,但是需要外部存储器和外设的支持。

3.MCU的特点

MCU的特点主要体现在以下3方面。

(1)只有一个CPU。

(2)内部包含存储器块、基本的I/O和其他外设。

(3)MCU主要用于工业控制领域,如嵌入式应用。

1.1.3 全可编程SoC诞生的背景

由于持续地要求嵌入式系统具有更多的功能、更高的性能和灵活性,因此传统的设计方法已经不能适应这种要求了。为了得到更高的性能,设计人员尝试使用高性能的嵌入式处理器,但是遇到了吞吐量和性能方面的限制。而这种限制源于系统和结构,以及存储器的带宽。传统解决问题的方法是专用,即对某个嵌入式系统的应用使用专门的解决方法。例如,数字信号处理器用于处理某一类专门的数字信号。而对于一些高容量的应用,设计人员可能还需要专门开发ASIC芯片。

Xilinx公司将自己开发的8位PicoBlaze和32位MicroBlaze软核嵌入式处理器,以及IBM公司的PowerPC和Arm公司的双核Cortex-A9硬核处理器嵌入FPGA芯片。这种集成了嵌入式处理器的FPGA芯片被重新定义成全可编程SoC平台。这种基于FPGA芯片的全可编程SoC平台提供了一个更加灵活的解决方案。在这个解决方案中,单个可编程芯片提供了大量不同的IP软核和硬核资源,并且设计人员可以在任何时间对这些资源进行升级。这种全可编程结构大大缩短了系统的开发时间。并且,同一平台能应用在很多领域,因此极大地提高了平台的资源复用率。

全可编程结构的出现使得设计人员可以优化系统吞吐量和开发周期,并且提供前所未有的软件和硬件逻辑协同设计的灵活性。这种灵活性主要体现在设计嵌入式系统时,设计人员能够根据系统性能要求和所提供的设计资源,灵活地确定如何将系统实现的功能合理地分配到软件(CPU)和可编程逻辑资源。这就是我们所说的软件和硬件设计的协同性,这种协同性不同于传统嵌入式系统的协同设计,这是因为,虽然传统的嵌入式系统也使用软件和硬件的协同设计,但是基本上还是大量地使用分离的设计流程。例如,硬件设计人员负责制定硬件设计规范,而软件设计人员则负责制定软件设计规范,结果导致参与嵌入式系统设计的软件和硬件设计人员对同一问题有着截然不同的理解。同时,对设计团队的沟通能力也提出了很高的要求。

目前,随着全可编程SoC容量和性能的不断提高,全新的全可编程技术已经应用到不同领域中,如通信、汽车电子、大数据处理、机器学习等。它已经不是传统意义上用于连接不同接口设备的连接逻辑了,而是逐渐变成整个嵌入式系统最核心的部分。当传统的可编程逻辑器件发展为全可编程SoC后,设计的复杂度不断提高,硬件和软件的协同设计在这个全可编程SoC平台上显得非常重要。由于全可编程SoC平台集成了大量的包括片上总线和存储器在内的设计资源,因此设计人员更多的是需要具备系统设计和系统结构方面的经验,特别是系统建模能力。

在全可编程SoC平台设计阶段,设计已经从传统上以硬件描述语言HDL为中心的硬件逻辑设计转换到了以C语言为代表的以软件为中心的功能描述。因此,形成了以C语言描述嵌入式系统结构的功能,而用HDL语言描述硬件的具体实现的设计方法,这也是基于全可编程SoC和传统上基于SoC器件实现嵌入式系统设计的最大区别,即真正实现了软件和硬件的协同设计。

1.1.4 全可编程SoC的技术特点

与传统的嵌入式系统设计相比,使用全可编程SoC实现嵌入式系统设计具有以下4方面的优势。

1.定制

基于全可编程SoC平台,嵌入式系统设计人员可以根据设计要求灵活地选择所要连接的外设和控制器。这样,设计人员就可以在单个全可编程SoC内设计出满足特定要求的定制外设,并且通过Arm AMBA总线与Arm处理器进行连接。对于一些非标准外设,设计人员可以很容易地使用全可编程SoC来实现。例如,通过使用全可编程SoC,嵌入式系统设计人员很容易设计出具有10个UART接口的嵌入式系统,而在基于SoC的传统嵌入式系统设计中,则只有通过外扩UART芯片才能实现这个特定的功能和需求。

2.延长产品生命周期

一些公司,特别是为军方提供产品的公司,它们的产品供货周期常常比标准电子产品的供货周期要长。对它们来说,电子元器件停产将是一个非常严重的问题,因为这将导致它们无法继续稳定地为军方提供其所需的电子产品。解决这个问题的一个方法就是在传统的FPGA器件内嵌入软核处理器,这样就可以充分满足长期稳定地供应电子产品的需求。

3.降低元器件成本

全可编程SoC功能的多样性使得以前需要用很多外部专用ASIC器件才能实现的系统,现在只使用一个全可编程SoC器件就能实现。通过这个平台,不但减少了在嵌入式系统设计中所使用的电子元器件的数量,而且显著缩小了PCB的尺寸,降低了实现嵌入式系统的物理总成本。

4.硬件加速

当使用全可编程SoC实现嵌入式系统设计时,设计人员可以根据需求在硬件实现和软件实现之间进行权衡,使所设计的嵌入式系统满足最高的性价比要求。例如,在实现一个嵌入式系统设计时,当使用软件实现算法成为整个系统性能的瓶颈时,设计人员可以选择在全可编程SoC内使用硬件逻辑定制协处理器引擎来高效地实现该算法。这个使用硬件逻辑实现的协处理器可以通过AMBA总线接口与全可编程SoC内的Arm Cortex-A9嵌入式处理器相连接。此外,通过Xilinx公司提供的最新高级综合工具HLS,设计人员可以很容易地由硬件来处理软件瓶颈。

1.1.5 全可编程SoC中的处理器类型

根据不同的需求,全可编程SoC中的处理器可分为硬核处理器和软核处理器两种。

1.硬核处理器

在芯片内的硅片上,通过划分一定的区域来实现一个处理器称为硬核处理器。早期,Xilinx公司将IBM公司的PowerPC硬核处理器集成到Virtex-II Pro~Virtex-5系列的FPGA芯片中。后来,Xilinx公司将Arm公司的双核Cortex-A9硬核处理器集成到Zynq-7000系列的SoC芯片中。之后,Xilinx公司将Arm公司的双核/四核Cortex-A53硬核处理器和双核Cortex-R5硬核处理器集成到Zynq UltraScale+MPSoC中。

2.软核处理器

对于一些对处理器性能要求不是很高的需求,没有必要在硅片上专门划分一定的区域来实现专用的处理器,而是通过使用FPGA芯片提供的设计资源,包括LUT、BRAM、触发器和互联资源来实现一个处理器的功能,这就是软核处理器。对软核处理器来说,它通过HDL语言或网表进行描述,只有通过综合后才能被使用。

例如,Arm公司提供可以在Xilinx FPGA上运行的Cortex-M0 IP核(等效逻辑门的RTL描述),通过Vivado工具的综合和实现可以在FPGA芯片内构建一个嵌入式系统硬件平台。

当采用硬核处理器时,虽然硬核处理器的性能较高,但是整个芯片的成本也相对较高,同时灵活性较低。而采用软核处理器则正好相反,即虽然软核处理器的性能较低,但是整个芯片的成本相对较低,同时灵活性较高。也就是说,只有需要时才在FPGA芯片内使用逻辑资源生成一个专用的嵌入式处理器。 oQb6eNs9WET156DixBt7dyGhmS4+zo6a0B2m/Sw64hUMqZNr43sKX1A1epnjzQky

点击中间区域
呼出菜单
上一章
目录
下一章
×