资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
利用智原科技 A320 SoC 平台开发 2D 图像加速器 智原科技(上海)有限公司,技术支持部 陈宏铭 陈小莹 陈彦溱 利用智原科技 A320 SoC 平台开发 2D 图像加速器 智原科技(上海)有限公司,技术支持部 陈宏铭 陈小莹 陈彦溱 我们观察市面上的机顶盒,中端 GPS,手机或 PMP,此类方案的多媒体主控芯片很多都要求 具有 2D 图像显示功能,于是我们利用智原 A320 SoC 平台开发 2D 图像加速器,可以用来加 速此类芯片所要求的 2D 图形显示效果。本文会先就 2D 图像加速器的设计原理做一个说明, 至于 FPGA 验证时所需要的载体,也就是智原科技所提供给 ASIC 客户开发 SoC 芯片使用的 A320 SoC 平台, 我们也会做一个说明。 全硬件 2D 图形加速引擎包含完整的 BitBLT 功能, 影像混合调整(alpha-blending)、 图形扩 大缩小与旋转功能。除此之外,更针对 GPS 的特殊应用而设计了画线(line draw),字型反 锯齿(text anti-aliasing)与渐层着色(Gradient fill),而且可以针对每一个像素做处理。 2D 图像加速器包含了一个 32 比特 BLT 引擎以及 Line Draw 引擎用以提供针对许多视窗操 作所需要的硬件加速。微软视窗定义了像素(pixel)是最小可寻址的屏幕元素,而线(line) 跟图像都是由像素利用种种的变化组成的。 像素是所有计算机图像的基本元素, 它也是计算 机显示器上的一点亮光,用来展现出不同的颜色。2D 图像引擎设计用来减轻 CPU 在图像处 理上过多的负担, 以及在像素数据搬动和画线上头加速图形的处理, 同时也加快了计算图形 时的逻辑操作以提升 SoC 整体的性能。 2D 图像加速器的功能定义如下: AHB 主/从 接口完全符合 ARM AMBA 2.0 规范 在 UMC 0.13 工艺且在内置 FIFO 的条件下,AHB 总线速度高达 200MHz 以上 在 2D 图像加速器内核的同步时钟操作频率在 83MHz 实时显示支持最大图像分辨率高达 1024 x 768,其中分辨率是指像素在显示器上的行与 列的数目。 支持标准微软 256 三元光栅操作码(ternary raster operation codes - ROPs) 支持针对来源(source)/目的(destination)RGB 空间 alpha-blending(按照“Alpha”混 合向量的值来混合来源像素和目的像素)的图像覆盖,让 2D 对象产生透明感的技术,追求 透明光影效果 支持在 BLTs 和 Bresenham 画线的透明以及剪辑(Clip)的功能, Bresenham 画线算法通过 采用运行速度快的加减和移位运算来完成画线。 支持 RGB-565, RGB-888, ARGB-1555, ARGB-8888 等格式如下图一 图一 RGB-565, RGB-888, ARGB-1555, ARGB-8888 等格式 2D 图像加速器的模块图如图二所示,加速器是基于一个 AHB 主以及一个 AHB 从接口的 AHB 总线,未来在 FPGA 开发板上用来与 A320 上的 AHB 连接器进行结接。我们就 AHB 总线进行 一个粗略的带宽估算: 针对 800X600 而且格式为 ARGB-8888 (4 字节/像素)的图片: 800*600*2*30*3*(1/0.6)*4 = 144M144M *4 =576 (MB/秒) = 也就是说 SDRAM 时钟速度至少要到 144MHz144MHz. 这个速度要求建议 SDR SDRAM 控制器在 0.13um 或更先进工艺实现, 或者是 DDR SDRAM 控制器在 0.18um 或更先进工艺实现。 解释: “2” 是针对较大的 BG 所增加的分辨率因数(通常用在画制背景图)。 “30” 代表 30 帧/秒实时显示的要求。 “3” 意谓在正常的图形描绘 2-读和 1-写的时候。 “0.6” 是指总线效率因数, 考虑到 DRAM 反应时间(latency)和 AHB 总线仲裁器 (arbiter)所造成的延迟。 图二 2D 图像加速器的模块图 2D 图像加速器中会提供某些功能如 ROPs, Line drawing, Tranpancy, Alpha blending 等 等以达到图形描绘 (Rendering)的目的, 模块的流水线示意图如图三所示。 图三 2D 图像加速器图形描绘的流水线示意图 数据块传送(BitBLT) 数据块传送(BitBLT) 您可以把整个视频显示器看作是一幅大位图(bitmap)。我们在屏幕上见到的像素由储存在 视频显示卡上内存中的位置来描述。任何视频显示的矩形区域也都是一个位图,其大小是 它所包含的行列数目。让我们从将图像从视频显示的一个区域复制到另一个区域,这个是 由强大的 BitBlt 函数来完成的。理解图像最重要的一点是,图像总是矩形的。这不只是方 便了人们的理解,其原因是底层的技术。所有的现代显示卡都内置了硬件,可以非常高效地 把像素块从内存的一个地方复制到另一个地方。 假定像素块表示一个矩形区域, 这个硬件加 速操作可以虚拟为一个操作,而且执行速度非常快。实际上,这是现代高性能图像的关键。 这个操作称为位图块传输(或者 BitBlt)。 BitBlt是从实际视频显示内存传输图像, 而不是从系统菜单图标的其它图像传输。 如果移动 BITBLT窗口以使部分系统菜单图标移出屏幕, 然后调整BitBLT窗口的尺寸使其重画, 这时将 发现BitBLT显示区域中显示的是菜单图示的一部分。BitBlt函数不再存取整个图像。 在 2D 计算机图形处理, BitBLT 引用 DMA 对在相同或不同的内存位置上的像素数据作数据块 传送。BitBLT 命令实现了被微软所定义的所有的 256 光栅操作(ROPs). 这些三种光栅操作码定义 BitBLT 如何在逻辑上从来源(source)操作数, 模式(pattern) 操 作数, 以及目的(destination) 操作数进行比特的运算。光栅操作总是在 BitBLT 以及必须 被使用者加载一个适当的值的时候起作用的。 并不是每一种 ROP 码都要用到全部 3 种原始数据, 有的甚至连 1 种也用不到, 例如全黑 或者全白的 ROP 码。 块传送函数使用的 ROP 码总共有 256 种, 它们是 3 种原始数据进行不同 位操作(取反、与、或和异或)的组合,但有些 ROP 码对应的操作结果实在是太难想象了, 比如 ROP 码 0e20746 对应的操作是(目标像素 xor 画刷) and 源像素) xor 目标像素),凭 这个算式的确比较难以想象最后得到的位图是什么样子的。 在实际使用中很多算法组合也并 不是那么有用,所以微软视窗只对 15 种最常用的 ROP 码定义了预定义的助记代码, 如表一所示,对于这些 ROP 码,在程序中可以直接使用助记码,对于表中没有列出的 ROP 码,可以直接使用 16 进制数值。 ROP 码 16 进制数值 新像素点算法 BLACKNESS 00000042h 全部为 0 DSTINVERT 00550009h not 目标像素 MERGECOPY 00c000cah 画刷 and 源像素 MERGEPAINT 00bb0226h (not 源像素)or 目标像素 NOTSRCCOPY 00330008h not 源像素 NOTSRCERASE 001100a6h not(源像素 or 目标像素) PATCOPY 00f00021h 画刷 PATINVERT 005a0049h 画刷 xor 目标像素 PATPAINT 00fb0a09h 画刷 or (not 源像素)or 目标像素 SRCAND 008800c6h 源像素 and 目标像素 SRCCOPY 00cc0020h 源像素 SRCERASE 00440328h 源像素 and(not 目标像素) SRCINVERT 00660046h 源像素 xor 目标像素 SRCPAINT 00ee0086h 源像素 or 目标像素 WHITENESS 00ff0062h 全部为 1 表一 块传送函数中使用的 ROP 码 BitBlt 函数的用法是: invoke BitBlt,hDcDest,destX,destY,dwWidth,dwHeigt, hDcSrc,srcX,srcY,dwROP 这个函数将源 hDcSrc 中以 (srcX, srcY) 为左上角的一个矩形区域传送到目标 hDcDest 中以(destX,destY)为左上角的地方去,如图四所示,数据块传送将相同大小的矩形内的 像素从来源到目的,在复制时可以使用 StretchBlt 函数拉伸或者压缩图像尺寸。矩形的宽 度为 dwWidth,高度为 dwHeight,当然目标 DC 中的最后结果是由 dwROP 中的 ROP 码定义的 源、目标和画刷三者数据的组合。 灵活使用 ROP 码可以实现很多的功能,比如在一个背景图片上叠加一个非矩形的位图, 游戏程序中人物在背景上面的移动就是这样的一个例子。 图四 数据块传送将相同大小的矩形内的像素从来源到目的 光栅操作 光栅操作 BitBlt 函数的最后一个参数指定了一个光栅操作(ROP) ,它明确定义了如何将来源数据、 目的数据和模式(由现在选出的刷子画笔定义)的位组合去形成一个目标文件。因为一个位 图只是一个位值的集合,光栅操作(ROP)只是一个在比特操作的布尔等式。相应使用的设 备,位图中的代表不同的事物。 在多色设备上,每个象素由一个位集合代表,他们要么形成一个指向颜色的索引,要么直 接代表一种颜色。 在单色设备上,每个象素由一个位来代表,0 表示黑色而 1 代表白色。 BitBLT 操作被用于各种各样的的功能如下列所示: 矩形的块像素在内存不同位置间的运动。 矩形块中单一颜色(solid color), 单模式(mono pattern)或颜色模式(color pattern) 的图形描绘。 256 ROP逻辑操作的履行。 在所有BitBLT的操作期间内部或外部的剪辑。 BitBLT 操作直接的加速了在显示内存或帧缓冲(frame buffer)之间的 2D 像素数据传送。 帧缓冲用于光栅扫描系统(Raster Scan System)中来储存像素的亮度(Intensity),屏幕内 容的刷新也是靠帧缓冲内所储存的信息。我们可以把帧缓冲当作是一个二维阵列,在单色 显示器中,每一个像素在帧缓冲内就是一个比特来实现。 一般来说, BitBLT 命令在 DMA 矩形的块搬移期间,针对所有 256 个可能的 ROPs,操作在三 个操作数: 模式, 来源和目的。 当它是彩色的数据或当它是单色数据但可能来自内部模式 掩模(pattern mask)寄存器时,88 模式操作数可能已经存在于显示内存。来源操作数是彩 色数据而且存在于显示内存。 目的操作数通常存在于显示内存。输出结果,也就是目的数据由 BitBLT 所描绘通常被写回 相同的显示内存, 也就是所谓的 read-modify-write 操作,图五表示 RGB 数据格式以及 BitBLT 操作。 这里提到的彩色数据在计算机图形学里就是红, 绿以及蓝等三原色。 在彩色系统里, 每个在 帧缓冲的像素都由RGB三个一组的值来表示, 对VGA显示器这种低分辨率的系统, 彩色分辨率 通常用8个比特来代表,8比特系统在任何特定的时间能够代表256种颜色。现在的系统大都 是24比特(各是8比特给红,绿以及蓝色)或更高的分辨率,24比特系统能立刻显示16个百万 的颜色。有时我们加如一个额外的8比特称为al
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号