AN-1180:针对生产后自测优化视频平台

简介

本应用笔记介绍利用高级视频(ADV)系列设备进行视频平台的生产后测试和调试时采用的一些方法。

高级视频系统日益复杂,视频链包含了越来越多的链路。在视频评估系统中采用内置的自测技术可以通过自动测试实现生产效率的显著提升。

ADV器件包含的一些功能有助于发现视频处理、音频处理或数据/控制电路中的短路、断开或其他一些问题。许多ADV器件都包含内部图案发生器、同步检测电路(用于视频)和内置的外部存储器测试,可用于测试平台,便于对潜在故障平台进行调试。

为了测试系统,假定最终视频处理电路包含一个微处理器单元,此微处理器单元连接至受测视频器件,且包含可启用的生产后程序,该程序可以在生产后至少运行一次。

图1. 没有外部存储器、SP和I2C总线的假想视频链

系统测试


生产后测试可以嵌入处理器的主代码中,当一个跳线或者外部电路通知微处理器对电路板或系统进行后测试时就会被执行。有些微处理器允许将程序存储在闪存中,以便重写自己的闪存内容,其中包括有关自测是否通过的信息。一旦通过,就决不在发布给客户的产品中执行测试套件。


算法


自测算法应该最大限度地增加测试次数,从而减少潜在故障电路的数量。鉴于这一点,假定必须先测试可用于通信并实施进一步测试的I2C和SPI接口。有时会采用大系统,其中包含一些以菊花链形式连接的视频处理器件,在这种情况下可以额外实施一组测试,以便找到未能传输视频流的特定单元。

图2中的示例算法显示了某种可能的测试情景。

图2.示例测试算法

视频路径测试


对于以菊花链形式连接的视频器件,可能很难在不进行适当测试的情况下找到断点。

考虑一下图3所示的情景,可能可以利用内置的HDMI®检测模块找到连接问题。算法应该对第一个HDMI收发器(TRx)应用激励(HDMI信号),然后从第一个开始接连检查几个器件,看接收器那一端是否能收到合适的HDMI信号。每个HDMI接收器和收发器都包含一个HDMI参数模块(参见“HDMI Rx和TRx中的HDMI测量模块”部分),该模块可用于检查输入的HDMI链路信息。根据从每个器件的模块中回读的信息,可以找到断开的链路。

图3. 菊花链ADV7630

注意,较长的菊花链系统会导致在某些架构中积累聚集的抖动。因此,在系统级评估过程中应该对此类系统进行谨慎的监控。

图1显示了使用ADI公司各种视频处理元件的假设性视频链。每个器件都能够生成视频输出(自由运行或基本视频图案发生器;参见“视频数据输出测试”部分)和/或检测输入视频(STDI或HDMI参数模块;参见“视频输入测试”部分)。那些内置的功能有助于测试视频链。每一个具备视频输出能力的器件(例如图1中的1A、1B、1C、4、5和6)都能针对各自连接的后端器件(图1中分别为2、3、4、5和6)进行测试。因此,可以在不应用外部信号的情况下对几乎整个内部视频路径进行测试。

图1省略了外部外设,例如外部RAM存储器、非易失性EDID I2C EEPROM及其他外设,在生产后自测中也可对这些外设进行测试。有关详情,请参见“外设测试”部分。

外设测试

I2C、CS、ALSB和RESET置位测试


I2C、RESETCS线路(如果这些线路存在于某个特定器件上)可通过回读I2C寄存器加以测试,例如芯片版本代码(在使用ADV7611/ADV7612/ADV7619的情况下,可通过IO映射访问RD_INFO寄存器)。

  1. CS高或RESET 低时,器件不会作出I2C应答。
  2. 释放RESET并置位CS之后,可以访问I2C寄存器,例如RD_INFO。
  3. 向选定的R/W寄存器中写入X值,然后检查对RESET进行置位和解除置位操作之后寄存器的值是否复位至默认状态,这样即可完成RESET线路的测试。例如,在使用ADV7612的情况下,向CP_SLAVE_ADDR(用于CP映射的可编程I2C从地址)寄存器中写入0x40,确保复位之后即可将寄存器设置到其默认值0x00。
  4. 类似地,通过检查CS设置得较低时器件是否不响应I2C写入操作即可测试CS线路。在系统包含许多使用同一I2C地址的I2C器件时,这一点十分重要。
  5. 回读时,如果RD_INFO寄存器的值不是预期的那样,就说明向电路板上焊接了一个错误的器件。

此过程还可用于检验ALSB引脚功能。通过ALSB可以设置器件主I2C映射地址的LSB(最低有效位)。适当检测ALSB设置的两个不同地址可以确认ALSB功能是否正常。

注意,RESET脉冲的长度应该至少为5 ms(参见相关数据手册的“时序特性”部分)。


SPI主接口


对于包含EDID复制器的器件(例如ADV7842ADV7844ADV7850ADV7630),结合使用SPI主接口则可利用I2C 写入操作检验外部SPI EEPROM存储器。I2C命令EDID_STORE可用于将存储在内部EDID映射中的数据内容写入外部SPI存储器中。I2C 命令EDID_LOAD可用于将数据从外部SPI存储器读取到内部EDID存储器映射中。

图4. 外部SPI EDID算法测试

参见相应硬件用户指南中的I2C映射和EDID复制器部分。

对于包含EDID复制器的器件(例如ADV7630),其SPI主接口的快速测试可通过对EEPROM内容进行编程和回读操作完成。支持EDID复制的器件(例如ADV7630)应该会在写入读取操作失败时指出错误。


XTAL测试


XTAL或振荡器提供的正确时钟信号对任何应用都是至关重要的。器件缺少时钟源时,在绝大多数ADV器件中I2C从机仍然正常工作。

然而,在视频解码器以及HDMI接收器和收发器中,可以轻松检测到缺少正确时钟信号的情况。在这些器件中,依赖XTA的STDI模块不会正常工作,进而导致无效的回读。HDMI接收器和发送器中存在的HDMI参数模块将无法正常工作。

使用TMDSFREQ可以检测到HDMI器件上不准确的振荡器时钟频率,TMDSFREQ可以利用XTAL为参考测量输入HDMI流的频率。为了测试正确的晶振频率,可向HDMI接收器或发送器提供具有已知频率(例如,对1080p60而言标准频率为148.5 MHz)的输入HDMI流。只要晶振的频率合适且正确选择了XTAL_FREQ_SEL寄存器,TMDSFREQ寄存器就会精确地反映相同的频率。有关寄存器详情,请参见相关的硬件用户指南。

处理SD流(PAL/NTSC/SECAM)的视频解码器在时钟频率不正确的情况下由于不能锁定颜色副载波从而导致单色输出。它们还有可能误检测SD视频标准。

视频解码器上的XTAL频率测试可通过与HDMI测试类似的方式完成。对于元件视频模式,应该向视频解码器提供具有已知分辨率和垂直频率的视频信号。STDI寄存器的回读正确反映了视频时序,并确认XTAL的正确时钟频率。

HDMI发送器(例如ADV7511)和视频编码器(ADV732x、ADV734x及ADV739x)不使用XTAL时钟信号,但它们依赖于外部提供的像素时钟。缺少像素时钟会导致视频编码器和HDMI发送器无法输出视频。


外部存储器BIST测试


对于包含外部存储器的更高级视频器件(ADV7842、ADV7844),可以使用内部BIST测试方法进行测试。应该通过适当的I2C 写入操作开始BIST测试。BIST的结束可通过另一个I2C 可读取寄存器指示。完成测试后(根据I2C 寄存器BIST_DONE消息的指示),可以额外执行一次寄存器回读操作,以便确定存储器是否令人满意。

ADV7800/ADV7802/ADV7842/ADV7844存储器测试程序

ADV7842和ADV7844上的存储器BIST会生成一个伪随机序列,该序列输出至外部存储器并回读,以便检查是否有错误。执行存储器BIST测试前,建议进行硬件复位。

假定IO映射地址为0x40,AFE映射地址为0x4C,SDP映射地址为0x90,且SDP_IO地址为0x94(有关寄存器映射地址,请参见ADV7844/ADV7842的硬件用户指南),则应按照此处显示的顺序执行写入操作。

初始化

40 00 01;对SDP 4x1编程
40 01 00;对SDP模式编程
4C 80 92;SDP建议写入
4C 9B 01;SDP建议写入
4C 9C 60;SDP建议写入
4C 9E 02;SDP建议写入
4C A0 0B;SDP建议写入
4C C3 02;存储器BIST初始化
40 0C 40;ADV7844上电
40 15 BA;使能输出
90 12 00;禁用3D梳状滤波器、帧TBC和3DNR
40 FF 04;复位存储器控制器

等待5 ms

90 12 00;禁用3D梳状滤波器、帧TBC和3DNR
94 2A 01;存储器BIST初始化
94 7C 19;存储器BIST初始化
94 80 87;存储器BIST初始化
94 81 4A;存储器BIST初始化
94 82 2C;存储器BIST初始化
94 83 0E;存储器BIST初始化
94 84 94;存储器BIST初始化
94 85 62;存储器BIST初始化
94 7D 00;存储器BIST初始化
94 7E 1A;存储器BIST初始化

等待5 ms

94 D9 D5使能BIST测试
90 12 05使能帧TBC和3D梳状滤波器测试结果

可从以下寄存器回读BIST测试的结果:

  • SDP_IO映射寄存器0xDB[4] - 如果此位为1,则测试完成
  • SDP_IO映射寄存器0xDB[5] - 如果此位为1,则测试失败

使能后,存储器测试会在环路中无止境运行,由此测试不同的值。在环路寄存器每一迭代的末尾:测试完成和测试失败会得以更新。如果在任意迭代期间检测到错误,测试失败寄存器将设置为高,直到强制执行复位或重新运行整个存储器测试。建议让测试存储器至少运行200 ms。

ADV7186存储器测试程序

ADV7186提供外部存储器测试功能。有关详情,请参见ADV7186文档。

ADV7850 DDR2存储器测试程序

ADV7850硬件手册中列出了ADV7850存储器测试程序。请参见有关“DDR2 BIST测试”的探讨内容。

ADV8003存储器测试程序

ADV8003依靠外部存储器提供高级视频处理选项。这些器件提供存储器测试。有关详情,请参见ADV8003文档。


视频数据输出测试


视频解码器和HDMI接收器

视频解码器和HDMI接收器的基本视频输出测试可通过强制自由运行来实现(参见相应的用户指南)。自由运行会输出选定颜色(每通道8位,MSB对齐)的平坦视频图案,并伴随有同步信号。含有分量处理器内核(CP内核)的每个视频器件都具备自由运行功能。

ADV7401ADV7403、ADV7611、ADV7612、ADV7619、ADV7604ADV7622ADV7623、ADV7800、ADV7802、ADV7842、ADV7844和ADV7850器件的以下位与自由运行功能有关。

  • CP映射(0xBF[0])中的CP_FORCE_FREERUN位
  • CP映射(0xBF[1])中的CP_DEF_COL_AUTO位
  • CP映射(0xBF[2])中的CP_DEF_COL_MAN_VAL位
  • CP映射(0xC0[7:0])中的DEF_COL_CHA
  • CP映射(0xC1[7:0])中的DEF_COL_CHB
  • CP映射(0xC2[7:0])中的DEF_COL_CHC

CP_FORCE_FREERUN位设置为1会强制自由运行输出。当CP_DEF_COL_MAN_VAL设置为1且输出自由运行时,输出颜色由寄存器DEF_COL_CHA[7:0]、DEF_COL_CHB[7:0]、DEF_COL_CHC[7:0]设置。自由运行的视频格式取决于VID_STD和PRIM_MODE参数,这些参数位于对应器件IO映射的前两个字节中。

在使用HDMI Rx器件的情况下,设置PRIM_MODE = 4(图形)且VID_STD = 8应该会在60 Hz条件下产生640x480的视频分辨率。但是,设置PRIM_MODE = 5(分量)且VID_STD = 0x5会输出1080i60(参见UG-237中的“HDMI输入的建议设置”表)。

如果器件不支持HDMI输入,PRIM_MODE = 1且VID_STD = 5应该会输出1080i60,PRIM_MODE = 2且VID_STD = 8则输出64 × 480p。器件的后端输出应该按照在标准脚本中的方式进行编程;ADV7401、ADV7403、ADV7611、ADV7612、ADV7619、ADV7604、ADV7800、ADV7802、ADV7842和ADV7844通过一根标准输出像素总线输出视频(需要使能输出并设置OP_FORMAT_SEL、OP_CH_SEL等;参见标准脚本)。

ADV7622、ADV7623和ADV7850等器件通过嵌入式HDMI Tx输出视频(需要像标准脚本中一样执行额外写入)。

列表1. 设置1080p60输出的ADV7611/ADV7612/ADV7619自由运行脚本

98 FF 80;I2C复位
98 FD 44;CP
98 00 1E;VID_STD = 1080P60 @ 60Hz
98 01 05;Prim_Mode =101b HDMI-COMP
98 03 42;36位SDR 444模式0
98 05 28;AV代码关闭
98 0B 44;器件上电
98 0C 42;器件上电
98 14 7F;最大驱动强度
98 15 80;禁用三态
98 19 83;LLC DLL相位
98 33 40;LLC DLL使能
44 BA 01;设置HDMI自由运行
44 BF 17;强制自由运行;手动颜色设置
44 C0 00;手动颜色:绿色通道
44 C1 00;手动颜色:红色通道
44 C2 A0;手动颜色:蓝色通道
44 C9 05;禁用自由运行参数的自动缓冲

图5. 通过自由运行强制实行特定颜色可检查视频像素总线连接

视频编码器

ADV7340ADV7341ADV7342ADV7343ADV7391ADV7392ADV7393等视频编码器允许输出视频测试图案。为了输出视频图案,必须向编码器提供时钟,并且必须对编码器的寄存器进行编程。这种模式无需额外的同步信息,因为可通过I2C寄存器选择视频标准。

有关生成内部测试图案的探讨,请参见ADV7340/ADV7341数据手册、ADV7342/ADV7343数据手册或ADV7390/ADV7391/ADV7392/ADV7393数据手册。

独立HDMI发送器和视频DAC

独立视频HDMI发送器(ADV7511)和视频DAC不生成内部视频图案。但是,ADV7511等视频发送器以及嵌入ADV7622、ADV7623和ADV7850的HDMI Tx可以利用以下寄存器检查与HDMI接收端的输出连接

  • HPD状态(0x42[6]主映射)
  • 监控器检测状态(0x42[5],主映射)
  • PLL锁定状态(0x9E[4])

HPD状态可指示HPD线路的状态。监控器检测状态可检测后端器件的端接。PLL锁定状态可指示PLL的状态。锁定PLL表示器件正向下游HDMI接收端发送视频;向HDMI Tx提供视频数据且正确连接了下游器件时,这种情况是有可能的。有关详情,请参见ADV7511的硬件用户指南。

图6. HDMI TX可用于测试与下游HDMI接收端的连接

带有HDMI发送器的MIPI/DSI接收器

带有HDMI发送器的最新一代ADV7533 MIPI/DSI接收器拥有内置视频发生器,可以生成视频图案编号。有关详情,请参见ADV7533文档。


音频数据输出测试


对于HDMI接收器的音频数据输出,只能在HDMI接收器 目前正接收包含嵌入式音频的HDMI流时进行测试。UG-216中探讨了有关音频控制和配置的内容。

图7. 音频输出测试需要HDMI源

视频输入测试


SD视频解码器

SD视频解码器有一个可用于检测输入视频的检测模块。ADV7180数据手册中的“全局状态寄存器”描述列出了AD_RESULT、STATUS 1、STATUS 2和STATUS 3等寄存器,可实现输入视频流的检测。所有具备标准定义处理内核的视频解码器都有此类寄存器。

图8. 测试SD模拟输入

有关更多信息,请参见以下文档:

  • ADV7180数据手册:有关自动检测结果的信息
  • ADV7184数据手册:有关全局状态寄存器的信息
  • ADV7188数据手册:有关全局状态寄存器的信息
  • ADV7800和ADV7802硬件用户指南:SDP自动检测结果
  • ADV7844硬件用户指南:SDP模式的自动检测

分量处理视频解码器和HDMI接收器

分量处理视频解码器(ADV7401、ADV7403、ADV7844、ADV7842、ADV7850)和HDMI视频接收器(ADV7611、ADV7612、ADV7619、ADV7622、ADV7623、ADV7842、ADV7844及ADV7850)包含STDI,可指示正确的同步信号锁定。STDI模块可实现视频标准的检测。它可以用于HDMI接收器模块(如果存在于器件中)和分量视频标准(如果存在于器件中)。STDI模块在垂直同步信号(VS)器件使用外部晶振并计算线路数量,在场期间则测量晶振周期数(以八条线路模块计算)和连续VS之间的时钟周期数。

根据所有STDI值的回读情况,可以检测视频标准并指示其一致性(STDI视频锁定信号)。参见UG-216了解有关CP处理的同步的信息,或者参见UG-214了解有关标准检测和识别的探讨内容。

CP处理器还包含CP_LOCK和DE_REGEN_LCK,可用于在两个帧拥有不同时序参数时触发中断。这可用于检测由时序不一致导致的任何类型的视频反冲。

HDMI Rx和TRx中的HDMI测量模块

ADV7610、ADV7611、ADV7612、ADV7619、ADV7842、ADV7844及ADV7850等 HDMI接收器和ADV7622、ADV7623及ADV7630等收发器与多路复用器拥有HDMI参数测量模块。有关输入视频流的信息,HDMI参数测量模块提供的比STDI模块提供的更为详细,其中包括:

  • 电缆检测:每个HDMI接收器都包含+5 V电缆检测寄存器。参见UG-216中的+5 V电缆检测描述)。
  • TMDS时钟活动检测。有关TMDS时钟活动检测信息,请参见UG-216)
  • HDMI参数:
  • TMDS频率
  • 具体的视频参数(水平、垂直同步、前沿箝位、后沿箝位、活动区域的开始和结束)。参见UG-216中的HDMI同步参数)。

注意,本部分探讨的寄存器允许检测由不稳定视频同步或TMDS时钟频率导致的输入HDMI视频流的最小不一致。

独立HDMI发送器

ADV7511等HDMI发送器不提供关于输入视频流的广泛信息;但是,它们会提供基本CEA-861视频标准检测,这种检测会通过I2C寄存器报告回来。上述HDMI发送器的主映射中检测到的寄存器Vic(地址0x3E)可提供此类信息。

图9.正确同步连接的检验

因此,可以检测传入HDMI发送器的各种标准(例如720p和1080p60)。这种检测正确就意味着时钟和同步连接正确。

附录A

表1显示了可用于自动测试的内置模块。

表1. 用于自动测试的内置功能
器件 SD标准检测 STDI HDMI参数模块 自由运行功能 基本输入VIC检测 图案发生器 外部存储器的BIST 外部SPI EEPROM I2C
视频DAC
ADV7123/ADV7125
视频解码器
ADV7180/ADV7182/ ADV7184/ADV7188
ADV7181D
ADV7401/ADV7403
ADV7800/ADV7802>
Y
Y
Y
Y

Y
Y
Y



Y
Y
Y
Y












Y
Y
Y
Y
视频编码器
ADV7341/ADV7343/ ADV739x
Y Y
带HDMI的视频解码器
ADV7604
ADV7842/ADV7844/ ADV7850
Y
Y
Y
Y
Y
Y
Y
Y



Y

Y
Y
Y
HDMI接收器
ADV7610/ADV7611/ ADV7612/ADV7614/ ADV7619
Y Y Y Y
HDMI收发器
ADV7622/ADV7623
Y Y Y >Y Y
HDMI发送器
ADV7511/ADV7511W/ ADV7513
ADV7523/ADV7526/ ADV7528
ADV7533












Y
Y



Y






Y
Y

作者

Witold Kaczurba

Witold Kaczurba

Witold Kaczurba 是ADI公司高级电视部(爱尔兰利默里克)资深应用工程师,负责支持解码器和HDMI产品。2007年从波兰弗罗茨瓦夫理工大学毕业并获得电气工程硕士学位后,他加入ADI公司。学生期间,他曾为小型电子和IT公司工作,后来作为工读生加入ADI公司(爱尔兰),随后成为应用工程师。