打印

显示数据的硬件加速如何实现

[复制链接]
1767|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LCDSPEC|  楼主 | 2011-3-8 21:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用以下程序测试一幅图片的显示速度。
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,0x00); //LED OFF
    Flash_photo_display(0,0);   //送第0幅图片
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,0xff); //LED ON

用示波器观察LED管脚输出的低脉冲时间,即可得出显示一幅图片运行的时间。
for(y=0;y<480;y++)
{     for(x=0;x<800;x++)
   {//送显示数据
IOWR_16DIRECT(MCULCD_CTRL_0_BASE,((y<<11)+(x<<1)),0x001f);
}
}

上面这段程序执行的LED低脉冲清屏的时间大约需要575ms。这个显示的大部分时间是消耗在了软件变量的变化读写时间上,纯粹硬件接口层(显示控制器外设)的写时间(46ms)占的比例很小。因此软件程序或者说处理器性能将是优化的重点。


粗略的算一下从FLASH读一整幅图片的理论最短时间:(25us+25ns*2048byte)*375page = 28.575ms。 而实际上在硬件层度FLASH每个字节的周期是80ns,那么理论时间应该是:(25us+80ns*2048byte)*375page = 70.815ms。那么实际上,我们在硬件优化后显示一幅图片的时间完全取决于硬件外设本身,基本和软件以及处理器性能没有关系了。硬件加速真的这么神吗?真的这么管用吗?在这个测试中,平时我们不仅高估了软件(抑或说是处理器)的性能,而且大大低估了硬件的性能。最后,简单的说一下这个硬件加速系统是如何工作的。如上图所示,是这个系统优化之前的一个简单系统架构,FLASH的读写控制完全交给了CPU,而CPU的每次执行都是依赖于RAM上的程序和变量的,然后CPU还需要把读出来的数据送给LCD Controller。

以上是使用灵活的FPGA实现显示数据的硬件加速,普通的ASIC如32位单片机ARM或者一般的显示芯片无法做到,当然以后可能还有更好的方法,因为你使用的是FPGA,不但控制着应用也可以自己优化你的硬件,这就是FPGA的强大优势。


再来看硬件加速后的系统框图,如下图所示。CPU负责FLASH的控制管理,而FLASH读出来的数据不需要通过CPU,直接送给LCD Controller,这期间省下来的时间使得系统性能发生了翻天覆地的改变,也使得系统的最优化成为可能(图片显示的速度瓶颈最终在于FLASH这个外设)。
我们采用的大规模可编程控制器(FPGA)来做彩色屏的控制器,它有如下优势:
A、设置灵活,满足不同行业的客户要求
B、支持高清分辨率3840*2400以下各种标准和非标分辨率
C、内部128MB FLASH,可以将photoshop做好的漂亮界面图片预先内置存储,使用时通过串口调用,8位单片机也可以做出漂亮的UI
D、小图片独立存储调用显示方便,视频层、图片层、字符层多层显示更容易控制,图片视频画中画
D、目前主要是串口、并口;以后会有485、422、SPI、wi-fi、ZIGBEE、GPRS、CAN接口等各种通讯接口的扩展,欢迎提出定制
E、系统内嵌32位处理器,内部32位总线硬件加速,换图片速度极快,可以实现动画界面,如仪表指针动画
F、内部集成触摸屏控制器,直接通过串口返回坐标值,误差小余1.5%
F、丰富的用户指令集,内部可自由定制多国语言软字库
www.lcdsoc.com

相关帖子

沙发
LCDSPEC|  楼主 | 2011-3-9 20:44 | 只看该作者


5.7寸视频叠加串口控制实拍图片

使用特权

评论回复
板凳
hong60104| | 2011-8-29 13:33 | 只看该作者
FPGA确实很强大,值得学习!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

12

帖子

0

粉丝