1 基于FPGA与DSP的系统实现3D视频-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA与DSP的系统实现3D视频

电子设计 来源:郭婷 作者:电子设计 2019-04-09 08:50 次阅读

简介

视频系统,目前已经深入消费应用的各个方面,在汽车、机器人工业领域日益普遍。其在非消费应用中的增长主要源于HDMI标准以及更快、更高效的DSPFPGA的出现。

本文将概要讨论利用vwin 或HDMI摄像机实现立体视觉(3D视频)的各种要求。文章将描述一个基于FPGA的系统,它将两个视频流结合成一个3D视频流,通过HDMI 1.4发射器进行传输,同时还要介绍一个基于DSP的系统,与通常需从两台摄像机接收数据相比,该系统可以节省DMA带宽。另外,本文还将描述一种方法,该方法可以实现一种并排格式,可供3D摄像机或要求3D视频的系统使用。

概述

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

图2所示高级功能框图使用了采用相同视频标准的两台同步摄像机、两个视频解码器和一个FPGA。为了确保完全一致的帧速率,摄像机必须行锁定到共同的参考时序。如果没有同步,不使用外部存储器,就不可能将输出组合起来并存储为完整的视频帧。

基于FPGA与DSP的系统实现3D视频

图3显示两个行锁定视频流被合并成一个立体图像。图4显示,如果不将整个视频帧保存在外部存储器中,则异步视频流无法合并。

基于FPGA与DSP的系统实现3D视频

基于FPGA与DSP的系统实现3D视频

然后,两台同步摄像机的输出由视频解码器(如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所示。

基于FPGA与DSP的系统实现3D视频

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

异步视频系统

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

基于FPGA与DSP的系统实现3D视频

基于FPGA与DSP的系统实现3D视频

视频失锁可以通过使用一个中断(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与DSP的系统实现3D视频

基于FPGA与DSP的系统实现3D视频

不同的连接长度

所有电气连接都会带来传播延迟,因此,要确保两条视频路径具有相同的轨道和电缆长度。

视频解码器/HDMI接收器延迟

所有视频解码器都会带来可能因启用的功能而异的延迟。另外,有些视频器件含有可能增加随机启动延迟的因素——如深色FIFO。采用视频解码器的典型立体系统的随机启动延迟大约为5个像素时钟。含有HDMI发射器和接收器的系统(如图10所示)的随机启动延迟可能为40个像素时钟左右。

基于FPGA与DSP的系统实现3D视频

对齐误差补偿

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

通过启用或禁用FIFO输出,控制模块可以维持FIFO电平以尽量减少像素对齐误差。如果采取了正确的补偿措施,则FPGA模块的输出应为与第一个像素对齐的两条数据路径。然后该数据提供给FPGA后端,以生成3D格式。

基于FPGA与DSP的系统实现3D视频

对齐误差测量

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

如果一个帧的总像素长度是已知的,则可以通过从帧长中减去计数值,从而算出负偏斜(VS2位于VS1之前)。该负值应在偏斜超过像素帧长的一半时计算。结果应用来重新对齐FIFO中存储的数据。

基于FPGA与DSP的系统实现3D视频

列表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;

/* beginning */

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;

/* ending */

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) /* counter */

if ((cnt_reset) || (reset))

cnt 《= 0;

else if (cnt_en)

cnt 《= cnt + 1;

endmodule

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

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

基于FPGA与DSP的系统实现3D视频

输入数据由共用时钟读入存储器。同步时序分析仪检查输入的同步信号,并抽取视频时序,包括水平前后沿长度、垂直前后沿、水平和垂直同步长度、水平有效行长、垂直有效行数和同步信号极化。将该信息与当前水平和垂直像素位置一起传给同步时序再发生器,这样可以生成经修改的时序,以便支持所需3D视频结构。新生成的时序应延迟,以确保FIFO含有所需数据量。

并排3D视频

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

基于FPGA与DSP的系统实现3D视频

结论

ADI公司的解码器和HDMI产品以及简单的后处理技术可以打造出真正的立体3D视频,并为其传输提供条件。如本文所示,用简单的数字模块,无需使用昂贵的存储器,即可实现3D视频。这种系统可用于需要3D视觉的任何类型的系统中,从简单的摄像机,到基于ADSP-BF609 DSP的可以跟踪物体及其距离的专业系统。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    553

    文章

    7987

    浏览量

    348728
  • FPGA
    +关注

    关注

    1629

    文章

    21729

    浏览量

    602960
  • 解码器
    +关注

    关注

    9

    文章

    1143

    浏览量

    40716
收藏 人收藏

    评论

    相关推荐

    FPGA+DSP架构的视频处理系统设计详解

    系统采用基于FPGADSP协同工作进行视频处理的方案,实现视频采集、处理到传输的整个过程。
    发表于 10-23 15:35 6373次阅读
    <b class='flag-5'>FPGA+DSP</b>架构的<b class='flag-5'>视频</b>处理<b class='flag-5'>系统</b>设计详解

    [讨论]FPGA培训—基于FPGADSP系统设计与实现

    架构、嵌入式系统、实时操作系统、数字信号处理、图像与视频处理和数字通信等,可以实现片上课程理念。七、教学大纲基于Xilinx FPGA
    发表于 07-21 09:20

    基于FPGADSP视频处理系统设计

      本系统采用基于FPGADSP协同工作进行视频处理的方案,实现视频采集、处理到传输的整个过程
    发表于 06-19 06:12

    基于FPGA+DSP架构的视频处理系统设计

      本系统采用基于FPGADSP协同工作进行视频处理的方案,实现视频采集、处理到传输的整个过程
    发表于 06-28 08:10

    一种基于FPGA+DSP视频处理系统设计

    系统采用基于FPGADSP协同工作进行视频处理的方案,实现视频采集、处理到传输的整个过程。实
    发表于 07-01 07:38

    为什么说FPGA主导了3D视频处理市场?

    和Neytiri对世界美好的愿望和共同的追求,使双方互相看到了地球人和纳威人之间不可分割的联系,而观众则通过先进的3D视频处理技术,观赏到了3D电影的逼真效果,感受到这部电影带来的震撼。那么有谁知道,为什么说
    发表于 08-06 08:26

    基于FPGA系统通过合成两条视频流来提供3D视频

    简介视频系统,目前已经深入消费应用的各个方面,在汽车、机器人和工业领域日益普遍。其在非消费应用中的增长主要源于HDMI标准以及更快、更高效的DSPFPGA的出现。
    发表于 11-03 08:00

    如何通过合成两条视频流来提供3D视频

    一种基于FPGADSP技术的实现3D视频系统的设计
    发表于 06-02 06:06

    FPGA正掀起3D电视新潮流

    FPGA正在3D电视中大显身手。各大OEM厂商都采用FPGA支持3D显示屏设计,而领先的相机和摄像机制造商则用FPGA
    发表于 01-18 07:36 686次阅读

    Lattice将在CES 2013上展示基于LatticeECP3的实时3D视频转换器

    莱迪思将在CES 2013上展示3D Impact Media的基于低密度LatticeECP3 FPGA的实时3D 视频转换器Realit
    发表于 12-18 08:53 1743次阅读

    基于FPGA系统通过合成两条视频流来提供3D视频

    基于FPGA系统通过合成两条视频流来提供3D视频
    发表于 01-07 15:00 10次下载

    2D3D视频自动转换系统

    完成系统界面的设置及控制、显示等功能,其DSP处理器实现图像分割和渲染等核心算法,实现了1个高效的2D
    发表于 03-06 14:20 1次下载
    2<b class='flag-5'>D</b>到<b class='flag-5'>3D</b><b class='flag-5'>视频</b>自动转换<b class='flag-5'>系统</b>

    基于FPGADSP技术实现3D视频系统设计

    视频系统,目前已经深入消费应用的各个方面,在汽车、机器人和工业领域日益普遍。其在非消费应用中的增长主要源于HDMI标准以及更快、更高效的DSPFPGA的出现。
    的头像 发表于 03-19 09:28 1831次阅读
    基于<b class='flag-5'>FPGA</b>和<b class='flag-5'>DSP</b>技术<b class='flag-5'>实现</b><b class='flag-5'>3D</b><b class='flag-5'>视频</b>的<b class='flag-5'>系统</b>设计

    基于AVS 3D实时解码器在 FPGA/SoC平台上的设计与实现

    AVS(audio video coding standard)工作组针对3D视频提出了双目立体视频编解码方案。以AVS双目拼接算法为核心,通过FPGA硬件加
    的头像 发表于 04-07 11:33 2680次阅读
    基于AVS <b class='flag-5'>3D</b>实时解码器在 <b class='flag-5'>FPGA</b>/SoC平台上的设计与<b class='flag-5'>实现</b>

    基于FPGA系统结合了两个视频流以提供3D视频

    本文概述了使用模拟或HDMI摄像机实现立体视觉(3D视频)的要求。它描述了一个基于 FPGA系统,该
    的头像 发表于 02-02 15:09 1918次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>系统</b>结合了两个<b class='flag-5'>视频</b>流以提供<b class='flag-5'>3D</b><b class='flag-5'>视频</b>