2. 环视系统基础

做车载系统集成这些年,我接触过不少芯片平台。但说实话,高通骁龙SA8295和SA8255这两颗SoC,确实把座舱硬件的天花板又往上推了一大截。今天咱们就掰开揉碎了聊聊,这两颗芯片到底强在哪,硬件参考设计该怎么搭,外设接口又该怎么接。

2.1 SA8295与SA8255:核心特性对比

先看一张对比表,心里有个底:

特性 SA8295 SA8255
制程工艺 5nm 5nm
CPU Kryo 695 (8核, 最高2.9GHz) Kryo 695 (6核, 最高2.5GHz)
GPU Adreno 690 (支持3路4K) Adreno 662 (支持2路4K)
DSP Hexagon V66 (双HVX) Hexagon V65 (单HVX)
ISP 双ISP, 支持8路摄像头 单ISP, 支持4路摄像头
AI算力 30 TOPS 15 TOPS
典型场景 旗舰座舱+环视+舱内感知 中高端座舱+基础环视

我的经验:选型时别只看算力。SA8295的30 TOPS是AI引擎的峰值,实际跑模型要看带宽和内存延迟。我遇到过客户拿SA8295跑一个轻量级模型,结果发现瓶颈在DSP到内存的搬运上——嗯,这个坑后面细说。

2.2 CPU/GPU/DSP/ISP:各模块怎么分工

2.2.1 CPU:Kryo 695的调度策略

SA8295的8核Kryo 695,分成1个超大核+3个大核+4个小核。我个人习惯把实时任务(比如CAN报文解析)绑在小核上,把UI渲染和AI推理绑在大核上。为什么?小核省电,而且实时任务不需要高频,关键是延迟要稳定。

举个例子:

// 绑核示例(伪代码)
// 小核:CAN接收线程
pthread_setaffinity_np(can_thread, &small_core_mask);
// 大核:UI渲染线程
pthread_setaffinity_np(ui_thread, &big_core_mask);

避坑指南:我曾经把环视算法线程绑在超大核上,结果发现GPU抢带宽时,超大核反而被拖慢。后来改成绑在大核上,配合DSP做预处理,帧率反而上去了。所以别迷信超大核,要看整体数据流。

2.2.2 GPU:Adreno 690的多屏渲染

Adreno 690支持3路4K@60fps同时输出。说白了,就是仪表盘、中控、副驾屏各跑各的,互不干扰。但要注意——GPU的显存带宽是共享的。如果你三路都开HDR,带宽很容易打满。

我建议的做法:

  • 仪表盘用低延迟模式(不缓存,直接推)
  • 中控用标准模式(带双缓冲)
  • 副驾屏用省电模式(降帧到30fps)

2.2.3 DSP:Hexagon V66的视觉加速

Hexagon V66带双HVX向量扩展,专门干图像预处理。你想想看,环视算法里最耗时的就是鱼眼校正和透视变换。这些活如果扔给CPU,8核全跑满也就30fps;但交给DSP,轻松跑到60fps。

我习惯把DSP当做一个“图像协处理器”:

// DSP任务分配示例
// HVX0: 鱼眼校正 + 亮度均衡
// HVX1: 透视变换 + 拼接融合
// CPU: 只做目标检测的后处理

2.2.4 ISP:双ISP的摄像头管理

SA8295的双ISP,每个ISP可以同时处理4路摄像头。这意味着你可以接8路摄像头——4路环视+2路舱内+2路侧视。但要注意,ISP的带宽是固定的,每路的分辨率和帧率要算清楚。

摄像头类型 分辨率 帧率 ISP通道占用
环视(4路) 1920x1080 30fps 4通道
舱内(2路) 1280x720 30fps 2通道
侧视(2路) 1280x720 15fps 2通道

注意:ISP的MIPI CSI接口是固定的,不能随意切换。我曾经在项目里把环视和舱内摄像头接反了,结果ISP的时钟域对不上,画面一直闪。后来老老实实按参考设计走线,问题才解决。

2.3 硬件参考设计:Power Tree、Memory、PMIC

2.3.1 Power Tree:供电树怎么搭

SA8295的功耗不低,峰值能到15W。供电树的设计直接决定系统稳定性。我习惯分三路:

  • VDD_CORE:0.7V~0.9V,给CPU/GPU核心供电,电流需求大(>10A)
  • VDD_MEM:1.1V,给LPDDR5供电,纹波要控制在30mV以内
  • VDD_IO:1.8V/3.3V,给外设接口供电,注意上电时序

上电时序很关键。高通要求VDD_CORE先上,然后VDD_MEM,最后VDD_IO。顺序错了,SoC可能锁死。我见过一个团队把顺序搞反了,结果芯片一直无法启动,查了三天才发现是PMIC的配置问题。

2.3.2 Memory:LPDDR5的选型与布局

SA8295支持LPDDR5,频率最高6400Mbps。我建议至少配8GB,跑环视+座舱才够用。布局上要注意:

  • 走线等长:每组DQ信号长度差不超过50mil
  • 参考层完整:LPDDR5下面不要走其他信号
  • 去耦电容:每颗DRAM颗粒旁边放4颗0.1uF+2颗1uF

我的习惯:Memory的仿真一定要做。我遇到过一版PCB,LPDDR5的时序裕量只有20ps,量产时高温下频繁报错。后来加了一颗PLL时钟缓冲器,才把裕量拉到80ps。仿真能省很多返工时间。

2.3.3 PMIC:电源管理芯片的选择

高通官方推荐搭配PMIC是PMM8550。这颗PMIC集成了6路BUCK和10路LDO,基本覆盖SA8295的所有供电需求。但要注意:

  • BUCK的电感选型:4.7uH+22uF,ESR要低
  • LDO的压差:输入输出压差不要超过0.5V,否则发热严重
  • I2C配置:PMIC的寄存器默认值不一定适合你的设计,要仔细读datasheet

2.4 外设接口:MIPI CSI、以太网、CAN、USB

2.4.1 MIPI CSI:摄像头接口的布线要点

SA8295提供4路MIPI CSI,每路4 lane,速率最高2.5Gbps/lane。布线时要注意:

  • 差分阻抗:100Ω ±10%
  • 等长:每对差分线长度差不超过5mil
  • 屏蔽:CSI走线两侧要包地,间距至少3倍线宽

我踩过最大的坑是CSI信号串扰。有一次环视画面出现横纹,查了半天发现是CSI2和CSI3的走线挨得太近,间距只有2倍线宽。拉开到4倍线宽后,问题消失。

2.4.2 以太网:车载千兆网的设计

SA8295内置一个千兆以太网MAC,支持1000BASE-T1(车载单对线)。我建议用Broadcom的BCM89811做PHY,兼容性好。设计要点:

  • MDI差分对:100Ω,走线要短
  • 时钟:25MHz晶振,精度±50ppm
  • 隔离:变压器要选车载级,耐压2kV

2.4.3 CAN:总线接口的隔离设计

SA8295有2路CAN-FD控制器。我习惯加隔离:

// CAN隔离方案
// SoC端:CAN控制器 -> ISO1042隔离芯片 -> CAN收发器 -> DB9
// 隔离电压:5kV
// 速率:5Mbps (CAN-FD)

注意:CAN总线一定要加共模扼流圈。我遇到过一辆车在EMC测试时,CAN总线辐射超标,加了共模扼流圈后直接降了15dB。别省这个元件。

2.4.4 USB:多路USB的供电管理

SA8295支持3路USB 3.0。每路USB的VBUS要独立供电,建议用TI的TPS2546做电源开关。设计时注意:

  • 过流保护:每路限流1.5A
  • ESD保护:USB D+/D-要加TVS管
  • 信号完整性:USB 3.0的差分对要走内层,避免跨分割

2.5 知识结构总览

下面这张SVG图,把SA8295/SA8255的硬件架构串起来了。你可以把它当作设计时的检查清单:

高通骁龙座舱平台硬件架构总览 SA8295/SA8255 硬件架构总览 高通骁龙 SoC SA8295 / SA8255 CPU (Kryo 695) GPU (Adreno) DSP (Hexagon) ISP (双/单) 外设接口 MIPI CSI (4路) 以太网 (1000BASE-T1) CAN-FD (2路) USB 3.0 (3路) 硬件参考设计 Power Tree (3路) Memory (LPDDR5) PMIC (PMM8550) 时钟/复位/调试 设计要点总结 • CPU绑核:实时任务绑小核,UI/AI绑大核 • DSP加速:鱼眼校正/透视变换交给Hexagon • ISP带宽:8路摄像头要算好分辨率与帧率 • 供电时序:VDD_CORE → VDD_MEM → VDD_IO

这张图把SoC核心、外设接口、参考设计三块串起来了。你设计时,可以按这个结构逐项检查,不容易漏。