双核嵌入式处理器的HDMI高清接口设计*
2010-08-10孙亚萍
李 静,安 康,孙亚萍
(杭州师范大学钱江学院 电气机械工程系,浙江 杭州 310012)
1 引言
人们对于嵌入式系统的图像要求越来越高,传统的VGA模拟显示已经无法完全满足客户的需求。笔者介绍了一种基于TMS320DM6446(简称DM6446)双核处理器的HDMI数字高清系统的设计[1],该设计可以较好地提升嵌入式系统图像质量。
DM6446是TI公司推出的双核芯片,该芯片包括1个ARM子系统、1个DSP子系统和1个视频处理子系统(VPSS),其中VPSS包括1个视频前端(VPFE)和1个视频后端(VPBE)[2]。SiI9134 是 Silicon Image 公司生产的符合HDMI1.3标准的HDMI发送芯片[3]。图1是本设计的系统框图。摄像头采集的信号经过视频解码芯片TVP5146之后转换成8 bit BT.656信号送给DM6446视频前端。DM6446视频前端对图像做放大、去隔行、白平衡等处理之后将其送给视频后端,视频后端将视频数据按照16 bit BT.601格式送给HDMI芯片SiI9134,SiI9134最后将HDMI信号送给高清显示器显示。
2 HDMI工作流程及实现
图1 HDMI系统框图
图2是HDMI芯片工作时序图。首先需要对SiI9134做复位并将Mute位置1,之后完成对音/视频工作频率、工作模式、音/视频路径等静态参数的配置。在完成芯片的基本配置之后通过设置输出使能位打开输出,并同时开启通用控制信息帧(GCP)传输,GCP在图像的消影期间传输,主要用于传输附加控制信息。此时因为GCP中的Mute位为1,所以显示器接收到此标志位之后并不显示实际图像,而只输出消屏(Blank)信号,也就是整个图像为黑屏。之后SiI9134启动图像的HDCP(High-Bandwidth Digital Content Protection)加密认证。SiI9134只有通过认证识别到符合HDCP规范的显示器并相互交换密钥之后,显示器才能正常显示加密数据。加密认证之后,SiI9134开始输出经过加密的音视频数据,并将Mute位清0,重新打开GCP传输。显示器接收到GCP并识别到Mute位为0之后开始解密数据并显示实际的图像。如果认证失败,则显示器无法解密发送端加密后的数据,将显示雪花点信号。
图2 HDMI工作时序图
本系统的软件实现流程图如图3所示。
图3 HDMI代码流程图
3 HDCP加密认证实现
HDCP版权内容保护机制是HDMI系统的一项重要功能。为了对数字影像的内容加以保护,HDMI发送端对视频信号先加密后传输,而接收端只有通过认证并获取密钥之后才能对加密的数据进行解析。加密认证的主要过程如图4所示。HDMI发送芯片SiI9134首先需要产生一组64 bit的随机数AN。此处只要将HDCP_CTRL寄存器的TX_ANSTOP位置1,SiI9134芯片就会产生一组随机数。发送端将产生的随机数AN通过DDC I2C接口写入显示器EDID (Extended Display Identification Data)对应的寄存器空间。之后发送端将自己的密钥AKSV传送给显示器并将其写入DDC_AKSV地址。显示器根据获得的AN和AKSV就能计算出Ri′。为了实现密钥互换,发送端从显示器读取BKSV,并计算出Ri。最后,发送端读回显示器计算得出的Ri′并与Ri做比较,如果两者相等则加密认证通过。之后发送端启动数据加密,开始传输经过加密的音/视频数据,而显示器则可以根据密钥对音/视频数据进行解密[2]。
SiI9134和HDMI显示器之间的HDCP加密通信过程都是通过DDC I2C接口完成的。从图5可以看出,HDMI系统是双I2C结构的。SiI9134和显示器都属于从设备,无法直接通信,所以需要DM6446先通过与SiI9134之间的I2C接口控制其相关寄存器,SiI9134 I2C控制寄存器在获得来自DM6446的命令之后再发起和显示器之间的I2C通信。
图4 HDCP加密认证过程
图5 HDMI双I2C接口示意图
4 HDMI信息帧的实现
HDMI允许在视频信号消隐期间传输信息帧(Infoframe)。HDMI共有7种格式的信息帧,本文以最常用的辅助视频信息帧(AVI)的实现加以说明。AVI信息帧主要包含视频色空间、图像画面比例、是否缩放、SDTV/HDTV等信息。显示器接收到这些信息之后就可以更好地显示画面。例如在AVI信息帧中指定当前图像的色空间为YUV4∶2∶2格式,显示器就可以根据此信息来显示图像[5]。传统的VGA和DVI等接口就没有此功能,所以只能传送RGB格式的信号。信息帧的本质是为视频的发送端和接收显示端添加了一个通信的机制。AVI信息帧的格式如表1所示。表中前4 byte分别是信息帧标志位、版本号、数据长度和校验和,其中前3 byte为固定值,而校验和需要根据所传输的数据来计算。从0x44寄存器开始的15 byte是实际的控制数据,数据的意义可以参见EIA标准文档 CEA-861-B[6]。
表1 AVI信息帧定义
为了实现AVI信息帧的传输,首先需要配置好相关控制参数,然后将0x40~0x52(不包括0x43)寄存器的值按unsigned char类型做累加,最后将累加和按位取反得到校验和并将其填入0x43寄存器。之后将INF_CTRL1寄存器的AVI_PRT和AVI_EN位同时置1,打开AVI信息帧输出。AVI_RPT代表重复模式,也就是每一帧图像的控制期都传输AVI信息帧。在设计时一定要注意AVI_EN使能位必须在软件Power up使能和输入时钟及时序稳定之后才能打开。因为SiI9134工作在内同步模式下,需要从DM6446内同步信号中获取同步信息,所以要先打开DM6446的视频输出,再打开AVI信息帧传输。其他种类信息帧的实现方法类似。
5 HDMI与DVI的兼容性设计
考虑到现在有的LCD显示器只支持DVI接口,而不支持HDMI接口,所以要设计一种兼容两种模式的输出方案。在硬件接口上,只要通过一个普通的HDMI-DVI转换头即可实现。而更多的兼容性设计主要体现在软件方面。DVI相比HDMI,主要是不支持音频、信息帧、YUV色彩空间等。在软件编写子函数时可以先将所有HDMI功能都实现,只是在检测到所连接的显示器不支持HDMI时将某些功能关闭。所以对显示器EDID的参数检测是实现HDMI与DVI兼容性显示的关键。
对于所连接显示器的参数检测主要是通过SiI9134 DDC I2C接口获取显示器E2PROM中存储的EDID信息。EIA/CEA 861B规范规定,CEA EDID数据传输的第1个时序扩展段中要包含VSDB(Vendor Specific Data Block)信号[7]。如果是HDMI设备,就能找到一个有效的VSDB,它包含一个24 bit的HDMI数据识别符,其值为0x000C03。只要SiI9134从显示器EDID空间查找到该描述符就认为其所连接的是HDMI显示器,并将全局变量bHDMI置1,开启所有HDMI功能。反之,如果无法查找到有效的VSDB标识符,软件就将bHDMI清0,只开启DVI功能。此外,为了更好地兼容DVI显示,可以通过读取显示器EDID信息来判断所接显示器的类型,从而决定是否开启HDMI的全部功能。
[1]董庆敏,罗键.HDMI接口标准及应用设计[J].电视技术,2007,31(2):32-34.
[2]TexasInstrumentsIncorporated.TMS320DM6446digitalmedia Systemon-Chip[EB/OL].[2009-10-20].http://focus.ti.com/lit/ds/symlink/tms320dm6446.pdf.
[3]沈璐,郑善贤.用于数字电视的HDMI1.3接收芯片点评[J].电视技术,2007,31(10):41-43.
[4]沈璐.HDMI接口在音视频接收系统中的设计与开发[D].长沙:湖南大学,2007.
[5]姜巧巧,冯维,王身鸿.基于Davinci平台视频缩放操作的改进[J].电视技术,2008,32(8):31-32.
[6]Electronic Industries Alliance.A DTV profile for uncompressed high speed digital interfaces,EIA standards EIA/CEA-861-B[S].2002.
[7]陈建英.EDID在HDMI高清设备中的应用[J].电子产品世界,2008(1):115.