HDMI分配器的设计与实现
发布时间:2008/6/3 0:00:00 访问次数:466
hdmi是针对下一代多媒体影音设备所开发的传输接口,适用于数字家电的数字电视、dvd播放机、dvd录放机、pvr、机顶盒及其他数字视听产品。其最大特色是hdmi接口可以在一根传输电缆内传送无压缩的音频信号及高分辨率视频信号。随着带hdmi接口的终端产品的增加,在酒吧、卖场等一些公共场合需要类似以前av的音视频分配器产品。本文详细说明如何利用硅谷数模公司的anx9011和anx9030两种ic来设计一个一进四出的hdmi分配器。
hdmi接口及系统概述
目前消费者因为各种av连接数过于庞大而深受困扰。hdmi接口可以用单一的连线取代众多的影音连线,简洁又方便。目前hdmi接口已经有成为数字影音产品的必配接口之一的趋势。
hdmi接口主要有三个通信通道,接口示意图如图1所示:
tmds通道:负责所有音频、视频数据的传输。辅助数据,如avi infoframe、audio infoframe等也是通过tmds通道。
ddc通道:hdmi源端,通过这个通道来读取接收端(sink)的e-edid数据结构,进而得知接收端内含的机能与特性。
cec通道:这是一个选项(option)。提供更高层次的使用方式让消费者使用,比如自动设定的细节、单键播放或是遥控相关的操作。
在某些情况下,hdmi的源端会使用到avi infoframe与audio infoframe,详细的定义在eia/cea-861b中。avi infoframe所包含的信息乃是为了实现与达成显示模式自动化(display mode automation)而规划的一种方法或机制。如比色法、显示比例、像数重复因数等。audio infoframe信息包含通道数、代码类型、采样尺寸、采样频率等信息。
e-edid是增强型扩充显示器识别数据(enhanced extended display identification data standard)的简称。源装置使用ddc(display data channel)来读取终端接收显示装置的e-edid,以确认终端显示装置的设定与功能。
cec(consumer electronics control)信号线是提供使用者对于hdmi接口连接装置,提供一种高级控制的方式,例如单键播放(one touch play)、单键录像(one touch record)等,让消费者对hdmi装置能有逻辑性高的控制方便性,这个功能主要与遥控装置的使用有密切的关系。
hdcp数字内容保护则是英特尔开发的为hdmi提供高带宽数字内容保护的解码技术。配备了hdcp解码技术的hdmi就不会受到信号加密的限制,可以接受全部格式的高清信号。
hdmi分配器系统结构及芯片特点
hdmi分配器系统结构如图2所示。
hdmi分配器工作原理如下:当hdmi输入端口接收到hdmi的视频输入信号后,转换为内嵌行场同步的y/cb/cr信号。送到hdmi的发送芯片。hdmi的发送芯片把y/cb/cr信号转换为hdmi发送出去。这时四个hdmi端口同时有信号输出。同时带有信号的复制和增强功能。单片机通过i 2 c总线控制各个芯片的初始化以及状态机的变化。完成edid的读取,hdcp的校验等工作。
hdmi的收发ic目前有很多。在本方案中选择analogix公司的anx90xx系列ic是因为该产品基于wide eye信号恢复技术,能够提供高性能的传输或接收能力。该系列芯片可以支持远大于hdmi标准定义的15米的hdmi线缆高速信号传输。实际的支持距离已经超过了 50米。超强的驱动传输能力,允许客户使用廉价的线缆(如utp等)来进行高速多媒体信号的传输 ,同时还保证 了极低的误码率。anx90xx系列芯片具有很强的音视频处理能力。该系列芯片能以最高每秒165m像素的速率传输高达24位信息数据,使整个处理频宽接近4gbps。支持rgb与多种模式 y/cb/cr之间的转换,支持hdtv(最高支持1080p)和pc(最高支持1600x1200@85hz)应用 。还支持8通道24位高精度数字音频输出,提供i2s和s/pdif标准输出接口。不仅能够满足目前最先进的应用,还具备一定的扩展能力。
系统软件实现
本方案中选用stc公司的stc89le516rd+。工作的频率可以为0~80mhz,内部的flash的储存空间为63k,ram的空间为1280字节。可以很方便的在线下载。使用keil c51编程。系统软件可以分为两个部分。一个是anx9011的初始化的处理和anx9011的状态机的变化。另一个是anx9030的初始化的处理和anx9030的状态机的变化。主循环程序如下:
void main(void){
init_mcu();
init_9011();
init_9030();
while(1){
anx9011_intprocess ();
anx9011_timerprocess ();
anx9030_interrupt_process();
anx9030_timer_process ();
}
}
a
hdmi是针对下一代多媒体影音设备所开发的传输接口,适用于数字家电的数字电视、dvd播放机、dvd录放机、pvr、机顶盒及其他数字视听产品。其最大特色是hdmi接口可以在一根传输电缆内传送无压缩的音频信号及高分辨率视频信号。随着带hdmi接口的终端产品的增加,在酒吧、卖场等一些公共场合需要类似以前av的音视频分配器产品。本文详细说明如何利用硅谷数模公司的anx9011和anx9030两种ic来设计一个一进四出的hdmi分配器。
hdmi接口及系统概述
目前消费者因为各种av连接数过于庞大而深受困扰。hdmi接口可以用单一的连线取代众多的影音连线,简洁又方便。目前hdmi接口已经有成为数字影音产品的必配接口之一的趋势。
hdmi接口主要有三个通信通道,接口示意图如图1所示:
tmds通道:负责所有音频、视频数据的传输。辅助数据,如avi infoframe、audio infoframe等也是通过tmds通道。
ddc通道:hdmi源端,通过这个通道来读取接收端(sink)的e-edid数据结构,进而得知接收端内含的机能与特性。
cec通道:这是一个选项(option)。提供更高层次的使用方式让消费者使用,比如自动设定的细节、单键播放或是遥控相关的操作。
在某些情况下,hdmi的源端会使用到avi infoframe与audio infoframe,详细的定义在eia/cea-861b中。avi infoframe所包含的信息乃是为了实现与达成显示模式自动化(display mode automation)而规划的一种方法或机制。如比色法、显示比例、像数重复因数等。audio infoframe信息包含通道数、代码类型、采样尺寸、采样频率等信息。
e-edid是增强型扩充显示器识别数据(enhanced extended display identification data standard)的简称。源装置使用ddc(display data channel)来读取终端接收显示装置的e-edid,以确认终端显示装置的设定与功能。
cec(consumer electronics control)信号线是提供使用者对于hdmi接口连接装置,提供一种高级控制的方式,例如单键播放(one touch play)、单键录像(one touch record)等,让消费者对hdmi装置能有逻辑性高的控制方便性,这个功能主要与遥控装置的使用有密切的关系。
hdcp数字内容保护则是英特尔开发的为hdmi提供高带宽数字内容保护的解码技术。配备了hdcp解码技术的hdmi就不会受到信号加密的限制,可以接受全部格式的高清信号。
hdmi分配器系统结构及芯片特点
hdmi分配器系统结构如图2所示。
hdmi分配器工作原理如下:当hdmi输入端口接收到hdmi的视频输入信号后,转换为内嵌行场同步的y/cb/cr信号。送到hdmi的发送芯片。hdmi的发送芯片把y/cb/cr信号转换为hdmi发送出去。这时四个hdmi端口同时有信号输出。同时带有信号的复制和增强功能。单片机通过i 2 c总线控制各个芯片的初始化以及状态机的变化。完成edid的读取,hdcp的校验等工作。
hdmi的收发ic目前有很多。在本方案中选择analogix公司的anx90xx系列ic是因为该产品基于wide eye信号恢复技术,能够提供高性能的传输或接收能力。该系列芯片可以支持远大于hdmi标准定义的15米的hdmi线缆高速信号传输。实际的支持距离已经超过了 50米。超强的驱动传输能力,允许客户使用廉价的线缆(如utp等)来进行高速多媒体信号的传输 ,同时还保证 了极低的误码率。anx90xx系列芯片具有很强的音视频处理能力。该系列芯片能以最高每秒165m像素的速率传输高达24位信息数据,使整个处理频宽接近4gbps。支持rgb与多种模式 y/cb/cr之间的转换,支持hdtv(最高支持1080p)和pc(最高支持1600x1200@85hz)应用 。还支持8通道24位高精度数字音频输出,提供i2s和s/pdif标准输出接口。不仅能够满足目前最先进的应用,还具备一定的扩展能力。
系统软件实现
本方案中选用stc公司的stc89le516rd+。工作的频率可以为0~80mhz,内部的flash的储存空间为63k,ram的空间为1280字节。可以很方便的在线下载。使用keil c51编程。系统软件可以分为两个部分。一个是anx9011的初始化的处理和anx9011的状态机的变化。另一个是anx9030的初始化的处理和anx9030的状态机的变化。主循环程序如下:
void main(void){
init_mcu();
init_9011();
init_9030();
while(1){
anx9011_intprocess ();
anx9011_timerprocess ();
anx9030_interrupt_process();
anx9030_timer_process ();
}
}
a