当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于ARM+FPGA架构的三维图形加速系统

引言

  随着图形处理的巨额运算量,CPU变得不堪重负。此时,需要使用特定的硬件设备来为嵌入式CPU承担图形处理的任务。

  具有三维图形硬件加速能力的ARM+FPGA架构嵌入式图形系统就是其中一种解决方案。其中,ARM处理器负责运行嵌入式操作系统、执行上层图形应用程序,而三维图形处理所需的大量运算则由FPGA实现的GPU(图形处理单元)进行。
 

  图形API简介

  在图形系统中预先定义了一组图形API,作为一个抽象层将图形应用程序和图形系统的具体实现隔离开来。具体的图形应用程序都将通过这些图形API来完成所有与绘制图形相关的工作。这样,同样的应用程序就可以在不同的目标图形系统上运行。

  目前应用较为广泛的标准图形API主要有Direct3D和OpenGL。OpenGL定义了与具体硬件实现无关的软件接口,并且不受制于具体的窗体系统。

  本文选用23条OpenGL中最常用的API作为本系统的图形API。在执行应用程序时,具体的图形API被转换成GPU可以处理的渲染列表数据格式,从而将计算任务转交由GPU完成,实现对三维图形处理的硬件加速。

  系统硬件设计

  系统硬件结构

  本文设计的嵌入式图形系统由基于ARM处理器的最小系统、FPGA实现的图形加速、LCD控制器等功能模块,以及常用外设接口电路组成,如图1所示。

  

 

  图1 系统硬件结构

  基于ARM处理器的最小系统是本系统的核心模块,主要由嵌入式处理器、系统内存SDRAM和FLASH存储器组成。SDRAM为处理器运行操作系统和执行应用程序提供内存空间,FLASH用来存放系统引导代码、操作系统内核和应用程序。

  图形加速模块是使用FPGA实现的嵌入式GPU,是系统能够实现硬件加速的关键部件。它通过内部图形处理流水线处理CPU生成的渲染列表,并最终形成像素数据写入帧缓冲SRAM中供LCD进行显示。该模块在三维图形处理中使用固定功能的图形处理流水线,如图2所示。

  

 

  图2 图形处理流水线示意图

  图形加速模块在一片SRAM中生成完整帧数据后将其控制权交给LCD控制器,并使用另一片SRAM继续下一帧数据的计算。在新的一帧数据完成后便再次与LCD控制器交换控制权。LCD控制器通过SRAM仲裁模块从当前显示的帧缓存中读出帧数据,生成符合LCD显示屏要求的时序,完成三维数据的显示。

  系统中存在两组LCD总线。一组是ARM处理器提供的LCD总线,用来显示嵌入式操作系统的图形用户界面;另一组是进行三维图像显示的LCD控制器的LCD总线。总线切换模块负责两类总线的切换,将合适的LCD总线挂接到LCD屏上进行显示。[!--empirenews.page--]系统硬件实现

 

  本文选用S3C2410嵌入式处理器和Cyclone II系列FPGA实现图形加速以及其他功能模块,辅以LCD屏、串口等外围电路实现整个图形系统。

  电源设计

  本系统需要多个不同电压值的直流电源供电,包括5V、3.3V、1.8V和1.2V。其中5V电源从外部直流电源直接引入,而其他电压值则由5V电压变换得到。

  S3C2410的内核电压为1.8V,外部I/O和存储器电压为3.3V。系统选用低压差稳压器AS1117实现这两种电压的转换,固定输出时只需三个引脚,如图3所示。

  

 

  图3 1.8V电源电路

  本文使用TPS70345为FPGA提供1.2V内核电压和3.3V IO电压。

  ARM与FPGA接口电路

  生成三维图形时,嵌入式微处理器上运行的图形应用程序生成三维图形的渲染列表,并将渲染列表写入到FPGA的渲染列表缓冲区中,等待图形加速模块的处理。ARM与FPGA接口电路既要保证可以完成渲染列表的写操作,又要能够对FPGA中总线接口模块、图形加速模块、LCD控制器等的内部寄存器进行读写操作。接口电路如图4所示。

  

 

  图4 ARM与FPGA接口电路

  系统软件设计

  系统软件架构

  本文使用FPGA实现整个三维图形处理流水线,由硬件完成三维图形生成和处理。运行在操作系统上的图形应用程序通过调用图形API实现具体应用,而驱动程序将图形API的调用转换成渲染列表,从而将具体的三维图形处理任务交给硬件完成,如图5所示。

  

 

  图5 系统软件架构

  考虑到嵌入式图形系统除了进行三维图形处理之外,还应当能够为用户提供友好的用户图形操作界面,本文采用了Windows CE操作系统。[!--empirenews.page--]驱动程序设计

 

  设备驱动程序在操作系统和硬件设备之间建立了一个桥梁,让操作系统能够识别设备并为应用程序提供设备服务。

  本文中FPGA实现的图形加速模块作为一个设备挂接在系统中。系统在软件上只需要将渲染列表写到该设备的地址空间,因此本文使用了简单的流式接口驱动,所有的流接口驱动程序都使用相同的一组流接口函数。

  渲染列表的传递是不需要反馈的,系统将渲染列表写入设备(GPU)后并不需要从设备中获取数据,因此流接口函数GPU_Read()并不需要实现具体功能,只在GPU_Write()中将渲染列表写入到设备中。另外,系统在普通图形界面和三维显示两种显示模式下使用的是不同的LCD控制器。前者使用S3C2410中集成的LCD控制器,而后者使用的是FPGA模块中实现的LCD控制器,两种模式下通过LCD总线切换模块进行切换。

  结语

  本文设计了基于ARM和FPGA的嵌入式图形系统,使用FPGA在硬件上实现三维图形处理,缓解嵌入式CPU在处理三维图形时因计算量过大而导致系统效率降低的问题。图像显示符合人眼对图像连续性的要求。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭