基于ARM的MCU 视频图形处理方案

控制/MCU

1878人已加入

描述

  需要高级视频图形功能的系统实施起来一直是个挑战。传统上,这些系统需要硬件特性和软件功能的复杂组合,以创建应用程序所需的必要更高级别的视频和图形。最新的基于 ARM 的 MCU 现在提供了一套全面的高级硬件功能,这些功能通常将常见的视频和图形标准实现为独立的模块,从而最大限度地减少对这些硬件功能“硬编码”的需求。此外,广泛的基于 ARM 的生态系统提供了大量软件支持,以实现常见的应用程序级功能(例如,轻松构建图形用户界面或 GUI 的应用程序),所需的低级编码数量最少。广泛的参考设计和硬件平台允许设计人员利用制造商开发的例程来简化他们自己的定制应用程序的创建。让我们看看现在基于 ARM 的 MCU 系列中提供的一些新的视频硬件和软件功能。

  三个关键要素:输入、处理和显示

  将视频图形的三个关键要素分为输入、处理和显示是很方便的。输入功能通常允许设备连接到各种标准的各种传感器和相机。处理功能支持将一种标准转换为另一种标准,创建用于显示的多层图形对象(例如,作为 GUI 中的元素),以及用于创建具有深度和阴影属性的对象的更复杂的功能。最后,显示功能将存储在内存中的图形元素转换为可以传输到平板显示器或电视的数据。现在让我们使用基于 ARM 的 MCU 来更详细地了解这些元素中的每一个。

  视频图形输入

  大多数现代基于 ARM 的 MCU 都包含一个用于常见图像传感器的视频输入接口。这些接口通常使用标准格式(例如 RGB 或 YCbCr)将视频输入存储到内部存储器中,这些格式可以进行处理,然后显示在标准 LCD 面板上。爱特梅尔SAMA5D3系列基于 ARM 的 MCU 就是一个很好的例子,它说明了一些所需的视频输入功能。主要的视频输入模块是图像传感器接口 (ISI),并使用两种流行的方法连接到图像传感器:与垂直和水平同步信号的硬件同步,或国际电信联盟建议 (ITU-R) 标准(如 BT. 601/656)。BT.601/656 的使用减少了引脚数,因为不需要垂直和水平信号,但不如通用垂直和水平硬件同步模式灵活。图像传感器数据由高达 12 位的并行数据组成,并支持高达 2048 x 2048 的分辨率。完整的输入数据路径如下图 1 所示。

  

 

显示器

 

  图 1:Atmel SAMA5D3 MCU 的视频输入路径(由 Atmel 提供)。

  时序信号和图像传感器输入数据显示在图表的左侧。图中底部中间有两条输入路径;一个用于预览路径,一个用于编解码器路径。可以格式化预览路径以转换输入视频,然后直接在输出 LCD 面板上显示(可能是 RGB 格式)。2D 图像缩放器和像素格式化器可用于实现简单的视频缩放,并且需要剪辑。完整的路径可以通过中断和 DMA 访问来支持,而完全不涉及 CPU。如果需要视频处理,可以使用图 1 底部所示的编解码器路径将输入数据转换(例如,从 RGB 到 YCbCr)并以打包格式存储在内存中。

  使用中断和 DMA 传输管理数据路径的能力对于提高视频应用的效率至关重要。这使得 ARM CPU 可以专注于实现管理功能并为功能差异化提供定制化处理。Atmel SAMA5D3 是具有重要自主操作的设备的一个很好的例子,当处理效率至关重要时,您应该寻找它。

  在许多情况下,视频数据已经经过压缩处理,需要以不同的格式捕获。例如,安全摄像机通常以压缩的 JPEG 格式提供视频数据,以减少传输视频数据所需的带宽。这可以降低接收端的功耗要求并简化数据带宽要求。加密通常用于保护视频数据免受网络入侵。让我们考虑一个使用STMicroelectronics STM32F207 MCU 作为目标平台的安全摄像头设计示例。

  STM32F207 数码相机输入是一个同步并行接口,能够从外部 CMOS 相机模块捕获高速图像数据。支持YCbCr4:2:2、RGB656、8/10/12/14位逐行视频、JPEG等常见格式。JPEG 在低功耗应用中很有用,因为它经过压缩,因此传输图像所需的带宽更少。STM32F207 在视频流的水平同步部分接收 JPEG 视频,如图 2 所示。请注意,HSYNC 信号的宽度取决于每个 JPEG 数据包所需的数据量。流的开始和结束指示以 VSYNC 信号为界,以便于识别。

  

 

显示器

 

  图 2:在 STM32F207 上使用摄像头输入进行 JPEG 捕获(由 STMicroelectronics 提供)。

  一旦捕获了 JPEG 视频数据,就会使用 DMA 控制器将其存储在内存中,以减少 CPU 开销。在传输之前,视频数据会被加密,以使网络入侵者难以捕获或篡改视频(您是否经常看到安全视频数据在雀跃电影中“被黑”)。STM32F207 具有片上加密处理器,支持流行的加密标准,如 Triple-DES 和 AES-256。加密处理器作为 32 位 AHB 外设访问并支持 DMA 传输。随机数生成器和安全哈希处理器也可用于添加身份验证功能,以便可以证明安全摄像头的命令和从摄像头传输的数据来自预期的来源。

  一旦数据被完全处理并准备好发送,STM32F207 就有一个以太网控制器,该控制器使用符合 IEEE 802.3 的 MII 接口连接到外部 PHY,支持 10/100 数据传输。该控制器还支持 LAN 唤醒帧,以便在等待以太网端口活动时可以使用低功耗模式。双 2 KB FIFO(一个用于发送,一个用于接收)提供足够的缓冲存储来保持高效率,从而降低功耗。DMA 用于传输以太网流量以及进一步减少 CPU 开销。普遍使用 DMA 将数据从输入通过处理传输到传输,这是低功耗视频实现中的一种常见技术,并且在任何以功率效率为关键考虑因素的设计中都应该是一个关键元素。

  视频图形处理

  视频图形处理是高级 ARM MCU 和 MPU 近年来增加的更复杂的功能之一。MPU 尤其为视频处理添加了硬件加速,旨在创建可包含实时视频的创新用户界面。将视频数据从一种格式转换为另一种格式、裁剪、缩放和颜色校正以适应目标显示器的属性或变化的照明条件的能力可以显着增强用户体验。飞思卡尔 i.MX53xx _具有片上 2D 图形处理单元 (GPU) 和单独的 3D GPU。2D GPU 实现了针对 OpenVG 1.0.1 图形 API 和功能集的各种图形和视频处理功能。3D GPU 以 DirectX9 着色和纹理为目标,用于构建高级图形图像。

  2D GPU 在构建视觉上引人注目的 UI 时特别有用,并且可以使用由 3D GPU 创建的图形元素。2D GPU 支持各种源和目标位图格式(例如,从 ARGB4444 到 ARGB8888)中最高 2048 x 2048 的帧缓冲区上的位图图形操作,例如 BitBlt、填充和光栅化操作。提供了三个用于遮罩、图案和 Alpha 层的独立源位图,以简化复杂图形结构的实现。矢量图形引擎与 2D 单元一起提供多边形和几何操作。2D GPU 的框图如下图 3 所示。

  

 

显示器

 

  图 3:飞思卡尔 i.MX53xx MPU 嵌入式 2D GPU 框图(由飞思卡尔提供)。

  2D GPU 接受命令流,如图 3 顶部所示。命令被分离并发送到 2D 单元或矢量图形单元。2D 单元通过内存仲裁器对图形内存上的像素、渐变、纹理和颜色进行操作。矢量单元生成几何形状并对其进行操作,也使用内存仲裁器访问图形内存。仲裁器通过优先化和组合内存操作来最大化带宽效率。

  i.MX53 视频图形系统的架构具有独立的 2D、矢量和 3D 单元,这并不罕见。拥有支持不同标准的独立模块可以更轻松地创建特定功能的驱动程序、中间件和更复杂的高级应用程序接口 (API),让设计人员能够专注于他们的关键差异化,而不是将时间投入到实现低级“家政”功能。很多时候,这些模块还支持低功耗模式,其中可以关闭未使用的元件以显着降低功耗。当视频图形处理是您设计中的一项重要要求时,请寻找这些类型的功能。

  视频图形输出

  在某些应用中,不需要直接视频输入功能;但是,拥有视频输出功能可能很关键。例如,手持式测试设备可能需要图形用户界面和生成以图形方式显示实时测试结果的视频输出的能力。这些类型的功能的常见示例可以在超声医疗设备、材料检查或电信频率测试中找到。NXP LPC4350双 ARM 内核 MCU 是非常适合这些应用的设备类型的一个很好的例子。NXP LPC4530 的 LCD 面板输出控制器如下图 4 所示。

 

显示器

 

  图 4:NXP LPC4350 双 ARM 内核 MCU 上的 LCD 输出(由 NXP 提供)。

  到帧缓冲器的系统接口是通过图 4 中左中所示的 AHB 主设备。控制器将像素编码数据转换为各种可能的显示设备所需的格式,包括单或双 Super Twisted向列 (STN) 面板或薄膜晶体管 (TFT) 彩色面板。支持从 320 x 240 到 1024 x 768 的显示分辨率,在 TFT 显示器上每像素真彩色非托盘颜色高达 24 位。245 个 16 位条目的 RAM 调色板可用于托盘化实现。请注意,当存在双面板时可以使用单独的 DMA FIFO,或者当只有一个面板时可以组合使用。这有助于提高传输效率并减少 CPU 开销。包含硬件光标以简化图形用户界面 (GUI) 实现。

  NXP LPC4350 上可用的双 ARM 内核对于具有大型或复杂 GUI 功能的应用程序特别有用。其中一个 ARM 内核可专门用于管理用户界面和测试数据的实时显示。这有助于将时间关键功能与不太关键的管理或处理功能分开。例如,数据处理的短暂延迟远不如数据显示期间的延迟(造成“参差不齐”并分散测试结果的推出)那么明显。将 CPU 专用于关键显示功能也有助于优化功耗,因为当显示屏不活动时,可以将显示处理器置于低功耗模式。您只需在需要更新显示时唤醒 CPU。

  基于 ARM 的生态系统支持

  当时 ARM CPU 的普遍使用创造了一个非常强大的生态系统,支持与视频图形相关的功能。软件支持包括视频编解码器、用于构建 GUI 功能的工具,甚至是高级视频处理功能。一种流行的用户界面 (UI) 构建器是 Mentor Graphics 的 Inflexion UI。它支持拖放创建引人注目的 UI,这些 UI 可以针对运行 RTOS 的应用程序,并且可以使用目标设备的 OpenGL 硬件图形引擎来实现 2D、2.5D 或全 3D 效果。

  另一个例子是 Segger 的 emWin。emWin 中间件系统为图形 LCD 提供了高效的 GUI。它以“C”源代码的形式提供,以便在基于 ARM 的设备上轻松实现。该系统包括对小部件库、窗口管理器、渲染支持(带有图形库、基本字体和触摸/鼠标支持)以及输出和内存设备驱动程序的支持。这些只是 ARM 软件生态系统中众多图形和面向 GUI 的元素中的两个示例。

  供应商和第三方提供了丰富的硬件支持,他们提供了可以开发基于视频的应用程序的开发平台。飞思卡尔 i.MX53 器件拥有一个完整的开发平台,具有针对复杂设计的目标参考设计,例如无线摄像头接口、可视电话平台或更通用的开发平台。即使是 i.MX53 的简单入门套件,如MCIMX53-START-R-ND,也可用于评估 i.MX53 的一些高级视频图形功能,包括引导 Linux、连接到相机和驱动液晶面板。

  概括

  需要高级视频图形功能的系统现在受益于使用基于 ARM 的现代 MCU,这些 MCU 将通用视频和图形标准实现为独立模块,最大限度地减少对这些硬件功能“硬编码”的需求。此外,广泛的基于 ARM 的生态系统为实现常见的应用程序级功能提供了大量软件支持,并提供了硬件平台来简化自定义应用程序的创建。有关 MCU 以及此处讨论的视频和图形功能的更多信息,请使用提供的链接访问 Digi-Key 网站上提供的产品信息页面和培训模块。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分