您的位置 首页 电路

ADI:根据FPGA的体系经过组成两条视频流来供给3D视频

文章转自ADI官网,版权归属原作者所有 简介视频系统,目前已经深入消费应用的各个方面,

文章转自ADI官网,版权归属原作者一切

简介

视频体系,现在现已深化消费运用的各个方面,在轿车、机器人和工业范畴日益遍及。其在非消费运用中的添加首要源于HDMI规范以及更快、更高效的DSP和FPGA的呈现。

本文将概要评论运用模仿或HDMI摄像机完成立体视觉(3D视频)的各种要求。文章将描绘一个根据FPGA的体系,它将两个视频流结组成一个3D视频流,经过HDMI 1.4发射器进行传输,一同还要介绍一个根据DSP的体系,与一般需从两台摄像机接纳数据比较,该体系能够节约DMA带宽。别的,本文还将描绘一种办法,该办法能够完成一种并排格局,可供3D摄像机或要求3D视频的体系运用。

概述

立体视觉要求运用两台摄像机,二者相距大约5.5厘米,这是人类双眼之间的典型间隔,如图1所示。

Figure 1
图1 支架上的两台摄像机(已针对立体视觉对齐)

图2所示高档功用框图运用了选用相同视频规范的两台同步摄像机、两个视频解码器和一个FPGA。为了保证彻底一致的帧速率,摄像机有必要行确定到一同的参阅时序。假如没有同步,不运用外部存储器,就不或许将输出组合起来并存储为完好的视频帧。

Figure 2
图2 高档功用框图

图3显现两个行确定视频流被兼并成一个立体图画。图4显现,假如不将整个视频帧保存在外部存储器中,则异步视频流无法兼并。

Figure 3
图3 兼并两个同步视频流
Figure 4
图4 假如不运用外部存储器,则无法兼并异步视频流

然后,两台同步摄像机的输出由视频解码器(如ADV7181D, ADV7182或ADV7186 用于模仿摄像机)进行数字化处;也可由 HDMI receivers(如ADV7610 或 ADV7611用于数字摄像机)进行数字化处理。

视频解码器和HDMI接纳器都选用内部锁相环(PLL)在其输出总线上发生时钟和像素数据。这意味着,在数字化模仿视频,或许接纳HDMI流时,将为两台摄像机发生两个独立的时钟域。别的,两个视频流或许存在对齐差错。这些时序差异和对齐差错有必要在后端器材(如FPGA)中进行补偿,先将数据带至一同的时钟域,然后再将两个视频图画结组成单个立体视频帧。然后,经过一个支撑3D的HDMI 1.4HDMI 接纳器(如ADV7511 或 ADV7513—也能够将其供给给DSP(如 ADSP-BF609 Blackfin®处理器)—以便进一步处理。

时钟架构

视频解码器有两种彻底不同的时钟源,详细取决于其是否确定。当视频PLL被确定至输入同步信号时——水平同步(视频解码器)或TMDS时钟(HDMI)——成果会发生一个确定至输入视频源的时钟。当视频失锁时,或许当PLL处于强制自在运转形式时,视频PLL不会确定至输入同步信号,成果会发生一个确定至晶振时钟的时钟输出。别的,时钟或许不会在复位后输出,由于LLC时钟驱动器在复位后设置为高阻抗形式。

因而,假如体系有两个或多个始于视频解码器或HDMI接纳器的视频途径,即便将同一晶振时钟供给给两个视频解码器或HDMI接纳器,仍会有两个不同频率、不同相位的不一同钟域,由于每个器材都会根据自己的PLL发生自己的时钟。

带确定视频解码器的同步体系

典型的立体视频运用两个视频源,其间,每个视频解码器都会确定至输入视频信号,并会根据输入水平同步或TMDS时钟发生自己的时钟。当两台摄像机同步——或行确定至同一参阅时序时——分帧线将一直对齐。由于两个独立的视频解码器会收到相同的水平同步信号,因而,像素时钟将具有相同的像素时钟频率。这样,就能够将两条数据途径带入同一个时钟域,如图5所示。

Figure 5
图5 同步至同一参阅源的两台摄像机。

两个视频解码 器都会收到同一同步信号,因而,它们也会确定

异步视频体系

不幸的是,其间一个视频解码器或许因视频源信号质量欠佳而失锁,如图6所示;或许,摄像机因视频链路断开而失掉同步性,如图7所示。这会在两条数据途径中导致不同的频率,成果又会导致进入后端中的数据量不对称。

Figure 6
图6 带未确定视频解码器的行确定摄像机
Figure 7
图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个像素的位移。

Figure 8
图8 行确定视频摄像机之间的380 ns视频对齐差错
Figure 9
图9 数字域中未补偿的11个像素的视频对齐差错

不同的衔接长度

一切电气衔接都会带来传达推迟,因而,要保证两条视频途径具有相同的轨迹和电缆长度。

视频解码器/HDMI接纳器推迟

一切视频解码器都会带来或许因启用的功用而异的推迟。别的,有些视频器材含有或许添加随机发动推迟的要素——如深色FIFO。选用视频解码器的典型立体体系的随机发动推迟大约为5个像素时钟。含有HDMI发射器和接纳器的体系(如图10所示)的随机发动推迟或许为40个像素时钟左右。

Figure 10
图10 流水线推迟丈量设置

对齐差错补偿

图11所示体系中,一个视频解码器对来自各摄像机的模仿信号进行数字化处理。各视频途径的数据和时钟是独立的。两条视频途径都衔接至FIFO,后者对输入数据进行缓冲,以补偿数据对齐差错。在输出数据时,FIFO运用来自其间一个解码器的共用时钟。在确定体系中,两条数据途径应具有彻底相同的时钟频率,以保证在摄像机行确定且视频解码器确定的情况下,不会呈现FIFO溢出或下溢现象。

经过启用或禁用FIFO输出,操控模块能够保持FIFO电平以尽量削减像素对齐差错。假如采取了正确的补偿办法,则FPGA模块的输出应为与第一个像素对齐的两条数据途径。然后该数据供给给FPGA后端,以生成3D格局。

Figure 11
图11 运用数字FIFO来从头对齐视频图画

对齐差错丈量

两个数字化数据流之间的对齐差错能够在视频FIFO输出端进行丈量,其办法是运用一个单一时钟计数器,该计数器在输入信号之一的笔直同步(VS)脉冲上复位。图12所示两个视频流(vs_a_in和vs_b_in)的对齐差错为4个像素。计数器运用列表1中所示办法丈量对齐差错。计数从VS1的上升沿开端,并在VS2的上升沿停止。

假如一个帧的总像素长度是已知的,则能够经过从帧长中减去计数值,然后算出负偏斜(VS2坐落VS1之前)。该负值应在偏斜超越像素帧长的一半时核算。成果运用来从头对齐FIFO中存储的数据。

Figure 12
图12 对齐差错丈量

列表1 简略对齐差错丈量(Verilog®).

module misalign_measurement(
 input wire reset,
 input wire clk_in,
 input wire vs_a_in,
 input wire vs_b_in,
 output reg [15:0] misalign,
 output reg ready);

reg [15:0] cnt;
reg cnt_en, cnt_reset;
reg vs_a_in_r, vs_b_in_r;
assign vs_a_rising = vs_a_in > vs_a_in_r;
assign vs_b_rising = vs_b_in > vs_b_in_r;

always @(posedge clk_in)
begin
 vs_a_in_r <= vs_a_in;
 vs_b_in_r <= vs_b_in;
end

always @(posedge clk_in)
 if (reset)
 begin
 { ready, cnt_en } <= 2’b00;
 misalign <= 0;
 end else begin
 if ((vs_a_in == 1’b0) && (vs_b_in == 1’b0))
 { ready, cnt_reset } <= 2’b01;
 else
 cnt_reset <= 1’b0;

 
 if (vs_a_rising && vs_b_rising)
 begin
 misalign <= 0;
 { ready, cnt_en } <= 2’b10;
 end
 else if ((vs_a_rising > vs_b_in) || (vs_b_rising > vs_a_in))
 { ready, cnt_en } <= 2’b01;

 
 if ((cnt_en == 1’b1) && (vs_a_rising || vs_b_rising))
 begin
 { ready, cnt_en } <= 2’b10; 
 misalign <= vs_a_rising ? (-(cnt + 1)) : (cnt + 1);
 end
 end

always @(posedge clk_in)
 if ((cnt_reset) || (reset))
 cnt <= 0;
 else if (cnt_en)
 cnt <= cnt + 1;

endmodule

从两个对齐视频流生成3D视频

一旦像素、行和帧数据都真实同步,FPGA能够将视频数据转换成3D视频流,如图13所示。

Figure 13
图13 用于完成3D格局的简化架构

输入数据由共用时钟读入存储器。同步时序分析仪查看输入的同步信号,并抽取视频时序,包含水平前后沿长度、笔直前后沿、水平缓笔直同步长度、水平有用行长、笔直有用行数和同步信号极化。将该信息与当时水平缓笔直像素方位一同传给同步时序再发生器,这样能够生成经修正的时序,以便支撑所需3D视频结构。新生成的时序应推迟,以保证FIFO含有所需数据量。

并排3D视频

对存储器要求最低的架构是并排格局,只需求一个两行缓冲器(FIFO)即可存储来自两个视频源的行内容。并排格局的宽度应为原始输入形式的两倍。为此,应运用一个双倍时钟来为具有双倍水平行长度的再生同步时序供给时钟。用于为后端供给时钟的双倍时钟将以双倍速率清空第一个FIFO和第二个FIFO,这样即可并排显现图画,如图14所示。并排图画如图15所示。

Figure 14
图14 运用简略的FPGA行缓冲器来并排兼并两幅图画
Figure 15
图15 视频时序下的并排576p图画

定论

ADI公司的解码器和HDMI产品以及简略的后处理技能能够打造出真实的立体3D视频,并为其传输供给条件。如本文所示,用简略的数字模块,无需运用贵重的存储器,即可完成3D视频。这种体系可用于需求3D视觉的任何类型的体系中,从简略的摄像机,到根据ADSP-BF609 DSP的能够盯梢物体及其间隔的专业体系。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/44340.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部