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之类的接口回读。
系统攻击可能会导致信息泄露或者不正常的运行。这些攻击可能包括过压/欠压或者是超高温/超低温等,这些攻击可以被检测到并按需锁定系统。
5 总结
早期的嵌入式系统通常包含一个或几个微处理器来处理包括用户接口、数据采集、数据处理、外部控制和应用处理等各种各样的功能。接下来的各代产品带来更高性能的处理器、多核处理器、专用处理器和实时处理器。FPGA最初以胶合逻辑角色出现,随着他们逻辑量变大,已经用于实现额外的外设、状态机和大规模并行数据处理。最新一代Xilinx Zynq UltraScale+ MPSoC是一个单片异构多处理系统,它由多核应用处理器、多核图形处理器、多核实时处理器 、一个平台管理单元、一个配置和安全管理单元以及可实现多处理组件的编程逻辑组成。这样的器件使得软件和硬件都可以根据特定应用完全定制来充分满足目标嵌入式应用的要求。