原创 图片显示速度测试报告

2010-8-20 15:57 2644 6 9 分类: FPGA/CPLD

图片显示速度测试报告


1 测试硬件平台:


CPU:32位NIOS/e  50MHz


RAM:片上存储器  50MHz


 


2 测试软件程序:


    for(y=0;y<480;y++)


    {


         for(x=0;x<800;x++)


            {


//送显示数据


IOWR_16DIRECT(MCULCD_CTRL_0_BASE,((y<<11)+(x<<1)), 0x001f);     


            }


}


 


3 测试接口时序:


一次IOWR_16DIRECT()函数产生的时序波形如图1所示。Clk即CPU得时钟周期50MHz,也就是20ns,那么从图1推断一次液晶显示数据的写入时间大约为6*20ns=120ns。


720fedf2-af4a-4a81-8ac1-1347e354af9c.JPG



图1


 


4 测试结果分析:


下面是实际示波器采集到的被专门拉出来观察的LCD写入片选信号cs_n的波形。图2是单次选通的波形,大约120ns,和前面的时序图(图1)是一致的。


    而图3是多次(波形中有3次)连续的液晶写入操作产生的片选信号cs_n的波形。让人感到意外的是,即便只是简单的x<800和x++以及(y<<11)+(x<<1))程序的执行,竟然占到了大约1500ns的执行时间。仔细想想,这是软件,虽然CPU的时钟达到50MHz,但是一条指令的执行(我们姑且认为指令周期能够达到40ns),不仅仅包括执行这条语句本身,还有一个变量的读写需要访问存储器(RAM)额外的时间开销,这些东西一算下来,1500ns也就不足为怪了。


cec88a5a-554f-4f42-9926-e7885190007f.JPG



图2


af838ab8-9696-4903-91c0-a6918e716205.JPG



图3


    有了上面的这组数据,我们可以做一个简单的预算。对于特权同学的这个液晶控制器,单纯写数据显示一满屏的色彩数据(分辨率800*600,写入的色彩固定),需要的时间是:


    120ns*800*480 = 46.08ms


    对于通常来说,如果一幅图片的显示切换能够达到这个速度,换算成1s的频率是1s/46.08ms=21Hz(通常显示器刷新率是60Hz)。基本上这个切换是很不错的性能,人眼也是完全可以接受的。


    而对于一个CPU,它要显示一幅图片,不可能只是一味的做前面的简单写时序,还还需要一些坐标计数,一些变量存储器的读写。而对于这个测试中,只是一个简单的清屏函数,它也是考核CPU性能的一个方式,如果这样数据简单的搬运所需要的时间过长,以致无法让人眼接受(切换时间过长),那么说明软件送图片到液晶控制器然后切换显示的方案不是很可行。下面可以算算目前的平台下,软件送一个屏的数据大约需要的时间:


    1500ns*800*480 = 576ms


    这个数据可以说是当前软硬件平台上,真正软件送图片不可逾越的速度瓶颈了。但是,这个时间也只是客户勉强可以接受的切换图片的效果。对于图片需要预存储在FLASH或SD卡等非易失存储器中的应用,软件一般是先从这些非易失存储器中读取数据,然后再送给液晶控制器,而如此一来,一幅图片切换的时间要远远大于576ms了,2倍甚至3倍都不足为怪。


 


5 优化尝试与考虑:


1.       提升CPU的性能


提高CPU的时钟,提高CPU读写RAM存储器的速度,这个代价比较高,不仅关系到成本,而且需要开发人员换一个处理器和软件开发环境,相应的开发时间会受到很大影响。


 


2.       纯硬件加速


由FPGA底层逻辑来控制非易失存储器(图片存储器,如FLASH)的读写。用FPGA来控制这些非易失存储器的读写开发灵活性较低,对图片的管理和地址的分配都不够灵活。而且速度的瓶颈在于非易失存储器的读速度。


 


3.       软硬件协同加速


这种考虑是在FPGA显存中开辟一大块图片预存储空间,上电后CPU做的第一件事就是不断的搬运数据,把需要显示的数据预先从非易失存储器中读出来,并送给显存。这可能在系统刚上电过程中有一段较长的boot时间,但是boot结束后,软件需要切换显示画面时,只要发出一些定制指令,那么FPGA内部逻辑自动实现两块显存的数据映射(从不显示存储区搬数据到显示区)。这种现实方式相较于前两种优化方案是最可行的,而且切换画面的速度也是最快的。


 


 

文章评论3条评论)

登录后参与讨论

用户1412471 2015-7-24 10:17

纯理论,到处有

用户452567 2015-7-22 14:14

有点摸不着北

用户1846099 2015-7-22 10:39

厉害!

ilove314_323192455 2010-8-25 20:34

解决办法有一个:《硬件加速:用起来很美》

用户1373959 2010-8-25 17:05

可以加一条avalon pipeline bridge。总之就是慢,难受,扫屏的时候。

用户1373959 2010-8-25 17:02

写的不错,我也遇到这样的问题,优化再优化。
相关推荐阅读
特权ilove314 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
特权ilove314 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
特权ilove314 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
特权ilove314 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
我要评论
3
6
关闭 站长推荐上一条 /2 下一条