摘要:针对数码相机的成像和视频处理前端,给出一种基于TI DSP技术的设计方案。详细介绍单芯片数字视频解码器TVP5040和单芯片影像处理器TMS320DSC系列DSP的图像功能单元CCD控制器的功能和特点,并给出二者的硬件连接和软件实现方法。 关键词:数码相机 TVP5040 TMS320DSC 系列DSP CCD目前,数字类消费电子产品的需求率增长惊人。在这些产品中,成像和视频类产品比重很大。在这些影像产品中,无论是数码相机还是内置数码相机的可拍照手机,或者其它数字成像和视频终端产品,都需要成像和视频处理前端与其协同工作。德州仪器公司(TI)在推动新兴消费类产品的高级图像应用方面及时跟进,发布了目前业界性能最为卓越的基于数字信号处理器(TMS320DSC系列DSP)的解决方案。这种低功耗、完全可编程的DSP解决方案,使实时视频功能在成像终端上的应用成为可能。TMS320DSC系列芯片在一个单一器件中集成了两项功能:超低功耗的TMS320C5000用来进行实时媒体处理;一个ARM7TDMI RISC处理器以实现系统控制功能。可编程的硬件多媒体加速器可以进行并发性处理,以增强专用成像和视频性能。TI还提供了一系列成像和视频处理前端产品,可与TMS320DSC系列DSP进行无缝工作。TVP5031、TVP5040和TVP5145使用户能够将模拟视频信号转换成TMS320DSC系列芯片可以处理的数字数据。1 数码相机的成像和视频处理前端数码相机市场通常被划分为高端(400万像素以上)、中端(330、210万像素)与低端(百万像素以下①三种档次。针对不同的市场,大部分厂商会根据CCD和CMOS的差异而采取不同的解决方案,而采用TMS320DSC系列DSP的数码相机解决方案则可兼顾。从入门产品到最高级设计的整个相机系统或其它影像产品,都可由这个系列DSP的可编程能力而轻松实现,这是其优势之一。其次,成像和视频处理前端TVP5031、TVP5040和TVP5145的可编程能力,使得开发者可以通过更新的算法和标准来升级或更改模块前端的处理。
一般来说,数码相机的成像和视频处理前端主要是镜头模块(包含CCD传感器、镜头和马达)与模拟前端电路(AFE)。本文所述的成像和视频处理前端与专用数字处理器TMS320DSC的接口设计如图1所示。驱动电路和时序生成器件产生CCD或CMOS所需要的时钟信号,模拟前端的作用是将图像传感器输出的模拟图像信号钳位放大,并完成A/D转换,这里采用TVP5040。TMS320DSC系列DSP含有图像处理和时序控制电路,通过I/O接口可以控制时序产生,通过CCD控制器可以正确接收垂直同步(VD)和水平同步(HD)信号。经过相关配置以后,DSP就可以接受TVP5040输出的CCD原始数据了。2 NTSC/PAL数字视频解码器TVP5040TVP5040作为一款高质量单芯片数字视频解码器,可能很方便的将模拟视频信号转换成数字视频。它包括业界领先的2个10位高速2x过抽样A/D转换器。接受标准的NTSC/PAL制式的复合视频信号和S-Video信号输入,输出格式可以是8位、10位、16位或20位4:2:2(YcbCr)子采样格式,也可以是8位或10位ITU-RBT,656定义的标准输出(带嵌入同步)。采样可以是矩形像素或者遵循ITU-RBT.601协议。TVO5040利用德州仪器的专利技术,对那些微弱、不稳定的信号进行捕捉,并去除噪声。其三线互补自适应梳状滤波器,可以降低色度和亮度的交叉影响。利用所支持的主机端口和接口I2C、3个并行主机接口(PHI)或VIP模式,可对视频特性,如色调、对比度和饱和度等进行编程操作。TVP5040产生同步、消隐、场和锁存信号,以及数字视频输出。同时,具有先进的垂直消隐区间数据恢复功能,内置FIFO可存储高达14行的图文电视数据。TVP5040主要包括以下模块:*模拟信号处理器和A/D转换器(AGC,AD);*Y/C分离电路(Luma/Chroma separation)*色度处理(chrominance processing)*亮度处理器(luminance processing)*时钟处理与节电控制;*输出格式化器(outputformatter);*主机端口接口(interface);*VBI数据处理器(VBI);*增强型Macrovision检测(Macrovision detection)。
一种数码相机成像和视频处理前端的设计 :
模块功能如图2所示。TVP5040由一组内部寄存器初始化并控制,它们设置所有的操作参数。为了能够正确设置寄存器的参数,主机在上电复位时,必须向TVP5040下载微代码,以使TVP5040的内部微处理器对内部寄存器编程。由于微代码较大,TVP5040提供了不同的主机端口接口,包括I2C端口(I2C Interface)、3个并行主机接口(PHI Interface)和视频端口接口(VIP Interface)用于下载和进一步的配置。主机接口用于初始化内部微处理器,读写状态寄存器以及访问分片VBI数据(sliced VBI data)。这些接口模式是在上电复位或是组合使用GLCO、PALI和FID引脚复位时确定的。外部控制器通过标准的主机端口接口与TVP5040通信。TVP5040有一个内部微处理器,还有相连的100K的指令RAM。微处理器控制芯片的功能包括PLL操作、AGC、同步和寄存器配置等。这种可编程结构使得TVP5040可以利用更新的算法来提高性能。每次上电启动的时候都要下载用于内部微处理器的微代码。控制每行像素数的采样频率是不同的,这取决于视频格式和标准。TVP5040的视频端口输出格式时序如图3所示。其它还有水平、垂直同步以及场同步信号的时序图,限于篇幅,就不一一列出了。3 TMS320DSC系列DSP的CCD控制器TMS320DSCX系列DSP的图像功能单元CCD控制器为CCD和CMOS图像传感器提供了必需的逻辑,对逐行和隔行扫描CCD或CMOS图像传感器给予了很好的支持。CCD控制器可以编程控制,有20个寄存器需要设置,由TMS320DSCX控制,能支持高达4096×4096像素的CCD。它有以下几部分功能:CCD接口、数字钳位、时序发生以及输出格式化,如图4所示。
论文一种数码相机成像和视频处理前端的设计
CCD控制器采集处理CCD图像传感器的数据。CCD所需的A/D转换和时序生成由外部芯片提供。CCD时序生成器(CCD timing generator)可以向外部时序产生电路提供HD/VD信号,也可以接收外部传来的HD/VD信号并与其保持同步。CCD控制器最高可以处理12位宽的图像数据,可以支持高达30MHz的点时钟。这里采用TVP5040生成CCD控制器所需时序,并传送HD/VD、场ID和像素时钟信号。钳位电路(clamper)采样CCD黑像素的数字,然后每个像素的值都减去这个黑电平值。用户可以通过寄存器设置黑电平像素的位置,用于求黑像素的数量(8个或16个)。另外,也可以将黑电值设置成一个常数。输出格式化器模板(output formatter)提供反混淆滤波(anti-aliasing filter)、A-律压缩和水平、垂直降采样。反混淆滤波由一个简单的三阶滤波器构成。A-律表压缩将10位以上的钳位后数据压缩成8位。最后是一个可编程降采样模板,从每8个像素中抽取N个像素。CCD控制器提供2个数据通道。在通过(passthrough)通道时,8、10、12位的像素值被保存到1个16位SDRAM字的高位,没有使用的低位填入0。数据存入SDRAM时,每次保存32位,即2个像素,其中左边的象素保存到32位的低16位。在数据压缩通道,图像数据的高10位被压缩成8位,然后每4个像素存入SDRAM的一个32位字。4 DSP与TVP5040的硬件连接及软件实现4.1 硬件连接考虑到TMS320DSCX的CCD控制器只能接收12位宽的数据,在TVP5040端决定采用10位YUV 4:2:2的视频输出格式,则TMS320DSCX与TVP5040的硬件连接如图5所示。
一种数码相机成像和视频处理前端的设计 :
由于TVP5040输出10位数据,所以本设计保留最高位,低两位接地或者悬空。TMS320DSC接收 TVP5040的VD、HD以及场信号并与其保持同步。图像数据输入TMS320DSC系列DSP时,在输入点时钟的上升沿和下降沿被锁存,可通过寄存器DET设置。CCD控制器可以将数据直接存入SDRAM,也可以通过预览引擎(preview engine)Burst压缩单元将数据压缩后存入SDRAM。TVP5040输出的写信号(WEN)用于从CCD接口直接将数据写入SDRAM,可通过EWEN位进行设置。当WEN信号为高读写位(RDWE),即位是“1”时,图像数据就载入SDRAM。需要注意的是,TVP5040必须外接14.31818MHz的晶振才能保持正常的工作频率。4.2 软件实现首先需要初始化TVP5040,将微代码通过TVP5040的I2C主机端口下载到微处理器中。Void TVP5040INIT(void){resetTVP()//首先将TVP5040复位DELAYTIME; //延时,下载代码需要时序稳定MicrocodeDown()//下载微代码RestartMicroprocessor()//下载完后,需要重新启动5040的微处理器TimerWait(5)//微处理器重新启动需要等待5msPatchTVPRegister()//内部寄存器处于默认状态,需要重新设置}然后需要设置CCD控制器以获取一帧图像数据并送入SDRAM。Void main(){TVP5040INIT()//初始化TVP5040SdramInit()//初始化SDRAMCCDCInit()//初始化CCD控制器CCDCSetLinePerFrame()//设置每帧图像的行数CCDCSetRawDataMode()//设置内部生成时序信号的宽度、极性、位置和方向CCDCGetFrame()//获取一帧图像数据送入SDRAM}
然后,就可以对SDRAM中的图像数据进行处理了,比如进行图像的压缩或增强处理等,这些超出了本文的讨论范围,就不多述了。5 结论上述系统在数码相机设计方案中取得了非常好的效果。实践证明,这种高性能、可编程的、基于DSP的解决方案,使得产品的开发和应用变得更加容易,为产品更快的进入市场奠定了基础。
一种数码相机成像和视频处理前端的设计 :