设计原因:
1、所选的显示屏只支持RGB 480*800的输入,不支持800*480输入;
2、ARM板子的倒车视频信号不能转换成480*800的输出,只能输出800*480;
3、为了能够支持倒车视频信号,故使用FPGA模块进行800*480-->480*800的显示转换。
功能要求:
ARM板子输出800*480@60HZ的RGB 565(即16 BIT)信号,经过横竖屏转换模块后,实时输出480*800@60HZ的RGB 565信号到显示屏中正常显示。
本设计采用Altera公司的FPGA芯片EP1C3T144C8N。
硬件框图如下所示:
FPGA的软件设计框图如下图所示:
各模块介绍:
(1)显示输入采样模块:
所谓显示输入采样,就是根据显示的VS, HS, DE, PCLK这几个信号的时序,完整的把RGB565的16位数据采样下来。从上图的时序图我们得知,应该在VS, HS, DE这三个信号都为高电平时,在PCLK的下降沿读取DATA。
(2)双口RAM采样:
在每一个DE的高电平阶段,LCD数据采样完成后,实际是采得了一场的数据。由于采样的同时LCD需要输出数据显示,所以采用乒乓存储操作,采样的同时读取输出。
把采样Sample_ram分成两部分:RAM0(1024*16bit)和RAM1(1024*16bit)。
在时刻1,采样数据(共有800个16bit数据)写入RAM0,同时读出RAM1;
在时刻2,采样数据(共有800个16bit数据)写入RAM1,同时读出RAM0;
为了匹配LCD的CLK和SDRAM的写CLK,写入和读出的CLK分别为i_pclk和160M。
……
如此类推。
(3)SDRAM存储转换:
SDRAM同样分成两部分:buf1(800*480*16bit)和buf2(800*480*16bit)。
在时刻1,把从sample_ram读出的800个数据写入buf1,然后再读出buf2;
在时刻2,把从sample_ram读出的800个数据写入buf1,然后再读出buf2;
……
当buf1写满时(即写完了480组,每组800个16bit的1帧LCD数据):
在时刻1,把从sample_ram读出的800个数据写入buf2,然后再读出buf1;
在时刻2,把从sample_ram读出的800个数据写入buf2,然后再读出buf1;
……
读写SDRAM的CLK都为160M。
如此类推。
写入时,采用一个一个数据的按列写入方式,每一个DE高电平时刻能写800个数据;
读取时,采用按page读取的方式,此为按行读取,每个DE高电平时刻读480个数据。
一次写入和读出完成时,即把LCD数据由800*480矩阵转换成480*800了。
(4)Handle_ram读写:
为了配合以上的乒乓操作,以及CLK的匹配,Handle_ram也分成两部分:RAM0(512*16bit)和RAM1(512*16bit)。
在时刻1,把从SDRAM读出的480个数据写入RAM0,同时读出RAM1;
在时刻2,把从SDRAM读出的480个数据写入RAM1,同时读出RAM0;
为了匹配LCD的CLK和SDRAM的写CLK,写入和读出的CLK分别为160M和i_pclk。
……
如此类推。
以上所有操作如下图所示:
DE信号
Sample_ram | 写(0) | 写(1) | 写(0) | 写(1) | …… | CLK取i_pclk |
读(1) | 读(0) | 读(1) | 读(0) | …… | CLK取160M | |
SDRAM | 写(0)读(1) | 写(1)读(0) | 写(0)读(1) | 写(1)读(0) | …… | CLK取160M |
Handle_ram | 写(0) | 写(1) | 写(0) | 写(1) | …… | CLK取160M |
读(1) | 读(0) | 读(1) | 读(0) | …… | CLK取i_pclk |
产生的问题:
1、读写SDRAM的时候,只能先写再读,然后会导致写完800*480*16bit数据时,由于SDRAM的矩阵是行数为800,列数为480,理论上要求读800行数据,但其实只读了480行的数据(因为每写一列才能读一行),未读完一帧LCD数据所以会看到拉伸的效果。要彻底解决该问题,应该要使用两片SDRAM才能实现同时读写800*480和480*800个数据。
2、LCD的显示要独立产生HS和DE信号,才能匹配输出显示。
3、由于采样CLK和读写SDRAM的CLK不一致,所以使用了双口RAM作为缓存,而且前后都需要,所以选型FPGA或CPLD芯片时,必须考虑内部RAM足够大。
http://www.zhihu.com/collection/32561360
http://www.zhihu.com/collection/32561437
http://www.zhihu.com/collection/32551354
http://www.zhihu.com/collection/32561237
http://www.zhihu.com/collection/32560258
http://www.zhihu.com/collection/32561306
http://www.zhihu.com/collection/32559688
http://www.zhihu.com/collection/32559626
http://www.zhihu.com/collection/32551401
http://www.zhihu.com/collection/32551139
http://www.zhihu.com/collection/32562145
http://www.zhihu.com/collection/32559809
http://www.zhihu.com/collection/32551240
http://www.zhihu.com/collection/32560096
http://www.zhihu.com/collection/32560038
http://www.zhihu.com/collection/32559906
http://www.zhihu.com/collection/32560038
http://www.zhihu.com/collection/32551283
http://www.zhihu.com/collection/32560320
http://www.zhihu.com/collection/32562054
http://www.zhihu.com/collection/32559582
http://www.zhihu.com/collection/32551073
http://www.zhihu.com/collection/32550576
http://www.zhihu.com/collection/32560365
http://www.zhihu.com/collection/32551929
http://www.zhihu.com/collection/32552008
http://www.zhihu.com/collection/32559864
http://www.zhihu.com/collection/32559734
http://www.zhihu.com/collection/32551181
http://www.zhihu.com/collection/32560407
http://www.zhihu.com/collection/32551969
http://www.zhihu.com/collection/32562013
http://www.zhihu.com/collection/32560473
http://www.zhihu.com/collection/32560186
http://www.zhihu.com/collection/32551833
http://www.zhihu.com/collection/32551779