标签:
作者:MiS603开发团队
日期:20150911
公司:南京米联电子科技有限公司
论坛:www.osrc.cn
EAT博客:http://blog.chinaaet.com/whilebreak
博客园:http://www.cnblogs.com/milinker/
HDMI是High Definition Multimedia Interface的简称,也就是高清晰度多媒体接口,这是一种数字化视频/音频传输技术,是适合影像传输的专用型数字化接口,在传输视频和音频时,最高数据传输速度为2.25GB/s。在这里要注意,HDMI传输的是数字信号,VGA传输的是模拟信号,这是两者的最大区别之一。
HDMI系统架构有2部分构成,他们是发射源和接收器,因此一个带HDMI接口的设备可能有一个或者多个发送器或者接收器,HDMI的输入要满足HDMI的接收规则。如下图所示,HDMI的发射源和接收器之间连接着四对差分信号,其中包括三对数据和一对时钟,数据通道用来传输视频、音频和一些辅助信息,一对时钟通常是等于视频像素的比特率,通过一对时钟通道来发送。接收端通过这对时钟获得三对数据通道上传过来的数据,关于HDMI其他详细信息参考HDMI手册。
接下来介绍一下HDMI接口,HDMI接口主要分为A类、B类和C类,其中A型接口主要用在消费电子应用,也是最常见的,总共19个引脚,如下图所示,接下来表的表格是对应的引脚说明。B类多了一组信号,这是为了传输超高清晰度的图像,尺寸比较大,共29个引脚。C类比较小,主要用在便携式设备上的。
HDMI A类接口说明
引脚序号 | 说明 | 引脚序号 | 说明 |
1 | TMDS数据2+ | 11 | TMDS时钟屏蔽 |
2 | TMDS数据2屏蔽 | 12 | TMDS时钟- |
3 | TMDS数据2- | 13 | CEC |
4 | TMDS数据1+ | 14 | 保留 |
5 | TMDS数据1屏蔽 | 15 | SCL |
6 | TMDS数据1- | 16 | SDA |
7 | TMDS数据0+ | 17 | DDC/CEC地 |
8 | TMDS数据0屏蔽 | 18 | +5V |
9 | TMDS数据0- | 19 | 热插拔检测 |
10 | TMDS时钟+ |
本次设计使用的是专用HDMI发送芯片SIL9134,最高支持1080P@60HZ视频输入,支持3D输出。由于SIL9134在使用前需要进行内部寄存器初始化,配置过程比较复杂,开发板上专门配备了一个STM32芯片来配置SIL9134。
如上图所示,输入数据经过SIL9134编码成HDMI视频流,视频数据和控制信号连接到FPGA,配置端口连接到STM32。由于FPGA引脚受限,MIS603没有把音频接口引出,后续的开发平台会完善此功能。SIL9134和FPGA、STM32的连接方式如下所示。
SIL9134和FPGA连接方式
标号 | 对应的FPGA引脚 | 描述 |
Video_clk | N8 | 驱动时钟,由FPGA输出 |
Video_blank | R9 | 数据有效,由FPGA输出 |
Video_hs | P9 | HDMI行同步信号,由FPGA输出 |
Video_vs | N9 | HDMI场同步信号,由FPGA输出 |
Video_d[23:0] | H13,J14,K15,L14,M15,N14,P15,R15,J13,L12,M13,R14,J11,K12,T14,R12,M12,P12,N12,P11,N11,M10,L10,T9 | HDMI数据位,支持YUV444、RGB888输入 |
注:VGA和HDMI共用FPGA引脚。
SIL9134和STM32连接方式
标号 | 对应的STM32引脚 | 描述 |
9134_reset | PA2 | SIL9134复位引脚,低电平有效 |
scl | PC9 | I2C总线时钟 |
sda | PC8 | I2C总线数据 |
注:由于SIL9134内部寄存器多余255个,一个SIL9134芯片对应2个设备地址,设备1的I2C地址:0X72,设备2的I2C地址:0X7A。
对于1080P视频时钟为148.5MHz,对硬件要求很高,PCB必须等长布线。
对于HDMI接口,采用差分信号传输,PCB必须等长布线。
SIL9134内部有很多寄存器,在此给出几个常用的寄存器及其含义,更多的内容请参考SIL9134编程手册。
设备ID寄存器:
对于SIL9134的设备ID是0X9134,SIL9034的设备ID是0X9034,通过读取设备ID可以判断I2C总线是否正常工作。
设备控制寄存器1:
Bit6:外部输入引脚VSYNC的状态。
Bit5:VSYNC使能,配置为1。
Bit4:HSYNC使能,配置为1。
Bit2:输入总线选择,配置为1,选择24位总线模式。
Bit1:边沿选择,配置为0,下降沿锁存输入信号。
Bit0:掉电模式,配置为1,正常操作模式。
综上所说,这个寄存器配置值为0X35。
视频模式寄存器:
Bit7-6:选择每个视频输出通道的位数,配置为00。
Bit5:配置为0,不使能。
Bit4:配置为0,数据16-235不变成0-255。
Bit3:配置为0,YCbCr不转换成RGB,也就是输入RGB信号。
Bit2:配置为0,不使能4:2:2上采样变成4:4:4。
Bit1:配置为0,不使能。
Bit0:配置为0,不提取同步信号。
综上,将此寄存器配置成0x00,主要是RGB输入RGB输出,将HDMI配置为DVI兼容模式。
SIL9134通过I2C接口配置内部寄存器,读写时序如下图所示。
注:S = start,开始信号 Sr = restart,重新开始信号
As = slave acknowledge,从机应答 Am = master acknowledge,主机应答
N = no ack,没有应答 P = stop,停止
W/R= 读写选择位
SIL9134芯片配置接口时序
从读时序中可以看到,依次发送S信号、从机地址+W信号、As信号、设备内部偏移地址、As信号、设备地址+R信号、As信号、读取数据0、Am信号………As信号、P信号。写时序中可以看到,依次发送S信号、从机地址+W信号、As信号、设备内部偏移地址、As信号、写数据0、As信号………As信号、写数据n、P信号。
SIL9134的地址选择引脚CI2CA连接GND,地址选择如下图所示,地址为:0X72和0X7A。
关于STM32配置SIL9134的详细代码请参考附带的配置文件,在此不一一解说。其余配置信息参考STM32代码。
SIL9134工作在DVI模式下,工作时序和VGA相同,参考VGA部分时序分析。
SIL9134工作在DVI模式下,工作时序和VGA相同,参考VGA部分时序仿真。
以720P(1280x720)为例抓取数据分析。采样时钟hdmi_clk_o。
行同步信号:从1649开始,3299结束,共1650个像素点,
8个彩条对应数据。
SIL9134配置到DVI兼容模式,操作很简单,直接输入RGB888数据,时序和VGA时序相同,代码和VGA部分相同。
1:HDMI时序参数定义文件,支持不同分辨率,只需要更改宏定义即可实现。
2:HDMI测试顶层文件,例化DCM时钟模块和hdmi_driver模块。
3:由50MHz生成74.25MHz时钟模块,有些偏差。
4:hdmi_driver模块,生成相关HDMI时序参数。
5:ChipScope模块,在线分析数据。
6:ucf文件,包括引脚分配和时钟约束。
详细参考:
6_03_MiS603_X25_HDMI_Test_720P:720P测试,分辨率1280x720。
6_03_MiS603_X25_HDMI_Test_1080P:1080P测试,分辨率1920x1080。
注意:测试时使用的是HDMI转VGA测试的,注意显示器分辨率是否支持。
720P测试结果
1080P测试结果
了解了HDMI传输的基本知识、IIC协议、SIL9134的DVI配置。
MiS603开发板 第十七章 图像之HDMI接口测试输入日志标题
标签:
原文地址:http://www.cnblogs.com/milinker/p/4804915.html