登录 注册
购物车0
TOP
Imgs 行业资讯

0

TI达芬奇系列芯片DM368在视频前端信号采集中的应用分析

2021-03-19 11:44:49

本文详细介绍了DM368视频前端支持的输入数字信号格式。并以MT9D131和PCVGA信号为例,将两者的时序和DM368视频前端配置参数一一匹配。同时介绍了如何合理配置和使用VD中断,为DM368用户正确采集数据提供了参考。本文内容也可以给DM8127、DM385芯片的用户在使用视频摄像并行输入口采集时提供帮助。
1前言
DM368是TI达芬奇系列芯片中的一颗,被广泛的使用在IPNC(IPnetcamera网络摄像机)的应用领域里。对于IPNC应用,首先就需要将视频信号送入DM368里面,这就需要使用到DM368的视频前端(VPFE-VideoProcessingFrontEnd)。DM368的视频前端主要包含了IPIPEIF(ImagePipeInterface图像管道接口),ISIF(ImageSignalInterface图像信号接口),IPIPE(ImagePipe图像管道),Resizer(缩放器)四个部分。
IPIPEIF功能是数据通路连接,以及把数据整合成后端模块接口可以接入的格式/大小。ISIF是视频信号的输入口,可以支持Bayer格式的RAW数据(原始数据)或者是YUV的数据的输入。IPIPE主要是做ISP的处理。Resizer起到了对图像缩放和图像存储格式转换的作用。本文是基于IPIPEIF将外部并口输入数据送入ISIF处理的基础上展开讨论。
TI达芬奇系列芯片DM368在视频前端信号采集中的应用分析
TI达芬奇系列芯片DM368在视频前端信号采集中的应用分析
图1.视频处理前端
如何将输入信号和DM368视频前端参数一一对应?如何获取外部的RAW数据以及RAW转换成的对应的YUV数据?如何只采集或者处理图像中的一部分区域?如何配置VD中断触发的时机?在VD中断里面我们应该处理什么?希望在阅读完本文后,你可以找到相应的答案。
2DM368的前端信号输入
如果用户外接传感器(sensor)输出RAW数据或者YUV数据到DM368,为了采集到正确的数据,我们需要了解DM368的视频前端是如何解读信号,以获得正确的数据。如果用户使用的是FPGA输出信号到DM368,那就更需要了解DM368视频前端支持的信号格式,正确输出DM368可以接收的信号。
2.1输入信号的物理连接
DM368视频前端支持并口的信号输入,包括PCLK(像素时钟),8到16位数据线,HD(行同步)信号,VD(场同步)信号。可以支持最多16位的Bayer格式的RAW数据输入。也可以支持内嵌同步或者外部信号同步的8位或者16位的YUV422信号输入。如果是内嵌同步,则不需要接入HD信号和VD信号。对于输入内嵌同步的信号,DM368硬件可以自动解析出数据上嵌入的同步信息给芯片内部使用。DM368的PCLK最高可支持120MHz,可以支持720p60、1080p30等分辨率的输入,也可以支持较大分辨率,例如五百万、八百万等分辨率,但帧率是非实时(小于30帧)的。
DM368的视频前端ISIF可以支持master(主)模式或者slave(从)模式。所谓master模式就是PCLK、VD和HD由DM368向外发出。而slave模式是外部设备提供PCLK、VD和HD信号给DM368。在实际的应用里面绝大部分的情况都使用采slave模式。
2.2DM368视频前端对输入信号的解析
2.2.1ISIF对信号的解析
无论是master模式还是slave模式,DM368的视频前端接口ISIF对于信号的处理是一样的。

图2.帧图像格式
图2的时序通常认为水平同步和垂直同步信号都为高电平有效,需要配置ISIF的MODESET.HDPOL=MODESET.VDPOL=0。在这种情况下,水平同步信号宽度为HDW(HDpulsewidth),以像素为单位。垂直同步信号宽度为VDW(VDpulsewidth),以行数为单位。PLLN(Pixelsperline)是每行的像素个数,也就是相邻两个行同步信号间的像素个数。LPFR是Linesperframe的缩写,表示每帧数据有多少行,也是相邻两个场同步信号之间的行数。在slave模式下,PLCK/HD/VD都是外部输入的,ISIF寄存器HDW/VDW/PLLN是不需要配置的。图2中的灰色区域我们叫做有效数据区域,也就是用户希望获得的有效数据。而斜线阴影区域就是消隐区域。消隐区域在视频前端处理中也是必不可少的部分,关于这点我们会在第3节详细介绍。
如果你使用的是单次(oneshot)模式,或者在连续(continuous)模式下,你需要保存RAW数据,那你就需要配置SPH(Startpixelhorizontal水平方向起始像素),SLV0/1(Startlinevertical-field0/1垂直方向奇偶场起始行),LNH(Numberofpixelsinline每行像素个数),LNV(Numberoflinesvertical垂直方向行数)。这是为了告诉DM368你需要把输入的图像的哪部分写到DDR。也就是说你可以选择只输出有效数据里面的某一部分到DDR。
SPH告诉硬件在同步信号有效以后从哪个像素开始写入DDR。请注意这里的HD信号有效起始点是指同步信号有效的沿,不是从同步信号脉冲结束后作为计数像素的起点。例如,如果HD信号高电平有效,就是HD上升沿后开始计数,LNH个PCLK(也就是像素)后将接收到的数据写入DDR。同样SLV0/1告诉硬件从哪行数据开始需要写入DDR,LNV决定了写多少行数据到DDR。所以调整ISIF的SPH,SLV0/1,LNH和LNV就可以调整保存到DDR上的RAW数据在原图中的位置,以及RAW数据段大小(长宽)。如果不需要写入RAW到DDR,那就不需要配置SPH,SLV0/1,LNH和LNV。
图2的时序如果配置为同步信号低电平有效也是可以的。但是如果配置为低电平有效,相关的参数就发生了变化。例如水平同步信号宽度就变为PPLN-HDW,垂直同步信号宽度为LPFR-VDW。SPH和SLV0/1都变成了0。所以在配置ISIF相关寄存器前首先需要把同步信号的极性确定下来。要采集到正确的数据,DM368采样数据时机必须和传感器输出数据的时机匹配。在DM368上默认是PCLK的下降沿采样数据。用户可以通过修改SYSTEMmodule寄存器VPSS_CLK_CTRL的PCLK_INV[2]位来改变PCLK采样沿。
2.2.2IPIPE和Resizer对信号的解析和处理
如果ISIF直接通过IPIPEIF连接到IPIPE,那所有的图像数据,也就是图2里的globalframe都会传输到IPIPE。在IPIPE里面用户需要配置SRC_HPS(HorizontalStartPosition),SRC_VPS(VerticalStartPosition),SRC_HSZ(HorizontalProcessingSize)和SRC_VSZ(VerticalProcessingSize),来确认globalframe里面的哪一部分需要IPIPE来处理。
在resizer的模块里面,也有SRC_HPS,SRC_VPS,SRC_HSZ和SRC_VSZ可以配置resizer处理的图像的区域。如果IPIPE的输出到resizer已经是需要处理的区域,那SRC_HPS,SRC_VPS就可以配置为0,而resizer的SRC_HSZ,SRC_VSZ等于IPIPE的SRC_HSZ,SRC_VSZ。如果ISIF的输出是通过IPIPEIF直接到resizer(没有经过IPIPE),resizer的SRC_HPS,SRC_VPS就不能配置为0了,需要用户根据需要处理的图像合理的配置resizer的SRC_HPS,SRC_VPS寄存器。
2.2.3RAW数据和YUV数据的匹配
在连续模式下,用户同时获得resizer输出的YUV和ISIF输出的RAW,时常有用户发现自己保存的RAW数据和Resizer输出的YUV数据不匹配,有一定的偏移。这种问题的原因是IPIPE,Resizer里面的SRC_HPS,SRC_VPS,SRC_HSZ和SRC_VSZ和ISIF里面的写入DDR时候配置的偏移和大小不匹配。IPIPE/Resizer和ISIF的寄存器本身是没有直接关系的,这就需要用户将它们一一对应,匹配起来。例如ISIF输出的数据输入给IPIPE,为了让RAW和YUV匹配,需要ISIF的SPH等于IPIPE的SRC_HPS,ISIF的SLV0/1等于IPIPE的SRC_VPS,ISIF的LNH等于IPIPE的SRC_HSZ,ISIF的LNV等于IPIPE的SRC_VSZ。而Resizer的SRC_HPS,SRC_VPS需要配置为0,而resizer的SRC_HSZ,SRC_VSZ要等于IPIPE的SRC_HSZ,SRC_VSZ。
在单次模式下,也就是数据通路ISIF-》DDR-》IPIPEIF-》IPIPE(Resizer),由于IPIPE的输入是DDR上的RAW数据,有效数据的获取已经在ISIF输出到DDR配置里面实现了,IPIPE里面的处理数据的起始位置就可以是(0,0)了。
这样无论是在连续模式还是在单次模式下,RAW数据和RAW输出转换出的YUV数据就可以完全匹配了。

高都电子,为客户创造价值!

双面板免费加费,四层板加急打样,厚铜电路板打样

Xcm