作者:德州仪器半导体技术(上海)有限公司 通用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。
- 上电时序:由于TVP5150AM1内部有多种电压,为了保障系统的正常工作,我们建议1.8v电压先上,然后上3.3v电压,最后相隔100ms后给系统复位。
- 视频输入管脚及增益设置:在匹配电阻为75欧姆情况下,最大的峰峰值为1.24v,如下图:
图2
这时候就超过了TVP5150允许的最大输入值0.75v,我们通常采用电阻分压网路来解决该问题。
图3
- Anti-aliasing滤波器设计:为了防止频带外的杂讯干扰,通常在模拟前端加入低通滤波器。如图4,是给CVBS信号、S-Video的滤波器,它们不同主要是因为TVP5150对这两种信号的采样频率不同。
图4
图5.幅频特性,频响特性
4)TVP5150IBIS模型
请看链接:(见附件中的TVP5150Apbs IBIS Model.zip)
5)PCB layout注意事项:
- 地的分割:建议分模拟地和数字地,并使它们在相应的电源层下。
- 不要将任何信号放在电源层或地层上。
- 确保电源层等于或小于相应地层的大小。
- 不要使模拟信号靠近时钟信号。
- 不要将数字信号放在模拟区域。
- 模拟信号走线越短越好。
- 将去耦电容尽量靠近IC的电源管脚。
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:可通过编程实现以下格式:
- 内嵌同步的8-bit ITU-R BT.656 4:2:2 YCbCr。
- 分离同步的8-bit 4:2:2 YCbCr。
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:可能由以下原因造成的:
- 可能是时钟电路,参考4-3-12.
- 也可能是PIN27的设计造成的。尝试加4.7K下拉电阻或当该PIN设置成GPIO output时,使其输出高。
也可能是与后端的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造成的。