EdgeBoard是基于FPGA打造的嵌入式AI解决方案,能够提供强大的算力,并支持定制化模型,适配各种不同的场景,并大幅提高设备的AI推理能力,具有高性能、高通用、易集成等特点。
EdgeBoard系列计算卡符合工业设计标准、满足-40℃~85℃的温度范围,接口齐全,可广泛适配如安防监控、工业质检、医疗诊断、科研教学、智能零售等各种场景。
EdgeBoard产品分为三个系列,称之为“三兄弟”,能够满足客户不同的需求,既有满足高性能计算的方案,也有高性价比的处理方案。本文将从“三兄弟”的特点及整体硬件框架两个方面来介绍EdgeBoard。
<strong>1.为什么EdgeBoard使用FPGA</strong>
理想的异构计算平台应该具备三种基本能力:首先专有的硬件加速能力,提高算法的性能;其次高效灵活适配算法的能力,适配不断演进的算法;最后丰富的外围接口,适合不同的应用场景。
CPU作为通用处理器,以逻辑计算作为出发点,更偏重控制流数据,适用于控制和调度类任务,不易于进行外围电路的扩展。GPU具有并行计算的特点,广泛应用在训练阶段,但由于功耗大、成本高等原因,少有部署在端上的产品,另外高延迟及缺少对外围电路的支持也不利于部署到端上的产品中。ASIC作为一种专用集成电路芯片,具有体积小、功耗低、计算性能高等特点,但AISC芯片研发时间长,资金投入大,由于芯片内部结构相对固定,无法适配快速演进的AI算法,在应用场景没有明确之前ASIC显然不是最优的选择。
FPGA作为一种现场可编程门阵列,具有低功耗、低延迟、高性能等优势,其可编程的特性又可以灵活适配不同的算法,同时FPGA丰富的外围接口可以满足不同的应用需求,FPGA差异化的内部逻辑资源可以提供不同的算力支持,这些优势使得FPGA被广泛应用在AI推理加速上。
<strong>2.EdgeBoard计算卡介绍</strong>
<strong>2-1 概述</strong>
EdgeBoard是基于Xilinx Zynq UltraScale+ MPSoC系列芯片打造的计算卡,芯片内部集成ARM处理器+GPU+FPGA的架构,既具有多核处理能力、也有视频流硬解码处理能力,还具有FPGA的可编程的特点。内置Linux 4.14.0系统和深度学习预装环境,与百度大脑模型定制平台(AIStudio、EasyDL、EasyEdge)深度打通,实现模型的训练、部署、推理等一站式服务。
EdgeBoard计算卡产品可以分为FZ9、FZ5、FZ3三个系列,是分别基于XCZU9EG、XAZU5EV、XAZU3EG研发而来,分别具有高性能,硬解码,低成本等特点,针对不同需求和应用场景,有不同的市场定位和产品定位,满足各类开发者多样性的需求。
<strong>2-2 FZ9系列计算卡</strong>
EdgeBoard FZ9系列计算卡是基于XCZU9EG芯片的高性能计算卡,具有较高的性能和集成功能。ZU9芯片PS端具有四核Cortex-A53和双核Cortex-R5 以及Mali-400MP2 GPU;PL端资源DSP Slices 2520,计算性能达3.6Tops,片上存储BRAM高达32.1Mb。
FZ9计算卡产品采用核心板+扩展板的双层设计方案,增加了对外接口的数量,其80*120mm的尺寸方便计算卡集成于到产品中,具备软硬一体的解决方案(软件+FPGA),支持多种视频源(usb、mipi、bt1200、网络摄像头)的输入,并具有强大的视频预处理能力,视频输出DisplayPort接口兼容标准Linux视频框架V4L2。高性能的视频处理能力和标准化的视频输出接口可满足机器学习、医疗诊断等行业需求。
<center><img src="http://xilinx.eetrend.com/files/2020-03/wen_zhang_/100048047-91914-tu1e…; alt="EdgeBoard FZ9计算卡"></center>
<p align="center"><strong>EdgeBoard FZ9计算卡</strong></p>
<strong>2-3 FZ5系列计算卡</strong>
EdgeBoard FZ5系列计算卡是基于XAZU5EV芯片的计算卡,提供较高性能和功能集成,具有多路视频流H264&H265标准的编解码功能。ZU5芯片PS端同样包含四核Cortex-A53 、双核Cortex-R5、以及GPU Mali-400MP2;PL端资源DSP Slices 1248,计算性能达2.4Tops,片上存储BRAM达5.1Mb,UltraRAM 18Mb。
FZ5计算卡产品延续了FZ9计算卡的产品形态,采用核心板+扩展板双层设计方案,具有多视频输入接口,VCU(Video Codec Unit)硬核解码,对视频的输入处理采用流水线设计,实现高吞吐量和低时延,具有极佳的功耗性能比。产品可以广泛应用于具有硬解码需求的视频图像推理,满足安防监控、工业质检、自动驾驶等行业需求。
<center><img src="http://xilinx.eetrend.com/files/2020-03/wen_zhang_/100048047-91915-tu2e…; alt="EdgeBoard FZ5计算卡"></center>
<p align="center"><strong>EdgeBoard FZ5计算卡</strong></p>
<strong>2-4 FZ3系列计算卡</strong>
EdgeBoard FZ3系列计算卡是基于XAZU3EG芯片的计算卡,处理器ZU3芯片内置四核Cortex-A53和核心FPGA可编程逻辑模块;PL端资源DSP Slices 360,实测计算性能达1.2Tops,片上存储BRAM达7.6Mb。
FZ3计算卡产品具有高集成性的设计方案,板卡尺寸为80*70mm,具有usb3.0、bt1120、mipi、网络等多视频输入接口,板载2GB 64bit位宽的 DDR4,整体功耗仅5W左右,极佳的功耗性能比。对于FZ3产品具有的高性能、低功耗、低成本、小体积的特点,产品可以广泛应用于科研教学、智能零售、安防监控等行业。
<center><img src="http://xilinx.eetrend.com/files/2020-03/wen_zhang_/100048047-91916-tu3e…; alt="EdgeBoard FZ3计算卡"></center>
<p align="center"><strong>EdgeBoard FZ3计算卡</strong></p>
<strong>3.EdgeBoard框架及性能介绍</strong>
<strong>3-1 MPSoC系统框架</strong>
Zynq UltraScale+ MPSoC架构提供频率高达1.5GHz的四核Cortex®-A53 高效 64位 ARMv8 应用处理器、具有双核 ARM® Cortex®-R5 600MHz的实时低功耗协处理器,以及ARM® Mali™-400MP2 GPU达到667MHz,同时EV系列还包含 H.265/H.264 视频编解码器单元,可提供原生 UltraHD 压缩及专用引擎,满足动态电源管理与安全配置需求。Zynq UltraScale+ MPSoC平台系统顶层框图如下:
<center><img src="http://xilinx.eetrend.com/files/2020-03/wen_zhang_/100048047-91917-tu4m…; alt="MPSoC平台系统框架"></center>
<p align="center"><strong>MPSoC平台系统框架</strong></p>
<strong>3-2 EdgeBoard计算卡配置比较</strong>
基于MPSoC平台系统顶层框图,EdgeBoard计算卡的系统框架设计如下:
<center><img src="http://xilinx.eetrend.com/files/2020-03/wen_zhang_/100048047-91918-tu5e…; alt="EdgeBoard计算卡系统框架"></center>
<p align="center"><strong>EdgeBoard计算卡系统框架</strong></p>
EdgeBoard计算卡在配置方面,拥有4GB 和2GB 的不同DDR4内存配置版本,存储支持8GB eMMC,256MB NOR Flash,8Kb EEPROM,具有多路视频(usb、mipi、bt1200、网络视频)输入接口,同时为满足开发者调试便捷性,支持TF Card系统盘启动。
EdgeBoard计算卡的整体配置比较:
<body>
<table border="1" cellpadding="0" cellspacing="0" width="557">
<tbody>
<tr>
<td colspan="2" valign="top" width="21.18491921005386%">ITEM<br /></td>
<td valign="top" width="24.59605026929982%">FZ9<br /></td>
<td valign="top" width="27.10951526032316%">FZ5<br /></td>
<td valign="top" width="27.10951526032316%">FZ3<br /></td>
</tr>
<tr>
<td colspan="2" valign="top" width="21.14695340501792%">处理器<br /></td>
<td colspan="3" valign="top" width="78.85304659498208%">四核ARM <a href="mailto:Cortex-A53@1.%3Cmark%20data-type=concepts%20data-id=cd327489-c76…;,双核Cortex-R5@600MHz,GPU Mali-400@667MHz<br /></td>
</tr>
<tr>
<td colspan="2" valign="top" width="21.18491921005386%">内存<br /></td>
<td valign="top" width="24.59605026929982%">DDR4,4GB或2GB,64bit位宽<br /></td>
<td valign="top" width="27.10951526032316%">DDR4,4GB或2GB,64bit位宽<br /></td>
<td valign="top" width="27.10951526032316%">DDR4,2GB,64bit位宽<br /></td>
</tr>
<tr>
<td rowspan="4" valign="top" width="7.014388489208633%">存储单元<br /></td>
<td valign="top" width="14.028776978417266%">eMMC<br /></td>
<td valign="top" width="24.640287769784173%">8GB<br /></td>
<td valign="top" width="27.158273381294965%">8GB<br /></td>
<td valign="top" width="27.158273381294965%">8GB<br /></td>
</tr>
<tr>
<td valign="top" width="15.087040618955513%">QSPI Flash<br /></td>
<td valign="top" width="26.499032882011605%">256MB<br /></td>
<td valign="top" width="29.20696324951644%">128MB<br /></td>
<td valign="top" width="29.20696324951644%">32MB<br /></td>
</tr>
<tr>
<td valign="top" width="15.087040618955513%">EEPROM<br /></td>
<td valign="top" width="26.499032882011605%">8Kb<br /></td>
<td valign="top" width="29.20696324951644%">8Kb<br /></td>
<td valign="top" width="29.20696324951644%">8Kb<br /></td>
</tr>
<tr>
<td valign="top" width="15.087040618955513%">TFCard<br /></td>
<td valign="top" width="26.499032882011605%">默认16GB,最大支持128GB<br /></td>
<td valign="top" width="29.20696324951644%">默认16GB,最大支持128GB<br /></td>
<td valign="top" width="29.20696324951644%">默认16GB,最大支持128GB<br /></td>
</tr>
<tr>
<td rowspan="4" valign="top" width="7.001795332136445%">视频输入接口<br /></td>
<td valign="top" width="14.00359066427289%">BT1120<br /></td>
<td colspan="3" valign="top" width="78.99461400359067%">BT1120视频输入,支持1080p<br /></td>
</tr>
<tr>
<td valign="top" width="15.057915057915057%">MIPI<br /></td>
<td colspan="3" valign="top" width="84.94208494208495%">MIPI CSI视频输入,支持1080p<br /></td>
</tr>
<tr>
<td valign="top" width="15.057915057915057%">USB<br /></td>
<td colspan="3" valign="top" width="84.94208494208495%">USB3.0 & USB2.0,支持USB Camera输入<br /></td>
</tr>
<tr>
<td valign="top" width="15.057915057915057%">Ethernet<br /></td>
<td colspan="3" valign="top" width="84.94208494208495%">1000M网络,支持IPC和GigE视频输入<br /></td>
</tr>
<tr>
<td colspan="2" valign="top" width="21.18491921005386%">视频显示接口<br /></td>
<td valign="top" width="24.59605026929982%">支持DisplayPort端口输出<br /></td>
<td valign="top" width="27.10951526032316%">支持mini DisplayPort端口输出<br /></td>
<td valign="top" width="27.10951526032316%">支持mini DisplayPort端口输出<br /></td>
</tr>
<tr>
<td colspan="2" valign="top" width="21.18491921005386%">PCIE<br /></td>
<td valign="top" width="24.59605026929982%">-<br /></td>
<td valign="top" width="27.10951526032316%">Mini PCIE<br /></td>
<td valign="top" width="27.10951526032316%">-<br /></td>
</tr>
<tr>
<td colspan="2" valign="top" width="21.18491921005386%">VCU<br /></td>
<td valign="top" width="24.59605026929982%">-<br /></td>
<td valign="top" width="27.10951526032316%">支持H.264/H.265编解码<br /></td>
<td valign="top" width="27.10951526032316%">-<br /></td>
</tr>
<tr>
<td colspan="2" valign="top" width="21.14695340501792%">安全措施<br /></td>
<td colspan="3" valign="top" width="78.85304659498208%">主板自带加密方案,方便开发者进行模型加密<br /></td>
</tr>
<tr>
<td colspan="2" valign="top" width="21.14695340501792%">扩展口<br /></td>
<td colspan="3" valign="top" width="78.85304659498208%">支持30pin 和44pin低速扩展接口,包括RS485,UART,GPIO,3.3V等</td>
</tr>
</tbody>
</table>
</body>
<strong>3-3 常用模型在EdgeBoard上的性能数据</strong>
<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td rowspan="2" valign="top" width="28.725314183123878%"><strong>网络<br />
</strong></td>
<td rowspan="2" valign="top" width="22.082585278276483%"><strong>输入尺寸<br />
</strong></td>
<td colspan="3" valign="top" width="49.19210053859964%"><strong>单帧耗时</strong><br /></td>
</tr>
<tr>
<td valign="top" width="34.306569343065696%">FZ9<br /></td>
<td valign="top" width="34.67153284671533%">FZ5<br /></td>
<td valign="top" width="31.021897810218977%">FZ3<br /></td>
</tr>
<tr>
<td valign="top" width="28.725314183123878%">Mobilenet-v1<br /></td>
<td valign="top" width="22.082585278276483%">224 x 224<br /></td>
<td valign="top" width="16.87612208258528%">7ms<br /></td>
<td valign="top" width="17.0556552962298%">7ms<br /></td>
<td valign="top" width="15.26032315978456%">10ms<br /></td>
</tr>
<tr>
<td valign="top" width="28.725314183123878%">Resnet50<br /></td>
<td valign="top" width="22.082585278276483%">224 x 224<br /></td>
<td valign="top" width="16.87612208258528%">16ms<br /></td>
<td valign="top" width="17.0556552962298%">18ms<br /></td>
<td valign="top" width="15.26032315978456%">44ms<br /></td>
</tr>
<tr>
<td valign="top" width="28.725314183123878%">Inception-v2<br /></td>
<td valign="top" width="22.082585278276483%">299 x 299<br /></td>
<td valign="top" width="16.87612208258528%">19ms<br /></td>
<td valign="top" width="17.0556552962298%">21ms<br /></td>
<td valign="top" width="15.26032315978456%">42ms<br /></td>
</tr>
<tr>
<td valign="top" width="28.725314183123878%">Inception-v3<br /></td>
<td valign="top" width="22.082585278276483%">299 x 299<br /></td>
<td valign="top" width="16.87612208258528%">27ms<br /></td>
<td valign="top" width="17.0556552962298%">31ms<br /></td>
<td valign="top" width="15.26032315978456%">73ms<br /></td>
</tr>
<tr>
<td valign="top" width="28.725314183123878%">Mobilenet-ssd<br /></td>
<td valign="top" width="22.082585278276483%">224 x 224<br /></td>
<td valign="top" width="16.87612208258528%">15ms<br /></td>
<td valign="top" width="17.0556552962298%">16ms<br /></td>
<td valign="top" width="15.26032315978456%">25ms<br /></td>
</tr>
<tr>
<td valign="top" width="28.725314183123878%">Mobilenet-ssd-640<br /></td>
<td valign="top" width="22.082585278276483%">640 x 640<br /></td>
<td valign="top" width="16.87612208258528%">55ms<br /></td>
<td valign="top" width="17.0556552962298%">58ms<br /></td>
<td valign="top" width="15.26032315978456%">89ms<br /></td>
</tr>
<tr>
<td valign="top" width="28.725314183123878%">Vgg-ssd<br /></td>
<td valign="top" width="22.082585278276483%">300 x 300<br /></td>
<td valign="top" width="16.87612208258528%">50ms<br /></td>
<td valign="top" width="17.0556552962298%">75ms<br /></td>
<td valign="top" width="15.26032315978456%">256ms<br /></td>
</tr>
<tr>
<td valign="top" width="28.725314183123878%">Yolo-v3<br /></td>
<td valign="top" width="22.082585278276483%">608 x 608<br /></td>
<td valign="top" width="16.87612208258528%">147ms<br /></td>
<td valign="top" width="17.0556552962298%">200ms<br /></td>
<td valign="top" width="15.26032315978456%">701ms<br /></td>
</tr>
<br />
</table>
</body>
EdgeBoard软核仍在持续升级,性能也将同步提升。不同版本的网络模型对算力要求不同,针对具体项目应用需求,可进行定制优化。