FPGA实现HDMI传输(一)

1.HDMI

HDMI全称(High Definition Multimedia Interface)高清多媒体接口,支持在单线缆上传输全数字高清视频和多声道音频。HDMI标准的发展历史:日立、松下、飞利浦、Silicon Image、索尼、汤姆逊、东芝七家公司共同组建了HDMI高清多媒体接口组织,着手制定一种符合高清时代标准的全新数字化视频/音频接口技术。在2002年12月9日,HDMI1.0版正式发布,HDMI技术产生。从最早的1.0到现在的2.1,从1080p,到现在的8K。

HDMI基于TMDS协议传输,主要用于DVD,机顶盒等音视频source到TV,显示器等sink设备的传输。HDMI向下兼容DVI,但是DVI(数字视频接口)只能用来传输视频,而不能同时传输音频,这是两者最主要的差别。

常见的HDMI接口是A类(19脚):

1~9(6pin):TMDS数据通道,分0~2三组,这些通道传输音频和视频和辅助数据。数据通道之间有屏蔽线,三组TMDS数据通道,每一个都通过一对屏蔽双绞线承载在电缆中,用于最小化串扰和EMI辐射的屏蔽层在电缆的两端接地;

10-12是TMDS clock传输用到的引脚,共有一组;

13是CEC引脚,一种消费电子兼容的传输协议,用作遥控的;

14是保留引脚;

15,16是DDC的引脚,DDC是基于I2C协议传输,故引脚为SCL和SDA;

17是接地;

18是+5V power;

19是HPD引脚,用于热插拔检测。

HDMI系统架构由Source端和Sink端组成:Source是指发送HDMI信号的一侧,Sink是指接收HDMI信号的一侧。

HDMI信号四路差分信号组成,包括三路TMDS Data信号和一路TMDS Clock信号。TMDS信号不仅仅用于传输video信号,还传输audio和辅助信息。

HDMI提供一个DDC通道用于在source端和sink端交换状态。

HDP用于热插拔检测,CEC是用户电气控制,一般用作遥控,HEAC以太网和音频返回。CEC和HEAC是HDMI可选协议。

小结:

要想传输音视频,只需要TMDS信号即可;

要想使用遥控器,需要CEC;

要想做到分辨率自适应屏幕,需要DDC;

要支持热插拔,需要实现HPD

TMDS传输系统分为两个部分:发送端source和接收端sink。TMDS链路包括3个传输数据的通道和1个传输时钟信号的通道。

发送端对这些数据进行编码和并/串转换,再将数据分别分配到独立的传输通道发送出去。

接收端接收来自发送端的串行信号,对其进行解码和串/并转换,然后发送到显示器的控制端。

TMDS不仅仅是对video进行编码,还包括audio和控制信号:

  1. 对于video周期采用的是video data encoding,将8bits数据转换成10bits数据
  2. 对于control周期采用的是CTL encoding,将2bits数据转换成10bits数据
  3. 对于Data Island周期采用的是TERC4encoding,将4bits数据转换成10bits数据

HDMI传输由三组TMDS通道和一组TMDS clock通道组成,TMDS clock的运行频率是video信号的pixel频率,在每个TMDS时钟通道周期,每个TMDS data通道都发送10bit数据。

  1. channel0传输B数据和HSync、VSync
  2. channel1传输G数据和CTL0、CTL1
  3. channel2传输R数据和CTL2、CTL

HDMI总体传输流程如下:

  • 2.ADV7611

ADV7611采用先进的CMOS工艺制造,提供64引脚、10 mm × 10 mm LQFP_EP表贴封装,符合RoHS标准,是一款高质量、单输入HDMI®接收器,内置HDMI兼容型接收器,支持HDMI 1.4a规定的所有强制性3D电视格式, 和最高UXGA 60 Hz、8位的分辨率。它集成一个CEC控制器,支持能力发现和控制(CDC)特性。并且提供汽车级、专业级(无HDCP)和工业级三种版本,工作温度范围为−40 ℃至+85 ℃。

具有一个音频输出端口,用于输出从HDMI流提取的音频数据。HDMI接收器具有高级静音控制器,可消除音频输出中的外来声频噪声。

可以访问下列音频格式:

1、来自I2S 串行器的音频流(两个音频通道)

2、来自S/PDIF串行器的音频流(两个未压缩通道或N个压缩通道,例如AC3)

3、DST音频流

HDMI端口具有专用的5 V检测和热插拔(Hot Plug™)置位引脚。该HDMI接收器还集成一个均衡器,用于确保与长电缆的接口具有鲁棒的工作性能。其功能框图如下所示:

引脚配置和功能说明如下:

2.1.I2C从机地址

ADV7611通过I2C接口配置,一个总线上可以挂在两个ADV7611。器件IO寄存器地址为0x98/0x9A,这个地址是固定的,通过复用的引脚 VS/FIELD/ALSB 和配置寄存器SAMPLE_ALSB来控制。默认以0x98为例介绍。

同时,ADV7611还包含几个I2C地址可配置的功能寄存器,它们的配置方式如下图所示。

可以看到,CEC、EDID、CP等功能寄存器的I2C地址都可以通过对应的IO寄存器来配置它们的默认地址。这里,可以使用上面给出的默认的地址。比如以EDID的I2C地址为例,只需要在IO寄存器地址0x98,子寄存器地址为0xFA的寄存器写入数值0x6C,那么EDID的I2C地址就配置为了0x6c。

2.2主模式与视频制式

设置主模式和选择视频标准是配置ADV7611时最基本的设置。ADV7611有两种主要模式HDMI-component and HDMI-graphic modes 。也就是HDMI组件和HDMI图形两种模式。通过寄存器PRIM_MODE[3:0]来配置。

在HDMI模式下,ADV7611可以通过DVI/HDMI接收器前端接收和解码HDMI或DVI数据。来自HDMI接收器的视频数据被传递到组件处理器CP模块,而音频数据在音频接口上可用。可以通过选择HDMI组件或HDMI图形主模式来启用其中一种模式。这里需要说明的是,HDMI接收器可以解码和处理任何应用的HDMI流,而不关心视频分辨率。然而,许多主要模式和视频标准组合可以用来定义如何处理传输到DPP和CP块的视频数据流。这允许一些系统可能需要的自由运行特性和数据抽取模式。所谓的free run自由运行模式就是在没有接受到正常HDMI信号或者没有接入信号时,可以自动生成一个HDMI视频流,给到后级系统用于测试或者其他应用。比如,可以设置一个蓝屏的信号。这在实际使用中很有用处。这里主模式和视频制式设置很大的作用其实就是设置这个free run所执行的模式和视频标准。

PRIM_MODE[3:0]寄存器地址为0x98,0x01[3:0],功能描述如下图:

V_FREQ[2:0]寄存器地址为0x98,0x01[6:4],用于设置帧率,功能描述如下图:

2.3像素输出

ADV7611的输出部分非常灵活。像素输出总线最高可支持24位4:4:4 YCrCb。像素数据支持SDR和DDR两种数据速率模式。在SDR模式下,可以实现16/24位4:2:2或24位4:4:4输出。在DDR模式下1,像素输出端口可配置为8/12位4:2:2YCrCb或24位4:4:4 RGB。

从上面两个表可以看到,ADV7611具有非常灵活的像素端口,可以各种格式配置以适应下游ic。

OP_FORMAT_SEL对应的寄存器地址为0x98,0x03 。如下图所示:

通常我们采用24bits SDR mode或者16bits SDR mode,也就是将对应寄存器配置为0x40或者0x80.注意这里对于444模式来说,包含RGB和YCBCR两种色彩制式,对于422模式来说,只有YCBCR一种。

上面说了,ADV7611的输出非常灵活,可以自由的配置输出接口总线对应的像素。如下图所示,可以通过寄存器OP_CH_SEL[2:0]来配置如下六种不同的引脚-总线对应关系。OP_CH_SEL[2:0]寄存器地址为0x98,0x04[7:5].

可以看到,默认情况下,P23-P16引脚对应的RGB模式的R分量输出,P15-P8引脚对应的RGB模式的G分量输出,P7-P0引脚对应的RGB模式的B分量输出。在444的YCBCR模式下,P23-P16引脚对应的为V分量输出,P15-P8引脚对应的Y分量输出,P7-P0引脚对应的U分量输出。在422的YCBCR模式下,P23-P16引脚无对应分量输出,P15-P8引脚对应的Y分量输出,P7-P0引脚对应的CBCR分量输出。同样的,可以通过配置寄存器将引脚和分量自由绑定。

其实到了这里,我们只需要再知道如何配置输出为RGB还是YCBCR就能够使用了。这里输出哪种色彩分量实际是通过CP CSC来控制的。也就是组件处理器的色彩空间转换功能。CP CSC转换功能有两种模式手动模式和自动模式。

这里CSC_COEFF_SEL[3:0]对应的寄存器地址时0x44,0x68[7:4] 。注意这里不再是IO寄存器地址了,时CP寄存器地址0x44。前面提到过,这个地址是可编程的,如果用户修改了CP地址,这里就要对应使用修改后的地址。

CP CSC配置为自动模式后,CSC矩阵、agc增益值、偏移量都能够通过下面的几个寄存器自动配置。

INP_COLOR_SPACE[3:0]寄存器地址为0x98,0x02[7:4],对应功能如下:

这个寄存器设置的是输入视频的色彩空间。通常我们不做特别的变换,使用默认值1111即可。

RGB_OUT寄存器地址为0x98,0x02[1],对应的功能如下:

可以看到,为0时是YCBCR的色彩空间输出,为1时是RGB的色彩空间输出。这里YPBPR是ycbcr是在模拟分量上的叫法,读者可以认为它们是一样的。

ALT_GAMMA寄存器地址0x98 ,0x02[3],对应的功能如下:

可以看到,该寄存器主要是做YUV601和yuv709之间的转换,默认为0不做转换,为1则输入为YUV601时转换为YUV709,输入为YUV709时转换为YUV601。

可以看到,这几个寄存器对应的地址都是0x98,0x02。它们的配置方式如下:

2.4像素数据和同步信号控制

上面说的都是数据总线接口,还离不开时钟和同步信号,这里的时钟叫做LLC,行锁定时钟,其实就是常说的像素时钟。

ADV7611的像素输出引脚P0-P23 ,时钟引脚LLC,同步输出引脚VS/FIELD/ALSB、HS、DE,以及音频接口输出引脚都可以通过对应寄存器配置为输出有效和三态输出两种。对应的寄存器地址为0x98,0x15在配置时需要将这些引脚设置为有效输出状态。

OP_SWAP_CB_CR寄存器地址为0x98,0x05[0],功能描述如下图:

这个功能就是交换Cr和Cb数据输出的顺序。默认值0为输出Cr Cb顺序按照OP_FORMAT_SET寄存器设置来,置位1后则交换CRCB的流出顺序,其实就是设置CB和CR谁在前的顺序问题。这里可以看到,这个功能只对设置为YUV422模式有效。在设计中,这个功能有时很有用。

同时,时钟引脚LLC,同步输出引脚VS/FIELD/ALSB、HS、DE的极性也可以通过对应寄存器设置。

ADV7611通过LLC引脚提供的像素时钟的极性可以使用INV_LLC_POL位进行反转。注意,这种反转只影响LLC输出引脚。其他输出引脚不受INV_LLC_POL影响。

为了满足处理ADV7611输出数据的下游设备的设置和保持时间预期,可能需要改变LLC时钟输出的极性。无论传输的视频数据是什么类型,INV_LLC_POL都适用。这其实相当于调整了时钟相位180度。

INV_LLC_POL寄存器地址为0x98, 0x06[0],功能描述如下图:

同样的,同步引脚极性也可以调整。

INV_HS_POL寄存器地址为0x98, 0x06[1],功能描述如下图:

INV_VS_POL寄存器地址为0x98, 0x06[2],功能描述如下图:

INV_F_POL寄存器地址为0x98, 0x06[3],功能描述如下图:

其实,到了这里我们就可以将ADV7611使用起来了,可以看到,最关键的就是配置IO寄存器的前面几个寄存器。

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值