10多年来,嵌入式视觉技术设计人员一直充分利用赛灵思FPGA的可编程性、并行计算功能和快速I/O功能,满足一系列嵌入式视觉系统的需求。过去,设计人员用FPGA加速系统中可能拖慢主处理器的功能,或者用FPGA来运行仅靠处理器不能执行的并行计算任务。而现在,利用Zynq-7000 All Programmable SoC,嵌入式视觉技术开发人员拥有了一款全面可编程的器件,非常适合开发新一代Smarter Vision应用。
赛灵思公司视频技术工程设计总监Jose Alvarez指出:“Smarter Vision技术能在同一开发板上互联传输的不同处理器和FPGA中实现,而Zynq-7000 All Programmable SoC为电子产业带来了前所未有的高集成度。现在,我们能通过同一芯片上处理器和逻辑之间3,000个高性能连接以芯片速度而不是板级速度在智能处理器和FPGA逻辑之间交换信息。”
下图显示出Zynq-7000 All Programmable SoC在多功能汽车驾驶员辅助系统创建中相对于采用传统多摄像头多芯片架构的优势。在赛灵思架构(见图中左下方),将一组摄像头连接到一个Zynq-7000 All Programmable SoC,能支持盲区检测、360度环绕视图、车道偏移报警和行人检测等功能捆绑。相反,现有的多功能DA系统需要多个芯片和多个摄像头,这就会让集成更复杂化,对性能和系统功耗造成不利影响,也提高了BOM成本。
Zynq-7000 All Programmable SoC相对于以GPU和DSP为中心的SoC而言,其主要优势就是具有的可编程性和高性能。ARM处理系统具有软件可编程性,FPGA逻辑可通过HDL或C++编程,甚至I/O也是全面可编程的。这样,客户就能创建出适合其特定的应用极高性能Smarter Vision系统,并让其系统从竞争产品中脱颖而出。
下图详细给出了Smarter Vision系统的一般信号流程,从中可以看出Zynq All Programmable SoC相对于基于ARM和DSP以及基于ARM和GPU的ASSP解决方案的优势。
流程中的第一个信号处理模块(绿色)是连接器件到摄像头感应器的输入。在Zynq-7000 All Programmable SoC中,开发人员可让多种不同I/O信号适应于客户连接的任何摄像头需要。下一个信号处理模块执行像素级处理或视频处理工作(具体取决于应用是面向图形处理还是显示)。再下一个模块执行图像分析功能,这是一个计算密集型任务,通常需要并行计算,而这则是FPGA最擅长的任务。接下来3个模块(红色)分别代表处理系统获得分析所得的元数据结果、创建图形化结果表达(在图像步骤显示),以及对结果进行编码用于传输。在Zynq-7000 All Programmable SoC中,处理子系统和FPGA逻辑协同工作。如果需要压缩,FPGA逻辑会直接采用适当的编解码器。在接下来最后一个信号处理模块(标为“输出”)中,Zynq-7000 SoC的可编程I/O可让开发人员满足多种不同通信协议和视频传输标准的要求,有的是厂商专有标准,有的是特定市场标准,还有的则是业界标准IP协议。与此形成对比的是,当开发人员采用以DSP和GPU为中心的SoC开发算法时,可能ASSP中的DSP或GPU难以提供所需的性能。为了弥补这种性能不足,开发人员往往还要在系统中采用独立的FPGA。
Zynq-7000 All Programmable SoC显然是开发Smarter视觉系统的最佳芯片选择,而赛灵思在该器件开发的早期阶段就认识到,应当对编程进行优化,特别是对那些比较习惯用C和C++开发视觉算法的设计人员来说更应该优化编程方法。为此,赛灵思于2012年6月向客户推出了一款最先进的软件环境:Vivado设计套件,其包含有业界一流的高层次综合等多项技术。赛灵思于2011年1月收购AutoESL获得了这种高层次综合技术。Vivado HLS特别适用于嵌入式视觉应用。比方说,如果视觉系统开发人员用Zynq-7000 All Programmable SoC开发的C或C++语言算法运行速度不够快,或者给处理系统带来过重负担,那么这些开发人员就能把C算法提交给Vivado HLS,并将这些算法综合成Verilog或VHDL,然后在器件的FPGA逻辑中运行。这就能将Zynq-7000 All Programmable SoC上的处理子系统解放出来,让它从事更适合自己的任务,从而加速整体系统性能。赛灵思还推出了OpenCV(CV就是计算机视觉的缩写)库,让进一步完善了Smarter Vision技术。
OpenCV是一款具有行业标准、包含OpenCV.org算法的开源库,能帮助嵌入式视觉开发人员快速创建视觉系统。全球嵌入式视觉开发人员积极地为这款开源库开发新的算法,目前已经包含了2500多款使用C、C++、Java和Python语言编写的算法。库中的算法具有各种不同的复杂程度,有的可执行图形滤波器等简单功能,有的则能执行运动检测等更高级的分析功能。赛灵思的视频技术设计总监Alvarez表示,这些OpenCV算法可用于微处理器和DSP等处理器的实现,支持Intel、ARM、Nvidia、MIPS/ImaginationTechnologies、TI等不同厂商的产品。由于Zynq-7000 All Programmable SoC采用ARM处理系统,因此用户能在Zynq-7000 All Programmable SoC的处理器上实现这些采用C++语言编写的算法。
Alvarez指出,有了Vivado HLS,用户可以用C或C++语言编写这些算法,将函数调用从OpenCV改为HLS,并使用Vivado HLS将这些算法综合或编译到RTL代码,从而针对Zynq-7000 All Programmable SoC逻辑部分的实现进行优化。Vivado环境中提供OpenCV,能让Smarter视觉架构设计人员方便地比较设计方案中的给定算法到底是在处理器还是Zynq-7000 All Programmable SoC的FPGA逻辑部分运行效率最佳。赛灵思开源库的推出可为客户提供一个良好的设计开端。就Vivado HLS而言,赛灵思已经编译了OpenCV库中30多种最常用的嵌入式视觉算法。客户可在系统级快速权衡处理器与逻辑,而且能立即在Zynq-7000 All Programmable SoC上运行,确保给定应用实现最佳的系统效果。
赛灵思及其联盟成员还将积极从OpenCV库持续进行功能移植,每个季度都将向赛灵思不断扩展的用户群提供新的功能。由于开发人员能在几乎任何商业处理器上运行OpenCV库,因此视觉设计人员能比较各种芯片器件上运行的不同算法的性能,甚至明确性能基准。赛灵思坚信,广大客户必将发现Zynq All Programmable SoC的明显优势。事实上,您也可在本演示中见证Zynq-7000 All Programmable SoC和赛灵思Smarter Vision技术的强大实力。赛灵思杰出工程师Kees Vissers在演示中将介绍如何使用OpenCV算法,并配合使用Vivado HLS快速在Zynq-7000 All Programmable SoC的FPGA逻辑部分实现这些算法,而相对于在ARM A4处理子系统中实现相同功能而言性能可提升50倍到100倍之多。
Alvarez指出,自Vivado设计套件诞生后,赛灵思让该套件的设计具有器件意识,这样就能充分发挥每款器件的功能。Alvarez称,有了IP Integrator,Vivado设计套件不仅具有器件意识,现在还具有目标平台意识,支持所有Zynq All Programmable SoC和7系列FPGA开发板以及套件。具有目标平台意识,就意味着Vivado设计套件现在能配置和应用特定开发板的设计规则检查,从而确保快速推出切实可行的系统。
举例来说,当设计人员选择赛灵思 Zynq-7000 SoC视频及成像套件,并在IP Integrator中实例化Zynq-7000 All Programmable SoC处理系统时,Vivado设计套件则会用正确的外设、驱动程序和存储器映射对处理系统进行预配置,从而为开发板提供支持。嵌入式设计团队现在能面向双核ARM处理系统和高性能FPGA逻辑更迅速地识别、重用并集成IP软/硬核。