PDM、S/PDIF、VAD、ASRC 与数字音频

PDM、S/PDIF、VAD、ASRC 与数字音频

1. PDM

rockchip_pdm.c 匹配 rockchip,rk3588-pdm,面向数字麦克风 capture:

  • 多 channel;
  • PDM clock;
  • CIC/FIR/decimation;
  • sample rate;
  • DMA FIFO;
  • high-pass/gain(按 IP)。

rockchip_pdm_v2.c 是另一版 PDM 控制器,但本树直接标明的 RK3588 compatible 位于 rockchip_pdm.c,不能仅因文件名较新就假设板卡使用 v2。

2. S/PDIF TX/RX

  • rockchip_spdif.c:TX,RK3588 compatible;
  • rockchip_spdifrx.c:RX,DTS 可使用 RK3588 + RK3308 fallback;
  • IEC958 channel status;
  • compressed bitstream passthrough;
  • DMA;
  • recovered clock(RX)。

用户态透传 AC3/DTS 时数据格式和接收设备能力必须匹配,不能按普通 PCM 调音量。

3. Digital codec

soc/codecs/rk_codec_digital.c 匹配:

1
rockchip,rk3588-codec-digital

它表示 SoC 内数字音频 codec/路由控制,不等同于完整外置模拟 codec。模拟耳机/扬声器仍可能需要 I2C codec、amp、regulator 和 machine routing。

4. VAD

rockchip_vad.c 匹配 RK3588,并有 rk3588_addr_map 描述可监听音频源。目标是在低功耗/持续捕获场景检测语音活动。

涉及:

  • source selection;
  • SRAM/ring buffer;
  • threshold;
  • preprocessing;
  • wakeup;
  • 与 PDM/I2S capture 协调。

本树按 ARM/ARM64/Thumb 选择 VAD preprocess 汇编。

5. ASRC

rockchip_asrc.c 提供 asynchronous sample-rate conversion,在不同时钟域/采样率间转换。本分支 match table 只有 rk3506-asrcrk3576-asrc没有 rk3588-asrc;因此不能把该驱动列为 RK3588 原生 ASRC。只有板级存在独立兼容硬件或其它转换路径时,才能按实际拓扑讨论 ASRC。

ASRC 能处理时钟域差异,但会增加:

  • pipeline latency;
  • 算法资源;
  • format/rate 限制;
  • 质量验证需求。

6. DLP

rockchip_dlp.c + rockchip_dlp_pcm.c 实现数字 loopback PCM,把输入路径回送/抓取用于测试、回声参考或调试。它不是通用用户态软件 loopback。

7. Multi-DAI

rockchip_multi_dais.c 聚合多个 DAI,rockchip_multi_dais_pcm.c 协调 PCM。适合多控制器/多 lane 同步,但要求 rate、buffer、trigger 和 pointer 一致。

8. SAI

rockchip_sai.c 声明高 channel 能力(Kconfig 最多 128 channel),属于独立 SAI IP;本树 RK3588 DTS 没有 SAI 控制器实例,因此不应归入 RK3588 音频 IP。

9. 调试

1
2
3
4
5
arecord --dump-hw-params -D hw:0,0
iecset -c 0
cat /proc/asound/pcm
cat /sys/kernel/debug/clk/clk_summary
cat /proc/interrupts

PDM 无数据优先查 clock/pinctrl/DMIC 供电;S/PDIF RX 优先查输入锁定和 recovered clock。

文章互动

阅读 --

留言

0 条留言

正在加载留言…