小识堂 | 基于FPGA+多核DSP的CameraLink工业相机实时检测与处... - 创龙小识堂 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4453|回复: 0

小识堂 | 基于FPGA+多核DSP的CameraLink工业相机实时检测与处...

[复制链接]

61

主题

61

帖子

677

积分

创龙

Rank: 8Rank: 8

积分
677
发表于 2017-4-28 09:40:37 | 显示全部楼层 |阅读模式
创龙
   
基于FPGA+多核DSP的CameraLink工业相机实时检测与处理系统
                       
一,平台简介
     
        广州创龙基于FPGA+多核DSP平台的CameraLink工业相机实时检测与处理系统,采用Xilinx 7系列FPGA与TI C66x多核DSP实现。下面先让我们了解一下这两大平台的资源及特点。
        Xilinx于1988年发明了FPGA,并自此开始提供先进的FPGA技术。 Kintex-7产品代表该技术的巅峰之作,也是最畅销的FPGA产品。该产品系列的与众不同之处在于它们实现了FPGA架构时钟速率、性能、低功耗、高速I / O、容量、安全性和可靠性的完美平衡。
        这种高度平衡的特性集合使其非常适合用于各种测试和高性能嵌入式应用,如自定义触发、硬件定时测试测序、医疗成像、大型物理控制和监测、超带宽通信和雷达、信号情报、协议感知数字测试、实时视觉算法和软件定义无线电等。
        Kintex-7产品系列FPGA基本参数如下图所示:

A

A
        下图是广州创龙基于 Kintex-7 设计的 TL-K7FMC 的FPGA板卡以及硬件框图:

B

B

C

C
其特点如下:

       a. 基于Xilinx Kintex-7 FPGA,XC7K325T FFG676,DDR3 256MB/512MB可选,NOR FLASH 256Mb,可根据开发需求自由搭配,成本可控;
      b. 工业级FMC连接器,支持高速ADC和DAC等FMC标准模块;
       c.  PCI Express 2.0标准,提供PCIe x2高速数据传输接口,单通道通信速率可高达5GBaud;
       d. Serial Rapid I/O,提供SRIO x4高速数据传输接口,单通道通信速率可高达5GBaud;
       e.  SFP+光纤接口,传输速率可高达10Gbit/s;
       f. 集成千兆网及I2C等常见接口,拓展能力强;

        TMS320C6678是TI公司2010年11月发布的KeyStone架构的8核DSP处理器,每个CorePac核的频率最高为1.25GHz,提供强大的定点和浮点运算能力,同时芯片内部集成了Multicore Navigator、RapidIO、千兆以太网、EDMA等外设,由于芯片处理能力强,外设功能丰富,而且片内集成了大量的硬件加速器,例如Packet Accelerator、Multicore Navigator等,被广泛地应用在通信、雷达、声纳、火控、电子对抗等领域。从目前的情况看,由于C6678的以上优异的特性,基于C6678的硬件和软件平台,在未来的五年到十年内,将是未来信号处理平台主流。
        C6678的资源框图如下图所示:

D

D

        下图是广州创龙基于 C6678 设计的 TL6678-EasyEVM 快速评估板以及硬件框图:
E.png

F

F
其特点如下:

        处理器架构先进:基于TI KeyStone C66x多核定点/浮点TMS320C6678 DSP,集成了8个C66x核,支持高性能信号处理应用;
        运算能力强:每核心主频1.0G/1.25GHz,单核可高达40GMACS和20GFLOPS,每核心32KB L1P、32KB L1D、512KB L2,4MB多核共享内存,8192个多用途硬件队列,支持DMA传输;
         网络性能优越:支持双千兆网口,带有由1个数据包加速器和1个安全加速器组成的网络协处理器;
        拓展资源丰富:支持PCIe、SRIO、HyperLink、EMIF16等多种高速接口,同时支持I2C、SPI、UART等常见接口;
        连接稳定可靠:80mm*58mm,体积极小的TMS320C6678核心板,采用工业级高速B2B连接器;
         
二,平台优势
     
        本系统采用的是高性能的FPGA+多核DSP的解决方案,FPGA在做高速通信和数据采集时非常灵活。虽然使用FPGA也可以进行高性能的算法处理,但是使用硬件描述语言去编写算法的话,复杂程度高,工作量大,不易调试,产品的开发周期将非常长。这时,如果为系统中添加一块专为算法而生的DSP的话,将会事半功倍。众所周知,DSP有专门为数字信号处理所设计的指令集和流水线,可以方便高效的执行浮点数和复数运算等,这样我们的理论算法就可以很方便的移植到实际的工程中,可以有效的缩短产品的开发周期。
        作为嵌入式领域的领导者,广州创龙注重产品质量和技术支持,致力于让客户减少研发成本,降低设计难度、缩短开发周期,使产品快速上市。所以,采用我们推荐的平台是无比正确的选择。
        
三,CameraLink 工业相机简介
     
        CameraLink工业相机是指具有CameraLink接口的满足工业要求的相机。CameraLink接口是由AIA协会推出的数字图像信号串行通讯接口协议,是在ChannelLink技术基础上发展而来的。
        CameraLink 标准中包含Base,Medium,Full 三个规范,但都使用统一的线缆和接插件。CameraLink Base 使用4个数据通道,Medium 使用了8 个数据通道,Full 使用12 个数据通道。CameraLink 标准支持的最高数据传输率可达680MB/s。
        CameraLink 标准中还提供了一个双向的串行通讯连接。图像卡和摄像机可以通过它进行通信,用户可以通过从图像卡发送相应的控制指令来完成摄像机的硬件参数设置和更改,方便用户以直接编程的方式控制摄像机。本文所介绍的FPGA+DSP的板卡就相当于一块高性能的图像处理卡。
        
四,MJPEG简介
     
        MJPEG是Motion JPEG的简称。它的原理是把相机拍摄到的每一帧图像压缩成一张张分离的JPEG格式的图片发送到客户端。客户端可以连续不断的显示图片,就像观看视频一样。MJPG的优点是实现简单,单张图片是质量好,但是其比起H.246等视频压缩技术来说压缩比不高,占用带宽比较大。
        MJPEG streamer是常用来实现MJPEG流传输的开源项目,我们将参考其源码,来实现在C66x DSP上的连续图像显示。我们将在DSP中运行嵌入式WEB服务器,使用HTTP+MJPEG的协议来传输图像,客户端可以很方便的通过浏览器观看图像数据。
        最后再说明一下,多核心C66x DSP其实是专为算法设计的,所以其大数据高密度实时处理能力很强大,但是外设接口却很少,比如没有驱动LCD之类的显示接口,也没有SATA硬盘接口。但是我们接触到的很多客户都在问C6678能不能显示处理后的图像,答案是肯定的,想要像ARM一样直接驱动显示器显示图像是不行的,但是C6678上有PCIE,SRIO,千兆网等这样的高速接口,所以可以通过这些接口把需要显示的数据传输给带有显示接口的处理器来显示。
        所以,不同的处理器有不同的功用,FPGA、DSP、ARM三大处理器各有各的优势,我们在设计系统的时候应该分配好,让处理器各自处理自己擅长的事情,这样才能事半功倍。所以,广州创龙也是有拥有FPGA、DSP、ARM等多条产品线的。
        
五,程序构架简介
     
        广州创龙基于Xilinx 7系列FPGA+TI C66x多核DSP的高性能图像处理综合演示DEMO整体框架如下图所示。

G

G
        示例程序主要演示了FPGA对Cameralink工业相机数据的采集,FPGA与DSP的高速通讯,以及多核DSP如何协同工作。
        首先FPGA采集Cameralink工业相机输出的图像数据并缓存至本地缓存中,当缓存一帧完整的图像后,通过高速RapidIO接口把图像数据传送至DSP的内存中,传送完1帧图像后向DSP发送中断以通知DSP处理数据。
        然后多核DSP会把该中断路由至Core1,Core1接收到中断后对原始图像进行边沿检测算法,然后将原始图像和通过边沿检测后的图像合并成一副图像,并调用JPEG压缩算法将合成后的图像压缩为JPEG格式。JPEG压缩完成后,会将JPEG格式的图像数据拷贝到Core0与Core1共享的内存中,并且Core1会向Core0发送IPC中断,通知Core0处理数据。
        最后多核DSP使用Core0内建嵌入式WEB服务器,PC机通过浏览器即可方便的查看JPEG格式的原始图像和经过算法处理的图像。
        
六,例程运行效果
     
        程序运行后通过浏览器看到的效果如下图所示:

H

H
        本测试,使用的FPGA是Xilinx Artix-7,使用的DSP是双核的C6657,C6657的两个核心都运行在1GHz,FPGA与DSP之前通过RapidIO传输数据。FPGA发送到DSP的图像数据是640*480 = 300KB,边沿检测后的图像是640*480 = 300KB,然后把这两副图像合成为1280*480 = 600KB的一副图像,然后把合成后的图像压缩成JPEG格式,大概在100~300K之间。
        经过测试,每秒钟的图像在31帧时 Core0 的使用率为5%左右,Core1的使用率为55% 左右。当然,这是没有经过任何优化的性能,如果对程序加以优化,性能将会有大幅度的提升。优化可以从多方面入手,比如可以打开CCS编译器的优化选项让编译器自动优化,或者人工优化代码,许多指令经过优化后可以并行执行,这样就可以使CPU在相同的时间执行更多的指令,从而提高CPU的效率。测试程序中图像的合成与拷贝是使用CPU来完成的,我们可以使用EDMA3来完成这些工作,可以在很大程度上减少对CPU资源的占用,从而提高CPU的效率。另外,如果使用的是8核心的C6678,那么就可以把算法分配到更多的核中执行,性能将会成倍的提高。
        依据TI官方的数据,C6678在默认cache配置下(即L1D cache:32KB,L1P cache:32KB,L2 cache:128KB),如果C6678运行在1000MHz,那么JPEG压缩的性能是:66.66 Mega pixels/second【1】,可见其数据处理能力是非常强大的。
        
七,行业应用
     
        该系统由于采用高性能处理器,系统设计框架经典实用,用户可以在该框架中,很方便的添加自己的应用。对采集的图像数据进行一系类复杂的算法处理,而且实时性非常好,易于移植至工业检测,机器视觉,目标追踪等诸多人工智能领域。
              
附录A

与本方案相关的板卡链接如下:

http://www.tronlong.com/index.php?g=home&m=product&a=show&id=156

http://www.tronlong.com/index.php?g=home&m=product&a=show&id=146

http://www.tronlong.com/index.php?g=home&m=product&a=show&id=148

      
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-3-29 22:25 , Processed in 0.049781 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表