第1章 全可编程片上系统
本章主要介绍全可编程片上系统的概念以及典型器件——赛灵思(Xilinx)公司的Zynq-7000系列的体系结构和技术特点,从Zynq-7000系列片上的处理器单元、可编程逻辑单元,以及片上公共资源等几个主要组成部分入手,介绍什么是全可编程片上系统、它和其他常见的嵌入式芯片相比有何优势和不足,以及应该在哪些系统中使用这类芯片等基础性问题。本章内容是综合性的,通过学习本章,可以帮助读者理清后续各章知识之间的关系,建立针对全可编程片上系统的整体概念。
1.1 全可编程片上系统的概念和特点
1.1.1 全可编程片上系统的概念
全可编程片上系统是可编程逻辑器件厂商在其传统的现场可编程门阵列(field programmable gate array,FPGA)的基础之上,集成了硬核的中央处理单元(central processing unit,CPU),以及连接两者间总线资源的一种新型的片上系统(system on chip,SoC)器件。由于这类片上系统的可编程逻辑部分由FPGA构成,能够被“编程”为任意的数字电路,硬核中央处理单元部分也可以进行软件“编程”,因此这类芯片被形象地称为全可编程片上系统(all programmable system on a chip,APSoC)。毫无疑问,由于集成度更高,全可编程片上系统相比之前CPU与FPGA分离的系统,体积、功耗和成本得以降低,而且提高了系统的整体性能,非常适合高性能嵌入式系统的应用。
1.1.2 全可编程片上系统的技术特点
从全可编程片上系统的概念介绍可知,这类器件中完成实际功能的组件有两种:由 FPGA构成的可编程逻辑部分和高性能应用处理器部分。本书的后续章节将分别用PL(programmable logic,可编程逻辑)和PS(processing system,处理系统)两个英文缩写来指代这两个功能部件。PL部分、PS部分以及连接它们的高级可扩展接口(advanced extensible interface,AXI)总线资源在APSoC芯片内部的连接关系如图1.1.1所示。
要理解APSoC器件为什么如图1.1.1所示,同时包含PL和PS部分的结构,需要*先理解FPGA和CPU在信息处理方面各自的优缺点。
图1.1.1 APSoC芯片内部主要部件关系示意图
从本质上讲,以FPGA为代表的可编程逻辑器件对信息的处理是“并行”的。这类器件上拥有大量的可编程逻辑资源,可以针对具体的应用和算法,把这些资源编程为加法器、乘法器、数据选择器等任何需要的功能电路。当编程完成后,各种功能电路都是各自*立地存在于器件中的,可以同时工作。宏观上看,加法、乘法或数据选择等操作被“并行化”了,从而极大地缩短了信息处理的总时间。因此可编程逻辑器件在需要大量计算,且对处理时间敏感的系统中获得了广泛的应用,如人工智能、超高速信号处理、信息安全等应用。
但“并行化”并不是万能的,想象这样一种应用场景:对信息的下一步处理严重依赖于上一步的处理结果——例如人机交互系统中,只有当人对系统的处理结果做出响应并输入后,系统才能进行下一步的处理。系统无法预知人类对当前处理结果的响应,将当前处理和下一步的处理“并行化”也就显得毫无意义。这时对信息进行“串行化”的处理,就正好是CPU的专长。理论上讲,CPU内部只有数量非常有限(通常情况下只有1个)的能对数据进行处理的算术逻辑单元。它只能在完成对**组数据的读取、运算和存储后,才能依次对第二组数据进行读取、运算和存储。也就是说CPU非常善于完成人机界面、通信协议处理等串行化的信息处理任务。
传统意义上的可编程逻辑器件和处理器是两类不同的器件,但随着人工智能、万物互联时代的到来,可编程逻辑器件厂商和处理器厂商都意识到,将两类器件结合起来的片上系统才能够满足未来复杂的应用,即对于高速并行计算和复杂协议处理的双重要求。
率先付诸行动进行尝试的是可编程逻辑器件厂商阿尔特拉(Altera)公司和Xilinx公司。它们在21世纪的头几年,依托FPGA内部日益充足的可编程逻辑资源,推出了软核处理器NiosⅡ和MicroBlaze。软核处理器的设计思路是这样的:处理器实质上也是一个复杂的数字电路,那么完全可以在FPGA内部,利用可编程逻辑资源实现一个处理器,并让这个处理器来处理具体应用中的串行化任务。FPGA内部剩余的逻辑资源则仍然可以完成传统可编程逻辑器件擅长的并行化任务。这个处理器在可编程逻辑器件出厂时并不存在于器件内部,而是用户根据具体应用需要,在开发时通过调用开发工具软件中集成的知识产权(intellectual property,IP)软件的方式“放入”器件中的,因此NiosⅡ和MicroBlaze被称为软核处理器。在随后的使用中,上述软核处理器方案逐渐呈现出以下缺点。
(1)采用可编程逻辑资源实现的电路性能不如固定功能逻辑电路的性能,软核处理器的主频远低于同时代的硬核处理器,难以运行Linux和Android等主流操作系统,无法利用这些操作系统上已有的大量软件工具和开发工具链。
(2)实现相同逻辑功能的可编程逻辑资源所消耗的电能,远大于固定功能逻辑电路消耗的电能,导致软核处理器无法大规模应用在电池供电的嵌入式细分领域。
(3)固定功能逻辑电路的单位实现成本,远低于实现相同功能的可编程逻辑器件资源的单位成本,使软核处理器在成本敏感应用领域的应用受到限制。
基于上述原因,以Xilinx公司为*的可编程逻辑器件生产商,从21世纪第二个十年开始在可编程逻辑器件中提供采用固定功能逻辑电路实现的处理器CPU,也就是APSoC器件的**个系列Zynq。APSoC中由固定功能逻辑电路实现的处理器不同于早期FPGA器件中可以配置的软核处理器,它们是在器件出厂时就已经在APSoC器件中且无法被擦除的,被称为硬核处理器或应用处理单元(application processing unit,APU)。
APSoC器件获得广泛应用的另一个重要原因,在于片上集成的应用处理单元——能*大限度地利用现有的开发工具链和应用代码。Zynq系列选择了在移动嵌入式领域具有统治地位的ARM内核作为应用处理单元的内核。ARM处理器是由英国安谋科技(ARM)公司设计的,是全球*成功的精简指令集计算机(reduced instruction set computer,RISC)。ARM公司既不生产芯片,也不销售芯片,而是允许德州仪器(Texas Instruments,TI)、意法半导体、Xilinx公司这类原始设备制造商(original equipment manufacturers,OEM)使用ARM处理器内核IP制造代码、调试工具和应用兼容的处理器。在授权给Xilinx公司的APSoC器件使用ARM内核之前,ARM公司已经将其ARM内核授权给了全球众多的处理器生产商,其出货量已经达到数十亿片。基于ARM处理器的软件开发工具、硬件调试工具已经非常成熟,基于ARM处理器的Linux、Android等流行操作系统也有众多版本的移植镜像可供选择和裁剪,在上述操作系统上的各种应用程序更可以用“汗牛充栋”来形容。
从这个意义上讲,集成了ARM应用处理单元的APSoC器件可以说是一种将基于FPGA硬件开发的生态链对接到ARM生态链的划时代器件。FPGA开发者可以利用Linux软件社群积累的海量软件资源扩展自己开发的硬件电路功能和应用;Linux或Android下的软件和算法开发者,也可以方便地将自己的工作无缝对接到更加定制化的硬件上。
1.1.3 用全可编程片上系统器件构建嵌入式系统的优势和缺点
嵌入式系统是以应用为中心,以计算机技术为基础,嵌入宿主系统内部,是软、硬件可定制和裁剪,并对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
1.嵌入式系统的特点
(1)专用性强。嵌入式系统通常针对某种特定的应用场景,与具体应用密切相关,其硬件和软件都是面向特定产品或任务而设计的。不但一种产品中的嵌入式系统不能应用到另一种产品中,甚至不能嵌入同一种产品的不同系列。
(2)实时性好。嵌入式系统应用于宿主系统的数据采集、传输与控制过程时,普遍要求具有较好的实时性。一旦达不到应有的实时性,就有可能造成极其严重的后果或对用户体验感产生较大影响。从某种意义上讲,嵌入式系统处理结果的实时性与正确性具有同等重要的价值。若无法在指定的时间内得到正确的结果,则与得到错误的结果一样是令人无法接受的。
(3)可靠性高。嵌入式系统的应用场景多种多样,面对复杂的应用环境,嵌入式系统应能够长时间稳定可靠地运行。嵌入式系统多工作在无人值守的环境,直接与宿主系统的动作相关,在复杂环境中失效可能会带来灾难性的执行效果。
(4)体积小、功耗低。由于嵌入式系统要嵌入具体的宿主系统内部,其大小受限于宿主对象。一方面对系统体积往往有严格的要求;另一方面在没有充裕的供电的环境下,需要使用电池供电。因此小体积、低功耗是嵌入式系统必须考虑的设计要素。
(5)注重制造成本。嵌入式系统往往会与宿主系统捆绑销售,节约单个产品的制造成本,这意味着总制造成本的海量节约,会产生可观的经济效益。嵌入式系统的软、硬件裁剪,在满足应用需求的前提下有效地降低了单个产品的制造成本。这也成为嵌入式系统所追求的重要目标之一。
(6)生命周期长。随着计算机技术的飞速发展,通用计算机系统的更新换代速度非常快。但嵌入式系统和具体宿主系统紧密结合,进入市场后一般能够维持8~10年的相对较长使用时间,不会频繁换代,具有较长的生命周期。
2.APSoC为嵌入式系统带来的优势
综合上面介绍的APSoC以及嵌入式系统的普遍特点,我们会发现APSoC简直是为嵌入式系统专门定制的解决方案,它将为嵌入式系统带来以下全新的设计优势。
(1)针对具体应用的硬件定制化。嵌入式系统设计者可以根据项目功能需求,在PL部分灵活地实现所需的外设,如图1.1.2所示。对于一些宿主系统所需要的特殊硬件功能要求,也能利用PL部分定制化的能力予以满足。例如,很多工控项目中需要嵌入式系统具有10个以上的通用异步收发传输器(universal asynchronous receiver/transmitter,UART)以实现对众多传感器和执行机构的控制。但很少有微控制单元(micro controller unit,MCU)能够同时提供这么多UART。APSoC方案却能够通过调用IP的方式,在PL部分实现很多UART,并通过AXI总线连接到PS端的应用处理单元上,实现嵌入式软件对这些UART的无缝连接与控制。
图1.1.2 用APSoC定制嵌入式外设
APSoC定制化的优势直接满足了嵌入式系统专用性强的需求;并且无须在传统嵌入式系统的基础上扩展过多的外设器件,显著缩小了电路板的尺寸,间接满足了嵌入式系统体积小的需求。
(2)便于实现算法的硬件加速。在传统嵌入式使用软件实现算法的方案之外,APSoC还为系统设计者提供了硬件实现算法的方案。由于硬件实现算法具有并行性优势,计算速度将大大快于传统软件实现的方案,但其经济性和功耗比将相应降低。嵌入式系统设计者可以根据应用需求,在算法实现的实时性和经济性之间进行权衡。既可以选择经济性和功耗比较好的传统软件方案,也可以为了提高嵌入式系统的实时性需求,而选择在PL部分实现算法。另外,Xilinx公司提供的高层次综合器(high level synthesis,HLS)可以允许传统嵌入式开发者将已有的高级语言(如C/C++)算法,直接转换成在PL部分开发使用的硬件描述语言。
(3)降低元器件成本,延长嵌入式系统的生命周期。使用AP
展开