1. 为什么是“三核协同”:方案定位与选型逻辑
先说个我自己的判断:在RK3588这类高性能ARM处理器已经烂大街的今天,单靠一颗SoC已经很难撑起“超高清图像处理 + 实时AI分析”这种组合需求。原因很简单,这类任务链路特别长:传感器采集、数据搬运、图像预处理、编解码、深度学习推理、显示/存储,每一步都在抢带宽、抢算力、抢时序。你要是全塞给一颗RK3588,能跑,但大概率会出现帧率上不去、CPU占用拉满、AI推理延迟抖动严重这类问题。
所以我把这个方案拆成了“三核协同”:RK3588负责主控、编解码和系统级任务,FPGA负责面向传感器的低延迟预处理和链路适配,NPU/GPU负责深度学习推理加速。三颗“核心”各管一段,之间用明确的接口和流水线衔接,而不是让一颗芯片干所有事。
这里有一个关键认知:很多人以为加FPGA是为了做ISP、做去马赛克、做图像增强,其实这只是表象。真正的原因是数据从传感器到AI分析引擎之间的搬运和格式转换,需要极高的时序确定性。RK3588的Linux系统在调度上很难保证微秒级的确定性,而FPGA天然就是并行流水线,可以做到逐像素严格时钟同步。我把这部分放在FPGA里,就是为了让“数据进入AI引擎之前”这段路径不受系统调度干扰。
方案适合谁?适合做工业视觉、医疗影像、视频监控、边缘计算设备、智能相机、无人机图传等方向的工程师。简单说,就是“图像质量要求高 + AI分析要求快 + 系统必须稳定”的那些场景。如果你只是做轻量级人脸检测,RK3588单芯就够了,不需要FPGA。但如果你要做4K60帧的实时检测、要做多路超高清信号接入、要保证端到端延迟稳定在几十毫秒内,那这套架构就非常合适。
选型上,我当时对比过几种方案:一是RK3588 + 独立GPU(比如Jetson Orin系列),二是RK3588 + ASIC加速卡,三是RK3588 + FPGA。GPU方案软件生态好但功耗高、冷启动慢,而且部分场景对延迟抖动敏感;ASIC方案性能最强但灵活性差,算法一变就得换卡;FPGA方案可重构、接口丰富、流水线定制能力强,适合做传感器接入和预处理加速的“粘合层”。最终选FPGA,不是因为它性能最强,而是因为它在“接口适配 + 时序控制 + 算力补充”这三个维度上的综合分最高。
1.1 单芯片方案的瓶颈到底在哪
我们先拆一下“超高清图像处理 + 实时AI分析”这个需求,它到底涉及哪些具体工作。
以4K60的视频流为例,一帧分辨率3840x2160,RGB888格式,一帧大约是24MB。60帧每秒就是1.44GB/s的数据量。这个数据要经过:传感器搬出 -> 主机接口传输 -> 内存写入 -> 图像预处理 -> 缩放/裁剪/NV12转换 -> 送入NPU推理 -> 推理结果后处理 -> 叠加渲染 -> 编码存储。每一步都可能产生带宽瓶颈。
RK3588的内存带宽、编解码能力确实强,但它的强项是“通用计算 + 多路编解码”。如果你把MIPI汇聚、图像校正、多路拼接、白平衡、降噪这些任务全部扔给CPU或GPU跑,CPU会持续被这些线性计算占用,NPU推理所需的输入图像就得不到及时投喂,整个流水线就会变成“算力有余、搬运不足”。我实测过,单纯在RK3588上用CPU做4K图像的RGB转NV12,单帧耗时能到10毫秒以上,这个时间在检测链路里已经算明显开销了。
另一个问题是接口和时序。工业相机、医疗传感器、多路模拟转数字信号,这些不一定直接支持MIPI CSI或USB。FPGA刚好能给这些“乱七八糟”的接口做统一接入,然后把数据整理成RK3588能吃到的格式。这一层如果没有,系统设计会非常被动。
1.2 三核架构的任务切分
在我的方案里,三个核心的分工是这样的:
RK3588作为“系统中枢”,跑Linux系统、负责网络协议栈、设备管理、存储管理、显示输出、运行AI推理调度库和业务应用。RK3588内置的VPU(视频编解码单元)专门负责H.264/H.265的编解码,这是它的一大优势,千万别浪费。另外,RK3588还内置了6TOPS算力的NPU(有些型号是6TOPS),跑一个轻量级检测模型完全没问题;重模型可以分一部分给FPGA的逻辑资源做定制计算,或通过PCIe/USB接外部算力。
FPGA作为“链路前哨”,负责所有传感器信号的接入、MIPI聚合、图像预处理(黑电平校正、坏点校正、去马赛克、白平衡、Gamma校正、降噪),以及给RK3588输出标准格式的数据。FPGA还可以做一些对时序要求极其严格的控制,比如多相机同步曝光、LED闪光的精确打光控制。这些任务你让Linux去做,基本做不好,因为延迟不可控。
AI加速器在这里特指RK3588的NPU,外加RKNN Toolkit这个工具链。NPU适合跑结构化的深度学习算子,比如卷积、池化、全连接。它的优势是能效比高,跑YOLOv8这类模型时,算力比同功耗的GPU更划算。我通常会把模型的“重计算”放在NPU上,把“轻逻辑”放在CPU上,让每个器件都干自己最擅长的事。
这个切分带来的好处是:每一段流水线都有确定的延迟边界,整体端到端延迟也可以预估。
1.3 方案的适用场景与优势对比
我用一个实际项目来说明:工业视觉检测线,要求对流水线上的产品做4K超高清图像采集,发现表面瑕疵,检测延迟要求低于100毫秒,同时要有视频回放存证功能。
如果是纯RK3588方案,你需要外挂一个支持4K输出的工业相机(通常走10G Ethernet或Camera Link),接入之后再通过软件做白平衡、降噪、AI检测。最大的痛点是相机接口和MIPI之间的转换,以及软件处理延迟不确定。用FPGA之后,相机信号直接进FPGA,FPGA做一部分预处理并生成标准的MIPI CSI信号直接送入RK3588的ISP,RK3588的ISP做进一步处理,然后交给NPU跑检测模型。整个过程不需要额外的接口转换板卡,延迟大大降低。
优势对比我可以给个表格:
| 维度 | 纯RK3588方案 | RK3588 + FPGA方案 |
|---|---|---|
| 多接口接入能力 | 受限(MIPI CSI/USB/网口) | 定制能力强,接口可重构 |
| 图像预处理延迟 | 软件处理,微秒到毫秒级波动 | 硬件流水线,纳秒级确定性 |
| AI推理输入实时性 | 受系统调度影响 | 数据按时序到达,推理更稳定 |
| 扩展性 | 受外设和带宽限制 | 可通过FPGA增删算法模块 |
| 开发成本 | 低 | 中高(需要会FPGA开发) |
所以这套方案不是替代RK3588,而是给RK3588“腾出算力”、帮他“铺好管道”,让超高清图像处理和实时AI分析各司其职。
2. 核心细节解析:RK3588、FPGA与AI加速器的分工协作
如果我们把整个系统当成一个流水线工厂,RK3588是车间主任,FPGA是质检和输送员,NPU是精密加工员。下面我逐一说明这三块“职责”背后的技术逻辑,以及它们之间怎么通信、怎么避免踩坑。
2.1 RK3588:系统主控与多媒体中枢
RK3588是瑞芯微的旗舰SoC,8核ARM架构(4个Cortex-A76 + 4个Cortex-A55),内置ARM Mali-G610 GPU,集成6TOPS算力的NPU,支持8K编解码。这个配置做边缘计算的通用主控非常称职,但如果你不做好任务分区,它也存在资源争抢问题。
在系统层面,RK3588一般跑Linux或者Android。大部分做边缘设备的会选Ubuntu/Debian Linux。移植Ubuntu 26(或对应版本的Rockchip官方Linux SDK)时,有几个点需要特别注意:内核分区表(AB分区机制)、u-boot启动参数、设备树里外设配置(MIPI DSI/CSI、PCIe、GMAC等)。你可能会遇到启动后屏幕不亮、MIPI摄像头无图像这类问题,大概率不是硬件坏了,而是设备树配置不对。
RK3588的VPU(Video Processing Unit)是我们常常忽略但极好用的资源。H.264/H.265硬编码4K60非常从容,基本不占CPU。处理图像存证和远程推流时,直接用VPU编码,而不是用CPU软编,这是方案性能的重要来源。
另外RK3588内置了RGA(Raster Graphic Acceleration),可以做图像的缩放、旋转、格式转换(如RGB转NV12),效率非常高。我的习惯是:能用RGA做的图像格式转换绝不用CPU逐像素处理。这些内置硬件单元组成了RK3588作为“多媒体中枢”的核心竞争力。
2.2 FPGA:面向传感器与链路的“快手脚”
FPGA的最大价值不是因为它比CPU快多少,而在于它的数据通路是硬件级并行的,不依赖操作系统调度。
在视频链路里,FPGA做的事情非常杂。举几个例子:
- MIPI信号是高速差分串行信号,FPGA可以直接通过高性能Bank接收并解析MIPI协议,完成lane对齐、字节转换、包解析。你可以用FPGA逻辑直接实现MIPI CSI-2 RX控制器,把相机数据包整理成并行像素流。市面上有很多成熟IP,但如果要适配特殊传感器,自己写逻辑会灵活很多。
- 多路传感器同步,FPGA可以控制快门/曝光的精确时序,保证多摄像头在同一时刻采集。
- ISP的部分前端算法,比如黑电平校正、坏点修复、去马赛克,这些是逐像素的固定计算,FPGA做起来非常合适。需要注意的是,FPGA做ISP的难点在于算法参数的在线调节,这需要和RK3588之间有一个控制通道(通常是I2C/SPI/UART),RK3588可以实时写入参数,FPGA内部寄存器更新后对后续帧生效。
很多人问FPGA为什么适合做图像处理而GPU不行?最核心的原因是功耗和延迟可控。GPU执行一个kernel也有调度开销,而FPGA的数据流是一路直通,中间只有流水线级数带来的固定延迟。在做实时视觉检测时,这种确定性价值极高。
2.3 NPU与RKNN:让实时分析真正落地
RK3588的NPU支持INT8/INT16/FP16混合精度,先用RKNN-Toolkit把PyTorch/TensorFlow/ONNX模型转成RKNN格式,然后调用RKNN Runtime API推理。这里有一个很重要的点:数据进入NPU之前要先做归一化和格式转换,如果每次都用CPU做这些预处理,推理延迟会变差。所以我把预处理尽量放在FPGA或RGA上,NPU只接收干净整齐的输入张量。
部署YOLOv8检测模型时,一般流程是:
- 用YOLOv8官方代码导出ONNX模型。
- 用RKNN-Toolkit2做模型转换,设置量化数据集。
- 转换时选择目标平台rk3588,开启混合量化或特定层高精度(比如检测头层),避免精度损失。
- 在板端集成RKNN Runtime C/Python API,加载模型、设置输入、执行推理、获取输出。
FPGA和NPU的数据交接也是一个值得规划的细节。我通常让FPGA直接把图像数据写成NV12或RGB的连续内存块,然后在RK3588侧通过dma-buf或ION方式映射到NPU输入地址,避免额外的内存拷贝。也就是说“FPGA直接给NPU喂数据”,RK3588只是负责建立这条通路的管理员。这样端到端延迟能做到很低。
3. 实操基础:系统部署与开发环境搭建
聊清楚架构之后,下一步就是动手搭建开发环境。这一节我按实际项目的落地顺序来写,从拿到一块RK3588板子和一块FPGA板子开始,到跑通第一路图像数据。
3.1 RK3588板级系统移植与分区处理
我现在用的RK3588板子是标准核心板加载板,支持NVMe SSD、MIPI CSI、PCIe。系统移植方面推荐直接用Rockchip官方的Ubuntu镜像(Debian/Ubuntu based SDK),比什么都自己编译省心太多。如果追求定制化,再基于SDK编译内核和根文件系统。
这里说一个必须注意的点:AB分区机制。
RK3588的官方固件默认采用AB分区,也就是系统有两个槽位(Slot A / Slot B),分区表里有super(动态分区)、vendor_boot、dtbo、boot等分区。好处是系统升级更安全,坏处是你自己刷自制镜像时容易搞混分区结构。我之前就踩过坑:只刷了boot分区和rootfs,没更新dtbo,最终导致启动卡在logo。正确做法是完整烧录整个update.img,或者按照分区表逐个刷写,别跳步。
如果要移植Ubuntu 26,建议流程:
- 从Rockchip官方或社区下载对应板卡的Ubuntu镜像。
- 使用RKDevTool(Windows)或upgrade_tool(Linux)进入Loader/MaskRom模式烧录。
- 烧录前先备份当前系统,使用
dd备份eMMC全盘或者用rk3588_backup脚本备份关键分区。 - 烧录完成,首次开机建议先跑一遍
resize2fs扩展根分区,否则空间会非常小。 - 用
rknpu2、rga、mpp等库的最新版本更新板端固件库,保证NPU和视频编解码功能可用。
3.2 调试连接与开发工具链
板子和主机之间最常用的是ADB连接。给RK3588板子接上Type-C线,用adb devices查看设备。如果看不到设备,一般是两个原因:
- 板子没有打开USB调试功能(开发者选项 -> USB调试)或没有切换到ADB模式。
- 驱动问题,Windows下需要安装Google USB Driver。
我一般是先把ADB调通,再启动SSH服务,最后用网线直连做网络调试。网络调试优先用有线千兆口,因为要传输大文件、模型文件、固件编译产物,Wi-Fi传输太慢容易中断。
开发侧,交叉编译环境推荐用Docker方式。Rockchip官方SDK自带Docker镜像,能省去一堆环境变量问题。编译FPGA时,Intel或Xilinx的工具链(Vivado/Quartus)也需要在Linux或Windows下单独安装,建议独立一台高性能主机,因为综合布线本身很占计算资源。
3.3 FPGA开发环境和与RK3588的数据交互验证
FPGA部分的工程在Vivado或Quartus里建好,综合、实现、生成比特流之后,通过JTAG下载到FPGA板。常见的做法是先用一个最简单的逻辑测试引脚连通,然后再逐步加载MIPI接收、像素处理等复杂模块。
FPGA和RK3588之间的数据交互,常见接口有三个:MIPI CSI、PCIe、并行RGB/LVDS。
我推荐用MIPI CSI作为主数据通路,因为RK3588的ISP原生支持MIPI CSI输入。FPGA把图像数据包成MIPI CSI-2协议,经过FPC排线或PCB走线接到RK3588的CSI口。这里要注意信号完整性问题,MIPI走差分线要按阻抗要求布线,否则高速信号会有眼图问题。
调试的时候可以先让FPGA输出彩条测试图形,用RK3588的v4l2-ctl --set-fmt-video抓一帧,再用media-ctl查看pipeline状态,确认数据通路是否打通。这一步通了,整个方案的基础就算坐实了。
4. 超高清图像链路实现:从MIPI到显示与存证
图像链路是这套方案最核心的部分,也是延时和带宽问题最集中地带。我把它拆成三个环节来展开:传感器接入、ISP处理、NDI/RGA数据流转。理解好这三个环节,你就知道FPGA到底替RK3588扛了多少活。
4.1 MIPI和传感器接入:FPGA负责的第一步
MIPI CSI-2是摄像头传感器最常见的输出接口。RK3588自带MIPI CSI控制器,可以直接接传感器,但需要注意的是每个CSI口的lane数、虚拟通道数有限。当你接多路相机或多路非标准信号时,RK3588的CSI端口可能不够用。
我一般让FPGA完成MIPI的“汇聚”:多路传感器先接入FPGA,FPGA完成通道仲裁、时序同步、虚拟通道编号,然后把合并后的数据流从一路MIPI CSI输出给RK3588。这样RK3588只需要管理一个输入源,大大简化了软件复杂度。
具体逻辑上,FPGA内部实现一个MIPI CSI-2 TX控制器,把并行像素数据(RGB/YUV/Bayer等)打包成MIPI包时序:包头发EOT/SoT,像素数据负载,包尾。这个过程需要参考MIPI规范,细节比较多,但市面上有现成IP可用,也可以自己写。
4.2 ISP与去马赛克:谁来做更合适
这里要区分一下FPGA做ISP和RK3588做ISP的边界。
RK3588自带的ISP(Image Signal Processor)功能很强大,支持黑电平校正、去马赛克、3A(自动曝光/白平衡/对焦)、降噪、HDR等。它有大量寄存器可调,还配合RKAIQ库做自动调优。所以,如果你的传感器直接接入RK3588的ISP,那大部分ISP功能都能用。
但在我们的方案里,FPGA已经做了一部分ISP前端。为什么还要这样做?两个原因:一是某些传感器输出格式或时序是RK3588 ISP不直接支持的,比如高帧率全局快门传感器、非标Bayer排列。二是因为多路信号时会话、裁剪、畸变校正等任务需要并行处理,提前在FPGA完成可以减轻RK3588 ISP的负担。
我的实践建议是:如果传感器标准、链路简单,直接让RK3588的ISP做全套。如果传感器特殊,或需要多路拼接/同步预处理,则在FPGA做前端,并把输出设置为RK3588 ISP最熟悉的RGB或YUV格式。这样最稳妥。
4.3 RGA/MPP加速通路与图像数据流转
数据到达RK3588之后,软件层通常会有一个“搬运”和“转换”的过程。这个阶段最重要的硬件就是RGA和MPP(Media Process Platform)。
RGA能做的事情包括:调整尺寸、裁剪、格式转换、旋转、镜像。图像从ISP出来可能是NV12或RAW格式,要送入NPU推理,通常需要转换成固定尺寸的RGB(按模型输入要求)。直接用CPU循环转换4K图像非常耗时,用RGA则几乎不占CPU。我实测用RGA把4K NV12缩放到640x640 RGB,耗时会控制在1毫秒左右,CPU占用忽略不计。
MPP是Rockchip的视频编解码中间框架,它封装了VPU的能力。如果要保存视频流或做远程推流,走MPP的H.265编码器,能实现4K60实时编码。有一点要注意:MPP的缓冲区和RGA/NPU的缓冲区如果能在dma-buf层面直接互操作,可以避免反复拷贝。所以在写业务代码时,我尽量统一使用Rockchip的drm/dma-buf机制管理buffer,而不是简单的malloc。
5. AI实时分析加速:RKNN部署YOLOv8实例
这一节我用YOLOv8做具体例子,讲述从模型到板端跑通的完整链路。因为YOLOv8是目前工业视觉检测最常用的模型之一,RK3588的NPU对它支持也比较好。
5.1 模型转换与量化流程
第一步是准备模型。我通常用YOLOv8官方代码训练或直接用预训练权重,然后导出成ONNX格式。导出时要注意:opset版本建议选12或13,动态输入shape最好关掉,固定输入尺寸,这样转换时麻烦少很多。
第二步是用RKNN-Toolkit2做转换。核心代码大概这样:
cd rknn-toolkit2 python3 -m pip install -r requirements.txt转换脚本关键内容:
from rknn.api import RKNN rknn = RKNN(verbose=True) rknn.config(target_platform='rk3588', mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], quantized_dtype='asymmetric_quantized-8', quantized_algorithm='normal') ret = rknn.load_onnx(model='yolov8n.onnx') if ret != 0: raise RuntimeError('load onnx failed') ret = rknn.build(do_quantization=True, dataset='dataset.txt') if ret != 0: raise RuntimeError('build failed') rknn.export_rknn('yolov8n.rknn') rknn.release()这里最核心的是量化。直接用默认量化方式,模型的mAP可能会有一定下降。我的经验是:量化数据集尽量选贴近真实场景的图像,至少200张,不要只放一张图跑一遍就走了。对于某些大模型或精度敏感的模型,开启混合量化,把检测头或后处理层保留为FP16精度,效果提升明显。
5.2 板端部署与多路并发处理
板端C++/Python调用RKNN Runtime,流程是:
- 初始化RKNN上下文,加载rknn模型。
- 准备输入输出内存,建议用dma-buf从RGA/ISP那边直接拿buffer映射,这样避免内存拷贝。
- 执行推理
rknn_run。 - 解析输出,做NMS后处理。
YOLOv8的输出通常有三个Head,每个输出形状为[1, 84, 8400](以640x640输入、80类COCO为例)。解析时需要做转置、解码、过滤低置信度框、NMS。后处理如果用纯Python会很慢,最好用C++或者把后处理放到NPU里部分处理。我实际应用中,会把大部分矩形框解码+置信度过滤放到一个C++函数里,NMS用OpenCV的cv::dnn::NMSBoxes。
多路并发时,RK3588的NPU支持多核,但要注意模型实例数量。项目实践里,跑两路YOLOv8n(输入640x640 INT8)时,单帧推理延迟大约20-30毫秒,已经满足很多现场需求。
另外,还需要处理丢帧策略。当检测帧率跟不上输入帧率时,与其排队处理过期帧,不如丢旧帧直接处理最新帧,这样保证了实时性。这是我调试NVR类业务时学到的经验。
5.3 实测优化:延迟与吞吐
最后说一下实测指标和优化手段。我当前项目里,端到端指标大概是这样的:
| 处理环节 | 耗时/性能 |
|---|---|
| 传感器数据进入FPGA | 忽略不计(硬件流水线) |
| FPGA预处理输出MIPI | 约1-2ms(包含部分ISP前端) |
| RK3588 ISP处理 | 约3-5ms(4K30) |
| RGA缩放转换到640x640 | 约1ms |
| NPU推理(YOLOv8s INT8) | 约25-35ms |
| 后处理+NMS | 约2ms |
| 叠加显示 | 约1-2ms |
总端到端延迟大约40-50ms,基本可以做到“画面看到什么,检测结果就出来什么”。
优化的几个方向:
- 减少内存拷贝:所有环节尽量共用dma-buf。
- 量化精度:模型量化不好会导致检测漏检,需要重新选量化策略。
- 多线程流水线:相机采集线程、AI推理线程、显示线程三相独立,用队列缓冲。
- NPU频率策略:调高NPU频率可以降低推理延迟,但功耗上升,需要测试平衡。
6. 常见问题排查与避坑实录
做三核协同方案时,前期会踩到不少坑。我这里整理了一份问题速查表,基本覆盖了大部分实际开发中可能遇到的问题,同时也补充一些独家心得。
6.1 常见问题速查表
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| RK3588刷机后无法开机 | 分区表被破坏,dtbo/boot版本不匹配 | 用完整update.img重新烧录,确认u-boot与内核版本一致 |
| MIPI摄像头无图像流 | 传感器供电/时钟未开启,MIPI lane配置错 | 用media-ctl和v4l2-ctl查pipeline,确认设备树MIPI参数与传感器匹配 |
| ADB识别不到设备 | USB调试未开、驱动异常 | 确认开发者选项,重装ADB驱动,换根高质量Type-C线 |
| FPGA和RK3588之间图像错位/花屏 | MIPI时序不匹配、lane极性错误 | 检查MIPI lane映射与极性配置,用示波器看差分信号质量 |
| NPU推理结果漂移严重 | 量化导致精度损失 | 校准数据集加量、开启混合量化、检查输入预处理是否与训练时一致 |
| RGA转换后的图像出现绿屏 | 格式或宽高对齐问题 | RGA要求16字节对齐,检查目标尺寸和stride |
| VPU编码卡顿 | 缓冲区分配不合理,未使用dma-buf | 改用drm buffer管理,确保编解码缓冲区物理连续 |
| FPGA综合布线时序不过 | 时钟约束不足,流水线深度不够 | 重新设置时钟约束,优化关键路径流水线 |
| 系统运行几天后NPU崩溃 | 内存泄漏 / DMA映射未释放 | 用cat /proc/meminfo和dmesg检查,统一内存分配释放接口 |
6.2 实践心得与建议
最后分享几个我在实际项目里反复验证过的经验。
第一,三核协同方案最大的价值不是性能数字,而是“稳定性”。FPGA把链路前段“锁死”之后,整个系统对Linux调度的敏感度大大降低,这是很多实时检测场景最需要的特性。如果你未来要接待客户的现场验收,这种确定性会给你省很多麻烦。
第二,FPGA的开发尽量模块化,并且把参数做成寄存器组,让RK3588侧可以动态配置。这样后续调ISP参数、调检测ROI、调增益曝光,都不需要反复综合FPGA工程,大幅缩短调试周期。
第三,做AI模型部署时,一定要在项目准备期就把量化精度评估做完,不要到板端联调时才发现模型精度不合格。量化评估需要尽可能贴近真实工况的数据集,我在项目中专门准备了一套“现场光照、相机角度”的采集数据,效果比网上找的通用数据集好太多。
第四,如果你只是做产品原型,可以先用RK3588自带的ISP和NPU跑通全流程,把FPGA做成“可插拔”的加速模块。等验证了业务指标,再决定是否在最终产品中加入FPGA。这样既降低了早期复杂度,又保留了后期性能升级的空间。
这个方案从架构设计到板端落地,我踩过很多坑,也积累了一些行之有效的优化手段。如果你正在做类似的项目,建议先把“三核分工”理清楚,再一步步从系统、图像链路、AI推理逐层打通。希望这篇分享能给到你一些方向和实用的细节。