linux音频子系统(一) 硬件基础接口

时间:2024-03-24 20:30:29
  • 了解硬件基础接口

1.硬件接口
linux音频子系统(一) 硬件基础接口

2.数字音频信号的传输标准

  • I2S
  • PCM(Pulse Code Modulation)
  • PDM(Pulse Density Modulation)
  • S/PDIF和Ethernet AVB主要用于板间长距离及需要电缆连接的场合

2.1.I2S

  I2S全称Inter-IC Sond Bus,是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内部器件之间传输,例如编解码器Codec、DSP、数字输入/输出接口、ADC、DAC和数字滤波器等。

2.1.1.I2S特点

  • 支持全双工/半双工
  • 支持主/从模式
  • 和PCM相比,I2S更适合立体声系统。当然,I2S的变体也支持多通道的时分复用,因此可以支持多声道。

2.1.2.主要有三个信号

  • 串行始终SCLK,也叫位始终(BCLK),对应数字音频的每一位数据,SCLK都有一个脉冲。SCLK的频率=2 * 采样频率 * 采样位深。
  • 帧时钟LRCK(也称WS),用于切换左右声道的数据。LRCK为‘1’表示传输右声道数据,为“0”则是左声道。LRCK的频率 = 采样频率
  • 串行数据(SDATA),就是用二进制补码表示的音频数据,(MSB —> LSB:数据由高位到低位依次传输)
  • 一般还有MCLK,主时钟

  对于I2S的数字接口定义也比较简单,没有从地址或者从设备的概念,在I2S总线上,只能同时存在一个主设备和发送设备。在I2S系统中,提供时钟(SCK)的设备为主设备,其常见的系统框图如下:
linux音频子系统(一) 硬件基础接口
  在I2S传输协议中,数据信号、时钟信号以及控制信号是分开传输的。I2S协议只定义三根信号线:时钟信号SCK、数据信号SD和左右声道选择信号WS。
linux音频子系统(一) 硬件基础接口2.1.3.典型I2S信号时序图
linux音频子系统(一) 硬件基础接口

3.PCM/TDM

  PCM(Pulse Code Modulation)是通过等时间间隔(采样速率)将采样模拟信号数字化的方法。下图是4bit采样速率的PCM数据量化示意图
linux音频子系统(一) 硬件基础接口
  PCM接口常用于板级音频数字信号的传输,与I2S类似,其实I2S也是PCM的一种特例接口,只不过,I2S的速率会更高,比较适用于传音乐。而PCM通常用于AP处理器与通信MODEM之间的语言数据传输(就是双向打电话数据),对于I2S只能传2个声道的数据,而PCM可以传多达16路数据,采用时分复用的方式,也就是TDM。其接口与I2S类似,电路信号为

  • PCM_CLK 数据时钟信号
  • PCM_SYNC 帧同步时钟信号
  • PCM_IN 接收数据信号
  • PCM_OUT 发送数据信号

4.PDM

  PDM(Pulse Density Modulation)是一种数字信号表示模拟信号的调制方法,声音通过传感器获得模拟信号,经过AD,得到音频数字信号,然后经过PDM脉冲转换成数字信号。PDM使用远高于PCM采样率的时钟采用调制模拟分量,只有1位输出,要么是0,要么是1。
linux音频子系统(一) 硬件基础接口
  PDM方式的逻辑相对复杂,但只需要两根线,时钟和数据。对于下图,主设备为两个从设备提供时钟,分别在时钟的上升沿和下降沿触发选择Source 1/2作为数据输入。
linux音频子系统(一) 硬件基础接口
  PDM在诸如手机和平板等对于空间限制严格的场合有着广泛的应用前景。在数字麦克风领域,应用最广的就是PDM接口,其次为I2S接口。

refer to

  • https://blog.csdn.net/u012489236/article/details/98040985