一种基于水平线填充的2d图形ip核实现方法

文档序号:6631907阅读:195来源:国知局
一种基于水平线填充的2d图形ip核实现方法
【专利摘要】本发明公开了一种基于水平线填充的2D图形IP核实现方法,应用于2D图形绘制的硬件加速。直线、三角形、椭圆是二维图形中的基本图元,所有复杂场景的二维图形均可由上述基本图元经过有限叠加来完成。只需向该部件的接口发送基本图元的坐标等属性信息,即可高效的完成整个系统的2D图形绘制与显示工作,基于水平线填充的方式能有效提高图形的生成速度。
【专利说明】-种基于水平线填充的2D图形IP核实现方法

【技术领域】
[0001] 本发明主要涉及图形芯片中2D图形绘制领域,特指一种基于水平线填充的2D图 形IP核实现方法。

【背景技术】
[0002] 图形加速技术是指利用专门的软件或硬件技术来加速图形在整个系统中的处理, 提高整个系统的工作效率。软件加速方法,既包括图形处理算法的不断改进,也包括对软件 代码的优化来提高图形系统中显示处理的效率。硬件加速方法,既是通过软件和硬件工作 的重新划分,将图形绘制部分的工作交由专门的硬件单元进行实现。通过硬件单元实现图 形绘制,将能极大释放系统中处理器的压力,提高图形的生成效率。


【发明内容】

[0003] 本发明要解决的问题就在于:针对现有技术存在的技术问题,本发明提出一种结 构相对简单、硬件资源消耗不大、执行效率比较高的基于水平线填充的2D图形绘制的实 现。
[0004] 与现有技术相比,本发明的优点就在于:1、逻辑简单:本发明提出的基于水平线 填充的2D图形绘制架构简单,比较利于硬件的实现;2、性能优良:本发明提出的2D图形生 成架构中,在图元预处理模块采用全流水的方式,因此可以保证图元生成的快速实现;3、使 用方便:本发明提出的基于水平线填充的2D图形绘制策略的可重用性较好,满足OPENGL和 WINDML规范的2D图形绘制,可以在嵌入式或通用图形芯片中很方便的移植。

【专利附图】

【附图说明】
[0005] 图1是本发明的2D图形处理IP核结构示意图; 图2是本发明中顶点处理模块与命令解析模块、顶点FIFO的逻辑关系图。

【具体实施方式】
[0006] 如图1所示,为本设计实现的基于水平线扫描方式的二维图形IP核实现结构。由 软件经过编译处理后,将图形绘制的命令和图元的属性参数经由本地总线接口传入命令参 数FIFO中。该命令参数FIFO为一个异步FIFO,数据输入工作在本地总线时钟下,数据输出 工作在绘图时钟下,一边接收图形参数、命令信息,一边将接收的信息送入命令解析模块。 命令解析模块依据信息解码的结果,分别配置好绘图参数寄存器,以及确认命令中绘制图 元的类型,将各图元的顶点参数进行图形的预处理后,按顺序存入图元顶点FIFO中。各相 应二维图形绘制模块从顶点FIFO中得到各自图元顶点信息,依据各图元的绘制算法对外 产生图元的水平线信息,并存入绘图FIFO中。水平线填充模块根据获得的水平线信息,计 算各条水平线相对于帧存的地址,进而将绘制图形的水平线经由高速缓存和DDR2控制器 模块写入帧存。在二维图形的绘制模块中,线段绘制的反走样处理与位图处理则是直接经 由高速缓存,将绘制的图形信息与帧存进行读写。
[0007] (1)本地总线接口模块 本地总线接口实现对模块内部的读写操作。模块内部实现读写绘图控制寄存器,实现 中断申请信号,以及命令参数FIFO读写接口。绘图控制寄存器各状态位包括命令参数FIFO 的状态和FIFO的剩余空间、二维IP各模块的忙状态、FIFO产生的中断标志位中断申请信 号由两种状况产生。一种情况是,FIFO状态由超过半满到少于半满,或者由满到非满的状 态切换产生。用于软件判断是否继续下发命令参数。在该种情况下,除了产生中断申请信 号外,还需要置位绘图控制寄存器中相应的中断信号位,由软件读后清除该中断标志位。另 一种情况是,由整个核内各子模块的忙闲状态的判断产生。用于软件绘图时,进行帧切换的 处理。
[0008] (2 )命令参数FIFO模块 负责缓存软件发送的命令参数。内部实现深度为1024个字,字宽为32位的双时钟异 步FIFO,写接口工作在本地总线时钟,读接口工作在内部绘图时钟。写接口信号包括写时 钟、写信号、写数据、满信号、半满信号,已使用字数信号。读接口信号包括读时钟、读信号、 读数据、空信号。
[0009] (3)命令解析模块 绘图及控制命令按照命令数据包方式组织,命令数据包按照32位字宽的格式组织连 续发送。命令数据包有配置参数设置命令和图形绘制命令两种格式。配置参数命令包,包 含的数据有图形前景色、背景色、线宽、填充模式、填充图案和裁剪区域参数。绘图命令包, 包含的是图元类型命令码、图元顶点以及顶点个数数据。
[0010] 命令解析模块依据命令参数配置格式,解析出来的数据如果是配置参数命令包, 则将相应参数信息统一配置到一个寄存器参数配置区域,相关参数寄存器与后续各相关模 块关联;如果为绘图命令包,则根据图元类型的不同,将数据包中一个图元所包含的顶点数 据进行组装,在一个时钟节拍内将图元顶点数据发送到顶点预处理模块。图元命令包,分别 包括直线段数据包、三角形填充数据包、矩形填充数据包、椭圆填充数据包、椭圆绘制数据 包,以及位图处理数据包。本模块处理忙的时候,无法读取命令参数FIFO中的数据。
[0011] (4 )顶点处理模块及顶点FIFO 图元顶点预处理的目的,是确定所绘制图元是否为一个有效图元,以及根据不同图元 绘图算法的需求,进行图元顶点位置调整。该模块划分为直线顶点预处理模块、三角形顶点 预处理模块、矩形顶点预处理模块、椭圆绘制预处理模块、椭圆填充预处理模块,各图元的 预处理模块采用流水设计,流水线长度已各基本图元中流水线最长的椭圆预处理为基准。 顶点FIFO,在图元绘制模块与命令顶点预处理模块之间缓存图元顶点数据,如此在FIFO未 满没有打断流水线的情况下,将提高整个绘图IP核的工作效率。顶点FIFO的深度设置为 16行,每行代表一个图元数据,每个图元的位宽统一设置为164bits。在FIFO为满的条件 下,将发出流水线中断信号,暂停命令解析模块、顶点预处理模块的工作。
[0012] (5)绘图模块 整个绘图模块由线段绘制、矩形填充、三角形填充、椭圆填充、椭圆绘制、位图处理几个 单独的子模块构成。将顶点FIFO中获得的图元数据进行译码,确定当前需要工作的绘制模 块,将图元顶点参数发送至该绘图模块中。当前工作的绘图模块依据绘制算法,生成图元的 每条水平线并由绘图FIFO进行水平线的缓存。
[0013] (6)直线段绘制模块 依据给定直线的两端点坐标,进行直线的绘制。该模块有非反走样处理的直线段绘 制,以及反走样处理的直线段绘制两种模式。对于没有反走样处理的直线段绘制,采用 Bresenham算法绘制直线。Bresenham算法的基本思想是通过直线上的当前点以及直线的 方位(不是精确的斜率)以步进的方式确定直线上下一点的位置,直到确定完当前扫描的水 平线结束,才开始下一条水平线的继续生成。确定了当前水平线的起点和终点位置后,写入 水平线FIFO中,并根据直线的宽度参数,进行水平线的扩展并发送至水平线FIFO中。
[0014] 对于直线的反走样处理,采用多点采样的方式进行处理。该算法的思想,将把线条 当作一个斜向矩形,计算该矩形在所经过的各个像素点上所占的面积比,将该面积比作为 显示的alpha值,利用每个象素前景色与背景色的融合处理,淡化直线边沿的锯齿现象。按 照多点采样的算法,扩展为一定宽度的矩形后,水平逐点扫描象素点,计算线段在该像素的 面积占用比,由高速缓存从帧存中读出该象素对应位置的背景颜色,再经由高速缓存回传 到直线绘制模块中的象素融合模块进行融合处理,融合结束后,重新写回高速缓存,由高速 缓存写入帧存中。由于该算法中进行的矩形扩展和面积比计算需要进行小数的运算,如果 采用浮点运算的方式处理,将需要占用大量的硬件资源,而进行的象素点扫描是水平直线 的方式进行的,且均是对于整数坐标上的象素点进行采样,因此,本设计中对于反走样处理 过程中的算术运算,采用的是16位精度定点数的运算,并且在扩展出矩形后,将顶点转化 为了包含两位小数的定点数。这样的处理,在累积精度损失不大的情况下,减少了大量硬件 资源的消耗。
[0015] (7)三角形填充模块 将输入的三个顶点的坐标按照屏幕坐标,从下到上的顺序进行重新排列,依次确定出 一个主顶点和两个次顶点。以主顶点和两个次顶点为参照点,从下到上的顺序同时驱动两 个线段Bresenham算法控制单元,以步进的方式进行水平线生成,确定三角形每条水平扫 描线的起点、终点坐标。在绘制三角形内部水平扫描线时,出于邻接三角形相互衔接的需 要,每一条扫描线的最右端一个点不能绘制。在软件的协助下,可以完成一般多边形的填 充。
[0016] (8)矩形填充模块 由输入的左上、右下两个顶点坐标确定矩形四个顶点的坐标,以从下到上的顺序进行 水平线扫描,得到每条水平线的起点和终点坐标。每生成完一条水平线后,既交由水平填充 模块进行处理,直到整个矩形填充结束。该模块的加入,可以快速完成屏幕的清屏操作。
[0017] (9)椭圆绘制与椭圆填充模块 作为2D图形加速引擎的一个基本功能单元,椭圆硬件加速单元需要实现的功能有:绘 制完整的椭圆、绘制椭圆弧、支持椭圆区域填充(包括实心填充、图样填充)、支持椭圆弧线 宽及虚实线设置等功能。椭圆坐标参数有:矩形边界左上角、右下坐标及椭圆弧起始点、终 止点坐标。产生的目标椭圆弧内切于矩形上下左右边界,并由起始点逆时针走向终止点,若 起止点坐标相同则产生一个完整的椭圆;否则则为一段椭圆弧。
[0018] 设计采用整数型中点椭圆生成算法,由状态机控制算法的硬件实现。该算法是在 水平方向或垂直方向递进,产生的点组成一段段的水平线、对角线或者垂直线。对于对角线 段和垂直线段可以看成长度为1的水平线段。
[0019] (10)位图处理模块 位图处理模块根据寄存器参数模块设置的位图处理参数,对帧存中相应 的数据进行操作和更新,再写回到帧存中。本文设计的位图处理模块,提供了 快速的带光栅操作和透明的块拷贝,图案填充,颜色扩展操作。操作流程为: ①对从顶点FIFO中获得的图元数据解析,得到目的地址数据;②经过DDR2控制器取得源 数据;③根据参数寄存器中配置的位图处理寄存器,进行相应的数据处理操作,如光栅操 作、颜色扩展等;④处理完毕的数据写回到目的地址上。整个位图处理引擎内部分为了接口 单元、数据FIFO、地址产生单元、数据处理单元和字节对齐单元几个部分。
[0020] (11)绘图 FIFO 模块 为一个同步FIFO,缓存产生各图元的水平线,以便于绘图模块内水平线的产生以及后 面的水平填充模块可以流水作业。依据绘图模块提供的输出水平线有效信号,接收2D各绘 图功能模块计算生成的水平线起始、终止点坐标信息,同时加入在水平线中加入图元的颜 色属性。依据FIFO内存储空间的信息,对水平填充模块产生读FIFO的请求信号,控制水平 填充模块从绘图FIFO中获取水平线信息。在本FIFO模块即将满的情况下,产生FIFO满信 号,提示绘图模块暂时中断水平线信息的传递。当前当FIFO满信号撤消时,绘图模块继续 传递水平线息。
[0021] (12)水平填充模块 本模块的功能是将绘图FIFO中得到的水平线数据与参数寄存器中的裁剪窗口参数 进行比较,保留水平线中存在于裁剪区域内的象素点,根据水平线的起点、终点坐标计算 起、止象素点在SDRAM帧存的物理地址,并将水平线上象素点的前景色参数写入到高速缓 存中。高速缓存按突发传输的方式将数据写入帧存(突发传输数据的大小由高速缓存依据 Cache Line的容量和实际写入这行的数据量来确定)。
[0022] (13)图形高速缓存 2D加速引擎与DDR控制器要进行频繁的、大量的数据交互,其中有些数据的长度较小。 这种对DDR存储器少量而频繁的读/写操作效率要远远低于大长度的突发读/写操作的效 率。此外,为了保证显示控制器以60Hz的屏幕刷新频率访问帧存的带宽需求,所以要尽力 避免2D加速引擎对DDR的零碎访问而导致的存储器操作瓶颈。因此,在2D加速引擎和DDR 之间插入高速的图形数据Cache模块。图形Cache控制系统为2D加速引擎提供了一个近 似透明的DDR访问机制,并且将其对DDR的少量频繁的访问变为较大长度的突发操作,这样 可以有效地提高访问效率及对DDR存储带宽的利用率。
[0023] 图形高速缓存Cache采用读、写Cache分开设计的方法,读Cache负责缓存绘图模 块所需要的位图、直线反走样所需颜色数据等相关信息;写Cache负责缓存各绘图子模块 处理完成后要写到帧存的图形数据。通过Cache高速缓存,可以大大提高图形处理模块对 DDR帧存的读写速度。读、写Cache容量均设置为64*64个像素大小,即16KB ;每个Cache 行设为64个像素大小,即256Byte,共64行。为了简化Cache与DDR控制器之间的操作, 读、写Cache和DDR帧存之间采用直接映射的地址映射方式。
[0024] (14) DDR2控制器模块 DDR2控制模块负责控制帧存与Cache高速缓存之间的数据传输,及时将图形处理模 块对帧存的更新信息写入帧存或者将图形处理模块所需要的数据写入高速缓存。本模块为 一个支持双通道仲裁读写的DDR2控制器接口模块,分别为图形读入通道和图形输出通道。
【权利要求】
1. 一种基于水平线填充的2D图形IP核实现方法,其特征在于:将直线、三角形、矩形、 椭圆几个基本图元的生成由象素点绘制,转变为将各图元分解成每条水平线,由水平线的 起点和终点信息完成水平线的填充;水平线填充的过程,采用全流水的形式,加快图元生成 的效率:(1)、将图形绘制的命令和图元的属性参数经由本地总线接口传入异步逻辑的命 令参数FIFO中;(2)、经命令解析模块解码,配置好绘图参数寄存器组(主要放置图元的裁 剪窗口、线宽、虚实线、前景色、背景色、填充图案、帧存地址定位相关参数),确认绘制图元 的类型,将各图元顶点进行图形绘制的预处理(预先确定所绘制图元是否为一个有效图元, 提高绘图资源利用率,进行图元顶点位置调整),按顺序存入图元顶点FIFO中;(3)、图形绘 制模块从顶点FIFO中得到各自图元顶点信息,依据各图元绘制算法对外产生图元的水平 线;(4)、水平线填充模块根据获得的水平线信息,计算各条水平线在帧存中的地址,进而 将绘制图形的水平线经由高速缓存和DDR2控制器模块写入帧存;(5)、直线段的反走样处 理(多点采样算法实现)和位图处理,需要从帧存中获取数据进行像素处理,直接经由高速 缓存,将绘制的图形信息与帧存进行数据交互。
2. 在2D加速引擎和DDR之间插入高速的图形数据Cache模块,尽力避免2D加速引擎对 DDR的零碎访问而导致的存储器操作瓶颈,图形Cache控制系统将2D加速引擎对DDR的少 量频繁的访问变为较大长度的突发操作,有效提高访问效率及对DDR存储带宽的利用率。
【文档编号】G06T11/20GK104361619SQ201410585077
【公开日】2015年2月18日 申请日期:2014年10月28日 优先权日:2014年10月28日
【发明者】周毅 申请人:长沙景嘉微电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1