一、声音信号的数字化
我们应该都知道,声音是一种模拟信号,如果想用于计算机,就必须要将模拟信号转换为数字信号,这样,我们就能在计算机上存储声音了,等待用户想播放的时候,再将数字信号转换为模拟信号。声音的数字化需要经历三个阶段:采样、量化、编码。
1.1 采样
采样是把时间上连续的模拟信号在时间轴上离散化的过程,这里有采样频率和采样周期的概念,采样周期即相邻两个采样点的时间间隔,采样频率是采样周期的倒数。示意图如下图所示:
蓝色代表模拟音频信号,红色的点代表采样得到的量化数值。采样频率越高,红色的间隔就越密集,记录这一段音频信号所用的数据量就越大,同时音频质量也就越高。
根据奈奎斯特理论,采样频率只要不低于音频信号最高频率的两倍,就可以无损失地还原原始的声音。通常人耳能听到频率范围大约在20Hz~20kHz之间的声音,为了保证声音不失真,采样频率应在40kHz以上。
常用的采样率有:
- 8kHz:电话所用采样率,对于人的说话已经最够清楚;
- 22.05kHz:无线电广播的采样率;
- 32kHz:miniDV数码视频、DAT所用采样率;
- 44.1kHz:音频CD、也常用于MPEG-1音频(VCD、SVCD、MP3)所用采样率;也是现一般的专业设备的采样频率为;
- 48kHz:miniDV、数字电视、DVD、DAT、电影专业音频所使用的数字声音所用采样率;
- 50kHZ:商用数字录音机所用采样率;
- 96kHz:BD-ROM、HD-DVD等所用采样率;
1.2 量化
1.2.1 位深度
位深度,也叫位宽,量化精度,上图中,每一个红色的采样点,都需要用一个数值来表示大小,这个数值的数据类型大小可以是:4bit、8bit、16bit、32bit等等,位数越多,表示得就越精细,声音质量自然就越好,当然,数据量也会成倍增大。常见的位宽有:8bit或者16bit。
1.2.2 声道数
由于音频的采集和播放是可以叠加的,因此,可以同时从多个音频源采集声音,并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数量或回放时相应的扬声器数量。单声道(Mono)和双声道(Stereo)比较常见,顾名思义,前者的声道数为1,后者为2。
1.3 编码
编码是整个声音数字化的最后一步,其实声音模拟信号经过采样,量化之后已经变为了数字形式,但是为了方便计算机的储存和处理,我们需要对它进行编码,以减少数据量。
通过采样频率和精度可以计算声音的数据传输率:数据传输率(bps) = 采样频率 × 量化位数 × 声道数。
有了数据传输率我们就可以计算声音信号的数据量:数据量(byte)= 数据传输率 * 持续时间 / 8。
例如:CD唱片上所存储的立体声高保真音乐的采样频率为44.1kHZ,量化精度为16位,双声道,计算一小时的数据量:根据公式:
$$ 44.1kHZ * 16bit * 2 * 3600s /8 =6350400B ≈ 605.6MB$$
看看这个数字,是非常大的了,所以,在编码的时候常常使用压缩的方式来减少储存空调提高传输效率。
二、 ALC5651
声卡是负责录音、播音、调节音量和声音合成等的一种多媒体板卡。我说使用的Nanopc-T4开发板搭载的是一款信号为ALC5651的声卡芯片。
2.1 特征
ALC5651具有以下特点:
- 支持一个24位/8kHz ~ 192kHz的I2S/PCM/TDM接口,可用于连接立体声DAC和ADC;
- 支持I2C控制接口;
- 支持数字麦克风接口;
- 每个接口都具有异步采样率转换器(ASRC);
- 支持7段可调的均衡器(EQ),可以用于DAC和ADC路径上;
- 对于DAC和ADC路径,它还具有增强型动态范围控制器(DRC)/自动增益控制器(AGC)功能以及防风噪降噪滤波器;
2.2 功能框图
ALC5651功能框图如下所示,该图来自ALC5651 datasheet:
ALC5651一共包含了40个引脚。
2.2.1 数字引脚
其中数字I/O引脚:
名称 | 类型 | 引脚 | 描述 |
DACDAT1 | I | 31 | First I2S interface serial data input |
ADCDAT1 | O | 30 | First I2S interface serial data output |
BCLK1 | I/O | 33 | First I2S interface serial bit clock |
LRCK1 | I/O | 32 | First I2S interface synchronous signal |
DACDAT2 | I | 27 | Second I2S interface serial data input |
ADCDAT2 | O | 26 | Second I2S interface serial data output |
BCLK2 | I/O | 29 | Second I2S interface serial bit clock |
LRCK2 | I/O | 28 | Second I2S interface synchronous signal |
SDA | I/O | 36 | I2C interface serial data |
SCL | I | 35 | I2C interface clock input |
MCLK | I | 34 | I2S interface master clock input |
GPIO1/IRQ | I/O | 37 |
General purpose input and output Interrupt output |
GPIO2/DMIC_SCL | I/O | 38 |
General purpose input and output Digital microphone clock output |
PDM_SCL | O | 25 | PDM clock output |
PDM_SDA | O | 24 | PDM data output |
2.2.2 模拟引脚
其中模拟I/O引脚:
名称 | 类型 | 引脚 | 描述 |
LOUTR/N | O | 13 |
Line output type Right channel single-end output Negative channel differential output |
LOUTL/P | O | 12 |
Line output type Left channel single-end output Positive channel differential output |
IN2P | I | 5 |
Positive differential input for microphone 2 Left channel line input |
IN2N/JD2 | I | 6 |
Negative differential input for microphone 2 Right channel line input Second jack detection pin |
IN1P/DMIC_DAT |
I | 4 |
Single-end input for microphone 1 Digital microphone data inpu |
JD1 | I | 3 | First jack detection pin |
HPO_R | O | 21 |
Headphone amplifier output Right channel |
HPO_L | O | 23 |
Headphone amplifier output Left channel |
IN3P | I | 7 | ingle-end input for microphone 3 |
2.2.3 Filter/Reference
名称 | 类型 | 引脚 | 描述 |
MICBIAS1 | O | 2 | Bias voltage output for microphone |
VREF | O | 11 | Internal reference voltage |
CPVREF | - | 20 | Headphone reference ground |
CPN1 | - | 16 | First charge pump bucket capacitor |
CPP1 | - | 17 | First charge pump bucket capacit |
CPN2 | - | 14 | Second charge pump bucket capacitor |
CPP2 | - | 15 | Second charge pump bucket capacitor |
2.2.4 电源/地
名称 | 类型 | 引脚 | 描述 |
MICVDD | P | 1 | Analog power for MICBIAS |
AVDD | P | 9 | Analog power |
DACREF | P | 8 | Analog power |
AGND | P | 10 | Analog ground |
CPVDD | P | 18 |
Analog power for headphone charge pump |
CPVEE | P | 22 | Charge pump negative voltage output |
CPVPP | P | 19 | Charge pump positive voltage output |
DCVDD | P | 40 |
Digital power for digital core Kept open if LDO1_EN is pulled high, or connected to external 1.2V power. |
DBVDD | P | 39 | Digital power for digital I/O buffer |
CPGND/DGND |
P | 41 |
Charge pump ground Digital ground |
2.3 电路原理图
参考文章
[1] 31.Linux-wm9876声卡驱动(移植+测试)
[2] Nanopc-T4原理图
[3] RK3399平台适配TI-tlv320aic3111音频芯片
[5] I2S音频协议详解