about HDMI - limingth/LASO GitHub Wiki
参考阅读资料(博客文章)
http://blog.csdn.net/yyao1024/article/details/6398675
HDMI(High Definition Multimedia Interface)是数字高清多媒体接口,其协议由Sony, Hitachi, Thomson (RCA), Philips, Matsushita (Panasonic), Toshiba 和 Silicon Image合作开发完成,基于Silicon image 的TMDS技术传输数据,能向下兼容DVI(Digital Visual Interface)。
http://wenku.baidu.com/view/07e2a32ded630b1c59eeb50f.html
1999年4月份,为了满足数字化时代高质量图形影像的要求,DDWG(Digital Display Working Group)数字显示工作组以美国Silicon Image公司的专利技术为蓝本,推出了一种名为DVI(Digital Visual Interface)的接口,旨在统一新时代数字显示接口标准。
HDMI支持5Gbps的数据传输率,最远可传输15米,足以应付一个1080p的视频和一个8声道的音频信号。
1080P的画面分辨率为1920×1080,即一般所说的高清晰度电视。帧速率通常为30帧/秒(FPS)
DVI(Digital Visual Interface)
TMDS(Time Minimized Differential Signal)最小化传输差分信号传输技术
HDMI标准继续沿用了和DVI相同的,由Silicon Image公司发明的TMDS(Time Minimized Differential Signal)最小化传输差分信号传输技术。TMDS是一种微分信号机制,采用的是差分传动方式。这不仅是DVI技术的基础,也是HDMI技术的基础原理。
HDMI电路中的时钟频率,在最初制定时范围从25MHz-165MHz之间,也就是说一个TMDS通道每秒最多能传输165MHz×10bit=1.65Gbit的数据,3个TMDS通道一秒就可以传输1.65×3=4.95Gbit的数据,再加上控制数据,用标准方法表示就是4.96Gbps的带宽。而如果用像素点来表示,那就是一秒可以传输显示1.65G个像素点(一个完整的像素点信息由R/G/B三原色信息构成)所需要的数据量。
由于和DVI采用了相同的TMDS传输机制,所以HDMI对DVI接口拥有非常强大的兼容性。目前市面上也有不少HDMI-DVI的转接头产品,对于没有HDMI的老设备而言非常适用。而HDMI-DVI转接头在实质上就是两种接头间的物理转换工具,只涉及到接口的形状、尺寸和引脚定义,在电路部分没有任何的变化。而HDMI标准中也考虑到了和DVI设备兼容的问题:只要HDMI设备检测到对方发送的信号中不包含HDMI标准中规定的特殊控制数据(VSDB信号,专门用于两个设备之间互相确认对方身份),就会把对方认为DVI设备,并且把传输规格切换到DVI格式,从而保证了良好的兼容性。
在数字音频方面,HDMI灵活的支持符合IEC60985 L-PCM标准的32kHz、44.1kHz和48kHz、16bit量化的立体声数字音频信号和IEC 61937标准的采样率为192KHz,24bit量化的单路无压缩PCM数字音频信号,或者8路96kHz的声音数据流。此外,在家庭影院中常用的DolbyDigital5.1和DTS数字音频格式也能通过HDMI直接传输。
HDMI接口TMDS数据发送时序结构
http://tupian.hudong.com/a2_43_26_01300000170442121375269745537_jpg.html?prd=zhengwenye_left_neirong_tupian
SPDIF 严格的写法是S/PDIF,是“SONY/PHILIPS Digital Interface Format”的缩写,它是由SONY与PHILIPS公司在上世纪80年代制订的一种数字音频信号传输标准,可以传输LPCM流和Dolby Digital、DTS这类数字音频信号。
就传输介质而言,SPDIF从传输介质上来分为光纤和同轴两种,属不平衡传输方式。其实它们传输的信号是相同的,只不过是传输载体不同,接口和连接线外观也有差异。
一种是光纤(Optical Digital Output)SPDIF输出,一般简称为光纤,也叫Toslink。它是在机器内部把SPDIF数字信号光纤发射模块转变为光信号,并通过光纤线送到外部数字设备的光信号输入口,后者再把光信号转变成电的信号去作进一步的处理。Toslink是日本东芝(TOSHIBA)公司较早开发并设定的技术标准,它是以Toshiba link命名的,在器材的后面背板光纤输出口旁边印有“OPTICAL”作标识,现在几乎所有的数字影音设备都具备这种格式的接口。
另一种是同轴电缆(Coaxial Digital Output)SPDIF输出,常称为同轴输出。在器材的背板上的同轴座边印有“coaxial”作标识。同轴是最早的数字传输规格,标准阻抗为75Ω,输出电压峰-峰值0.5V。不过早期BNC头不普及,所以厂商以单端的RCA头代替。
声卡的数字模拟转换工作是交给CODEC芯片来完成的。但是我们的电脑机箱内依然存在着严重的电磁波,D/A、A/D转换仍然会受到比较严重的信号干扰。许多专业音频录音卡普遍采用将CODEC外置的做法,把数模转换部分以及各类外部接口等单独做成一个外置盒,以提高音质。但是这样做的直接后果便是成本大幅度提高,在家用多媒体市场肯定是曲高和寡的。那到底有没有价廉物美的办法呢?一些音箱厂家就想出了把D/A转换工作从声卡上转移到音箱上的方案,数字式多媒体音箱也就应运而生了,CREATIVE的FPS2000 Digital、Sound Works 2.1Digital就属于这种类型。这种方案的基本原理就是声音信号不经过声卡CODEC芯片的转换处理,直接以PCM格式,使用声卡上的同轴SPDIF OUT,以纯数字方式传输到数字音箱中,通过音箱内置的D/A转换器解码,随后放大输出。这样干扰减小了,信噪比自然有所提高。
HPD(Hot Plug Detection),在HDMI的一对联接中,为热插拔的实现而设计的。简单地说,当发送端接入接受端时,接受端会回应HPD信号给发送端,进而发送端会启动DDC通道,而读取接受端EDID的信息,然后进行HDCP的交互,如果双方认证成功,则视频、音频正常工作,否则联接失败,不同系统会有不同的处理。
例如,如果EDID信息不支持HDMI,则发送端只发送视频信息,而没有音频信息,这时候的HDMI就只相当于DVI了;如果HDCP认证不成功,有的系统会出现雪花屏幕和噪音,有的系统会由高分辨率(1080I、720P)降低为低分辨率(480I、480P)而输出,这样一来,HDTV就不再是HD了,而变成了普通的SD。
EDID(Extended Display Identification Data) 是一种 VESA 标准数据格式,其中包含有关监视器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串。这些信息保存在 display 节中,用来通过一个 DDC(Display Data Channel)与系统进行通信,这是在显示器和 PC 图形适配器之间进行的。最新版本的 EDID 可以在 CRT、LCD 以及将来的显示器类型中使用,这是因为 EDID 提供了几乎所有显示参数的通用描述。
EDID(Extended Display Identification DATA,即扩展显示识别数据), 最初是为PC显示器设置的优化显示格式而设计的规范,存储在显示器中专用的1Kb的EEROM存储器中(即EDID数据结构是128Bytes),数字电视HDMI接口,遵从并且扩展了此规范。
HDMI接口在数字电视中的EDID数据结构,与PC显示器的最大区别是编程数据可以是128Byte的倍数,它不仅规定数字电视显示的格式,也规定数字视频信号和数字音频信号,基本的128Byte以外的数据都是附加数据,在基本数据的第127个字节定义EDID的附加数据块数量。在EDID数据编程中,根据数字电视的显示属性要求,有两个关键环节必须注意:
HDMI 接口定义了一个通道名为CEC(Consumer Electronics Control), 即消费电子控制,是为所有通过HDMI线连接的家庭视听设备提供高级控制功能的一种协议, 用户通过一个遥控器即可对这些用HDMI连接的设备进行控制。CEC简化了数字家庭的操作,一个遥控器可以控制所有支持HDMI的数字产品。 譬如透过CEC实现的单键播放(One Touch Play),系统待机(System Standby)功能。 指的是如果使用者将影碟放进蓝光播放器时,电视会由于CEC信号的通知而自动开机,然后视频通道亦会自动切换到播放器连接的通道上。而当使用者关掉电视时,CEC信号亦会通知HDMI相连接的装置一同进入待机。由于这样,所以就可以完全变成单一遥控器控制所有HDMI连接的装置。
DDC(Display Data Channel)是终端显示器用来告知个人计算机显示器信息(如分辨率、扫描频率等)的规格,也就是显示器与主机系统之间的通信方法,当然,这个规格的主要目的就是要实现即插即用(Plug & Play)的功能。
总之,HDMI来源端是利用了I2C接口的命令来读取接收端的E-EDID。
#define HDMI_BASE (0xFA100000)
// SFR Base Define
#define HDMI_CTRL_BASE (HDMI_BASE)
#define HDMI_CORE_BASE (HDMI_BASE + 0x10000)
#define HDMI_SPDIF_BASE (HDMI_BASE + 0x30000)
#define HDMI_I2S_BASE (HDMI_BASE + 0x40000)
#define HDMI_TG_BASE (HDMI_BASE + 0x50000)
#define HDMI_EFUSE_BASE (HDMI_BASE + 0x60000)
#define HDMI_CEC_BASE (0xE1B00000)
//#define HDMI_CEC_BASE (0x01B00000)