DM642有3路视频口,VP,每路都有20路数据信号VPxD[19:0],2路时钟信号VPxCLK[1:0],3路控制信号VPxCTL[2:0]。每个视频口可划分为A、B两路通道,每个通道可以配置为视频输入或输出。不过A、B两个通道在使用过程中必须设置为相同类型的输入或输出,不能某个通道配置为视频输入,另一个通道配置为视频输出。引脚与McBSP的引脚产生了复用。
DM642有很多视频参数相关,通过配置这些寄存器,主要有:
a.控制寄存器
b.视频捕获寄存器
c.视频捕获FIFO寄存器
d.视频显示寄存器
e.视频显示FIFO寄存器
视频输入口支持ITU-BT.656视频数据流。ITU-BT.656包括图像亮度Y,色差信号Cb、Cr、信息。Y、Cb、Cr在ITU-BT.656视频数据流中的比列为4:2:2,数据分为8位或10位2种。采用隔行扫描技术,包括上下两场,根据场频和每场图像包含的行数,可分为4中格式。BT.656的数据包使用固定格式,以行SAV(4个字节)信号开始,EAV(4个字节)信号结束。SAV和EAV的前3个字节是固定数值0xFF、0xFF、0x00,第4个字节(XY)表示该行信号在整帧图像中的位置。
以PAL制720/576为例:
频率/线数 | 奇数场线数 | 偶数场线数 | 像素数/行 | 场频 |
50Hz/625线 | 288 | 288 | 720 | 50 |
DM642还支持原始RAW视频数据捕获,DSP直接和外部使用的图像传感器系统相连。TSI用于处理MPEG-2格式的视频数据流。
与DM642视频口连接的FIFO大小为5120字节。系统使用A、B两个通道时,每个通道的大小为2560.对于BT565,视频口FIFO存储器划分为3个部分,其中1280字节被亮度分量Y对应的数据占用,640字节被Cr占用,剩下的640被Cb占用。当工作于单通道模式是,通道占用的FIFO大小为5120字节。
几个重要的寄存器:
1.视频口控制寄存器VPCTL
2.视频口状态寄存器VPSTA
3.视频口中断使能寄存器VPIE
4. 视频口中断状态寄存器VPIS
视频接口FIFO
视频接口里的FIFO用来存储进入或送出的数据,并通过DMA将数据搬运到外部或片内存储器。当DMA内的数据达到(捕捉模式)自己给FIFO设定的阈值或减到(显示模式)阈值时DMA事件产生。
DMA接口
视频口的数据传输,主要是传输到外部存储器,如SDRAM中。DMA的数据传输是基于缓存的阈值(buffer thresholds)的。视频口本身并不能诱发数据传输,因此它不能根据缓存的空/满的状态来调整传输的大小。这意味着DMA传输的大小参数是在用户的应用程序中设定的。推荐使用的传输大小为一整行数据(The preferred transfer size is often one entire line of data ),因为这种方式有很多的灵活性。
在捕获模式下,只要当在缓存中的采样个数达到了阈值,DMA请求就会发生。为了确保捕获的场/帧数据被完整的移出缓存,传输的大小(transfer size)必须等于设定的阈值,并且场/帧的数据必须是传输大小的整数倍。
对于视频显示操作,也是类似的。只不过是减到阈值时。
视频捕获FIFO设置
因为有好几种捕获方式,这里就以最常见的BT.656方式为例:
A、B通道的FIFO是独立的。每个通道的FIFO又进一步分为Y,Cb和Cr缓冲。并且拥有独立的指针和读寄存器。如下图所示。
以A通道的FIFO为例:
RAW video和Y/C视频捕获的FIFO有所区别。详见spru629f。
视频显示FIFO配置
和视频捕获的FIFO配置类似,这里也以BT.656为例:
DMA操作
1.捕获DMA事件的产生
数据计数器(data counter)记录被DMA读取的数据。当一个新的DMA事件产生时,counter从VCTHRLDn装载,该counter在每次DMA从FIFO读取双字(double-word)时做减法计数。当counter计数到0时DMA事件结束。
BT.656和Y/C模式有三个FIFOs,每个FIFO都有各自的DMA事件相对应。