高通SA8155/8295音频硬件架构
好,咱们今天聊聊高通座舱芯片的音频硬件。SA8155和8295这两颗芯片,我估计做车载音频的同行都不陌生。8155是当前量产的主力,8295则是面向下一代的高性能平台。它们的音频子系统架构,说白了,是一脉相承但又各有千秋。
音频子系统介绍
高通的骁龙座舱芯片,音频处理并不是靠主CPU(就是那个跑Android的AP)来做的。它有一套独立的音频硬件单元,我习惯叫它“音频岛”。这个岛的核心,就是ADSP。
整个音频数据流是这样的:麦克风或者外部音源进来,先经过硬件编解码器(比如WCD9385),转成数字信号,然后通过SLIMbus或者SoundWire总线,直接送到ADSP。ADSP处理完之后,再通过同样的总线送回给编解码器,最后输出到喇叭。
这里有个关键点:音频数据全程不经过主CPU。为什么?因为主CPU要跑应用、跑UI,一旦负载高了,音频就容易出现卡顿、爆音。我见过不少项目,就是因为音频路径走了AP,导致通话时断时续。嗯,这个坑咱们后面细说。
核心架构特点:
- 独立音频处理域:ADSP拥有自己的DSP内核和内存,不依赖AP
- 低延迟路径:从麦克风到ADSP再到喇叭,延迟可以控制在10ms以内
- 硬件加速:回声消除、噪声抑制等算法,由ADSP的硬件加速器完成
ADSP(音频数字信号处理器)的作用
ADSP,全称是Audio Digital Signal Processor。你可以把它理解成一个专门干音频活的“小CPU”。它跑的是高通自家的QuRT实时操作系统,跟主CPU的Android完全隔离。
我个人习惯把ADSP的职责分成三层:
- 数据搬运层:负责从编解码器读数据,写数据到编解码器。这活儿看着简单,但实时性要求极高。我记得有一次调试,发现音频偶尔有“咔哒”声,查了两天才发现是DMA配置的buffer size不对,导致数据断流。
- 算法处理层:跑各种音频算法。比如ANC主动降噪、Echo Cancellation回声消除、AEC、NS噪声抑制。这些算法如果放在AP上跑,延迟根本压不住。
- 策略管理层:管理音频路由。比如你打电话时,音乐要自动降低音量(Ducking),这个策略就是在ADSP里实现的。
我的经验:ADSP的固件开发,一定要跟算法团队紧密配合。我曾经遇到一个项目,算法团队在PC上跑得好好的模型,一搬到ADSP上就炸了。为什么?因为ADSP的算力和内存都有限,模型需要做量化、剪枝。这个适配工作,至少留出2周的时间。
音频编解码器(WCD9385等)的选型与连接
编解码器,就是那个把模拟信号转成数字信号,再把数字信号转回模拟信号的芯片。高通平台常用的有WCD9385、WCD9340、WCD9380等。其中WCD9385是当前的主流选择。
选型时,我一般关注这几个点:
| 参数 | WCD9385 | WCD9340 | 说明 |
|---|---|---|---|
| 音频通道数 | 4路ADC / 8路DAC | 2路ADC / 4路DAC | 通道数越多,支持的麦克风和喇叭数量就越多 |
| 采样率 | 最高384kHz | 最高192kHz | 高采样率对Hi-Res音频播放有利 |
| 接口 | SoundWire + SLIMbus | SLIMbus | SoundWire是更新的接口,带宽更大 |
| 功耗 | 低功耗模式 | 常规 | 车载场景下,低功耗很重要 |
连接方式上,WCD9385通过SoundWire总线跟ADSP通信。SoundWire是一种双线制的同步串行接口,一条时钟线,一条数据线。它比传统的I2S能传更多通道的数据。
实际硬件连接时,要注意以下几点:
- 时钟同步:ADSP和编解码器必须共用同一个时钟源,否则会出现采样率偏移,导致音频变调。我见过一个项目,用了两个晶振,结果通话时声音忽高忽低,最后改成单时钟源才解决。
- 电源隔离:编解码器的模拟电源和数字电源要分开,最好用LDO单独供电。数字噪声一旦串到模拟部分,底噪就上去了。
- PCB走线:SoundWire的时钟线和数据线要等长,差分对要靠近走。我建议时钟线包地处理,防止被其他高速信号干扰。
避坑指南:我曾经在一个项目中,WCD9385的I2C配置引脚被误接成了上拉,导致芯片无法被ADSP识别。查了两天原理图才发现。所以,硬件设计时,一定要仔细核对芯片的datasheet,特别是那些配置引脚的电平要求。
最后说一句,SA8295相比8155,音频子系统最大的变化是增加了对更多通道的支持,以及集成了更先进的硬件加速器。但底层的架构逻辑是一样的:ADSP为核心,编解码器为桥梁,总线为纽带。你吃透了8155,8295上手会很快。