好久没有更新了,抱歉抱歉,加快速度。
DECA上有HDMI,当时忍不住温习了一下VGA的,用自己的板子(cyclone系列)做了验证:
https://www.cirmall.com/bbs/thread-46342-1-1.html
紧接着,对ADV7513的几篇ds进行了阅读,开始了HDMI的了解和学习。
要用ADV7513,首先是要通过I2c来配置这款芯片,配置完成之后,像VGA那样送视频数据,当然,这里还有音频数据,我们这显示屏没有音响,所以音频留着后续研究吧,先通过HDMI把我的24寸显示屏点起来。还有,由于DECA这块板卡,HDMI是发送端,其实我们可以读取显示器的EDID,至于EDID是啥,一般将显示器插上电脑显卡的视频接口的时候,显卡会读取显示屏的EDID的信息,里面有很多关于显示器的参数。这里我们为简单,暂时不去读取了。 所以,如果要用FPGA通过HDMI接口点亮显示器,一配置好芯片,二送数据。下面就这两部分进行分析。
一:ADV7513芯片配置
通过标准的I2c总线来配置ADV7513,相信很多FPGA设计者都用FPGA玩过eeprom、0v7670或者其他i2c接口的外设,对于这样一个HDMI芯片的配置不会太难。具体要参考编程手册:里面都有各个寄存器的一些操作。 本次配置的寄存器如下:
状态机:
然后就是i2c的一个配置过程,我在写verilog的时候,配置完之后,给出一个config_done信号,这样就知道,我们配置完成了,当然,我这里对I2c的配置还做了modelsim的仿真,熟悉的就可以不去做了。。
二:送数据,要符合时序
从编程手册中可以知道,ADV7513支持CEA861D定义的视频时序,于是我就去下载了这个文档,是一个视频时序标准,类似于VESA的视频标准一样。
找到我需要的分辨率 1920*1080@60Hz,选择1080P,P和I有不同的时序。
如16对应的是1080P,60Hz,4对应的是1080i,60Hz,可以看到像素频率有差别,这里还看不到SYNC的参数;
红色16部分就能找到和VGA那样的参数了。
由上图可知: Hfornt :88 Hsync : 44 Hback :148 Vfornt :4 Vsync : 5 Vback :36
接着我们就可以看到时序图了,如下,有这个图就好办了!!!!和VGA的类似吧,一样处理,这里verilog就不贴出来了,一样类似的。
然后配置完成之后,我们就按照这个时序送数据咯。。
好了,上图:和VGA一样的实验效果(只拍了几张);
后续可能准备研究学习的工作:
(1)继续研究HDMI,如EDID,音频部分;
(2)0v7670(或DECA摄像头)-》DDR3-》HDMI,这部分可以为后续的接触算法打好基础。
|