利用FPGA+DSP相配合的全景视觉系统方案设计详解

网友投稿 351 2024-03-08


基于单相机的全景视觉系统是利用凸面镜反射四周图像进行定位,在计算资源有限时是一种较好的选择,且视觉导航等方向的应用也成为一种最实用的方法,这种方案虽然视野开阔,但获取的信息有限,真实的系统中很难应用。随着芯片计算能力的不断提高,基于多通道的全景视觉系统已逐渐成为可能。本文介绍的智能车多通道全景视觉是指以观测点为中心,多个相机可同时观测车辆的前中、前左、前右、后左、后右和顶上6个方向的景物。该系统中的6台数字相机中5台分布在车辆的侧面,1台在顶部,可以得到车辆周围全景360°的图像。该系统每个相机的分辨率为百万像素,即1 280×1 024,帧率为30 f/s,即便图像为8 bit单色,系统的总数据率也高达200 MB/s以上。同时,6个相机图像需要预处理,投影到同一坐标系,或者拼接成单幅完整图像才能满足智能车导航系统的要求,这些涉及到大量复杂计算。针对这些要求,该系统的硬件处理部分利用了DSP和FPGA芯片各自的特长,选用高速DSP+FPGA[3-6]的方案,而DSP方案也是海量图像处理中普遍应用的。高性能通用C6416 DSP芯片,配合FPGA进行高度并行数据处理,可实现高速实时的视觉图像处理。这种方案的优点在于,不仅可以利用DSP的高速处理能力,同时利用FPGA的控制能力和在高度并行化数据处理方面的优势,相比其他方案更容易满足全景视觉系统所需要的高度实时处理。

1 系统总体方案设计

利用FPGA+DSP相配合的全景视觉系统方案设计详解

为适合高速图像采集,本系统选用CMOS传感器,CMOS的一个优点是数据读取速度快。系统由高速CMOS相机、基于CamLink技术的图像读取、FPGA+DSP的图像处理三部分构成,如图1所示。从图1可以看出,该系统有两片FPGA,图像读取模块中的FPGA1负责从CMOS相机抓图和通讯控制,FPGA2则辅助两片DSP进行高速图像处理,实现同时对6个相机图像的实时处理。

逻辑控制芯片FPGA1选用XILINX公司的XC3S1000LFG456作为视频数据采集控制芯片,该芯片是Spartan3低功耗系列的一种,具有1 M个逻辑门,24个18×18乘法器及丰富的片上存储空间,足够进行视频采集的同步逻辑控制。并行计算FPGA选用XILINX公司Virtex-4系列中的XC4VFX60-FF1152,内部有4 Mbit RAM,56 880个逻辑门和128个XtremeDSP模块,足够进行大量高速数据处理,特别是片上18 KRAM模块工作在500 MHz,支持真正的双端口读写同步操作,为该芯片作为芯片间高速数据交互提供了资源。2个协处理DSP芯片为TI公司高性能C6416,拥有8个并行处理单元,工作频率为600 Hz,最高处理速度可达4 800 兆指令/秒(MFLOPS)。

系统设计采集图像大小为1 280×1 024像素,最高速度可达每相机60 f/s的实时采集。6路摄像头输出的数字视频信号经过FPGA1进行同步分离后,进入输入端高速数据缓冲区。系统采用两片ZBT SRAM进行乒乓数据采集,当一帧图像采集完,FPGA1通知FPGA2进行数据转移,FPGA2将数据预处理后由DSP经EDMA保存到SRAM后等待进一步处理。

2 多通道数字图像采集

由于智能车的目标是在公路上行驶,该系统需要处理场景中快速运动的物体,要求图像采集模块必须足够快地从相机转移出帧数据,以便对快速运动的物体轨迹进行记录,因此,相机模块的处理速度是决定该系统是否达到要求的重要一环。由于相机技术的快速发展,已经能从市面上买到足够快的传感器来捕获高速运动的物体,如车辆。

2.1 图像抓取模块

MT9M413是一种分辨率为130万像素1 280×1 024的CMOS传感器,最高可实现500 fps的采集速度。而MT9M413内部集成有10 bit A/D转换器,可直接输出3.3 V的数字信号,无需电平转换电路,简化了系统的设计。MT9M413可以工作在灰度或彩色模式下,但是却需要不同的偏置参考电压,两片数模转化芯片DAC6573用于生成该偏置电压。图2给出了相机模块的框图。

高速相机模块主要包括以下三部分:

(1)传感器部分:包括高速像素时钟下的光电信号转换传感器。

(2)信号分离:预先编写好在FPGA1内部的程序,用来产生传感器模块和数据接口所需要的控制信号。

(3)接口板:将数字信号转换成高速LVDS信号对,并从主处模块接收控制信号。

该模块的三个部分通过高速Samtec连接器(QTH-090-01-L-D-A)连在一起,以增加系统的灵活性。主处理板与高速相机模块间采用CamLink协议连接,以满足系统很高的带宽。根据采集图像的大小、帧率和数据位精度,CamLink电路可配置成基本、中等、全幅3种模式,由FPGA1中的程序控制。FPGA1的另一个任务是进行视频信号的同步、通知FPGA2设置参数,如视频开窗、帧率、曝光时间等。

2.2 FPGA控制模块

系统的逻辑控制芯片是FG456,其主要工作是控制输入/输出帧存,以便通知主处理芯片及时将存在ZBT SRAM中的图像数据读出,片上可编程时钟PLL用来产生驱动该FPGA所需的不同时钟,FPGA内部的计数器通过改变加法器不同的进位信号控制采集图像的大小。

FPGA1接收到来自CMOS传感器的视频同步信号后,开始将原始像素数据按照CamLink协议打包通过高速Semtec连接器送到下一个模块中的FPGA2。

2.3 ZBT-RAM中的数据乒乓

系统设计的视频信号采集能力是,从CMOS采集到1 024×1 024大小的数字图像,并通过两片Zero-bus turnaround(ZBT) SRAM作为数据乒乓的帧缓存,ZBT SRAM没有总线延迟,不需像DDR那样必须通过FIFO进行管理。ZBT SRAM为系统提供了最大的吞吐量,从而提供了最大的系统带宽[8-9]。为保证系统的高速性能,FPGA1的3个内部时钟管理模块DCMs用来产生ZBT-RAM需要的时钟,一个为控制时钟,另外两个为视频输入的banks的信号。系统中的两片1 M×36 bit ZBT SRAM,每片ZBT SRAM可同时接收两路视频的满帧数据采集。如果两路信号都为60 f/s,则每秒采集120 MB数据,而ZBT SRAM的工作频率为250 MHz,最大数据吞吐为4.5 GB/s,完全满足数据采集速度系统的要求。

3 芯片间通信

多芯片协处理系统中最重要的一个方面就是芯片间数据通信的效率,该效率直接影响系统的运行效率。而数据延迟和传输带宽,是最值得关注的两个方面。本系统采用多种方式进行数据传输,提高了系统的灵活性。

3.1 FPGA2与DSPs间的数据通信

根据应用特点和系统接口,本系统采用两种方式连接FPGA和DSP:32 bit EMIF-A and McBSP0。选用32 bit EMIF-A作为DSP与FPGA间进行高速数据通信主要原因是传输速率高,可充分利用TMS320C6416内EDMA方式传输数据的优点。如图3所示。

FPGA内部的EMIF& FIFO接口模块用于转换DSP的EMIF信号,将数据转移至接收FIFO。当接收满一帧数据后,FPGA的计算内核开始从该接收FIFO获取数据并处理,然后将处理完的数据写到发送FIFO。发送FIFO数据满时,启动DMA中断将数据传送到DSP片内Cache。由于该EMIF-A是工作在133 MHz的32 bit总线,峰值数据率可达532 MB/s。

FPGA2与DSPs间的第二种通信方法是McBSP(Multichannel Buffered Serial Port),两个DSP的McBSP0连到FPGA。McBSP是一种全复用串行口,工作频率为125 Mb/s。进行串行通信时,具有独立的帧同步FSX,FSR和位同步时钟CLKX、CLKR,提供系统时钟信号为CLKS。在从模式下,可由外部时钟驱动,主模式下可由McBSP采样时钟驱动。接收和发送也很简单,各需要一个数据线:DR,DX。McBSP通信协议简单,可节省FPGA的资源。

3.2 两片DSP间的数据通信

两片DSP之间的通信也有两种通信方式。第一种通信是通过McBSP接口。为了获得最大的数据传送率,将两片DSP的McBSP1和McBSP2连接起来,这样每个DSP可以做为时钟主控和帧主控。换句话说,同一片DSP的一个McBSP接口作为主控在通信时产生数据发送时钟和帧同步时钟,同时另外一个接口作为从控等待控制信号以接收数据。图中,当DSP-A的McBSP1为主控发送数据时,McBSP2为从控;同时DSP-B的McBSP2为主控,DSP-A的McBSP1等待从DSP-B的同步信号以接收数据。

除了McBSP之外,两片DSP间还通过EMIF-A进行高速连接映射,FPGA内部的32 bit双向接口通过FIFO实现,如图4所示。这种基于FIFO的双向数据传送口支持DSP间复杂的数据交换和控制消息传递。DSP的EMIF-A工作频率为133 MHz,数据传输时,FPGA的可编程FIFO阈值中断支持DSP间通过EDMA方式。

3.3 与上位机PC的数据通信

为了实现从PC进行远程控制,特别是用无线网络连接控制通信,系统特别设计了以太网接口、USB2.0接口和PCI接口。网络连接是通过FPGA2的标准GMII接口,以太网PHY连接到外部RJ45。GPIO接口配置成USB2.0数据接口,而4个PCI则是将PCI芯片连接到FPGA2内的MGT模块来实现的。

4 高速并行数字图像处理结果

在智能车视觉系统中,除了要预先将多通道画面进行拼接等预处理外,更重要的是完成自动导航和目标跟踪,这些都牵涉到海量数据流的实时传输和运算。本次实验为基于特征点的运动物体追踪,包括以下步骤:(1)背景学习;(2)全画面运动估计、图像差分;(3)差分部分的特征提取;(4)特征点的帧间运动估计;(5)基于K-means法的特征点分类。

基于全景画面的特征点跟踪需要对多通道视频同时进行运算,运算过程复杂,包括跟踪前与跟踪后的处理任务,如何将这些任务分配到不同的芯片上并使板载资源做到任务间最大共享,需要根据任务强度估计后放到不同的芯片上。同时,由于μC/OS是一种可移植性强、代码微小的实时、多任务操作系统,适合在本系统的DSP上运行。移植μC/OS操作系统到一个DSP上,将该DSP作为主控DSP进行任务分配,本次实验的各个任务分配如图5所示。由于两个DSP协助FPGA2进行运算具有强大的计算能力,可进行多目标跟踪,FPGA2承担了大量的并行数据运算,如运动探测包括的差分、运动估计、图像拼接,而DSP则承担特征点提取和追踪这些不能并行运算的部分。实验结果表明,6路视频采集后的全景图像上可作实时多目标追踪。

本系统通过选用FPGA+DSP相配合的方式,同时利用了两种芯片的性能优势,既保证系统的执行速度,也能保证可靠的逻辑控制。该系统实现了6路1 M大小视频图像信号的同时采集和处理,由FPGA1对系统的运行逻辑进行控制,通过优化在DSP上运行的图像处理程序,可实现智能车导航应用中全景图像范围内的目标追踪。该系统还可作为一个独立的图像处理系统,后续通过添加其他如立体视觉和光学跟踪等的算法,形成其他多方面的图像应用研究平台。同时该方案也为其他基于多DSP和FPGA混合图像处理平台设计提供了参考。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于NI LabVIEW机器人起步包建立一个移动式机器人
下一篇:桁架机器人的发展背景
相关文章

 发表评论

暂时没有评论,来抢沙发吧~