之前某鱼上出现大量汽车控制板,如下图所示:
核心主控是ZYNQ UltraScale+系列FPGA。虽然目前新能源汽车主控已经转投英伟达+ARM了,但是FPGA还是有一定应用场景的。
小米su7上主要芯片
今天我们介绍一下FPGA在汽车上ADAS系统中的应用。
ADAS(Advanced Driving Assistance System,高级驾驶辅助系统)在汽车上非常重要。该系统的主要功能是协助驾驶员避免事故,并确保驾驶员、车辆和道路安全。ADAS 系统现在是部分/有条件自动驾驶和完全自动驾驶的重要组成部分。
本方案基于 Xilinx Zynq UltraScale+ MPSoC-EV FPGA,将在其上使用 Vitis/Petalinux 方法运行机器学习模型(Vitis AI 模型和自定义模型)。使用 4 GMSL 摄像头系统作为视频源并执行预处理、机器学习部署以进行人员/行人检测、后视车牌检测和侧视车辆或物体检测,以确保车辆安全。
上图描绘了 ADAS FPGA 硬件设计的框图。FMC 模块具有 4 个摄像头 GMSL 链路解码 IC(https://www.avnet.com/shop/us/products/avnet-engineering-services/aes-fmc-mc4-ar0231at-g-3074457345635644762/)。四个摄像头数据均通过 MIPI CSI-2 接口到 FPGA。
PL 端将有三条管道设计。
- 捕获管道:
该管道负责接收摄像头数据、预处理数据并将数据写入内存。管道由一系列模块组成,即 MIPI CSI-2 RX、Subset Converter, Stream Switch, and 预处理模块等。
摄像机数据以 MIPI CSI-2 数据格式进入 FPGA。然后生成 AXI-Stream数据。Stream Switch用于将单个流解复用为四个单独的流。这是因为四摄像头解串器将四摄像头数据复用到单个 MIPI CSI-2 接口。这就是为什么需要在 FPGA 中进行解复用,以便进一步访问和处理单个摄像头数据。接下来,每个数据流分别进入四个预处理模块。
该管道由 Bayer2RGB IP、色彩空间转换器 (CSC)、缩放和缓冲区写入模块组成。Bayer2RGB 转换器将传感器数据的 RAW 格式转换为 RGB 格式。CSC 模块可以将 RGB 格式转换为其他格式,例如 YUV。缩放模块可以将传入的视频分辨率缩放为不同的输出分辨率。缩放后的分辨率将用于 ML 管道和显示管道。
缓冲区写入块用于将数据写入 DDR 内存的四个独立位置,具有特定的颜色格式和分辨率值。ML 管道将访问这些内存位置以检索相机数据并执行 ML 任务。
- ML管道
该设计使用 DPU IP。
在此管道中使用 1xB4096 DPU IP 配置来运行机器学习模型。
ML管道运行以下 ML 模型:
-
车牌识别模型
-
人脸识别
-
行人检测
-
VIVADO硬件设计
- 显示管道
该管道有助于在车辆仪表板的平板显示屏上显示处理后的摄像头数据。视频叠加是该管道的主要模块,它将从内存中读取 ML 处理的数据并将其显示为覆盖层。模块中的 Axis2Video 将生成的视频数据转换为并行视频数据。该模块将流数据和视频时序作为输入并生成并行视频数据。这些数据将被馈送到实时显示端口 (DP) 接口。
- HMI和GUI
基于 QT 框架开发的轻量级 GUI 将显示在 FPD 中,其中所有四个摄像头数据以及检测信息将使用 GST 管道显示在显示单元中。FPD 创建人机界面 (HMI),用户可以从中获取信息以及输入信息。另一方面,检测信息也可以通过视觉颜色标志和文本信号传递给用户。如果检测到,则可以显示红色警告和文本等等。
参考链接
总结
上面就是一个使用FPGA进行ADAS系统设计的简单流程,FPGA的并行、实时处理特性及PS端ARM端运行嵌入式系统等特性,是该系统最大的特点。虽然目前新能源汽车上FPGA的使用率越来越低,但是在一些特殊场景中还是有一定应用价值,比如摄像头数据实时处理等低延时要求场景中。