本帖最后由 CrazyAdam 于 2024-1-5 11:11 编辑
设计框图:主要是要在HDMI 显示器上显示彩条,只需先设计一个彩条数据输出模块,然后设计一个配置ADV7513寄存器的模块即可,ADV7513芯片自动将并行的彩条数据转化为TMDS算法的、且是串行的、差分的数据传输到HDMI显示器端:
1、ADV7513芯片/子卡:
ADI公司的ADV7513是165MHz高性能HDMI发送器,数字视频接口包括一个HDMI v1.4 / DVI v1.0兼容的发送器,支持高达1080p和XGA的所有的HDTV格式,包括3D视频,还支持xvColor高比特率(HBR)音频以及音频AVI InfoFrame,工作电压1.8V-3.3V,主要用在游戏控制台,PC,DVD播放和记录,数字STB,A / V接收器。
2、FPGA环境如下:包含Altera EP4CE15F FPGA入门图像算法处理开发板以及ADV7513 RGB/YUV子卡(与板上DC3-40P兼容)
3、ADV7513的初始化配置
基于系统时钟是50MHz,但是I2C 的时钟不能太高,从ADV7513手册上看, 最大不能超过400KHz:
所以代码里面设计了一个分频电路,设置I2C频率是20K:
ADV7513的I2C地址:
参考手册:ADV7513_Hardware_User's_Guide_R0.pdf
从电路图可以看到PD管脚被拉低,所以ADV7513的I2C地址是0x72,FPGA写这个IC 的时候用地址0x72, 读这个IC 的时候用地址0x73。
ADV7513的寄存器配置
每一个16位值的前8bit是寄存器的地址,后面的8bit是要填入寄存器的值。 这里设定的只是我们用到的,其他的没有设定的直接用default值即可
比如我们要设置HDMI 的输出格式是444 8bit,那么就要设置寄存器0x16 的值是0x30(见上面代码第128行)
4、HDMI的驱动设置(1080P60)
PLL的设置
通过查表得知,1920*1080分辨率的像素时钟就是74.25M
引脚分配根据开发板以及ADV7513子卡的原理图相互匹配
开发板和ADV7513子卡的DC3-40P原理图
5、彩条测试
6、总结
要查找ADV7513相关的资料才能驱动它,由官方提供的手册(ADV7513_Hardware_User's_Guide_R0.pdf和ADV7513_Programming_Guide_R0.pdf),还有就是不小心把RGB输出引脚配错而导致色彩异常,有个调式小技巧就是R/G/B在输入信号分开输出,可以查看那部分异常进而定位错误的引脚分配。
|