基于DMA架构的图像加速器的设计

2022-09-02 10:52韩旭东吴全兴
微处理机 2022年4期
关键词:状态机透明度前景

韩旭东,吴全兴

(中国电子科技集团公司第四十七研究所,沈阳 110000)

1 引言

随着时代的发展,计算机对显卡的要求越来越高,一款高端GPU是衡量显卡性能的最重要指标。在早期没有GPU的年代,所有图形的处理都由CPU完成,但随着计算机的发展,CPU越来越显得力不从心,GPU在这种情况下应运而生。在单片机领域也有着与之相似的情况,嵌入式系统的图形显示虽然没有计算机那样复杂,但显示屏的分辨率和色彩同样越来越丰富。为了在不增加CPU负担的情况下满足图形显示需求,在此设计一款基于DMA(Direct Memory Access)架构的图像加速器。在功能上,该设计相当于一款类似GPU的外设,可以独立处理二维复杂图形,能够实现包括单色快速填充、图像复制、颜色格式转化后复制及前后两张图片混合等功能。

2 加速器系统构成

所设计图像加速器的系统构成如图1所示。

其中,前景层/背景层缓存是一个32bit×64的FIFO,用于高速读取源数据时的缓存。前/背景层格式转换控制器负责处理前/背景层缓存输出的颜色和透明度。透明度可以采用源数据的,可以采用前/背景层内置的,也可以采用源数据的透明度与前/背景层内置的透明度的乘积再除以255;颜色可以是源数据自带的,可以是前/背景层格式转换控制器内部指定的,也可以是查找表中检索出的颜色。

图1 基于DMA的图像加速器系统构成

将透明度和颜色依现有方法处理为ARGB8888格式的数据,再输出给后续模块处理。

前/背景层查找表是一个32bit×256的RAM,用于预存指定数量的颜色值。当使用间接颜色模式(L4、L8、AL44、AL88)时,依据源数据的索引值(L部分的值),检索出查找表中对应的颜色(ARGB888或RGB88颜色格式)并输出给前/背景层格式转换控制器,再由前/背景层格式转换控制器将其转换成统一的ARGB8888格式数据。

混合控制器用于将前景层格式转换控制器和背景层格式转换控制器输出的ARGB8888格式的数据,按照各自的透明度,加权运算得出混合后的新的ARGB8888格式的数据,并输出给输出格式转换控制器。

输出格式转换控制器用于将ARGB8888格式的数据,依据现有的处理方法,转化成实际用于显示的直接颜色模式(ARGB8888、RGB888、RGB565、ARGB1555和ARGB4444)。

输出缓存是一个32bit×64的FIFO,用于缓存要输出到目标区域的像素数据。

3 图像DMA工作机理

图像DMA的颜色有三种工作模式,即:直接颜色模式(ARGB8888、RGB888、RGB565、ARGB1555、ARGB4444);间接颜色模式(L4、L8、AL44、AL88);透明度模式(A4、A8)。其中,A代表透明度,R代表红色,G代表绿色,B代表蓝色,L代表亮度并用于检索查找表CLUT。基于此,本设计图像加速器可工作在四种模式下,即:单色快速填充、图像复制、颜色格式转化、转化前后两张图片混合。

在第一种工作模式下,使用内置寄存器指定的单一颜色,依据输出格式转换控制器中指定的格式,直接向目标矩形区域写数据,常用于清屏操作。

第二种工作模式用于实现快速复制功能,图像DMA将源区域的图像数据读取到前景层缓冲区,之后直接写到目标区域,在这过程中图像数据的颜色格式没有改变。

第三种工作模式实现格式转化功能,通过前景层格式转换控制器将源图片转为统一的ARGB8888的颜色格式。对于RGB565、ARGB4444和ARGB1555颜色模式,需要做线性扩展,过程如下述代码[1-4]:

对于ARGB8888和RGB888模式则无需上述操作。对于间接颜色模式,通过L部分的索引值,找到查找表中对应的像素值(ARGB8888或RGB888格式);如果是A4、A8两种颜色模式,则直接结合前景层指定的颜色,通过前景层格式转换控制器转化成ARGB8888模式。在此过程中,前景层格式转换控制器最终输出的像素的透明度,可以保持上述原始计算/查找出的值,也可以替换成指定的透明度,或替换成原始值与指定值的乘积再除以255。经过输出转换控制器将ARGB8888的颜色格式转换成指定颜色格式保存到输出缓存,最终输出到目标区域。

第四种工作模式为格式转化后再混合。格式转化部分与第三种工作模式相同,先将前景层源图片和背景层源图片分别通过前景层格式转换控制器和背景层格式转换控制器转换成统一的ARGB8888颜色格式,混合器再根据两个图片各自的透明度加权运算得出新的图片,经过输出转换控制器将其转换成指定的颜色格式,保存到输出缓存中,最后输出到目标区域。混合时需要根据前景层和背景层的颜色格式(直接颜色模式,间接颜色模式),将前景层和背景层格式转换控制器输出的每一个像素一一对应,完成混合。

4 功能仿真与FPGA验证

逻辑设计完成后,将其整合到一款MCU中,搭建仿真验证平台进行功能验证[5]以及FPGA[6-8]验证。四种工作模式的仿真结果如下:

(1)第一种工作模式

对单色快速填充功能进行模拟仿真,即将寄存器DMA2D_OCOLR指定的某一颜色输出到目标矩形区域(状态机的0x10状态),仿真结果波形如图2所示。

图2 第一工作模式仿真波形

(2)第二种工作模式

仿真简单复制图片功能,通过前景层缓存读取源图像(状态机的0xc状态),再将输出(FG_FIFO_o)写入目标区域(状态机的0x15状态),仿真结果波形如图3所示。

图3 第二工作模式仿真波形

(3)第三种工作模式

仿真颜色格式转化后复制的情形,通过前景层缓存读取源图像(状态机的0xc状态),再将其输出(FG_FIFO_o)输入到前景层格式转换控制器(状态机的0x13状态),格式转换后的输出(FG_PFC_o,颜色格式为ARGB8888)输入到输出格式转换控制器(状态机的0x13状态),再将输出格式转换控制器的输出(Converter_Out)写入输出缓存(状态机的0x13状态),最后写入目标矩形区域(状态机的0x10状态,输出颜色格式为ARGB8888、RGB888、RGB565、ARGB1555或ARGB4444),仿真波形如图4所示。

图4 第三工作模式仿真波形

(4)第四种工作模式

仿真颜色格式转化前后两张图片的混合,通过前/背景层缓存读取源图像(状态机的0xc/0xe状态),再将其输出(FG_FIFO_o/BG_FIFO_o)输入到前/背景层格式转换控制器(状态机的0x13状态),将前/背景层格式转换控制器的输出(FG_PFC_o/BG_FIFO_o,输出颜色格式为ARGB8888),同时输入到混合控制器(状态机的0x13状态),再将其输出(Blender_Out,输出颜色格式为ARGB8888)输入到输出格式转换控制器(状态机的0x13状态),再将输出格式转换控制器的输出(Converter_Out)写入输出缓存,最后写入目标矩形区域(状态机的0x10状态,输 出 颜 色 格 式 为ARGB8888、RGB888、RGB565、ARGB1555或ARGB4444),仿真波形如图5所示。

图5 第四工作模式仿真波形

上述功能仿真的结果展示出了四种工作模式的数据流过程,图像DMA实现了预定的基本功能,加速器设计的正确性得以验证。

为了进一步验证设计的正确性,在FPGA上进行一次混合模式的验证。前景层图片颜色格式为ARGB888,透明度为50%,背景层图片颜色格式为RGB888,不透明,输出颜色格式为RGB565。混合模式验证结果如图6所示,可见其取得了良好的图像处理效果。

图6 混合模式验证

5 结束语

所设计的基于DMA架构的图像加速器主要用于二维图形的加速处理,支持11种颜色模式和4种工作模式,支持一个或者两个图层的输入,可以对一个或者同时对两个图层进行颜色格式转换,可以单独处理一个图层或者混合处理两个图层并输出处理后的像素数据。经过实验仿真,设计实现了这些预期的功能。将此加速器用在单片机中,通过配置相关软件,便可在嵌入式系统中同样实现二维图像的华丽丰富的渲染效果。

猜你喜欢
状态机透明度前景
我国旅游房地产开发前景的探讨
FPGA状态机综合可靠性探究 ①
四种作物 北方种植有前景
基于有限状态机的交会对接飞行任务规划方法
离岸央票:需求与前景
基于Spring StateMachine的有限状态机应用研究
中国FTA中的透明度原则
企业社会责任与信息透明度
量子纠缠的来历及应用前景
贵阳:政府透明度居九市州之首