提到自动驾驶,机器人视觉,高清摄像机,都要想到摄像头这个单元,先前本侠也讲过一些FPGA应用在高清摄像头和机器视觉中的深度摄像头以及双目摄像头等,FPGA在里面的作用主要是对采集的图像进行处理,对图像的处理需要硬件有着很好的并行的性能,那么它处理速度跟ARM的CPU比起来有没有优势呢?本侠今天就带领各位一起来探索一下FPGA在边缘计算方面的应用。

提起计算速度,我们首先能想到的是云计算。云计算有数不清的好处,例如计算快,计算数据的量大,等等。但智者千虑必有一失,没有云计算的厂家能够保证他能做任何的事情,云计算也有自己的不足之处,最大的不足就是计算的实时性不够高。例如,在你把一些数据送到云端去进行处理的时候总会有一些延迟,最难熬的莫过于等结果的时间。边缘计算需要很高的计算性能,而且有着很高的实时性,FPGA能够同时并行处理很多的事情,既能满足数据处理速度的要求,还能满足实时性的需求,可谓是两全其美。今年在加利福尼亚的圣塔拉拉举行的嵌入式视觉峰会上展示了基于Aldec的TySOM-2-7Z100原型板的4摄像头ADAS模型,如图.1所示。TySOM的性能很好,主要是因为里面的核心的运算处理部件是Xilinx Zynq Z-7100的SoC。

图.1 TySOM-2-7Z100原型板

如图.2可以看到Zynq在TySOM板子中的位置,为什么Zynq中的FPGA能够在边缘计算方面得到这么好的应用呢?Zynq-7000可编程SoC将软件可编程的ARM处理器和硬件可编程的FPGA放到了一个芯片中,能够实现数字分析的同时还能够实现硬件加速,里面集成了CPU,DSP,ASSP和混合信号处理模块。图像处理所用的就是Zynq里面的FPGA模块。那么ARM核心在TySOM办卡中能够起到什么作用呢?

Aldec的TySOM-2-7Z100原型板的良好的性能依赖于Zynq里面有着双核的ARM Cortex-A9处理器和一个FPGA逻辑。整个图像处理的过程是先从摄像头采集图像开始,使用一个边缘检测算法(这里的边缘指的是对物理边缘的感知,例如物体或者是巷子的边界线等)。这是一个计算密集的任务,因为有上百万的像素需要经过计算。采集到的图像如果是在ARM CPU中进行处理的话每秒钟只能处理3张的图像,然而在FPGA中每秒可以处理27.5张的图像,可见在Zynq中FPGA有着举足轻重的作用。也就是说,有了FPGA图像的处理速度有了将近10倍的速度的提升。

图.2 TySOM-2-7Z100板的正面图

有了高性能的核心处理芯片还不够,还需要神通广大的外设接口来跟其他的设备进行交互。TySOM的设计能够兼容多达362个I/O的外设接口、16个GTX收发器、两个FMC-HPC可以支持扩展子卡的连接口。ARM CPU处理数据的时候需要的基本的标准接口例如DDR3 RAM,USB和HDMI;ARM核心还能够支持Linux的操作系统和其他一些类型的实时操作系统。不仅如此,ARM的CPU有着1GB的DDR3 RAM能够让其进行支配,可以支持扩展32GB的SSD存储空间。网络的交互可以通过RJ45接口经过Gigabit Ethernet PHY来实现,还配备了4个USB 2.0的接口。大多数的FPGA的接口都通过两个FMC-HPC sockets接口来实现跟其他设备的交互。这样,ARM核心和FPGA模块都能够和外界进行信息的交互。

自动驾驶正在如火如荼的进行中,随着国家政策对自动驾驶的慢慢的认可,相信对技术来讲是一件好事,无论是硬件还是算法都会有自己的用武之地,在智慧城市,智慧生活的大环境下,FPGA的发展也会随着潮流稳步的向前推进,更好的去拥抱改变,创造改变的机会。

ZYNQ7000性能分析的更多相关文章

  1. 如何进行python性能分析?

    在分析python代码性能瓶颈,但又不想修改源代码的时候,ipython shell以及第三方库提供了很多扩展工具,可以不用在代码里面加上统计性能的装饰器,也能很方便直观的分析代码性能.下面以我自己实 ...

  2. SQL Server-聚焦IN VS EXISTS VS JOIN性能分析(十九)

    前言 本节我们开始讲讲这一系列性能比较的终极篇IN VS EXISTS VS JOIN的性能分析,前面系列有人一直在说场景不够,这里我们结合查询索引列.非索引列.查询小表.查询大表来综合分析,简短的内 ...

  3. SQL Server-聚焦NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL性能分析(十八)

    前言 本节我们来综合比较NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL的性能,简短的内容,深入的理解,Always to review the basics. ...

  4. SQL Server-聚焦LEFT JOIN...IS NULL AND NOT EXISTS性能分析(十七)

    前言 本节我们来分析LEFT JOIN和NOT EXISTS,简短的内容,深入的理解,Always to review the basics. LEFT JOIN...IS NULL和NOT EXIS ...

  5. SQL Server-聚焦EXISTS AND IN性能分析(十六)

    前言 前面我们学习了NOT EXISTS和NOT IN的比较,当然少不了EXISTS和IN的比较,所以本节我们来学习EXISTS和IN的比较,简短的内容,深入的理解,Always to review ...

  6. SQL Server-聚焦NOT EXISTS AND NOT IN性能分析(十五)

    前言 上一节我们分析了INNER JOIN和IN,对于不同场景其性能是不一样的,本节我们接着分析NOT EXISTS和NOT IN,简短的内容,深入的理解,Always to review the b ...

  7. SQL Server-聚焦INNER JOIN AND IN性能分析(十四)

    前言 本节我们来讲讲联接综合知识,我们在大多教程或理论书上都在讲用哪好,哪个性能不如哪个的性能,但是真正讲到问题的实质却不是太多,所以才有了本系列每一篇的篇幅不是太多,但是肯定是我用心去查找许多资料而 ...

  8. Java 性能分析工具 , 第 3 部分: Java Mission Control

    引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...

  9. Java 性能分析工具 , 第 2 部分:Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

随机推荐

  1. 第02组Alpha冲刺(4/4)

    队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:了解整个游戏的流程 GitHub签入记录 接下来的计划:继续完成游戏 还剩下哪些任务:完成游戏 燃尽图 遇到的困难:没有美术比较好的 ...

  2. [Gamma阶段]测试报告

    [Gamma阶段]测试报告 博客目录 测试方法及过程 在正式发布前,为检验后端各接口功能的正确性,后端服务器对压力的耐受程度,以及前端各页面.功能的运行情况,我们对我们的服务器及小程序进行了多种测试. ...

  3. [Gamma]Scrum Meeting#10

    github 本次会议项目由PM召开,时间为6月5日晚上10点30分 时长15分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写博客,组织例会 撰写博客,组织例会 swoip 前端显示屏幕,翻译坐 ...

  4. WeakhashMap源码2

    public class WeakHashMapIteratorTest { @SuppressWarnings({ "rawtypes", "unchecked&quo ...

  5. wraps补充

    ''' wraps: (了解) 是一个修复工具,修复的是被装饰对象的空间. from functools import wraps ''' from functools import wraps de ...

  6. 修改Centos7用户默认家目录

    vim /etc/default/useradd # useradd defaults file GROUP= HOME=/home INACTIVE=- EXPIRE= SHELL=/bin/bas ...

  7. C语言向txt文件写入当前系统时间(Log)

    程序实现很简单,涉及到的只有两个知识点. 1.文件最最基本的打开关闭: 2.系统时间的获取. 代码是在VS2019环境下编写的,部分函数在其他编译器中会无法识别.这个就只能需要自己去查找对应的函数简单 ...

  8. SQL系列(十)—— 联结(join)

    在数据库设计中,基本上都是根实体ER关系和范式设计多张表.这样更能设计出更合理.紧凑的表结构,提高有效数据存储,数据的管理维护更简便,也提高了库表的伸缩性. 但是事物总是平衡的,在很多场景中单张表的数 ...

  9. Python开发【第十五篇】模块的导入

    的导入语句 import 语句 语法: import 模块名1 [as 模块别名] 作用: 将某模块整体导入到当前模块 示例: import math import sys,os 用法: 模块名.属性 ...

  10. latex在vim中的代码片段

    Gilles Castel写的vim中使用的代码片段,质量很高,原文:https://github.com/gillescastel 下载后,存放到 ~/.vim/plugged/ultisnips/ ...