可编程逻辑
早期嵌入式处理系统通常由一个微控制器和一系列外设构成。这些系统通常用来完成获取少量数据、处理数据、做出决策、基于决策结果输出信息等工作。在某些情况下会实现简单的人机交互接口如读取键盘并显示结果。处理需求、同时产生需求,以现在的标准来看似乎微不足道。现代嵌入式系统通常需要处理和分析十亿字节级的海量数据,而且常常在确定性和低延时运算上还有一些额外要求。许多应用还要求系统在满足相关行业标准的同时可靠符合可靠性和安全性要求。
目前,似乎还不可能在单一处理器上同时满足处理高带宽数据、执行系统应用程序、响应实时请求并满足行业安全标准。然而,多核异构芯片却可以实现这些功能。这样的设备具有多个处理单元,每一个单元都有能力负责处理一个或多个前述需求,我们称这样的设备为异构处理系统。
一个异构多处理系统由不同类型的多个单核心或多核心处理器构成,异构多核处理系统最简单的形式是由一个多核处理器和GPU组成。然而,现代科技让一颗芯片上的异构多处理系统包含以下模块:
①多核应用处理器(Multicore Applications Processors);
②多核图形处理器(Multicore Graphics Processors;
③多核实时处理器(Multicore Real-Time Processors);
④平台管理单元(Platform Management Unit);
⑤配置和安全系统(Configuration and Security Unit);
⑥在FPGA可编程逻辑上实现特定多核处理器。
本文所引用的异构多核处理系统包括上述的多个分类。使用FPGA逻辑实现多核处理器的优势是:它可以创建自定义特殊应用处理器,通过并行Pipes和多Pipeline stages来实现二维并行数据处理,使得在一个时钟周期里可以完成大量的计算。
多核处理器可以设计用来执行通用计算或者是专用计算。和通用处理器执行相同功能相比较,专用计算在减小硅片封装、提高单时钟周期吞吐率、低功耗的同时能实现数据优化处理。
Xilinx在2002年推出了第一款带PowerPC405应用处理器的FPGA,在接下来的FPGA里,Xilinx在单片内集成了更高性能的PowerPC单核或双核处理器。不像现今产品代的器件处理系统是一个集成的ASSP(包含处理器、互联、存储控制器和外设),早期产品需要大量的FPGA资源将各部分资源连接在一起形成一个ASSP-like的解决方案。
2011年,Xilinx推出了Zynq-7000系列高集成度的器件,它集成了ARM Cortex-A9 MPCore处理器、互联单元、内存控制器、外设以及基于Xilinx 7系列FPGA的可编程逻辑。有人肯能会认为Zynq-7000系列是第一代“异构多处理”系统,因为片上的可编程逻辑使得创建和使用专用处理单元成为现实。
2015年,Xilinx发布并且开始供货新一代异构多处理器件Zynq UltraScale+ MPSoC。之前的器件集成了可编程逻辑和一个或多个应用处理器,Zynq UltraScale+ MPSoC器件集成了:
①多核应用处理器:四核ARM Cortex-A53应用处理器;
②多核图形处理器:双核ARM Mali-400图形处理器;
③多核实时处理器:双核ARM Cortex-R5实时处理器,可同步运行安全性要求苛刻的应用;
④平台管理单元:一致性三冗余处理器用于power、错误管理和功能安全管理;
⑤配置和安全单元:一致性三冗余处理器用于系统配置和安全管理;
⑥FPGA可编程逻辑:用户可编程逻辑用于定制处理器、处理单元和外设。
多核应用处理器是传统的用于通用计算的重负载处理器。这些处理器一般工作在SMP模式,运行一个Linux或Andriod操作系统,当然也支持虚拟管理运行多操作系统。
图形处理单元是继浮点运算单元之后最流行的协处理器。GPU从应用处理器分担图形处理负载,实现复杂的用户界面和复杂的图形渲染。对Andriod或Windows CE之类的操作系统而言,这些都是必须的基本功能。通用目的GPU(GPGPU)除了图形处理,还可以胜任数据阵列通用计算。
实时处理器可以低延时响应事件,和应用处理器比较通常也更具确定性。在大多数情况下会运行支持低延时中断处理和确定性应答的实时操作系统。在功能安全性应用中,实时处理器通常会运行在双核锁步模式下,这样可以检测双处理器中一个处理器出现的错误。
平台管理单元负责管理关键的系统功能和服务。这些功能包括系统错误处理、功耗管理和功能安全任务等。作为系统的心脏,该单元不容失败。因此,这里使用了包含表决逻辑的三冗余处理器,这使得即使有一个处理器核发生错误事件,子系统也可以继续运行。
配置和安全单元负责系统配置,包括加载处理器第一级Bootloader、可编程逻辑的配置bit stream,程序代码和bit文件均有可选的加密认证和解密功能。配置和安全单元还可提供持续的安全监控,比如过压或欠压、低温或高温、试图提取系统信息访问等。
片上可编程逻辑为异构处理带来了充分的灵活性。可以通过添加额外的现成的软核来处理特殊应用的计算任务,也可以在不同层级添加多pipeline和多pipeline stage自定义软核实现数据流的大规模并行处理。
机器人拾取和放置装配线是一个很常见的机器视觉和控制应用实例,这个应用通常有以下基本功能:
①高分辨率相机视频采集系统;
②包括亮度对比度调节、失真校正和消除死点等功能的视频图像处理;
③目标检测和识别;
④标记组件在装配中正确位置的算法决策;
⑤机器手臂运动路径选择;
⑥电机驱动控制;
⑦安全事件检测和关机;
⑧用于状态显示和系统控制的图形用户界面;
⑨配置和安全管理。
上述的每一个功能都可能需要特定的处理能力,比如,让通用处理器来处理实时HD图像,处理器很容易就会负载过重无法在特定时间完成处理。
那么,就让我们考虑使用这种异构多处理系统实现可能的解决方案。为了有助于更加形象的理解,Xilinx将会以Zynq UltraScale+ MPSoC控制机器人系统在平板电脑上玩纸牌游戏的例子来诠释。系统的部分功能已经实现并在“Embedded World 2016”展会上展示。
4.1 视频获取和处理
1080P60视频流要求3Gbps(373MB/s)的数据率,视频流路径上需要做的处理可能包括:亮度、对比度调节,白平衡,失真校正,死点剔除等。这些bit级处理用可编程逻辑完成非常高效,无需处理器太多参与。
4.2 目标检测和识别
初始对象检测通常需要扫描整幅图像寻找类似细节目标轮廓之类的关键特征,这项功能一般由可编程逻辑实现。一旦目标被判定为疑似目标,那么就可能需要执行更为复杂的算法对目标进行更进一步的决策判定。应用处理器通常负责目标识别的下一级数据量变小但算法更加复杂的处理。
在这个机器人纸牌游戏案例中,所有的图像都是通过可编程逻辑扫描,识别纸牌边界和定位游戏纸牌,以及纸牌的排列和花色。随着数据量明显降低,纸牌排列和边界图像被递交给应用处理器通过图像识别算法来识别排列和花色。
4.3 算法决策
算法决策一般是很复杂的处理,通常通用应用处理器可以很好的完成。在我们的例子里, 新牌打出的时候触发应用处理器计算新的关于牌的角色和运动可能的决策集。
4.4 运动路径选择
两点之间,直线最短,这样的路径会导致目标在两个端点之间发生冲突。运动路径通常被分为多段,并且需要从传统的笛卡尔坐标系中翻译到机器人运行系统坐标系。在我们的多核异构系统中,这既可以通过应用处理器完成也可以通过实时处理器完成。
机器人纸牌游戏相对而言会比较简单,因为在平板电脑上运动路径没有潜在的障碍物。我们在应用实例里选择了Delt机器人,Delt机器人结构通常是三个并联手臂连接到一个和受动器相关的通用关节执行器上。因此,受动器在3D笛卡尔坐标系中的运动必须翻译成三个独立马达的运动矢量,在这个应用中所需的x,y,z坐标参数传给实时处理器来计算三个机械手臂各自的运动路径。
4.5 电机驱动控制
电机控制算法用于控制加速、正常运行和减速,对机械约束允许的最小运动时间进行优化,确保在加减速的过程中不会对部件造成损害,减小能量消耗等等。上述计算和运动驱动一起,通常都是通过实时处理器来实现,实时处理器在这些方面体现出卓越的性能,在我们的例子里也是如此。实时处理器工作在锁步模式下来增加可靠性。
4.6 安全事件检测和关机
安全事件可以是人进入机器人视野,而机器人可能会对人类造成伤害,能够识别这一事件并且在一定程度上快速响应保护人类对系统而言至关重要。我们机器人纸牌运动员在其周围构建了一个红外线墙,当某一光束中断,机器人的电源会马上关闭,然后系统会立马停止。在这个例子里,可以使用三冗余平台管理单元,这个高度可靠的处理单元可以接收来自红外线墙的输入,在事件检测时关闭机器人。
4.7 图形用户接口
图形用户接口(GUIs)通常运行在Linux操作系统上层,Linux支持从基本的窗口管理器扩展到完整桌面环境。
这个纸牌机器人系统需要显示纸牌桌界面,实时预览HD相机图像,纸牌排列和花色检测窗口显示以及游戏状态窗口等等。Ubuntu桌面环境提供了一个很好的平台,在这上面前述内容都可以实现很好的显示,并且可以通过这些用户界面控制游戏。多核应用处理器是运行Linux和Ubuntu桌面的完美选择,集成的多核GPU用于融合显示2D、3D和视频数据。
4.8 配置和安全
处理系统需要启动操作系统和应用程序,可编程逻辑也需要配置。开发者越来越希望保护他们的代码和知识产权核不被竞争对手和黑客获取,因此代码和配置数据的加密和验证对确保代码正确加载至关重要。一旦运行,系统就需要保护免受外界影响。
在这个例子里面,配置和安全单元在纸牌游戏运行之前执行验证和解密代码及配置数据。烧录的E-Fuses可以保护配置和数据不能通过JTAG之类的接口回读。
系统攻击可能会导致信息泄露或者不正常的运行。这些攻击可能包括过压/欠压或者是超高温/超低温等,这些攻击可以被检测到并按需锁定系统。
早期的嵌入式系统通常包含一个或几个微处理器来处理包括用户接口、数据采集、数据处理、外部控制和应用处理等各种各样的功能。接下来的各代产品带来更高性能的处理器、多核处理器、专用处理器和实时处理器。FPGA最初以胶合逻辑角色出现,随着他们逻辑量变大,已经用于实现额外的外设、状态机和大规模并行数据处理。最新一代Xilinx Zynq UltraScale+ MPSoC是一个单片异构多处理系统,它由多核应用处理器、多核图形处理器、多核实时处理器 、一个平台管理单元、一个配置和安全管理单元以及可实现多处理组件的编程逻辑组成。这样的器件使得软件和硬件都可以根据特定应用完全定制来充分满足目标嵌入式应用的要求。
全部0条评论
快来发表一下你的评论吧 !