从11年开始算起英蓓特已经在AM335x这个平台耕耘了5年之久,积累了丰富的设计经验。本案例中的客户为国外一学校客户,客户开始了计算机课程,ARM作为精简指令集处理器的代表进入客户的课程。因此客户找到我们合作,基于AM3358 CPU设计一款超便携式主机平台,客户设计软件系统,采用MicroHDMI输出,方便学生在家进行学习,以下以POCKET3358代替。

在实际操作过程中,有个别学生反馈自己的POCKET3358在自家的显示器是黑屏或者闪屏无法正常使用,跟同学换机或者带到学校却可以正常使用。校方跟我们反馈了这个问题,因为现象比较怪异,不像是品质有问题,因此我们联系校方收集问题产品,返回来给我们进行分析。

收到问题产品后经过测试,大部分情况下并没有什么问题,但在一台杂牌的显示器上,运行测试客户开发的软件发现有闪屏的现象,发生此现象的POCKET3358在另一台品牌电视机上可以正常显示,说明此问题还是存在的。

在一台飞利浦的显示器上,发现也有显示异常,但不是闪屏或者黑屏,具体表现为正常显示的成品显示效果边沿锐利,而出现故障的成品显示边沿有毛刺。

正常情况下,显示效果应该如下:

TI2016071201

而显示异常的成品,显示效果有如下毛刺存在:

TI2016071202

遇到这样的现象,首先怀疑线材的原因,因此更换不同品牌不同品质的线材进行测试,发现即使高品质的线材,故障也是依旧,并没有改善或者消失。

因为有的样品在测试的杂牌显示器上面会直接黑屏,此时显示器并不会进入休眠状态。因此怀疑是否此时没有信号输出或者输出的信息质量太差,导致显示器无法正常识别内容。此时将一个micrHDMI转接头去除塑胶保护,露出线路及引脚,方便测试。做成如下图所示的测试工具。

TI2016071203

使用一台高带宽的示波器对HDMI各个数据线上的信号进行测量,并且因为HDMI标准上传输视频和音频数据采用的是差分传输方式,所以使用示波器自带的数学计算功能对HDMI各个通道的正负数据进行“-”运算之后得出HDMI的各个通道的波形。发现HDMI各个通道上都有数据传输,并且波形的质量并不比正常显示的板子波形质量差。

在某杂牌电视上出现闪屏问题的POCKET3358进行测量得到如下波形:

TI2016071204

出现闪屏的POCKET3358 HDMI CLK信号

TI2016071205

出现闪屏的POCKET3358 HDMI TX2信号

对显示正常的POCKET3358进行波形抓取后得到如下数据:

TI2016071206

显示正常的POCKET3358 HDMI LCK信号

TI2016071207

显示正常的POCKET3358 HDMI TX2信号

从以上的数据对比,可以发现在某杂牌电视上出现黑屏的样品,在显示器没有显示内容时,其实HDMI正在进行数据输出,时钟CLK的波形并没有显示正常的样品时钟CLK的波形好,可能是由于座子接触问题产导致信号产生了畸变,或者由于芯片硬件本身存在不一致性导致了这样的区别,于是通过更换microHDMI Connector和与显示正常的板子进行芯片对调的方式进行验证,通过多次试验,证明根本原因并不在microHDMI Connector和芯片上。

此时似乎已经走到了死胡同里了,问题看起来有点复杂。所以决定先把显示有关的硬件和软件进行仔细排查。首先先把使用示波LCD各个Bit的数据测量出来,看看是否有时序错误或者其他硬件上的原因导致了这个问题。

在用示波器探头量取POCKET3358上LCD输出时钟LCD_PCLK的波形时,当示波器探头接触测量点的时候(R45),闪屏故障消失,画面显示正常。而把示波器探头拿开时,故障重现。因此可以断定示波器探头接触时引入某种变量把故障消除。仔细查看示波器的探头参数,发现所使用的示波器探头有3.9pF的等效电容,因此可以认为在测量信号是在LCD_PCLK上并联一个3.9pF的电容之后,不再出现某杂牌电视闪屏问题。由于测量过程无法消除示波器探头的电容效应,因此只能抓取被示波器探头修正后的波形,其波形如下:

TI2016071208

出现闪屏的POCKET3358 LCD_PCLK信号

测量显示正常的POCKET3358的LCD_PCLK,可以得到如下波形:

TI2016071209

正常显示的POCKET3358 LCD_PCLK信号

对比出现闪屏和显示正常的POCKET3358样品测量出来的波形,可以看到正常显示的波形上升沿更陡,高电平保持的时间更长;而出现闪屏的样品,上升沿更缓,但是高电平保持时间却更短,结合上面提到示波器探头的等效电容,可以推论出现闪屏的原因是因为阻抗匹配的原因,导致LCD_PCLK的波形发生了稍微变化,高电平保持时间不足,导致LCD转HDMI芯片(TDA19988)工作时数据采集时间不够,无法获得有效的数据。从而导致了闪屏问题的出现。

现在可以得出解决办法有在LCD_PCLK上并一个皮法级电容到地和更改LCD_PCLK上的阻抗匹配电阻两种解决方式。因为电路设计上并没有预留电容位,所以在LCD_PCLK上并电容的方法并不可行。所以将LCD_PCLK的串阻从22R改为33R,此方式验证可以解决POCKET3358在某杂牌电视上出现闪屏问题,更改串阻后LCD_PCLK的波形如下:

TI2016071210

将匹配电阻R45更换成33R后LCD_PCLK的波形

更改匹配电阻后,故障消失,证明更匹配电阻的值可以解决显示异常的问题。

作为验证,在LCD_PCLK上并联一个小电容,此办法也经过实验操作证明也可以解决显示黑屏的问题,在LCD_PCLK上并联一个3.3pF的小电容后波形如下:

TI2016071211

在LCD_PCLK上并联一个3.3pF电容后LCD_PCLK的波形

验证了硬件的解决方法,接下来就是软件的问题了。通过分析芯片的规格书,发现如在不方便进行硬件改动的情况下,也可以通过调整芯片的寄存器来改变芯片的驱动能力从而达到正常显示效果的目的。

有句话是这么说的:世界上只有两类工程师,一类是已经遇到信号完整性的工程师,一类是即将遇到信号完整性的工程师。现如今,芯片厂商在设计及出厂时都已经考虑到器件的信号完整性问题,所以器件都已经对信号完整性有足够的容忍度,这使得我们比想象中更少遇到信号完整性问题。也正因为如此,使得设计工程师往往忽略了设计中的信号完整性问题,等到遇到问题时无从下手。

从本例中可以看到,信号完整性问题并不可怕,但我们在设计中必须给予足够的重视,包括软件和硬件,才能保证自己的实际长时间稳定运行,设计出来一个合格的产品,对客户负责、对公司负责。