前一篇已经写到了高清摄像头的数据量。也知道ddr2的数据量和时钟频率信息。这里不多说了。
从这两个数据比较来看,ddr2,需要2片,就可以承受1080p的实时显示才对。可是为什么就是不行呢??对着这个疑问我做了一下测试:
1,我用了4片ddr2,1080p的数据进入ddr2,然后在读出来。在液晶屏上显示,发现图像显示正常。我用过3片的ddr2,也是可以的。可是并不是完全的实时状态,但是效果基本可以证明是可以的。
2,同样的情况下,我用了2片ddr2,程序中只有64位,改写成32位的部分改动。而且在1080i视频头的情况下,图像没有任何的失真。如果换上1080p的摄像头,就会有数据丢失。
3,后来我做了延时,每次读出的时候,做等待。数据丢失现象还在。
4,在进入ddr2的数据量上,我也做了很多次调整。没有任何效果,和一次进入ddr2的数据量上无关。
5,和自刷新无关。
从我硬件仿真的情况来看,从in_fifo进到ddr2的数据没有问题。可是读出来的数据,就有问题了。我只能用FPGA监控到这里。不能监控到进入到ddr2的数据情况。
后来为了证明是哪里出了问题,是进入到ddr2前,数据就丢失了。还是ddr2输出的时候丢失的。我做了一个测试,就是一直读ddr2,我发现该失真的地方,还是失真。这个测试能说明,输入前数据就出错的概率高,(也可能是输出的某个地方一定出错,并不是随机事件)。每次丢失数据4个。
具体是什么原因造成的,我真的不知道了。我也没有那么多的时间继续研究。如果各位知道原因,请麻烦动动手,写下来,告诉我一下。
我能力有限,但是我努力奉献我所知道的,希望能给各位灵感,快速成长。