serena

Altera DE2试用之vga显示

0
阅读(4371)

De2板上有一个VGA接口,通过adv7123这个芯片做DA转换,将并行TTL视频信号转为模拟信号。clip_image002

板上的adv7123支持30位色深,330Mhz的转换速率,能支持1600x1200@120的分辨率,性能真的挺好的了。

在这里吐槽一下,板子上demo都是640x480的,这个片子的性能根本没有用起来。

好了,说回vga显示。Vga就是视频图像阵列,是一种模拟视频标准,它遵循vesa标准,所以要搞vga显示,就要先看看vesa时序标准。

Vead时序标准中,详细阐述了不同分辨率的时序状况:clip_image004

上图是一整帧信号的时序关系,其中有行信号hsync、场信号vsync、有效图像区域、前后消隐区域、行场同步区域。我们要编写verilog代码就需要按照上面的格式,在图像区域给出图像数据,同时给出正确的行场同步信号。

Vga显示的verilog代码有很多,这里不再贴代码。大部分容易搜到的都是640x480或者1024x768的固定分辨率输出的代码。之前知名博主bingo写过一个支持任意分辨率的,值得参考。

这里,我也说说多分辨率支持的问题。

其实,vga显示的结构搭好了,剩下的就只是时序问题了,也就是说,只需要给出正确的驱动时钟和时序参数就可以。

由于vga支持多种分辨率,导致驱动时钟数目繁多,我们使用FPGA很难生成这么多时钟,所以一般来说,只能做几种常用分辨率的支持。clip_image006

这里就要提到vga显示中的EDID了,因为vga的标准很多,同时我们的显示器一般只能支持部分vga制式,所以,在主机和显示器之间,就需要有一个通信接口,用来传输显示器支持的制式信息,也就是我们所说的EDID了。

Edid是一段有固定格式的字节。Vga的edid一般有128字节。在这128字节中,包含了识别信息、厂商信息、分辨率等。

这些信息一般存储在iic接口的eeprom中,vga接口通过db15接口连接,除了R\G\B\HS\VS及GND之外,还有用于读取edid的iic通讯口。


(转自Altera FPGA小组,作者:QuietE )