DSP + FPGA 结构的嵌入式图形处理设(二)

时间:2013-05-17

  3 关键技术

  3. 1 FPGA 逻辑功能的实现

  在FPGA 中主要完成对PCI 总线、外围编解码芯片、显存和VESA 时序的控制,依据OpenGL 接口标准对光栅处理渲染的要求完成诸如点、直线和圆等基本图元的绘制和处理。在FPGA 内设置一个共享存储区,该存储区由PCI 总线和EMIF 总线共同控制,存储CPU 发过来的数据和绘图指令以及图形处理模块自身产生的各种状态信息。其结构示意图如图4 所示:

  PCI 总线发过来的绘图命令和其他数据信息通过FIFO 写入共享存储区内,并读取图形处理模块状态信息,例如绘图结束状态、应答状态等信息,根据这些状态信息产生下一条指令。图形处理模块通过查询该共享存储区 对应位置的数据信息,解析绘图指令,根据判断标志将需要在FPGA 中执行的指令直接执行,将终绘制的图形写入显存,并控制帧缓存将图形按照VESA 时序标准实时输出。

  3. 2 OpenGL 库函数实现方法

  OpenGL( Open Graphics Library) 是一种图形硬件的软件接口标准,它提供了十分丰富的图形接口函数,开发者可以用这些函数来建立2D/3D 模型和进行图形实时交互。OpenGL 的流线型、独立于硬件的接口特征使得它成为行业领域中为广泛接纳的2D/3D 图形API.

  本文论述的方法通过函数先编码再解析的方式实现具体的OpenGL 函数。对OpenGL 库的函数进行编码,并设置是否需要在DSP 中进行处理的标志位,CPU 端将OpenGL 绘图函数封装成这种的编码方式传递给图形处理模块,图形处理模块收到绘图指令后对指令进行解析处理,在DSP 中对复杂指令做进一步拆分,并调用FPGA 中基本图元的绘制以及清除屏幕操作命令完成函数整体的功能。

  例如glBegin 函数,该函数附带参数mode,共有10个不同的数据值,分别表示glBegin 和glEnd 之间通过顶点绘制的图形的10 种不同的形式。具体实现时,对函数进行编码后,设置处理标志位为1,表明该函数需要在DSP 中进行进一步拆分,图形处理模块从FPGA 的共享存储区中读出绘图指令判断后交由DSP负责对函数命令进行分析,DSP 在顶点操作和图元装配这两个渲染步骤中进行如下操作: 对传递过来的顶点坐标进行坐标转换,生成适合屏幕坐标的顶点,并根据读取的glBegin 函数的参数,对顶点进行图元组装,生成参数要求的图元,并将图元转入下一个渲染步骤,由FPGA 负责完成绘制。其指令流程图如图5 所示。

  4 结论

  本文通过分析图形处理模块的功能结构和处理流程,给出了一种DSP + FPGA 结构的符合OpenGL 函数接口标准的图形处理模块的设计方法。依据该方法设计出了一款图形处理模块,集中了DSP 和FPGA 在数据处理方面的优点; 该模块目前已经支持glBegin、glEnd、glClear、glClearColor、glColor、glFlush、glRect、gl- Vertex、glBitmap 和glRasterPos 等函数,符合OpenGL 函数接口标准使得该模块在具体应用时,OpenGL 应用程序可以不经修改或经过少量修改即可移植到该模块所在的图形处理系统中,降低了二次开发的难度和风险。

  利用已经实现的OpenGL 函数绘制的座舱显示基本界面如图6 所示,经过测试,该模块屏幕刷新率约为20 帧/s.

  随着FPGA 并行处理能力和片上资源的集成度的不断提高,FPGA 向着SOPC 和平台化方向发展的趋势更加明显; DSP 内核结构的逐步完善,DSP 和微处理器结合愈加紧密,DSP 的性能和功能将得到进一步提高,利用DSP 和FPGA 设计符合处理性能和显示效果不断增强的图形显示处理模块的这种设计方法将得到更好的发展。

上一篇:DSP + FPGA 结构的嵌入式图形处理设(一)
下一篇:基于国产 CPU 的嵌入式医疗电子无线网络设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料