Zynq-7000能干什么?

作者:OpenS_Lee

1 背景知识

因为Zynq-7000 PS(Processing System)端嵌入了Cortex-A9 ARM 处理核以及PL(Programmable Logic)端为基于Kintex-7或者Artix-7的FPGA架构使得Xilinx Zynq-7000更加强悍,应用领域更加广泛。下面将从以下方面介绍Zynq-7000的应用领域:汽车、通信系统、机器人、控制和仪器 、图像和视频处理 、医药、工业控制和许多其他领域。

2 应用概述

考虑 Zynq、FPGA 和相关芯片的应用广泛,选择几个重要的领域给大家介绍。虽然有大量的可能性应用,但这里的只是选择一些有代表性的应用。

2.1 汽车

图1 汽车系统(左:辅助驾驶系统;右:道路标识识别 )

图1 汽车系统(左:辅助驾驶系统;右:道路标识识别 )

现在的汽车里都有大量的电子装置,从引擎管理到车窗、倒车辅助系统、驾驶员辅助系统、后视镜和灯光等控制功能,以及导航和资讯娱乐系统都有。先进驾驶辅助系统 (Advanced Driver Assistance Systems,ADAS)专门指的就是汽车里为了驾驶员的安全和便捷所提供的系统的总和,包括:偏离车道告警系统、道路标识识别(如进入限速较低的路段时提醒驾驶员)、泊车辅助、抬头显示,以及甚至能监视驾驶员的清醒程度。图1左是辅助驾驶抬头显示系统,图1右是道路标识识别系统。

FPGA,以及现在的 Zynq 芯片,可以用来实现这些汽车系统 。Zynq 的处理能力使它特别适合做这样的系统,而且能够降低元件的数量在一个对成本和功耗敏感并且还往往对物理空间有要求的市场中是一种优势。

2.2 通信系统

图2 通信系统 (左:无线基站;中:卫星地面站;右: 有限网络交换机)

图2 通信系统 (左:无线基站;中:卫星地面站;右: 有限网络交换机)

FPGA 是对基于包交换的无线和有线通信进行计算密集型处理的平台。这个领域很多样化,包括地面和卫星传输的收发信机、移动通信骨干网络、有线网络设备、雷达、声纳、全球定位系统 (Global Positioning System, GPS)和许多其他的通信系统。图2左为无线基站,中为地面卫星雷达,右为网络交换机。

在无线通信中,无线电频谱日益紧张,而与此同时大量无线系统和标准不断在扩张。柔性无线电 (flexible radio)的概念有可能更好地利用无线电频谱,并能把无线电设备稳固在一个能动态改变操作的单个设备上。Zynq 就是一个理想的柔性无线电平台。在有线通信中,通过使用 “ 软定义网络(softly defined networks,SDN)” 使其达到类似程度的灵活性,SDN 能在软件的控制下升级功能。

2.3 机器人、控制和仪器

图3 控制和仪器仪表系统(左:工业控制室;中:风力发电厂;右:高能物理实验)

图3 控制和仪器仪表系统(左:工业控制室;中:风力发电厂;右:高能物理实验)

从制造和加工到高能物理实验的工业和科学处理,都需要精密的控制和仪器。图3分别展示了工厂控制室、风力发电厂和 CERN 的高能物理实验装置 。

FPGA 和 Zynq 芯片是非常合适的平台,因为借助于 PL 的能力,它们能快速、实时地同时处理多个传感器的输入并操作多个动作器的输出。Zynq 在系统集成和操作的灵活性上还有更大的潜力。比如,可以监视一个控制环的性能,如果有必要就可以改变它的配置转用软件控制。如果需要,PS 还可以支持实时操作系统及 (或)GUI (图形用户界面)。

电机控制算法在工业的很多领域都是极为重要的。比如,对美国制造业工厂的调查发现,工业中消耗的大约 50% 的电力是用于 “ 机器驱动 ”,也就是电机、泵和风扇 。由于在 PS 和 PL 之间的高带宽连接,能够形成紧密的反馈回路,并能利用 AMS 包所提供的 DAC 采样能力,使得 Zynq 很适合做电机控制。

2.4 图像和视频处理

图 4 医药应用(左:MRI 扫描;右:机器人辅助手术)

图 4 医药应用(左:MRI 扫描;右:机器人辅助手术)

在医疗诊断中一个重要的问题是要 “ 看见 ” 人体的内部,这就需要像计算机断层摄影(Computer Tomography,CT)扫描、超声波和核磁共振成像(Magnetic Resonance Imagers,MRI)这样的医疗影像设备。为了增强和显示通过这样的设备所获得的图像,往往就需要对大量的数据做精密的图像处理算法。和其他图像处理应用一样,Zynq 综合了 PS 和 PL 的能力,既支持高速并行计算,也支持基于软件的算法。医学领域所涉及到的进一步的应用包括机器人辅助手术中的仪器控制,以及实时手术图像,比如内窥镜设备、病人监视设备和家庭保健技术 。

2.5 其他及未来的应用

接下去,会给出 FPGA 和 Zynq 的一些关键应用领域的概述。不过,还有很多正在开展的和潜在的应用没能详细列在这里,从音频信号处理到基于 Zynq 的无人机都有!

2.5.1智能系统和智能网络

智能这个术语在很多应用领域都能找到,包括智能电网、智能建筑、智能家居、智能交通、智能城市、智能农业等等。

智能家居用的是和智能建筑类似的原理,让民居也在成本和环境上受益。除了能管理暖气、灯光和电器的使用,智能家居可能还包括室内保安和娱乐方面的功能。图 5是一个智能家居的展示。

图5 智能家居的某些功能

图5 智能家居的某些功能

2.5.2 图像和视频处理,及计算机视觉

图像处理的特征是它具有巨大的并行性:每个图像,或等价的视频的每个帧,是由二维的像素点的矩阵组成的,而且在 X 和 Y 轴上可能有超过 1000 个像素点。比如,全高清(HD)视频通常定义为1920 x 1080 个像素点,也就是总共有 2073600 个像素点。还得考虑到每个像素点是由三个通道组成的才能表达颜色!如果用8 位的通道来分别表达红色、绿色和蓝色的数据,这样每个像素点就需要 24 位,而每幅 HD 图像就需要 49766400 位。数码相机产生的图片可能还会更大。考虑到这么大的尺寸,因此任何对单个像素点的计算就需要大量的计算并行展开,这就是很适合在FPGA 或是 Zynq 芯片的 PL 部分上做的事情了。当然,最好能降低要计算的数据的量,而且有些图像处理是可以在更高的抽象层级上做的,在较少的数据上执行更高级的算法,也就是可能由软件来做。对于视频处理,更多的关注在压缩方面。单幅图片通常在空间域上压缩来缩减文件大小,但是在视频应用中,当帧速率达到每秒100 帧(在某些特殊应用中更高)的时候,由于涉及到更为大量的数据,对压缩的需求尤为突出,还可能需要实时计算的约束。但是时间域给压缩提供了进一步的机会,因为连续的视频帧往往存在高度的重合。可以用算法来发送一小段时间片段内完整的、最新的帧,然后在这些帧之间,对帧与帧之间的不同进行编码。已经存在很好的视频压缩标准了,而且还在不断地发展和进步。

图6 图像处理中的抽象

图6 图像处理中的抽象

图7 可以用计算机视觉来检测路口车辆

图7 可以用计算机视觉来检测路口车辆

如前所述,计算机视觉需要识别出特征和目标来,这样就能从图像中析取出含义来。这就牵涉到复杂的运算和软件算法。比如,为了判断是否有车辆,就可能必须在图像中分析识别出来的线条,然后甚至可以把车辆的类型分类为摩托车、小汽车、大巴等。这个阶段表达了向图6 中所示的最高抽象层级的转化,从而能得到图像内容的描述。比如,在图7中,图像显示的是交叉路口的小车。汽车的数量可以用计算机视觉算法被检测并记录下来,然后甚至还可以根据行驶的方向做出分类来。

视频处理应用还可能进一步调用目标追踪,比如如果在 CCTV 画面中识别出感兴趣的人了,那个人在画面中的进一步的运动就可以被追踪。类似的,如果路口的画面形成了视频,那么车辆就可以被追踪。从图像处理和计算机视觉算法中获得的数据可以用作更高层级应用的数据。比如,在车辆识别的实例中,计算机视觉系统可以提供关于车辆通过一个路口的统计数据,可以用来做交通管理和城市规划。

除了芯片的架构,我们还应该考虑在促进为 Zynq 开发图像处理系统的设计中,Xilinx 和第三方开发工具的作用。以下罗列了一些值得一提的相关说明:
• Xilinx IP 包 — 在 IP Integrator 里有很多 IP 包是用于图像和视频处理应用的,包括视频存储、图像增强和色彩调整功能。

• OpenCV — 开放计算机视觉(Open Computer Vision)是一个开源项目,实现了一组用于图像和视频处理的 C/C++ 库。OpenCV 的工具可以用来开发运行在 PS 上的软件算法。

• Vivado HLS 视频库 — Vivado HLS 包含一个能综合到 HDL 里去的函数库,实现了对图像和视频处理的特殊支持。这些函数可以替代部分 OpenCV 函数,因此如有需要,对应的功能就能方便地被划分到硬件中去。

• MATLAB / Simulink — MATLAB 和 Simulink 提供了丰富的用于图像和视频处理以及计算机视觉的工具。不仅提供相关的函数和开发环境,还可以把开发好的算法转换成能实现在 Zynq 上的 C/C++ 代码。

文章转载自: FPGA开源工作室