简介
视频系统,目前已经深入消费应用的各个方面,在汽车、机器人和工业领域日益普遍。其在非消费应用中的增长主要源于HDMI标准以及更快、更高效的DSP和FPGA的出现。
本文将概要讨论利用模拟或HDMI摄像机实现立体视觉(3D视频)的各种要求。文章将描述一个基于FPGA的系统,它将两个视频流结合成一个3D视频流,通过HDMI]
概述
立体视觉要求使用两台摄像机,二者相距大约5.5厘米,这是人类双眼之间的典型间距,如图1所示。
图1 支架上的两台摄像机(已针对立体视觉对齐)
图2所示高级功能框图使用了采用相同视频标准的两台同步摄像机、两个视频解码器和一个FPGA。为了确保完全一致的帧速率,摄像机必须行锁定到共同的参考时序。如果没有同步,不使用外部存储器,就不可能将输出组合起来并存储为完整的视频帧。
图2 高级功能框图
图3显示两个行锁定视频流被合并成一个立体图像。图4显示,如果不将整个视频帧保存在外部存储器中,则异步视频流无法合并。
图3 合并两个同步视频流
图4 如果不使用外部存储器,则无法合并异步视频流
然后,两台同步摄像机的输出由视频解码器(如ADV7181D,]
视频解码器和HDMI接收器都采用内部锁相环(PLL)在其输出总线上产生时钟和像素数据。这意味着,在数字化模拟视频,或者接收HDMI流时,将为两台摄像机产生两个独立的时钟域。另外,两个视频流可能存在对齐误差。这些时序差异和对齐误差必须在后端器件(如FPGA)中进行补偿,先将数据带至共同的时钟域,然后再将两个视频图像结合成单个立体视频帧。然后,通过一个支持3D的HDMI]
时钟架构
视频解码器有两种完全不同的时钟源,具体取决于其是否锁定。当视频PLL被锁定至输入同步信号时——水平同步(视频解码器)或TMDS时钟(HDMI)——结果会产生一个锁定至输入视频源的时钟。当视频失锁时,或者当PLL处于强制自由运行模式时,视频PLL不会锁定至输入同步信号,结果会产生一个锁定至晶振时钟的时钟输出。另外,时钟可能不会在复位后输出,因为LLC时钟驱动器在复位后设置为高阻抗模式。
因此,如果系统有两个或多个始于视频解码器或HDMI接收器的视频路径,即使将同一晶振时钟提供给两个视频解码器或HDMI接收器,仍会有两个不同频率、不同相位的不同时钟域,因为每个器件都会基于自己的PLL产生自己的时钟。
带锁定视频解码器的同步系统
典型的立体视频使用两个视频源,其中,每个视频解码器都会锁定至输入视频信号,并会基于输入水平同步或TMDS时钟产生自己的时钟。当两台摄像机同步——或行锁定至同一参考时序时——分帧线将始终对齐。由于两个独立的视频解码器会收到相同的水平同步信号,因此,像素时钟将拥有相同的像素时钟频率。这样,就可以将两条数据路径带入同一个时钟域,如图5所示。
图5 同步至同一参考源的两台摄像机。
两个视频解码]
异步视频系统
不幸的是,其中一个视频解码器可能因视频源信号质量欠佳而失锁,如图6所示;或者,摄像机因视频链路断开而失去同步性,如图7所示。这会在两条数据路径中导致不同的频率,结果又会导致进入后端中的数据量不对称。
图6 带未锁定视频解码器的行锁定摄像机
图7 带锁定视频解码器的未锁定摄像机
视频失锁可以通过使用一个中断(SD视频解码器为SD_UNLOCK,分量视频解码器为CP_UNLOCK,或HDMI接收器中的TMDSPLL_LCK寄存器)来检测,该中断会在一定延迟后介入。视频解码器集成了不稳定水平同步平滑机制,因此,视频失锁的检测可能需要两三行。该延迟可通过控制FPGA中的失锁来减少。
时钟三态模式
在设计FPGA时钟资源时,必须知道,默认情况下,许多视频解码器和HDMI产品在复位后将时钟和数据线路置为三态模式。因此,LLC像素时钟不适用于同步复位。 为了简化系统并减少合并两幅图像所需存储器,到达FPGA的数据应进行同步,以使来自第一台摄像机的第M 行第N个 像素与来自第二台摄像机的第M 行第N个 像素同时收到。
在FPGA输入端,这可能很难实现,因为两条视频路径可能具有不同的延迟:行锁定摄像机可能输出存在对齐误差的行,不同的连接长度可能加大对齐误差,而视频解码器则可能带来可变启动延迟。受这些延迟影响,采用行锁定摄像机的系统会有一些存在对齐误差的像素。
即使是行锁定摄像机也可能输出存在对齐误差的视频行。图8显示来自两台摄像机的CVBS输出端的垂直同步信号。一台摄像机(同步主机)为第二台摄像机(同步从机)提供行锁定信号。380 ns的对齐误差是清楚可见的。图9展示的是这些摄像机输出端的视频解码器传输的数据。可以看到11个像素的位移。
FPGA软件无线电开发(全阶视频教程+开发板+实例)
|