HDMI通信之地址分配

来源:互联网 发布:网络运维面试题及答案 编辑:程序博客网 时间:2024/06/15 00:33

 HDMI可以认为是一种热插拔设备,那么在HDMI设备开关机或者插拔时到底做了什么操作,这是非常必要了解的。
首先,HDMI设备实际上都有自己的物理地址的,这个物理地址在一般的音视频传输中没有什么作用,可以忽略。但是在对于有CEC功能的HDMI设备中,却异常重要。CEC是一种单线通讯方式,构成整个HDMI的网络拓扑实际上共享了此线。因此通过物理地址区分每个设备是必要的。
[说明]

1. HDMI的地址包括了物理地址和逻辑地址两个,但这两个地址都不是由硬件出厂设定的,而是在连接到网络中时动态分配的。

2.所有的HDMI设备都必须分配物理地址,但几乎没有实际用处(只有用到CEC功能时才有用)。但只有CEC功能设备才分配逻辑地址,用于各设备间的通信。

3.HDMI的连接肯定是一种树状结构。对于某设备有多个HDMI输出的情况,在整个网络中,此设备只能保持一个输出。

4.某个设备的物理地址其实并不存在于该设备中,而是在与该设备连接的sink设备的EDID中(根设备除外。


 

 

[物理地址分配方法]

1.  在整个网络中,必然存在着一个只有sink没有source的终端,该终端即为root,也就是这个树的根节点。此根节点可以将自己的物理地址设为0.0.0.0。

2.  根节点监测到目前的HDMI输入设备数量,在EDID中为其分配地址。

3.  与根节点直接连接的设备可以读取对应sink设备(即根设备)的EDID部分,从而获知自己的物理地址,并且由此设置本设备的EDID部分。

4.  同理,子设备(source)读取父设备(sink)的EDID部分,从而获知自己的物理地址,并设置自己的EDID数据。

5.  递归步骤4,得到所有设备的物理地址。

 

[逻辑地址分配方法]

1.  根节点直接设逻辑地址:0

2.  当设备A插入后,该设备的类型是已知的,因此可以为该设备A预设一个逻辑地址并通过<Polling Message>广播此地址

3.  当该逻辑地址已经被占用时,对应的占用设备会应答确认信息。设备A收到确认后,重设其他逻辑地址,并广播<Polling Message>

4.  当检测到没有确认时,此逻辑地址可用,因此设备A占用此逻辑地址。

5.  占用后,发送广播<Report Physical Address>,其中包含了其物理地址和逻辑地址,声明对地址的占用。若询问一圈后,逻辑地址均被占用,则设备A的逻辑地址为15。

 
对于人以一个HDMI连线,肯定存在着Source端和sink端(包括有中继器的情况,中继可以看作source也可以看作sink),此时sink端的片内寄存器EDID区域必须存放源端的物理地址(至于如何得到的,未知),而源端理论上无须存放。在一个树形的HDMI拓扑中,处在最终节点的TV必然存放着所有与他直接连接的设备的物理地址。