作者:德州仪器半导体技术(上海)有限公司 通用DSP 技术应用工程师 喻云峰
1.简介
TVP5150系列是一颗使用简易,超低功耗,封装极小的数字视频解码器。使用单一14.31818MHz时钟就可以实现PAL/NTSC/SECAM各种制式的解码,输出8-bit ITU-R BT.656数据,也可输出分离同步。MCU通过标准I2C接口控制TVP5150的诸多参数,比如色调,对比度,亮度,饱和度和锐度等等。TVP5150内部的VBI处理器可以分离解析出VBI(Vertical Blanking Interval)里面的teletext,closed caption等等信息。
TVP5151是TVP5150AM1的升级版本,其将TVP5150AM1的最新补丁固化在内部的program ROM,并扩大了内部RAM的空间。在硬件上唯一的改动就是时钟的输入频率,为单27MHz。其硬件和寄存器和TVP5150AM1完全兼容。
在新的设计当中,我们推荐使用TVP5151。
2.硬件设计
1) 参考原理图:(见附件中的graphic.pdf)
2) 参考gerber file: (见附件中的TVP5150EVM CAM.zip)
3) 硬件原理设计注意事项:
图1
14.31818MHz,误差在50ppm内为佳;C1,C2的选择应该根据晶体的负载电容,C1=C2=2Cload-Cstray,其中Cstray一般取3-8pF。
图2
这时候就超过了TVP5150允许的最大输入值0.75v,我们通常采用电阻分压网路来解决该问题。
图3
图4
图5.幅频特性,频响特性
4)TVP5150IBIS模型
请看链接:(见附件中的TVP5150Apbs IBIS Model.zip)
5)PCB layout注意事项:
3.软件设计
1) TVP5150是通过I2C控制的,所以首先要保证I2C通讯正常。之后只需要写几个寄存器就可以是IC工作了,它们是0x00(video source input selection register),0x03(Miscellaneous Control register)。
2) 如何通过I2C下载补丁?
(0x7F) = 0x00; // restart TVP5150 uP
(0x03) = 0x69; // enable outputs
// unlock password for patch code download & register write
(0x21) = 0x51;
(0x22) = 0x50;
(0x23) = 0xFF;
(0x24) = 0x04;
// I2C Multi bytes write
I2CWrite(DEV_Addr,0x7E,sizeof(pPatch),pPatch);
// I2CWrite(unsigned char DEV_ADDR,unsigned char //SUB_ADDR,unsigned int size,unsigned char *pData);
// lock password for patch code download & register write
(0x21) = 0x00;
(0x22) = 0x00;
(0x23) = 0xFF;
(0x24) = 0x04;
然后读取寄存器0x82,0x83确认版本号与补丁的版本号相同,证明补丁下载成功。
3) 如果补丁下载成功后,而MCU又通过硬件复位了TVP5150,此时原先ROM的代码开始运行。为了让补丁重新工作,我们只需写入如下寄存器:
// unlock password for patch code download & register write
(0x21) = 0x51;
(0x22) = 0x50;
(0x23) = 0xFF;
(0x24) = 0x04;
(0x10) = 0x05;
// lock password for patch code download & register write
(0x21) = 0x00;
(0x22) = 0x00;
(0x23) = 0xFF;
(0x24) = 0x04;
4) 如何操作TVP5150的隐藏寄存器?
TVP5150xxx有一些隐藏寄存器,当我们要写它们的时候:
将数据的高字节写入寄存器0x21.
将数据的低字节写入寄存器0x22.
将寄存器的低字节地址写入寄存器0x23.
将写锁存字节写入寄存器0x24。具体参数见表1
当我们要读它们的时候:
将寄存器的低字节地址写入寄存器0x23.
将读锁存字节写入寄存器0x24。具体参数见表1
从寄存器0x21读出数据的高字节。
从寄存器0x22读出数据的低字节。
表1
4.FAQ
4-1 TVP5150xxx技术指标相关问题
4-1-1 TVP5150,TVP5150A,TVP5150AM1都有什么区别?
4-1-2 TVP5150xxx都支持哪些输入?
4-1-3 TVP5150xxx都支持哪些video 格式?
4-1-4 Auto switch和auto detect是什么概念?有何区别?
4-1-5 TVP5150xxx支持哪些输出格式?
4-1-6 RESETB最小时间是多少?
4-1-7 TVP5150AM1上电后需要多长时间去完成内部初始化工作?
4-1-8 TVP5150AM1支持OSD叠加吗?
4-1-9在Powerdown模式下,TVP5150AM1的功耗是多少?
4-1-10 Datasheet讲TVP5150AM1支持SECAM (B, D, G, K, K1, L), TVP5150AM1支持SECAM(H)和SECAM(V)吗?
4-1-11在复位状态,Yout,SCLK,HS和VS是什么状态?
4-1-12 /RESET脚和PDN脚对应的高电平应该是多少v?
4-2 TVP5150xxx补丁相关问题
4-2-1为什么我使用了048C22版本的补丁,我的系统输出没有颜色,而去掉该 补丁,就好了?
4-2-2为什么download 补丁需要大约2秒的时间?
4-2-3 我在哪里可以得到最新的patch?
4-3 TVP5150xxx视频输出相关问题
4-3-1为什么我的系统里看到很严重的重影?
4-3-2如何调整TVP5150输出的位置?
4-3-3我现在使用的摄像头有白天模式和夜间模式,从夜间模式转换到白天模式,为什么有时TVP5150AM1输出没彩色?
4-3-4为什么我偶尔在我的视频输出看到水平白线或暗线?
4-3-5 为什么TVP5150AM1输出白屏?
4-3-6为什么当用day/night摄像头的时候TVP5150AM1会没有彩色?
4-3-7 为什么我偶尔在我的视频输出看到蓝屏或绿屏?
4-3-8 为什么我的视频输出上下闪动?
4-3-9 在带圆的信号里,我能看到圆的边缘有彩色闪动。怎么改?
4-3-10 我如果减少飞彩现象?
4-3-11为什么我系统输出的颜色是反的?
4-3-12为什么我系统输出没有颜色,而TVP5150又锁住了色度负载波?
4-3-13为什么我的系统有时输出的颜色不稳定?
4-3-14当输入画面静止时,我们系统输出是正常的;但图像一动,我的系统输出就有很严重的锯齿。为什么?
4-3-15当输入画面静止时,我们系统输出是正常的;但图像一剧烈运动,我的系统输出就有比较明显方块状。为什么?
4-3-16为什么我直接给HUE设定一个较大的值TVP5150AM1的图像就会乱掉?
4-3-17为什么当我设置contrast/brightness很大的值时,TVP5150AM1会水平白线出现?
4-4 TVP5150xxx弱信号相关问题
4-4-1 TVP5150AM1如何判断弱信号?
4-4-2 TVP5150AM1检测到弱信号后会做什么处理?
4-4-3 面对弱信号,我有什么好方法来处理?
4-4-4如何判断弱信号和非标信号?
4-5 TVP5150xxx I2C相关问题
4-5-1为什么我的I2C速度一快,TVP5150AM1有时就会没响应?
4-6其它问题
4-6-1为什么我的板子有很多的noise?
4-6-2当我将PIN27设计成INTQ功能,设计需要注意哪些事情?
4-6-3 Power Down模式和Reset模式有什么区别?
4-6-4 Data pins和SCLK pin在正常工作模式、reset模式和powerdown模式下各是什么状态?
4-6-5系统在视频方面出了问题,通常的思路是怎样的?
4-1-1 TVP5150,TVP5150A,TVP5150AM1都有什么区别?
An: 下面是它们的主要区别:
5150:支持601和square 采样。
5150A: 支持601采样。
5150AM1: 支持601采样。
5150:内含scaler。
5150A: 不含scaler。
5150AM1: 不含scaler。
5150:不支持SECAM。
5150A: 支持SECAM(缺省不能自动识别)。
5150AM1: 支持SECAM(缺省能自动识别)。
5150:一般弱信号处理能力。
5150A: 加强弱信号处理能力。
5150AM1: 加强弱信号处理能力。
5150:较快的锁定速度。
5150A: 一般的锁定速度。
5150AM1: 较快的锁定速度。
5150:输出支持ITU-R BT.656-3。
5150A: 输出支持ITU-R BT.656-4。
5150AM1: 输出支持ITU-R BT.656-3和ITU-R BT.656-4。
TVP5150A是TVP5150的硬件升级版本。TVP5150AM1是TVP5150A的软件升级版本。
4-1-2 TVP5150xxx都支持哪些输入?
An: 支持CVBS和S-Video输入,但不能同时。通过寄存器0x00来设置。
4-1-3 TVP5150xxx都支持哪些video 格式?
An: TVP5150A/AM1支持以下格式:
NTSC(J,M,4.43)
PAL(B,D,G,H,I,M,N,Nc)
SECAM(B,D,G,K,K1,L)
TVP5150支持以下格式:
NTSC(J,M,4.43)
PAL(B,D,G,H,I,M,N,Nc)
4-1-4 Auto switch和auto detect是什么概念?有何区别?
An: Auto switch指decoder自动检测输入信号的制式并处于该模式的状态下。而auto detect仅仅是自动检测输入信号的制式,其它的需要后端CPU来初始化。
4-1-5 TVP5150xxx支持哪些输出格式?
An:可通过编程实现以下格式:
4-1-6 RESETB最小时间是多少?
An: RESETB最小要保持低200ns。同时,PDN必须为高。
4-1-7 TVP5150AM1上电后需要多长时间去完成内部初始化工作?
An:最快是128us。时间是依据输入信号的格式和执行auto switch的video format的多少。
4-1-8 TVP5150AM1支持OSD叠加吗?
An: 不支持。
4-1-9在Powerdown模式下,TVP5150AM1的功耗是多少?
An: 软件Powerdown模式下典型功耗为60mW。硬件Powerdown模式下典型功耗小于1mW。具体参数见下表:
4-1-10 Datasheet讲TVP5150AM1支持SECAM (B, D, G, K, K1, L), TVP5150AM1支持SECAM(H)和SECAM(V)吗?
An: 支持的
4-1-11在复位状态,Yout,SCLK,HS和VS是什么状态?
An:在复位状态,除了Xtal2,所有的输出信号都是高阻。
4-1-12 /RESET脚和PDN脚对应的高电平应该是多少v?
An:3.3v。可参考原理图。
4-2-1为什么我使用了048C22版本的补丁,我的系统输出没有颜色,而去掉该补丁,就好了?
An: 因为048C22版本的补丁对时钟要求更高,但要求还是在我们datasheet要求的范围了。具体解决方法参考硬件设计的晶体电路部分。
4-2-2为什么download 补丁需要大约2秒的时间?
An: 你可以加快I2C的速度和采取块写的方式。比如一个5.3KB的补丁,我们只需要(1/(400K/9))*5375 = 121ms,算上20%的余量,也就146ms。
4-2-3 我在哪里可以得到最新的patch?
An: http://software-dl.ti.com/dsps/dsps_public_sw/dsps_swops_houston/ANALOG_VIDEO/Analog_Video_Decoder_Versions.htm
4-3-1 为什么我的系统里看到很严重的锯齿?
An: 锯齿是由于奇、偶场造成的。首先应该检查是否你后端CPU的de-interlace出了问题。然后检查后端CPU的奇、偶场顺序反了。
4-3-2如何调整TVP5150输出的位置?
An:需要通过修改隐藏寄存器来修改。先解锁TVP5150,(0x2FF) = 0x5150,然后将新值写入对应的寄存器(0x329) = 0xxxxx(VSYNC start),(0x32A) = 0xxxxx(VSYNC stop),(0x323) = 0xxxxx(HSYNC start) (0x324) = 0xxxxx(HSYNC stop)。
4-3-3我现在使用的摄像头有白天模式和夜间模式,从夜间模式转换到白天模式,为什么有时TVP5150AM1输出没彩色?
An: 首先要看摄像头输出是否有彩色,我们可以通过TVP5150AM1的寄存器88h的bit3,color subcarrier lock status,来判断。如果是0,我们应该去找模拟前端的问题,包括摄像头。如果是1,我们可以通过如下方法来解决:先强制TVP5150AM1处于某种制式下,比如PAL制摄像头就写0x04到寄存器0x28。然后写0x015A到0x2B1, 0x85E3到0x2B2, 0Xfef0到0x2B3, 0x7A07到0x2B4。 或者使用补丁也可解决该问题,详细见补丁说
4-3-4 为什么我偶尔在我的视频输出看到水平白线或暗线?
An: 首先我们关掉white peak protection 或composite peak protection看看(0x02寄存器,具体看datasheet)。如果不行,请联系TI FAE要分析具体信号。
4-3-5 为什么TVP5150AM1输出白屏?
An: 可能是输入信号超过TVP5150AM1的输入门限,请检查输入电路。
4-3-6为什么TVP5150AM1会没有彩色,当用day/night摄像头的时候?
An: 补丁048c22可以解决这个问题。
4-3-7为什么我偶尔在我的视频输出看到蓝屏或绿屏?
An: 这可能是由非标信号造成的。先要判断是否是非标信号,如果是,则要调整F bit和V bit的设置,具体参看寄存器0x15。如果不是,请用标准信号源测试。
4-3-8为什么我的视频输出上下闪动?
An: 仍然可能是非标信号造成的,参考4-3-7。
4-3-9在带圆的信号里,我能看到圆的边缘有彩色闪动。怎么改?
An: 这是由于梳妆滤波器的特性造成的。我们可以尝试修改隐藏寄存器0x33A的值为0x000F.
4-3-10我如果减少飞彩现象?
An: 为了减少false color现象,我们只有减少色度的带宽。修改如下:
Register Default Value New Value
0x0E 0x00 0x03
0x1B 0x14 0x13
4-3-11为什么我系统输出的颜色是反的?
An:通常该问题是由TVP5150和后端的时序配合造成的。我们用一彩条很容易判断。
4-3-12为什么我系统输出没有颜色,而TVP5150又锁住了色度负载波?
An: 如果时钟电路有误差,会导致该问题。具体设计参考硬件的时钟电路参数设计。
4-3-13为什么我的系统有时输出的颜色不稳定?
An:可能由以下原因造成的:
也可能是与后端的CPU配合造成的,最简单就是写寄存器0x15为0x05,看是否有变化,如果颜色丢失了,写回0x01。参考4-3-11。
4-3-14当输入画面静止时,我们系统输出是正常的;但图像一动,我的系统输出就有很严重的锯齿。为什么?
An: 应该是后端DSP的奇偶场搞反了。
4-3-15 当输入画面静止时,我们系统输出是正常的;但图像一剧烈运动,我的系统输出就有比较明显方块状。为什么?
An: 应该是后端DSP编码造成的。
4-3-16为什么我直接给HUE设定一个较大的值TVP5150AM1的图像就会乱掉?
An: 这是TVP5150AM1的一个Bug,我们可以用补丁048c22 来解决这个问题。如果不用补丁需要限定hue的范围为+/-80。
4-3-17 为什么当我设置contrast/brightness很大的值时,TVP5150AM1会水平白线出现?
An: 补丁048c22可以解决这个问题。
4-4-1 TVP5150AM1如何判断弱信号?
An: TVP5150AM1依据水平同步上的jitter数量。
4-4-2 TVP5150AM1检测到弱信号后会做什么处理?
An: 当检测到弱信号,TVP5150AM1强制进入TV模式以减少jitter。TV信号的时基很稳定,所以5150内部可以用较慢的时间常数,也就是较慢的PLL响应来减少jitter。
4-4-3面对弱信号,我有什么好方法来处理?
An: Patch 048c22对弱信号有更为增强的处理。
4-4-4如何判断弱信号和非标信号?
An: 通过寄存器0x88的bit0可以判断是TV还是VCR模式,如果是VCR说明是非标信号;通过寄存器0x89的bit6可以判断是否是弱信号。
4-5-1 为什么我的I2C速度一快,TVP5150AM1有时就会没响应?
An: TVP5150AM1的I2C速度可以达到400Kbps,所以出现这种问题可能是由于后端CPU造成的。建议用额外的GPIO口去模拟I2C通讯。
4-6-1 为什么我的板子有很多的noise?
An: 这些noise都是PCB layout或电源干扰造成的。下面提供一些找问题的思路。
4-6-2 当我将PIN27设计成INTQ功能,设计需要注意哪些事情?
An:当我们将定义成INTREQ输出时,如果定义为高有效,此时是一普通IO口。如果定义为低有效,此时需要一上拉电子,其值一般为4.7K~10K。
4-6-3 Power Down模式和Reset模式有什么区别?
An: PowerDown模式下TVP5150AM1内部CPU仍然工作,所有寄存器的值仍然保持,但ADC被关掉,内部时钟降到最小频率。而Reset模式下,ADC、PLL所有部分都被关掉,重新到正常工作模式,需要重写寄存器。
4-6-4 Data pins和SCLK pin在正常工作模式、reset模式和powerdown模式下各是什么状态?
An:
正常工作模式: SCLK和YOUT可以是高阻或正常输出状态,依寄存器0x03的设置而定。
Reset工作模式:SCLK和YOUT都是高阻状态。
PowerDown工作模式:为了省电,在进入powerdown模式前,需要通过寄存器0x03将SCLK和YOUT设置成高阻状态。
4-6-5 系统在视频方面出了问题,通常的思路是怎样的?
An:以上Q&A基本上包含了大部分涉及IC的问题,但实际产品应用中总会遇到各种各样的,千奇百怪的问题。通常我会按以下几种来分类:图像品质类、硬件设计类、系统设计类、特殊信号类和IC损坏类。这些分类并不是固定不变的,有时会有些交叉问题出现。最核心的部分还是需要对视频要有足够的理解。以下通过图片的形式来举例。
EX1:为什么我的图像会有黑色部分出现?
An:图像的信号进入到后端的CPU,不管是内嵌同步还是外嵌同步,这中间都有一个协议去保障video decoder的输出是在什么位置,具体来讲就是奇偶场,行消隐,场消隐,有效数据等等。从图片上看,明显是没有能保障场的同步。所以思路应该从CPU的场同步处理去分析,甚至包含数据的存储和搬运。属于系统设计问题。
EX1
EX2:为什么我的图像晚上有网格出现,而白天正常?
EX2
An:Video decoder最主要的功能之一就是将复合视频信号进行YC分离,色度信号是根据色度副载波的频率依附在亮度信号当中。在确认CPU后端处理没问题后,基本可以判断是video decoder的chrominance 处理出了问题。经过测试原始信号,发现摄像头此时没有输出色度副载波,但依然输出色度信号的数据。属于特殊信号问题。经过新的补丁,可解决该问题。这也是TI video decoder的最大优势。因为没有任何人可以保证下一个非标信号是怎样的。
EX3:我们发现5150采集出来的图像存在彩色条纹,有方法可以改进吗?
An:这种问题就是我们通常讲的flase color,4-16有其解决方法。根本原因是2D的comb filter不可能将所有频道的YC分离的很干净,而目前的电视是3D 的滤波器,对静止画面可以处理的非常干净。实际工程中判断该类问题就是看该彩色是否和画面的频率相关。属于图像品质类问题。
EX3
EX4:为什么我之前用的其他decoder图像正常,而更换5151后图像异常?我的driver应该如何改?
An:从图像内容来看,不应是模拟信号造成的,问题应出在数字部分。通常一颗器件的driver,应从以下几个方面入手。属于系统设计问题。
EX4-1,EX4-2
5146、5150、5151的输出格式都可以配置成内嵌同步的BT656。对于驱动层,我的建议是:
1,你首先要知道每款video decoder和CPU的视频接口是什么,比如是8bit还是16bit的宽度,是内嵌同步还是行场分离;你只有了解了这些,你才能决定后面该如何配置。这很关键。
2,如果你能保证他们的接口一样,我认为CPU的VP口和buffer端是基本不需要修改的。因为,他们的输出都是按照标准来的。
3,剩下的工作就是对每款video decoder的具体寄存器配置。通常寄存器的配置是放在单独的一个文件里面。
EX5:如何改进视频的通透性?
EX5
An:所谓的通透性其实是一个很主观的认识,当你的对比度过大时,你自然会觉得其通透性好。比如上图,你将对比度调大,亮度调低,主观上觉得其通透性好。比如
WR_REG,VID_DEC,1,0x10,0x1C // Brightess =28 on WinVcc Prop Sheet
WR_REG,VID_DEC,1,0x11,0x89 //Contrast =137 on WinVcc Prop Sheet
但其是有副作用的,必然会影响层次感(最简单的测试方法是测试标准灰阶)。
EX6:为什么我的图像上锯齿、重影很严重?
An:该类问题通常是由于场的处理造成的,属于系统设计问题。一是看是否分静止和运动。如果静止图像也有严重的锯齿,比如你输入一标准信号,看看水平交界的地方是否有明显的错行问题。如果有,应该是后端CPU奇偶场不分造成的。如果只有运动画面有,应该是后端CPU的de-interlace造成的。
EX6